Merge "Adding node group template editing to CLI"
This commit is contained in:
@@ -355,6 +355,8 @@ def do_cluster_delete(cs, args):
|
||||
#
|
||||
# node-group-template-delete --name <template>|--id <template_id>
|
||||
#
|
||||
# node-group-template-update --name <template>|--id <template_id> --json <file>
|
||||
#
|
||||
|
||||
def do_node_group_template_list(cs, args):
|
||||
"""Print a list of available node group templates."""
|
||||
@@ -409,6 +411,36 @@ def do_node_group_template_delete(cs, args):
|
||||
# TODO(mattf): No indication of result
|
||||
|
||||
|
||||
@utils.arg('--name',
|
||||
help='Name of the node group template to update.')
|
||||
@utils.arg('--id',
|
||||
metavar='<template_id>',
|
||||
help='ID of the node group template to update')
|
||||
@utils.arg('--json',
|
||||
default=sys.stdin,
|
||||
type=argparse.FileType('r'),
|
||||
help='JSON representation of the node group template update')
|
||||
def do_node_group_template_update(cs, args):
|
||||
"""Update a node group template."""
|
||||
template = _get_by_id_or_name(cs.node_group_templates,
|
||||
name=args.name,
|
||||
id=args.id)
|
||||
update_template = json.loads(args.json.read())
|
||||
_filter_call_args(update_template, cs.node_group_templates.update)
|
||||
for param in ["plugin_name", "hadoop_version", "name", "flavor_id"]:
|
||||
if param not in update_template:
|
||||
update_template[param] = getattr(template, param, None)
|
||||
|
||||
result = cs.node_group_templates.update(
|
||||
args.id or
|
||||
template._get_by_id_or_name(cs.node_group_templates,
|
||||
name=args.name).id,
|
||||
**update_template
|
||||
)
|
||||
|
||||
_show_node_group_template(result)
|
||||
|
||||
|
||||
#
|
||||
# Cluster Templates
|
||||
# ~~~~~~~~~~~~~~~~~
|
||||
|
||||
@@ -27,7 +27,20 @@ class NodeGroupTemplateTest(base.BaseTestCase):
|
||||
"description": "description",
|
||||
"volumes_per_node": "3",
|
||||
"volumes_size": "4",
|
||||
"node_processes": ["datanode"]
|
||||
"node_processes": ["datanode"],
|
||||
}
|
||||
|
||||
update_json = {
|
||||
"node_group_template": {
|
||||
"name": "UpdatedName",
|
||||
"plugin_name": "new_plugin",
|
||||
"hadoop_version": "2",
|
||||
"flavor_id": "7",
|
||||
"description": "description",
|
||||
"volumes_per_node": "3",
|
||||
"volumes_size": "4",
|
||||
"node_processes": ["datanode", "namenode"],
|
||||
}
|
||||
}
|
||||
|
||||
def test_create_node_group_template(self):
|
||||
@@ -69,3 +82,37 @@ class NodeGroupTemplateTest(base.BaseTestCase):
|
||||
self.client.node_group_templates.delete('id')
|
||||
|
||||
self.assertEqual(url, self.responses.last_request.url)
|
||||
|
||||
def test_update_node_group_template(self):
|
||||
url = self.URL + '/node-group-templates'
|
||||
self.responses.post(url, status_code=202,
|
||||
json={'node_group_template': self.body})
|
||||
resp = self.client.node_group_templates.create(**self.body)
|
||||
|
||||
update_url = self.URL + '/node-group-templates/id'
|
||||
self.responses.put(update_url, status_code=202, json=self.update_json)
|
||||
|
||||
updated = self.client.node_group_templates.update(
|
||||
"id",
|
||||
resp.name,
|
||||
resp.plugin_name,
|
||||
resp.hadoop_version,
|
||||
resp.flavor_id,
|
||||
description=getattr(resp, "description", None),
|
||||
volumes_per_node=getattr(resp, "volumes_per_node", None),
|
||||
node_configs=getattr(resp, "node_configs", None),
|
||||
floating_ip_pool=getattr(resp, "floating_ip_pool", None),
|
||||
security_groups=getattr(resp, "security_groups", None),
|
||||
auto_security_group=getattr(resp, "auto_security_group", None),
|
||||
availability_zone=getattr(resp, "availability_zone", None),
|
||||
volumes_availability_zone=getattr(resp,
|
||||
"volumes_availability_zone",
|
||||
None),
|
||||
volume_type=getattr(resp, "volume_type", None),
|
||||
image_id=getattr(resp, "image_id", None),
|
||||
is_proxy_gateway=getattr(resp, "is_proxy_gateway", None),
|
||||
volume_local_to_instance=getattr(resp,
|
||||
"volume_local_to_instance",
|
||||
None))
|
||||
self.assertIsInstance(updated, ng.NodeGroupTemplate)
|
||||
self.assertFields(self.update_json["node_group_template"], updated)
|
||||
|
||||
Reference in New Issue
Block a user