Skip to content

Commit 0cc0b8d

Browse files
Jenkinsopenstack-gerrit
authored andcommitted
Merge "Add compute service delete"
2 parents c396b69 + d1bc15f commit 0cc0b8d

6 files changed

Lines changed: 254 additions & 0 deletions

File tree

Lines changed: 100 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,100 @@
1+
=============
2+
compute agent
3+
=============
4+
5+
Compute v2
6+
7+
compute agent create
8+
--------------------
9+
10+
Create compute agent
11+
12+
.. program:: compute agent create
13+
.. code:: bash
14+
15+
os compute agent create
16+
<os> <architecture> <version> <url> <md5hash>
17+
<hypervisor>
18+
19+
.. _compute_agent-create:
20+
.. describe:: <os>
21+
22+
Type of OS
23+
24+
.. describe:: <architecture>
25+
26+
Type of architecture
27+
28+
.. describe:: <version>
29+
30+
Version
31+
32+
.. describe:: <url>
33+
34+
URL
35+
36+
.. describe:: <md5hash>
37+
38+
MD5 hash
39+
40+
.. describe:: <hypervisor>
41+
42+
Type of hypervisor
43+
44+
compute agent delete
45+
--------------------
46+
47+
Delete compute agent command
48+
49+
.. program:: compute agent delete
50+
.. code:: bash
51+
52+
os compute agent delete <id>
53+
54+
.. _compute_agent-delete:
55+
.. describe:: <id>
56+
57+
ID of agent to delete
58+
59+
compute agent list
60+
------------------
61+
62+
List compute agent command
63+
64+
.. program:: compute agent list
65+
.. code:: bash
66+
67+
os compute agent list [--hypervisor <hypervisor>]
68+
69+
.. _compute_agent-list:
70+
.. describe:: --hypervisor <hypervisor>
71+
72+
Optional type of hypervisor
73+
74+
compute agent set
75+
-----------------
76+
77+
Set compute agent command
78+
79+
.. program:: agent set
80+
.. code:: bash
81+
82+
os compute agent set
83+
<id> <version> <url> <md5hash>
84+
85+
.. _compute_agent-set:
86+
.. describe:: <id>
87+
88+
ID of the agent
89+
90+
.. describe:: <version>
91+
92+
Version of the agent
93+
94+
.. describe:: <url>
95+
96+
URL
97+
98+
.. describe:: <md5hash>
99+
100+
MD5 hash
Lines changed: 73 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,73 @@
1+
===============
2+
compute service
3+
===============
4+
5+
Compute v2
6+
7+
compute service delete
8+
----------------------
9+
10+
Delete service command
11+
12+
.. program:: compute service delete
13+
.. code:: bash
14+
15+
os compute service delete
16+
<service>
17+
18+
.. _compute-service-delete:
19+
.. describe:: <service>
20+
21+
Compute service to delete (ID only)
22+
23+
compute service list
24+
--------------------
25+
26+
List service command
27+
28+
.. program:: compute service list
29+
.. code:: bash
30+
31+
os compute service list
32+
[--host <host>]
33+
[--service <service>]
34+
35+
.. _compute-service-list:
36+
.. describe:: --host <host>
37+
38+
Name of host
39+
40+
.. describe:: --service <service>
41+
42+
Name of service
43+
44+
45+
compute service set
46+
-------------------
47+
48+
Set service command
49+
50+
.. program:: compute service set
51+
.. code:: bash
52+
53+
os compute service list
54+
[--enable | --disable]
55+
<host> <service>
56+
57+
.. _compute-service-set:
58+
.. describe:: --enable
59+
60+
Enable service
61+
62+
.. describe:: --disable
63+
64+
Disable service
65+
66+
.. describe:: <host>
67+
68+
Name of host
69+
70+
.. describe:: <service>
71+
72+
Name of service
73+

openstackclient/compute/v2/service.py

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,11 +17,33 @@
1717

1818
import logging
1919

20+
from cliff import command
2021
from cliff import lister
2122

2223
from openstackclient.common import utils
2324

2425

26+
class DeleteService(command.Command):
27+
"""Delete service command"""
28+
29+
log = logging.getLogger(__name__ + ".DeleteService")
30+
31+
def get_parser(self, prog_name):
32+
parser = super(DeleteService, self).get_parser(prog_name)
33+
parser.add_argument(
34+
"service",
35+
metavar="<service>",
36+
help="Compute service to delete (ID only)")
37+
return parser
38+
39+
def take_action(self, parsed_args):
40+
self.log.debug("take_action(%s)", parsed_args)
41+
compute_client = self.app.client_manager.compute
42+
43+
compute_client.services.delete(parsed_args.service)
44+
return
45+
46+
2547
class ListService(lister.Lister):
2648
"""List service command"""
2749

openstackclient/tests/compute/v2/fakes.py

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,8 @@
2525
server_id = 'serv1'
2626
server_name = 'waiter'
2727

28+
service_id = '1'
29+
2830
SERVER = {
2931
'id': server_id,
3032
'name': server_name,
@@ -85,6 +87,8 @@ def __init__(self, **kwargs):
8587
self.images.resource_class = fakes.FakeResource(None, {})
8688
self.servers = mock.Mock()
8789
self.servers.resource_class = fakes.FakeResource(None, {})
90+
self.services = mock.Mock()
91+
self.services.resource_class = fakes.FakeResource(None, {})
8892
self.extensions = mock.Mock()
8993
self.extensions.resource_class = fakes.FakeResource(None, {})
9094
self.flavors = mock.Mock()
Lines changed: 54 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,54 @@
1+
# Copyright 2015 Mirantis, Inc.
2+
#
3+
# Licensed under the Apache License, Version 2.0 (the "License"); you may
4+
# not use this file except in compliance with the License. You may obtain
5+
# a copy of the License at
6+
#
7+
# http://www.apache.org/licenses/LICENSE-2.0
8+
#
9+
# Unless required by applicable law or agreed to in writing, software
10+
# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
11+
# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
12+
# License for the specific language governing permissions and limitations
13+
# under the License.
14+
#
15+
16+
from openstackclient.compute.v2 import service
17+
from openstackclient.tests.compute.v2 import fakes as compute_fakes
18+
19+
20+
class TestService(compute_fakes.TestComputev2):
21+
22+
def setUp(self):
23+
super(TestService, self).setUp()
24+
25+
# Get a shortcut to the ServiceManager Mock
26+
self.service_mock = self.app.client_manager.compute.services
27+
self.service_mock.reset_mock()
28+
29+
30+
class TestServiceDelete(TestService):
31+
32+
def setUp(self):
33+
super(TestServiceDelete, self).setUp()
34+
35+
self.service_mock.delete.return_value = None
36+
37+
# Get the command object to test
38+
self.cmd = service.DeleteService(self.app, None)
39+
40+
def test_service_delete_no_options(self):
41+
arglist = [
42+
compute_fakes.service_id,
43+
]
44+
verifylist = [
45+
('service', compute_fakes.service_id),
46+
]
47+
parsed_args = self.check_parser(self.cmd, arglist, verifylist)
48+
49+
# DisplayCommandBase.take_action() returns two tuples
50+
self.cmd.take_action(parsed_args)
51+
52+
self.service_mock.delete.assert_called_with(
53+
compute_fakes.service_id,
54+
)

setup.cfg

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -66,6 +66,7 @@ openstack.compute.v2 =
6666
aggregate_set = openstackclient.compute.v2.aggregate:SetAggregate
6767
aggregate_show = openstackclient.compute.v2.aggregate:ShowAggregate
6868

69+
compute_service_delete = openstackclient.compute.v2.service:DeleteService
6970
compute_service_list = openstackclient.compute.v2.service:ListService
7071
compute_service_set = openstackclient.compute.v2.service:SetService
7172

0 commit comments

Comments
 (0)