Change plugin version 'version' parameter to 'plugin-version'

Currently we have parameter 'version' for specifying plugin version
for creating node group templates and also for listing available
plugins. The problem is that this parameter is global parameter for
getting version of client. So, this patch fixes this confusion.

Change-Id: I89a670188c20e3b20b98b596a3efb8d5997c3214
Closes-bug: #1565775
This commit is contained in:
Denis Egorenko 2016-05-31 16:21:31 +03:00
parent 4944304d34
commit f02ea8999c
11 changed files with 145 additions and 126 deletions

View File

@ -0,0 +1,10 @@
---
upgrade:
- Option 'version' is replaced by 'plugin-version' option.
fixes:
- Option 'version' is a global option, which is used for getting
the client version. So there were problems with the OpenStack client,
when we specified 'version' of the plugin, but OSC treated
that as a request for getting the current client version. Hence, to fix
this problem, 'version' is replaced by 'plugin-version'.
Related bug 1565775.

View File

@ -25,7 +25,7 @@ from oslo_log import log as logging
from saharaclient.osc.v1 import utils from saharaclient.osc.v1 import utils
CT_FIELDS = ['id', 'name', 'plugin_name', 'version', 'description', CT_FIELDS = ['id', 'name', 'plugin_name', 'plugin_version', 'description',
'node_groups', 'anti_affinity', 'use_autoconfig', 'is_default', 'node_groups', 'anti_affinity', 'use_autoconfig', 'is_default',
'is_protected', 'is_public'] 'is_protected', 'is_public']
@ -36,7 +36,7 @@ def _format_node_groups_list(node_groups):
def _format_ct_output(data): def _format_ct_output(data):
data['version'] = data.pop('hadoop_version') data['plugin_version'] = data.pop('hadoop_version')
data['node_groups'] = _format_node_groups_list(data['node_groups']) data['node_groups'] = _format_node_groups_list(data['node_groups'])
data['anti_affinity'] = osc_utils.format_list(data['anti_affinity']) data['anti_affinity'] = osc_utils.format_list(data['anti_affinity'])
@ -59,8 +59,8 @@ def _configure_node_groups(node_groups, client):
raise exceptions.CommandError('Node groups with the same plugins ' raise exceptions.CommandError('Node groups with the same plugins '
'and versions must be specified') 'and versions must be specified')
plugin, version = plugins_versions.pop() plugin, plugin_version = plugins_versions.pop()
return plugin, version, node_groups return plugin, plugin_version, node_groups
class CreateClusterTemplate(show.ShowOne): class CreateClusterTemplate(show.ShowOne):
@ -180,13 +180,13 @@ class CreateClusterTemplate(show.ShowOne):
'An error occurred when reading ' 'An error occurred when reading '
'shares from file %s: %s' % (parsed_args.shares, e)) 'shares from file %s: %s' % (parsed_args.shares, e))
plugin, version, node_groups = _configure_node_groups( plugin, plugin_version, node_groups = _configure_node_groups(
parsed_args.node_groups, client) parsed_args.node_groups, client)
data = client.cluster_templates.create( data = client.cluster_templates.create(
name=parsed_args.name, name=parsed_args.name,
plugin_name=plugin, plugin_name=plugin,
hadoop_version=version, hadoop_version=plugin_version,
description=parsed_args.description, description=parsed_args.description,
node_groups=node_groups, node_groups=node_groups,
use_autoconfig=parsed_args.autoconfig, use_autoconfig=parsed_args.autoconfig,
@ -222,8 +222,8 @@ class ListClusterTemplates(lister.Lister):
) )
parser.add_argument( parser.add_argument(
'--version', '--plugin-version',
metavar="<version>", metavar="<plugin_version>",
help="List cluster templates with specific version of the " help="List cluster templates with specific version of the "
"plugin" "plugin"
) )
@ -243,8 +243,8 @@ class ListClusterTemplates(lister.Lister):
search_opts = {} search_opts = {}
if parsed_args.plugin: if parsed_args.plugin:
search_opts['plugin_name'] = parsed_args.plugin search_opts['plugin_name'] = parsed_args.plugin
if parsed_args.version: if parsed_args.plugin_version:
search_opts['hadoop_version'] = parsed_args.version search_opts['hadoop_version'] = parsed_args.plugin_version
data = client.cluster_templates.list(search_opts=search_opts) data = client.cluster_templates.list(search_opts=search_opts)
@ -255,12 +255,12 @@ class ListClusterTemplates(lister.Lister):
columns = ('name', 'id', 'plugin_name', 'hadoop_version', columns = ('name', 'id', 'plugin_name', 'hadoop_version',
'node_groups', 'description') 'node_groups', 'description')
column_headers = utils.prepare_column_headers( column_headers = utils.prepare_column_headers(
columns, {'hadoop_version': 'version'}) columns, {'hadoop_version': 'plugin_version'})
else: else:
columns = ('name', 'id', 'plugin_name', 'hadoop_version') columns = ('name', 'id', 'plugin_name', 'hadoop_version')
column_headers = utils.prepare_column_headers( column_headers = utils.prepare_column_headers(
columns, {'hadoop_version': 'version'}) columns, {'hadoop_version': 'plugin_version'})
return ( return (
column_headers, column_headers,
@ -448,9 +448,9 @@ class UpdateClusterTemplate(show.ShowOne):
data = client.cluster_templates.update( data = client.cluster_templates.update(
ct_id, **template).to_dict() ct_id, **template).to_dict()
else: else:
plugin, version, node_groups = None, None, None plugin, plugin_version, node_groups = None, None, None
if parsed_args.node_groups: if parsed_args.node_groups:
plugin, version, node_groups = _configure_node_groups( plugin, plugin_version, node_groups = _configure_node_groups(
parsed_args.node_groups, client) parsed_args.node_groups, client)
configs = None configs = None
@ -476,7 +476,7 @@ class UpdateClusterTemplate(show.ShowOne):
update_dict = utils.create_dict_from_kwargs( update_dict = utils.create_dict_from_kwargs(
name=parsed_args.name, name=parsed_args.name,
plugin_name=plugin, plugin_name=plugin,
hadoop_version=version, hadoop_version=plugin_version,
description=parsed_args.description, description=parsed_args.description,
node_groups=node_groups, node_groups=node_groups,
use_autoconfig=parsed_args.use_autoconfig, use_autoconfig=parsed_args.use_autoconfig,

View File

@ -27,7 +27,7 @@ from saharaclient.osc.v1 import utils
CLUSTER_FIELDS = ["cluster_template_id", "use_autoconfig", "user_keypair_id", CLUSTER_FIELDS = ["cluster_template_id", "use_autoconfig", "user_keypair_id",
"status", "image", "node_groups", "id", "status", "image", "node_groups", "id",
"anti_affinity", "version", "name", "is_transient", "anti_affinity", "plugin_version", "name", "is_transient",
"is_protected", "description", "is_public", "is_protected", "description", "is_public",
"neutron_management_network", "plugin_name"] "neutron_management_network", "plugin_name"]
@ -38,7 +38,7 @@ def _format_node_groups_list(node_groups):
def _format_cluster_output(data): def _format_cluster_output(data):
data['version'] = data.pop('hadoop_version') data['plugin_version'] = data.pop('hadoop_version')
data['image'] = data.pop('default_image_id') data['image'] = data.pop('default_image_id')
data['node_groups'] = _format_node_groups_list(data['node_groups']) data['node_groups'] = _format_node_groups_list(data['node_groups'])
data['anti_affinity'] = osc_utils.format_list(data['anti_affinity']) data['anti_affinity'] = osc_utils.format_list(data['anti_affinity'])
@ -171,7 +171,7 @@ class CreateCluster(show.ShowOne):
'should be specified or json template should be provided ' 'should be specified or json template should be provided '
'with --json argument') 'with --json argument')
plugin, version, template_id = _get_plugin_version( plugin, plugin_version, template_id = _get_plugin_version(
parsed_args.cluster_template, client) parsed_args.cluster_template, client)
image_id = utils.get_resource_id(client.images, parsed_args.image) image_id = utils.get_resource_id(client.images, parsed_args.image)
@ -183,7 +183,7 @@ class CreateCluster(show.ShowOne):
data = client.clusters.create( data = client.clusters.create(
name=parsed_args.name, name=parsed_args.name,
plugin_name=plugin, plugin_name=plugin,
hadoop_version=version, hadoop_version=plugin_version,
cluster_template_id=template_id, cluster_template_id=template_id,
default_image_id=image_id, default_image_id=image_id,
description=parsed_args.description, description=parsed_args.description,
@ -245,8 +245,8 @@ class ListClusters(lister.Lister):
) )
parser.add_argument( parser.add_argument(
'--version', '--plugin-version',
metavar="<version>", metavar="<plugin_version>",
help="List clusters with specific version of the " help="List clusters with specific version of the "
"plugin" "plugin"
) )
@ -265,8 +265,8 @@ class ListClusters(lister.Lister):
search_opts = {} search_opts = {}
if parsed_args.plugin: if parsed_args.plugin:
search_opts['plugin_name'] = parsed_args.plugin search_opts['plugin_name'] = parsed_args.plugin
if parsed_args.version: if parsed_args.plugin_version:
search_opts['hadoop_version'] = parsed_args.version search_opts['hadoop_version'] = parsed_args.plugin_version
data = client.clusters.list(search_opts=search_opts) data = client.clusters.list(search_opts=search_opts)
@ -277,13 +277,13 @@ class ListClusters(lister.Lister):
columns = ('name', 'id', 'plugin_name', 'hadoop_version', columns = ('name', 'id', 'plugin_name', 'hadoop_version',
'status', 'description', 'default_image_id') 'status', 'description', 'default_image_id')
column_headers = utils.prepare_column_headers( column_headers = utils.prepare_column_headers(
columns, {'hadoop_version': 'version', columns, {'hadoop_version': 'plugin_version',
'default_image_id': 'image'}) 'default_image_id': 'image'})
else: else:
columns = ('name', 'id', 'plugin_name', 'hadoop_version', 'status') columns = ('name', 'id', 'plugin_name', 'hadoop_version', 'status')
column_headers = utils.prepare_column_headers( column_headers = utils.prepare_column_headers(
columns, {'hadoop_version': 'version', columns, {'hadoop_version': 'plugin_version',
'default_image_id': 'image'}) 'default_image_id': 'image'})
return ( return (
column_headers, column_headers,

View File

@ -46,8 +46,8 @@ class ListJobTypes(lister.Lister):
help="Get only job types supported by this plugin" help="Get only job types supported by this plugin"
) )
parser.add_argument( parser.add_argument(
'--version', '--plugin-version',
metavar="<version>", metavar="<plugin_version>",
help="Get only job types supported by specific version of the " help="Get only job types supported by specific version of the "
"plugin. This parameter will be taken into account only if " "plugin. This parameter will be taken into account only if "
"plugin is provided" "plugin is provided"
@ -64,11 +64,11 @@ class ListJobTypes(lister.Lister):
search_opts['type'] = parsed_args.type search_opts['type'] = parsed_args.type
if parsed_args.plugin: if parsed_args.plugin:
search_opts['plugin'] = parsed_args.plugin search_opts['plugin'] = parsed_args.plugin
if parsed_args.version: if parsed_args.plugin_version:
search_opts['version'] = parsed_args.version search_opts['plugin_version'] = parsed_args.plugin_version
elif parsed_args.version: elif parsed_args.plugin_version:
raise exceptions.CommandError( raise exceptions.CommandError(
'--version argument should be specified with --plugin ' '--plugin-version argument should be specified with --plugin '
'argument') 'argument')
data = client.job_types.list(search_opts=search_opts) data = client.job_types.list(search_opts=search_opts)

View File

@ -25,7 +25,7 @@ from oslo_log import log as logging
from saharaclient.osc.v1 import utils from saharaclient.osc.v1 import utils
NGT_FIELDS = ['id', 'name', 'plugin_name', 'version', 'node_processes', NGT_FIELDS = ['id', 'name', 'plugin_name', 'plugin_version', 'node_processes',
'description', 'auto_security_group', 'security_groups', 'description', 'auto_security_group', 'security_groups',
'availability_zone', 'flavor_id', 'floating_ip_pool', 'availability_zone', 'flavor_id', 'floating_ip_pool',
'volumes_per_node', 'volumes_size', 'volumes_per_node', 'volumes_size',
@ -36,7 +36,7 @@ NGT_FIELDS = ['id', 'name', 'plugin_name', 'version', 'node_processes',
def _format_ngt_output(data): def _format_ngt_output(data):
data['node_processes'] = osc_utils.format_list(data['node_processes']) data['node_processes'] = osc_utils.format_list(data['node_processes'])
data['version'] = data.pop('hadoop_version') data['plugin_version'] = data.pop('hadoop_version')
if data['volumes_per_node'] == 0: if data['volumes_per_node'] == 0:
del data['volume_local_to_instance'] del data['volume_local_to_instance']
del data['volume_mount_prefix'] del data['volume_mount_prefix']
@ -65,8 +65,8 @@ class CreateNodeGroupTemplate(show.ShowOne):
help="Name of the plugin [REQUIRED if JSON is not provided]" help="Name of the plugin [REQUIRED if JSON is not provided]"
) )
parser.add_argument( parser.add_argument(
'--version', '--plugin-version',
metavar="<version>", metavar="<plugin_version>",
help="Version of the plugin [REQUIRED if JSON is not provided]" help="Version of the plugin [REQUIRED if JSON is not provided]"
) )
parser.add_argument( parser.add_argument(
@ -215,11 +215,11 @@ class CreateNodeGroupTemplate(show.ShowOne):
data = client.node_group_templates.create(**template).to_dict() data = client.node_group_templates.create(**template).to_dict()
else: else:
if (not parsed_args.name or not parsed_args.plugin or if (not parsed_args.name or not parsed_args.plugin or
not parsed_args.version or not parsed_args.flavor or not parsed_args.plugin_version or not parsed_args.flavor or
not parsed_args.processes): not parsed_args.processes):
raise exceptions.CommandError( raise exceptions.CommandError(
'At least --name, --plugin, --version, --processes, ' 'At least --name, --plugin, --plugin-version, --processes,'
'--flavor arguments should be specified or json template ' ' --flavor arguments should be specified or json template '
'should be provided with --json argument') 'should be provided with --json argument')
configs = None configs = None
@ -249,7 +249,7 @@ class CreateNodeGroupTemplate(show.ShowOne):
data = client.node_group_templates.create( data = client.node_group_templates.create(
name=parsed_args.name, name=parsed_args.name,
plugin_name=parsed_args.plugin, plugin_name=parsed_args.plugin,
hadoop_version=parsed_args.version, hadoop_version=parsed_args.plugin_version,
flavor_id=flavor_id, flavor_id=flavor_id,
description=parsed_args.description, description=parsed_args.description,
volumes_per_node=parsed_args.volumes_per_node, volumes_per_node=parsed_args.volumes_per_node,
@ -296,8 +296,8 @@ class ListNodeGroupTemplates(lister.Lister):
) )
parser.add_argument( parser.add_argument(
'--version', '--plugin-version',
metavar="<version>", metavar="<plugin_version>",
help="List node group templates with specific version of the " help="List node group templates with specific version of the "
"plugin" "plugin"
) )
@ -317,8 +317,8 @@ class ListNodeGroupTemplates(lister.Lister):
search_opts = {} search_opts = {}
if parsed_args.plugin: if parsed_args.plugin:
search_opts['plugin_name'] = parsed_args.plugin search_opts['plugin_name'] = parsed_args.plugin
if parsed_args.version: if parsed_args.plugin_version:
search_opts['hadoop_version'] = parsed_args.version search_opts['hadoop_version'] = parsed_args.plugin_version
data = client.node_group_templates.list(search_opts=search_opts) data = client.node_group_templates.list(search_opts=search_opts)
@ -329,12 +329,12 @@ class ListNodeGroupTemplates(lister.Lister):
columns = ('name', 'id', 'plugin_name', 'hadoop_version', columns = ('name', 'id', 'plugin_name', 'hadoop_version',
'node_processes', 'description') 'node_processes', 'description')
column_headers = utils.prepare_column_headers( column_headers = utils.prepare_column_headers(
columns, {'hadoop_version': 'version'}) columns, {'hadoop_version': 'plugin_version'})
else: else:
columns = ('name', 'id', 'plugin_name', 'hadoop_version') columns = ('name', 'id', 'plugin_name', 'hadoop_version')
column_headers = utils.prepare_column_headers( column_headers = utils.prepare_column_headers(
columns, {'hadoop_version': 'version'}) columns, {'hadoop_version': 'plugin_version'})
return ( return (
column_headers, column_headers,
@ -430,8 +430,8 @@ class UpdateNodeGroupTemplate(show.ShowOne):
help="Name of the plugin" help="Name of the plugin"
) )
parser.add_argument( parser.add_argument(
'--version', '--plugin-version',
metavar="<version>", metavar="<plugin_version>",
help="Version of the plugin" help="Version of the plugin"
) )
parser.add_argument( parser.add_argument(
@ -663,7 +663,7 @@ class UpdateNodeGroupTemplate(show.ShowOne):
update_dict = utils.create_dict_from_kwargs( update_dict = utils.create_dict_from_kwargs(
name=parsed_args.name, name=parsed_args.name,
plugin_name=parsed_args.plugin, plugin_name=parsed_args.plugin,
hadoop_version=parsed_args.version, hadoop_version=parsed_args.plugin_version,
flavor_id=flavor_id, flavor_id=flavor_id,
description=parsed_args.description, description=parsed_args.description,
volumes_per_node=parsed_args.volumes_per_node, volumes_per_node=parsed_args.volumes_per_node,

View File

@ -80,7 +80,8 @@ class ShowPlugin(show.ShowOne):
help="Name of the plugin to display", help="Name of the plugin to display",
) )
parser.add_argument( parser.add_argument(
"--version", "--plugin-version",
metavar="<plugin_version>",
help='Version of the plugin to display' help='Version of the plugin to display'
) )
@ -90,9 +91,9 @@ class ShowPlugin(show.ShowOne):
self.log.debug("take_action(%s)" % parsed_args) self.log.debug("take_action(%s)" % parsed_args)
client = self.app.client_manager.data_processing client = self.app.client_manager.data_processing
if parsed_args.version: if parsed_args.plugin_version:
data = client.plugins.get_version_details( data = client.plugins.get_version_details(
parsed_args.plugin, parsed_args.version).to_dict() parsed_args.plugin, parsed_args.plugin_version).to_dict()
processes = data.pop('node_processes') processes = data.pop('node_processes')
for k, v in processes.items(): for k, v in processes.items():
@ -129,8 +130,8 @@ class GetPluginConfigs(command.Command):
help="Name of the plugin to provide config information about", help="Name of the plugin to provide config information about",
) )
parser.add_argument( parser.add_argument(
"version", "plugin_version",
metavar="<version>", metavar="<plugin_version>",
help="Version of the plugin to provide config information about", help="Version of the plugin to provide config information about",
) )
parser.add_argument( parser.add_argument(
@ -148,7 +149,7 @@ class GetPluginConfigs(command.Command):
parsed_args.file = parsed_args.plugin parsed_args.file = parsed_args.plugin
data = client.plugins.get_version_details( data = client.plugins.get_version_details(
parsed_args.plugin, parsed_args.version).to_dict() parsed_args.plugin, parsed_args.plugin_version).to_dict()
if path.exists(parsed_args.file): if path.exists(parsed_args.file):
self.log.error('File "%s" already exists. Chose another one with ' self.log.error('File "%s" already exists. Chose another one with '

View File

@ -113,13 +113,13 @@ class TestCreateClusterTemplate(TestClusterTemplates):
# Check that columns are correct # Check that columns are correct
expected_columns = ('Anti affinity', 'Description', 'Id', 'Is default', expected_columns = ('Anti affinity', 'Description', 'Id', 'Is default',
'Is protected', 'Is public', 'Name', 'Node groups', 'Is protected', 'Is public', 'Name', 'Node groups',
'Plugin name', 'Use autoconfig', 'Version') 'Plugin name', 'Plugin version', 'Use autoconfig')
self.assertEqual(expected_columns, columns) self.assertEqual(expected_columns, columns)
# Check that data is correct # Check that data is correct
expected_data = ('', 'Cluster template for tests', expected_data = ('', 'Cluster template for tests',
'0647061f-ab98-4c89-84e0-30738ea55750', False, False, '0647061f-ab98-4c89-84e0-30738ea55750', False, False,
False, 'template', 'fakeng:2', 'fake', True, '0.1') False, 'template', 'fakeng:2', 'fake', '0.1', True)
self.assertEqual(expected_data, data) self.assertEqual(expected_data, data)
@ -141,7 +141,7 @@ class TestListClusterTemplates(TestClusterTemplates):
columns, data = self.cmd.take_action(parsed_args) columns, data = self.cmd.take_action(parsed_args)
# Check that columns are correct # Check that columns are correct
expected_columns = ['Name', 'Id', 'Plugin name', 'Version'] expected_columns = ['Name', 'Id', 'Plugin name', 'Plugin version']
self.assertEqual(expected_columns, columns) self.assertEqual(expected_columns, columns)
# Check that data is correct # Check that data is correct
@ -158,7 +158,7 @@ class TestListClusterTemplates(TestClusterTemplates):
columns, data = self.cmd.take_action(parsed_args) columns, data = self.cmd.take_action(parsed_args)
# Check that columns are correct # Check that columns are correct
expected_columns = ['Name', 'Id', 'Plugin name', 'Version', expected_columns = ['Name', 'Id', 'Plugin name', 'Plugin version',
'Node groups', 'Description'] 'Node groups', 'Description']
self.assertEqual(expected_columns, columns) self.assertEqual(expected_columns, columns)
@ -169,8 +169,9 @@ class TestListClusterTemplates(TestClusterTemplates):
self.assertEqual(expected_data, list(data)) self.assertEqual(expected_data, list(data))
def test_ct_list_extra_search_opts(self): def test_ct_list_extra_search_opts(self):
arglist = ['--plugin', 'fake', '--version', '0.1', '--name', 'templ'] arglist = ['--plugin', 'fake', '--plugin-version', '0.1', '--name',
verifylist = [('plugin', 'fake'), ('version', '0.1'), 'templ']
verifylist = [('plugin', 'fake'), ('plugin_version', '0.1'),
('name', 'templ')] ('name', 'templ')]
parsed_args = self.check_parser(self.cmd, arglist, verifylist) parsed_args = self.check_parser(self.cmd, arglist, verifylist)
@ -178,7 +179,7 @@ class TestListClusterTemplates(TestClusterTemplates):
columns, data = self.cmd.take_action(parsed_args) columns, data = self.cmd.take_action(parsed_args)
# Check that columns are correct # Check that columns are correct
expected_columns = ['Name', 'Id', 'Plugin name', 'Version'] expected_columns = ['Name', 'Id', 'Plugin name', 'Plugin version']
self.assertEqual(expected_columns, columns) self.assertEqual(expected_columns, columns)
# Check that data is correct # Check that data is correct
@ -210,14 +211,14 @@ class TestShowClusterTemplate(TestClusterTemplates):
# Check that columns are correct # Check that columns are correct
expected_columns = ('Anti affinity', 'Description', 'Id', 'Is default', expected_columns = ('Anti affinity', 'Description', 'Id', 'Is default',
'Is protected', 'Is public', 'Name', 'Node groups', 'Is protected', 'Is public', 'Name', 'Node groups',
'Plugin name', 'Use autoconfig', 'Version') 'Plugin name', 'Plugin version', 'Use autoconfig')
self.assertEqual(expected_columns, columns) self.assertEqual(expected_columns, columns)
# Check that data is correct # Check that data is correct
expected_data = ( expected_data = (
'', 'Cluster template for tests', '', 'Cluster template for tests',
'0647061f-ab98-4c89-84e0-30738ea55750', False, False, False, '0647061f-ab98-4c89-84e0-30738ea55750', False, False, False,
'template', 'fakeng:2', 'fake', True, '0.1') 'template', 'fakeng:2', 'fake', '0.1', True)
self.assertEqual(expected_data, data) self.assertEqual(expected_data, data)
@ -304,13 +305,13 @@ class TestUpdateClusterTemplate(TestClusterTemplates):
# Check that columns are correct # Check that columns are correct
expected_columns = ('Anti affinity', 'Description', 'Id', 'Is default', expected_columns = ('Anti affinity', 'Description', 'Id', 'Is default',
'Is protected', 'Is public', 'Name', 'Node groups', 'Is protected', 'Is public', 'Name', 'Node groups',
'Plugin name', 'Use autoconfig', 'Version') 'Plugin name', 'Plugin version', 'Use autoconfig')
self.assertEqual(expected_columns, columns) self.assertEqual(expected_columns, columns)
# Check that data is correct # Check that data is correct
expected_data = ('', 'Cluster template for tests', expected_data = ('', 'Cluster template for tests',
'0647061f-ab98-4c89-84e0-30738ea55750', False, False, '0647061f-ab98-4c89-84e0-30738ea55750', False, False,
False, 'template', 'fakeng:2', 'fake', True, '0.1') False, 'template', 'fakeng:2', 'fake', '0.1', True)
self.assertEqual(expected_data, data) self.assertEqual(expected_data, data)
def test_ct_update_private_unprotected(self): def test_ct_update_private_unprotected(self):

View File

@ -158,15 +158,15 @@ class TestCreateCluster(TestClusters):
'Description', 'Id', 'Image', 'Description', 'Id', 'Image',
'Is protected', 'Is public', 'Name', 'Is protected', 'Is public', 'Name',
'Neutron management network', 'Node groups', 'Neutron management network', 'Node groups',
'Plugin name', 'Status', 'Use autoconfig', 'Plugin name', 'Plugin version', 'Status',
'User keypair id', 'Version') 'Use autoconfig', 'User keypair id')
self.assertEqual(expected_columns, columns) self.assertEqual(expected_columns, columns)
# Check that data is correct # Check that data is correct
expected_data = ('', 'ct_id', 'Cluster template for tests', expected_data = ('', 'ct_id', 'Cluster template for tests',
'cluster_id', 'img_id', False, False, 'fake', 'cluster_id', 'img_id', False, False, 'fake',
'net_id', 'fakeng:2', 'fake', 'Active', True, 'test', 'net_id', 'fakeng:2', 'fake', '0.1', 'Active', True,
'0.1') 'test')
self.assertEqual(expected_data, data) self.assertEqual(expected_data, data)
def test_cluster_create_with_count(self): def test_cluster_create_with_count(self):
@ -219,7 +219,8 @@ class TestListClusters(TestClusters):
columns, data = self.cmd.take_action(parsed_args) columns, data = self.cmd.take_action(parsed_args)
# Check that columns are correct # Check that columns are correct
expected_columns = ['Name', 'Id', 'Plugin name', 'Version', 'Status'] expected_columns = ['Name', 'Id', 'Plugin name', 'Plugin version',
'Status']
self.assertEqual(expected_columns, columns) self.assertEqual(expected_columns, columns)
# Check that data is correct # Check that data is correct
@ -235,8 +236,8 @@ class TestListClusters(TestClusters):
columns, data = self.cmd.take_action(parsed_args) columns, data = self.cmd.take_action(parsed_args)
# Check that columns are correct # Check that columns are correct
expected_columns = ['Name', 'Id', 'Plugin name', 'Version', 'Status', expected_columns = ['Name', 'Id', 'Plugin name', 'Plugin version',
'Description', 'Image'] 'Status', 'Description', 'Image']
self.assertEqual(expected_columns, columns) self.assertEqual(expected_columns, columns)
# Check that data is correct # Check that data is correct
@ -245,8 +246,9 @@ class TestListClusters(TestClusters):
self.assertEqual(expected_data, list(data)) self.assertEqual(expected_data, list(data))
def test_clusters_list_extra_search_opts(self): def test_clusters_list_extra_search_opts(self):
arglist = ['--plugin', 'fake', '--version', '0.1', '--name', 'fake'] arglist = ['--plugin', 'fake', '--plugin-version', '0.1', '--name',
verifylist = [('plugin', 'fake'), ('version', '0.1'), 'fake']
verifylist = [('plugin', 'fake'), ('plugin_version', '0.1'),
('name', 'fake')] ('name', 'fake')]
parsed_args = self.check_parser(self.cmd, arglist, verifylist) parsed_args = self.check_parser(self.cmd, arglist, verifylist)
@ -254,7 +256,8 @@ class TestListClusters(TestClusters):
columns, data = self.cmd.take_action(parsed_args) columns, data = self.cmd.take_action(parsed_args)
# Check that columns are correct # Check that columns are correct
expected_columns = ['Name', 'Id', 'Plugin name', 'Version', 'Status'] expected_columns = ['Name', 'Id', 'Plugin name', 'Plugin version',
'Status']
self.assertEqual(expected_columns, columns) self.assertEqual(expected_columns, columns)
# Check that data is correct # Check that data is correct
@ -287,15 +290,15 @@ class TestShowCluster(TestClusters):
'Description', 'Id', 'Image', 'Description', 'Id', 'Image',
'Is protected', 'Is public', 'Name', 'Is protected', 'Is public', 'Name',
'Neutron management network', 'Node groups', 'Neutron management network', 'Node groups',
'Plugin name', 'Status', 'Use autoconfig', 'Plugin name', 'Plugin version', 'Status',
'User keypair id', 'Version') 'Use autoconfig', 'User keypair id')
self.assertEqual(expected_columns, columns) self.assertEqual(expected_columns, columns)
# Check that data is correct # Check that data is correct
expected_data = ('', 'ct_id', 'Cluster template for tests', expected_data = ('', 'ct_id', 'Cluster template for tests',
'cluster_id', 'img_id', False, False, 'fake', 'cluster_id', 'img_id', False, False, 'fake',
'net_id', 'fakeng:2', 'fake', 'Active', True, 'test', 'net_id', 'fakeng:2', 'fake', '0.1', 'Active', True,
'0.1') 'test')
self.assertEqual(expected_data, data) self.assertEqual(expected_data, data)
def test_cluster_show_verification(self): def test_cluster_show_verification(self):
@ -314,16 +317,16 @@ class TestShowCluster(TestClusters):
'Description', 'Health check (some check)', 'Id', 'Description', 'Health check (some check)', 'Id',
'Image', 'Is protected', 'Is public', 'Name', 'Image', 'Is protected', 'Is public', 'Name',
'Neutron management network', 'Node groups', 'Neutron management network', 'Node groups',
'Plugin name', 'Status', 'Use autoconfig', 'Plugin name', 'Plugin version', 'Status',
'User keypair id', 'Verification status', 'Use autoconfig', 'User keypair id',
'Version') 'Verification status')
self.assertEqual(expected_columns, columns) self.assertEqual(expected_columns, columns)
# Check that data is correct # Check that data is correct
expected_data = ('', 'ct_id', 'Cluster template for tests', 'GREEN', expected_data = ('', 'ct_id', 'Cluster template for tests', 'GREEN',
'cluster_id', 'img_id', False, False, 'fake', 'cluster_id', 'img_id', False, False, 'fake',
'net_id', 'fakeng:2', 'fake', 'Active', True, 'test', 'net_id', 'fakeng:2', 'fake', '0.1', 'Active', True,
'GREEN', '0.1') 'test', 'GREEN')
self.assertEqual(expected_data, data) self.assertEqual(expected_data, data)
@ -400,15 +403,15 @@ class TestUpdateCluster(TestClusters):
'Description', 'Id', 'Image', 'Description', 'Id', 'Image',
'Is protected', 'Is public', 'Name', 'Is protected', 'Is public', 'Name',
'Neutron management network', 'Node groups', 'Neutron management network', 'Node groups',
'Plugin name', 'Status', 'Use autoconfig', 'Plugin name', 'Plugin version', 'Status',
'User keypair id', 'Version') 'Use autoconfig', 'User keypair id')
self.assertEqual(expected_columns, columns) self.assertEqual(expected_columns, columns)
# Check that data is correct # Check that data is correct
expected_data = ('', 'ct_id', 'Cluster template for tests', expected_data = ('', 'ct_id', 'Cluster template for tests',
'cluster_id', 'img_id', False, False, 'fake', 'cluster_id', 'img_id', False, False, 'fake',
'net_id', 'fakeng:2', 'fake', 'Active', True, 'test', 'net_id', 'fakeng:2', 'fake', '0.1', 'Active', True,
'0.1') 'test')
self.assertEqual(expected_data, data) self.assertEqual(expected_data, data)
def test_cluster_update_private_unprotected(self): def test_cluster_update_private_unprotected(self):
@ -469,15 +472,15 @@ class TestScaleCluster(TestClusters):
'Description', 'Id', 'Image', 'Description', 'Id', 'Image',
'Is protected', 'Is public', 'Name', 'Is protected', 'Is public', 'Name',
'Neutron management network', 'Node groups', 'Neutron management network', 'Node groups',
'Plugin name', 'Status', 'Use autoconfig', 'Plugin name', 'Plugin version', 'Status',
'User keypair id', 'Version') 'Use autoconfig', 'User keypair id')
self.assertEqual(expected_columns, columns) self.assertEqual(expected_columns, columns)
# Check that data is correct # Check that data is correct
expected_data = ('', 'ct_id', 'Cluster template for tests', expected_data = ('', 'ct_id', 'Cluster template for tests',
'cluster_id', 'img_id', False, False, 'fake', 'cluster_id', 'img_id', False, False, 'fake',
'net_id', 'fakeng:2', 'fake', 'Active', True, 'test', 'net_id', 'fakeng:2', 'fake', '0.1', 'Active', True,
'0.1') 'test')
self.assertEqual(expected_data, data) self.assertEqual(expected_data, data)
def test_cluster_scale_add_ng(self): def test_cluster_scale_add_ng(self):

View File

@ -75,8 +75,10 @@ class TestListJobTemplates(TestJobTypes):
self.assertEqual(expected_data, list(data)) self.assertEqual(expected_data, list(data))
def test_job_types_list_extra_search_opts(self): def test_job_types_list_extra_search_opts(self):
arglist = ['--type', 'Pig', '--plugin', 'fake', '--version', '0.1'] arglist = ['--type', 'Pig', '--plugin', 'fake', '--plugin-version',
verifylist = [('type', 'Pig'), ('plugin', 'fake'), ('version', '0.1')] '0.1']
verifylist = [('type', 'Pig'), ('plugin', 'fake'),
('plugin_version', '0.1')]
parsed_args = self.check_parser(self.cmd, arglist, verifylist) parsed_args = self.check_parser(self.cmd, arglist, verifylist)

View File

@ -77,11 +77,11 @@ class TestCreateNodeGroupTemplate(TestNodeGroupTemplates):
self.cmd = osc_ngt.CreateNodeGroupTemplate(self.app, None) self.cmd = osc_ngt.CreateNodeGroupTemplate(self.app, None)
def test_ngt_create_minimum_options(self): def test_ngt_create_minimum_options(self):
arglist = ['--name', 'template', '--plugin', 'fake', '--version', arglist = ['--name', 'template', '--plugin', 'fake',
'0.1', '--processes', 'namenode', 'tasktracker', '--plugin-version', '0.1', '--processes', 'namenode',
'--flavor', 'flavor_id'] 'tasktracker', '--flavor', 'flavor_id']
verifylist = [('name', 'template'), ('plugin', 'fake'), verifylist = [('name', 'template'), ('plugin', 'fake'),
('version', '0.1'), ('flavor', 'flavor_id'), ('plugin_version', '0.1'), ('flavor', 'flavor_id'),
('processes', ['namenode', 'tasktracker'])] ('processes', ['namenode', 'tasktracker'])]
parsed_args = self.check_parser(self.cmd, arglist, verifylist) parsed_args = self.check_parser(self.cmd, arglist, verifylist)
@ -102,11 +102,12 @@ class TestCreateNodeGroupTemplate(TestNodeGroupTemplates):
node_configs=None) node_configs=None)
def test_ngt_create_all_options(self): def test_ngt_create_all_options(self):
arglist = ['--name', 'template', '--plugin', 'fake', '--version', arglist = ['--name', 'template', '--plugin', 'fake',
'0.1', '--processes', 'namenode', 'tasktracker', '--plugin-version', '0.1', '--processes', 'namenode',
'--security-groups', 'secgr', '--auto-security-group', 'tasktracker', '--security-groups', 'secgr',
'--availability-zone', 'av_zone', '--flavor', 'flavor_id', '--auto-security-group', '--availability-zone', 'av_zone',
'--floating-ip-pool', 'floating_pool', '--volumes-per-node', '--flavor', 'flavor_id', '--floating-ip-pool',
'floating_pool', '--volumes-per-node',
'2', '--volumes-size', '2', '--volumes-type', 'type', '2', '--volumes-size', '2', '--volumes-type', 'type',
'--volumes-availability-zone', 'vavzone', '--volumes-availability-zone', 'vavzone',
'--volumes-mount-prefix', '/volume/asd', '--volumes-mount-prefix', '/volume/asd',
@ -115,7 +116,7 @@ class TestCreateNodeGroupTemplate(TestNodeGroupTemplates):
'--protected'] '--protected']
verifylist = [('name', 'template'), ('plugin', 'fake'), verifylist = [('name', 'template'), ('plugin', 'fake'),
('version', '0.1'), ('plugin_version', '0.1'),
('processes', ['namenode', 'tasktracker']), ('processes', ['namenode', 'tasktracker']),
('security_groups', ['secgr']), ('security_groups', ['secgr']),
('auto_security_group', True), ('auto_security_group', True),
@ -151,8 +152,8 @@ class TestCreateNodeGroupTemplate(TestNodeGroupTemplates):
'Auto security group', 'Availability zone', 'Description', 'Auto security group', 'Availability zone', 'Description',
'Flavor id', 'Floating ip pool', 'Id', 'Is default', 'Flavor id', 'Floating ip pool', 'Id', 'Is default',
'Is protected', 'Is proxy gateway', 'Is public', 'Name', 'Is protected', 'Is proxy gateway', 'Is public', 'Name',
'Node processes', 'Plugin name', 'Security groups', 'Node processes', 'Plugin name', 'Plugin version',
'Use autoconfig', 'Version', 'Volume local to instance', 'Security groups', 'Use autoconfig', 'Volume local to instance',
'Volume mount prefix', 'Volume type', 'Volumes availability zone', 'Volume mount prefix', 'Volume type', 'Volumes availability zone',
'Volumes per node', 'Volumes size') 'Volumes per node', 'Volumes size')
self.assertEqual(expected_columns, columns) self.assertEqual(expected_columns, columns)
@ -161,8 +162,8 @@ class TestCreateNodeGroupTemplate(TestNodeGroupTemplates):
expected_data = ( expected_data = (
True, 'av_zone', 'description', 'flavor_id', 'floating_pool', True, 'av_zone', 'description', 'flavor_id', 'floating_pool',
'ng_id', False, False, False, 'ng_id', False, False, False,
True, 'template', 'namenode, tasktracker', 'fake', None, True, True, 'template', 'namenode, tasktracker', 'fake', '0.1',
'0.1', False, '/volumes/disk', None, None, 2, 2) None, True, False, '/volumes/disk', None, None, 2, 2)
self.assertEqual(expected_data, data) self.assertEqual(expected_data, data)
@ -184,7 +185,7 @@ class TestListNodeGroupTemplates(TestNodeGroupTemplates):
columns, data = self.cmd.take_action(parsed_args) columns, data = self.cmd.take_action(parsed_args)
# Check that columns are correct # Check that columns are correct
expected_columns = ['Name', 'Id', 'Plugin name', 'Version'] expected_columns = ['Name', 'Id', 'Plugin name', 'Plugin version']
self.assertEqual(expected_columns, columns) self.assertEqual(expected_columns, columns)
# Check that data is correct # Check that data is correct
@ -200,7 +201,7 @@ class TestListNodeGroupTemplates(TestNodeGroupTemplates):
columns, data = self.cmd.take_action(parsed_args) columns, data = self.cmd.take_action(parsed_args)
# Check that columns are correct # Check that columns are correct
expected_columns = ['Name', 'Id', 'Plugin name', 'Version', expected_columns = ['Name', 'Id', 'Plugin name', 'Plugin version',
'Node processes', 'Description'] 'Node processes', 'Description']
self.assertEqual(expected_columns, columns) self.assertEqual(expected_columns, columns)
@ -210,8 +211,9 @@ class TestListNodeGroupTemplates(TestNodeGroupTemplates):
self.assertEqual(expected_data, list(data)) self.assertEqual(expected_data, list(data))
def test_ngt_list_extra_search_opts(self): def test_ngt_list_extra_search_opts(self):
arglist = ['--plugin', 'fake', '--version', '0.1', '--name', 'templ'] arglist = ['--plugin', 'fake', '--plugin-version', '0.1', '--name',
verifylist = [('plugin', 'fake'), ('version', '0.1'), 'templ']
verifylist = [('plugin', 'fake'), ('plugin_version', '0.1'),
('name', 'templ')] ('name', 'templ')]
parsed_args = self.check_parser(self.cmd, arglist, verifylist) parsed_args = self.check_parser(self.cmd, arglist, verifylist)
@ -219,7 +221,7 @@ class TestListNodeGroupTemplates(TestNodeGroupTemplates):
columns, data = self.cmd.take_action(parsed_args) columns, data = self.cmd.take_action(parsed_args)
# Check that columns are correct # Check that columns are correct
expected_columns = ['Name', 'Id', 'Plugin name', 'Version'] expected_columns = ['Name', 'Id', 'Plugin name', 'Plugin version']
self.assertEqual(expected_columns, columns) self.assertEqual(expected_columns, columns)
# Check that data is correct # Check that data is correct
@ -252,8 +254,8 @@ class TestShowNodeGroupTemplate(TestNodeGroupTemplates):
'Auto security group', 'Availability zone', 'Description', 'Auto security group', 'Availability zone', 'Description',
'Flavor id', 'Floating ip pool', 'Id', 'Is default', 'Flavor id', 'Floating ip pool', 'Id', 'Is default',
'Is protected', 'Is proxy gateway', 'Is public', 'Name', 'Is protected', 'Is proxy gateway', 'Is public', 'Name',
'Node processes', 'Plugin name', 'Security groups', 'Node processes', 'Plugin name', 'Plugin version',
'Use autoconfig', 'Version', 'Volume local to instance', 'Security groups', 'Use autoconfig', 'Volume local to instance',
'Volume mount prefix', 'Volume type', 'Volumes availability zone', 'Volume mount prefix', 'Volume type', 'Volumes availability zone',
'Volumes per node', 'Volumes size') 'Volumes per node', 'Volumes size')
self.assertEqual(expected_columns, columns) self.assertEqual(expected_columns, columns)
@ -262,7 +264,7 @@ class TestShowNodeGroupTemplate(TestNodeGroupTemplates):
expected_data = ( expected_data = (
True, 'av_zone', 'description', 'flavor_id', 'floating_pool', True, 'av_zone', 'description', 'flavor_id', 'floating_pool',
'ng_id', False, False, False, True, 'template', 'ng_id', False, False, False, True, 'template',
'namenode, tasktracker', 'fake', None, True, '0.1', False, 'namenode, tasktracker', 'fake', '0.1', None, True, False,
'/volumes/disk', None, None, 2, 2) '/volumes/disk', None, None, 2, 2)
self.assertEqual(expected_data, data) self.assertEqual(expected_data, data)
@ -324,7 +326,7 @@ class TestUpdateNodeGroupTemplate(TestNodeGroupTemplates):
def test_ngt_update_all_options(self): def test_ngt_update_all_options(self):
arglist = ['template', '--name', 'template', '--plugin', 'fake', arglist = ['template', '--name', 'template', '--plugin', 'fake',
'--version', '0.1', '--processes', 'namenode', '--plugin-version', '0.1', '--processes', 'namenode',
'tasktracker', '--security-groups', 'secgr', 'tasktracker', '--security-groups', 'secgr',
'--auto-security-group-enable', '--auto-security-group-enable',
'--availability-zone', 'av_zone', '--flavor', 'flavor_id', '--availability-zone', 'av_zone', '--flavor', 'flavor_id',
@ -338,7 +340,7 @@ class TestUpdateNodeGroupTemplate(TestNodeGroupTemplates):
verifylist = [('node_group_template', 'template'), verifylist = [('node_group_template', 'template'),
('name', 'template'), ('plugin', 'fake'), ('name', 'template'), ('plugin', 'fake'),
('version', '0.1'), ('plugin_version', '0.1'),
('processes', ['namenode', 'tasktracker']), ('processes', ['namenode', 'tasktracker']),
('security_groups', ['secgr']), ('security_groups', ['secgr']),
('use_auto_security_group', True), ('use_auto_security_group', True),
@ -376,8 +378,8 @@ class TestUpdateNodeGroupTemplate(TestNodeGroupTemplates):
'Auto security group', 'Availability zone', 'Description', 'Auto security group', 'Availability zone', 'Description',
'Flavor id', 'Floating ip pool', 'Id', 'Is default', 'Flavor id', 'Floating ip pool', 'Id', 'Is default',
'Is protected', 'Is proxy gateway', 'Is public', 'Name', 'Is protected', 'Is proxy gateway', 'Is public', 'Name',
'Node processes', 'Plugin name', 'Security groups', 'Node processes', 'Plugin name', 'Plugin version',
'Use autoconfig', 'Version', 'Volume local to instance', 'Security groups', 'Use autoconfig', 'Volume local to instance',
'Volume mount prefix', 'Volume type', 'Volumes availability zone', 'Volume mount prefix', 'Volume type', 'Volumes availability zone',
'Volumes per node', 'Volumes size') 'Volumes per node', 'Volumes size')
self.assertEqual(expected_columns, columns) self.assertEqual(expected_columns, columns)
@ -386,8 +388,8 @@ class TestUpdateNodeGroupTemplate(TestNodeGroupTemplates):
expected_data = ( expected_data = (
True, 'av_zone', 'description', 'flavor_id', 'floating_pool', True, 'av_zone', 'description', 'flavor_id', 'floating_pool',
'ng_id', False, False, False, True, 'template', 'ng_id', False, False, False, True, 'template',
'namenode, tasktracker', 'fake', None, True, 'namenode, tasktracker', 'fake', '0.1', None, True,
'0.1', False, '/volumes/disk', None, None, 2, 2) False, '/volumes/disk', None, None, 2, 2)
self.assertEqual(expected_data, data) self.assertEqual(expected_data, data)
def test_ngt_update_private_unprotected(self): def test_ngt_update_private_unprotected(self):

View File

@ -112,8 +112,8 @@ class TestShowPlugin(TestPlugins):
self.assertEqual(expected_data, data) self.assertEqual(expected_data, data)
def test_plugin_version_show(self): def test_plugin_version_show(self):
arglist = ['fake', '--version', '0.1'] arglist = ['fake', '--plugin-version', '0.1']
verifylist = [('plugin', 'fake'), ('version', '0.1')] verifylist = [('plugin', 'fake'), ('plugin_version', '0.1')]
parsed_args = self.check_parser(self.cmd, arglist, verifylist) parsed_args = self.check_parser(self.cmd, arglist, verifylist)
@ -149,7 +149,7 @@ class TestGetPluginConfigs(TestPlugins):
m_open = mock.mock_open() m_open = mock.mock_open()
with mock.patch('six.moves.builtins.open', m_open, create=True): with mock.patch('six.moves.builtins.open', m_open, create=True):
arglist = ['fake', '0.1'] arglist = ['fake', '0.1']
verifylist = [('plugin', 'fake'), ('version', '0.1')] verifylist = [('plugin', 'fake'), ('plugin_version', '0.1')]
parsed_args = self.check_parser(self.cmd, arglist, verifylist) parsed_args = self.check_parser(self.cmd, arglist, verifylist)
@ -171,7 +171,7 @@ class TestGetPluginConfigs(TestPlugins):
m_open = mock.mock_open() m_open = mock.mock_open()
with mock.patch('six.moves.builtins.open', m_open): with mock.patch('six.moves.builtins.open', m_open):
arglist = ['fake', '0.1', '--file', 'testfile'] arglist = ['fake', '0.1', '--file', 'testfile']
verifylist = [('plugin', 'fake'), ('version', '0.1'), verifylist = [('plugin', 'fake'), ('plugin_version', '0.1'),
('file', 'testfile')] ('file', 'testfile')]
parsed_args = self.check_parser(self.cmd, arglist, verifylist) parsed_args = self.check_parser(self.cmd, arglist, verifylist)