The following page is a working document to explain the architecture of the Maya code contribution. The intention is to use this as a starting point for discussions including as a guide for the conference call scheduled on April 5th.
Architecture View 1
Architecture View 2
Extension Points in Maya
The following areas are places for extensibility planned or in place in Maya. Where appropriate an extension point has been flagged as either planned (planned) or part of the Cisco contribution (existing). The expectation is that through discussions with the Eclipse community, we further refine additional areas of extensibility needed to support richer offerings on top of the Maya platform.
The majority of the extensibility in Maya is focused on the server as the server's role is to perform the majority of the rule processing and dependency validation as needed on behalf of the client. Maya has been architected to keep client-side complexity to a minimum allowing for reliable updates to flows without having potential service-impacting complications on the client.
- Filtering Software Visibility
- Provides extensibility to restrict which software is available to a particular user. Potential usages include:
- Filter software based on authenticated user.
- Filter software based on client operating system or resources (ex. memory).
- Filter software based on associated user groups and memberships.
- Filter software based on licensing restrictions.
- Filter software based on stability of code (release, stable, integration, nightly).
- Extensibility to hook into an authentication system allowing user sign-ons to be tied into existing systems. (exists)
- Extensibility to hook into an existing grouping system allowing access rules to be applied to groups of users. (exists)
- Extensibility to track statistics on which profiles are being used and general information on the user semantics. (exists)
- Extensibility to add additional processing before an instantiated profile is returned to the client. This could be used to add additional instructions based on meta data in the profile. (planned)
- Extensibility in the data model to allow additional information to be stored on profiles as part of custom profile instructions or to be hooked into software or other data abstractions. (exists)
- Extensibility in the web services exposed to allow registration of other services to be tied into Maya. We use this to integrate other services for tools built to deploy over Maya. (exists)
- Extensibility in the data model types exposed via Maya web services. This allows other data objects to be exposed through Maya's web services and made available on the remote clients. (exists)
- Extensibility to control the client-side launcher flow including choosing to require authentication or to let the user choose which profile to launch. (exists)
- Extensibility to override mirrors used for a given update site. We use this to set the mirrors to internal corporate mirrors for popular update sites avoiding off-network downloads. (exists)
- Extensibility to contribute additional or replace pages in the launcher. This can be used to have custom pages or process operations not directly supported by Maya. (exists)
- Extensibility to register additional instruction types to be handled by the launcher. This could be used to handle installation of other artifacts or to perform additional functions not supported by Maya out of the box. (planned)