summaryrefslogtreecommitdiff
path: root/openstackclient/compute/v2/server_group.py
diff options
context:
space:
mode:
authorRui Chen <chenrui.momo@gmail.com>2016-03-26 18:15:31 +0800
committerRui Chen <chenrui.momo@gmail.com>2016-04-20 03:24:58 +0000
commita06bb28bcc86ed6e99f78c2d1b2a90d4a93a77b2 (patch)
treeb3ac96587aad8980a970002d40045445dcee6d25 /openstackclient/compute/v2/server_group.py
parent4639148b1dc059efab0d00a886e3f05f547a439f (diff)
downloadpython-openstackclient-a06bb28bcc86ed6e99f78c2d1b2a90d4a93a77b2.tar.gz
Add "server group create" command
Support compute v2 "server group create" command in OSC. Implements: blueprint nova-server-group-support Partial-Bug: #1542171 Change-Id: I96ffb07764d3adb715e048943cfee3b879c280f6
Diffstat (limited to 'openstackclient/compute/v2/server_group.py')
-rw-r--r--openstackclient/compute/v2/server_group.py68
1 files changed, 68 insertions, 0 deletions
diff --git a/openstackclient/compute/v2/server_group.py b/openstackclient/compute/v2/server_group.py
new file mode 100644
index 00000000..4d0baddc
--- /dev/null
+++ b/openstackclient/compute/v2/server_group.py
@@ -0,0 +1,68 @@
+# Copyright 2016 Huawei, Inc. All rights reserved.
+#
+# Licensed under the Apache License, Version 2.0 (the "License"); you may
+# not use this file except in compliance with the License. You may obtain
+# a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+# License for the specific language governing permissions and limitations
+# under the License.
+#
+
+"""Compute v2 Server Group action implementations"""
+
+from openstackclient.common import command
+from openstackclient.common import utils
+
+
+_formatters = {
+ 'policies': utils.format_list,
+ 'members': utils.format_list,
+}
+
+
+def _get_columns(info):
+ columns = list(info.keys())
+ if 'metadata' in columns:
+ # NOTE(RuiChen): The metadata of server group is always empty since API
+ # compatible, so hide it in order to avoid confusion.
+ columns.remove('metadata')
+ return tuple(sorted(columns))
+
+
+class CreateServerGroup(command.ShowOne):
+ """Create a new server group."""
+
+ def get_parser(self, prog_name):
+ parser = super(CreateServerGroup, self).get_parser(prog_name)
+ parser.add_argument(
+ 'name',
+ metavar='<name>',
+ help='New server group name',
+ )
+ parser.add_argument(
+ '--policy',
+ metavar='<policy>',
+ action='append',
+ required=True,
+ help='Add a policy to <name> '
+ '(repeat option to add multiple policies)',
+ )
+ return parser
+
+ def take_action(self, parsed_args):
+ compute_client = self.app.client_manager.compute
+ info = {}
+ server_group = compute_client.server_groups.create(
+ name=parsed_args.name,
+ policies=parsed_args.policy)
+ info.update(server_group._info)
+
+ columns = _get_columns(info)
+ data = utils.get_dict_properties(info, columns,
+ formatters=_formatters)
+ return columns, data