Add security group commands

* Add security group: create, delete, list, set, show
* Add server: add secgroup, remove secgroup
* Add security group rule: create, delete, list
* Add Oslo's strutils and gettextutils

* Adds parseractions.RangeAction() to handle option arguments of either a single number
  or a range of numbers: '--port 25'  or '--port 1024:65535'

Blueprint: nova-client

Change-Id: Iad2de1b273ba29197709fc4c6a1036b4ae99725f
This commit is contained in:
Dean Troyer
2013-07-12 15:49:03 -05:00
parent 9829477bec
commit f89d675963
3 changed files with 39 additions and 1 deletions

View File

@@ -32,3 +32,27 @@ class KeyValueAction(argparse.Action):
getattr(namespace, self.dest, {}).update([values.split('=', 1)]) getattr(namespace, self.dest, {}).update([values.split('=', 1)])
else: else:
getattr(namespace, self.dest, {}).pop(values, None) getattr(namespace, self.dest, {}).pop(values, None)
class RangeAction(argparse.Action):
"""A custom action to parse a single value or a range of values."""
def __call__(self, parser, namespace, values, option_string=None):
range = values.split(':')
if len(range) == 0:
# Nothing passed, return a zero default
setattr(namespace, self.dest, (0, 0))
elif len(range) == 1:
# Only a single value is present
setattr(namespace, self.dest, (int(range[0]), int(range[0])))
elif len(range) == 2:
# Range of two values
if int(range[0]) <= int(range[1]):
setattr(namespace, self.dest, (int(range[0]), int(range[1])))
else:
msg = "Invalid range, %s is not less than %s" % \
(range[0], range[1])
raise argparse.ArgumentError(self, msg)
else:
# Too many values
msg = "Invalid range, too many values"
raise argparse.ArgumentError(self, msg)

View File

@@ -16,11 +16,13 @@
"""Common client utilities""" """Common client utilities"""
import os import os
import six
import sys import sys
import time import time
import uuid import uuid
from openstackclient.common import exceptions from openstackclient.common import exceptions
from openstackclient.openstack.common import strutils
def find_resource(manager, name_or_id): def find_resource(manager, name_or_id):
@@ -84,7 +86,8 @@ def format_dict(data):
output = "" output = ""
for s in data: for s in data:
output = output + s + "='" + data[s] + "', " output = output + s + "='" + \
strutils.safe_encode(six.text_type(data[s])) + "', "
return output[:-2] return output[:-2]

View File

@@ -210,6 +210,16 @@ openstack.compute.v2 =
project_usage_list = openstackclient.compute.v2.usage:ListUsage project_usage_list = openstackclient.compute.v2.usage:ListUsage
security_group_create = openstackclient.compute.v2.secgroup:CreateSecurityGroup
security_group_delete = openstackclient.compute.v2.secgroup:DeleteSecurityGroup
security_group_list = openstackclient.compute.v2.secgroup:ListSecurityGroup
security_group_set = openstackclient.compute.v2.secgroup:SetSecurityGroup
security_group_show = openstackclient.compute.v2.secgroup:ShowSecurityGroup
security_group_rule_create = openstackclient.compute.v2.secgroup:CreateSecurityGroupRule
security_group_rule_delete = openstackclient.compute.v2.secgroup:DeleteSecurityGroupRule
security_group_rule_list = openstackclient.compute.v2.secgroup:ListSecurityGroupRule
server_add_security_group = openstackclient.compute.v2.server:AddServerSecurityGroup
server_add_volume = openstackclient.compute.v2.server:AddServerVolume server_add_volume = openstackclient.compute.v2.server:AddServerVolume
server_create = openstackclient.compute.v2.server:CreateServer server_create = openstackclient.compute.v2.server:CreateServer
server_delete = openstackclient.compute.v2.server:DeleteServer server_delete = openstackclient.compute.v2.server:DeleteServer
@@ -219,6 +229,7 @@ openstack.compute.v2 =
server_pause = openstackclient.compute.v2.server:PauseServer server_pause = openstackclient.compute.v2.server:PauseServer
server_reboot = openstackclient.compute.v2.server:RebootServer server_reboot = openstackclient.compute.v2.server:RebootServer
server_rebuild = openstackclient.compute.v2.server:RebuildServer server_rebuild = openstackclient.compute.v2.server:RebuildServer
server_remove_security_group = openstackclient.compute.v2.server:RemoveServerSecurityGroup
server_remove_volume = openstackclient.compute.v2.server:RemoveServerVolume server_remove_volume = openstackclient.compute.v2.server:RemoveServerVolume
server_rescue = openstackclient.compute.v2.server:RescueServer server_rescue = openstackclient.compute.v2.server:RescueServer
server_resize = openstackclient.compute.v2.server:ResizeServer server_resize = openstackclient.compute.v2.server:ResizeServer