summaryrefslogtreecommitdiff
path: root/openstackclient/compute
diff options
context:
space:
mode:
Diffstat (limited to 'openstackclient/compute')
-rw-r--r--openstackclient/compute/v2/aggregate.py4
-rw-r--r--openstackclient/compute/v2/console.py13
-rw-r--r--openstackclient/compute/v2/flavor.py24
-rw-r--r--openstackclient/compute/v2/keypair.py3
-rw-r--r--openstackclient/compute/v2/server.py36
-rw-r--r--openstackclient/compute/v2/server_group.py9
-rw-r--r--openstackclient/compute/v2/service.py3
7 files changed, 58 insertions, 34 deletions
diff --git a/openstackclient/compute/v2/aggregate.py b/openstackclient/compute/v2/aggregate.py
index 76ba5cc6..7f9161a9 100644
--- a/openstackclient/compute/v2/aggregate.py
+++ b/openstackclient/compute/v2/aggregate.py
@@ -128,8 +128,8 @@ class DeleteAggregate(command.Command):
except Exception as e:
result += 1
LOG.error(_("Failed to delete aggregate with name or "
- "ID '%(aggregate)s': %(e)s")
- % {'aggregate': a, 'e': e})
+ "ID '%(aggregate)s': %(e)s"),
+ {'aggregate': a, 'e': e})
if result > 0:
total = len(parsed_args.aggregate)
diff --git a/openstackclient/compute/v2/console.py b/openstackclient/compute/v2/console.py
index 358df501..25f92108 100644
--- a/openstackclient/compute/v2/console.py
+++ b/openstackclient/compute/v2/console.py
@@ -126,18 +126,7 @@ class ShowConsoleURL(command.ShowOne):
parsed_args.server,
)
- data = None
- if parsed_args.url_type in ['novnc', 'xvpvnc']:
- data = server.get_vnc_console(parsed_args.url_type)
- if parsed_args.url_type in ['spice-html5']:
- data = server.get_spice_console(parsed_args.url_type)
- if parsed_args.url_type in ['rdp-html5']:
- data = server.get_rdp_console(parsed_args.url_type)
- if parsed_args.url_type in ['serial']:
- data = server.get_serial_console(parsed_args.url_type)
- if parsed_args.url_type in ['webmks']:
- data = server.get_mks_console()
-
+ data = server.get_console_url(parsed_args.url_type)
if not data:
return ({}, {})
diff --git a/openstackclient/compute/v2/flavor.py b/openstackclient/compute/v2/flavor.py
index 7cd22ed7..009c9bd1 100644
--- a/openstackclient/compute/v2/flavor.py
+++ b/openstackclient/compute/v2/flavor.py
@@ -171,7 +171,7 @@ class CreateFlavor(command.ShowOne):
except Exception as e:
msg = _("Failed to add project %(project)s access to "
"flavor: %(e)s")
- LOG.error(msg % {'project': parsed_args.project, 'e': e})
+ LOG.error(msg, {'project': parsed_args.project, 'e': e})
if parsed_args.property:
try:
flavor.set_keys(parsed_args.property)
@@ -208,8 +208,7 @@ class DeleteFlavor(command.Command):
except Exception as e:
result += 1
LOG.error(_("Failed to delete flavor with name or "
- "ID '%(flavor)s': %(e)s")
- % {'flavor': f, 'e': e})
+ "ID '%(flavor)s': %(e)s"), {'flavor': f, 'e': e})
if result > 0:
total = len(parsed_args.flavor)
@@ -313,6 +312,14 @@ class SetFlavor(command.Command):
help=_("Flavor to modify (name or ID)")
)
parser.add_argument(
+ "--no-property",
+ action="store_true",
+ help=_("Remove all properties from this flavor "
+ "(specify both --no-property and --property"
+ " to remove the current properties before setting"
+ " new properties.)"),
+ )
+ parser.add_argument(
"--property",
metavar="<key=value>",
action=parseractions.KeyValueAction,
@@ -336,6 +343,15 @@ class SetFlavor(command.Command):
flavor = _find_flavor(compute_client, parsed_args.flavor)
result = 0
+ key_list = []
+ if parsed_args.no_property:
+ try:
+ for key in flavor.get_keys().keys():
+ key_list.append(key)
+ flavor.unset_keys(key_list)
+ except Exception as e:
+ LOG.error(_("Failed to clear flavor property: %s"), e)
+ result += 1
if parsed_args.property:
try:
flavor.set_keys(parsed_args.property)
@@ -395,7 +411,7 @@ class ShowFlavor(command.ShowOne):
except Exception as e:
msg = _("Failed to get access projects list "
"for flavor '%(flavor)s': %(e)s")
- LOG.error(msg % {'flavor': parsed_args.flavor, 'e': e})
+ LOG.error(msg, {'flavor': parsed_args.flavor, 'e': e})
flavor = resource_flavor._info.copy()
flavor.update({
diff --git a/openstackclient/compute/v2/keypair.py b/openstackclient/compute/v2/keypair.py
index a63cbfec..2a8524d6 100644
--- a/openstackclient/compute/v2/keypair.py
+++ b/openstackclient/compute/v2/keypair.py
@@ -106,8 +106,7 @@ class DeleteKeypair(command.Command):
except Exception as e:
result += 1
LOG.error(_("Failed to delete key with name "
- "'%(name)s': %(e)s")
- % {'name': n, 'e': e})
+ "'%(name)s': %(e)s"), {'name': n, 'e': e})
if result > 0:
total = len(parsed_args.name)
diff --git a/openstackclient/compute/v2/server.py b/openstackclient/compute/v2/server.py
index f9f0df4f..d33c631a 100644
--- a/openstackclient/compute/v2/server.py
+++ b/openstackclient/compute/v2/server.py
@@ -402,7 +402,7 @@ class CreateServer(command.ShowOne):
parser.add_argument(
'--nic',
metavar="<net-id=net-uuid,v4-fixed-ip=ip-addr,v6-fixed-ip=ip-addr,"
- "port-id=port-uuid>",
+ "port-id=port-uuid,auto,none>",
action='append',
default=[],
help=_("Create a NIC on the server. "
@@ -414,7 +414,8 @@ class CreateServer(command.ShowOne):
"v6-fixed-ip: IPv6 fixed address for NIC (optional), "
"none: (v2.37+) no network is attached, "
"auto: (v2.37+) the compute service will automatically "
- "allocate a network."),
+ "allocate a network. Specifying a --nic of auto or none "
+ "cannot be used with any other --nic value."),
)
parser.add_argument(
'--hint',
@@ -547,14 +548,21 @@ class CreateServer(command.ShowOne):
block_device_mapping_v2.append(mapping)
nics = []
- if parsed_args.nic in ('auto', 'none'):
- nics = [parsed_args.nic]
- else:
- for nic_str in parsed_args.nic:
+ auto_or_none = False
+ for nic_str in parsed_args.nic:
+ # Handle the special auto/none cases
+ if nic_str in ('auto', 'none'):
+ auto_or_none = True
+ nics.append(nic_str)
+ else:
nic_info = {"net-id": "", "v4-fixed-ip": "",
"v6-fixed-ip": "", "port-id": ""}
- nic_info.update(dict(kv_str.split("=", 1)
- for kv_str in nic_str.split(",")))
+ try:
+ nic_info.update(dict(kv_str.split("=", 1)
+ for kv_str in nic_str.split(",")))
+ except ValueError:
+ msg = _('Invalid --nic argument %s.') % nic_str
+ raise exceptions.CommandError(msg)
if bool(nic_info["net-id"]) == bool(nic_info["port-id"]):
msg = _("either net-id or port-id should be specified "
"but not both")
@@ -581,6 +589,18 @@ class CreateServer(command.ShowOne):
raise exceptions.CommandError(msg)
nics.append(nic_info)
+ if nics:
+ if auto_or_none:
+ if len(nics) > 1:
+ msg = _('Specifying a --nic of auto or none cannot '
+ 'be used with any other --nic value.')
+ raise exceptions.CommandError(msg)
+ nics = nics[0]
+ else:
+ # Default to empty list if nothing was specified, let nova side to
+ # decide the default behavior.
+ nics = []
+
hints = {}
for hint in parsed_args.hint:
key, _sep, value = hint.partition('=')
diff --git a/openstackclient/compute/v2/server_group.py b/openstackclient/compute/v2/server_group.py
index 6bcfc6ae..c6e2161f 100644
--- a/openstackclient/compute/v2/server_group.py
+++ b/openstackclient/compute/v2/server_group.py
@@ -55,10 +55,11 @@ class CreateServerGroup(command.ShowOne):
parser.add_argument(
'--policy',
metavar='<policy>',
- action='append',
- required=True,
+ choices=['affinity', 'anti-affinity'],
+ default='affinity',
help=_("Add a policy to <name> "
- "(repeat option to add multiple policies)")
+ "('affinity' or 'anti-affinity', "
+ "default to 'affinity')")
)
return parser
@@ -67,7 +68,7 @@ class CreateServerGroup(command.ShowOne):
info = {}
server_group = compute_client.server_groups.create(
name=parsed_args.name,
- policies=parsed_args.policy)
+ policies=[parsed_args.policy])
info.update(server_group._info)
columns = _get_columns(info)
diff --git a/openstackclient/compute/v2/service.py b/openstackclient/compute/v2/service.py
index 9c384f05..7b18c2e5 100644
--- a/openstackclient/compute/v2/service.py
+++ b/openstackclient/compute/v2/service.py
@@ -50,8 +50,7 @@ class DeleteService(command.Command):
except Exception as e:
result += 1
LOG.error(_("Failed to delete compute service with "
- "ID '%(service)s': %(e)s")
- % {'service': s, 'e': e})
+ "ID '%(service)s': %(e)s"), {'service': s, 'e': e})
if result > 0:
total = len(parsed_args.service)