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 65d2a14e3e
commit c94e262df8
9 changed files with 996 additions and 2 deletions

@ -141,6 +141,43 @@ class AddServerVolume(command.Command):
)
class AddServerSecurityGroup(command.Command):
"""Add security group to server"""
log = logging.getLogger(__name__ + '.AddServerSecurityGroup')
def get_parser(self, prog_name):
parser = super(AddServerSecurityGroup, self).get_parser(prog_name)
parser.add_argument(
'server',
metavar='<server>',
help='Name or ID of server to use',
)
parser.add_argument(
'group',
metavar='<group>',
help='Name or ID of security group to add to server',
)
return parser
def take_action(self, parsed_args):
self.log.debug("take_action(%s)" % parsed_args)
compute_client = self.app.client_manager.compute
server = utils.find_resource(
compute_client.servers,
parsed_args.server,
)
security_group = utils.find_resource(
compute_client.security_groups,
parsed_args.group,
)
server.add_security_group(security_group)
return
class CreateServer(show.ShowOne):
"""Create a new server"""
@ -731,6 +768,42 @@ class RebuildServer(show.ShowOne):
return zip(*sorted(details.iteritems()))
class RemoveServerSecurityGroup(command.Command):
"""Remove security group from server"""
log = logging.getLogger(__name__ + '.RemoveServerSecurityGroup')
def get_parser(self, prog_name):
parser = super(RemoveServerSecurityGroup, self).get_parser(prog_name)
parser.add_argument(
'server',
metavar='<server>',
help='Name or ID of server to use',
)
parser.add_argument(
'group',
metavar='<group>',
help='Name or ID of security group to remove from server',
)
return parser
def take_action(self, parsed_args):
self.log.debug("take_action(%s)" % parsed_args)
compute_client = self.app.client_manager.compute
server = utils.find_resource(
compute_client.servers,
parsed_args.server,
)
security_group = utils.find_resource(
compute_client.security_groups,
parsed_args.group,
)
server.remove_security_group(security_group)
class RemoveServerVolume(command.Command):
"""Remove volume from server"""