Previous Topic: OverviewNext Topic: Assembly Descriptor Syntax


Interface Entity

This entity type is used to enable and configure network interfaces that are not meant for connecting to other components (as the terminals are - see previous section) and have no restrictions on the type of connections that can be made.

The syntax for the interface entity is as follows:

interface <name>

Any number of interface name definitions can be found in the component descriptor. The names must be unique in the scope of the component. The name space for interfaces is shared with that for terminals, so you cannot have an input/output and an interface with the same name.

In versions of CA AppLogic® prior to 3.5, you could use the following construct:

interface default

In CA AppLogic® 3.5 and later, this construct is accepted for backward compatibility, but you cannot use the name 'default' for an actual raw interface. Using the name 'default' for an input or output terminal results in an error.

Property Entity

The property entity defines a configurable property of the component. Any parameter that may need to be configured can be defined as a property. The values of properties are made available to the component's software in the following ways:

Note: Because a volume can appear as a configurable property on the boundary, volumes and properties share namespace and one cannot define both a volume and a property of the same name.

The property entity has the following attributes:

type=

Defines the property type, the value of this attribute must be one of: string, integer, ip_addr, or IP_owned. If the type= attribute is not specified, string is assumed.

Note: The 'IP_owned' type is the same as 'ip_addr' - it holds an ipv4 or ipv6 address.

Using 'IP_owned instead of 'ip_addr' indicates that the address is one that will be assigned to the component itself (that is, the component's IP subsystem will answer to this address). Addresses that aren't owned by the application, but to which the application is supposed to connect (as external services) should have the 'ip_addr' type. A property of type 'IP_owned' is subject to verification prior to application start. If the given value is not within the range allowed for use by the applications on the grid, application start will be refused. Existing appliances that were created prior to adding the 'IP_owned' type (and therefore use 'ip_addr') will operate normally, but will not benefit from the start-time check of the configured IP address(es). If they are set up with incorrect addresses, they will simply fail to operate when started (network packets with an IP address that is "foreign" to the grid will be dropped before they reach the appliance, even if the appliance's OS is configured to answer to that address).

filter=

A regular expression defining the set of valid values for the property. The expression must be coded in the syntax defined by Perl for regular expression pattern matching. The match is done on the entire property value - that is as if /^expression$/ was used in a Perl statement to check for a match (where expression is the value of the filter attribute.
This attribute is optional. If not present, the value ".*" is assumed (match any string).

values=

This attribute can be used as an alternative to the filter= attribute. It is treated exactly as the filter attribute by the ADL compiler, except that the use of values= expr instead of filter= expr is a hint to the GUI editor that the regular expression is a simple concatenation of strings to be matched, in the normal regular expression form string1!string2!... and so on. This can be used to display a drop-down list of values in a property sheet instead of a free-text edit box.

min=
max=

Minimum and maximum values for an integer property. If the specified property type is integer, these optional attributes specify the limits of valid values. They are applied in addition to any regular expression pattern specified by the filter= attribute.
The presence of a - or + sign in one of these values is taken to mean that the integer comparison against the limits is to be done as for signed integers.

mandatory

If present, this attribute indicates a property with no default value. When the component is used in an assembly, a value for the property must be supplied in the assembly or it must be redirected to the assembly boundary; in the latter case, the corresponding property of the assembly also takes on the mandatory attribute.
If mandatory is not specified, a default value for the property should be given with a dflt= attribute (see below).

dflt=

Specifies a default value for the property. This attribute cannot be used together with mandatory.

lowercase

Indicates that the property value is to be converted to lowercase before it is used to configure the component. This should be used for properties that need to appear as case-insensitive to the user, but provide the component a consistent value that can be compared using case-sensitive compare. The lowercase conversion is done in the C locale.

cfgfiles Entity

Defines the configuration files that need to be checked for property markup and updated accordingly. This entity is an array, each entry defines one configuration file and has these attributes:

vol - Names the volume on which the file is located (this should match one of the component's volumes, as defined by the volume entities). A value for this attribute must be specified for each cfgfiles array element.

path - This is the file name of the configuration file, relative to the volume on which it is located. This may be different from the path where the application sees that file - depending on how the particular volume is mounted by the component. A value for this attribute must be specified for each cfgfiles array element.

quoting - Defines the method for quoting meta-characters in the configuration file. A meta-character is any character that has a special meaning in the config file and must be quoted (or escaped) in some manner to appear as a data character and not in its special-function role. The quoting attribute can be set to one of the following strings:

Note: the cfgfiles sub-entity is useful only when .config_mode is set to volfix. In the dhcp mode, the component's boot volume will not be modified and it is expected to configure itself dynamically over the network.

Virtualization Entity

This entity contains the boot information needed to start the component in the virtual environment for which it is designed. The virtualization entity supersedes the kernel/os_info definitions and should be used instead of them. The presence of this entity also indicates a new-style component descriptor and turns off the compatibility mode, which includes forced .config_mode=volfix.

The following attributes are defined for the virtualization entity:

modes= string

Defines the component's virtual environment. Valid values are paravirt (for components that have a para-virtualized kernel supported by the host system) and hvm (for components designed to run directly on hardware and require hardware-assisted virtualization if ran in a virtual machine). The value of this attribute is a comma-separated list of virtual machine manager identifiers that this component can use. The supported VMMs may vary with the CA AppLogic® version. The following are VMM names supported in version 3.0 or higher:

  • xen_pv
  • xen_hvm
  • vmware

For compatibility with component classes created prior to version 3.0, the former 'mode' attribute is also supported (it is simply an alias of 'modes'). In addition, the old mode names are supported and translated as follows:

  • hvm => xen_hvm
  • paravirt => xen_pv

options= string

Arguments to pass to the bootloader.
If mode=hvm, the string is interpreted as a space-separated list of name=value pairs, which are passed to the virtual hardware emulator. For more information, see to the list of supported options in the Class editor.

If mode=paravirt, the string is passed to the component's kernel command line, and may be available to the code running in the component's virtual environment, if the component's OS kernel supports that.

path= filename or
kernel_path= filename

The name of the kernel image file, relative to the boot volume's root directory. This attribute is meaningful only if mode=paravirt and is ignored otherwise. If path is not set, it is assumed that the component has the GRUB bootloader installed and its configuration file contains the correct location of the kernel image and the initial ramdisk, if one is used.

initrd= filename

The name of the ramdisk filesystem image to use during boot. This attribute is meaningful only if mode=paravirt and is ignored otherwise. initrd is ignored if path is not set (in this case the names of both files are looked up in the GRUB configuration file found on the component's boot volume).

device_schema= string

This is used to store the disk device naming convention, as used by the component's OS. The format of this string is not part of ADL: The device_schema attribute is reserved for use by the CA AppLogic® infrastructure editor. See the Class Editor Property Sheet Quick Reference.

kernel, os_info Entity

This entity is obsolete, use virtualization instead. The presence of a kernel or os_info sub-entity in the descriptor indicates an old descriptor and the volfix configuration mode is forced automatically.

This entity contains OS-specific boot information, its contents depend on the value of the .os_type attribute of the component. The keywords kernel and os_info are equivalent, kernel is retained for backward compatibility.

When .os_type=linux , the following attributes are defined for the os_info entity:

path= filename - the name of the kernel image file, relative to the boot volume's root directory.

initrd= filename - the name of the ramdisk filesystem image to use during boot. The kernel image file and the ramdisk image file are typically produced as a result of building the Linux kernel.

options= "string" - other arguments to pass to the bootloader's kernel command line.

When .os_type=legacy, the following attributes are defined:

options=" name=value name=value ... "

The legacy OS type is used for all hardware-assisted virtual machines. The name=value pairs are not interpreted, they are passed on to the HVM emulator directly. Examples of parameters supported by the qemu emulator (used in Xen) include: acpi=(0!1), apic=(0!1), pae=(0!1), and so on.