Service Management
Service management is provided via the following collections:
Path | Description |
---|---|
/api/service_catalogs |
|
/api/service_templates |
|
/api/services |
|
/api/service_requests |
Service Catalogs
Full CRUD is available on service catalogs.
Creating Service Catalogs
/api/service_catalogs
Creating service catalog is provided via the following actions:
Method | Versions | Comment |
---|---|---|
create |
2.0.0 |
Preferred |
add |
since v1.0 |
Example of creating service catalog with create method:
POST /api/service_catalogs
{
"action" : "create",
"resource" : {
"name" : "Sample Service Catalog",
"description" : "Description of Sample Service Catalog",
"service_templates" : [
{ "href" : "http://localhost:3000/api/service_templates/3" },
{ "href" : "http://localhost:3000/api/service_templates/4" }
]
}
}
Optionally without the create action signature:
{
"name" : "Sample Service Catalog",
"description" : "Description of Sample Service Catalog",
"service_templates" : [
{ "href" : "http://localhost:3000/api/service_templates/3" },
{ "href" : "http://localhost:3000/api/service_templates/4" }
]
}
Please refer to the Resource Attributes page for a list of available attributes when creating Service Catalogs. |
Editing Service Catalogs
Editing a service catalog via the edit action as follows:
POST /api/service_catalogs/:id
{
"action" : "edit",
"resource" : {
"description" : "Updated Description of Third Service Catalog"
}
}
Assigning Service Templates
Assign and Unassigning service templates to service catalogs is done via the assign and unassign actions as follows:
POST /api/service_catalogs/:id
{
"action" : "assign",
"resources" : [
{ "href" : "http://localhost:3000/api/service_templates/5" },
{ "href" : "http://localhost:3000/api/service_templates/6" }
]
}
POST /api/service_catalogs/:id
{
"action" : "unassign",
"resources" : [
{ "href" : "http://localhost:3000/api/service_templates/1" },
{ "href" : "http://localhost:3000/api/service_templates/2" }
]
}
Ordering Services Service Templates
Ordering services is done by triggering an order action on service templates in a service catalog as follows:
POST /api/service_catalogs/:id/service_templates
{
"action" : "order",
"resource" : {
"href" : "http://localhost:3000/api/service_templates/3",
"option_0_vm_target_name" : "test-vm-0001",
"option_0_vm_target_hostname" : "test-vm-0001"
}
}
Refresh Service Dialog Fields
Refreshing dialog fields is done via a refresh_dialog_fields action as shown in the following cases:
Refresh Dialog Fields of Service Templates Service Dialogs
Refreshing dialog fields for a service template service dialogs is done as follows:
POST /api/service_catalogs/:id/service_templates
{
"action" : "refresh_dialog_fields",
"resource" : {
"href" : "http://localhost:3000/api/service_templates/3",
"dialog_fields" : {
"my_field1" : "my field1 value",
"my_field2" : "my field2 value",
"my_field3" : "my field3 value",
...
},
"fields" : [ "my_field1", "my_field3" ]
}
}
Refresh Dialog Fields of Service Dialogs
Refreshing dialog fields for a service dialog is done as follows:
POST /api/service_dialogs/:id
{
"action" : "refresh_dialog_fields",
"resource" : {
"dialog_fields" : {
"my_field1" : "my field1 value",
"my_field2" : "my field2 value",
"my_field3" : "my field3 value",
...
},
"fields" : [ "my_field1", "my_field3" ]
}
}
Deleting Service Catalogs
Single service catalogs can simply be deleted via the DELETE method as follows:
DELETE /api/service_catalogs/:id
Multiple service catalogs can also be deleted with a single request as follows:
POST /api/service_catalogs
{
"action" : "delete",
"resources" : [
{ "href" : "http://localhost:3000/api/service_catalogs/11" },
{ "href" : "http://localhost:3000/api/service_catalogs/12" },
{ "href" : "http://localhost:3000/api/service_catalogs/13" }
]
}
Service Templates
Management of Service Templates is available via the following collection:
/api/service_templates
Full CRUD is available on service templates.
Creating Service Templates
Service Templates can be created via a POST to the /api/service_templates collection:
/api/service_templates
{
"name" : "Atomic Service Template",
"service_type" : "atomic",
"prov_type" : "amazon",
"display" : "false",
"config_info" : {
"miq_request_dialog_name" : "Dialog_Name",
"placement_auto" : [true, 1],
"number_of_vms" : [1, "1"],
"src_vm_id" : [11, "test_vm"],
"vm_name" : "AtomicVMName",
"schedule_type" : ["immediately", "Immediately on Approval"],
"instance_type" : [21, "instance_flavor"],
"src_ems_id" : [5, "test_provider"],
"provision" : {
"fqname" : "/Sample/System/ProvisionEndpoint",
"dialog_id" : 21
},
"retirement" : {
"fqname" : "/Sample/System/RetirementEndpoint",
"dialog_id" : 22
}
}
}
Editing Service Templates
Editing a single service template as follows:
POST /api/service_templates/:id
{
"action" : "edit",
"resource" : {
"name" : "svc_template_01",
"description" : "This is a sample service template"
}
}
Deleting Service Templates
Deleting single service template via the DELETE method:
DELETE /api/service_templates/:id
or via the delete action as follows:
POST /api/service_templates/:id
{
"action" : "delete"
}
Multiple service templates can also be deleted in bulk as follows:
POST /api/service_templates
{
"action" : "delete",
"resources" : [
{ "href" : "http://localhost:3000/api/service_templates/11" },
{ "href" : "http://localhost:3000/api/service_templates/12" }
]
}
Services
Accessing services is via the services collection as follows:
/api/services
or addressing an individual Service via the services resource:
/api/services/:id
Creating Services
In general, services are created once ordered from service catalogs.
Service resources can also be created as follows:
POST /api/services
{
"action" : "create",
"resource" : {
"name" : "test_service_name",
"description" : "Test Service",
"parent_service" : { "href" : "http://localhost:3000/api/services/15" }
}
}
In the above example parent_service is an href or id reference to an existing service.
Please refer to the Resource Attributes page for a list of available attributes when creating Services. |
Service Actions
Once services are ordered from a catalog, they can be:
Resources can also be added or removed from services as shown here:
Other than service creates and edits, service actions return the action response as in the following example:
Request:
POST /api/services/12
{
"action" : "start"
}
Response:
{
"success": true,
"message": "Service id:12 name:'SampleService' starting",
"task_id": 62,
"task_href": "http://localhost:3000/api/tasks/62",
"href": "http://localhost:3000/api/services/12"
}
Service Editing
POST /api/services/:id
{
"action" : "edit",
"resource" : {
"name" : "Updated Service Name",
"description" : "Updated Service Description"
}
}
Adding and Removing Resources from Services
Adding and removing resources from services is made available with the following actions:
Action |
---|
add_resource |
remove_resource |
remove_all_resources |
The following example adds a single resource to a service:
POST /api/services/:id
{
"action": "add_resource",
"resource": {
"resource": {
"href": "http://localhost:3000/api/vms/11"
}
}
}
The following example bulk adds resources to multiple services:
POST /api/services
{
"action" : "add_resource",
"resources" : [
{
"href" : "http://localhost:3000/api/services/3",
"resource" : { "href" : "http://localhost:3000/api/vms/11" }
},
{
"href" : "http://localhost:3000/api/services/3",
"resource" : { "href" : "http://localhot:3000/api/vms/12" }
},
{
"href" : "http://localhost:3000/api/services/4",
"resource" : { "href" : "http://localhost:3000/api/vms/21" }
},
{
"href" : "http://localhost:3000/api/services/5",
"resource" : { "href" : "http://localhost:3000/api/vms/22" }
}
]
}
The following example removes a single resource from a service:
POST /api/services/:id
{
"action" : "remove_resource",
"resource" : {
{ "resource" : { "href" : "http://localhost:3000/api/vms/11" } }
}
}
The following example removes resources in bulk from multiple services:
POST /api/services
{
"action" : "remove_resource",
"resources" : [
{
"href" : "http://localhost:3000/api/services/3",
"resource" : { "href" : "http://localhost:3000/api/vms/11" }
},
{
"href" : "http://localhost:3000/api/services/3",
"resource" : { "href" : "http://localhot:3000/api/vms/12" }
},
{
"href" : "http://localhost:3000/api/services/4",
"resource" : { "href" : "http://localhost:3000/api/vms/21" }
},
{
"href" : "http://localhost:3000/api/services/5",
"resource" : { "href" : "http://localhost:3000/api/vms/22" }
}
]
}
The following example removes all resources from a single service:
POST /api/services/:id
{
"action" : "remove_all_resources"
}
The following example removes all resources in bulk from multiple services:
POST /api/services
{
"action" : "remove_all_resources",
"resources" : [
{ "href" : "http://localhost:3000/api/services/11" },
{ "href" : "http://localhost:3000/api/services/12" },
{ "href" : "http://localhost:3000/api/services/13" }
]
}
Service Retiring (future)
POST /api/services/:id
{
"action" : "retire",
"resource" : { "date" : "10/30/2015", "warn" : "5" }
}
Service Reconfiguring
When a service is defined with a Reconfigure Automation Entrypoint, the reconfigure action is shown as a valid action for that service.
This action takes any of the dialog fields the service supports during reconfiguration.
POST /api/services/:id
{
"action" : "reconfigure",
"resource" : {
"field1" : "updated field1 value",
"field2" : "updated field2 value",
...
}
}
Deleting Services
DELETE /api/services/:id
Or via the delete action for deleting multiple services:
POST /api/services
{
"action" : "delete",
"resources" : [
{ "href" : "http://localhost:3000/api/services/101",
{ "href" : "http://localhost:3000/api/services/102",
{ "href" : "http://localhost:3000/api/services/103"
...
]
}
Service Requests
Querying Service Requests
Once services are ordered from a catalog, service requests can be monitored as follows:
GET /api/service_requests/:id
Additionally, tasks of the specific requests can be queried:
GET /api/service_requests/:id?expand=request_tasks
or optionally via the tasks alias:
GET /api/service_requests/:id?expand=tasks
Approving or Denying Service Requests
If a service request is not auto approved, it can be approved or denied via the actions approve and deny on the service request resource.
Denying a Service Request
POST /api/service_requests/:id
{
"action" : "deny",
"reason" : "reason for denial"
}
Adding Approvers to Service Requests
Approvers can be added to service requests with the add_approver action. Approvers can be specified by user_id or user reference including an href or id of the approver.
POST /api/service_requests/:id
{
"action" : "add_approver",
"resource" : {
"user_id" : 11
}
}
Or one of the following signatures:
{
"action" : "add_approver",
"resource" : {
"user" : { "id" : 11 }
}
}
{
"action" : "add_approver",
"resource" : {
"user" : { "href" : "http://localhost:3000/api/users/11" }
}
}
Approvers can also be added in bulk as follows:
POST /api/service_requests
{
"action" : "add_approver",
"resources" : [
{
"href" : "http://localhost:3000/api/service_requests/101",
"user_id" : 11
},
{
"href" : "http://localhost:3000/api/service_requests/102",
"user" : { "id" : 11 }
},
{
"href" : "http://localhost:3000/api/service_requests/103",
"user" : { "href" : "http://localhost:3000/api/users/11" }
}
]
}
Removing Approvers from Service Requests
Approvers can be removed from service requests with the remove_approver action. Approvers can be specified by user_id or user reference including an href or id of the approver.
POST /api/service_requests/:id
{
"action" : "remove_approver",
"resource" : {
"user_id" : 11
}
}
Approvers can also be removed in bulk as follows:
POST /api/service_requests
{
"action" : "remove_approver",
"resources" : [
{
"href" : "http://localhost:3000/api/service_requests/101",
"user_id" : 11
},
{
"href" : "http://localhost:3000/api/service_requests/102",
"user" : { "id" : 11 }
},
{
"href" : "http://localhost:3000/api/service_requests/103",
"user" : { "href" : "http://localhost:3000/api/users/11" }
}
]
}