AMIE Documentation
AMIE (The Allocations Management Information Exchange) is the mechanism by which ACCESS communicates information about allocations with Resource Providers (RPs). RPs are expected to implement an AMIE client to accept information about incoming allocations.
AMIE is implemented as a transaction-based protocol that uses JSON web APIs for the underlying communication layer.
Overview
The AMIE model consists of two sites and an agreed upon set of transactions that the two sites
will use to send account management data to each other. A transaction consists of packets of data
sent between the two sites. The site sending a packet is called the local site and the packet is
known to the sending site as an outgoing packet. The receiving site is called the remote site and
the packet received is known to the receiving site as an incoming packet. The site that creates the
transaction (and sends the first packet) is also called the originating site.
Transactions
Transactions have a number of properties. These are the local site, the remote site, the originating
site, a transaction id, and a state. Once created, the first four properties do not change. The state
changes over time.
The transaction id is used to distinguish one transaction from another. The originating site
chooses the transaction id without consulting the remote site. The only rule is that a transaction id
created by one site may not be reused by that site for a different transaction. Hence a transaction is
identified by the originating site, the transaction id, the local site, and the remote site.
AMIE defines 3 states for a transaction: in-progress, completed, or failed. The initial state of a
transaction is in-progress. It remains in that state until all packets have been processed. If all
packets have been successfully processed, the transaction state becomes completed. If any of the
packets causes a failure, the transaction state becomes failed.
Packets
Transactions also have packets which contain account management data. Incoming packets are
those packets received from the remote site. Outgoing packets are those packets created by the
local site to be sent to the remote site. Outgoing packets are created either when the transaction is
created or as a reply to an incoming packet.
Documentation
The following documents provide the necessary information to implement AMIE:
File | Description |
---|---|
| A description of each transaction in AMIE, and the fields and values of each packet. |
| How to access the AMIE API. The API is used to GET and POST the data described in the AMIE-ACCESS document above. |
| To aid in testing AMIE, a test harness is provided to verify that an AMIE implementation is working correctly. This document explains the testing process. |
| While technically not part of AMIE, the usage API is the mechanism by which RPs report usage back to ACCESS. This describes the usage API. |
Python Library
An optional python library is provided to aid in implementing AMIE at RP sites. The library manages the communication with the AMIE api, leaving the RP to implement the various actions needed to be taken at their site. For more information, see:
GitHub - XSEDE/amieclient: It's a python library for the AMIE REST API. (I'm not shouting at you, it's just a lot of acronyms all in a row.)