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)])
else:
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"""
import os
import six
import sys
import time
import uuid
from openstackclient.common import exceptions
from openstackclient.openstack.common import strutils
def find_resource(manager, name_or_id):
@@ -84,7 +86,8 @@ def format_dict(data):
output = ""
for s in data:
output = output + s + "='" + data[s] + "', "
output = output + s + "='" + \
strutils.safe_encode(six.text_type(data[s])) + "', "
return output[:-2]

View File

@@ -210,6 +210,16 @@ openstack.compute.v2 =
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_create = openstackclient.compute.v2.server:CreateServer
server_delete = openstackclient.compute.v2.server:DeleteServer
@@ -219,6 +229,7 @@ openstack.compute.v2 =
server_pause = openstackclient.compute.v2.server:PauseServer
server_reboot = openstackclient.compute.v2.server:RebootServer
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_rescue = openstackclient.compute.v2.server:RescueServer
server_resize = openstackclient.compute.v2.server:ResizeServer