Browse Source

Merge "Include version info in bay/cluster show operation"

tags/3.0.0^0
Jenkins 2 years ago
parent
commit
5258fddf9d

+ 12
- 1
magnum/api/controllers/v1/bay.py View File

@@ -111,6 +111,13 @@ class Bay(base.APIBase):
111 111
     api_address = wsme.wsattr(wtypes.text, readonly=True)
112 112
     """Api address of cluster master node"""
113 113
 
114
+    coe_version = wsme.wsattr(wtypes.text, readonly=True)
115
+    """Version of the COE software currently running in this cluster.
116
+    Example: swarm version or kubernetes version."""
117
+
118
+    container_version = wsme.wsattr(wtypes.text, readonly=True)
119
+    """Version of the container software. Example: docker version."""
120
+
114 121
     node_addresses = wsme.wsattr([wtypes.text], readonly=True)
115 122
     """IP addresses of cluster slave nodes"""
116 123
 
@@ -165,7 +172,9 @@ class Bay(base.APIBase):
165 172
                      api_address='172.24.4.3',
166 173
                      node_addresses=['172.24.4.4', '172.24.4.5'],
167 174
                      created_at=timeutils.utcnow(),
168
-                     updated_at=timeutils.utcnow())
175
+                     updated_at=timeutils.utcnow(),
176
+                     coe_version=None,
177
+                     container_version=None)
169 178
         return cls._convert_with_links(sample, 'http://localhost:9511', expand)
170 179
 
171 180
 
@@ -365,6 +374,8 @@ class BaysController(base.Controller):
365 374
         # bay if the name is not spcified by user.
366 375
         name = bay_dict.get('name') or self._generate_name_for_bay(context)
367 376
         bay_dict['name'] = name
377
+        bay_dict['coe_version'] = None
378
+        bay_dict['container_version'] = None
368 379
 
369 380
         new_bay = objects.Bay(context, **bay_dict)
370 381
         new_bay.uuid = uuid.uuid4()

+ 12
- 1
magnum/api/controllers/v1/cluster.py View File

@@ -121,6 +121,13 @@ class Cluster(base.APIBase):
121 121
     api_address = wsme.wsattr(wtypes.text, readonly=True)
122 122
     """Api address of cluster master node"""
123 123
 
124
+    coe_version = wsme.wsattr(wtypes.text, readonly=True)
125
+    """Version of the COE software currently running in this cluster.
126
+    Example: swarm version or kubernetes version."""
127
+
128
+    container_version = wsme.wsattr(wtypes.text, readonly=True)
129
+    """Version of the container software. Example: docker version."""
130
+
124 131
     node_addresses = wsme.wsattr([wtypes.text], readonly=True)
125 132
     """IP addresses of cluster slave nodes"""
126 133
 
@@ -198,7 +205,9 @@ class Cluster(base.APIBase):
198 205
                      api_address='172.24.4.3',
199 206
                      node_addresses=['172.24.4.4', '172.24.4.5'],
200 207
                      created_at=timeutils.utcnow(),
201
-                     updated_at=timeutils.utcnow())
208
+                     updated_at=timeutils.utcnow(),
209
+                     coe_version=None,
210
+                     container_version=None)
202 211
         return cls._convert_with_links(sample, 'http://localhost:9511', expand)
203 212
 
204 213
     def as_dict(self):
@@ -406,6 +415,8 @@ class ClustersController(base.Controller):
406 415
         name = cluster_dict.get('name') or \
407 416
             self._generate_name_for_cluster(context)
408 417
         cluster_dict['name'] = name
418
+        cluster_dict['coe_version'] = None
419
+        cluster_dict['container_version'] = None
409 420
 
410 421
         new_cluster = objects.Bay(context, **cluster_dict)
411 422
         new_cluster.uuid = uuid.uuid4()

+ 20
- 0
magnum/conductor/handlers/bay_conductor.py View File

@@ -19,6 +19,7 @@ from heatclient import exc
19 19
 from oslo_config import cfg
20 20
 from oslo_log import log as logging
21 21
 from oslo_service import loopingcall
22
+from oslo_utils import importutils
22 23
 from pycadf import cadftaxonomy as taxonomy
23 24
 import six
24 25
 
@@ -361,8 +362,27 @@ class HeatPoller(object):
361 362
         self.bay.node_count = stack.parameters[stack_nc_param]
362 363
         self.bay.save()
363 364
 
365
+    def get_version_info(self, stack):
366
+        stack_param = self.template_def.get_heat_param(
367
+            bay_attr='coe_version')
368
+        if stack_param:
369
+            self.bay.coe_version = stack.parameters[stack_param]
370
+
371
+        tdef = TDef.get_template_definition(self.baymodel.server_type,
372
+                                            self.baymodel.cluster_distro,
373
+                                            self.baymodel.coe)
374
+
375
+        version_module_path = tdef.driver_module_path+'.version'
376
+        try:
377
+            ver = importutils.import_module(version_module_path)
378
+            container_version = ver.container_version
379
+        except Exception:
380
+            container_version = None
381
+        self.bay.container_version = container_version
382
+
364 383
     def _sync_bay_and_template_status(self, stack):
365 384
         self.template_def.update_outputs(stack, self.baymodel, self.bay)
385
+        self.get_version_info(stack)
366 386
         self._sync_bay_status(stack)
367 387
 
368 388
     def _bay_failed(self, stack):

+ 34
- 0
magnum/db/sqlalchemy/alembic/versions/fcb4efee8f8b_add_version_info_to_bay.py View File

@@ -0,0 +1,34 @@
1
+#    Licensed under the Apache License, Version 2.0 (the "License"); you may
2
+#    not use this file except in compliance with the License. You may obtain
3
+#    a copy of the License at
4
+#
5
+#         http://www.apache.org/licenses/LICENSE-2.0
6
+#
7
+#    Unless required by applicable law or agreed to in writing, software
8
+#    distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
9
+#    WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
10
+#    License for the specific language governing permissions and limitations
11
+#    under the License.
12
+"""add version info to bay
13
+
14
+Revision ID: fcb4efee8f8b
15
+Revises: b1f612248cab
16
+Create Date: 2016-08-22 15:04:32.256811
17
+
18
+"""
19
+
20
+# revision identifiers, used by Alembic.
21
+revision = 'fcb4efee8f8b'
22
+down_revision = 'b1f612248cab'
23
+
24
+from alembic import op
25
+import sqlalchemy as sa
26
+
27
+
28
+def upgrade():
29
+    op.add_column('bay',
30
+                  sa.Column('coe_version', sa.String(length=255),
31
+                            nullable=True))
32
+    op.add_column('bay',
33
+                  sa.Column('container_version', sa.String(length=255),
34
+                            nullable=True))

+ 2
- 0
magnum/db/sqlalchemy/models.py View File

@@ -129,6 +129,8 @@ class Bay(Base):
129 129
     trustee_user_id = Column(String(255))
130 130
     # TODO(wanghua): encrypt trustee_password in db
131 131
     trustee_password = Column(String(255))
132
+    coe_version = Column(String(255))
133
+    container_version = Column(String(255))
132 134
     # (yuanying) if we use barbican,
133 135
     # cert_ref size is determined by below format
134 136
     # * http(s)://${DOMAIN_NAME}/v1/containers/${UUID}

+ 8
- 0
magnum/drivers/common/template_def.py View File

@@ -319,6 +319,10 @@ class TemplateDefinition(object):
319 319
         for output in self.output_mappings:
320 320
             output.set_output(stack, baymodel, bay)
321 321
 
322
+    @abc.abstractproperty
323
+    def driver_module_path(self):
324
+        pass
325
+
322 326
     @abc.abstractproperty
323 327
     def template_path(self):
324 328
         pass
@@ -350,6 +354,10 @@ class BaseTemplateDefinition(TemplateDefinition):
350 354
         self.add_parameter('number_of_masters',
351 355
                            bay_attr='master_count')
352 356
 
357
+    @property
358
+    def driver_module_path(self):
359
+        pass
360
+
353 361
     @abc.abstractproperty
354 362
     def template_path(self):
355 363
         pass

+ 6
- 0
magnum/drivers/k8s_coreos_v1/template_def.py View File

@@ -73,6 +73,8 @@ class K8sTemplateDefinition(template_def.BaseTemplateDefinition):
73 73
                            param_type=str)
74 74
         self.add_parameter('insecure_registry_url',
75 75
                            baymodel_attr='insecure_registry')
76
+        self.add_parameter('kube_version',
77
+                           bay_attr='coe_version')
76 78
 
77 79
         self.add_output('api_address',
78 80
                         bay_attr='api_address',
@@ -133,6 +135,10 @@ class CoreOSK8sTemplateDefinition(K8sTemplateDefinition):
133 135
         else:
134 136
             return [template_def.COMMON_ENV_PATH + 'no_master_lb.yaml']
135 137
 
138
+    @property
139
+    def driver_module_path(self):
140
+        return __name__[:__name__.rindex('.')]
141
+
136 142
     @property
137 143
     def template_path(self):
138 144
         return os.path.join(os.path.dirname(os.path.realpath(__file__)),

+ 17
- 0
magnum/drivers/k8s_coreos_v1/version.py View File

@@ -0,0 +1,17 @@
1
+# Copyright 2016 - Rackspace Hosting
2
+#
3
+#    Licensed under the Apache License, Version 2.0 (the "License");
4
+#    you may not use this file except in compliance with the License.
5
+#    You may obtain a copy of the License at
6
+#
7
+#        http://www.apache.org/licenses/LICENSE-2.0
8
+#
9
+#    Unless required by applicable law or agreed to in writing, software
10
+#    distributed under the License is distributed on an "AS IS" BASIS,
11
+#    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12
+#    See the License for the specific language governing permissions and
13
+#    limitations under the License.
14
+
15
+version = '1.0.0'
16
+driver = 'k8s_coreos'
17
+container_version = '1.9.0'

+ 10
- 0
magnum/drivers/k8s_fedora_atomic_v1/template_def.py View File

@@ -108,6 +108,8 @@ class K8sTemplateDefinition(template_def.BaseTemplateDefinition):
108 108
                            param_type=str)
109 109
         self.add_parameter('insecure_registry_url',
110 110
                            baymodel_attr='insecure_registry')
111
+        self.add_parameter('kube_version',
112
+                           bay_attr='coe_version')
111 113
 
112 114
         self.add_output('api_address',
113 115
                         bay_attr='api_address',
@@ -201,6 +203,10 @@ class AtomicK8sTemplateDefinition(K8sTemplateDefinition):
201 203
 
202 204
         return env_files
203 205
 
206
+    @property
207
+    def driver_module_path(self):
208
+        return __name__[:__name__.rindex('.')]
209
+
204 210
     @property
205 211
     def template_path(self):
206 212
         return os.path.join(os.path.dirname(os.path.realpath(__file__)),
@@ -258,6 +264,10 @@ class FedoraK8sIronicTemplateDefinition(AtomicK8sTemplateDefinition):
258 264
                                       extra_params=extra_params,
259 265
                                       **kwargs)
260 266
 
267
+    @property
268
+    def driver_module_path(self):
269
+        return __name__[:__name__.rindex('.')]
270
+
261 271
     @property
262 272
     def template_path(self):
263 273
         return os.path.join(os.path.dirname(os.path.realpath(__file__)),

+ 1
- 0
magnum/drivers/k8s_fedora_atomic_v1/version.py View File

@@ -14,3 +14,4 @@
14 14
 
15 15
 version = '1.0.0'
16 16
 driver = 'k8s_fedora_atomic'
17
+container_version = '1.9.1'

+ 4
- 0
magnum/drivers/mesos_ubuntu_v1/template_def.py View File

@@ -87,6 +87,10 @@ class UbuntuMesosTemplateDefinition(template_def.BaseTemplateDefinition):
87 87
         else:
88 88
             return [template_def.COMMON_ENV_PATH + 'no_master_lb.yaml']
89 89
 
90
+    @property
91
+    def driver_module_path(self):
92
+        return __name__[:__name__.rindex('.')]
93
+
90 94
     @property
91 95
     def template_path(self):
92 96
         return os.path.join(os.path.dirname(os.path.realpath(__file__)),

+ 17
- 0
magnum/drivers/mesos_ubuntu_v1/version.py View File

@@ -0,0 +1,17 @@
1
+# Copyright 2016 - Rackspace Hosting
2
+#
3
+#    Licensed under the Apache License, Version 2.0 (the "License");
4
+#    you may not use this file except in compliance with the License.
5
+#    You may obtain a copy of the License at
6
+#
7
+#        http://www.apache.org/licenses/LICENSE-2.0
8
+#
9
+#    Unless required by applicable law or agreed to in writing, software
10
+#    distributed under the License is distributed on an "AS IS" BASIS,
11
+#    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12
+#    See the License for the specific language governing permissions and
13
+#    limitations under the License.
14
+
15
+version = '1.0.0'
16
+driver = 'mesos_ubuntu'
17
+container_version = '1.9.1'

+ 7
- 0
magnum/drivers/swarm_fedora_atomic_v1/template_def.py View File

@@ -71,6 +71,9 @@ class AtomicSwarmTemplateDefinition(template_def.BaseTemplateDefinition):
71 71
                            baymodel_attr='registry_enabled')
72 72
         self.add_parameter('docker_storage_driver',
73 73
                            baymodel_attr='docker_storage_driver')
74
+        self.add_parameter('swarm_version',
75
+                           bay_attr='coe_version')
76
+
74 77
         self.add_output('api_address',
75 78
                         bay_attr='api_address',
76 79
                         mapping_type=SwarmApiAddressOutputMapping)
@@ -116,6 +119,10 @@ class AtomicSwarmTemplateDefinition(template_def.BaseTemplateDefinition):
116 119
         else:
117 120
             return [template_def.COMMON_ENV_PATH + 'no_master_lb.yaml']
118 121
 
122
+    @property
123
+    def driver_module_path(self):
124
+        return __name__[:__name__.rindex('.')]
125
+
119 126
     @property
120 127
     def template_path(self):
121 128
         return os.path.join(os.path.dirname(os.path.realpath(__file__)),

+ 1
- 0
magnum/drivers/swarm_fedora_atomic_v1/version.py View File

@@ -14,3 +14,4 @@
14 14
 
15 15
 version = '1.0.0'
16 16
 driver = 'swarm_atomic'
17
+container_version = '1.9.1'

+ 5
- 2
magnum/objects/bay.py View File

@@ -36,7 +36,8 @@ class Bay(base.MagnumPersistentObject, base.MagnumObject,
36 36
     #              Add 'trustee_user_name', 'trustee_password',
37 37
     #              'trustee_user_id' field
38 38
     # Version 1.6: Add rollback support for Bay
39
-    VERSION = '1.6'
39
+    # Version 1.7: Added 'coe_version'  and 'container_version' fields
40
+    VERSION = '1.7'
40 41
 
41 42
     dbapi = dbapi.get_instance()
42 43
 
@@ -63,7 +64,9 @@ class Bay(base.MagnumPersistentObject, base.MagnumObject,
63 64
         'trust_id': fields.StringField(nullable=True),
64 65
         'trustee_username': fields.StringField(nullable=True),
65 66
         'trustee_password': fields.StringField(nullable=True),
66
-        'trustee_user_id': fields.StringField(nullable=True)
67
+        'trustee_user_id': fields.StringField(nullable=True),
68
+        'coe_version': fields.StringField(nullable=True),
69
+        'container_version': fields.StringField(nullable=True)
67 70
     }
68 71
 
69 72
     @staticmethod

+ 1
- 0
magnum/tests/unit/conductor/handlers/test_bay_conductor.py View File

@@ -502,6 +502,7 @@ class TestHeatPoller(base.TestCase):
502 502
         baymodel = objects.BayModel(self.context, **baymodel_dict)
503 503
         mock_retrieve_baymodel.return_value = baymodel
504 504
         poller = bay_conductor.HeatPoller(mock_openstack_client, bay)
505
+        poller.get_version_info = mock.MagicMock()
505 506
         return (mock_heat_stack, bay, poller)
506 507
 
507 508
     def test_poll_and_check_send_notification(self):

+ 6
- 0
magnum/tests/unit/conductor/handlers/test_k8s_bay_conductor.py View File

@@ -68,6 +68,7 @@ class TestBayConductorWithK8s(base.TestCase):
68 68
             'trustee_password': 'fake_trustee_password',
69 69
             'trustee_user_id': '7b489f04-b458-4541-8179-6a48a553e656',
70 70
             'trust_id': 'bd11efc5-d4e2-4dac-bbce-25e348ddf7de',
71
+            'coe_version': 'fake-version',
71 72
         }
72 73
         self.context.auth_url = 'http://192.168.10.10:5000/v3'
73 74
         self.context.user_name = 'fake_user'
@@ -173,6 +174,7 @@ class TestBayConductorWithK8s(base.TestCase):
173 174
             'trust_id': 'bd11efc5-d4e2-4dac-bbce-25e348ddf7de',
174 175
             'auth_url': 'http://192.168.10.10:5000/v3',
175 176
             'insecure_registry_url': '10.0.0.1:5000',
177
+            'kube_version': 'fake-version',
176 178
         }
177 179
         if missing_attr is not None:
178 180
             expected.pop(mapping[missing_attr], None)
@@ -244,6 +246,7 @@ class TestBayConductorWithK8s(base.TestCase):
244 246
             'username': 'fake_user',
245 247
             'volume_driver': 'volume_driver',
246 248
             'insecure_registry_url': '10.0.0.1:5000',
249
+            'kube_version': 'fake-version',
247 250
         }
248 251
 
249 252
         self.assertEqual(expected, definition)
@@ -302,6 +305,7 @@ class TestBayConductorWithK8s(base.TestCase):
302 305
             'bay_uuid': self.bay_dict['uuid'],
303 306
             'magnum_url': self.mock_osc.magnum_url.return_value,
304 307
             'insecure_registry_url': '10.0.0.1:5000',
308
+            'kube_version': 'fake-version',
305 309
         }
306 310
         self.assertEqual(expected, definition)
307 311
         self.assertEqual(
@@ -356,6 +360,7 @@ class TestBayConductorWithK8s(base.TestCase):
356 360
             'bay_uuid': self.bay_dict['uuid'],
357 361
             'magnum_url': self.mock_osc.magnum_url.return_value,
358 362
             'insecure_registry_url': '10.0.0.1:5000',
363
+            'kube_version': 'fake-version',
359 364
         }
360 365
         self.assertEqual(expected, definition)
361 366
         self.assertEqual(
@@ -518,6 +523,7 @@ class TestBayConductorWithK8s(base.TestCase):
518 523
             'trust_id': 'bd11efc5-d4e2-4dac-bbce-25e348ddf7de',
519 524
             'auth_url': 'http://192.168.10.10:5000/v3',
520 525
             'insecure_registry_url': '10.0.0.1:5000',
526
+            'kube_version': 'fake-version',
521 527
         }
522 528
         self.assertEqual(expected, definition)
523 529
         self.assertEqual(

+ 1
- 0
magnum/tests/unit/conductor/handlers/test_mesos_bay_conductor.py View File

@@ -284,6 +284,7 @@ class TestBayConductorWithMesos(base.TestCase):
284 284
         baymodel = objects.BayModel(self.context, **self.baymodel_dict)
285 285
         mock_retrieve_baymodel.return_value = baymodel
286 286
         poller = bay_conductor.HeatPoller(mock_openstack_client, bay)
287
+        poller.get_version_info = mock.MagicMock()
287 288
         return (mock_heat_stack, bay, poller)
288 289
 
289 290
     def test_poll_node_count(self):

+ 13
- 6
magnum/tests/unit/conductor/handlers/test_swarm_bay_conductor.py View File

@@ -63,7 +63,8 @@ class TestBayConductorWithSwarm(base.TestCase):
63 63
             'trustee_username': 'fake_trustee',
64 64
             'trustee_password': 'fake_trustee_password',
65 65
             'trustee_user_id': '7b489f04-b458-4541-8179-6a48a553e656',
66
-            'trust_id': 'bd11efc5-d4e2-4dac-bbce-25e348ddf7de'
66
+            'trust_id': 'bd11efc5-d4e2-4dac-bbce-25e348ddf7de',
67
+            'coe_version': 'fake-version'
67 68
         }
68 69
         osc_patcher = mock.patch('magnum.common.clients.OpenStackClients')
69 70
         self.mock_osc_class = osc_patcher.start()
@@ -124,7 +125,8 @@ class TestBayConductorWithSwarm(base.TestCase):
124 125
             'trustee_password': 'fake_trustee_password',
125 126
             'trustee_user_id': '7b489f04-b458-4541-8179-6a48a553e656',
126 127
             'trust_id': 'bd11efc5-d4e2-4dac-bbce-25e348ddf7de',
127
-            'auth_url': 'http://192.168.10.10:5000/v3'
128
+            'auth_url': 'http://192.168.10.10:5000/v3',
129
+            'swarm_version': 'fake-version'
128 130
         }
129 131
         self.assertEqual(expected, definition)
130 132
         self.assertEqual(
@@ -186,7 +188,8 @@ class TestBayConductorWithSwarm(base.TestCase):
186 188
             'trustee_user_id': '7b489f04-b458-4541-8179-6a48a553e656',
187 189
             'trust_id': 'bd11efc5-d4e2-4dac-bbce-25e348ddf7de',
188 190
             'auth_url': 'http://192.168.10.10:5000/v3',
189
-            'docker_storage_driver': 'devicemapper'
191
+            'docker_storage_driver': 'devicemapper',
192
+            'swarm_version': 'fake-version'
190 193
         }
191 194
         self.assertEqual(expected, definition)
192 195
         self.assertEqual(
@@ -240,7 +243,8 @@ class TestBayConductorWithSwarm(base.TestCase):
240 243
             'trustee_password': 'fake_trustee_password',
241 244
             'trustee_user_id': '7b489f04-b458-4541-8179-6a48a553e656',
242 245
             'trust_id': 'bd11efc5-d4e2-4dac-bbce-25e348ddf7de',
243
-            'auth_url': 'http://192.168.10.10:5000/v3'
246
+            'auth_url': 'http://192.168.10.10:5000/v3',
247
+            'swarm_version': 'fake-version'
244 248
         }
245 249
         self.assertEqual(expected, definition)
246 250
         self.assertEqual(
@@ -296,7 +300,8 @@ class TestBayConductorWithSwarm(base.TestCase):
296 300
             'trustee_password': 'fake_trustee_password',
297 301
             'trustee_user_id': '7b489f04-b458-4541-8179-6a48a553e656',
298 302
             'trust_id': 'bd11efc5-d4e2-4dac-bbce-25e348ddf7de',
299
-            'auth_url': 'http://192.168.10.10:5000/v3'
303
+            'auth_url': 'http://192.168.10.10:5000/v3',
304
+            'swarm_version': 'fake-version'
300 305
         }
301 306
         self.assertEqual(expected, definition)
302 307
         self.assertEqual(
@@ -353,7 +358,8 @@ class TestBayConductorWithSwarm(base.TestCase):
353 358
             'trustee_password': 'fake_trustee_password',
354 359
             'trustee_user_id': '7b489f04-b458-4541-8179-6a48a553e656',
355 360
             'trust_id': 'bd11efc5-d4e2-4dac-bbce-25e348ddf7de',
356
-            'auth_url': 'http://192.168.10.10:5000/v3'
361
+            'auth_url': 'http://192.168.10.10:5000/v3',
362
+            'swarm_version': 'fake-version'
357 363
         }
358 364
         self.assertEqual(expected, definition)
359 365
         self.assertEqual(
@@ -374,6 +380,7 @@ class TestBayConductorWithSwarm(base.TestCase):
374 380
         baymodel = objects.BayModel(self.context, **self.baymodel_dict)
375 381
         mock_retrieve_baymodel.return_value = baymodel
376 382
         poller = bay_conductor.HeatPoller(mock_openstack_client, bay)
383
+        poller.get_version_info = mock.MagicMock()
377 384
         return (mock_heat_stack, bay, poller)
378 385
 
379 386
     def test_poll_node_count(self):

+ 2
- 0
magnum/tests/unit/objects/test_bay.py View File

@@ -32,6 +32,8 @@ class TestBayObject(base.DbTestCase):
32 32
         self.fake_bay['trustee_username'] = 'trustee_user'
33 33
         self.fake_bay['trustee_user_id'] = 'trustee_user_id'
34 34
         self.fake_bay['trustee_password'] = 'password'
35
+        self.fake_bay['coe_version'] = 'fake-coe-version'
36
+        self.fake_bay['container_version'] = 'fake-container-version'
35 37
         baymodel_id = self.fake_bay['baymodel_id']
36 38
         self.fake_baymodel = objects.BayModel(uuid=baymodel_id)
37 39
 

+ 1
- 1
magnum/tests/unit/objects/test_objects.py View File

@@ -362,7 +362,7 @@ class TestObject(test_base.TestCase, _TestObject):
362 362
 # For more information on object version testing, read
363 363
 # http://docs.openstack.org/developer/magnum/objects.html
364 364
 object_data = {
365
-    'Bay': '1.6-2386f79585a6c24bc7960884a4d0ebce',
365
+    'Bay': '1.7-88cb12f991721fe31602dc3fd7acd654',
366 366
     'BayModel': '1.15-9b961246b348aa380783dae14014e423',
367 367
     'Certificate': '1.0-2aff667971b85c1edf8d15684fd7d5e2',
368 368
     'MyObj': '1.0-b43567e512438205e32f4e95ca616697',

Loading…
Cancel
Save