Fixes for test_model in py3

Change-Id: Ie7f1055b2a1852cc4bd9c635ea68ec577ab8adaa
diff --git a/zuul/model.py b/zuul/model.py
index 12f08ae..1e6e45b 100644
--- a/zuul/model.py
+++ b/zuul/model.py
@@ -467,7 +467,7 @@
         self.nodes[node.name] = node
 
     def getNodes(self):
-        return self.nodes.values()
+        return list(self.nodes.values())
 
     def __repr__(self):
         if self.name:
@@ -989,7 +989,7 @@
             raise
 
     def getJobs(self):
-        return self.jobs.values()  # Report in the order of the layout config
+        return list(self.jobs.values())  # Report in the order of layout cfg
 
     def _getDirectDependentJobs(self, parent_job):
         ret = set()
@@ -2741,7 +2741,7 @@
     def load(self):
         if not os.path.exists(self.path):
             return
-        with open(self.path) as f:
+        with open(self.path, 'rb') as f:
             data = struct.unpack(self.format, f.read())
         version = data[0]
         if version != self.version:
@@ -2757,7 +2757,7 @@
         data.extend(self.failure_times)
         data.extend(self.results)
         data = struct.pack(self.format, *data)
-        with open(tmpfile, 'w') as f:
+        with open(tmpfile, 'wb') as f:
             f.write(data)
         os.rename(tmpfile, self.path)