(Click to open topic with navigation)
This section describes the services available through Moab Web Services for interacting with the Usage Record object in Moab Accounting Manager. It contains the URLs, request bodies, and responses delivered to and from MWS as an intermediary for MAM.
The Fields: Usage Records reference section contains the type and description of all fields in the Usage Record object.
Supported methods
Resource | GET | PUT | POST | DELETE |
---|---|---|---|---|
/rest/accounting/usage-records | Get All Usage Records | -- | -- | -- |
/rest/accounting/usage-records/<id> | Get Single Usage Record | -- | -- | -- |
/rest/accounting/usage-records/quote | -- | -- | Obtain a Quote For Resource Usage | -- |
This topic contains these sections:
The HTTP GET method is used to retrieve Usage Record information.
Quick reference
GET http://localhost:8080/mws/rest/accounting/usage-records?api-version=3 GET http://localhost:8080/mws/rest/accounting/usage-records/<id>?api-version=3 POST http://localhost:8080/mws/rest/accounting/usage-records/quote?api-version=3
URLs and parameters
GET http://localhost:8080/mws/rest/accounting/usage-records?api-version=3&proxy-user=<user>[&query=<query_conditions>][&fields=<fields_to_display>[&sort=<fields_to_sort>]|&show-all=(true|false)]
Parameter | Required | Type | Valid values | Description | Example |
---|---|---|---|---|---|
proxy-user | Yes | String | -- | Perform action as defined MAM user. | proxy-user=amy |
query | No | JSON | -- |
Results are restricted to those having the specified field values. The query parameter does not support the full Mongo query syntax. Only querying for a simple, non-nested JSON object is allowed. |
query={"account":"query"} |
fields | No | String | -- | Comma-separated list of field names to display. | fields=id,instance,charge,user,account |
sort | No | JSON | -- | Sort the results. Use 1 for ascending and -1 for descending. Should be used in conjunction with the fields parameter. | sort={"user":1} |
show-all | No | Boolean | true or false | true shows all fields including metadata and hidden fields. Default is false. | show-all=true |
See Global URL Parameters for available URL parameters.
Sample response
GET http://localhost:8080/mws/rest/accounting/usage-records?api-version=3&proxy-user=amy&fields=id,instance,charge,user,account&pretty=true
------------------------------------
{
"totalCount": 2,
"resultCount": 2,
"results": [
{
"id": 1,
"instance": "job.1",
"charge": 31,
"user": "amy",
"account": "chemistry"
},
{
"id": 2,
"instance": "job.2",
"charge": 30,
"user": "amy",
"account": "biology"
}
}
URLs and parameters
GET http://localhost:8080/mws/rest/accounting/usage-records/<id>?api-version=3&proxy-user=<user>[&fields=<fields_to_display>|&show-all=(true|false)]
Parameter | Required | Type | Valid values | Description | Example |
---|---|---|---|---|---|
id | Yes | String | -- | The unique identifier of the object. | code |
proxy-user | Yes | String | -- | Perform action as defined MAM user. | proxy-user=amy |
fields | No | String | -- | Comma-separated list of field names to display. | fields=id,instance,charge,user,account |
show-all | No | Boolean | true or false | true shows all fields including metadata and hidden fields. Default is false. | show-all=true |
See Global URL Parameters for available URL parameters.
Sample response
GET http://localhost:8080/mws/rest/accounting/usage-records/1?api-version=3&proxy-user=amy&pretty=true
------------------------------------
{
"id": 1,
"type": "Job",
"instance": "job.1",
"charge": 31,
"stage": "Charge",
"user": "amy",
"group": "faculty",
"account": "chemistry",
"organization": "sciences",
"qualityOfService": "",
"machine": "colony",
"nodes": "",
"processors": 16,
"memory": "",
"disk": "",
"network": "",
"duration": 720,
"startTime": "",
"endTime": "",
"description": ""
}
Obtain a Quote For Resource Usage
URLs and parameters
POST http://localhost:8080/mws/rest/accounting/usage-records/quote?api-version=3&object-type=<object>&proxy-user=<user>&charge-duration=<seconds>
Parameter | Required | Type | Valid values | Description | Example |
---|---|---|---|---|---|
proxy-user | Yes | String | -- | Perform action as defined MAM user. | proxy-user=amy |
charge-duration | Yes | Integer | -- | The quote duration of the job in seconds. | charge-duration=6400 |
object-type | Yes | String | -- | The object to quote. It can be job or service. | object-type=job |
itemize | No | Boolean | true or false | Returns the composite charge information in the response data. | itemize=true |
rate | No | JSONArray | -- | Uses the specified charge rates in the quote. The specified rates override the standard and quote rates. If the guarantee field is set to true, these charge rates will be saved and used when this quote is referenced in a charge action. | rate=[{"type":"VBR","name":"Memory","rate":1},{"type":"VBR","name":"Processors","rate":1}] |
guarantee | No | Boolean | true or false | Guarantees the quote and returns a quote id to secure the current charge rates. This results in the creation of a quote record and a permanent usage record. This parameter is mutually exclusive with the cost-only parameter. | guarantee=true |
grace-duration | No | Integer | -- | The guaranteed quote grace period in seconds. If the quote duration is specified but not the quote end time, the quote endtime will be calculated as the quote start time plus the quote duration plus the grace duration. | grace-duration=6400 |
cost-only | No | Integer | -- | Returns the cost, ignoring all balance and validity checks. This parameter is mutually exclusive with the guarantee parameter. | cost-only=true |
description | No | String | -- | The guaranteed quote description. | description="ABC Coupon Rate" |
start-time | No | Date | -- | The guaranteed quote start time in the format yyyy-MM-dd HH:mm:ss z, -Infinity, Infinity, or Now. | start-time="2012-04-09 13:49:40 UTC" |
end-time | No | Date | -- | The guaranteed quote end time in the format yyyy-MM-dd HH:mm:ss z, -Infinity, Infinity, or Now. | end-time="2012-04-09 14:49:40 UTC" |
See Global URL Parameters for available URL parameters.
Request body
The request body below shows all of the fields in a job that could affect the quote.
POST http://localhost:8080/mws/rest/accounting/usage-records/quote?api-version=3&object-type=job&charge-duration=300
------------------------------------
{
"id": "Moab.1",
"user": "amy",
"group": "group",
"rmName": "machine1",
"templateList": [
"genericVm"
],
"account": "biology",
"qosRequested": "QOS1",
"variables": {
"imageName": "centos5.5-stateless",
"topLevelServiceId": "myService.1",
"serviceId": "vmService.1",
"vmid": "VmService.1",
"pmid": "VmService.1"
},
"requirements": [
{
"requiredProcessorsPerTask": 2,
"genericResources": {
"gold": 100,
"os": 500
},
"requiredNodeCountMinimum": 1,
"requiredMemoryPerTask": 1024,
"requiredClass": "batch"
}
]
}
The request body below shows all of the fields in a service that affect the quote in a default MAM installation.
POST http://localhost:8080/mws/rest/accounting/usage-records/quote?api-version=3&object-type=service&charge-duration=300
------------------------------------
{
"name":"service.1",
"user": "amy",
"account": "chemistry"
"attributes":{
"moab":{
"job":{
"resources":{
"procs":1,
"mem":2048,
"OS":500,
"gold":100
},
"variables":{
"Var1": 1524
},
"image":"centos5.5-stateless",
"template":"genericVM",
}
}
}
}
Sample response
JSON response ------------------------------------ { "instance": "Moab.1", "amount": 600 }
JSON response ------------------------------------ { "id": 1, "usageRecord": 2, "instance": "Moab.1", "amount": 600 }
JSON response ------------------------------------ { "details": [ { "name": "Processors", "value": "2", "duration": 300, "rate": 1, "scalingFactor": 1, "amount": 600, "details": "2 [Processors] * 1 [ChargeRate{VBR}{Processors}] * 300 [Duration]" }, { "name": "Memory", "value": "1024", "duration": 300, "rate": 1, "scalingFactor": 1, "amount": 307200, "details": "1024 [Memory] * 1 [ChargeRate{VBR}{Memory}] * 300 [Duration]" } ], "id": 20, "instance": "Moab.1", "usageRecord": 20, "amount": 307800 }
JSON response ------------------------------------ { "services": [ { "details": [ { "name": "Processors", "value": "22", "duration": 30, "rate": 1, "scalingFactor": 1, "amount": 660, "details": "22 [Processors] * 1 [ChargeRate{VBR}{Processors}] * 30 [Duration]" }, { "name": "Memory", "value": "32343242", "duration": 30, "rate": 1, "scalingFactor": 1, "amount": 970297260, "details": "32343242 [Memory] * 1 [ChargeRate{VBR}{Memory}] * 30 [Duration]" } ], "id": 120, "instance": "myVmWorkflow", "usageRecord": 157, "amount": 970297920 }, { "details": [ { "name": "Storage", "value": "2500", "duration": 30, "rate": 1.157E-7, "scalingFactor": 1, "amount": 0, "details": "2500 [Storage] * 1.157e-07 [ChargeRate{VBR}{Storage}] * 30 [Duration]" }], "id": 122, "instance": "myExtraStorageWorkflow", "usageRecord": 159, "amount": 0 }, { "details": [ { "name": "Processors", "value": "0", "duration": 30, "rate": 1, "scalingFactor": 1, "amount": 0, "details": "0 [Processors] * 1 [ChargeRate{VBR}{Processors}] * 30 [Duration]" }, { "name": "Memory", "value": "0", "duration": 30, "rate": 1, "scalingFactor": 1, "amount": 0, "details": "0 [Memory] * 1 [ChargeRate{VBR}{Memory}] * 30 [Duration]" } ], "id": 123, "instance": "myPmWorkflow", "usageRecord": 160, "amount": 0 } ], "amount": 970297920 }
Restrictions
The details field is only available with MAM version 7.1.0 or later.
Related Topics