Add compute support server backup operation

Implements: blueprint add-compute-backup

Change-Id: I8349cc5a16f39caa1d68db88b89313cf4d3ed416
Signed-off-by: Yuanbin.Chen <cybing4@gmail.com>
This commit is contained in:
Yuanbin.Chen 2017-06-05 23:52:39 +08:00 committed by Brian Curtin
parent 7d85189395
commit 6961772a4f
5 changed files with 46 additions and 0 deletions

View File

@ -29,6 +29,7 @@ Server Operations
.. automethod:: openstack.compute.v2._proxy.Proxy.delete_server_metadata
.. automethod:: openstack.compute.v2._proxy.Proxy.wait_for_server
.. automethod:: openstack.compute.v2._proxy.Proxy.create_server_image
.. automethod:: openstack.compute.v2._proxy.Proxy.backup_server
Network Actions
***************

View File

@ -620,6 +620,22 @@ class Proxy(proxy2.BaseProxy):
server = self._get_resource(_server.Server, server)
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):
"""Pauses a server and changes its status to ``PAUSED``.

View File

@ -274,6 +274,16 @@ class Server(resource2.Resource, metadata.MetadataMixin):
body = {"removeFloatingIp": {"address": address}}
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):
body = {"pause": None}
self._action(session, body)

View File

@ -318,6 +318,12 @@ class TestComputeProxy(test_proxy_base2.TestProxyBase):
method_args=["value", "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):
self._verify("openstack.compute.v2.server.Server.pause",
self.proxy.pause_server,

View File

@ -424,6 +424,19 @@ class TestServer(testtools.TestCase):
self.sess.post.assert_called_with(
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):
sot = server.Server(**EXAMPLE)