API extension for accessing instance_actions

Adds a new API extension for accessing the recorded actions and events
on an instance.  Usage is documented with api samples.

Additionally it modified the db api to retrieve actions by request_id
since the api does not return the db id.  This extension is the first
consumer of that method so there's no issue of changing behaviour
elsewhere.

Blueprint instance-actions
DocImpact

Change-Id: I74109586cc762a7f51d2b114896cf071ee0671cb
This commit is contained in:
Andrew Laski
2012-12-12 10:35:11 -05:00
parent f81bd98816
commit e6858c3b9c
7 changed files with 73 additions and 3 deletions

View File

@@ -312,6 +312,14 @@
"namespace": "http://docs.openstack.org/compute/ext/hypervisors/api/v1.1",
"updated": "2012-06-21T00:00:00+00:00"
},
{
"alias": "os-instance-actions",
"description": "View a log of actions taken on an instance",
"links": [],
"name": "InstanceActions",
"namespace": "http://docs.openstack.org/compute/ext/instance-actions/api/v1.1",
"updated": "2013-02-08T00:00:00+00:00"
},
{
"alias": "os-instance_usage_audit_log",
"description": "Admin-only Task Log Monitoring.",

View File

@@ -135,6 +135,9 @@
<extension alias="os-hypervisors" updated="2012-06-21T00:00:00+00:00" namespace="http://docs.openstack.org/compute/ext/hypervisors/api/v1.1" name="Hypervisors">
<description>Admin-only hypervisor administration.</description>
</extension>
<extension alias="os-instance-actions" updated="2013-02-08T00:00:00+00:00" namespace="http://docs.openstack.org/compute/ext/instance-actions/api/v1.1" name="InstanceActions">
<description>View a log of actions taken on an instance</description>
</extension>
<extension alias="os-instance_usage_audit_log" updated="2012-07-06T01:00:00+00:00" namespace="http://docs.openstack.org/ext/services/api/v1.1" name="OSInstanceUsageAuditLog">
<description>Admin-only Task Log Monitoring.</description>
</extension>

View File

@@ -0,0 +1,27 @@
{
"instanceAction": {
"action": "reboot",
"events": [
{
"event": "schedule",
"finish_time": "2012-12-05 01:02:00.000000",
"result": "Success",
"start_time": "2012-12-05 01:00:02.000000",
"traceback": ""
},
{
"event": "compute_create",
"finish_time": "2012-12-05 01:04:00.000000",
"result": "Success",
"start_time": "2012-12-05 01:03:00.000000",
"traceback": ""
}
],
"instance_uuid": "b48316c5-71e8-45e4-9884-6c78055b9b13",
"message": "",
"project_id": "147",
"request_id": "req-3293a3f1-b44c-4609-b8d2-d81b105636b8",
"start_time": "2012-12-05 00:00:00.000000",
"user_id": "789"
}
}

View File

@@ -0,0 +1,5 @@
<?xml version='1.0' encoding='UTF-8'?>
<instanceAction instance_uuid="b48316c5-71e8-45e4-9884-6c78055b9b13" user_id="789" start_time="2012-12-05 00:00:00.000000" request_id="req-3293a3f1-b44c-4609-b8d2-d81b105636b8" action="reboot" message="" project_id="147">
<events finish_time="2012-12-05 01:02:00.000000" start_time="2012-12-05 01:00:02.000000" traceback="" event="schedule" result="Success"/>
<events finish_time="2012-12-05 01:04:00.000000" start_time="2012-12-05 01:03:00.000000" traceback="" event="compute_create" result="Success"/>
</instanceAction>

View File

@@ -0,0 +1,22 @@
{
"instanceActions": [
{
"action": "resize",
"instance_uuid": "b48316c5-71e8-45e4-9884-6c78055b9b13",
"message": "",
"project_id": "842",
"request_id": "req-25517360-b757-47d3-be45-0e8d2a01b36a",
"start_time": "2012-12-05 01:00:00.000000",
"user_id": "789"
},
{
"action": "reboot",
"instance_uuid": "b48316c5-71e8-45e4-9884-6c78055b9b13",
"message": "",
"project_id": "147",
"request_id": "req-3293a3f1-b44c-4609-b8d2-d81b105636b8",
"start_time": "2012-12-05 00:00:00.000000",
"user_id": "789"
}
]
}

View File

@@ -0,0 +1,5 @@
<?xml version='1.0' encoding='UTF-8'?>
<instanceActions>
<instanceAction instance_uuid="b48316c5-71e8-45e4-9884-6c78055b9b13" user_id="789" start_time="2012-12-05 01:00:00.000000" request_id="req-25517360-b757-47d3-be45-0e8d2a01b36a" action="resize" message="" project_id="842"/>
<instanceAction instance_uuid="b48316c5-71e8-45e4-9884-6c78055b9b13" user_id="789" start_time="2012-12-05 00:00:00.000000" request_id="req-3293a3f1-b44c-4609-b8d2-d81b105636b8" action="reboot" message="" project_id="147"/>
</instanceActions>

View File

@@ -685,9 +685,9 @@ class DbApiTestCase(test.TestCase):
db.action_start(ctxt2, action_values)
actions = db.actions_get(ctxt1, uuid1)
action_id = actions[0]['id']
action = db.action_get_by_id(ctxt1, uuid1, action_id)
self.assertEqual('resize', action['action'])
request_id = actions[0]['request_id']
action = db.action_get_by_request_id(ctxt1, uuid1, request_id)
self.assertEqual('run_instance', action['action'])
self.assertEqual(ctxt1.request_id, action['request_id'])
def test_instance_action_event_start(self):