Merge "Various server-side fixes to APIv2"

This commit is contained in:
Zuul 2018-01-25 22:15:12 +00:00 committed by Gerrit Code Review
commit 80eb38629e
8 changed files with 29 additions and 17 deletions

View File

@ -59,8 +59,9 @@ def cluster_templates_get(cluster_template_id):
@v.validate(ct_schema.CLUSTER_TEMPLATE_UPDATE_SCHEMA_V2,
v_ct.check_cluster_template_update)
def cluster_templates_update(cluster_template_id, data):
data['hadoop_version'] = data['plugin_version']
del data['plugin_version']
if data.get('plugin_version', None):
data['hadoop_version'] = data['plugin_version']
del data['plugin_version']
return u.to_wrapped_dict(
api.update_cluster_template, cluster_template_id, data)

View File

@ -72,7 +72,6 @@ def image_tags_update(image_id, data):
@rest.delete('/images/<image_id>/tags')
@acl.enforce("data-processing:images:remove_tags")
@v.check_exists(api.get_image, id='image_id')
@v.validate(v_images.image_tags_schema)
def image_tags_delete(image_id):
api.remove_image_tags(image_id)
return u.render()

View File

@ -37,13 +37,12 @@ def jobs_list():
# once APIv1 is deprecated this can be
# removed
for je in result:
je['engine_job_id'] = je['oozie_job_id']
del je['oozie_job_id']
je.pop('oozie_job_id', force=True)
return u.render(res=result, name='jobs')
@rest.post('/jobs')
@acl.enforce("data-processing:job-executions:execute")
@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())
@ -58,8 +57,10 @@ def jobs_get(job_id):
data.get('refresh_status', 'false')).lower() == 'true'
result = u.to_wrapped_dict_no_render(
api.get_job_execution, job_id, refresh_status)
result['engine_job_id'] = result['oozie_job_id']
del result['oozie_job_id']
result['job_execution']['engine_job_id'] = (
result['job_execution']['oozie_job_id']
)
del result['job_execution']['oozie_job_id']
return u.render(result)
@ -71,8 +72,10 @@ def jobs_get(job_id):
def jobs_update(job_id, data):
result = u.to_wrapped_dict_no_render(
api.update_job_execution, job_id, data)
result['engine_job_id'] = result['oozie_job_id']
del result['oozie_job_id']
result['job_execution']['engine_job_id'] = (
result['job_execution']['oozie_job_id']
)
del result['job_execution']['oozie_job_id']
return u.render(result)

View File

@ -61,8 +61,9 @@ def node_group_templates_get(node_group_template_id):
@v.validate(ngt_schema.NODE_GROUP_TEMPLATE_UPDATE_SCHEMA_V2,
v_ngt.check_node_group_template_update)
def node_group_templates_update(node_group_template_id, data):
data['hadoop_version'] = data['plugin_version']
del data['plugin_version']
if data.get('plugin_version', None):
data['hadoop_version'] = data['plugin_version']
del data['plugin_version']
return u.to_wrapped_dict(
api.update_node_group_template, node_group_template_id, data)

View File

@ -67,6 +67,12 @@ images_policies = [
'method': 'POST'},
{'path': '/v2/images/{image_id}/tags',
'method': 'DELETE'}]),
policy.DocumentedRuleDefault(
name=base.DATA_PROCESSING_IMAGES % 'get_tags',
check_str=base.UNPROTECTED,
description='List tags on an image.',
operations=[{'path': '/v2/images/{image_id}/tags',
'method': 'GET'}]),
]

View File

@ -113,10 +113,10 @@ def check_job_execution(data, job_templates_id=None):
jt_err_msg = _("Job template with id '%s' doesn't exist")
if job_templates_id is None:
job = conductor.job_get(ctx, data['job_templates_id'])
job = conductor.job_get(ctx, data['job_template_id'])
if not job:
raise ex.InvalidReferenceException(
jt_err_msg % data['job_templates_id'])
jt_err_msg % data['job_template_id'])
else:
job = conductor.job_get(ctx, job_templates_id)
if not job:

View File

@ -54,11 +54,11 @@ JOB_EXEC_SCHEMA = {
JOB_EXEC_SCHEMA_V2 = copy.deepcopy(JOB_EXEC_SCHEMA)
JOB_EXEC_SCHEMA_V2['properties'].update({
"job_templates_id": {
"job_template_id": {
"type": "string",
"format": "uuid",
}})
JOB_EXEC_SCHEMA_V2['required'].append('job_templates_id')
JOB_EXEC_SCHEMA_V2['required'].append('job_template_id')
JOB_EXEC_UPDATE_SCHEMA = {

View File

@ -64,7 +64,9 @@ class FrozenDict(dict):
def clear(self):
raise ex.FrozenClassError(self)
def pop(self, k, d=None):
def pop(self, k, d=None, force=False):
if force:
return super(FrozenDict, self).pop(k, d)
raise ex.FrozenClassError(self)
def popitem(self):