7cebc39c73
When no security groups is present on the LBaaSLoadBalancer oslo versioned object it should default to an empty list and not to None. Otherwise iterations of the security_groups field fails. Closes-bug: 1881575 Change-Id: I9a98584f80219bf5c2ea414177826a26470d414f
74 lines
2.9 KiB
Python
74 lines
2.9 KiB
Python
# Copyright 2018 Red Hat, Inc.
|
|
#
|
|
# Licensed under the Apache License, Version 2.0 (the "License");
|
|
# you may not use this file except in compliance with the License.
|
|
# You may obtain a copy of the License at
|
|
#
|
|
# http://www.apache.org/licenses/LICENSE-2.0
|
|
#
|
|
# Unless required by applicable law or agreed to in writing, software
|
|
# distributed under the License is distributed on an "AS IS" BASIS,
|
|
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
# See the License for the specific language governing permissions and
|
|
# limitations under the License.
|
|
|
|
from kuryr_kubernetes.objects import base as kuryr_base
|
|
from kuryr_kubernetes.tests import base as test_base
|
|
from oslo_versionedobjects import base
|
|
from oslo_versionedobjects import fixture
|
|
|
|
# NOTE(danms): The hashes in this list should only be changed if
|
|
# they come with a corresponding version bump in the affected
|
|
# objects
|
|
object_data = {
|
|
'LBaaSListener': '1.0-a9e2d5c73687f5edc66fdb2f48650e15',
|
|
'LBaaSLoadBalancer': '1.4-835c38599fa4692ad26726342c36ccb4',
|
|
'LBaaSMember': '1.0-a770c6884c27d6d8c21186b27d0e2ccb',
|
|
'LBaaSPool': '1.1-6e77370d7632a902445444249eb77b01',
|
|
'LBaaSPortSpec': '1.1-1b307f34630617086c7af70f2cb8b215',
|
|
'LBaaSPubIp': '1.0-83992edec2c60fb4ab8998ea42a4ff74',
|
|
'LBaaSServiceSpec': '1.0-d430ecd443f2b1999196bfe531e56f7e',
|
|
'LBaaSState': '1.0-a0ff7dce2d3f6ce1ffab4ff95a344361',
|
|
}
|
|
|
|
|
|
def get_kuryr_objects():
|
|
"""Get Kuryr versioned objects
|
|
|
|
This returns a dict of versioned objects which are
|
|
in the Kuryr project namespace only (excludes objects
|
|
from os-vif and other 3rd party modules)
|
|
|
|
:return: a dict mapping class names to lists of versioned objects
|
|
"""
|
|
|
|
all_classes = base.VersionedObjectRegistry.obj_classes()
|
|
kuryr_classes = {}
|
|
for name in all_classes:
|
|
objclasses = all_classes[name]
|
|
if (objclasses[0].OBJ_PROJECT_NAMESPACE ==
|
|
kuryr_base.KuryrK8sObjectBase.OBJ_PROJECT_NAMESPACE):
|
|
kuryr_classes[name] = objclasses
|
|
return kuryr_classes
|
|
|
|
|
|
class TestObjectVersions(test_base.TestCase):
|
|
def test_versions(self):
|
|
"""Test Versions
|
|
|
|
Ensures that modified objects had their versions bumped
|
|
"""
|
|
|
|
checker = fixture.ObjectVersionChecker(
|
|
get_kuryr_objects())
|
|
expected, actual = checker.test_hashes(object_data)
|
|
self.assertEqual(expected, actual,
|
|
"""Some objects have changed; please make sure the
|
|
versions have been bumped and backporting
|
|
compatibility code has been added to
|
|
obj_make_compatible if necessary, and then update
|
|
their hashes in the object_data map in this test
|
|
module. If we don't need to add backporting code then
|
|
it means we also don't need the version bump and we
|
|
just have to change the hash in this module.""")
|