Add API samples to Admin Actions
Change-Id: If072bf9e9a55c79c71fd3911776045ee46483a00
This commit is contained in:
parent
b3058b9721
commit
9d54a1b70d
@ -0,0 +1,7 @@
|
||||
{
|
||||
"createBackup": {
|
||||
"name": "Backup 1",
|
||||
"backup_type": "daily",
|
||||
"rotation": 1
|
||||
}
|
||||
}
|
@ -0,0 +1,6 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<createBackup>
|
||||
<name>Backup 1</name>
|
||||
<backup_type>daily</backup_type>
|
||||
<rotation>1</rotation>
|
||||
</createBackup>
|
@ -0,0 +1,3 @@
|
||||
{
|
||||
"injectNetworkInfo": null
|
||||
}
|
@ -0,0 +1,2 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<injectNetworkInfo />
|
@ -0,0 +1,7 @@
|
||||
{
|
||||
"os-migrateLive": {
|
||||
"host": "0443e9a1254044d8b99f35eace132080",
|
||||
"block_migration": false,
|
||||
"disk_over_commit": false
|
||||
}
|
||||
}
|
@ -0,0 +1,6 @@
|
||||
<?xml version="1.0" encoding="UTF-8" ?>
|
||||
<os-migrateLive>
|
||||
<host>6217bf142bb3491995f966af999f9f23</host>
|
||||
<block_migration>false</block_migration>
|
||||
<disk_over_commit>false</disk_over_commit>
|
||||
</os-migrateLive>
|
@ -0,0 +1,3 @@
|
||||
{
|
||||
"lock": null
|
||||
}
|
@ -0,0 +1,2 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<lock />
|
3
doc/api_samples/os-admin-actions/admin-actions-lock.json
Normal file
3
doc/api_samples/os-admin-actions/admin-actions-lock.json
Normal file
@ -0,0 +1,3 @@
|
||||
{
|
||||
"lock": null
|
||||
}
|
@ -0,0 +1,3 @@
|
||||
{
|
||||
"migrate": null
|
||||
}
|
@ -0,0 +1,2 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<migrate />
|
@ -0,0 +1,3 @@
|
||||
{
|
||||
"pause": null
|
||||
}
|
2
doc/api_samples/os-admin-actions/admin-actions-pause.xml
Normal file
2
doc/api_samples/os-admin-actions/admin-actions-pause.xml
Normal file
@ -0,0 +1,2 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<pause/>
|
@ -0,0 +1,3 @@
|
||||
{
|
||||
"resetNetwork": null
|
||||
}
|
@ -0,0 +1,2 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<resetNetwork />
|
@ -0,0 +1,5 @@
|
||||
{
|
||||
"os-resetState": {
|
||||
"state": "active"
|
||||
}
|
||||
}
|
@ -0,0 +1,4 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<os-resetState>
|
||||
<state>active</state>
|
||||
</os-resetState>
|
@ -0,0 +1,3 @@
|
||||
{
|
||||
"resume": null
|
||||
}
|
@ -0,0 +1,2 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<resume />
|
@ -0,0 +1,3 @@
|
||||
{
|
||||
"suspend": null
|
||||
}
|
@ -0,0 +1,2 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<suspend />
|
@ -0,0 +1,3 @@
|
||||
{
|
||||
"unlock": null
|
||||
}
|
@ -0,0 +1,2 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<unlock />
|
@ -0,0 +1,3 @@
|
||||
{
|
||||
"unlock": null
|
||||
}
|
@ -0,0 +1,3 @@
|
||||
{
|
||||
"unpause": null
|
||||
}
|
@ -0,0 +1,2 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<unpause />
|
16
doc/api_samples/os-admin-actions/server-post-req.json
Normal file
16
doc/api_samples/os-admin-actions/server-post-req.json
Normal file
@ -0,0 +1,16 @@
|
||||
{
|
||||
"server" : {
|
||||
"name" : "new-server-test",
|
||||
"imageRef" : "http://openstack.example.com/openstack/images/70a599e0-31e7-49b7-b260-868f441e862b",
|
||||
"flavorRef" : "http://openstack.example.com/openstack/flavors/1",
|
||||
"metadata" : {
|
||||
"My Server Name" : "Apache1"
|
||||
},
|
||||
"personality" : [
|
||||
{
|
||||
"path" : "/etc/banner.txt",
|
||||
"contents" : "ICAgICAgDQoiQSBjbG91ZCBkb2VzIG5vdCBrbm93IHdoeSBpdCBtb3ZlcyBpbiBqdXN0IHN1Y2ggYSBkaXJlY3Rpb24gYW5kIGF0IHN1Y2ggYSBzcGVlZC4uLkl0IGZlZWxzIGFuIGltcHVsc2lvbi4uLnRoaXMgaXMgdGhlIHBsYWNlIHRvIGdvIG5vdy4gQnV0IHRoZSBza3kga25vd3MgdGhlIHJlYXNvbnMgYW5kIHRoZSBwYXR0ZXJucyBiZWhpbmQgYWxsIGNsb3VkcywgYW5kIHlvdSB3aWxsIGtub3csIHRvbywgd2hlbiB5b3UgbGlmdCB5b3Vyc2VsZiBoaWdoIGVub3VnaCB0byBzZWUgYmV5b25kIGhvcml6b25zLiINCg0KLVJpY2hhcmQgQmFjaA=="
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
19
doc/api_samples/os-admin-actions/server-post-req.xml
Normal file
19
doc/api_samples/os-admin-actions/server-post-req.xml
Normal file
@ -0,0 +1,19 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<server xmlns="http://docs.openstack.org/compute/api/v1.1" imageRef="http://openstack.example.com/openstack/images/70a599e0-31e7-49b7-b260-868f441e862b" flavorRef="http://openstack.example.com/openstack/flavors/1" name="new-server-test">
|
||||
<metadata>
|
||||
<meta key="My Server Name">Apache1</meta>
|
||||
</metadata>
|
||||
<personality>
|
||||
<file path="/etc/banner.txt">
|
||||
ICAgICAgDQoiQSBjbG91ZCBkb2VzIG5vdCBrbm93IHdoeSBp
|
||||
dCBtb3ZlcyBpbiBqdXN0IHN1Y2ggYSBkaXJlY3Rpb24gYW5k
|
||||
IGF0IHN1Y2ggYSBzcGVlZC4uLkl0IGZlZWxzIGFuIGltcHVs
|
||||
c2lvbi4uLnRoaXMgaXMgdGhlIHBsYWNlIHRvIGdvIG5vdy4g
|
||||
QnV0IHRoZSBza3kga25vd3MgdGhlIHJlYXNvbnMgYW5kIHRo
|
||||
ZSBwYXR0ZXJucyBiZWhpbmQgYWxsIGNsb3VkcywgYW5kIHlv
|
||||
dSB3aWxsIGtub3csIHRvbywgd2hlbiB5b3UgbGlmdCB5b3Vy
|
||||
c2VsZiBoaWdoIGVub3VnaCB0byBzZWUgYmV5b25kIGhvcml6
|
||||
b25zLiINCg0KLVJpY2hhcmQgQmFjaA==
|
||||
</file>
|
||||
</personality>
|
||||
</server>
|
16
doc/api_samples/os-admin-actions/server-post-resp.json
Normal file
16
doc/api_samples/os-admin-actions/server-post-resp.json
Normal file
@ -0,0 +1,16 @@
|
||||
{
|
||||
"server": {
|
||||
"adminPass": "GrsuNLsSKd5N",
|
||||
"id": "b63a8fc6-2977-4a11-a611-3ec45f839c4c",
|
||||
"links": [
|
||||
{
|
||||
"href": "http://openstack.example.com/v2/openstack/servers/b63a8fc6-2977-4a11-a611-3ec45f839c4c",
|
||||
"rel": "self"
|
||||
},
|
||||
{
|
||||
"href": "http://openstack.example.com/openstack/servers/b63a8fc6-2977-4a11-a611-3ec45f839c4c",
|
||||
"rel": "bookmark"
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
6
doc/api_samples/os-admin-actions/server-post-resp.xml
Normal file
6
doc/api_samples/os-admin-actions/server-post-resp.xml
Normal file
@ -0,0 +1,6 @@
|
||||
<?xml version='1.0' encoding='UTF-8'?>
|
||||
<server xmlns:atom="http://www.w3.org/2005/Atom" xmlns="http://docs.openstack.org/compute/api/v1.1" id="491bb5e9-068e-4fcd-a468-8638ceeffbe9" adminPass="4jXS888UQScr">
|
||||
<metadata/>
|
||||
<atom:link href="http://openstack.example.com/v2/openstack/servers/491bb5e9-068e-4fcd-a468-8638ceeffbe9" rel="self"/>
|
||||
<atom:link href="http://openstack.example.com/openstack/servers/491bb5e9-068e-4fcd-a468-8638ceeffbe9" rel="bookmark"/>
|
||||
</server>
|
@ -0,0 +1,7 @@
|
||||
{
|
||||
"createBackup": {
|
||||
"name": "Backup 1",
|
||||
"backup_type": "daily",
|
||||
"rotation": 1
|
||||
}
|
||||
}
|
@ -0,0 +1,6 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<createBackup>
|
||||
<name>Backup 1</name>
|
||||
<backup_type>daily</backup_type>
|
||||
<rotation>1</rotation>
|
||||
</createBackup>
|
@ -0,0 +1,3 @@
|
||||
{
|
||||
"injectNetworkInfo": null
|
||||
}
|
@ -0,0 +1,2 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<injectNetworkInfo />
|
@ -0,0 +1,7 @@
|
||||
{
|
||||
"os-migrateLive": {
|
||||
"host": "%(hostname)s",
|
||||
"block_migration": false,
|
||||
"disk_over_commit": false
|
||||
}
|
||||
}
|
@ -0,0 +1,6 @@
|
||||
<?xml version="1.0" encoding="UTF-8" ?>
|
||||
<os-migrateLive>
|
||||
<host>%(hostname)s</host>
|
||||
<block_migration>false</block_migration>
|
||||
<disk_over_commit>false</disk_over_commit>
|
||||
</os-migrateLive>
|
@ -0,0 +1,3 @@
|
||||
{
|
||||
"lock": null
|
||||
}
|
@ -0,0 +1,2 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<lock />
|
@ -0,0 +1,3 @@
|
||||
{
|
||||
"migrate": null
|
||||
}
|
@ -0,0 +1,2 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<migrate />
|
@ -0,0 +1,3 @@
|
||||
{
|
||||
"pause": null
|
||||
}
|
@ -0,0 +1,2 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<pause/>
|
@ -0,0 +1,3 @@
|
||||
{
|
||||
"resetNetwork": null
|
||||
}
|
@ -0,0 +1,2 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<resetNetwork />
|
@ -0,0 +1,5 @@
|
||||
{
|
||||
"os-resetState": {
|
||||
"state": "active"
|
||||
}
|
||||
}
|
@ -0,0 +1,4 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<os-resetState>
|
||||
<state>active</state>
|
||||
</os-resetState>
|
@ -0,0 +1,5 @@
|
||||
{
|
||||
'os-resetState': {
|
||||
'state': 'active'
|
||||
}
|
||||
}
|
@ -0,0 +1,4 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<os-resetState>
|
||||
<state>active</state>
|
||||
</os-resetState>
|
@ -0,0 +1,3 @@
|
||||
{
|
||||
"resume": null
|
||||
}
|
@ -0,0 +1,2 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<resume />
|
@ -0,0 +1,3 @@
|
||||
{
|
||||
"suspend": null
|
||||
}
|
@ -0,0 +1,2 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<suspend />
|
@ -0,0 +1,3 @@
|
||||
{
|
||||
"unlock": null
|
||||
}
|
@ -0,0 +1,2 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<unlock />
|
@ -0,0 +1,3 @@
|
||||
{
|
||||
"unpause": null
|
||||
}
|
@ -0,0 +1,2 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<unpause />
|
@ -0,0 +1,16 @@
|
||||
{
|
||||
"server" : {
|
||||
"name" : "new-server-test",
|
||||
"imageRef" : "%(host)s/openstack/images/%(image_id)s",
|
||||
"flavorRef" : "%(host)s/openstack/flavors/1",
|
||||
"metadata" : {
|
||||
"My Server Name" : "Apache1"
|
||||
},
|
||||
"personality" : [
|
||||
{
|
||||
"path" : "/etc/banner.txt",
|
||||
"contents" : "ICAgICAgDQoiQSBjbG91ZCBkb2VzIG5vdCBrbm93IHdoeSBpdCBtb3ZlcyBpbiBqdXN0IHN1Y2ggYSBkaXJlY3Rpb24gYW5kIGF0IHN1Y2ggYSBzcGVlZC4uLkl0IGZlZWxzIGFuIGltcHVsc2lvbi4uLnRoaXMgaXMgdGhlIHBsYWNlIHRvIGdvIG5vdy4gQnV0IHRoZSBza3kga25vd3MgdGhlIHJlYXNvbnMgYW5kIHRoZSBwYXR0ZXJucyBiZWhpbmQgYWxsIGNsb3VkcywgYW5kIHlvdSB3aWxsIGtub3csIHRvbywgd2hlbiB5b3UgbGlmdCB5b3Vyc2VsZiBoaWdoIGVub3VnaCB0byBzZWUgYmV5b25kIGhvcml6b25zLiINCg0KLVJpY2hhcmQgQmFjaA=="
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
@ -0,0 +1,19 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<server xmlns="http://docs.openstack.org/compute/api/v1.1" imageRef="%(host)s/openstack/images/%(image_id)s" flavorRef="%(host)s/openstack/flavors/1" name="new-server-test">
|
||||
<metadata>
|
||||
<meta key="My Server Name">Apache1</meta>
|
||||
</metadata>
|
||||
<personality>
|
||||
<file path="/etc/banner.txt">
|
||||
ICAgICAgDQoiQSBjbG91ZCBkb2VzIG5vdCBrbm93IHdoeSBp
|
||||
dCBtb3ZlcyBpbiBqdXN0IHN1Y2ggYSBkaXJlY3Rpb24gYW5k
|
||||
IGF0IHN1Y2ggYSBzcGVlZC4uLkl0IGZlZWxzIGFuIGltcHVs
|
||||
c2lvbi4uLnRoaXMgaXMgdGhlIHBsYWNlIHRvIGdvIG5vdy4g
|
||||
QnV0IHRoZSBza3kga25vd3MgdGhlIHJlYXNvbnMgYW5kIHRo
|
||||
ZSBwYXR0ZXJucyBiZWhpbmQgYWxsIGNsb3VkcywgYW5kIHlv
|
||||
dSB3aWxsIGtub3csIHRvbywgd2hlbiB5b3UgbGlmdCB5b3Vy
|
||||
c2VsZiBoaWdoIGVub3VnaCB0byBzZWUgYmV5b25kIGhvcml6
|
||||
b25zLiINCg0KLVJpY2hhcmQgQmFjaA==
|
||||
</file>
|
||||
</personality>
|
||||
</server>
|
@ -0,0 +1,16 @@
|
||||
{
|
||||
"server": {
|
||||
"adminPass": "%(password)s",
|
||||
"id": "%(id)s",
|
||||
"links": [
|
||||
{
|
||||
"href": "%(host)s/v2/openstack/servers/%(uuid)s",
|
||||
"rel": "self"
|
||||
},
|
||||
{
|
||||
"href": "%(host)s/openstack/servers/%(uuid)s",
|
||||
"rel": "bookmark"
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
@ -0,0 +1,6 @@
|
||||
<?xml version='1.0' encoding='UTF-8'?>
|
||||
<server xmlns:atom="http://www.w3.org/2005/Atom" xmlns="http://docs.openstack.org/compute/api/v1.1" id="%(id)s" adminPass="%(password)s">
|
||||
<metadata/>
|
||||
<atom:link href="%(host)s/v2/openstack/servers/%(uuid)s" rel="self"/>
|
||||
<atom:link href="%(host)s/openstack/servers/%(uuid)s" rel="bookmark"/>
|
||||
</server>
|
@ -31,6 +31,7 @@ from nova.openstack.common import importutils
|
||||
from nova.openstack.common import jsonutils
|
||||
from nova.openstack.common.log import logging
|
||||
from nova.openstack.common import timeutils
|
||||
from nova.scheduler import driver
|
||||
from nova import test
|
||||
from nova.tests import fake_network
|
||||
from nova.tests.image import fake
|
||||
@ -1306,4 +1307,110 @@ class AvailabilityZoneJsonTest(ServersSampleBase):
|
||||
|
||||
|
||||
class AvailabilityZoneXmlTest(AvailabilityZoneJsonTest):
|
||||
ctype = "xml"
|
||||
|
||||
|
||||
class AdminActionsSamplesJsonTest(ServersSampleBase):
|
||||
extension_name = ("nova.api.openstack.compute.contrib.admin_actions."
|
||||
"Admin_actions")
|
||||
|
||||
def setUp(self):
|
||||
"""setUp Method for AdminActions api samples extension
|
||||
This method creates the server that will be used in each tests"""
|
||||
super(AdminActionsSamplesJsonTest, self).setUp()
|
||||
self.uuid = self._post_server()
|
||||
|
||||
def test_post_pause(self):
|
||||
"""Get api samples to pause server request"""
|
||||
response = self._do_post('servers/%s/action' % self.uuid,
|
||||
'admin-actions-pause', {})
|
||||
self.assertEqual(response.status, 202)
|
||||
|
||||
def test_post_unpause(self):
|
||||
"""Get api samples to unpause server request"""
|
||||
self.test_post_pause()
|
||||
response = self._do_post('servers/%s/action' % self.uuid,
|
||||
'admin-actions-unpause', {})
|
||||
self.assertEqual(response.status, 202)
|
||||
|
||||
def test_post_suspend(self):
|
||||
"""Get api samples to suspend server request"""
|
||||
response = self._do_post('servers/%s/action' % self.uuid,
|
||||
'admin-actions-suspend', {})
|
||||
self.assertEqual(response.status, 202)
|
||||
|
||||
def test_post_resume(self):
|
||||
"""Get api samples to server resume request"""
|
||||
self.test_post_suspend()
|
||||
response = self._do_post('servers/%s/action' % self.uuid,
|
||||
'admin-actions-resume', {})
|
||||
self.assertEqual(response.status, 202)
|
||||
|
||||
def test_post_migrate(self):
|
||||
"""Get api samples to migrate server request"""
|
||||
response = self._do_post('servers/%s/action' % self.uuid,
|
||||
'admin-actions-migrate', {})
|
||||
self.assertEqual(response.status, 202)
|
||||
|
||||
def test_post_reset_network(self):
|
||||
"""Get api samples to reset server network request"""
|
||||
response = self._do_post('servers/%s/action' % self.uuid,
|
||||
'admin-actions-reset-network', {})
|
||||
self.assertEqual(response.status, 202)
|
||||
|
||||
def test_post_inject_network_info(self):
|
||||
"""Get api samples to inject network info request"""
|
||||
response = self._do_post('servers/%s/action' % self.uuid,
|
||||
'admin-actions-inject-network-info', {})
|
||||
self.assertEqual(response.status, 202)
|
||||
|
||||
def test_post_lock_server(self):
|
||||
"""Get api samples to lock server request"""
|
||||
response = self._do_post('servers/%s/action' % self.uuid,
|
||||
'admin-actions-lock-server', {})
|
||||
self.assertEqual(response.status, 202)
|
||||
|
||||
def test_post_unlock_server(self):
|
||||
"""Get api samples to unlock server request"""
|
||||
self.test_post_lock_server()
|
||||
response = self._do_post('servers/%s/action' % self.uuid,
|
||||
'admin-actions-unlock-server', {})
|
||||
self.assertEqual(response.status, 202)
|
||||
|
||||
def test_post_backup_server(self):
|
||||
"""Get api samples to backup server request"""
|
||||
def image_details(self, context, **kwargs):
|
||||
"""This stub is specifically used on the backup action."""
|
||||
# NOTE(maurosr): I've added this simple stub cause backup action
|
||||
# was trapped in infinite loop during fetch image phase since the
|
||||
# fake Image Service always returns the same set of images
|
||||
return None
|
||||
|
||||
self.stubs.Set(fake._FakeImageService, 'detail', image_details)
|
||||
|
||||
response = self._do_post('servers/%s/action' % self.uuid,
|
||||
'admin-actions-backup-server', {})
|
||||
self.assertEqual(response.status, 202)
|
||||
|
||||
def test_post_live_migrate_server(self):
|
||||
"""Get api samples to server live migrate request"""
|
||||
def fake_live_migration_dest_check(self, context, instance_ref, dest):
|
||||
"""Skip live migration scheduler checks"""
|
||||
return
|
||||
self.stubs.Set(driver.Scheduler, '_live_migration_dest_check',
|
||||
fake_live_migration_dest_check)
|
||||
|
||||
response = self._do_post('servers/%s/action' % self.uuid,
|
||||
'admin-actions-live-migrate',
|
||||
{'hostname': self.compute.host})
|
||||
self.assertEqual(response.status, 202)
|
||||
|
||||
def test_post_reset_state(self):
|
||||
"""get api samples to server reset state request"""
|
||||
response = self._do_post('servers/%s/action' % self.uuid,
|
||||
'admin-actions-reset-server-state', {})
|
||||
self.assertEqual(response.status, 202)
|
||||
|
||||
|
||||
class AdminActionsSamplesXmlTest(AdminActionsSamplesJsonTest):
|
||||
ctype = 'xml'
|
||||
|
Loading…
Reference in New Issue
Block a user