Skip to main content

Notice: This Wiki is now read only and edits are no longer possible. Please see: https://gitlab.eclipse.org/eclipsefdn/helpdesk/-/wikis/Wiki-shutdown-plan for the plan.

Jump to: navigation, search

Maya Architecture

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 Diagrams

High-level Architecture

The following diagram depicts the high-level architecture of the Maya platform. The Maya framework and application are composed of both server and client-side components. The majority of the "brains" of Maya are located server-side while the clients act as rich clients into the server.

File:MayaArchitecture1.png

  • Maya Web Services
    • Provide the brain for the Maya provisioning infrastructure. The web services collaborate with the client to provision requested profiles.
    • Utilizes plugin and feature meta information in the database to perform very fast dependency resolution for profiles.
  • Update Site Sync
    • Scans update sites for new features and extracts feature & plugin meta to facilitate rapid dependency processing.
  • Bootstrap
    • Native client that instantiates the base RCP application for launching Eclipse profiles.
  • Launcher
    • RCP user interface to allow the user to authenticate and choose a profile to launch.

Maya Component Architecture

The following diagram shows the key components of the Maya framework and application.

MayaArchitecture2.png

In addition to the components listed in the first diagram, these additional components are included:

  • Administration
    • Provides perspectives for creating and updating profiles to be made available through Maya.
  • Data Model Servces
    • Expose data objects over web services for easier exposure in the adminstrative user interface.
  • Profile Rules and Resolution
    • Responsible for converting profiles into a list of instructions to be processed by the launcher.
  • User Authentication
    • Hooks into enterprise or organizational authentication system.
  • Profile Selection
    • Facilitates the selection of profiles for a particular user including finding recommended profiles.
  • Statistics Collector
    • Handles logging of usage statistics for profiles and potentially software.

End-User Experience

  • Maya is designed to simplify both the initial user experience as well as ongoing activities of users.
  • The scenarios below assume the enterprise deployment model. Maya could be configured for alternative deployment scenarios.

Launching for First Time

  1. User downloads the Eclipse Maya installer and executes it.
  2. User double-clicks on Maya shortcut to launch Maya.
    1. Maya bootstrap connects to web service and retrieves initial instruction set.
    2. Maya bootstrap executes instructions thereby caching and executing the Maya launcher.
  3. User authenticates to the Maya launcher using their organizational-specific credentials.
    1. Maya launcher securely exchanges credentials with server and requests user-specific next step.
    2. Maya web service checks in database for settings for the user.
    3. Since first time user, Maya sends back the welcome page as well as list of recommended profiles.
  4. User chooses one of the recommended profiles.
    1. Maya requests instruction set from server needed to instantiate the requested Eclipse environment.
    2. Maya launcher executes instructions and launches the requested Eclipse environment.
  5. User begins using the launched Eclipse profile.
    1. The launched Eclipse runs using a user-specific custom configuration directory.

Launching for Second Time

  1. User double-clicks on Maya shortcut to launch Maya.
    1. Maya bootstrap connects to web service and retreives initial instruction set.
    2. Maya bootstrap executes instructions typically using information from cache and runs launcher.
  2. User authenticates to the Maya launcher using their organizational-specific credentials.
    1. Maya launcher securely exchanges credentials with server and requests user-specific next step.
    2. Maya web service checks in database for settings for the user.
    3. Since returning user, Maya sends back the list of recently used profiles to the user.
  3. User chooses to run the same profile as the first time.
    1. Maya requests instruction set from server needed to instantiate the requested Eclipse environment.
    2. Maya launcher executes instructions and launches the requested Eclipse environment.
  4. User begins using the launched Eclipse profile.
    1. The launched Eclipse uses the same user-specific configuration directory as first execution.

Launching a Custom Profile

  1. User double-clicks on Maya shortcut to launch Maya.
    1. Maya bootstrap connects to web service and retreives initial instruction set.
    2. Maya bootstrap executes instructions typically using information from cache and runs launcher.
  2. User authenticates to the Maya launcher using their organizational-specific credentials.
    1. Maya launcher securely exchanges credentials with server and requests user-specific next step.
    2. Maya web service checks in database for settings for the user.
    3. Since returning user, Maya sends back the list of recently used profiles to the user.
  3. User chooses to create a new custom profile.
    1. Maya launcher requests the next page to show in the create a profile configurable flow.
  4. User answers questions listed in the configurable flow.
    1. Maya builds up the list of answers for the various pages of questions.
  5. User names the profile at the end of the flow and requests it to be launched.
    1. Maya sends the question responses to the server and requests the launch instructions.
    2. Maya web services analyze the responses and build a custom profile specifically for the user.
    3. Maya launcher executes instructions and launches the requested Eclipse environment.
  6. User begins using the launched Eclipse profile.
    1. The launched Eclipse runs using a user-specific custom configuration directory.

Deployment Scenarios

  • Maya should be able to be initially installed either using one of the native installers to be made available or via a web-based installer technology. Once installed, Maya will be configured with appropriate directory structures given the target system.
    • On Windows, Maya's executable and cache files will be installed in the program file path either defaulting to C:\Program Files\Maya or in a directory configured by a user.
      • For Vista, Maya will need to be updated to use temporary cache files in a generally writeable area to allow execution with UAC enabled.
    • On Unix, Maya's executable will be installed in /usr/bin/maya with the temporary working files including the cache stured on /var/cache/maya.
    • On all systems, the user-specific configuration directories will be created under the user's home directory.

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.

Server-Side Extensibility

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.

  • Software Filtering and Visibility Extension Point (planned)
    • 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).
  • Authentication System Extension Point (exists)
    • Extensibility to hook Maya into external authentication systems. Potential usages include:
    • Authenticate user based on enterprise or organizational user registry.
    • Authenticate user into a single-signon session for cross-server credentials.
  • Group Membership Extension Point (exists)
    • Extensibility to hook Maya into existing group membership systems. Potential usages include:
    • Provide access to software or profiles based on group membership.
    • Provide default or system level contraints based on group membership.
  • Statistics Tracking Extension Point (planned)
    • Extensibility to track usage statistics for Maya-based provisioning. Potential usages include:
    • Track usage of particular software components in an organization.
    • Track trending of components typically used together.
    • Track frequency of use of particular engineers (if privacy restrictions allow).
  • Profile Instantiation Post Processing Extension Point (planned)
    • Extensibility to augment the response to the client when preparing to launch a profile. The extension point will be tied in after the standard software provisioning instructions have been added. Potential usages include:
    • Augment instruction set to client to install additional software outside of Maya's direct scope.
    • Augment instruction set to configure other environment settings including workspace configuration.
  • Data Model Extension Point (exists)
    • Extensibility to augment the attributes returned on existing objects as well as to register additional objects to be exposed via Maya's data model services. Potential usages include:
    • Augment data objects to use additional attributes as part of provisioning including exposing to client for administration.
    • Augment object schema to allow storage of additional data entities to be distributed by Maya but not directly supported.
  • Web Service Actions Extension Point (exists)
    • Builds on the Equinox HTTP server extension points to allow easier abstraction of web services in an efficient fashioned to be leveraged as part of Maya's provisioning workflow. The Maya Launcher component expects to see web services following a simple convention exposed by this extension model. Potential usages include:
    • Exposure of custom backing services for particular advanced services to be exposed to the client.
    • Exposure of additional functions for administrating an extended provisioning system built on top of Maya.
  • Launcher Flow Configurability (exists)
    • Allows XML configuration of the workflow presented to the Maya Launcher including customizing the wizard of questions that allows a profile to be dynamically built by the user. Potential usages include:
    • Configuring the list of questions to be tailored to a particular user group for Maya.
    • Configuring the software to be associated with given wizard responses.
  • Download Mirror Overrides (partial)
    • Allows the download mirrors to be used for given update sites to be overridden. Potential usages include:
    • Override the download mirrors to pick up enterprise-internal mirrors in place of public mirrors for optimal download speeds.
    • Override the mirrors list to remove known-problematic download mirrors (probably not ideal).

Client-Side Extensibility

The following extensibilty is provided client-side primarily to support extensions enabled by the server. The majority of Maya's extensibility is server-side as it is more easily managed and applied across all users of the system.

  • Launcher Page Extension Point (exists)
    • Extensibility to register additional pages to be used in the launcher flow as defined on the server. Potential usages include:
    • Provide custom pages for license agreements to be presented to the user.
    • Provide custom pages for advanced flows for defining or extending profiles.
  • Instruction Type Extension Point (planned)
    • Extensibility to register additional instruction types to be able to be processed by the launcher when instantiating a profile. Potential usages include:
    • Provide hooks for installation of non-Eclipse software artifacts.
    • Provide hooks to perform custom system configuration such as Windows registry settings.
    • Provide hooks to perform additional advanced validation before installing the profile.

Plug-ins to be Contributed

The following plugins are going to be contributed as part of the Cisco contribution to the Maya project. The plugins are listed in alphabetical order.

  • org.eclipse.maya.admin.ui -- Provides administative perspective for Maya supporting creation and update of profiles.
  • org.eclipse.maya.launcher.application -- Provides the Eclipse application constructs for the Launcher.
  • org.eclipse.maya.launcher.launchlets -- Provides the base framework for the Launcher.
  • org.eclipse.maya.launcher.launchlets.ui --- Provides standard pages for use by the Launcher flow.
  • org.eclipse.maya.server.application -- Provides the Eclipse application constructs for the standalone OSGi HTTP server.
  • org.eclipse.maya.server.servlets -- Provides abstract services shared across all Maya servlets.
  • org.eclipse.maya.server.servlets.launcher -- Provides the web services used to support the Launcher client.
  • org.eclipse.maya.server.servlets.model -- Provides the web services used to expose data models to the client user interfaces.
  • org.eclipse.maya.services.client -- Provides base services client-side for connecting to the Maya web services.
  • org.eclipse.maya.services.client.model -- Provides base services for accessing Maya-exposed data models.
  • org.eclipse.maya.services.download -- Provides client-side services for downloading software including automatic mirror detection.
  • org.eclipse.maya.services.execution -- Provides server-side services for converting profiles to execution instructions including dependency resolution.
  • org.eclipse.maya.services.profiles -- Provides server-side data model objects for the Profile data schema.
  • org.eclipse.maya.services.sitesync -- Provides the update site sync service to scan update sites for software to potentially expose in Maya.
  • org.eclipse.maya.services.statistics -- Provides the statistics collection hooks for tracking software usage.
  • org.eclipse.maya.services.type -- Provides common enums and constants to be shared between the client and the server.
  • org.eclipse.maya.services.ui -- Provides base services shared across various Maya user interfaces.
  • maya-bootstrap -- Provides the native launcher that provides the initial Launcher download.

Back to the top