Argomento precedente: Sintassi del descrittore del componente

Argomento successivo: L'entità di volume


Panoramica

Il descrittore del componente contiene una entità del componente, che definisce un componente del singleton o una classe istanziabile di componenti. Non c'è nessuna differenza fra la definizione di un singleton e di una classe, tranne per il fatto che le classi istanziabili vengono richieste per risiedere in una libreria di componenti a cui si fa riferimento come a un catalogo. Inoltre, uno dei due tipi di componente può essere utilizzato in un assemblato, ma un singleton può apparire solamente una volta nella struttura di un'applicazione, mentre è possibile utilizzare più volte un componente istanziabile.

Qui sotto sono presenti due esempi della struttura del descrittore del componente; il primo esempio è il modulo standard attuale, il secondo esempio mostra il formato vecchio della specificazione di informazioni di avvio. Il formato vecchio è completamente supportato e compatibile con le appliance del catalogo esistenti.

component name
   { 
   volume sname : dev= pathname [, mount= pathname][, ro] [, high_bw] 

   resource cpu : min= val , max= val
   resource mem : min= val , max= val , abs= val
   resource bw  : min= val , max= val

   (input|output)  sname : protocol= name [, mandatory ][, alias = dnsname ] 
   interface  sname

   property  sname  : type=(string|integer|ip_addr) [, filter= regexp ] \
                    [,min= val ,max= val ] [, (mandatory| dflt= val) ] 
   property  sname  : type=(string|integer) [, values= v1|v2|v3... ] \
                    [, (mandatory| dflt= val ) ] 
   .config_mode=(dhcp|volfix) 
   virtualization: modes="[xen_pv][,xen_hvm][,vmware][,...]" 
      { 
      path = filename 
      initrd = filename 
      options = " string " 
      console = " string " 
      device_schema = " string " 
      } 

   visual 
      { 
      ... 
      } 
   } 
component name
   { 
   volume sname : dev= pathname, [, ro] [, high_bw] 

   resource cpu : min= val , max= val
   resource mem : min= val , max= val , abs= val
   resource bw  : min= val , max= val

   (input|output)  sname : protocol= name = [, mandatory][, alias = dnsname =] 
   interface  sname

   property  sname  : type=(string|integer|ip_addr) [, filter= regexp ] \
                    [,min= val ,max= val ] [, (mandatory| dflt= val) ] 
   property  sname  : type=(string|integer) [, values= v1|v2|v3... ] \
                    [, (mandatory| dflt= val ) ] 
   cfgfiles 
      [ 
      vol= sname , path= filename
      vol= sname , path= filename
      ... 
      ] 

   kernel: path= filename  [, initrd = filename ] [, options = " string" ] 

   visual 
      { 
      ... 
      } 
   } 

L'entità del componente ha i seguenti attributi definiti:

.migrateable

Se impostato, consente al componente di essere spostato da una CPU a un'altra (purché il componente sia in esecuzione in una macchina virtuale e sia presente il supporto di migrazione di macchina virtuale). Non c'è nessuna esigenza di specificare questo attributo in un componente: il valore predefinito, se non specificato, è 1 (TRUE). Questo è un attributo booleano (valori validi: 0,no,false,1,yes,true; può essere specificato anche inline senza alcun valore, il che significa "1").
In assenza di questo attributo, .migrateable=1 viene assunto per impostazione predefinita. Questa è la differenza rispetto alla maggior parte degli altri attributi booleani definiti in ADL, che di solito per impostazione predefinita corrispondono a 0.

.server

Se .migrateable viene impostato su 0, definisce il nome del server su cui questo componente deve essere eseguito. Questo attributo, assieme all'attributo .migrateable, viene di impostato da un assemblato esterno, non nel descrittore del componente stesso. Il compilatore visualizzerà un avviso, se questo attributo viene impostato nel componente.

.standby

Se impostato, il componente non viene avviato automaticamente quando l'applicazione viene avviata. Si suppone che l'attributo .standby non sia impostato direttamente in un descrittore del componente. Generalmente, viene impostato da un assemblato che contiene il componente reindirizzato all'assemblato di livello superiore di un'applicazione per consentire di abilitare/disabilitare parti dell'applicazione modificando le proprietà dell'applicazione (archiviato nell'assemblato superiore - consultare il Descrittore del pacchetto). Si tratta di un valore booleano.

.boot_tout

Timeout di avvio, in secondi. Se specificato e impostato su un valore diverso da zero, indica la quantità di tempo che il controller di applicazione deve attendere perché il componente diventi attivo prima di constatare che non è riuscito ad avviarsi. Se questo attributo viene omesso o viene impostato su zero, viene utilizzato un valore predefinito configurato per il controller di CA AppLogic.

.os_type

obsoleto Questo attributo non dovrebbe essere utilizzato in descrittori creati di recente. Consultare piuttosto la descrizione dell'entità di virtualizzazione. .os_type specifica il sistema operativo utilizzato da questo componente. Queste informazioni sono necessarie per il supporto di tipi di sistema operativo multipli in esecuzione su macchine virtuali. Il valore fornito non viene interpretato dal sistema di compilazione ADL; si presuppone che esso, insieme ai dati in entità di kernel descritti sotto, sia indirizzato al loader di avvio della macchina virtuale. Se non specificato, il valore supposto è linux.

.config_mode

Specifica il modo in cui il componente deve essere configurato. I valori permessi sono: dhcp e volfix. L'impostazione predefinita è dhcp. Questo attributo dovrebbe essere utilizzato esplicitamente soltanto per la compatibilità con le versioni precedenti, se la funzionalità di volfix dovesse essere mantenuta per un determinato componente. Se il descrittore non ha l'entità di virtualizzazione, questo attributo viene ignorato e la modalità viene impostata su volfix. Ciò consente a descrittori vecchi (che appartengono a componenti che si basano su volfix e non supportano la configurazione dhcp) di funzionare senza la modifica.

.field_opt

Una maschera di bit di opzioni per abilitare vari supporti di debug e di risoluzione dei problemi. Questo attributo non segue le regole normali per i valori delle proprietà di primaria importanza da un assemblato, che si applicano a tutti gli altri attributi predefiniti. Il valore .field_opt specificato per un componente viene considerato come opzione di campo della classe, mentre qualsiasi impostazione dello stesso attributo per un'istanza del componente in un assemblato viene considerata come opzione di campo dell'istanza.

.category

Una stringa arbitraria che definisce la categoria generale a cui il componente appartiene. È consentita dalla sintassi ADL, ma non viene interpretata in alcun modo. Viene destinata all'uso dagli strumenti di immagine di CA AppLogic per organizzare componenti in librerie di componenti (cataloghi).

.description

Una breve descrizione del componente. Analogamente a .category, il valore di questo attributo è arbitrario e considerato solo per scopi di documentazione.

.console

Parametri di configurazione della console di sistema del sistema operativo. Il formato di questa stringa non fa parte di ADL. I parametri della console attualmente supportati vengono definiti nella Guida per l'utente della griglia. Se .console non viene specificato per un componente, CA AppLogic utilizza un'impostazione di configurazione predefinita di sistema. A meno non sia sovrascritta manualmente da un utente con privilegi di amministratore, l'impostazione predefinita di sistema definisce la console del componente come SSH su porta 22.

Tutti gli attributi del componente sono facoltativi e non devono essere presenti nel descrittore.

Tutti gli attributi sono anche proprietà valide del componente, che possono essere sovrascritti in un assemblato che contiene il componente.

Nota: i nomi dell'attributo vengono prefissati con un punto, per evitare conflitti di nome con proprietà regolari (consultare l'entità della proprietà riportata sotto).

La tabella sotto riportata è un riepilogo delle entità secondarie valide in un componente, seguito da sezioni che spiegano in dettaglio ciascuna entità secondaria.

volume

Definisce un volume che contiene un file system utilizzato dal componente. Deve apparire almeno un'entità di volume in ciascun componente.

resource

Definisce i requisiti del componente nei confronti delle risorse di hardware che è necessario rendere disponibili per l'esecuzione.

input, output

Queste entità definiscono terminali del componente, che sono interfacce di rete destinate a connessioni con altri componenti nella stessa applicazione.

interface

Utilizzato per abilitare e configurare interfacce di rete che non sono intese per connettersi ad altri componenti (a differenza dei terminali di input e output).

property

Definisce una proprietà configurabile del componente.

cfgfiles

Definisce un elenco di file di configurazione che devono essere verificati per il markup di proprietà e aggiornati di conseguenza.

kernel

obsoleto: utilizzare piuttosto la virtualizzazione. Questa entità contiene informazioni di avvio specifiche del sistema operativo, i suoi contenuti dipendono dal valore dell'attributo .os_type del componente.

virtualization

Questa entità definisce l'ambiente virtuale per cui il componente viene progettato e contiene opzioni specifiche di avvio da fornire al loader di avvio del componente. Il campo modalità è ancora supportato per compatibilità con le versioni precedenti, con file del descrittore più vecchi.

visual

Dati di presentazione visivi. ADL non definisce i contenuti di questa entità. Si suppone che un editor dell'interfaccia utente grafica archivi le informazioni relative a come il componente viene mostrato nella finestra dell'editor (colore, forma dell'icona, layout di terminali eccetera.).
I contenuti di questa entità devono essere conformi alle regole di sintassi generali di UDL, che sono state presentate prima in questo documento, nelle Regole di sintassi che si applicano alla sezione Tutti i tipi di descrittore. Consultare anche la specificazione di UDL per ulteriori informazioni.