Add --labels for cluster-create
Add a labels override parameter on cluster-create to override the value present on the cluster template. Partial-Bug: #1697651 Depends-On: I8990c78433dcbbca5bc4aa121678b02636346802 Change-Id: I39f3423f6889ce93021248223600e342f4217cec
This commit is contained in:
parent
31dc867725
commit
57dc025007
|
@ -274,6 +274,17 @@ class ClusterManagerTest(testtools.TestCase):
|
||||||
self.assertEqual(expect, self.api.calls)
|
self.assertEqual(expect, self.api.calls)
|
||||||
self.assertTrue(cluster)
|
self.assertTrue(cluster)
|
||||||
|
|
||||||
|
def test_cluster_create_with_labels(self):
|
||||||
|
cluster_with_labels = dict()
|
||||||
|
cluster_with_labels.update(CREATE_CLUSTER)
|
||||||
|
cluster_with_labels['labels'] = "key=val"
|
||||||
|
cluster = self.mgr.create(**cluster_with_labels)
|
||||||
|
expect = [
|
||||||
|
('POST', '/v1/clusters', {}, cluster_with_labels),
|
||||||
|
]
|
||||||
|
self.assertEqual(expect, self.api.calls)
|
||||||
|
self.assertTrue(cluster)
|
||||||
|
|
||||||
def test_cluster_create_with_discovery_url(self):
|
def test_cluster_create_with_discovery_url(self):
|
||||||
cluster_with_discovery = dict()
|
cluster_with_discovery = dict()
|
||||||
cluster_with_discovery.update(CREATE_CLUSTER)
|
cluster_with_discovery.update(CREATE_CLUSTER)
|
||||||
|
|
|
@ -27,6 +27,7 @@ class FakeCluster(Cluster):
|
||||||
self.uuid = kwargs.get('uuid', 'x')
|
self.uuid = kwargs.get('uuid', 'x')
|
||||||
self.keypair = kwargs.get('keypair', 'x')
|
self.keypair = kwargs.get('keypair', 'x')
|
||||||
self.docker_volume_size = kwargs.get('docker_volume_size', 3)
|
self.docker_volume_size = kwargs.get('docker_volume_size', 3)
|
||||||
|
self.labels = kwargs.get('labels', 'key=val')
|
||||||
self.name = kwargs.get('name', 'x')
|
self.name = kwargs.get('name', 'x')
|
||||||
self.cluster_template_id = kwargs.get('cluster_template_id', 'x')
|
self.cluster_template_id = kwargs.get('cluster_template_id', 'x')
|
||||||
self.stack_id = kwargs.get('stack_id', 'x')
|
self.stack_id = kwargs.get('stack_id', 'x')
|
||||||
|
@ -58,6 +59,7 @@ class ShellTest(shell_test_base.TestCommandLineArgument):
|
||||||
master_count=1, node_count=1,
|
master_count=1, node_count=1,
|
||||||
create_timeout=60, keypair=None,
|
create_timeout=60, keypair=None,
|
||||||
docker_volume_size=None,
|
docker_volume_size=None,
|
||||||
|
labels={},
|
||||||
discovery_url=None):
|
discovery_url=None):
|
||||||
expected_args = {}
|
expected_args = {}
|
||||||
expected_args['name'] = name
|
expected_args['name'] = name
|
||||||
|
@ -69,6 +71,8 @@ class ShellTest(shell_test_base.TestCommandLineArgument):
|
||||||
expected_args['keypair'] = keypair
|
expected_args['keypair'] = keypair
|
||||||
if docker_volume_size is not None:
|
if docker_volume_size is not None:
|
||||||
expected_args['docker_volume_size'] = docker_volume_size
|
expected_args['docker_volume_size'] = docker_volume_size
|
||||||
|
if labels is not None:
|
||||||
|
expected_args['labels'] = labels
|
||||||
|
|
||||||
return expected_args
|
return expected_args
|
||||||
|
|
||||||
|
@ -154,6 +158,11 @@ class ShellTest(shell_test_base.TestCommandLineArgument):
|
||||||
'--docker-volume-size 20')
|
'--docker-volume-size 20')
|
||||||
expected_args = self._get_expected_args_create('xxx',
|
expected_args = self._get_expected_args_create('xxx',
|
||||||
docker_volume_size=20)
|
docker_volume_size=20)
|
||||||
|
|
||||||
|
self._test_arg_success('cluster-create --cluster-template xxx '
|
||||||
|
'--labels key=val')
|
||||||
|
expected_args = self._get_expected_args_create('xxx',
|
||||||
|
labels={'key': 'val'})
|
||||||
mock_create.assert_called_with(**expected_args)
|
mock_create.assert_called_with(**expected_args)
|
||||||
|
|
||||||
self._test_arg_success('cluster-create test '
|
self._test_arg_success('cluster-create test '
|
||||||
|
@ -281,6 +290,11 @@ class ShellTest(shell_test_base.TestCommandLineArgument):
|
||||||
self._mandatory_arg_error)
|
self._mandatory_arg_error)
|
||||||
mock_create.assert_not_called()
|
mock_create.assert_not_called()
|
||||||
|
|
||||||
|
@mock.patch('magnumclient.v1.clusters.ClusterManager.create')
|
||||||
|
def test_cluster_create_failure_only_labels(self, mock_create):
|
||||||
|
self._test_arg_failure('cluster-create --labels key=val',
|
||||||
|
self._mandatory_arg_error)
|
||||||
|
|
||||||
@mock.patch('magnumclient.v1.clusters.ClusterManager.create')
|
@mock.patch('magnumclient.v1.clusters.ClusterManager.create')
|
||||||
def test_cluster_create_failure_only_node_count(self, mock_create):
|
def test_cluster_create_failure_only_node_count(self, mock_create):
|
||||||
self._test_arg_failure('cluster-create --node-count 1',
|
self._test_arg_failure('cluster-create --node-count 1',
|
||||||
|
|
|
@ -20,6 +20,7 @@ CREATION_ATTRIBUTES.append('cluster_template_id')
|
||||||
CREATION_ATTRIBUTES.append('create_timeout')
|
CREATION_ATTRIBUTES.append('create_timeout')
|
||||||
CREATION_ATTRIBUTES.append('keypair')
|
CREATION_ATTRIBUTES.append('keypair')
|
||||||
CREATION_ATTRIBUTES.append('docker_volume_size')
|
CREATION_ATTRIBUTES.append('docker_volume_size')
|
||||||
|
CREATION_ATTRIBUTES.append('labels')
|
||||||
|
|
||||||
|
|
||||||
class Cluster(baseunit.BaseTemplate):
|
class Cluster(baseunit.BaseTemplate):
|
||||||
|
|
|
@ -105,6 +105,11 @@ def do_cluster_list(cs, args):
|
||||||
metavar='<docker-volume-size>',
|
metavar='<docker-volume-size>',
|
||||||
type=int,
|
type=int,
|
||||||
help=_('The size in GB for the docker volume to use'))
|
help=_('The size in GB for the docker volume to use'))
|
||||||
|
@utils.arg('--labels', metavar='<KEY1=VALUE1,KEY2=VALUE2;KEY3=VALUE3...>',
|
||||||
|
action='append', default=[],
|
||||||
|
help=_('Arbitrary labels in the form of key=value pairs '
|
||||||
|
'to associate with a cluster. '
|
||||||
|
'May be used multiple times.'))
|
||||||
@utils.arg('--node-count',
|
@utils.arg('--node-count',
|
||||||
metavar='<node-count>',
|
metavar='<node-count>',
|
||||||
type=int,
|
type=int,
|
||||||
|
@ -137,6 +142,8 @@ def do_cluster_create(cs, args):
|
||||||
opts['keypair'] = args.keypair
|
opts['keypair'] = args.keypair
|
||||||
if args.docker_volume_size is not None:
|
if args.docker_volume_size is not None:
|
||||||
opts['docker_volume_size'] = args.docker_volume_size
|
opts['docker_volume_size'] = args.docker_volume_size
|
||||||
|
if args.labels is not None:
|
||||||
|
opts['labels'] = magnum_utils.handle_labels(args.labels)
|
||||||
opts['node_count'] = args.node_count
|
opts['node_count'] = args.node_count
|
||||||
opts['master_count'] = args.master_count
|
opts['master_count'] = args.master_count
|
||||||
opts['discovery_url'] = args.discovery_url
|
opts['discovery_url'] = args.discovery_url
|
||||||
|
|
Loading…
Reference in New Issue