Merge "Implement custom constraints for subnet/port/router"
This commit is contained in:
commit
ce03f9cf71
|
@ -68,3 +68,33 @@ class NetworkConstraint(constraints.BaseCustomConstraint):
|
|||
neutron_client = client.client('neutron')
|
||||
neutronV20.find_resourceid_by_name_or_id(
|
||||
neutron_client, 'network', value)
|
||||
|
||||
|
||||
class PortConstraint(constraints.BaseCustomConstraint):
|
||||
|
||||
expected_exceptions = (exceptions.NeutronClientException,)
|
||||
|
||||
def validate_with_client(self, client, value):
|
||||
neutron_client = client.client('neutron')
|
||||
neutronV20.find_resourceid_by_name_or_id(
|
||||
neutron_client, 'port', value)
|
||||
|
||||
|
||||
class RouterConstraint(constraints.BaseCustomConstraint):
|
||||
|
||||
expected_exceptions = (exceptions.NeutronClientException,)
|
||||
|
||||
def validate_with_client(self, client, value):
|
||||
neutron_client = client.client('neutron')
|
||||
neutronV20.find_resourceid_by_name_or_id(
|
||||
neutron_client, 'router', value)
|
||||
|
||||
|
||||
class SubnetConstraint(constraints.BaseCustomConstraint):
|
||||
|
||||
expected_exceptions = (exceptions.NeutronClientException,)
|
||||
|
||||
def validate_with_client(self, client, value):
|
||||
neutron_client = client.client('neutron')
|
||||
neutronV20.find_resourceid_by_name_or_id(
|
||||
neutron_client, 'subnet', value)
|
||||
|
|
|
@ -2468,3 +2468,75 @@ class NetworkConstraintTest(HeatTestCase):
|
|||
self.assertFalse(constraint.validate("bar", ctx))
|
||||
|
||||
self.m.VerifyAll()
|
||||
|
||||
|
||||
class PortConstraintTest(HeatTestCase):
|
||||
|
||||
def test_validate(self):
|
||||
nc = self.m.CreateMockAnything()
|
||||
self.m.StubOutWithMock(neutron.NeutronClientPlugin, '_create')
|
||||
neutron.NeutronClientPlugin._create().AndReturn(nc)
|
||||
self.m.StubOutWithMock(neutron.neutronV20,
|
||||
'find_resourceid_by_name_or_id')
|
||||
neutron.neutronV20.find_resourceid_by_name_or_id(
|
||||
nc, 'port', 'foo'
|
||||
).AndReturn('foo')
|
||||
neutron.neutronV20.find_resourceid_by_name_or_id(
|
||||
nc, 'port', 'bar'
|
||||
).AndRaise(qe.NeutronClientException(status_code=404))
|
||||
self.m.ReplayAll()
|
||||
|
||||
constraint = neutron.PortConstraint()
|
||||
ctx = utils.dummy_context()
|
||||
self.assertTrue(constraint.validate("foo", ctx))
|
||||
self.assertFalse(constraint.validate("bar", ctx))
|
||||
|
||||
self.m.VerifyAll()
|
||||
|
||||
|
||||
class RouterConstraintTest(HeatTestCase):
|
||||
|
||||
def test_validate(self):
|
||||
nc = self.m.CreateMockAnything()
|
||||
self.m.StubOutWithMock(neutron.NeutronClientPlugin, '_create')
|
||||
neutron.NeutronClientPlugin._create().AndReturn(nc)
|
||||
self.m.StubOutWithMock(neutron.neutronV20,
|
||||
'find_resourceid_by_name_or_id')
|
||||
neutron.neutronV20.find_resourceid_by_name_or_id(
|
||||
nc, 'router', 'foo'
|
||||
).AndReturn('foo')
|
||||
neutron.neutronV20.find_resourceid_by_name_or_id(
|
||||
nc, 'router', 'bar'
|
||||
).AndRaise(qe.NeutronClientException(status_code=404))
|
||||
self.m.ReplayAll()
|
||||
|
||||
constraint = neutron.RouterConstraint()
|
||||
ctx = utils.dummy_context()
|
||||
self.assertTrue(constraint.validate("foo", ctx))
|
||||
self.assertFalse(constraint.validate("bar", ctx))
|
||||
|
||||
self.m.VerifyAll()
|
||||
|
||||
|
||||
class SubnetConstraintTest(HeatTestCase):
|
||||
|
||||
def test_validate(self):
|
||||
nc = self.m.CreateMockAnything()
|
||||
self.m.StubOutWithMock(neutron.NeutronClientPlugin, '_create')
|
||||
neutron.NeutronClientPlugin._create().AndReturn(nc)
|
||||
self.m.StubOutWithMock(neutron.neutronV20,
|
||||
'find_resourceid_by_name_or_id')
|
||||
neutron.neutronV20.find_resourceid_by_name_or_id(
|
||||
nc, 'subnet', 'foo'
|
||||
).AndReturn('foo')
|
||||
neutron.neutronV20.find_resourceid_by_name_or_id(
|
||||
nc, 'subnet', 'bar'
|
||||
).AndRaise(qe.NeutronClientException(status_code=404))
|
||||
self.m.ReplayAll()
|
||||
|
||||
constraint = neutron.SubnetConstraint()
|
||||
ctx = utils.dummy_context()
|
||||
self.assertTrue(constraint.validate("foo", ctx))
|
||||
self.assertFalse(constraint.validate("bar", ctx))
|
||||
|
||||
self.m.VerifyAll()
|
||||
|
|
|
@ -52,6 +52,9 @@ heat.clients =
|
|||
heat.constraints =
|
||||
nova.flavor = heat.engine.resources.server:FlavorConstraint
|
||||
neutron.network = heat.engine.clients.os.neutron:NetworkConstraint
|
||||
neutron.port = heat.engine.clients.os.neutron:PortConstraint
|
||||
neutron.router = heat.engine.clients.os.neutron:RouterConstraint
|
||||
neutron.subnet = heat.engine.clients.os.neutron:SubnetConstraint
|
||||
glance.image = heat.engine.clients.os.glance:ImageConstraint
|
||||
iso_8601 = heat.engine.resources.iso_8601:ISO8601Constraint
|
||||
nova.keypair = heat.engine.resources.nova_keypair:KeypairConstraint
|
||||
|
|
Loading…
Reference in New Issue