Skip to content

Commit b920245

Browse files
Jenkinsopenstack-gerrit
authored andcommitted
Merge "Add "openstack server unshelve" into OSC"
2 parents 78a7eaa + af5dbf7 commit b920245

5 files changed

Lines changed: 108 additions & 46 deletions

File tree

doc/source/command-objects/server.rst

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -720,3 +720,18 @@ Unset server properties
720720
.. describe:: <server>
721721
722722
Server (name or ID)
723+
724+
server unshelve
725+
---------------
726+
727+
Unshelve server(s)
728+
729+
.. program:: server unshelve
730+
.. code:: bash
731+
732+
os server unshelve
733+
<server> [<server> ...]
734+
735+
.. describe:: <server>
736+
737+
Server(s) to unshelve (name or ID)

doc/source/commands.rst

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -183,7 +183,7 @@ Those actions with an opposite action are noted in parens if applicable.
183183
* ``revoke`` (``issue``) - revoke a token
184184
* ``save`` - download an object locally
185185
* ``set`` (``unset``) - set a property on the object, formerly called metadata
186-
* ``shelve`` (``unshelve``) - shelve one or more server
186+
* ``shelve`` (``unshelve``) - shelve one or more servers
187187
* ``show`` - display detailed information about the specific object
188188
* ``start`` (``stop``) - start one or more servers
189189
* ``stop`` (``start``) - stop one or more servers
@@ -192,6 +192,7 @@ Those actions with an opposite action are noted in parens if applicable.
192192
* ``unpause`` (``pause``) - return one or more paused servers to running state
193193
* ``unrescue`` (``rescue``) - return a server to normal boot mode
194194
* ``unset`` (``set``) - remove an attribute of the object
195+
* ``unshelve`` (``shelve``) - unshelve one or more servers
195196

196197

197198
Implementation

openstackclient/compute/v2/server.py

Lines changed: 50 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -1352,6 +1352,31 @@ def take_action(self, parsed_args):
13521352
raise exceptions.CommandError(msg)
13531353

13541354

1355+
class ShelveServer(command.Command):
1356+
"""Shelve server(s)"""
1357+
1358+
log = logging.getLogger(__name__ + '.ShelveServer')
1359+
1360+
def get_parser(self, prog_name):
1361+
parser = super(ShelveServer, self).get_parser(prog_name)
1362+
parser.add_argument(
1363+
'server',
1364+
metavar='<server>',
1365+
nargs='+',
1366+
help=_('Server(s) to shelve (name or ID)'),
1367+
)
1368+
return parser
1369+
1370+
@utils.log_method(log)
1371+
def take_action(self, parsed_args):
1372+
compute_client = self.app.client_manager.compute
1373+
for server in parsed_args.server:
1374+
utils.find_resource(
1375+
compute_client.servers,
1376+
server,
1377+
).shelve()
1378+
1379+
13551380
class ShowServer(show.ShowOne):
13561381
"""Show server details"""
13571382

@@ -1389,31 +1414,6 @@ def take_action(self, parsed_args):
13891414
return zip(*sorted(six.iteritems(data)))
13901415

13911416

1392-
class ShelveServer(command.Command):
1393-
"""Shelve server(s)"""
1394-
1395-
log = logging.getLogger(__name__ + '.ShelveServer')
1396-
1397-
def get_parser(self, prog_name):
1398-
parser = super(ShelveServer, self).get_parser(prog_name)
1399-
parser.add_argument(
1400-
'server',
1401-
metavar='<server>',
1402-
nargs='+',
1403-
help=_('Server(s) to shelve (name or ID)'),
1404-
)
1405-
return parser
1406-
1407-
@utils.log_method(log)
1408-
def take_action(self, parsed_args):
1409-
compute_client = self.app.client_manager.compute
1410-
for server in parsed_args.server:
1411-
utils.find_resource(
1412-
compute_client.servers,
1413-
server,
1414-
).shelve()
1415-
1416-
14171417
class SshServer(command.Command):
14181418
"""Ssh to server"""
14191419

@@ -1748,3 +1748,28 @@ def take_action(self, parsed_args):
17481748
server,
17491749
parsed_args.property,
17501750
)
1751+
1752+
1753+
class UnshelveServer(command.Command):
1754+
"""Unshelve server(s)"""
1755+
1756+
log = logging.getLogger(__name__ + '.UnshelveServer')
1757+
1758+
def get_parser(self, prog_name):
1759+
parser = super(UnshelveServer, self).get_parser(prog_name)
1760+
parser.add_argument(
1761+
'server',
1762+
metavar='<server>',
1763+
nargs='+',
1764+
help=_('Server(s) to unshelve (name or ID)'),
1765+
)
1766+
return parser
1767+
1768+
@utils.log_method(log)
1769+
def take_action(self, parsed_args):
1770+
compute_client = self.app.client_manager.compute
1771+
for server in parsed_args.server:
1772+
utils.find_resource(
1773+
compute_client.servers,
1774+
server,
1775+
).unshelve()

openstackclient/tests/compute/v2/test_server.py

Lines changed: 40 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -792,6 +792,26 @@ def test_server_resume_multi_servers(self):
792792
self.run_method_with_servers('resume', 3)
793793

794794

795+
class TestServerShelve(TestServer):
796+
797+
def setUp(self):
798+
super(TestServerShelve, self).setUp()
799+
800+
# Get the command object to test
801+
self.cmd = server.ShelveServer(self.app, None)
802+
803+
# Set shelve method to be tested.
804+
self.methods = {
805+
'shelve': None,
806+
}
807+
808+
def test_shelve_one_server(self):
809+
self.run_method_with_servers('shelve', 1)
810+
811+
def test_shelve_multi_servers(self):
812+
self.run_method_with_servers('shelve', 3)
813+
814+
795815
class TestServerStart(TestServer):
796816

797817
def setUp(self):
@@ -892,6 +912,26 @@ def test_server_unpause_multi_servers(self):
892912
self.run_method_with_servers('unpause', 3)
893913

894914

915+
class TestServerUnshelve(TestServer):
916+
917+
def setUp(self):
918+
super(TestServerUnshelve, self).setUp()
919+
920+
# Get the command object to test
921+
self.cmd = server.UnshelveServer(self.app, None)
922+
923+
# Set unshelve method to be tested.
924+
self.methods = {
925+
'unshelve': None,
926+
}
927+
928+
def test_unshelve_one_server(self):
929+
self.run_method_with_servers('unshelve', 1)
930+
931+
def test_unshelve_multi_servers(self):
932+
self.run_method_with_servers('unshelve', 3)
933+
934+
895935
class TestServerGeneral(testtools.TestCase):
896936
OLD = {
897937
'private': [
@@ -942,23 +982,3 @@ def test_get_ip_address(self):
942982
server._get_ip_address, self.OLD, 'public', [4, 6])
943983
self.assertRaises(exceptions.CommandError,
944984
server._get_ip_address, self.OLD, 'private', [6])
945-
946-
947-
class TestShelveServer(TestServer):
948-
949-
def setUp(self):
950-
super(TestShelveServer, self).setUp()
951-
952-
# Get the command object to test
953-
self.cmd = server.ShelveServer(self.app, None)
954-
955-
# Set shelve method to be tested.
956-
self.methods = {
957-
'shelve': None,
958-
}
959-
960-
def test_shelve_one_server(self):
961-
self.run_method_with_servers('shelve', 1)
962-
963-
def test_shelve_multi_servers(self):
964-
self.run_method_with_servers('shelve', 3)

setup.cfg

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -140,6 +140,7 @@ openstack.compute.v2 =
140140
server_unpause = openstackclient.compute.v2.server:UnpauseServer
141141
server_unrescue = openstackclient.compute.v2.server:UnrescueServer
142142
server_unset = openstackclient.compute.v2.server:UnsetServer
143+
server_unshelve = openstackclient.compute.v2.server:UnshelveServer
143144

144145
usage_list = openstackclient.compute.v2.usage:ListUsage
145146
usage_show = openstackclient.compute.v2.usage:ShowUsage

0 commit comments

Comments
 (0)