COSMOS SDD Runtime Architecture
The Orchestrator is the main controller of the SDD runtime. It is the main module that will be bootstrapped and once initialized will be responsible for class loading other components of the runtime. Its main task is to perform flow control among the components, and house the logic for how the interfaces are leveraged in order to satisfy the conditions of a SDD, the artifacts, and profiles.
The Change Analyzer is the core component of the SDD Runtime that performs analysis of the SDD to group requirements on resources and then group resources into unique combinations that can be used to satisfy the constraints placed on deployment or configuration as represented by the SDD. Through the Orchestrator, it may leverage any of the available interfaces in order to satisfy the resource, environment or other constraints presented by SDD.
The Change Resolver is the core component of the SDD Runtime uses analyzed SDD data from the Change Analyzer to define specific steps or actions necessary to execute and satisfy the constraints of the SDD in the specific deployment environment. Through the Orchestrator, it may leverage any of the available interfaces in order to satisfy the resource, environment or other constraints presented by SDD.
The Service Bus offers a virtual conduit by which all the interfaces of the SDD Runtime can send and receive messages with the Orchestrator.
The interfaces of the SDD Runtime serve as the contact points of the Orchestrator to handle the necessary inputs and outputs. Each of these interfaces provides a specific set of functions related to the external mechanisms that require handling.
Input/Output Handler Interface
The Orchestrator uses the Input/Output Handler Interface to interact with the resources that provide input from the various mechanisms and artifacts needed to perform a deployment from start to finish. This interface provides a common layer that enables interaction with methodologies and sources that implement the necessary data inputs into the Input/Output Handler. For the reference implementation, handlers will be created that will expound on the interface to handle the reading and parsing of SDD’s and profiles as well as implementations to handle loading custom code, command line interaction and automaton interaction.
The SDD Handler plug-in is responsible for handling SDD input to the SDD Runtime. This includes the input parsing of the SDD in order to build out object relationships to be iterated and resolved using the Orchestrator via the Change Analyzer and the Change Resolver. Other submitted components such as the SPI component may play a significant role in the definition and operations of this handler.
SDD Profile Handler
The SDD Profile Handler plug-in is responsible for handling the SDD profile input to the SDD Runtime. This includes mapping resources defined in an SDD to profile to accompanying custom code if applicable. For example, if a profile references a resource that is not handled by the default set of resource handlers included with the runtime the SDD author must provide code to handle the referenced resource. The SDD profile handler establishes the linkage between resources and the resource handlers (in some cases custom resource handlers).
The CLI Handler reference implementation is responsible for handling user input to the SDD Runtime via a command line interface. It will provide constructs into the mechanisms that allow for interactive data to be provided to the Orchestrator and for feedback as the Orchestrator progresses through the tasks defined for a given execution thread of the SDD Runtime.
The Automaton Handler reference implementation is responsible for passing input to the SDD Runtime from an external source such as a query-response file or other type of non-human interface. It follows the same constructs as the CLI Handler, only in a non interactive or graphical manner.
Operations Handler Interface
This handler interface is used by the Orchestrator to take the operations determined by the core that need to happen on the target system and perform said operations. Two reference implementations of this interface will be written that include an ZipExtractor and a Custom Code Handler.
The ZipExtractor will be responsible for handling artifacts that are zip files with metadata content. This handler will be provided as a reference implementation that will perform the installation of the COSMOS framework.
Custom Code Handler
The Custom Code Handler reference implementation is responsible for the installation actions that are not provided by the reference implementation. This handler will support the ability to load and execute code provided by the user of the runtime framework to perform installation steps of their choosing.
Query Handler Interface
The Query Handler Interfaces are used to respond to the qualified systems and services that manage the state of actions and events that the SDD Runtime has performed. For reference purposes, handlers for interacting with CMDB(f) services will be implemented as well as a handler to load and execute custom code that provides queries into the system for various resources that can be discovered via this interface.
The CMDB Handler reference implementation is responsible for communications to Configuration Management Database (CMDB) services about actions and data provided and performed by the SDD Runtime.
Custom Code Handler
The Custom Code Handler performs the necessary actions to register and execute user defined query services.
Registration Handler Interface
The Registration Handler Interfaces are used to respond to the qualified systems and services that manage the state of actions and events that the SDD Runtime has performed. For reference purposes, handlers for interfacing with various platform specific registry services will be defined and authored.
Win Registry Handler
The Win Registry Handler performs the necessary actions to register services and data within a Windows environment.
Linux Registered Programs Handler
The Linux Registered Programs Handler reference implementation is responsible for communications to the services that monitor programs installed in the Linux operating environment.
The Data Inputs defines the collection of content that is necessary in order for the SDD Runtime to fulfil the task at hand.
Artifacts are package contents that can be processed to create or modify software resources in the deployment environment.
Software Solutions Descriptor (SDD)
The Software Solutions Descriptor (SDD) is the data that represents the descriptions and constraints of artifacts and dependencies in a standard encoded and externalized way.
A Profile defines the vocabulary that enables SDD producers and consumers to accomplish this alignment for particular use cases and deployment environments
The Profile Map is an XML document mapped to the profile thru SML – a reference to custom code/handler.
Any pieces of executable code that are needed for performing an operation that is unsupported in a particular Profile at a core or reference implementation level.