Add job dependencies to status.json

Adding the job dependencies will make it possible to render the job
graphs as real graphs. In example one could think of a details popup
when clicking on a details link.

Change-Id: Id9c376a47b28ff022eb69f957c18791d7130daf1
diff --git a/tests/unit/test_scheduler.py b/tests/unit/test_scheduler.py
index e9eee54..a90b64d 100755
--- a/tests/unit/test_scheduler.py
+++ b/tests/unit/test_scheduler.py
@@ -2306,6 +2306,16 @@
         self.assertEqual('finger://zl.example.com/%s' % status_jobs[2]['uuid'],
                          status_jobs[2]['report_url'])
 
+        # check job dependencies
+        self.assertIsNotNone(status_jobs[0]['dependencies'])
+        self.assertIsNotNone(status_jobs[1]['dependencies'])
+        self.assertIsNotNone(status_jobs[2]['dependencies'])
+        self.assertEqual(len(status_jobs[0]['dependencies']), 0)
+        self.assertEqual(len(status_jobs[1]['dependencies']), 1)
+        self.assertEqual(len(status_jobs[2]['dependencies']), 1)
+        self.assertIn('project-merge', status_jobs[1]['dependencies'])
+        self.assertIn('project-merge', status_jobs[2]['dependencies'])
+
     def test_live_reconfiguration(self):
         "Test that live reconfiguration works"
         self.executor_server.hold_jobs_in_build = True
diff --git a/zuul/model.py b/zuul/model.py
index 436a9c8..ad0e8d1 100644
--- a/zuul/model.py
+++ b/zuul/model.py
@@ -1695,6 +1695,7 @@
 
             ret['jobs'].append({
                 'name': job.name,
+                'dependencies': list(job.dependencies),
                 'elapsed_time': elapsed,
                 'remaining_time': remaining,
                 'url': build_url,