Merge "Renames *-id parameters"

This commit is contained in:
Jenkins 2016-11-15 19:35:18 +00:00 committed by Gerrit Code Review
commit 51b26ec9f6
5 changed files with 220 additions and 38 deletions

View File

@ -33,12 +33,29 @@ class TestCommandLineArgument(utils.TestCase):
".*?^Try 'magnum help ' for more information.",
]
_mandatory_group_arg_error = [
'.*?^usage: ',
'.*?^error: one of the arguments',
".*?^Try 'magnum help ",
]
_too_many_group_arg_error = [
'.*?^usage: ',
'.*?^error: (argument \-\-[a-z\-]*: not allowed with argument )',
".*?^Try 'magnum help ",
]
_mandatory_arg_error = [
'.*?^usage: ',
'.*?^error: (the following arguments|argument)',
".*?^Try 'magnum help ",
]
_deprecated_warning = [
'.*(WARNING: The \-\-[a-z\-]*-id parameter is deprecated)+',
'.*(Use the \-\-[a-z\-]* parameter to avoid seeing this message)+'
]
_few_argument_error = [
'.*?^usage: magnum ',
'.*?^error: (the following arguments|too few arguments)',

View File

@ -24,7 +24,7 @@ class FakeCluster(Cluster):
def __init__(self, manager=None, info={}, **kwargs):
Cluster.__init__(self, manager=manager, info=info)
self.uuid = kwargs.get('uuid', 'x')
self.keypair = kwargs.get('keypair_id', 'x')
self.keypair = kwargs.get('keypair', 'x')
self.name = kwargs.get('name', 'x')
self.cluster_template_id = kwargs.get('cluster_template_id', 'x')
self.stack_id = kwargs.get('stack_id', 'x')
@ -56,14 +56,14 @@ class ShellTest(shell_test_base.TestCommandLineArgument):
mock_list.return_value = [FakeCluster()]
self._test_arg_success(
'cluster-list --fields status,status,status,name',
keyword=('\n| uuid | name | keypair_id | node_count | '
keyword=('\n| uuid | name | keypair | node_count | '
'master_count | status |\n'))
# Output should be
# +------+------+------------+--------------+--------------+--------+
# | uuid | name | keypair_id | node_count | master_count | status |
# +------+------+------------+--------------+--------------+--------+
# | x | x | x | x | x | x |
# +------+------+------------+--------------+--------------+--------+
# +------+------+---------+--------------+--------------+--------+
# | uuid | name | keypair | node_count | master_count | status |
# +------+------+---------+--------------+--------------+--------+
# | x | x | x | x | x | x |
# +------+------+---------+--------------+--------------+--------+
self.assertTrue(mock_list.called)
@mock.patch('magnumclient.v1.clusters.ClusterManager.list')
@ -104,7 +104,7 @@ class ShellTest(shell_test_base.TestCommandLineArgument):
self.assertTrue(mock_create.called)
self._test_arg_success('cluster-create --cluster-template xxx '
'--keypair-id x')
'--keypair x')
self.assertTrue(mock_create.called)
self._test_arg_success('cluster-create --name test '
@ -123,6 +123,26 @@ class ShellTest(shell_test_base.TestCommandLineArgument):
'--timeout 15')
self.assertTrue(mock_create.called)
@mock.patch('magnumclient.v1.cluster_templates.ClusterTemplateManager.get')
@mock.patch('magnumclient.v1.clusters.ClusterManager.create')
def test_cluster_create_deprecation_warnings(self, mock_create, mock_get):
self._test_arg_failure('cluster-create --cluster-template xxx '
'--keypair-id x',
self._deprecated_warning)
self.assertTrue(mock_create.called)
self.assertTrue(mock_get.called)
@mock.patch('magnumclient.v1.cluster_templates.ClusterTemplateManager.get')
@mock.patch('magnumclient.v1.clusters.ClusterManager.create')
def test_cluster_create_deprecation_errors(self,
mock_create,
mock_get):
self._test_arg_failure('cluster-create --cluster-template xxx '
'--keypair-id x --keypair x',
self._too_many_group_arg_error)
self.assertFalse(mock_create.called)
self.assertFalse(mock_get.called)
@mock.patch('magnumclient.v1.cluster_templates.ClusterTemplateManager.get')
@mock.patch('magnumclient.v1.clusters.ClusterManager.get')
def test_cluster_show_clustertemplate_metadata(self,
@ -156,7 +176,7 @@ class ShellTest(shell_test_base.TestCommandLineArgument):
@mock.patch('magnumclient.v1.clusters.ClusterManager.create')
def test_cluster_create_failure_only_keypair(self, mock_create):
self._test_arg_failure('cluster-create --keypair-id test',
self._test_arg_failure('cluster-create --keypair test',
self._mandatory_arg_error)
self.assertFalse(mock_create.called)

View File

@ -26,7 +26,7 @@ class FakeClusterTemplate(ClusterTemplate):
self.uuid = kwargs.get('uuid', 'x')
self.links = kwargs.get('links', [])
self.server_type = kwargs.get('server_type', 'vm')
self.image_id = kwargs.get('image_id', 'x')
self.image_id = kwargs.get('image', 'x')
self.tls_disabled = kwargs.get('tls_disabled', False)
self.registry_enabled = kwargs.get('registry_enabled', False)
self.coe = kwargs.get('coe', 'x')
@ -305,7 +305,20 @@ class ShellTest(shell_test_base.TestCommandLineArgument):
self.assertFalse(mock_create.called)
self._test_arg_failure('cluster-template-create '
'--coe test', self._mandatory_arg_error)
'--coe test',
self._mandatory_group_arg_error)
self.assertFalse(mock_create.called)
self._test_arg_failure('cluster-template-create '
'--coe test '
'--external-network test ',
self._mandatory_group_arg_error)
self.assertFalse(mock_create.called)
self._test_arg_failure('cluster-template-create '
'--coe test '
'--image test ',
self._mandatory_group_arg_error)
self.assertFalse(mock_create.called)
self._test_arg_failure('cluster-template-create '
@ -316,6 +329,76 @@ class ShellTest(shell_test_base.TestCommandLineArgument):
self._mandatory_arg_error)
self.assertFalse(mock_create.called)
@mock.patch(
'magnumclient.v1.cluster_templates.ClusterTemplateManager.create')
def test_cluster_template_create_deprecation_errors(self, mock_create):
required_args = ('cluster-template-create '
'--coe test --external-network public --image test ')
self._test_arg_failure('cluster-template-create --coe test '
'--external-network-id test '
'--external-network test ',
self._too_many_group_arg_error)
self.assertFalse(mock_create.called)
self._test_arg_failure('cluster-template-create --coe test '
'--image-id test '
'--image test ',
self._too_many_group_arg_error)
self.assertFalse(mock_create.called)
self._test_arg_failure(required_args +
'--flavor test --flavor-id test',
self._too_many_group_arg_error)
self.assertFalse(mock_create.called)
self._test_arg_failure(required_args +
'--master-flavor test --master-flavor-id test',
self._too_many_group_arg_error)
self.assertFalse(mock_create.called)
self._test_arg_failure(required_args +
'--keypair test --keypair-id test',
self._too_many_group_arg_error)
self.assertFalse(mock_create.called)
@mock.patch(
'magnumclient.v1.cluster_templates.ClusterTemplateManager.create')
def test_cluster_template_create_deprecation_warnings(self, mock_create):
required_args = ('cluster-template-create '
'--coe test --external-network public --image test ')
self._test_arg_failure('cluster-template-create '
'--coe test '
'--external-network-id test '
'--image test ',
self._deprecated_warning)
self.assertTrue(mock_create.called)
self._test_arg_failure('cluster-template-create '
'--coe test '
'--external-network test '
'--image-id test ',
self._deprecated_warning)
self.assertTrue(mock_create.called)
self._test_arg_failure('cluster-template-create '
'--coe test '
'--external-network-id test '
'--image-id test ',
self._deprecated_warning)
self.assertTrue(mock_create.called)
self._test_arg_failure(required_args + '--keypair-id test',
self._deprecated_warning)
self.assertTrue(mock_create.called)
self._test_arg_failure(required_args + '--flavor-id test',
self._deprecated_warning)
self.assertTrue(mock_create.called)
self._test_arg_failure(required_args + '--master-flavor-id test',
self._deprecated_warning)
self.assertTrue(mock_create.called)
@mock.patch('magnumclient.v1.cluster_templates.ClusterTemplateManager.get')
def test_cluster_template_show_success(self, mock_show):
self._test_arg_success('cluster-template-show xxx')

View File

@ -17,29 +17,62 @@ from magnumclient.common import utils as magnum_utils
from magnumclient.i18n import _
# Maps old parameter names to their new names and whether they are required
DEPRECATING_PARAMS = {
"--external-network-id": "--external-network",
"--flavor-id": "--flavor",
"--image-id": "--image",
"--keypair-id": "--keypair",
"--master-flavor-id": "--master-flavor",
}
def _show_cluster_template(cluster_template):
del cluster_template._info['links']
utils.print_dict(cluster_template._info)
@utils.deprecation_map(DEPRECATING_PARAMS)
@utils.arg('--name',
metavar='<name>',
help='Name of the cluster template to create.')
@utils.arg('--image-id',
dest='image',
required=True,
metavar='<image-id>',
metavar='<image>',
help=utils.deprecation_message(
'The name or UUID of the base image to customize for the '
'Cluster.', 'image'))
@utils.arg('--image',
dest='image',
required=True,
metavar='<image>',
help='The name or UUID of the base image to customize for the '
'Cluster.')
@utils.arg('--keypair-id',
required=False,
metavar='<keypair-id>',
help='The name or UUID of the SSH keypair to load into the '
'Cluster nodes.')
dest='keypair',
metavar='<keypair>',
help=utils.deprecation_message(
'The name or UUID of the SSH keypair to load into the '
'Cluster nodes.', 'keypair'))
@utils.arg('--keypair',
dest='keypair',
metavar='<keypair>',
help='The name or UUID of the SSH keypair to load into the Cluster '
'nodes.')
@utils.arg('--external-network-id',
dest='external_network',
required=True,
metavar='<external-network-id>',
help='The external Neutron network ID to connect to this Cluster'
' model.')
metavar='<external-network>',
help=utils.deprecation_message(
'The external Neutron network name or UUID to connect to '
'this Cluster Template.', 'external-network'))
@utils.arg('--external-network',
dest='external_network',
required=True,
metavar='<external-network>',
help='The external Neutron network name or UUID to connect to '
'this Cluster Template.')
@utils.arg('--coe',
required=True,
metavar='<coe>',
@ -64,13 +97,29 @@ def _show_cluster_template(cluster_template):
default='8.8.8.8',
help='The DNS nameserver to use for this cluster template.')
@utils.arg('--flavor-id',
metavar='<flavor-id>',
dest='flavor',
metavar='<flavor>',
default='m1.medium',
help='The nova flavor id to use when launching the Cluster.')
help=utils.deprecation_message(
'The nova flavor name or UUID to use when launching the '
'Cluster.', 'flavor'))
@utils.arg('--flavor',
dest='flavor',
metavar='<flavor>',
default='m1.medium',
help='The nova flavor name or UUID to use when launching the '
'Cluster.')
@utils.arg('--master-flavor-id',
metavar='<master-flavor-id>',
help='The nova flavor id to use when launching the master node '
'of the Cluster.')
dest='master_flavor',
metavar='<master-flavor>',
help=utils.deprecation_message(
'The nova flavor name or UUID to use when launching the master'
' node of the Cluster.', 'master-flavor'))
@utils.arg('--master-flavor',
dest='master_flavor',
metavar='<master-flavor>',
help='The nova flavor name or UUID to use when launching the master'
' node of the Cluster.')
@utils.arg('--docker-volume-size',
metavar='<docker-volume-size>',
type=int,
@ -122,11 +171,11 @@ def do_cluster_template_create(cs, args):
"""Create a cluster template."""
opts = {}
opts['name'] = args.name
opts['flavor_id'] = args.flavor_id
opts['master_flavor_id'] = args.master_flavor_id
opts['image_id'] = args.image_id
opts['keypair_id'] = args.keypair_id
opts['external_network_id'] = args.external_network_id
opts['flavor_id'] = args.flavor
opts['master_flavor_id'] = args.master_flavor
opts['image_id'] = args.image
opts['keypair_id'] = args.keypair
opts['external_network_id'] = args.external_network
opts['fixed_network'] = args.fixed_network
opts['fixed_subnet'] = args.fixed_subnet
opts['network_driver'] = args.network_driver

View File

@ -27,6 +27,13 @@ from cryptography import x509
from cryptography.x509.oid import NameOID
# Maps old parameter names to their new names and whether they are required
# e.g. keypair-id to keypair
DEPRECATING_PARAMS = {
"--keypair-id": "--keypair",
}
def _show_cluster(cluster):
del cluster._info['links']
utils.print_dict(cluster._info)
@ -69,15 +76,12 @@ def do_cluster_list(cs, args):
args.fields, clusters,
exclude_fields=(c.lower() for c in columns))[0]
labels = columns[:]
labels[2] = 'keypair_id'
utils.print_list(clusters, columns,
{'versions': magnum_utils.print_list_field('versions')},
field_labels=labels,
sortby_index=None)
@utils.deprecation_map(DEPRECATING_PARAMS)
@utils.arg('--name',
metavar='<name>',
help='Name of the cluster to create.')
@ -86,9 +90,17 @@ def do_cluster_list(cs, args):
metavar='<cluster_template>',
help='ID or name of the cluster template.')
@utils.arg('--keypair-id',
metavar='<keypair_id>',
dest='keypair',
metavar='<keypair>',
default=None,
help='Name of the keypair to use for this cluster.')
help=utils.deprecation_message(
'UUID or name of the keypair to use for this cluster.',
'keypair'))
@utils.arg('--keypair',
dest='keypair',
metavar='<keypair>',
default=None,
help='UUID or name of the keypair to use for this cluster.')
@utils.arg('--node-count',
metavar='<node-count>',
type=int,
@ -110,16 +122,17 @@ def do_cluster_list(cs, args):
'is 60 minutes.')
def do_cluster_create(cs, args):
"""Create a cluster."""
cluster_template = cs.cluster_templates.get(args.cluster_template)
opts = {}
cluster_template = cs.cluster_templates.get(args.cluster_template)
opts = dict()
opts['name'] = args.name
opts['cluster_template_id'] = cluster_template.uuid
opts['keypair'] = args.keypair_id
opts['keypair'] = args.keypair
opts['node_count'] = args.node_count
opts['master_count'] = args.master_count
opts['discovery_url'] = args.discovery_url
opts['create_timeout'] = args.timeout
try:
cluster = cs.clusters.create(**opts)
# support for non-async in 1.1