PDFs

On this page:

Related pages:

Your Rating:
Results:
PatheticBadOKGoodOutstanding!
62 rates

The AppDynamics IConnector interface allow you to implement custom orchestration functionalities, such as creating, destroying, restarting, configuring, and validating machine and image instances directly from the AppDynamics Controller user interface. It lets you create custom compute cloud connectors to support additional cloud service providers. 

A custom connector is made up of your implementation of the IConnector interface and XML definition files for the connector. This page describes how to deploy the connector along with the format for the definition files. 

Implementation Steps

  1. Implement the IConnector interface in your custom connector class.  
  2. Compile the connector.
  3. Package the compiled JAR and the XML metadata (see below) into a single directory.
  4. Put the directory in: <controller_home>/lib/connectors.
  5. Restart the Controller.

The AppDynamics Controller registers the cloud auto-scaling extension at startup. You should see the new connector in the Compute Clouds and Images tab under Systems.

Metadata

The Metadata provides the Controller with the necessary information to register the new compute center, image, and image repository. The Controller uses the metadata to dynamically form the user interface and link the IConnector implementation to the Controller. The three XML files must be named:

  • compute-center-types 
  • image-repository-types
  • image-types

To view the compute-center-types XML Schema, click the following expander:

 

 Click to view the Compute Center Types XML Schema
<xs:schema attributeFormDefault="unqualified" elementFormDefault="qualified" xmlns:xs="http://www.w3.org/2001/XMLSchema">
  <xs:element name="compute-center-types">
    <xs:complexType>
      <xs:sequence>
        <xs:element name="compute-center-type" maxOccurs="unbounded" minOccurs="1">
          <xs:complexType>
            <xs:sequence>
              <xs:element type="xs:string" name="name"/>
              <xs:element type="xs:string" name="description"/>
              <xs:element type="xs:string" name="connector-impl-class-name"/>
              <xs:element name="property-definitions">
                <xs:complexType>
                  <xs:sequence>
                    <xs:element name="property-definition" maxOccurs="unbounded" minOccurs="1">
                      <xs:complexType>
                        <xs:sequence>
                          <xs:element type="xs:string" name="name"/>
                          <xs:element type="xs:string" name="description"/>
                          <xs:element type="xs:string" name="required"/>
                          <xs:element type="xs:string" name="type"/>
                          <xs:element type="xs:string" name="default-string-value"/>
                          <xs:element type="xs:string" name="string-max-length"/>
                          <xs:element type="xs:string" name="allowed-string-values"/>
                          <xs:element type="xs:string" name="default-file-value"/>
                        </xs:sequence>
                      </xs:complexType>
                    </xs:element>
                  </xs:sequence>
                </xs:complexType>
              </xs:element>
              <xs:element name="machine-descriptor-definitions">
                <xs:complexType>
                  <xs:sequence>
                    <xs:element name="property-definition" maxOccurs="unbounded" minOccurs="1">
                      <xs:complexType>
                        <xs:sequence>
                          <xs:element type="xs:string" name="name"/>
                          <xs:element type="xs:string" name="description"/>
                          <xs:element type="xs:string" name="required"/>
                          <xs:element type="xs:string" name="type"/>
                          <xs:element type="xs:string" name="default-string-value"/>
                          <xs:element type="xs:string" name="string-max-length"/>
                          <xs:element type="xs:string" name="allowed-string-values"/>
                          <xs:element type="xs:string" name="default-file-value"/>
                        </xs:sequence>
                      </xs:complexType>
                    </xs:element>
                  </xs:sequence>
                </xs:complexType>
              </xs:element>
            </xs:sequence>
          </xs:complexType>
        </xs:element>
      </xs:sequence>
    </xs:complexType>
  </xs:element>
</xs:schema>

Element Definitions

compute-center-type

This is a list of compute-center-types associated with the IConnector implementation. Each compute-center-type will be registered under the Compute Clouds tab in the UI, for example:

  • Name: Compute Center Type name.
  • Description: Compute Center Type name shown on the Controller GUI.

For example:

<description>Amazon Elastic Computing Cloud</description>

Connector-impl-class-name

This is the full name of the IConnector implementation class.

Property-definition

This is a list of property definitions for the compute center. These definitions are used to dynamically generate the property text fields such as AWS Account ID, Access Key, and Secret Access Key.

  • Name: Name of the property field. Such as “AWS Account ID” in Figure 1.
  • Description: Description of the property.
  • Required: Checks if the property field cannot be empty. State true/false.
  • Type: Type of the property field. STRING/FILE
  • Default-string-value: Default initialization value of the STRING property.
  • String-max-length: Maximum number of characters allowed to be stored in the property field
  • Allowed-string-values: List of allowed string values, delimited by comma. If specified this property will be displayed as a drop down list of all the allowed string values.
  • Default-file-value: Default FILE type property value

For example, using the “AWS Account” property:

<property-definition>
    <name>AWS Account ID</name>
    <description>AWS Account ID</description>
    <required>true</required>
    <type>STRING</type>
    <default-string-value></default-string-value>
    <string-max-length>80</string-max-length>
    <allowed-string-values></allowed-string-values>
    <default-file-value></default-file-value>
</property-definition>

Machine-descriptor-definition

This contains a list of property definitions associated with a machine instance object of that Compute Center type. These properties can be seen in Launch Instance window under the Images tab. For example, an EC2 Launch Instance Window showing Amazon Elastic Computing Cloud Compute Type MachineDescriptor Definitions:

image-repository-types

When each compute cloud is registered, a corresponding imagestore object is created. The imagestore name, description, connector-impl-class-name, and property-definitions should mirror the Compute Center property-definitions.

To view the image-repository-types XML schema, click the following expander:

 

 Click to view the Image Repository Types XML schema
<xs:schema attributeFormDefault="unqualified" elementFormDefault="qualified" xmlns:xs="http://www.w3.org/2001/XMLSchema">
  <xs:element name="image-repository-types">
    <xs:complexType>
      <xs:sequence>
        <xs:element name="image-repository-type" maxOccurs="unbounded" minOccurs="1">
          <xs:complexType>
            <xs:sequence>
              <xs:element type="xs:string" name="name"/>
              <xs:element type="xs:string" name="description"/>
              <xs:element type="xs:string" name="connector-impl-class-name"/>
              <xs:element name="property-definitions">
                <xs:complexType>
                  <xs:sequence>
                    <xs:element name="property-definition" maxOccurs="unbounded" minOccurs="1">
                      <xs:complexType>
                        <xs:sequence>
                          <xs:element type="xs:string" name="name"/>
                          <xs:element type="xs:string" name="description"/>
                          <xs:element type="xs:string" name="required"/>
                          <xs:element type="xs:string" name="type"/>
                          <xs:element type="xs:string" name="default-string-value"/>
                          <xs:element type="xs:byte" name="string-max-length"/>
                          <xs:element type="xs:string" name="allowed-string-values"/>
                          <xs:element type="xs:string" name="default-file-value"/>
                        </xs:sequence>
                      </xs:complexType>
                    </xs:element>
                  </xs:sequence>
                </xs:complexType>
              </xs:element>
            </xs:sequence>
          </xs:complexType>
        </xs:element>
      </xs:sequence>
    </xs:complexType>
  </xs:element>
</xs:schema>

Image-types

Each image type defines an image type found under the Images tab. For example:  

To view the image-types XML schema, click the following expander:

 

 Click to view the image-types XML schema
<xs:schema attributeFormDefault="unqualified" elementFormDefault="qualified" xmlns:xs="http://www.w3.org/2001/XMLSchema">
  <xs:element name="image-types">
    <xs:complexType>
      <xs:sequence>
        <xs:element name="image-type" maxOccurs="unbounded" minOccurs="1">
          <xs:complexType>
            <xs:sequence>
              <xs:element type="xs:string" name="name"/>
              <xs:element type="xs:string" name="description"/>
              <xs:element name="property-definitions">
                <xs:complexType>
                  <xs:sequence>
                    <xs:element name="property-definition">
                      <xs:complexType>
                        <xs:sequence>
                          <xs:element type="xs:string" name="name"/>
                          <xs:element type="xs:string" name="description"/>
                          <xs:element type="xs:string" name="required"/>
                          <xs:element type="xs:string" name="type"/>
                          <xs:element type="xs:string" name="default-string-value"/>
                          <xs:element type="xs:byte" name="string-max-length"/>
                          <xs:element type="xs:string" name="allowed-string-values"/>
                          <xs:element type="xs:string" name="default-file-value"/>
                        </xs:sequence>
                      </xs:complexType>
                    </xs:element>
                  </xs:sequence>
                </xs:complexType>
              </xs:element>
              <xs:element name="supported-compute-center-types">
                <xs:complexType>
                  <xs:sequence>
                    <xs:element type="xs:string" name="compute-center-type"/>
                  </xs:sequence>
                </xs:complexType>
              </xs:element>
            </xs:sequence>
          </xs:complexType>
        </xs:element>
      </xs:sequence>
    </xs:complexType>
  </xs:element>
</xs:schema>
  • No labels