The tables below list each pre-defined attribute of each object type, when it is modified and by whom, its data type, who can operate on it, and the relationships that that attribute must maintain with other objects and attributes in the system. All the attributes of all the objects listed below are visible (ie: readable) to AAPI applications. The notation .* means that the object will accept additional attributes beyond those that the system has defined.
The objects defined in this document are only available through the AAPI/CAPI interface to OpenVault. They will be primarily used in the match[] and report[] clauses of AAPI/CAPI.
Detailed descriptions of each object and its attributes are in a later section of this document. The objects are:
| Object Name | Description | |
|---|---|---|
| APPLICATION | Authorized client programs | |
| AI | Authorized instances of client programs | |
| LIBRARY | Automated robots or manual vaults | |
| LCP | Library Control Programs | |
| BAY | Regions with a LIBRARY | |
| SLOT | Single storage locations within a BAY | |
| SLOTCONFIG | Summary counts of used/free slots in a LIBRARY | |
| SLOTTYPE | Valid physical shapes of SLOTs | |
| LIBRARYDRIVE | The LCPs view of the state of a DRIVE | |
| DRIVE | Devices to access the contents of a CARTRIDGE | |
| DRIVEGROUP | Groups of DRIVEs | |
| DRIVEGROUPAPPLICATION | Linkages giving APPLICATIONs access to DRIVEGROUPs | |
| DCP | Drive Control Programs | |
| DCPCAPABILITY | Named configuration modes that the DRIVE can support | |
| DCPCAPABILITYSTRING | Tokens representing capabilities a DRIVE can support in a particular mode | |
| CARTRIDGE | Removeable media | |
| CARTRIDGEGROUP | Groups of CARTRIDGEs | |
| CARTRIDGEGROUPAPPLICATION | Linkages giving APPLICATIONs access to CARTRIDGEGROUPs | |
| CARTRIDGETYPE | Valid types of CARTRIDGEs | |
| SIDE | CARTRIDGEs may have more than one SIDE (eg: magneto-optical disks) | |
| PARTITION | SIDEs may be divided into separately allocatable pieces | |
| VOLUME | Allocated PARTITIONs have APPLICATION-dependent names | |
| MOUNTPHYSICAL | Currently mounted CARTRIDGEs | |
| MOUNTLOGICAL | Currently mounted VOLUMEs on the currently mounted CARTRIDGEs | |
| CONNECTION | Currently connected clients | |
| SESSION | Uncompleted client contexts (may live beyond the life of the CONNECTION) | |
| TASKLIST | Commands that are currently blocked waiting for resources | |
| TASKLISTCARTRIDGE | CARTRIDGEs that might satisfy a blocked TASK | |
| TASKLISTDRIVE | DRIVEs that might satisfy a blocked TASK | |
| TASKLISTLIBRARY | LIBRARYs that might satisfy a blocked TASK | |
| MESSAGELOG | Operational and error messages output by pieces of the system | |
| REQUEST | Currently unsatisfied operator interactions | |
| SYSTEM | Global configuration options for the system |
| Cluster Name | Types of Objects In That Cluster |
|---|---|
| Application Cluster | Related to the definition and authorization of client programs. |
| Library Cluster | Related to libraries, generally defined and updated by an LCP. |
| Drive Cluster | Related to drives, generally defined and updated by a DCP. |
| Cartridge Cluster | Related to cartridges and what they contain. |
| Session Cluster | Related to currently connected and/or active clients. |
| Mount Cluster | Related to currently mounted volumes and cartridges. |
| Task Cluster | Related to commands currently blocked and waiting for resources. |
| Other??? Cluster | Related to system configuration. |
When we talk about more than two clusters at the same time, the overall relationships are simply the sum of the relationships between each of the distinct pairs of clusters. Each successive cluster being added to consideration effectively adds more layers of filtering (exclusion) on top of the restrictions that were there before.
The relationships are can be best expressed as restrictions on the possible combinations of objects. Given two objects, if the specified condition is not true, then those two objects are unrelated.
| Application | Library | Drive | Cartridge | Session | Mount | Task | |
|---|---|---|---|---|---|---|---|
| Application | The union of the app<->drive and app<->cartridge relationships. | This app has the right to use this drive | Either this app owns a volume on this cartridge or has the right to allocate a volume on this cartridge. | An instance of this application is being used in this session. | An instance of this application caused this mount. | An instance of this application submitted this task. | |
| Library | This drive is contained in this library. | This cartridge is contained in this library. | ???? | The cartridge or the drive in this mount object is contained in this library. | This task could possibly be satisfied by a cartridge or a drive that is contained in this library. | ||
| Drive | This drive is capable of accessing the data stored on this cartridge or of writing it in the desired format. | This drive is in use in this session. | This drive is the one in this mount object. | This task could possibly be satisfied by this drive. | |||
| Cartridge | ???? | This cartridge is in this mount object. | This task could possibly be satisfied by this cartridge. | ||||
| Session | This mount was requsted by this session. | This task was initiated by this session. | |||||
| Mount | These are always unrelated. | ||||||
| Task |
| Attribute Type | Description |
|---|---|
| control | An attribute of this type at least partly defines the object and may control its behavior. It is set and updated by a client with the appropriate privilege level. |
| status | An attribute of this type shows the current state of some object or portion of the system and the system can update it at will. Status attributes are usually (always?) read-only to AAPI/CAPI clients. |
| client | These are attributes that the client application has created. They can be modified or deleted at will by that application or by a client with a higher privilege level. |
| Data Type | Description | |||||||||||||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| string | The attribute contains an uninterpreted variable length value. There are no restrictions on the contents or internal structure of the value (within the defined character set of the system). This does not imply that arbitrary binary values can be used. | |||||||||||||||||||||||||||
| integer | The attribute contains a pattern of the form "[+-][0123456789][0123456789]*" without the quotes. This is an optional leading sign character and one or more digits. | |||||||||||||||||||||||||||
| boolean | The attribute contains either "true" or "false" without the quotes. If the attribute is set to anything other than "true" the new value will actually be "false". | |||||||||||||||||||||||||||
| timestamp |
The attribute contains the date and time that a particular action ocurred.
It has the form:
|
|||||||||||||||||||||||||||
| duration | The attribute contains a positive integer and records the time duration in seconds. Specifically, this is simply one or more digits. | |||||||||||||||||||||||||||
| UUID |
The attribute contains a DCE standard format Universally Unique IDentifier.
This is an uninterpreted token that is guaranteed to be unique across
all space and time forever.
The format is:
|
| Privilege Level | Description | Superset Of | Visibility | Modification Ability |
|---|---|---|---|---|
| CAPI | An application using the CAPI language. | Limited to objects owned by this application or objects containing objects owned by this application. For example: volumes owned by this application, the libraries that contain those volumes, and the drives that those volumes are currently mounted in. | Limited to client attributes of visible objects. | |
| AAPI | An application using the AAPI language. | CAPI | Unlimited | Limited to control attributes of any object. |
| system | Functions inside the core of OpenVault. | AAPI, CAPI | Unlimited | Unlimited. |
A client program that has been authorized to use the system via AAPI or CAPI. This record is created by the system administrator in order to allow access to the system for this client program. This is the primary holder of "ownership" in OpenVault, i.e. it is the principal.
Applications can store user-defined attributes in this record as a way of obtaining persistent storage of configuration or option data. Since this record is available to all instances of this application, it can also be used to communicate configuration or status information between the various instances of the application.
| Attribute Name | Type | Data Type | Description | Priv | Dependent On | Depended On By |
|---|---|---|---|---|---|---|
| ApplicationName | control | string | The name of an application that is allowed to use the system. This must match the value given in the HELLO language "client[]" clause. | AAPI | AI, CARTRIDGE, CARTRIDGEGROUPAPPLICATION, DRIVEGROUPAPPLICATION, MOUNTLOGICAL, SESSION, TASKLIST, VOLUME | |
| .* | client | string | Additional attributes can be added to this record. Examples include comments, notes and site-specific controls. | CAPI |
A particular instance of an application that has been authorized to use the system. This record is created by the system administrator in order to allow access to the system for this instance of this client program. Applications can store user-defined attributes in this record as a way of obtaining persistent storage of configuration or option data. Since this record is only available to this instances of this application, it can also be used to store configuration or status information private to this instance of the application.
NOTE: eventually this object will contain the security key required for this instance of this app to connect, right now that information is kept in a separate file.
| Attribute Name | Type | Data Type | Description | Priv | Dependent On | Depended On By |
|---|---|---|---|---|---|---|
| ApplicationName | control | string | The name of an application that is allowed to use the system. | AAPI | APPLICATION | |
| AIName | control | string | The name of a particular instance of an application that is allowed to use the system. This must match the value given in the HELLO language "instance[]" clause. | AAPI | MOUNTLOGICAL, SESSION, TASKLIST | |
| .* | client | string | Additional attributes can be added to this record. Examples include comments, notes and site-specific controls. | CAPI |
A device (or human) used to get a cartridge in/out of a drive. See the Abstract Library Interface (ALI) language definition for more detailed information.
This record is created by the system administrator in order to add a robot or vault to the OpenVault system. It corresponds to the APPLICATION record in the same way that the LCP record corresponds to the AI record.
The LibraryOnline attribute is a way to stop using a library even though all the support for it is present and running, it is an administratively controlled disable switch. The LibraryStateHard and LibraryStateSoft fields show the current state of the library.
| Attribute Name | Type | Data Type | Description | Priv | Dependent On | Depended On By |
|---|---|---|---|---|---|---|
| LibraryName | control | string | OpenVault's name for this library. | AAPI | CARTRIDGE, DRIVE, LCP, LIBRARYDRIVE, MOUNTPHYSICAL | |
| LibraryOnline | control | boolean | An administrative control used to enable/disable use of this library. | AAPI | ||
| LibraryBroken | status | boolean | Has the LCP reported that the library fails its own diagnostics? | system | ||
| LCPName | status | string | The instance name of the LCP currently controlling this library. | system | LCP | |
| LibraryStateHard | status | string | system | |||
| LibraryStateSoft | status | string | system | |||
| .* | client | string | Additional attributes can be added to this record. Examples include comments, notes and site-specific controls. | AAPI |
This is a Library Control Program.
This record is created by the system administrator in order to add a new control program for a given library to the OpenVault system. It corresponds to the AI record in the same way that the LIBRARY record corresponds to the APPLICATION record.
The LCPStateHard and LCPStateSoft fields show the current state of the LCP.
See the Abstract Library Interface (ALI) language definition and the LCP Implementation Notes documents for more detailed information.
| Attribute Name | Type | Data Type | Description | Priv | Dependent On | Depended On By |
|---|---|---|---|---|---|---|
| LibraryName | control | string | The name of the library that this LCP can control. | AAPI | LIBRARY | |
| LCPName | control | string | The instance name of this LCP. | AAPI | BAY, LIBRARY, SLOT, SLOTCONFIG | |
| LCPLogLevel | control | string | The level of message logging desired from this LCP. | AAPI | ||
| LCPHost | status | string | The network name of the host that the LCP is running on. | system | ||
| Entity | status | string | The internal token used identify which process in the core is handling this LCP. | system | ||
| LCPStateHard | status | string | system | |||
| LCPStateSoft | status | string | system | |||
| .* | client | string | Additional attributes can be added to this record. Examples include comments, notes and site-specific controls. | AAPI |
A piece of a library that exhibits some amount of locality. DRIVEs and SLOTs are both "contained" in BAYs. If a bay has been marked as inaccssable by the LCP, then all the drives and slots in that bay are inaccessable also. OpenVault will give preference to drive/cartridge combinations where they are both in the same bay versus where they are not.
All BAY structures are created and deleted on behalf of the LCP, changing whenever the LCP sends a new ALI CONFIG command up to the core. See the Abstract Library Interface language definition and the LCP Implementation Notes documents for more detailed information.
| Attribute Name | Type | Data Type | Description | Priv | Dependent On | Depended On By |
|---|---|---|---|---|---|---|
| LCPName | status | string | The name of the LCP that this bay is controlled by. | system | LCP | |
| BayName | status | string | The name of the bay. | system | SLOT, SLOTCONFIG | |
| BayAccessible | status | boolean | Whether items in this bay can be operated on by the LCP. | system |
One storage location inside a library.
A slot can be any combination of SlotOccupied and/or SlotAccessable. For example, a slot would not be accessable if it wasn't configured into the library (and hence can't be occupied), but it might also be inaccessable if the robot arm was broken in such a way that the slot could not be reached even though it was occupied.
The CartridgeID is derived from the SlotTypeName and the CartridgePCL attributes. This is where the requirement for unique PCLs within a Slot Type comes from.
All SLOT structures are created and deleted on behalf of the LCP, changing whenever the LCP sends a new ALI CONFIG command up to the core. See the Abstract Library Interface (ALI) language definition and the LCP Implementation Notes documents for more detailed information.
| Attribute Name | Type | Data Type | Description | Priv | Dependent On | Depended On By |
|---|---|---|---|---|---|---|
| SlotName | status | string | The unique name of this slot within the given library. | system | MOUNTPHYSICAL | |
| LCPName | status | string | The name of the LCP instance currently controlling this library. | system | LCP | |
| BayName | status | string | The name of the bay containing this slot. | system | BAY | |
| SlotTypeName | status | string | The name of the type of slot that this is. | system | SLOTTYPE | |
| CartridgeID | status | UUID | The unique identifier of the cartridge that is sitting in this slot. Note that this attribute will be empty if the slot is empty. | system | CARTRIDGE | |
| CartridgePCL | status | string | The PCL of the cartridge that is sitting in this slot. Note that this attribute will be empty if the slot is empty. | system | CARTRIDGE | |
| SlotOccupied | status | boolean | Whether the slot has a cartridge in it or not. | system | ||
| SlotAccessible | status | boolean | Whether the LCP can access the slot to move a cartridge into/out of the slot or not. | system |
An overview of the storage locations in a BAY of a LIBRARY. It gives a summary of the number of free and used slots of each type in each bay of the library.
All SLOT structures are created and deleted on behalf of the LCP, changing whenever the LCP sends a new ALI CONFIG command up to the core. See the Abstract Library Interface (ALI) language definition and the LCP Implementation Notes documents for more detailed information.
| Attribute Name | Type | Data Type | Description | Priv | Dependent On | Depended On By |
|---|---|---|---|---|---|---|
| LCPName | status | string | The instance name of the LCP controlling the library containing the slots that this record refers to. | system | LCP | |
| BayName | status | string | The name of the bay containing the slots that this record refers to. | system | BAY | |
| SlotTypeName | status | string | The name of the type of slots that this record refers to. | system | SLOTTYPE | |
| SlotConfigNumberFree | status | integer | The number of free slots of the given type in the given bay. | system | ||
| SlotConfigNumberTotal | status | integer | The total number of slots of the given type in the given bay. | system |
This is an external shape of a cartridge as well as the type of slot that can contain such a cartridge.
Both configuration information from LCPs and state information about cartridges must use one of the currently defined slot type names or it will be rejected. The system administrator must define what types of slots are allowed in this OpenVault environment.
| Attribute Name | Type | Data Type | Description | Priv | Dependent On | Depended On By |
|---|---|---|---|---|---|---|
| SlotTypeName | control | string | The name of a type or a shape of slot. | AAPI | CARTRIDGE, SLOT, SLOTCONFIG | |
| .* | client | string | Additional attributes can be added to this record. Examples include comments, notes and site-specific controls. | AAPI |
The LCPs view of the current state of a drive. NOTE: this table needs rationalizing with DRIVE.
| Attribute Name | Type | Data Type | Description | Priv | Dependent On | Depended On By |
|---|---|---|---|---|---|---|
| LibraryName | status | string | The name of the library that this record applies to. | system | LIBRARY | |
| DriveName | status | string | The name of the drive that this record applies to. | system | DRIVE | |
| CartridgePDL | status | string | The PCL of the cartridge the library believes is in the drive. | system | CARTRIDGE | |
| Accessible | status | boolean | Whether the LCP believes that it can mount/unmount cartridges in the drive. | system | ||
| Occupied | status | boolean | Whether the LCP believes that the drive has a cartridge in it. | system |
A device used to access the contents of a cartridge. See the Abstract Drive Interface (ADI) language definition for more detailed information.
This record is created by the system administrator in order to add a drive to the OpenVault system. It corresponds to the APPLICATION record in the same way that the DCP record corresponds to the AI record.
The DriveOnline attribute is a way to stop using a drive even though all the support for it is present and running, it is an administratively controlled disable switch.
The DriveStateHard and DriveStateSoft fields show the current state of the drive. The LibraryName, BayName, and CartridgePCL attributes show the location and the contents of the drive, respectively.
The DriveGroupName attribute is used to group drives and thereby to support an access permissions model. Each drive must belong to one DRIVEGROUP or another. DRIVEGROUPAPPLICATION records are used to allow applications to access particular DRIVEGROUPs.
| Attribute Name | Type | Data Type | Description | Priv | Dependent On | Depended On By |
|---|---|---|---|---|---|---|
| DriveName | control | string | OpenVault's name for this drive. | AAPI | DCP, DCPCAPABILITY, DCPCAPABILITYSTRING, LIBRARYDRIVE, MOUNTLOGICAL, MOUNTPHYSICAL, TASKLISTDRIVE | |
| DriveGroupName | control | string | The name of the drivegroup that this drive belongs to. | AAPI | DRIVEGROUP | |
| DriveOnline | control | boolean | An administrative control used to enable/disable use of this drive. | AAPI | ||
| DCPName | status | string | The instance name of the DCP currently controlling this drive. | system | DCP | |
| DriveBroken | status | boolean | Has the DCP reported that the drive fails its own diagnostics? | system | ||
| DriveStateHard | status | string | system | |||
| DriveStateSoft | status | string | system | |||
| DriveTimeCreated | status | timestamp | The date/time that this drive structure was created. | system | ||
| DriveTimeMountedLast | status | timestamp | The date/time that a cartridge was last mounted in this drive. | system | ||
| DriveTimeMountedTotal | status | duration | The total amount of time that a cartridge has been mounted in this drive. | system | ||
| LibraryName | status | string | The name of the library that this drive is contained in. | system | LIBRARY | |
| BayName | status | string | The name of the bay inside the library that this drive is contained in. | system | BAY | |
| DriveLibraryAccessible | status | boolean | Does the LCP believe that it can mount/unmount cartridges to/from this drive? | system | ||
| DriveLibraryOccupied | status | boolean | Does the LCP believe that there is cartridge in the drive? | system | ||
| CartridgePCL | status | string | What is the PCL of the cartridge that is currently mounted in the drive? | system | CARTRIDGE | |
| .* | client | string | Additional attributes can be added to this record. Examples include comments, notes and site-specific controls. | AAPI |
A named group that a drive can belong to. DRIVEGROUPs are used to aggregate drives and then to support both an access permissions model and a preferential usage policy.
Each drive must belong to one DRIVEGROUP or another. DRIVEGROUPAPPLICATION records are used to allow applications to access particular DRIVEGROUPs.
| Attribute Name | Type | Data Type | Description | Priv | Dependent On | Depended On By |
|---|---|---|---|---|---|---|
| DriveGroupName | control | string | The name of this group of drives. | AAPI | DRIVE, DRIVEGROUPAPPLICATION | |
| DriveGroupUnloadTime | control | duration | The default maximum time that an unneeded cartridge should be left in an unneeded drive before it is dismounted. If the drive or the cartridge is needed sooner, unmount immediately. This field is only used if the DRIVEGROUPAPPLICATION record contains a negative duration. | AAPI | ||
| .* | client | string | Additional attributes can be added to this record. Examples include comments, notes and site-specific controls. | AAPI |
A linkage allowing an application access to the drives in a DRIVEGROUP. The groups are ordered by the DriveGroupApplicationPriority field, with the lowest value being given preference. This lets an administrator set a preference sequence for drives for a particular application.
Each drive must belong to one DRIVEGROUP or another. DRIVEGROUPAPPLICATION records are used to allow applications to access particular DRIVEGROUPs.
| Attribute Name | Type | Data Type | Description | Priv | Dependent On | Depended On By |
|---|---|---|---|---|---|---|
| ApplicationName | control | string | The name of the application that this record applies to. | AAPI | APPLICATION | |
| DriveGroupName | control | string | The name of the drive that this record applies to. | AAPI | DRIVEGROUP | |
| DriveGroupApplicationPriority | control | integer | The priority that the system should use for this drive when multiple drives are candidates. | AAPI | ||
| DriveGroupApplicationUnloadTime | control | duration | The maximum time that an unneeded cartridge should be left in an unneeded drive before it is dismounted. If the drive or the cartridge is needed sooner, do not wait the full time. If this duration is negative, then use the DriveGroupUnloadTime attribute of the DRIVEGROUP for this drive instead. | AAPI |
A Drive Control Program.
This record is created by the system administrator in order to add a new control program for a given drive to the OpenVault system. It corresponds to the AI record in the same way that the DRIVE record corresponds to the APPLICATION record.
The DCPStateHard and DCPStateSoft fields show the current state of the DCP.
See the Abstract Drive Interface (ADI) language definition documents for more detailed information.
| Attribute Name | Type | Data Type | Description | Priv | Dependent On | Depended On By |
|---|---|---|---|---|---|---|
| DriveName | control | string | The name of the drive that this DCP is capable of controlling. | AAPI | DRIVE | |
| DCPName | control | string | The name of this DCP. This is not the name of the drive. | AAPI | DCPCAPABILITY, DRIVE, MOUNTLOGICAL | |
| DCPLogLevel | control | string | The level of message logging desired from this DCP. | AAPI | ||
| DCPHost | status | string | The name of the host that the DCP is running on. | system | ||
| Entity | status | integer | The internal token used identify which process in the core is handling this DCP. | system | ||
| DCPStateHard | status | string | system | |||
| DCPStateSoft | status | string | system | |||
| .* | client | string | Additional attributes can be added to this record. Examples include comments, notes and site-specific controls. | AAPI |
A set of capabilities that a DCP is offering.
Each DCP offers a group of capability sets to OpenVault. Each capability set is composed of a set of DCPCAPABILITYSTRINGs and a set of attributes describing when that capability set can be used. The attributes describe (among other things) the type of cartridge, and the format in which the bits were recorded on the media. They also describe the expected performance and capacity of the cartridge under those circumstances.
All DCPCAPABILITY structures are created and deleted on behalf of the DCP, changing whenever the DCP sends a new ADI CONFIG command up to the core. See the Abstract Drive Interface (ADI) language definition documents for more detailed information.
| Attribute Name | Type | Data Type | Description | Priv | Dependent On | Depended On By |
|---|---|---|---|---|---|---|
| DriveName | status | string | The name of the drive this capability set applies to. | system | DRIVE | DCPCAPABILITYSTRING |
| DCPName | status | string | The instance name of the DCP this capability set was generated by. | system | DCP | DCPCAPABILITYSTRING |
| DCPCapabilityName | status | string | The name of this capability set. | system | DCPCAPABILITYSTRING, MOUNTLOGICAL |
A capability token that a DCPCAPABILITY includes.
Each DCPCAPABILITY lists a set of capability tokens. Each token is simply a text string, but it represents some characteristic of the drive that an application may request be used for any given mount. The tokens are simply agreed upon in advance, by virtue of being part of the OpenVault documentation set, and then compared for equality at run time. For example, compression and norewind are valid tokens.
All DCPCAPABILITYSTRING structures are created and deleted on behalf of the DCP, changing whenever the DCP sends a new ADI CONFIG command up to the core. See the Abstract Drive Interface (ADI) language definition documents for more detailed information.
| Attribute Name | Type | Data Type | Description | Priv | Dependent On | Depended On By |
|---|---|---|---|---|---|---|
| DriveName | status | string | The name of the drive that this record applies to. | system | DRIVE | |
| DCPName | status | string | The name of the DCP that this record applies to. | system | DCP | |
| DCPCapabilityName | status | string | The name of the capability set this record is part of. | system | DCPCAPABILITY | |
| DCPCapabilityString | status | string | A particular capability token associated with a given capability set. | system |
One piece of removeable media. This could be a tape, a magneto-optical disk, a CDROM or DVDROM, etc.
In order to support the wide range of removeable media, OpenVault has a fairly flexible view of what a cartridge is composed of. Each CARTRIDGE is composed of one or more SIDEs. Each SIDE is composed of zero or more PARTITIONs. Each PARTITION is composed of zero or one VOLUMEs.
This record is created by the system administrator in order to add a cartridge to the OpenVault system. A new CartridgeID is automatically assigned when the cartridge is created.
A CartridgeTypeName must be given when a cartridge is created. That information is used to automatically create the correct number of SIDE structures and to name each of them.
The CartridgePCL (which must be set when the cartridge is created) and the SlotTypeName implied by the CartridgeTypeName allow the system to derive the correct LibraryName for where the cartridge is located.
When the first VOLUME is created on a cartridge, the cartridge becomes "owned" by the application that owns the volume. Subsequently, only volumes owned by that same application will be created on that cartridge (if more that one volume can fit). The ApplicationName attribute records that association.
| Attribute Name | Type | Data Type | Description | Priv | Dependent On | Depended On By |
|---|---|---|---|---|---|---|
| CartridgeID | status | UUID | A unique identifier for this particular cartridge. | system, AAPI | MOUNTLOGICAL, MOUNTPHYSICAL, PARTITION, SIDE, SLOT, TASKLISTCARTRIDGE, VOLUME | |
| CartridgePCL | control | string | The Physical Cartridge Label, an external marking on the cartridge that may be human and/or machine readable. | AAPI | DRIVE, MOUNTPHYSICAL, SLOT | |
| CartridgeState | status | string | ||||
| CartridgeTypeName | control | string | The type of cartridge this is. | AAPI | CARTRIDGETYPE | |
| CartridgeGroupName | control | string | The name of the group of cartridges that this cartridge is in. | AAPI | CARTRIDGEGROUP | |
| CartridgeTimeCreated | status | timestamp | The date/time that this cartridge record was created. | system | ||
| CartridgeTimeMountedLast | status | timestamp | The date/time that the cartridge was last mounted in a drive. | system | ||
| CartridgeTimeMountedTotal | status | duration | The total amount of time that the cartridge has been mounted since it was created. | system | ||
| CartridgeNumberMounts | status | integer | The total number of times that the cartridge has been mounted since it was created. | system | ||
| CartridgeNumberVolumes | status | integer | The total number of volumes that currently exist on all sides/partitions of this cartridge. | system | ||
| ApplicationName | status | string | The name of the application that owns this cartridge. | AAPI, system | APPLICATION | |
| LibraryName | status | string | The name of the library that currently contains this cartridge. | system | LCP | |
| .* | client | string | Additional attributes can be added to this record. Examples include comments, notes and site-specific controls. | CAPI |
A named group that cartridges can belong to. CARTRIDGEGROUPs are used to aggregate cartridges and then to support both an access permissions model and a preferential usage policy.
Each cartridge must belong to one CARTRIDGEGROUP or another. CARTRIDGEGROUPAPPLICATIONs records are used to allow applications to access particular CARTRIDGEGROUPs.
| Attribute Name | Type | Data Type | Description | Priv | Dependent On | Depended On By |
|---|---|---|---|---|---|---|
| CartridgeGroupName | control | string | The name of this cartridge group. | AAPI | CARTRIDGE, CARTRIDGEGROUPAPPLICATION | |
| CartridgeGroupPriority | control | integer | The default priority that the application places on cartridges in the named group if the CARTRIDGEGROUPAPPLICATION record specifies a negative priority. | AAPI | ||
| .* | client | string | Additional attributes can be added to this record. Examples include comments, notes and site-specific controls. | AAPI |
A linkage allowing an application access to a cartridge group. The groups are ordered by the CartridgeGroupApplicationPriority field, with the lowest value being given preference. This lets an administrator set a preference sequence for cartridges when allocating volumes for a particular application.
Each cartridge must belong to one CARTRIDGEGROUP or another. CARTRIDGEGROUPAPPLICATIONs records are used to allow applications to access particular CARTRIDGEGROUPs.
| Attribute Name | Type | Data Type | Description | Priv | Dependent On | Depended On By |
|---|---|---|---|---|---|---|
| ApplicationName | control | string | The name of the application getting access to the cartridge group. | AAPI | APPLICATION | |
| CartridgeGroupName | control | string | The name of the cartridge group that the application has been given access to. | AAPI | CARTRIDGEGROUP | |
| CartridgeGroupApplicationPriority | control | integer | The priority that the application places on cartridges in the named group. | AAPI |
A class of cartridges. Various constant characteristics of each type of cartridge are defined in this one place.
State information about cartridges must use one of the currently defined cartridge type names or it will be rejected. The system administrator must define what types of cartridges are allowed in this OpenVault environment.
The Side?Name attribute is actually a group of attributes where the ? in the attribute name is replaced by a positive integer number. When a CARTRIDGE is created, the system will automatically create the number of SIDEs that this CARTRIDGETYPE record shows that type of cartridge should have. The name given to each SIDE that is created is the value of one of the corresponding attribute here. For example, the first side would take its name from the value of the attribute called Side1Name, while the second side would take its name from the value of the attribute called Side2Name.
| Attribute Name | Type | Data Type | Description | Priv | Dependent On | Depended On By |
|---|---|---|---|---|---|---|
| CartridgeTypeName | control | string | The name of this type of cartridge. | AAPI | CARTRIDGE | |
| CartridgeTypeNumberSides | control | integer | The number of sides that this type of cartridge has. | AAPI | ||
| CartridgeTypeMediaLength | control | integer | The length of the media for this type of cartridge. | AAPI | ||
| CartridgeTypeMediaType | control | string | The type of media contained in this type of cartridge. | AAPI | ||
| SlotTypeName | control | string | The type of slot that this type of cartridge will fit into. | AAPI | SLOTTYPE | |
| Side?Name | control | string | The name(s) used by each SIDE of the cartridge. This is actually a group of attributes where the ? in the attribute name is replaced by a positive integer number. | AAPI | CARTRIDGETYPE | SIDE |
| .* | client | string | Additional attributes can be added to this record. Examples include comments, notes and site-specific controls. | AAPI |
One portion of a cartridge. Tape media will very likely only have one side, while magneto-optical disk media will likely have two sides.
When a CARTRIDGE is created, the system will automatically create the number of SIDEs that the corresponding CARTRIDGETYPE record shows this type of cartridge should have. The name given to each SIDE that is created is the value of the corresponding CARTRIDGETYPE.Side?Name attribute.
| Attribute Name | Type | Data Type | Description | Priv | Dependent On | Depended On By |
|---|---|---|---|---|---|---|
| CartridgeID | control | UUID | The unique identifer for the cartridge that this side is on. | AAPI | CARTRIDGE | |
| SideName | control | string | The name of this side of the given cartridge. | AAPI | CARTRIDGETYPE | MOUNTLOGICAL, MOUNTPHYSICAL, PARTITION, VOLUME |
| SideNumberMounts | status | integer | The number of times that this side has been mounted. Note that this includes all the times that partitions and volumes on this side have been mounted. | system | ||
| SideTimeCreated | status | timestamp | The date/time when this side was created. | system | ||
| SideTimeMountedLast | status | timestamp | The date/time when this side was last mounted. Note that this includes all the times that partitions and volumes on this side have been mounted. | system | ||
| SideTimeMountedTotal | status | duration | The total amount of time that this side has been mounted. Note that this includes all the times that partitions and volumes on this side have been mounted. | system | ||
| .* | client | string | Additional attributes can be added to this record. Examples include comments, notes and site-specific controls. | CAPI |
One portion of a side of a cartridge. Tape media will very likely only have one partition per side, although some tapes support partitions, while magneto-optical disk media will likely have more than one partition per side.
On some systems random access media such as magneto-optical disks are supported by a disk driver rather than a tape driver. Most disk drivers require some form of partition information be laid out on the media.
Partitions are created on a side by a special-purpose application that mounts a SIDE, uses possibly device-specific control commands to lay out the partition information on the media, then creates the PARTITION records inside OpenVault to match those it created on the media.
The PartitionBitFormat and PartitionAllocatable attributes are both set/modified by the system during normal operation and are settable by an administrative application. The ALLOCATE command will set both fields when it creates a VOLUME record for a partition.
A VOLUME record maps onto an entire partition and provides an application defined name for that partition. It is possible for an administrative application to create multiple VOLUME records for different applications which all point to the same PARTITION record. This is how VOLUMEs are shared between applications.
| Attribute Name | Type | Data Type | Description | Priv | Dependent On | Depended On By |
|---|---|---|---|---|---|---|
| CartridgeID | control | UUID | The UUID of the cartridge that this partition is on. | AAPI | CARTRIDGE | |
| SideName | control | string | The name of the side that this partition is on. | AAPI | SIDE | |
| PartitionName | control | string | The name of this partition. | AAPI | ||
| PartitionSize | control | integer | The number of megabytes that this partition can store. | AAPI | ||
| PartitionBitFormat | control | string | The name of the recording technique used when bits were written to this partition. | system, AAPI | ||
| PartitionAllocatable | status | boolean | Whether this partition can be allocated to a requesting application or not. | system, AAPI | ||
| PartitionSignature | ||||||
| PartitionNumberMounts | status | integer | The number of times that this partition has been mounted. | system | ||
| PartitionTimeCreated | status | timestamp | The date/time that this partition was created. | system | ||
| PartitionTimeMountedTotal | status | duration | The total amount of time that this partition has been mounted. | system | ||
| PartitionTimeMountedLast | status | timestamp | The date/time that this partition was last mounted. | system | ||
| .* | client | string | Additional attributes can be added to this record. Examples include comments, notes and site-specific controls. | CAPI |
An application defined name and implied ownership information for a partition.
When an application issues the ALLOCATE command the end result is a new VOLUME record pointing to a previously unused PARTITION. Various CARTRIDGEGROUPAPPLICATION, CARTRIDGEGROUP, CARTRIDGE, and PARTITION records come into play and may be modified during this process.
A VOLUME record maps onto an entire partition and provides an application defined name for that partition. It is possible for an administrative application to create multiple VOLUME records for different applications which all point to the same PARTITION record. This is how VOLUMEs are shared between applications.
| Attribute Name | Type | Data Type | Description | Priv | Dependent On | Depended On By |
|---|---|---|---|---|---|---|
| ApplicationName | control | string | The name of the application that owns this volume. | AAPI | APPLICATION | |
| VolumeName | control | string | The name of this volume. This must be unique within the given application's set of volumes, but may be non-unique globally. | system, CAPI | MOUNTLOGICAL, MOUNTPHYSICAL | |
| CartridgeID | control | UUID | The unique identifier for the cartridge that this volume is on. | system, AAPI | CARTRIDGE | |
| SideName | control | string | The name of the side that this volume is on. | system, AAPI | SIDE | |
| PartitionName | control | string | The name of the partition that this volume is in. | system, AAPI | PARTITION | |
| VolumeNumberMounts | status | integer | The total number of times that this volume has been mounted. | system | ||
| VolumeTimeCreated | status | timestamp | The date/time when this volume was created. | system | ||
| VolumeTimeMountedLast | status | timestamp | The date/time when this volume was last mounted. | system | ||
| VolumeTimeMountedTotal | status | duration | The total time that this volume has been mounted. | system | ||
| .* | client | string | Additional attributes can be added to this record. Examples include comments, notes and site-specific controls. | CAPI |
Which VOLUMEs are currently mounted.
One instance of this record type is created for each logical handle to a drive that is created. More than one logical handle may be created for the same drive at the same time if the application has requested multiple access modes at once. For example, the application may want to access the volume in both compression and non-compression modes during one mount session. Note that on most systems if the drive is a tape drive, only one such access mode is allowed to be active at any one time, implying a close and subsequest reopen between access modes.
| Attribute Name | Type | Data Type | Description | Priv | Dependent On | Depended On By |
|---|---|---|---|---|---|---|
| ApplicationName | status | string | The name of the application that owns the volume that is mounted. | system | APPLICATION | |
| VolumeName | status | string | The name of the volume that is mounted. | system | VOLUME | |
| PartitionName | status | string | The name of the partition that is mounted. Note that this may be empty if this is a mount of a side. | system | PARTITION | |
| SideName | status | string | The name of the side that is mounted. | system | SIDE | |
| CartridgeID | status | UUID | The UUID of the cartridge that is mounted. | system | CARTRIDGE | |
| DriveName | status | string | The name of the drive that the cartridge is mounted in. | system | DRIVE | |
| DCPName | status | string | The instance name of the DCP controlling the drive that the cartridge is mounted in. | system | DCP | |
| DCPCapabilityName | status | string | The capability set name that the drive is being access using. | system | DCPCAPABILITY | |
| MountLogicalHandle | status | string | The drive access handle that the client is using to access the drive. | system | ||
| MountLogicalTimeWhenMounted | status | timestamp | The date/time when the the handle above was created. Note that this might be different from the time when the cartridge was mounted. | system |
Which CARTRIDGEs are currently mounted in which DRIVEs.
This table shows which cartridges (but not which volumes on those cartridges) are currently mounted, and in which drives.
| Attribute Name | Type | Data Type | Description | Priv | Dependent On | Depended On By |
|---|---|---|---|---|---|---|
| ApplicationName | status | string | The name of the application that requested the mount. | system | APPLICATION | |
| DriveName | status | string | The name of the drive that the cartridge was mounted in. | system | DRIVE | |
| LibraryName | status | string | The name of the library that the drive is in. | system | LIBRARY | |
| CartridgeID | status | UUID | The UUID of the cartridge that was mounted. | system | CARTRIDGE | |
| CartridgePCL | status | string | The PCL of the cartridge that was mounted. | system | CARTRIDGE | |
| SideName | status | string | The name of the side that was mounted. | system | SIDE | |
| SlotName | status | string | The SlotID that the cartridge was in just prior to being mounted. This may also be the "home" slot for the cartridge. | system | SLOT | |
| MountPhysicalState | status | string | system | |||
| MountPhysicalTimeWhenMounted | status | timestamp | The date/time when the cartridge was mounted into the drive. | system |
What AAPI/CAPI clients, LCPs, and DCPs are currently active.
Every client program and control program that connects to the OpenVault core will have an active CONNECTION record. Each of those connections implies an open socket. When the socket closes, the CONNECTION record will go away.
| Attribute Name | Type | Data Type | Description | Priv | Dependent On | Depended On By |
|---|---|---|---|---|---|---|
| Language | status | string | The name of the language being spoken over this socket. | system | ||
| Version | status | string | The version of the language being spoken over this socket. | system | ||
| SessionID | status | UUID | The unique identifier of the SESSION that is associated with this connection. | system | SESSION | |
| Entity | status | string | The internal token used identify which process in the core is handling this socket. | system | ||
| ConnectionClientName | status | string | The application or device name for the client on the other end of this socket. | system | ||
| ConnectionClientInstance | status | string | The application instance name or device control program name for the client on the other end of this socket. | system | ||
| ConnectionClientHost | status | string | The hostname for the client side of this socket. | system | ||
| ConnectionClientPort | status | integer | The TCP port number used for the client side of this socket. | system | ||
| ConnectionTimeCreated | status | timestamp | The date/time that this socket was first openned. | system | ||
| ConnectionTimeLastActive | status | timestamp | The date/time when bytes were last passed through this socket. | system |
What AAPI/CAPI clients have active contexts, whether connected or not.
When a CONNECTION is established for an AAPI/CAPI client, a SESSION record is also created. All dynamic resources (eg: drives) that an application accumulates during a session are associated with the SESSION record. They are tracked separately from resources associated with other SESSIONs.
In the first release the SESSION record will have a lifetime only slightly longer than the CONNECTION record. It will go away after the OpenVault system has had a chance to release all of the dynamic resources that were not freed before the CONNECTION closed.
In a future release, the client will be able to disconnect from the SESSION and close its CONNECTION without the SESSION being destroyed. The client will then be able to connect again later, perform a reconnection and assume control of its prior SESSION again. During the disconnected period, the SESSION will persist and any activities that were in process will continue. For example, blocked mount requests may complete and the cartridge be mounted.
| Attribute Name | Type | Data Type | Description | Priv | Dependent On | Depended On By |
|---|---|---|---|---|---|---|
| SessionID | status | UUID | The unique identifier for this session. | system | REQUEST, CONNECTION | |
| ApplicationName | status | string | The name of the application that created this session. | system | APPLICATION | |
| AIName | status | string | The name of the instance of the application that created this session. | system | AI | |
| Language | status | string | The name of the language being used in this session. Currently, this can only be "AAPI" or "CAPI". | system | ||
| SessionAttached | status | boolean | Whether the there is a client currently connected to this session or not. | system | ||
| SessionClientHost | status | string | The network name of the host that the client was on when it created this session. | system | ||
| SessionClientPort | status | integer | The IP port number that the client used when it created this session. | system | ||
| SessionTimeCreated | status | timestamp | The date/time when this session was created. | system | ||
| SessionTimeLastActive | status | timestamp | The date/time that the last activity happened for this session. Note that a client may or may not have been connected to this session at the time that it last had activity. | system | ||
| Entity | status | string | The internal token used identify which process in the core is handling this DCP. | system |
A command that is currently active either running or waiting for resources.
It is possible to build an AAPI client that polls the TASKLIST table and updates the priorities of queued commands. Since the priority value determines the order of service, lower values serviced before higher values, the AAPI client would in effect be the task scheduler for the system. The policy that the AAPI client implements is completely up to that client.
| Attribute Name | Type | Data Type | Description | Priv | Dependent On | Depended On By |
|---|---|---|---|---|---|---|
| TaskID | status | UUID | The unique identifier for this task. | system | ||
| TaskType | status | string | The type of task that this is. (eg: "mount", "eject", etc). | system | ||
| TaskArrivalTime | status | timestamp | The date/time that the task was first submitted into the system. | system | ||
| TaskPriority | control | integer | The priority of this task relative to other tasks competing for the same resources. Lower numbers are processed first. This is initially always set to a system-wide default but may be modified by an AAPI application to effect a dynamic priority or scheduling environment. | system, AAPI | ||
| ApplicationName | status | string | The name of the application that submitted this task. | system | APPLICATION | |
| AIName | status | string | The instance name of the application that submitted this task. | system | AI | |
| TaskStatement | status | string | The text of the MATCH[] clause for this task. | system | ||
| TaskState | ||||||
| MessageID |
A cartridge that is a candidate for a current tasklist.
| Attribute Name | Type | Data Type | Description | Priv | Dependent On | Depended On By |
|---|---|---|---|---|---|---|
| TaskID | status | UUID | The unique identifier of the task that this is part of. | system | TASKLIST | |
| CartridgeID | status | UUID | The unique identifier of the cartridge that is a candidate for use in the given task. | system | CARTRIDGE |
A drive that is a candidate for a current tasklist.
| Attribute Name | Type | Data Type | Description | Priv | Dependent On | Depended On By |
|---|---|---|---|---|---|---|
| TaskID | status | UUID | The unique identifier of the task that this is part of. | system | TASKLIST | |
| DriveName | status | string | The name of the drive that is a candidate for use in the given task. | system | DRIVE |
A library that is a candidate for a current tasklist.
| Attribute Name | Type | Data Type | Description | Priv | Dependent On | Depended On By |
|---|---|---|---|---|---|---|
| TaskID | status | UUID | The unique identifier of the task that this is part of. | system | TASKLIST | |
| LibaryName | status | string | The name of the library that is a candidate for use in the given task. | system | LIBRARY |
An error or informational message generated by some component of the system.
OpenVault supports both a log file on disk and a FIFO message queue in the catalog of the last set of messages. Each LCP, DCP, and the core can be set to different levels of severity of messages that they will generate. All messages that are generated will be appended to the log file on disk. Out of all the messages that are generated, only those messages that are at or above a specified level of severity will be added to the FIFO message queue in the catalog.
The LCP.LCPLogLevel and DCP.DCPLogLevel attributes control the level of severity of messages generated by LCPs and DCPs, respectively. The SYSTEM.'SystemMessageLogLevel' controls the severity of messages generated by pieces of the core. The SYSTEM.'SystemMessageAcceptLevel' controls the severity of messages that are accepted into the FIFO message queue in the catalog.
The MessageSenderType will distinguish between messages from each of the following sources: an LCP, a DCP, a core handler for an LCP, a core handler for a DCP, a core handler for an AAPI client, a core handler for a CAPI client, the ovroot process, and the catalog itself. Note that AAPI/CAPI clients cannot generate messages but AAPI/CAPI core handlers can.
| Attribute Name | Type | Data Type | Description | Priv | Dependent On | Depended On By |
|---|---|---|---|---|---|---|
| MessageID | status | UUID | The unique identifier for this message. | system | ||
| MessageSenderType | status | string | The type of object that generated the message. | system | ||
| MessageSenderName | status | string | The client name for the object that generated the message. This will be one of: the AAPI/CAPI client name, the Library name, or the Drive name. | system | ||
| MessageSenderInstance | status | string | The instance name for the object that generated the message. This will be one of: the AAPI/CAPI instance name, the LCP name, or the DCP name. | system | ||
| MessageLevel | status | string | The level of severity of this message. | system | ||
| MessageText | status | string | The (altered) text of the message. The unaltered text of the message will be stored in the logfile, but newline and tab characters will be translated into spaces before the text is stored in the catalog. | system | ||
| MessageTimeCreated | status | timestamp | The date/time that the message was generated. | system |
The current state of an interaction with the operator.
An LCP or DCP can ask for an operator interaction via the REQUEST command in the ALI or ADI languages. When such a command arrives a REQUEST record is created. One or more AAPI clients will be polling the list of REQUEST records and displaying some subset of them for an operator.
NOTE: this table needs more definition.
| Attribute Name | Type | Data Type | Description | Priv | Dependent On | Depended On By |
|---|---|---|---|---|---|---|
| RequestID | status | UUID | The unique identifier for thie request. | system | ||
| RequestType | ||||||
| RequestState | ||||||
| RequestRequest | status | string | The text of the request message. | system | ||
| RequestResponse | control | string | The text of the response to the request. | AAPI | ||
| RequestAcceptances | ||||||
| RequestInitiatorSessionID | status | UUID | The unique identifier of the session of the initiator to the request. | system | SESSION | |
| RequestResponderSessionID | status | UUID | The unique identifier of the session of the client responding to the request. | |||
| RequestTimeAccepted | status | timestamp | The date/time that the request was picked up by a client who intended to respond to it. | system | ||
| RequestTimeClosed | status | timestamp | The date/time that the request was responded to. | system | ||
| RequestTimeCreated | status | timestamp | The date/time that the request entered the system. | system |
Global system information.
There is only one record of this type in an OpenVault system. It contains global configuration options and status information.
OpenVault supports both a log file on disk and a FIFO message queue in the catalog of the last set of messages. Each LCP, DCP, and the core can be set to different levels of severity of messages that they will generate. All messages that are generated will be appended to the log file on disk. Out of all the messages that are generated, only those messages that are at or above a specified level of severity will be added to the FIFO message queue in the catalog.
The LCP.LCPLogLevel and DCP.DCPLogLevel attributes control the level of severity of messages generated by LCPs and DCPs, respectively. The SystemMessageLogLevel controls the severity of messages generated by pieces of the core. The SystemMessageAcceptLevel controls the severity of messages that are accepted into the FIFO message queue in the catalog.
| Attribute Name | Type | Data Type | Description | Priv | Dependent On | Depended On By |
|---|---|---|---|---|---|---|
| Administrator | control | string | The name of the person responsible for this OpenVault installation. | AAPI | ||
| SystemLogLevel | control | string | The severity of messages to be generated by components of the OpenVault core. All messages of this severity or higher will be appended to the logfile. This is different from the SystemLogLevel so that detailed logs can be kept on one component without flushing the message FIFO of other content. | AAPI | ||
| SystemAcceptLevel | control | string | The severity of messages to be stored in the catalog message FIFO. All messages, from any source in the OpenVault system, of this severity or higher will be appended to the message FIFO in the catalog. This is different from the SystemLogLevel so that detailed logs can be kept on one component without flushing the message FIFO of other content. | AAPI | ||
| SystemMessageCount | control | integer | The current number of messages that are stored in the catalog message FIFO. Note that this does not show the number of messages in the logfile. | AAPI | ||
| SystemMessageLimit | control | integer | The maximum number of messages to be stored in the catalog message FIFO. Note that this does not affect the number of messages stored in the logfile, that is limited only by available disk space. | AAPI | ||
| SystemMessageLogFile | control | string | The pathname of the logfile that all messages should be appended to. If this file doesn't exist, it will be created. Log rotation can be accomplished by simply moving the existing file out of the way, the core will automatically create the file again and start using the new one. The old logfile will then be free for compaction or other disposal. | AAPI | ||
| SystemTaskPriorityDefault | control | integer | The task priority to be used when a command is initially queued. | AAPI | ||
| .* | client | string | Additional attributes can be added to this record. Examples include comments, notes and site-specific controls. | AAPI |