Merge "Add compute support server backup operation"
This commit is contained in:
commit
3fcb1c52ff
@ -29,6 +29,7 @@ Server Operations
|
|||||||
.. automethod:: openstack.compute.v2._proxy.Proxy.delete_server_metadata
|
.. automethod:: openstack.compute.v2._proxy.Proxy.delete_server_metadata
|
||||||
.. automethod:: openstack.compute.v2._proxy.Proxy.wait_for_server
|
.. automethod:: openstack.compute.v2._proxy.Proxy.wait_for_server
|
||||||
.. automethod:: openstack.compute.v2._proxy.Proxy.create_server_image
|
.. automethod:: openstack.compute.v2._proxy.Proxy.create_server_image
|
||||||
|
.. automethod:: openstack.compute.v2._proxy.Proxy.backup_server
|
||||||
|
|
||||||
Network Actions
|
Network Actions
|
||||||
***************
|
***************
|
||||||
|
@ -620,6 +620,22 @@ class Proxy(proxy2.BaseProxy):
|
|||||||
server = self._get_resource(_server.Server, server)
|
server = self._get_resource(_server.Server, server)
|
||||||
server.remove_floating_ip(self._session, address)
|
server.remove_floating_ip(self._session, address)
|
||||||
|
|
||||||
|
def backup_server(self, server, name, backup_type, rotation):
|
||||||
|
"""Backup a server
|
||||||
|
|
||||||
|
:param server: Either the ID of a server or a
|
||||||
|
:class:`~openstack.compute.v2.server.Server` instance.
|
||||||
|
:param name: The name of the backup image.
|
||||||
|
:param backup_type: The type of the backup, for example, daily.
|
||||||
|
:param rotation: The rotation of the back up image, the oldest
|
||||||
|
image will be removed when image count exceed
|
||||||
|
the rotation count.
|
||||||
|
|
||||||
|
:returns: None
|
||||||
|
"""
|
||||||
|
server = self._get_resource(_server.Server, server)
|
||||||
|
server.backup(self._session, name, backup_type, rotation)
|
||||||
|
|
||||||
def pause_server(self, server):
|
def pause_server(self, server):
|
||||||
"""Pauses a server and changes its status to ``PAUSED``.
|
"""Pauses a server and changes its status to ``PAUSED``.
|
||||||
|
|
||||||
|
@ -274,6 +274,16 @@ class Server(resource2.Resource, metadata.MetadataMixin):
|
|||||||
body = {"removeFloatingIp": {"address": address}}
|
body = {"removeFloatingIp": {"address": address}}
|
||||||
self._action(session, body)
|
self._action(session, body)
|
||||||
|
|
||||||
|
def backup(self, session, name, backup_type, rotation):
|
||||||
|
body = {
|
||||||
|
"createBackup": {
|
||||||
|
"name": name,
|
||||||
|
"backup_type": backup_type,
|
||||||
|
"rotation": rotation
|
||||||
|
}
|
||||||
|
}
|
||||||
|
self._action(session, body)
|
||||||
|
|
||||||
def pause(self, session):
|
def pause(self, session):
|
||||||
body = {"pause": None}
|
body = {"pause": None}
|
||||||
self._action(session, body)
|
self._action(session, body)
|
||||||
|
@ -318,6 +318,12 @@ class TestComputeProxy(test_proxy_base2.TestProxyBase):
|
|||||||
method_args=["value", "address"],
|
method_args=["value", "address"],
|
||||||
expected_args=["address"])
|
expected_args=["address"])
|
||||||
|
|
||||||
|
def test_server_backup(self):
|
||||||
|
self._verify("openstack.compute.v2.server.Server.backup",
|
||||||
|
self.proxy.backup_server,
|
||||||
|
method_args=["value", "name", "daily", 1],
|
||||||
|
expected_args=["name", "daily", 1])
|
||||||
|
|
||||||
def test_server_pause(self):
|
def test_server_pause(self):
|
||||||
self._verify("openstack.compute.v2.server.Server.pause",
|
self._verify("openstack.compute.v2.server.Server.pause",
|
||||||
self.proxy.pause_server,
|
self.proxy.pause_server,
|
||||||
|
@ -424,6 +424,19 @@ class TestServer(testtools.TestCase):
|
|||||||
self.sess.post.assert_called_with(
|
self.sess.post.assert_called_with(
|
||||||
url, endpoint_filter=sot.service, json=body, headers=headers)
|
url, endpoint_filter=sot.service, json=body, headers=headers)
|
||||||
|
|
||||||
|
def test_backup(self):
|
||||||
|
sot = server.Server(**EXAMPLE)
|
||||||
|
|
||||||
|
res = sot.backup(self.sess, "name", "daily", 1)
|
||||||
|
|
||||||
|
self.assertIsNone(res)
|
||||||
|
url = 'servers/IDENTIFIER/action'
|
||||||
|
body = {"createBackup": {"name": "name", "backup_type": "daily",
|
||||||
|
"rotation": 1}}
|
||||||
|
headers = {'Accept': ''}
|
||||||
|
self.sess.post.assert_called_with(
|
||||||
|
url, endpoint_filter=sot.service, json=body, headers=headers)
|
||||||
|
|
||||||
def test_pause(self):
|
def test_pause(self):
|
||||||
sot = server.Server(**EXAMPLE)
|
sot = server.Server(**EXAMPLE)
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user