summaryrefslogtreecommitdiff
path: root/openstackclient
diff options
context:
space:
mode:
Diffstat (limited to 'openstackclient')
-rw-r--r--openstackclient/compute/v2/keypair.py23
-rw-r--r--openstackclient/identity/v2_0/user.py8
-rw-r--r--openstackclient/identity/v3/user.py12
-rw-r--r--openstackclient/network/v2/network.py1
-rw-r--r--openstackclient/network/v2/subnet.py2
-rw-r--r--openstackclient/network/v2/subnet_pool.py18
-rw-r--r--openstackclient/tests/unit/compute/v2/test_keypair.py3
-rw-r--r--openstackclient/tests/unit/network/v2/test_network.py4
8 files changed, 48 insertions, 23 deletions
diff --git a/openstackclient/compute/v2/keypair.py b/openstackclient/compute/v2/keypair.py
index d30fd429..d5c682f4 100644
--- a/openstackclient/compute/v2/keypair.py
+++ b/openstackclient/compute/v2/keypair.py
@@ -32,19 +32,20 @@ LOG = logging.getLogger(__name__)
class CreateKeypair(command.ShowOne):
- """Create new public key"""
+ """Create new public or private key for server ssh access"""
def get_parser(self, prog_name):
parser = super(CreateKeypair, self).get_parser(prog_name)
parser.add_argument(
'name',
metavar='<name>',
- help=_("New public key name")
+ help=_("New public or private key name")
)
parser.add_argument(
'--public-key',
metavar='<file>',
- help=_("Filename for public key to add")
+ help=_("Filename for public key to add. If not used, "
+ "creates a private key.")
)
return parser
@@ -82,7 +83,7 @@ class CreateKeypair(command.ShowOne):
class DeleteKeypair(command.Command):
- """Delete public key(s)"""
+ """Delete public or private key(s)"""
def get_parser(self, prog_name):
parser = super(DeleteKeypair, self).get_parser(prog_name)
@@ -90,7 +91,7 @@ class DeleteKeypair(command.Command):
'name',
metavar='<key>',
nargs='+',
- help=_("Public key(s) to delete (name only)")
+ help=_("Name of key(s) to delete (name only)")
)
return parser
@@ -104,19 +105,19 @@ class DeleteKeypair(command.Command):
compute_client.keypairs.delete(data.name)
except Exception as e:
result += 1
- LOG.error(_("Failed to delete public key with name "
+ LOG.error(_("Failed to delete key with name "
"'%(name)s': %(e)s")
% {'name': n, 'e': e})
if result > 0:
total = len(parsed_args.name)
- msg = (_("%(result)s of %(total)s public keys failed "
+ msg = (_("%(result)s of %(total)s keys failed "
"to delete.") % {'result': result, 'total': total})
raise exceptions.CommandError(msg)
class ListKeypair(command.Lister):
- """List public key fingerprints"""
+ """List key fingerprints"""
def take_action(self, parsed_args):
compute_client = self.app.client_manager.compute
@@ -133,20 +134,20 @@ class ListKeypair(command.Lister):
class ShowKeypair(command.ShowOne):
- """Display public key details"""
+ """Display key details"""
def get_parser(self, prog_name):
parser = super(ShowKeypair, self).get_parser(prog_name)
parser.add_argument(
'name',
metavar='<key>',
- help=_("Public key to display (name only)")
+ help=_("Public or private key to display (name only)")
)
parser.add_argument(
'--public-key',
action='store_true',
default=False,
- help=_("Show only bare public key (name only)")
+ help=_("Show only bare public key paired with the generated key")
)
return parser
diff --git a/openstackclient/identity/v2_0/user.py b/openstackclient/identity/v2_0/user.py
index d2075150..bc091ce7 100644
--- a/openstackclient/identity/v2_0/user.py
+++ b/openstackclient/identity/v2_0/user.py
@@ -94,6 +94,10 @@ class CreateUser(command.ShowOne):
if parsed_args.password_prompt:
parsed_args.password = utils.get_password(self.app.stdin)
+ if not parsed_args.password:
+ LOG.warning(_("No password was supplied, authentication will fail "
+ "when a user does not have a password."))
+
try:
user = identity_client.users.create(
parsed_args.name,
@@ -292,6 +296,10 @@ class SetUser(command.Command):
if parsed_args.password_prompt:
parsed_args.password = utils.get_password(self.app.stdin)
+ if '' == parsed_args.password:
+ LOG.warning(_("No password was supplied, authentication will fail "
+ "when a user does not have a password."))
+
user = utils.find_resource(
identity_client.users,
parsed_args.user,
diff --git a/openstackclient/identity/v3/user.py b/openstackclient/identity/v3/user.py
index dc47ef8d..1e086fb6 100644
--- a/openstackclient/identity/v3/user.py
+++ b/openstackclient/identity/v3/user.py
@@ -110,6 +110,10 @@ class CreateUser(command.ShowOne):
if parsed_args.password_prompt:
parsed_args.password = utils.get_password(self.app.stdin)
+ if not parsed_args.password:
+ LOG.warning(_("No password was supplied, authentication will fail "
+ "when a user does not have a password."))
+
try:
user = identity_client.users.create(
name=parsed_args.name,
@@ -329,6 +333,10 @@ class SetUser(command.Command):
if parsed_args.password_prompt:
parsed_args.password = utils.get_password(self.app.stdin)
+ if '' == parsed_args.password:
+ LOG.warning(_("No password was supplied, authentication will fail "
+ "when a user does not have a password."))
+
user = utils.find_resource(
identity_client.users,
parsed_args.user,
@@ -408,6 +416,10 @@ class SetPasswordUser(command.Command):
password = utils.get_password(
self.app.stdin, prompt="New Password:")
+ if '' == password:
+ LOG.warning(_("No password was supplied, authentication will fail "
+ "when a user does not have a password."))
+
identity_client.users.update_password(current_password, password)
diff --git a/openstackclient/network/v2/network.py b/openstackclient/network/v2/network.py
index dbf1b601..40183b73 100644
--- a/openstackclient/network/v2/network.py
+++ b/openstackclient/network/v2/network.py
@@ -42,6 +42,7 @@ def _get_columns(item):
columns = list(item.keys())
if 'tenant_id' in columns:
columns.remove('tenant_id')
+ if 'project_id' not in columns:
columns.append('project_id')
return tuple(sorted(columns))
diff --git a/openstackclient/network/v2/subnet.py b/openstackclient/network/v2/subnet.py
index 1b778c91..f1ecb5a7 100644
--- a/openstackclient/network/v2/subnet.py
+++ b/openstackclient/network/v2/subnet.py
@@ -542,7 +542,7 @@ class SetSubnet(command.Command):
if not parsed_args.no_allocation_pool:
attrs['allocation_pools'] += obj.allocation_pools
elif parsed_args.no_allocation_pool:
- attrs['allocation_pools'] = ''
+ attrs['allocation_pools'] = []
if 'service_types' in attrs:
attrs['service_types'] += obj.service_types
client.update_subnet(obj, **attrs)
diff --git a/openstackclient/network/v2/subnet_pool.py b/openstackclient/network/v2/subnet_pool.py
index a01d2f7b..a29c4518 100644
--- a/openstackclient/network/v2/subnet_pool.py
+++ b/openstackclient/network/v2/subnet_pool.py
@@ -238,40 +238,42 @@ class ListSubnetPool(command.Lister):
shared_group.add_argument(
'--share',
action='store_true',
- help=_("List subnets shared between projects"),
+ help=_("List subnet pools shared between projects"),
)
shared_group.add_argument(
'--no-share',
action='store_true',
- help=_("List subnets not shared between projects"),
+ help=_("List subnet pools not shared between projects"),
)
default_group = parser.add_mutually_exclusive_group()
default_group.add_argument(
'--default',
action='store_true',
- help=_("List subnets used as the default external subnet pool"),
+ help=_("List subnet pools used as the default external "
+ "subnet pool"),
)
default_group.add_argument(
'--no-default',
action='store_true',
- help=_("List subnets not used as the default external subnet pool")
+ help=_("List subnet pools not used as the default external "
+ "subnet pool")
)
parser.add_argument(
'--project',
metavar='<project>',
- help=_("List subnets according to their project (name or ID)")
+ help=_("List subnet pools according to their project (name or ID)")
)
identity_common.add_project_domain_option_to_parser(parser)
parser.add_argument(
'--name',
metavar='<name>',
- help=_("List only subnets of given name in output")
+ help=_("List only subnet pools of given name in output")
)
parser.add_argument(
'--address-scope',
metavar='<address-scope>',
- help=_("List only subnets of given address scope (name or ID) "
- "in output")
+ help=_("List only subnet pools of given address scope "
+ "(name or ID) in output")
)
return parser
diff --git a/openstackclient/tests/unit/compute/v2/test_keypair.py b/openstackclient/tests/unit/compute/v2/test_keypair.py
index cb008545..efc5463c 100644
--- a/openstackclient/tests/unit/compute/v2/test_keypair.py
+++ b/openstackclient/tests/unit/compute/v2/test_keypair.py
@@ -179,8 +179,7 @@ class TestKeypairDelete(TestKeypair):
self.cmd.take_action(parsed_args)
self.fail('CommandError should be raised.')
except exceptions.CommandError as e:
- self.assertEqual('1 of 2 public keys failed to delete.',
- str(e))
+ self.assertEqual('1 of 2 keys failed to delete.', str(e))
find_mock.assert_any_call(
self.keypairs_mock, self.keypairs[0].name)
diff --git a/openstackclient/tests/unit/network/v2/test_network.py b/openstackclient/tests/unit/network/v2/test_network.py
index 50a60c2d..828da4a2 100644
--- a/openstackclient/tests/unit/network/v2/test_network.py
+++ b/openstackclient/tests/unit/network/v2/test_network.py
@@ -609,7 +609,7 @@ class TestListNetwork(TestNetwork):
self.assertEqual(self.columns, columns)
self.assertEqual(self.data, list(data))
- def test_networ_list_project_domain(self):
+ def test_network_list_project_domain(self):
project = identity_fakes_v3.FakeProject.create_one_project()
self.projects_mock.get.return_value = project
arglist = [
@@ -625,6 +625,8 @@ class TestListNetwork(TestNetwork):
filters = {'tenant_id': project.id}
self.network.networks.assert_called_once_with(**filters)
+ self.assertEqual(self.columns, columns)
+ self.assertEqual(self.data, list(data))
def test_network_list_share(self):
arglist = [