Merge "Renames *-id parameters"
This commit is contained in:
commit
51b26ec9f6
@ -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)',
|
||||
|
@ -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)
|
||||
|
||||
|
@ -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')
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
|
Loading…
x
Reference in New Issue
Block a user