# Deployment And Configuration Engine (DAnCE) Release Notes

Deployment And Configuration Engine (DAnCE) is an implementation of the run-time infrastructure as defined by the final adopted OMG Deployment & Configuration (D&C) specification (ptc/2003-07-08), which deals with the configuration and deployment of component-based applications. Currently DAnCE only supports the deployment & configuration of CORBA Component Model (CCM)-based applications, though we are interested in generalizing it for other component models in future work. DAnCE uses XML descriptors to drive the deployment it performs. One way to generate these descriptors is using the Component Synthesis using Model-Integrated Computing (CoSMIC) tool-suite. DAnCE currently uses Component Integrated ACE ORB (CIAO) as the underlying CCM implementation in the current release, though again we are interested in generalizing it for other CCM implementations in future work.

### D&C XML Schema Handling

The XML handlers shipped with DAnCE are capable of handling almost all elements that are defined in the D&C schema. In this context, handling refers to reading the XML tags and converting them to the equivalent in-memory IDL-based data structures defined by the specifications. DAnCE supports the following types of descriptors specified in the D&C specification:

- CORBA Component Descriptor(.ccd) – Contains information about component interfaces including component ports.

- Component Implementation Descriptor(.cid) – Contains information about component implementations which might be either monolithic or assembly based. In the case of assembly based implementations, this descriptor also captures the dependencies and the connections among components

- Implementation Artifact Descriptor(.iad) – Contains information about implementation artifacts in-cluding dependencies between such artifacts

- Component Package Descriptor(.cpd) – Contains information about grouping of multiple imple-mentations of the same component interface into component packages

- Package Configuration Descriptor(.pcd) – Contains information about specific configurations of such component packages

- Component Domain Descriptor(.cdd) – Contains information about the target environment in which the component-based application will be deployed

- TopLevel Package Descriptor(.tpd) – Contains information identifying the top-level element in a component package descriptor which might include information about multiple elements

- Component Deployment Plan(.cdp) – Contains information that actually drives the deployment including information about individual components that represent the leaf-nodes in case of a hierarchical assembly, connections between components, and assignment of components to nodes etc.

For all the above elements, DAnCE supports proxying of the elements as defined by XMI, i.e, DAnCE supports both parsing of the elements inline and reference through `href` attribute. Some D&C schema elements are however not handled, including:

- Deployment:Any – This is a complex element that is composed of many sub-elements. Currently, DAnCE only parses a subset of the sub-elements of `Deployment:Any`. Specifically, DAnCE supports all the basic data types defined as part of `Deployment:Any`, and doesn't understand any complex types.

- xmi:Extension – This element allows the augmention of the standard D&C schema with user-defined elements. Currently DAnCE doesn't support user-defined extensions to the schema.

- Deployment:Requirement – This element is allows the description of requirements of component-based applications. Since handling this description requires interaction with the `TargetManager` interface (which is not yet supported), support for `Deployment:Requirement` is not present.

- Deployment:ComponentPropertyDescriptioncode> – This element is used to specify default values for attributes of component. DAnCE doesn't support setting the values for attributes of components using this tag.

- Deployment:ComponentExternalPortEndpoint, Deployment:ExternalReferenceEndpoint – These elements are used to specify connections between ports of components in one assembly with ports of components in a different assembly, or connections between component ports and external connection endpoints. These features are needed to support assemblies of components. DAnCE doesn't support yet hierarchical assemblies, i.e., creation of assemblies which can themselves contain sub-assemblies.

- Deployment:PlanPropertyMapping – This element is used to delegate property mapping between a component's external properties to properties of subcomponents that actually implement the behavior of the larger component. Since DAnCE doesn't support hierarchical assemblies, this tag is not yet supported.

We plan to support these features in future versions of DAnCE.

### D&C Management Interfaces

The D&C specification defines a set of standard CORBA interfaces that are used to perform the deployment of component-based applications. These interfaces depend on the in-memory IDL data structures that are built by DAnCE's XML handlers. Below we outline the list of interfaces defined by the specification and the level of support for each interface in DAnCE:

- RepositoryManager – Only the `installPackage()` and `findPackageByName()` operations of this interface are implemented.

- TargetManager – This interface has not been implemented at all. Implementation of this interface is planned for the future.

- ExecutionManager – All operations defined in this interface are implemented.

- DomainApplicationManager, DomainApplication – All operations except `getApplications()` operation of DomainApplicationManager are implemented.

- NodeManager – All operations except `joinDomain()` and `leaveDomain()` operations of NodeManager are implemented.

- NodeApplicationManager, NodeApplication – All operations defined in these interfaces are implemented.

We plan to finish implementing the unsupported features in future versions of DAnCE.