Silicon Graphics, Inc.
OpenVault
Object Definitions

$Id: objects.html,v 1.1 1997/10/07 02:53:51 curtis Exp $

Overview and High Level Goals

This document defines the object types known to the OpenVault system and their pre-defined attributes. It is an attempt to expose the interior structure of OpenVault to both client and administrative applications so that they can monitor and control the operation of OpenVault.

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.


Decisions, Assumptions, and Limitations

There can/will be many instances of each type of object at any given time.


Open Issues

None known at this time.


This document is best viewed/printed in landscape format

Defined Objects

Object Definitions

There are 33 different types of objects in OpenVault. In general they map onto physical or objects or logical concepts. For physical object in the real world, there is one instance in the system of each corresponding object. For logical concepts, there may also be a one-to-one correspondence.

Detailed descriptions of each object and its attributes are in a later section of this document. The objects are:

Cluster Definitions

The 33 different types of objects that OpenVault supports fairly neatly arrange themselves into 8 different clusters of related objects. The clusters closely match the intuitively distinct pieces of a media management system:

Relationships Between Clusters

The relationship between any two objects in any two clusters is defined to be the same as any other two objects in those same clusters. Another way to say it is that the clusters have relationships to each other that are not dependent on which objects in those two clusters we are talking about.

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              


Attributes of Attributes

Attribute Type

Attributes fall into several categories based on differences in modification. Here is a description of each of those categories.

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 Types

Even though all attributes always store only text strings, the value stored in each predefined attribute has one of a set of predefined structures. Here is a description of each of those data types.

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:
    YYYY MM DD HH MM SS UUU ZZZ
For example, it is currently: "1997 10 01 16 08 43 000 PST". The substrings are separated by single spaces and are defined to be:
    SubstringTime UnitSmallest Value
    "YYYY"yearEg: "2001"
    "MM"monthJanuary is "01"
    "DD"day of the monthfirst day is "01"
    "HH"hourfirst hour is "00"
    "MM"minutefirst minute is "00"
    "SS"secondfirst second is "00"
    "UUU"millisecondfirst millisecond is "000"
    "ZZZ"time zoneas well defined
It is permissible for the millisecond value to always be "000". This format was chosen above others as the text representation directly sorts into increasing time order.
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:
    XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX
where each "X" is taken from the set "0123456789abcdefABCDEF". For example: "de42ba54-9741-1020-8d13-0800690245c8".

Privilege Levels

All attributes in the system are readable by all clients that can see the object (some objects are not visible to CAPI clients), however each attribute requires a certain level of privilege to modify it. This table defines the different levels of privilege.

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.


Application Cluster Objects And Their Pre-Defined Attributes


APPLICATION

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    


AI

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    


Library Cluster Objects And Their Pre-Defined Attributes


LIBRARY

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    


LCP

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    


BAY

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    


SLOT

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    


SLOTCONFIG

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    


SLOTTYPE

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    


LIBRARYDRIVE

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    


Drive Cluster Objects And Their Pre-Defined Attributes


DRIVE

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    


DRIVEGROUP

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    


DRIVEGROUPAPPLICATION

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    


DCP

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    


DCPCAPABILITY

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


DCPCAPABILITYSTRING

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    


Cartridge Cluster Objects And Their Pre-Defined Attributes


CARTRIDGE

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    


CARTRIDGEGROUP

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    


CARTRIDGEGROUPAPPLICATION

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    


CARTRIDGETYPE

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    


SIDE

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    


PARTITION

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    


VOLUME

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    


Mount Cluster Objects And Their Pre-Defined Attributes


MOUNTLOGICAL

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    


MOUNTPHYSICAL

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    


Session Cluster Objects And Their Pre-Defined Attributes


CONNECTION

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    


SESSION

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    


Task Cluster Objects And Their Pre-Defined Attributes


TASKLIST

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


TASKLISTCARTRIDGE

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  


TASKLISTDRIVE

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  


TASKLISTLIBRARY

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  


Other??? Cluster Objects And Their Pre-Defined Attributes


MESSAGELOG

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    


REQUEST

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    


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