Jelajahi Sumber

HUE-988 [oozie] Fix saving

If job_ptr is passed to save API, it fails.
save API does not change job_ptr now.
abec 13 tahun lalu
induk
melakukan
17c031bf48
2 mengubah file dengan 1 tambahan dan 20 penghapusan
  1. 0 19
      apps/oozie/src/oozie/tests.py
  2. 1 1
      apps/oozie/src/oozie/views/api.py

+ 0 - 19
apps/oozie/src/oozie/tests.py

@@ -301,7 +301,6 @@ class TestAPI(OozieMockBase):
     self.setup_simple_workflow()
 
     workflow_dict = workflow_to_dict(self.wf)
-    workflow_dict = remove_related_fields( workflow_dict )
     workflow_json = json.dumps(workflow_dict)
 
     response = self.c.post(reverse('oozie:workflow_save', kwargs={'workflow': self.wf.pk}), data={'workflow': workflow_json})
@@ -311,7 +310,6 @@ class TestAPI(OozieMockBase):
 
     # Change property and save
     workflow_dict = workflow_to_dict(self.wf)
-    workflow_dict = remove_related_fields( workflow_dict )
     workflow_dict['description'] = 'test'
     workflow_json = json.dumps(workflow_dict)
 
@@ -326,7 +324,6 @@ class TestAPI(OozieMockBase):
 
     # Change node and save
     workflow_dict = workflow_to_dict(self.wf)
-    workflow_dict = remove_related_fields( workflow_dict )
     workflow_dict['nodes'][2]['name'] = 'new-name'
     node_id = workflow_dict['nodes'][2]['id']
     workflow_json = json.dumps(workflow_dict)
@@ -345,7 +342,6 @@ class TestAPI(OozieMockBase):
     # Bad workflow name
     workflow_dict = workflow_to_dict(self.wf)
     del workflow_dict['name']
-    workflow_dict = remove_related_fields( workflow_dict )
     workflow_json = json.dumps(workflow_dict)
 
     response = self.c.post(reverse('oozie:workflow_save', kwargs={'workflow': self.wf.pk}), data={'workflow': workflow_json}, HTTP_X_REQUESTED_WITH='XMLHttpRequest')
@@ -354,7 +350,6 @@ class TestAPI(OozieMockBase):
     # Bad node name
     workflow_dict = workflow_to_dict(self.wf)
     del workflow_dict['nodes'][2]['name']
-    workflow_dict = remove_related_fields( workflow_dict )
     workflow_json = json.dumps(workflow_dict)
 
     response = self.c.post(reverse('oozie:workflow_save', kwargs={'workflow': self.wf.pk}), data={'workflow': workflow_json}, HTTP_X_REQUESTED_WITH='XMLHttpRequest')
@@ -496,7 +491,6 @@ class TestApiPermissionsWithOozie(OozieBase):
     grant_access("not_me", "test", "oozie")
 
     workflow_dict = workflow_to_dict(self.wf)
-    workflow_dict = remove_related_fields(workflow_dict)
     workflow_json = json.dumps(workflow_dict)
 
     response = client_not_me.post(reverse('oozie:workflow_save', kwargs={'workflow': self.wf.pk}), data={'workflow': workflow_json}, HTTP_X_REQUESTED_WITH='XMLHttpRequest')
@@ -520,7 +514,6 @@ class TestApiPermissionsWithOozie(OozieBase):
 
     workflow_dict = workflow_to_dict(self.wf)
     del workflow_dict['name']
-    workflow_dict = remove_related_fields( workflow_dict )
     workflow_json = json.dumps(workflow_dict)
 
     response = client_not_me.post(reverse('oozie:workflow_save', kwargs={'workflow': self.wf.pk}), data={'workflow': workflow_json}, HTTP_X_REQUESTED_WITH='XMLHttpRequest')
@@ -2063,18 +2056,6 @@ COORDINATOR_DICT = {u'name': [u'MyCoord'], u'description': [u'Description of my
 }
 
 
-def remove_related_fields(workflow_dict):
-  """
-  workflow_dict is a workflow that has been converted into a dictionary via workflow_to_dict
-  """
-
-  del workflow_dict['owner']
-  del workflow_dict['job_ptr']
-  for node in workflow_dict['nodes']:
-    del node['node_ptr']
-  return workflow_dict
-
-
 def add_node(workflow, name, node_type, parents, attrs={}):
   """
   create a node of type node_type and associate the listed parents.

+ 1 - 1
apps/oozie/src/oozie/views/api.py

@@ -110,7 +110,7 @@ def update_workflow(json_workflow):
   workflow = Workflow.objects.get(id=json_workflow['id'])
 
   for key in json_workflow:
-    if key not in ('nodes', 'start', 'end'):
+    if key not in ('nodes', 'start', 'end', 'job_ptr', 'owner'):
       setattr(workflow, key, json_workflow[key])
 
   workflow.save()