Merge "Final fixup to APIv2 responses"

This commit is contained in:
Zuul 2018-07-11 11:12:08 +00:00 committed by Gerrit Code Review
commit 927c7c215c
7 changed files with 74 additions and 27 deletions

View File

@ -0,0 +1,9 @@
---
other:
- A few responses in the experimental (but nearly-stable) APIv2 have been
tweaked. To be specific, the key `hadoop_version` has been replaced with
`plugin_version`, the key `job` has been replaced with `job_template`, the
key `job_execution` has been replaced with `job`, and the key
`oozie_job_id` has been replaced with `engine_job_id`. In fact, these
changes were all previously partially implemented, and are now completely
implemented.

View File

@ -31,6 +31,8 @@ rest = u.RestV2('cluster-templates', __name__)
v.validate_sorting_cluster_templates)
def cluster_templates_list():
result = api.get_cluster_templates(**u.get_request_args().to_dict())
for ct in result:
u._replace_hadoop_version_plugin_version(ct)
return u.render(res=result, name='cluster_templates')
@ -43,14 +45,19 @@ def cluster_templates_create(data):
# this can be removed once APIv1 is deprecated
data['hadoop_version'] = data['plugin_version']
del data['plugin_version']
return u.render(api.create_cluster_template(data).to_wrapped_dict())
result = api.create_cluster_template(data).to_wrapped_dict()
u._replace_hadoop_version_plugin_version(result['cluster_template'])
return u.render(result)
@rest.get('/cluster-templates/<cluster_template_id>')
@acl.enforce("data-processing:cluster-templates:get")
@v.check_exists(api.get_cluster_template, 'cluster_template_id')
def cluster_templates_get(cluster_template_id):
return u.to_wrapped_dict(api.get_cluster_template, cluster_template_id)
result = u.to_wrapped_dict_no_render(
api.get_cluster_template, cluster_template_id)
u._replace_hadoop_version_plugin_version(result['cluster_template'])
return u.render(result)
@rest.patch('/cluster-templates/<cluster_template_id>')
@ -62,8 +69,10 @@ def cluster_templates_update(cluster_template_id, data):
if data.get('plugin_version', None):
data['hadoop_version'] = data['plugin_version']
del data['plugin_version']
return u.to_wrapped_dict(
result = u.to_wrapped_dict_no_render(
api.update_cluster_template, cluster_template_id, data)
u._replace_hadoop_version_plugin_version(result['cluster_template'])
return u.render(result)
@rest.delete('/cluster-templates/<cluster_template_id>')
@ -91,6 +100,7 @@ def _cluster_template_export_helper(template):
def cluster_template_export(cluster_template_id):
content = u.to_wrapped_dict_no_render(
api.export_cluster_template, cluster_template_id)
u._replace_hadoop_version_plugin_version(content['cluster_template'])
_cluster_template_export_helper(content['cluster_template'])
res = u.render(content)
res.headers.add('Content-Disposition', 'attachment',

View File

@ -33,6 +33,8 @@ rest = u.RestV2('clusters', __name__)
@v.validate(None, v.validate_pagination_limit)
def clusters_list():
result = api.get_clusters(**u.get_request_args().to_dict())
for c in result:
u._replace_hadoop_version_plugin_version(c)
return u.render(res=result, name='clusters')
@ -46,9 +48,14 @@ def clusters_create(data):
data['hadoop_version'] = data['plugin_version']
del data['plugin_version']
if data.get('count', None) is not None:
return u.render(api.create_multiple_clusters(data))
result = api.create_multiple_clusters(data)
for c in result:
u._replace_hadoop_version_plugin_version(c['cluster'])
return u.render(result)
else:
return u.render(api.create_cluster(data).to_wrapped_dict())
result = api.create_cluster(data).to_wrapped_dict()
u._replace_hadoop_version_plugin_version(c['cluster'])
return u.render(result)
@rest.put('/clusters/<cluster_id>')
@ -56,7 +63,10 @@ def clusters_create(data):
@v.check_exists(api.get_cluster, 'cluster_id')
@v.validate(v_c_schema.CLUSTER_SCALING_SCHEMA_V2, v_c_s.check_cluster_scaling)
def clusters_scale(cluster_id, data):
return u.to_wrapped_dict(api.scale_cluster, cluster_id, data)
result = u.to_wrapped_dict_no_render(
api.scale_cluster, cluster_id, data)
u._replace_hadoop_version_plugin_version(result['cluster'])
return u.render(result)
@rest.get('/clusters/<cluster_id>')
@ -66,7 +76,10 @@ def clusters_get(cluster_id):
data = u.get_request_args()
show_events = six.text_type(
data.get('show_progress', 'false')).lower() == 'true'
return u.to_wrapped_dict(api.get_cluster, cluster_id, show_events)
result = u.to_wrapped_dict_no_render(
api.get_cluster, cluster_id, show_events)
u._replace_hadoop_version_plugin_version(result['cluster'])
return u.render(result)
@rest.patch('/clusters/<cluster_id>')
@ -74,7 +87,10 @@ def clusters_get(cluster_id):
@v.check_exists(api.get_cluster, 'cluster_id')
@v.validate(v_c_schema.CLUSTER_UPDATE_SCHEMA, v_c.check_cluster_update)
def clusters_update(cluster_id, data):
return u.to_wrapped_dict(api.update_cluster, cluster_id, data)
result = u.to_wrapped_dict_no_render(
api.update_cluster, cluster_id, data)
u._replace_hadoop_version_plugin_version(result['cluster'])
return u.render(result)
@rest.delete('/clusters/<cluster_id>')

View File

@ -38,14 +38,15 @@ def job_templates_list():
@acl.enforce("data-processing:job-templates:create")
@v.validate(v_j_schema.JOB_SCHEMA, v_j.check_mains_libs, v_j.check_interface)
def job_templates_create(data):
return u.render(api.create_job_template(data).to_wrapped_dict())
return u.render({'job_template': api.create_job_template(data).to_dict()})
@rest.get('/job-templates/<job_templates_id>')
@acl.enforce("data-processing:job-templates:get")
@v.check_exists(api.get_job_templates, id='job_templates_id')
def job_templates_get(job_templates_id):
return u.to_wrapped_dict(api.get_job_template, job_templates_id)
return u.render({'job_template': api.get_job_template(
job_templates_id).to_dict()})
@rest.patch('/job-templates/<job_templates_id>')
@ -53,7 +54,8 @@ def job_templates_get(job_templates_id):
@v.check_exists(api.get_job_templates, id='job_templates_id')
@v.validate(v_j_schema.JOB_UPDATE_SCHEMA)
def job_templates_update(job_templates_id, data):
return u.to_wrapped_dict(api.update_job_template, job_templates_id, data)
return u.render({'job_template': api.update_job_template(
job_templates_id, data).to_dict()})
@rest.delete('/job-templates/<job_templates_id>')

View File

@ -45,7 +45,11 @@ def jobs_list():
@acl.enforce("data-processing:jobs:execute")
@v.validate(v_j_e_schema.JOB_EXEC_SCHEMA_V2, v_j_e.check_job_execution)
def jobs_execute(data):
return u.render(api.execute_job(data).to_wrapped_dict())
result = {'job': api.execute_job(data)}
dict.update(result['job'],
{'engine_job_id': result['job']['oozie_job_id']})
dict.pop(result['job'], 'oozie_job_id')
return u.render(result)
@rest.get('/jobs/<job_id>')
@ -55,12 +59,8 @@ def jobs_get(job_id):
data = u.get_request_args()
refresh_status = six.text_type(
data.get('refresh_status', 'false')).lower() == 'true'
result = u.to_wrapped_dict_no_render(
api.get_job_execution, job_id, refresh_status)
result['job_execution']['engine_job_id'] = (
result['job_execution']['oozie_job_id']
)
del result['job_execution']['oozie_job_id']
result = {'job': api.get_job_execution(job_id, refresh_status)}
result['job'].pop('oozie_job_id', force=True)
return u.render(result)
@ -70,12 +70,8 @@ def jobs_get(job_id):
@v.validate(
v_j_e_schema.JOB_EXEC_UPDATE_SCHEMA, v_j_e.check_job_execution_update)
def jobs_update(job_id, data):
result = u.to_wrapped_dict_no_render(
api.update_job_execution, job_id, data)
result['job_execution']['engine_job_id'] = (
result['job_execution']['oozie_job_id']
)
del result['job_execution']['oozie_job_id']
result = {'job': api.update_job_execution(job_id, data)}
result['job'].pop('oozie_job_id', force=True)
return u.render(result)

View File

@ -32,6 +32,8 @@ rest = u.RestV2('node-group-templates', __name__)
v.validate_sorting_node_group_templates)
def node_group_templates_list():
result = api.get_node_group_templates(**u.get_request_args().to_dict())
for ngt in result:
u._replace_hadoop_version_plugin_version(ngt)
return u.render(res=result, name="node_group_templates")
@ -44,15 +46,19 @@ def node_group_templates_create(data):
# this can be removed once APIv1 is deprecated
data['hadoop_version'] = data['plugin_version']
del data['plugin_version']
return u.render(api.create_node_group_template(data).to_wrapped_dict())
result = api.create_node_group_template(data).to_wrapped_dict()
u._replace_hadoop_version_plugin_version(result['node_group_template'])
return u.render(result)
@rest.get('/node-group-templates/<node_group_template_id>')
@acl.enforce("data-processing:node-group-templates:get")
@v.check_exists(api.get_node_group_template, 'node_group_template_id')
def node_group_templates_get(node_group_template_id):
return u.to_wrapped_dict(
result = u.to_wrapped_dict_no_render(
api.get_node_group_template, node_group_template_id)
u._replace_hadoop_version_plugin_version(result['node_group_template'])
return u.render(result)
@rest.patch('/node-group-templates/<node_group_template_id>')
@ -64,8 +70,10 @@ def node_group_templates_update(node_group_template_id, data):
if data.get('plugin_version', None):
data['hadoop_version'] = data['plugin_version']
del data['plugin_version']
return u.to_wrapped_dict(
result = u.to_wrapped_dict_no_render(
api.update_node_group_template, node_group_template_id, data)
u._replace_hadoop_version_plugin_version(result['node_group_template'])
return u.render(result)
@rest.delete('/node-group-templates/<node_group_template_id>')
@ -95,6 +103,7 @@ def _node_group_template_export_helper(template):
def node_group_template_export(node_group_template_id):
content = u.to_wrapped_dict_no_render(
api.export_node_group_template, node_group_template_id)
u._replace_hadoop_version_plugin_version(content['node_group_template'])
_node_group_template_export_helper(content['node_group_template'])
res = u.render(content)
res.headers.add('Content-Disposition', 'attachment',

View File

@ -349,3 +349,8 @@ def to_wrapped_dict_no_render(func, id, *args, **kwargs):
return not_found(e)
return obj.to_wrapped_dict()
def _replace_hadoop_version_plugin_version(obj):
dict.update(obj, {'plugin_version': obj['hadoop_version']})
dict.pop(obj, 'hadoop_version')