Introduce BayType that declares valid COEs
Restrict COE field to be one of 'kubernetes', 'swarm' and 'mesos' Change-Id: I8967b1cd826c8c22fa5c1d847776e5e0dd65c629 Closes-Bug: #1497134
This commit is contained in:
parent
4f24b74a87
commit
618f019f4d
|
@ -16,6 +16,7 @@ from magnum.common import exception
|
|||
from magnum.common import utils
|
||||
from magnum.db import api as dbapi
|
||||
from magnum.objects import base
|
||||
from magnum.objects import fields as m_fields
|
||||
|
||||
|
||||
@base.MagnumObjectRegistry.register
|
||||
|
@ -26,7 +27,8 @@ class BayModel(base.MagnumPersistentObject, base.MagnumObject,
|
|||
# Version 1.2: Added 'network_driver' field
|
||||
# Version 1.3: Added 'labels' attribute
|
||||
# Version 1.4: Added 'insecure' attribute
|
||||
VERSION = '1.4'
|
||||
# Version 1.5: Changed type of 'coe' from StringField to BayTypeField
|
||||
VERSION = '1.5'
|
||||
|
||||
dbapi = dbapi.get_instance()
|
||||
|
||||
|
@ -48,7 +50,7 @@ class BayModel(base.MagnumPersistentObject, base.MagnumObject,
|
|||
'docker_volume_size': fields.IntegerField(nullable=True),
|
||||
'ssh_authorized_key': fields.StringField(nullable=True),
|
||||
'cluster_distro': fields.StringField(nullable=True),
|
||||
'coe': fields.StringField(nullable=True),
|
||||
'coe': m_fields.BayTypeField(nullable=True),
|
||||
'http_proxy': fields.StringField(nullable=True),
|
||||
'https_proxy': fields.StringField(nullable=True),
|
||||
'no_proxy': fields.StringField(nullable=True),
|
||||
|
|
|
@ -46,6 +46,17 @@ class ContainerStatus(fields.Enum):
|
|||
valid_values=ContainerStatus.ALL)
|
||||
|
||||
|
||||
class BayType(fields.Enum):
|
||||
ALL = (
|
||||
KUBERNETES, SWARM, MESOS,
|
||||
) = (
|
||||
'kubernetes', 'swarm', 'mesos',
|
||||
)
|
||||
|
||||
def __init__(self):
|
||||
super(BayType, self).__init__(valid_values=BayType.ALL)
|
||||
|
||||
|
||||
class ListOfDictsField(fields.AutoTypedField):
|
||||
AUTO_TYPE = fields.List(fields.Dict(fields.FieldType()))
|
||||
|
||||
|
@ -56,3 +67,7 @@ class BayStatusField(fields.BaseEnumField):
|
|||
|
||||
class ContainerStatusField(fields.BaseEnumField):
|
||||
AUTO_TYPE = ContainerStatus()
|
||||
|
||||
|
||||
class BayTypeField(fields.BaseEnumField):
|
||||
AUTO_TYPE = BayType()
|
||||
|
|
|
@ -64,3 +64,23 @@ class TestContainerStatus(test_fields.TestField):
|
|||
|
||||
def test_stringify_invalid(self):
|
||||
self.assertRaises(ValueError, self.field.stringify, 'DELETED')
|
||||
|
||||
|
||||
class TestBayType(test_fields.TestField):
|
||||
def setUp(self):
|
||||
super(TestBayType, self).setUp()
|
||||
self.field = fields.BayTypeField()
|
||||
self.coerce_good_values = [('kubernetes', 'kubernetes'),
|
||||
('swarm', 'swarm'),
|
||||
('mesos', 'mesos'), ]
|
||||
self.coerce_bad_values = ['invalid']
|
||||
|
||||
self.to_primitive_values = self.coerce_good_values[0:1]
|
||||
self.from_primitive_values = self.coerce_good_values[0:1]
|
||||
|
||||
def test_stringify(self):
|
||||
self.assertEqual("'kubernetes'",
|
||||
self.field.stringify('kubernetes'))
|
||||
|
||||
def test_stringify_invalid(self):
|
||||
self.assertRaises(ValueError, self.field.stringify, 'invalid')
|
||||
|
|
|
@ -426,7 +426,7 @@ class _TestObject(object):
|
|||
object_data = {
|
||||
'Bay': '1.0-35edde13ad178e9419e7ea8b6d580bcd',
|
||||
'BayLock': '1.0-7d1eb08cf2070523bd210369c7a2e076',
|
||||
'BayModel': '1.4-68d7979ff1d81f948180fb620e6f84c7',
|
||||
'BayModel': '1.5-b76d9b1e15e0ddef469eed9d986d4983',
|
||||
'Certificate': '1.0-2aff667971b85c1edf8d15684fd7d5e2',
|
||||
'Container': '1.0-e12affbba5f8a748882a3ae98aced282',
|
||||
'MyObj': '1.0-b43567e512438205e32f4e95ca616697',
|
||||
|
|
Loading…
Reference in New Issue