Skip to content

Commit 13dfacc

Browse files
Jenkinsopenstack-gerrit
authored andcommitted
Merge "Add "openstack server shelve" into OSC"
2 parents b42396d + a41a8c4 commit 13dfacc

5 files changed

Lines changed: 96 additions & 0 deletions

File tree

doc/source/command-objects/server.rst

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -495,6 +495,21 @@ Resume server(s)
495495
496496
Server(s) to resume (name or ID)
497497
498+
server shelve
499+
-------------
500+
501+
Shelve server(s)
502+
503+
.. program:: server shelve
504+
.. code:: bash
505+
506+
os server shelve
507+
<server> [<server> ...]
508+
509+
.. describe:: <server>
510+
511+
Server(s) to shelve (name or ID)
512+
498513
server set
499514
----------
500515

doc/source/commands.rst

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -183,6 +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
186187
* ``show`` - display detailed information about the specific object
187188
* ``start`` (``stop``) - start one or more servers
188189
* ``stop`` (``start``) - stop one or more servers

openstackclient/compute/v2/server.py

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1389,6 +1389,31 @@ def take_action(self, parsed_args):
13891389
return zip(*sorted(six.iteritems(data)))
13901390

13911391

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+
13921417
class SshServer(command.Command):
13931418
"""Ssh to server"""
13941419

openstackclient/tests/compute/v2/test_server.py

Lines changed: 54 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -766,3 +766,57 @@ def test_get_ip_address(self):
766766
server._get_ip_address, self.OLD, 'public', [4, 6])
767767
self.assertRaises(exceptions.CommandError,
768768
server._get_ip_address, self.OLD, 'private', [6])
769+
770+
771+
class TestShelveServer(TestServer):
772+
773+
def setUp(self):
774+
super(TestShelveServer, self).setUp()
775+
776+
# Get the command object to test
777+
self.cmd = server.ShelveServer(self.app, None)
778+
779+
# Set shelve method to be tested.
780+
self.methods = {
781+
'shelve': None,
782+
}
783+
784+
def setup_servers_mock(self, count=1):
785+
servers = fakes.FakeServer.create_servers(methods=self.methods,
786+
count=count)
787+
788+
self.servers_mock.get = fakes.FakeServer.get_servers(servers, 1)
789+
790+
return servers
791+
792+
def test_shelve_one_server(self):
793+
server = self.setup_servers_mock(1)[0]
794+
795+
arglist = [
796+
server.id,
797+
]
798+
verifylist = [
799+
('server', [server.id]),
800+
]
801+
parsed_args = self.check_parser(self.cmd, arglist, verifylist)
802+
803+
self.cmd.take_action(parsed_args)
804+
805+
server.shelve.assert_called_with()
806+
807+
def test_shelve_multi_servers(self):
808+
servers = self.setup_servers_mock(3)
809+
arglist = []
810+
verifylist = []
811+
812+
for i in range(0, len(servers)):
813+
arglist.append(servers[i].id)
814+
verifylist = [
815+
('server', arglist),
816+
]
817+
parsed_args = self.check_parser(self.cmd, arglist, verifylist)
818+
819+
self.cmd.take_action(parsed_args)
820+
821+
for i in range(0, len(servers)):
822+
servers[i].shelve.assert_called_with()

setup.cfg

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -130,6 +130,7 @@ openstack.compute.v2 =
130130
server_resize = openstackclient.compute.v2.server:ResizeServer
131131
server_resume = openstackclient.compute.v2.server:ResumeServer
132132
server_set = openstackclient.compute.v2.server:SetServer
133+
server_shelve = openstackclient.compute.v2.server:ShelveServer
133134
server_show = openstackclient.compute.v2.server:ShowServer
134135
server_ssh = openstackclient.compute.v2.server:SshServer
135136
server_start = openstackclient.compute.v2.server:StartServer

0 commit comments

Comments
 (0)