Scalable Systems Software Component Interface Specification Scott
Jackson

Draft Initial Release v. 2.0.1 6 OCT 2003

# Accounting and Allocation Manager Component Binding {#accounting-and-allocation-manager-component-binding .unnumbered}

Status of this Memo

This is an initial draft of the interface specification for the SSS
Accounting and Allocation Manager component. All components that
implement the Accounting and Allocation Manager component to be used
within the Scalable Systems Software framework must conform to this
specification. Guidance is provided as to what MUST, SHOULD and MAY be
implemented. Individual applications may support additional features of
the SSSRMAP specification and have custom objects and actions that
should be documented in an Application Binding document.

Abstract

> *The Scalable Systems Software Accounting and Allocation Manager
> Component uses the SSSRMAP Wire Protocol and SSSRMAP Message Format as
> its standard interface. This document describes how the Accounting and
> Allocation Manager component implements these specifications, which
> features are supported, what meanings are associated with the fields
> and values, and which objects, actions and attributes may be
> understood by the component.*

Table of Contents

[Accounting and Allocation Manager Component Binding to SSSRMAP
1](#accounting-and-allocation-manager-component-binding)

[1. Introduction 2](#introduction)

[2. Overview 2](#overview)

[3. Wire Protocol 2](#wire-protocol)

[3.1 The *Envelope* Element 2](#the-envelope-element)

[3.2 The *Body* Element 3](#the-body-element)

[3.3 Transport Layer 3](#transport-layer)

[3.4 Framing 3](#framing)

[3.5 Asynchrony 3](#asynchrony)

[3.6 Security 3](#security)

[3.6.1 Security Tokens 3](#security-tokens)

[3.7 Authentication 3](#authentication)

[3.8 Privacy 3](#privacy)

[4. Message Format 4](#message-format)

[4.1 Requests and Responses 4](#requests-and-responses)

[4.2 Valid Objects 4](#valid-objects)

[4.3 Valid Actions 4](#valid-actions)

[4.3.1 The *Create* Action 4](#the-create-action)

[4.3.2 The *Post* Action 4](#the-post-action)

[4.3.3 The *Query* Action 5](#the-query-action)

[4.3.4 The *Modify* Action 5](#the-modify-action)

[4.3.5 The *Delete* Action 5](#the-delete-action)

[4.3.6 The *Undelete* Action 5](#the-undelete-action)

[4.3.7 Other Actions 6](#other-actions)

[4.4 Valid Attributes 6](#valid-attributes)

[4.5 The *Get* Element 6](#the-get-element)

[4.6 The *Set* Element 6](#the-set-element)

[4.7 The *Where* Element 6](#the-where-element)

[4.8 The *Option* Element 6](#the-option-element)

[4.8.1 The *ShowUsage* Option 7](#the-showusage-option)

[4.9 The *Status* Element 7](#the-status-element)

[4.10 The *Code* Element 7](#the-code-element)

[4.11 The *Count* Element 7](#the-count-element)

[4.12 The *Message* Element 7](#the-message-element)

[4.13 The *Data* Element 7](#the-data-element)

[5. Object Tables 8](#object-tables)

[6. Error Reporting 22](#error-reporting)

# Introduction

# Overview

> This document describes the binding between the Accounting and
> Allocation Manager component and the SSSRMAP specification. It
> specifies what properties of the specification are utilized, what the
> meanings are, and in general how to construct the messages and
> responses for the component. It enumerates the valid objects, actions
> and options for all valid requests and responses.

# Wire Protocol

Scalable Systems Software compatible Accounting and Allocation Manager
components MUST use the SSSRMAP Wire Protocol for framing and security.

## The *Envelope* Element

> No *Envelope* attributes are required. If the *component* attribute is
> specified, it MUST have a value of "AllocationManager".

## The *Body* Element

> The *Body* element MUST specify the *actor* attribute, the value of
> which must be the userid of the authenticated (or unauthenticated)
> requestor.

## Transport Layer

> This component uses the TCP/IP transport layer according to the
> SSSRMAP specification.

## Framing

> This component uses the HTTP 1.1 POST protocol as per the SSSRMAP
> specification. For the reply, the Connection property must be
> specified as "close" since persistent connections are not yet
> supported.
>
> The message and reply payloads are single XML documents having a root
> element of *Envelope*.

## Asynchrony

> Asynchrony is not yet supported by the Accounting and Allocation
> Manager component.

## Security

### Security Tokens

> Conforming components MUST support Symmetric security tokens and
> SHOULD support Password tokens.

## Authentication

> Authentication MUST be supported by a conforming component.

## Privacy

> Encryption SHOULD be supported by a conforming component.

# Message Format

> Scalable Systems Software compatible Accounting and Allocation Manager
> components MUST use the SSSRMAP Message Format for encoding and should
> be able to validate against the SSSRMAP schema
> <http://www.scidac.org/ScalableSystems/SSSRMAP> sssrmap.xsd. The data
> representation follows the specification's conventions for
> capitalization and naming.

## Requests and Responses

> The *Request* element MUST specify the *object* and *action*
> attributes. The *Response* elements MAY include these attributes but
> it is not necessary. The *id* attribute is not used since asynchrony
> is not yet supported by any implementation.

## Valid Objects

> Valid objects for the Accounting and Allocation Manager are listed in
> the Object Tables. For each of these objects, the corresponding
> actions and attributes are listed.

## Valid Actions

> Valid actions for a particular object are listed in the Object Tables.
> Most, if not all, objects will support a *Query* action. Most objects
> will also support *Create*, *Modify*, and *Delete* actions. Some
> post-only objects will support *Post* instead of *Create*, and may not
> support *Modify* or *Delete*. Some objects will support additional
> actions.

### The *Create* Action

> The *Create* action allows for the creation of new objects. Only *Set*
> or *Option* elements are allowed as content within Create requests.
> One MAY specify any of the object attributes at creation, but the
> attributes considered as required MUST be specified.

### The *Post* Action

> The *Post* action allows for the posting of new records. This action
> is very similar in function to the *Create* action. Objects which
> support a *Post* action generally do not have an explicit primary key
> and often cannot be modified or deleted. An object with identical
> attributes as a previous Post would be created, while a Create action
> may check to ensure the object doesn't already exist before creating
> it. Only *Set* or *Option* elements are allowed as content within post
> requests. One may specify any of the object attributes at creation but
> the attributes indicated as required MUST be specified.

### The *Query* Action

> The *Query* action allows for the querying of any set of attributes
> from any expressible set of objects. *Get*, *Where* and *Option*
> elements are allowed as content within *Query* requests. One may
> specify any subset of the attributes as the fields to be returned in
> any order. If no *Get* elements are included within the request, a
> default set of fields (possibly all \-- but left up to the
> implementation) will be returned. The *Where* elements are used as the
> conditions to select the objects for which fields will be returned.
> Any of the object attributes may be used as the basis for this
> selection.

### The *Modify* Action

> The *Modify* action allows for the modification of one or more
> objects. *Set*, *Where* and *Option* elements are allowed as content
> within *Modify* requests. The *Set* elements indicate the fields to be
> changed while the *Where* elements specify the conditions which select
> the objects whose fields are to be changed. One must specify at least
> one *Set* element and one may not modify an attribute which is a
> primary key. Any number of *Where* elements can be specified to select
> the objects that are to be modified. Any of the object attributes may
> be used as the basis for this selection.

### The *Delete* Action

> The *Delete* action allows for the deletion of one or more objects.
> Only *Where* and *Option* elements are allowed as content within
> *Delete* requests. The *Where* elements specify the conditions which
> select the objects to be deleted. Any of the object attributes may be
> used as the basis for this selection.

### The *Undelete* Action

> The *Undelete* action allows for the reversal of a previous deletion
> for one or more objects. Only *Where* and *Option* elements are
> allowed as content within undelete requests. The *Where* elements
> specify the conditions which select the objects to be undeleted. Any
> of the object attributes may be used as the basis for this selection.

### Other Actions

There are a number of other actions (*Balance*, *Charge*, *Reserve*,
*Quote*, etc.) that are object-specific and will be described in the
context of the object.

## Valid Attributes

> The attributes are the data fields of an object that may be acted upon
> by a request (queried, modified, etc.). The valid attributes for an
> object can be found listed in the Object Tables. These attributes are
> used in *Get*, *Set* and *Where* request elements and are specified in
> the *name* attribute of these elements.

## The *Get* Element

> The *Get* elements indicate the fields to be returned in a query. Both
> the *name* and the *op* attribute are supported. Specification of the
> *name* attribute is REQUIRED. Use of the op element is OPTIONAL and
> accepts the operation types listed in SSSRMAP. The *units* attribute
> is not supported.

## The *Set* Element

> The *Set* elements specify the fields to be assigned new values. The
> *Set* element currently supports the *name*, *value* and *op*
> attributes with all of their values as specified in SSSRMAP. Both
> *name* and *value* are required. The *units* attribute is not
> supported.

## The *Where* Element

> The *Where* elements specify the conditions that select which objects
> are to be acted upon. The *Where* element currently supports the
> *name*, *value*, *op*, *conj* and *group* attributes with all of their
> values as specified in SSSRMAP. The *name* and *value* attributes are
> required. The *units* attribute is not supported.

## The *Option* Element

> The Option element may be used with some actions to specify special
> processing options. Actions that support options and the options they
> accept are indicated in the tables at the end of section 3.

### The *ShowUsage* Option

> All actions support a Show*Usage* option, which if set to *true*
> causes a usage response to be returned. Since this option is common to
> all objects and actions, it is not indicated in the Object Tables.

## The *Status* Element

The Status element is required in all responses.

## The *Code* Element

> The Code element is required in all responses. The status codes will
> be set as described in the Error Reporting section.

## The *Count* Element

> The *Count* element is REQUIRED in all create, post, modify, delete
> and undelete responses to indicate the number of objects successfully
> acted upon. The Count element is RECOMMENDED in all query responses to
> indicate the number of objects returned in the query. Other actions
> may use count in a context-specific manner.

## The *Message* Element

> The *Message* element is required in a failure response and optional
> in the case of a successful response. In both cases the message is
> context-specific to the failure conditions or the action successfully
> performed.

## The *Data* Element

> The *Data* element is used in query responses constituting the query
> result. The first level elements under Data elements are object names
> and correspond to the objects selected in the request. The second
> level elements are attribute names of the respective objects and
> correspond to the fields to be returned for each object. The following
> is an example:
>
> \<Data\>
>
> \<User\>
>
> \<Name\>scott\</Name\>
>
> \<PhoneNumber\>376-2205\</PhoneNumber\>
>
> \</User\>
>
> \<User\>
>
> \<Name\>brett\</Name\>
>
> \<PhoneNumber\>630-3465\</PhoneNumber\>
>
> \</User\>
>
> \</Data\>
>
> The *Data* element is also used in some requests such as Job Charge,
> Job Reserve and Job Quote to allow an object that must be operated
> upon to be passed in. These actions also pass the resultant data via a
> Data element within the Response element.
>
> When an object is passed in, it usually has arbitrary structure and is
> defined by an SSS object specification. As in the case with queries,
> the data in a response from such an action is returned with objects
> encapsulating their attributes.

# Object Tables

The following tables convey information about the objects that are
supported by the Accounting and Allocation Manager component interface,
as well as the associated actions and attributes for each object.

The objects listed under the Object header can appear as the value of
the *object* attribute within a request or response. The Description
column provides a brief description of the object. The Compliance column
provides an indication of whether a compliant implementation of the AAM
interface MUST, SHOULD or MAY support the object. These objects may also
appear as child elements of a *Data* element.

For each object, the actions supported by the object are listed under
the Action header. These actions may appear as the value of the *action*
attribute with the associated object within a request or response. The
Description column provides a brief description of the action. The
Compliance column provides an indication of whether a compliant
implementation of the AAM interface MUST, SHOULD or MAY support the
action if the object is supported. Each action supports a Usage option
which, when set to true, returns as a response a usage statement
indicating the supported attributes for the action.

Each object has one or more attributes listed under the Attribute
header. In general, these attributes may be specified as the value of
the *name* attribute within a *Get*, *Set* or *Where* element and may
appear as second-level children of a *Data* element. The Description
column provides a brief description of the attribute. The Type column
indicates the datatype. The PK column indicates whether the attribute is
a Primary Key for the object (Y indicates that it is). This conveys
whether the specified attribute is necessary to uniquely identify the
object. Attributes which are primary keys may not be modified. The Req
column indicates whether it is required to specify the attribute in a
Create or Post action. The Compliance column provides an indication of
whether a compliant implementation of the AAM interface MUST, SHOULD or
MAY support the attribute if the object is supported.

A number of attributes (when supported) common to all objects are
specified in Table 1 to avoid repetitious entries in the
Object-Account-Attribute tables.

Table 1 Attributes common to all objects

  ------------------ ------------------------- ----------- ---- ----- ------------
  Attribute          Description               Type        PK   Req   Compliance

  CreationTime       Time object was created   TimeStamp              SHOULD

  Deleted            Is this object deleted?   Boolean                MAY

  ModificationTime   Last time object was      TimeStamp              MAY
                     modified                                         

  RequestId          Last modifying request id Integer                MAY

  TransactionId      Last modifying            Integer                MAY
                     transaction id                                   
  ------------------ ------------------------- ----------- ---- ----- ------------

Table 2 Action object

  ------------- --------------------------- ------------- ---- ----- ------------
  Object        Description                                          Compliance

  **Action**    An action that can be taken                          MAY
                on an object                                         

  Action        Description                                          Compliance

  Create        Define a new action                                  SHOULD

  Delete        Delete actions                                       SHOULD

  Modify        Modify actions                                       SHOULD

  Query         Query actions                                        MUST

  Undelete      Undelete actions                                     MAY

  Attribute     Description                 Type          PK   Req   Compliance

  Description   Description                 String                   SHOULD

  Name          Action Name                 String        Y    Y     MUST

  Object        Object Name                 String        Y    Y     MUST
  ------------- --------------------------- ------------- ---- ----- ------------

Table 3 Allocation object

  ---------------- ------------------------------- ------------ ---- ----- ------------
  Object           Description                                             Compliance

  **Allocation**   A collection of resource                                SHOULD
                   credits                                                 

  Action           Description                                             Compliance

  Balance          Display allocation balance                              SHOULD

  Create           Create a new allocation                                 SHOULD

  Delete           Delete allocations                                      SHOULD

  Deposit          Make a deposit (credit)                                 SHOULD

  Modify           Modify allocations                                      SHOULD

  Query            Query allocations                                       MUST

  Refresh          Update Activeness based on                              MAY
                   ExpirationTime/ActivationTime                           

  Transfer         Transfer credits                                        SHOULD

  Withdraw         Make a withdrawal (debit)                               SHOULD

  Undelete         Undelete allocations                                    MAY

  Attribute        Description                     Type         PK   Req   Compliance

  ActivationTime   When does this allocation       TimeStamp               MAY
                   become active?                                          

  Active           Is this allocation active?      Boolean                 SHOULD

  Amount           Allocation balance              Integer           Y     SHOULD

  CreditLimit      Credit limit                    Integer                 MAY

  Description      Description                     String                  SHOULD

  ExpirationTime   When does this allocation       TimeStamp               SHOULD
                   expire?                                                 

  Id               Allocation id                   String       Y          SHOULD

  Type             Is this a debit or credit       String                  MAY
                   allocation?                                             
  ---------------- ------------------------------- ------------ ---- ----- ------------

Table 4 AllocationMachine association

  ----------------------- ------------------------ ---------- ---- ----- ------------
  Object                  Description                                    Compliance

  **AllocationMachine**   Machines allowed access                        SHOULD
                          to this allocation                             

  Action                  Description                                    Compliance

  Create                  Define a new association                       SHOULD

  Delete                  Delete associations                            SHOULD

  Modify                  Modify associations                            SHOULD

  Query                   Query associations                             MUST

  Undelete                Undelete associations                          MAY

  Attribute               Description              Type       PK   Req   Compliance

  Access                  Access allowed? (vs.     Boolean               MAY
                          denied)                                        

  Description             Description              String                SHOULD

  Name                    Child machine name       String     Y    Y     MUST

  Parent                  Parent allocation id     String     Y    Y     MUST
  ----------------------- ------------------------ ---------- ---- ----- ------------

Table 5 AllocationProject association

  ----------------------- ------------------------- ----------- ---- ----- ------------
  Object                  Description                                      Compliance

  **AllocationProject**   Projects allowed access                          SHOULD
                          to this allocation                               

  Action                  Description                                      Compliance

  Create                  Define a new association                         SHOULD

  Delete                  Delete associations                              SHOULD

  Modify                  Modify associations                              SHOULD

  Query                   Query associations                               MUST

  Undelete                Undelete associations                            MAY

  Attribute               Description               Type        PK   Req   Compliance

  Access                  Access allowed? (vs.      Boolean                MAY
                          denied)                                          

  AllowDescendants        Are descendants allowed?  Boolean                MAY

  Description             Description               String                 SHOULD

  Name                    Child project name        String      Y    Y     MUST

  Parent                  Parent allocation id      String      Y    Y     MUST
  ----------------------- ------------------------- ----------- ---- ----- ------------

Table 6 AllocationUser association

  -------------------- ------------------------- ----------- ---- ----- ------------
  Object               Description                                      Compliance

  **AllocationUser**   Users allowed access to                          SHOULD
                       this allocation                                  

  Action               Description                                      Compliance

  Create               Define a new association                         SHOULD

  Delete               Delete associations                              SHOULD

  Modify               Modify associations                              SHOULD

  Query                Query associations                               MUST

  Undelete             Undelete associations                            MAY

  Attribute            Description               Type        PK   Req   Compliance

  Access               Access allowed? (vs.      Boolean                MAY
                       denied)                                          

  Description          Description               String                 SHOULD

  Name                 Child user name           String      Y    Y     MUST

  Parent               Parent allocation id      String      Y    Y     MUST
  -------------------- ------------------------- ----------- ---- ----- ------------

Table 7 Attribute object

  --------------- -------------------------- ------------ ---- ----- ------------
  Object          Description                                        Compliance

  **Attribute**   An attribute of an object                          MAY

  Action          Description                                        Compliance

  Create          Define a new attribute                             SHOULD

  Delete          Delete attributes                                  SHOULD

  Modify          Modify attributes                                  SHOULD

  Query           Query attributes                                   MUST

  Undelete        Undelete attributes                                MAY

  Attribute       Description                Type         PK   Req   Compliance

  DataType        Data Type                  String                  SHOULD

  DefaultValue    Default Value              String                  MAY

  Description     Description                String                  SHOULD

  Fixed           Is the attribute           Boolean                 MAY
                  immutable?                                         

  ForeignKey      Foreign object for         String                  MAY
                  verification?                                      

  Hidden          Is the attribute normally  Boolean                 MAY
                  hidden?                                            

  Name            Attribute name             String       Y    Y     MUST

  Object          Object name                String       Y    Y     MUST

  PrimaryKey      Is this a primary key to   Boolean                 SHOULD
                  the object?                                        

  Required        Must this be non-null?     Boolean                 SHOULD

  Size            Size or precision of       Integer                 MAY
                  string, int, etc                                   

  Usage           Usage string               String                  MAY
  --------------- -------------------------- ------------ ---- ----- ------------

Table 8 ChargeRate object

  ---------------- -------------------------- ------------ ---- ----- ------------
  Object           Description                                        Compliance

  **ChargeRate**   Charge rate                                        MAY

  Action           Description                                        Compliance

  Create           Define a new charge rate                           SHOULD

  Delete           Delete charge rates                                SHOULD

  Modify           Modify charge rates                                SHOULD

  Query            Query charge rates                                 MUST

  Undelete         Undelete charge rates                              MAY

  Attribute        Description                Type         PK   Req   Compliance

  Description      Description                String                  SHOULD

  Machine          Which machine this rate    String                  MAY
                   applies to                                         

  Name             Name of charge type        String       Y    Y     MUST
                   instance                                           

  Rate             Charge rate                Float             Y     MUST

  Type             Charge type                String       Y    Y     MUST
  ---------------- -------------------------- ------------ ---- ----- ------------

Table 9 DepositShare object

  ------------------ -------------------------- ------------ ---- ----- ------------
  Object             Description                                        Compliance

  **DepositShare**   Indicates defaults for                             MAY
                     deposits                                           

  Action             Description                                        Compliance

  Create             Define a new deposit share                         SHOULD

  Delete             Delete deposit shares                              SHOULD

  Modify             Modify deposit shares                              SHOULD

  Query              Query deposit shares                               MUST

  Undelete           Undelete deposit shares                            MAY

  Attribute          Description                Type         PK   Req   Compliance

  Amount             Deposit share amount       Integer           Y     MUST

  Description        Description                String                  SHOULD

  Id                 Deposit share id           String       Y          MUST

  Project            Project name               String            Y     MUST
  ------------------ -------------------------- ------------ ---- ----- ------------

Table 10 DepositShareMachine association

  ------------------------- ----------------------- --------- ---- ----- ------------
  Object                    Description                                  Compliance

  **DepositShareMachine**   Defines which                                MAY
                            machine(s) the deposit                       
                            share is shared by                           

  Action                    Description                                  Compliance

  Create                    Define a new                                 SHOULD
                            association                                  

  Delete                    Delete associations                          SHOULD

  Modify                    Modify associations                          SHOULD

  Query                     Query associations                           MUST

  Undelete                  Undelete associations                        MAY

  Attribute                 Description             Type      PK   Req   Compliance

  Access                    Access allowed? (vs.    Boolean              MAY
                            denied)                                      

  Description               Description             String               SHOULD

  Name                      Child machine name      String    Y    Y     MUST

  Parent                    Parent deposit share id String    Y    Y     MUST
  ------------------------- ----------------------- --------- ---- ----- ------------

Table 11 DepositShareProject association

  ------------------------- ----------------------- --------- ---- ----- ------------
  Object                    Description                                  Compliance

  **DepositShareProject**   Defines which                                MAY
                            project(s) the deposit                       
                            share is shared by                           

  Action                    Description                                  Compliance

  Create                    Define a new                                 SHOULD
                            association                                  

  Delete                    Delete associations                          SHOULD

  Modify                    Modify associations                          SHOULD

  Query                     Query associations                           MUST

  Undelete                  Undelete associations                        MAY

  Attribute                 Description             Type      PK   Req   Compliance

  Access                    Access allowed? (vs.    Boolean              MAY
                            denied)                                      

  Description               Description             String               SHOULD

  Name                      Child project name      String    Y    Y     MUST

  Parent                    Parent deposit share id String    Y    Y     MUST
  ------------------------- ----------------------- --------- ---- ----- ------------

Table 12 DepositShareUser association

  ---------------------- ------------------------ ---------- ---- ----- ------------
  Object                 Description                                    Compliance

  **DepositShareUser**   Defines which user(s)                          MAY
                         the deposit share is                           
                         shared by                                      

  Action                 Description                                    Compliance

  Create                 Define a new association                       SHOULD

  Delete                 Delete associations                            SHOULD

  Modify                 Modify associations                            SHOULD

  Query                  Query associations                             MUST

  Undelete               Undelete associations                          MAY

  Attribute              Description              Type       PK   Req   Compliance

  Access                 Access allowed? (vs.     Boolean               MAY
                         denied)                                        

  Description            Description              String                SHOULD

  Name                   Child user name          String     Y    Y     MUST

  Parent                 Parent deposit share id  String     Y    Y     MUST
  ---------------------- ------------------------ ---------- ---- ----- ------------

Table 13 Job object

  ------------------ ------------------------- ----------- ---- ----- ------------
  Object             Description                                      Compliance

  **Job**            A job object                                     SHOULD

  Action             Description                                      Compliance

  Charge             Debit an allocation for a                        MUST
                     job                                              

  Create             Create a new job                                 SHOULD

  Delete             Delete jobs                                      SHOULD

  Modify             Modify jobs                                      SHOULD

  Query              Query jobs                                       MUST

  Quote              Generate a charge                                SHOULD
                     estimate for a job                               

  Refund             Refund an allocation for                         MAY
                     a job                                            

  Reserve            Create a charge                                  SHOULD
                     reservation for a job                            

  Undelete           Undelete jobs                                    MAY

  Attribute          Description               Type        PK   Req   Compliance

  Application        Application type          String                 MAY

  Charge             Amount charged for job    Integer                MUST

  Class              Class or queue            String                 SHOULD

  CompletionTime     Completion time           TimeStamp              MUST

  Description        Description               String                 SHOULD

  EligibleTime       Queue time                TimeStamp              MAY

  Executable         Executable or script name String                 SHOULD

  Id                 Instance id               String      Y    Y     SHOULD

  JobId              Job id                    String           Y     MUST

  Machine            Machine name              String                 SHOULD

  Name               Job Name                  String                 MAY

  Nodes              Number of nodes           Integer                SHOULD

  Processors         Number of processors      Integer                MUST

  Project            Project name              String                 MUST

  QualityOfService   Quality of service        String                 MAY

  StartTime          Start time                TimeStamp              MUST

  State              Job state                 String                 SHOULD

  Type               Job type                  String                 MAY

  User               User name                 String                 MUST
  ------------------ ------------------------- ----------- ---- ----- ------------

Table 14 Machine object

  ------------- --------------------------- ------------- ---- ----- ------------
  Object        Description                                          Compliance

  **Machine**   Machine, cluster or system                           SHOULD
                that a job could run on                              

  Action        Description                                          Compliance

  Balance       Return machine balance                               MAY

  Create        Define a new machine                                 SHOULD

  Delete        Delete machines                                      SHOULD

  Modify        Modify machines                                      SHOULD

  Query         Query machines                                       MUST

  Undelete      Undelete machines                                    MAY

  Attribute     Description                 Type          PK   Req   Compliance

  Active        Is this machine active?     Boolean                  SHOULD

  Description   Description                 String                   SHOULD

  Name          Machine Name                String        Y    Y     MUST

  Special       Is this a special machine?  Boolean                  MAY
  ------------- --------------------------- ------------- ---- ----- ------------

Table 15 Object object

  ------------- --------------------------- ------------- ---- ----- ------------
  Object        Description                                          Compliance

  **Object**    An object                                            MAY

  Action        Description                                          Compliance

  Create        Define a new object                                  SHOULD

  Delete        Delete objects                                       SHOULD

  Modify        Modify objects                                       SHOULD

  Query         Query objects                                        MUST

  Undelete      Undelete objects                                     MAY

  Attribute     Description                 Type          PK   Req   Compliance

  Association   Is this an association?     Boolean                  MAY

  Child         Child association object    String                   MAY

  Description   Description                 String                   SHOULD

  Name          Object Name                 String        Y    Y     MUST

  Parent        Parent association object   String                   MAY
  ------------- --------------------------- ------------- ---- ----- ------------

Table 16 Project object

  ------------- --------------------------- ------------- ---- ----- ------------
  Object        Description                                          Compliance

  **Project**   A project or account                                 MUST

  Action        Description                                          Compliance

  Balance       Return project balance                               MAY

  Create        Create a new project                                 SHOULD

  Delete        Delete projects                                      SHOULD

  Modify        Modify projects                                      SHOULD

  Query         Query projects                                       MUST

  Undelete      Undelete projects                                    MAY

  Attribute     Description                 Type          PK   Req   Compliance

  Active        Is the project active?      Boolean                  SHOULD

  Description   Description                 String                   SHOULD

  Name          Project Name                String        Y    Y     MUST

  Special       Is this a special project?  Boolean                  MAY
  ------------- --------------------------- ------------- ---- ----- ------------

Table 17 ProjectMachine association

  -------------------- ------------------------- ----------- ---- ----- ------------
  Object               Description                                      Compliance

  **ProjectMachine**   Default member machines a                        MAY
                       project can access                               

  Action               Description                                      Compliance

  Create               Define a new association                         SHOULD

  Delete               Delete associations                              SHOULD

  Modify               Modify associations                              SHOULD

  Query                Query associations                               MUST

  Undelete             Undelete associations                            MAY

  Attribute            Description               Type        PK   Req   Compliance

  Active               Is this membership active Boolean                MAY

  Description          Description               String                 SHOULD

  Name                 Child machine name        String      Y    Y     MUST

  Parent               Parent project name       String      Y    Y     MUST
  -------------------- ------------------------- ----------- ---- ----- ------------

Table 18 ProjectProject association

  -------------------- -------------------------- ------------ ---- ----- ------------
  Object               Description                                        Compliance

  **ProjectProject**   Member subprojects                                 MAY

  Action               Description                                        Compliance

  Create               Define a new association                           SHOULD

  Delete               Delete associations                                SHOULD

  Modify               Modify associations                                SHOULD

  Query                Query associations                                 MUST

  Undelete             Undelete associations                              MAY

  Attribute            Description                Type         PK   Req   Compliance

  Active               Is this membership active  Boolean                 MAY

  Description          Description                String                  SHOULD

  Name                 Child project name         String       Y    Y     MUST

  Parent               Parent project name        String       Y    Y     MUST
  -------------------- -------------------------- ------------ ---- ----- ------------

Table 19 ProjectUser association

  ----------------- -------------------------- ------------ ---- ----- ------------
  Object            Description                                        Compliance

  **ProjectUser**   User members of a project                          MAY

  Action            Description                                        Compliance

  Create            Define a new association                           SHOULD

  Delete            Delete associations                                SHOULD

  Modify            Modify associations                                SHOULD

  Query             Query associations                                 MUST

  Undelete          Undelete associations                              MAY

  Attribute         Description                Type         PK   Req   Compliance

  Active            Is this membership active  Boolean                 MAY

  Description       Description                String                  SHOULD

  Name              Child user name            String       Y    Y     MUST

  Parent            Parent project name        String       Y    Y     MUST
  ----------------- -------------------------- ------------ ---- ----- ------------

Table 20 Quotation object

  ---------------- -------------------------- ------------ ---- ----- ------------
  Object           Description                                        Compliance

  **Quotation**    Job charge estimate                                MAY

  Action           Description                                        Compliance

  Create           Create a new quotation                             SHOULD

  Delete           Delete quotations                                  SHOULD

  Modify           Modify quotations                                  SHOULD

  Query            Query quotations                                   MUST

  Undelete         Undelete quotations                                MAY

  Attribute        Description                Type         PK   Req   Compliance

  Amount           Charge estimate            Integer                 MUST

  Description      Description                String                  SHOULD

  ExpirationTime   Time when quote expires    TimeStamp               SHOULD

  Id               Quote id                   String       Y          MUST

  Machine          Machine name               String                  MAY

  Project          Project name               String                  MAY

  Used             Number of times used       Integer                 MAY

  User             User name                  String                  MAY

  WallDuration     Wallclock time estimate in Integer                 SHOULD
                   seconds                                            
  ---------------- -------------------------- ------------ ---- ----- ------------

Table 21 QuotationChargeRate association

  ------------------------- ----------------------- --------- ---- ----- ------------
  Object                    Description                                  Compliance

  **QuotationChargeRate**   Guaranteed charge rate                       MAY

  Action                    Description                                  Compliance

  Create                    Define a new                                 SHOULD
                            association                                  

  Delete                    Delete associations                          SHOULD

  Modify                    Modify associations                          SHOULD

  Query                     Query associations                           MUST

  Undelete                  Undelete associations                        MAY

  Attribute                 Description             Type      PK   Req   Compliance

  Machine                   Which machine this rate String               MAY
                            applies to                                   

  Name                      Charge Rate name        String    Y    Y     MUST

  Parent                    Parent Quote id         String    Y    Y     MUST

  Rate                      Guaranteed Charge Rate  Float          Y     MUST

  Type                      Charge Rate type        String    Y    Y     SHOULD
  ------------------------- ----------------------- --------- ---- ----- ------------

Table 22 Reservation object

  ----------------- -------------------------- ------------ ---- ----- ------------
  Object            Description                                        Compliance

  **Reservation**   Charge reservation                                 MAY

  Action            Description                                        Compliance

  Create            Create a new reservation                           SHOULD

  Delete            Delete reservations                                SHOULD

  Modify            Modify reservations                                SHOULD

  Query             Query reservations                                 MUST

  Undelete          Undelete reservations                              MAY

  Attribute         Description                Type         PK   Req   Compliance

  Amount            Reservation balance        Integer                 MUST

  Description       Description                String                  SHOULD

  ExpirationTime    Time when reservation      TimeStamp               SHOULD
                    expires                                            

  Id                Reservation id             String       Y    Y     MUST

  JobId             Job id                     String            Y     MUST
  ----------------- -------------------------- ------------ ---- ----- ------------

Table 23 ReservationAllocation association

  --------------------------- ----------------------- --------- ---- ----- ------------
  Object                      Description                                  Compliance

  **ReservationAllocation**   Amount of allocation                         MAY
                              contributing toward                          
                              reservation                                  

  Action                      Description                                  Compliance

  Create                      Define a new                                 SHOULD
                              association                                  

  Delete                      Delete associations                          SHOULD

  Modify                      Modify associations                          SHOULD

  Query                       Query associations                           MUST

  Undelete                    Undelete associations                        MAY

  Attribute                   Description             Type      PK   Req   Compliance

  Amount                      Resource credits        Integer        Y     MUST

  Id                          Child allocation id     String    Y    Y     MUST

  Parent                      Parent reservation id   String    Y    Y     MUST
  --------------------------- ----------------------- --------- ---- ----- ------------

Table 24 Role object

  ------------- --------------------------- ------------- ---- ----- ------------
  Object        Description                                          Compliance

  **Role**      Role based access control                            SHOULD

  Action        Description                                          Compliance

  Create        Define a new role                                    MAY

  Delete        Delete roles                                         MAY

  Modify        Modify roles                                         SHOULD

  Query         Query roles                                          MUST

  Undelete      Undelete roles                                       MAY

  Attribute     Description                 Type          PK   Req   Compliance

  Description   Description                 String                   SHOULD

  Name          Role Name                   String        Y    Y     MUST
  ------------- --------------------------- ------------- ---- ----- ------------

Table 25 RoleAction association

  ---------------- --------------------------- ------------- ---- ----- ------------
  Object           Description                                          Compliance

  **RoleAction**   An action that a role can                            MAY
                   perform                                              

  Action           Description                                          Compliance

  Create           Define a new association                             SHOULD

  Delete           Delete associations                                  SHOULD

  Modify           Modify associations                                  SHOULD

  Query            Query associations                                   MUST

  Undelete         Undelete associations                                MAY

  Attribute        Description                 Type          PK   Req   Compliance

  Name             Child action name           String        Y    Y     MUST

  Object           Child object name           String        Y    Y     MUST

  Parent           Parent role name            String        Y    Y     MUST
  ---------------- --------------------------- ------------- ---- ----- ------------

Table 26 RoleUser association

  -------------- --------------------------- ------------- ---- ----- ------------
  Object         Description                                          Compliance

  **RoleUser**   A user that can perform a                            MAY
                 role                                                 

  Action         Description                                          Compliance

  Create         Define a new association                             SHOULD

  Delete         Delete associations                                  SHOULD

  Modify         Modify associations                                  SHOULD

  Query          Query associations                                   MUST

  Undelete       Undelete associations                                MAY

  Attribute      Description                 Type          PK   Req   Compliance

  Name           Child role name             String        Y    Y     MUST

  Object         Instance object name        String        Y    Y     MUST

  Parent         Parent user name            String        Y    Y     MUST
  -------------- --------------------------- ------------- ---- ----- ------------

Table 27 System object

  ------------- --------------------------- ------------- ---- ----- ------------
  Object        Description                                          Compliance

  **System**    The information manager                              SHOULD
                itself                                               

  Action        Description                                          Compliance

  Create        Define a new system                                  MAY

  Delete        Delete systems                                       MAY

  Modify        Modify systems                                       SHOULD

  Query         Query systems                                        MUST

  Undelete      Undelete systems                                     MAY

  Attribute     Description                 Type          PK   Req   Compliance

  Description   Description                 String                   SHOULD

  Name          System Name                 String        Y    Y     MUST

  Version       System Version              String             Y     MUST
  ------------- --------------------------- ------------- ---- ----- ------------

Table 28 Transaction object

  ------------- --------------------------- ------------- ---- ----- ------------
  Object        Description                                          Compliance

  **System**    Transaction log                                      SHOULD

  Action        Description                                          Compliance

  Post          Post a new transaction                               MAY

  Delete        Delete a transaction                                 MAY

  Modify        Modify a transaction                                 MAY

  Query         Query transactions                                   MUST

  Redo          Redo an undone transaction                           MAY

  Undelete      Undelete transactions                                MAY

  Undo          Undo a transaction (or                               MAY
                multiple)                                            

  Attribute     Description                 Type          PK   Req   Compliance

  Action        Action                      String             Y     MUST

  Actor         Authenticated user          String             Y     SHOULD
                requesting action                                    

  Amount        Amount specified in request Integer                  MAY

  Count         Object count acted upon     Integer                  MAY

  Credit        Is this a credit?           Boolean                  MAY

  Debit         Is this a debit?            Boolean                  MAY

  Delta         Amount balance was affected Integer                  MAY

  Description   Description                 String                   SHOULD

  Details       Transaction details         String                   MAY

  Id            Transaction record id       String        Y    Y     MUST

  JobId         Job id                      String                   MUST

  Machine       Machine name                String                   SHOULD

  Member        Member name (associations)  String                   MAY

  Name          Object instance name        String                   MUST

  Object        Object name                 String             Y     MUST

  Project       Project name                String                   SHOULD

  Type          Child type                  String                   MAY

  User          User name                   String                   MUST
  ------------- --------------------------- ------------- ---- ----- ------------

Table 29 Usage object

  ----------------- ------------------------- ----------- ---- ----- ------------
  Object            Description                                      Compliance

  **Usage**         Resources utilized by                            MAY
                    jobs                                             

  Action            Description                                      Compliance

  Post              Post a new usage record                          MUST

  Query             Query usage records                              MUST

  Attribute         Description               Type        PK   Req   Compliance

  Amount            Amount of resource        Integer          Y     MUST
                    utilized                                         

  Charge            Charge applied to Job     Integer                SHOULD

  ChargeRate        Charge rate applied       Float                  SHOULD

  ConsumptionRate   Resource consumption rate Float                  MAY

  Description       Description               String                 SHOULD

  Id                Usage record id           String      Y          SHOULD

  JobId             Job id                    String           Y     MUST

  Machine           Machine resource was used String                 SHOULD
                    on                                               

  Multiplier        Charge rate multiplier    Float                  MAY
                    applied                                          

  Resource          Resource type used        String           Y     MUST

  WallDuration      Wallclock time used in    Integer                MUST
                    seconds                                          
  ----------------- ------------------------- ----------- ---- ----- ------------

Table 30 User object

  ---------------- -------------------------- ------------ ---- ----- ------------
  Object           Description                                        Compliance

  **User**         A user                                             MUST

  Action           Description                                        Compliance

  Balance          Return user balance                                MAY

  Create           Create a new user                                  SHOULD

  Delete           Delete users                                       SHOULD

  Modify           Modify users                                       SHOULD

  Query            Query users                                        MUST

  Undelete         Undelete users                                     MAY

  Attribute        Description                Type         PK   Req   Compliance

  Active           Is the user active?        Boolean                 SHOULD

  CommonName       Full Name                  String                  MAY

  DefaultProject   Project used when          String                  MAY
                   unspecified                                        

  Description      Description                String                  SHOULD

  EmailAddress     Email address              String                  MAY

  Name             User id                    String       Y    Y     MUST

  PhoneNumber      Phone number               String                  MAY

  Special          Is this a special user?    Boolean                 MAY
  ---------------- -------------------------- ------------ ---- ----- ------------

Table 31 Value object

  ------------- --------------------------- ------------- ---- ----- ------------
  Object        Description                                          Compliance

  **Value**     A value that an attribute                            MAY
                can take                                             

  Action        Description                                          Compliance

  Create        Define a new value                                   SHOULD

  Delete        Delete values                                        SHOULD

  Modify        Modify values                                        SHOULD

  Query         Query values                                         MUST

  Undelete      Undelete values                                      MAY

  Attribute     Description                 Type          PK   Req   Compliance

  Attribute     Attribute name              String        Y    Y     MUST

  Description   Description                 String                   SHOULD

  Name          Value name                  String        Y    Y     MUST

  Object        Object name                 String        Y    Y     MUST
  ------------- --------------------------- ------------- ---- ----- ------------

# Error Reporting

> Conforming components MUST set the Code element using values defined
> in the SSSRMAP Message Format specifications. All successful responses
> MUST set the *Code* element content to 000. Failure responses MUST
> also set the Code element. At a minimum, the *Code* element content
> can be set to 999, indicating an unknown failure, although more
> specific error codes are highly recommended. All failures should be
> accompanied by a context-specific message indicating the reason for
> failure. No component-specific codes are defined.