Merge "Use RESOLVE translation for lbaasv2 resources"
This commit is contained in:
commit
5eede801f6
|
@ -21,6 +21,7 @@ from heat.engine import constraints
|
|||
from heat.engine import properties
|
||||
from heat.engine.resources.openstack.neutron import neutron
|
||||
from heat.engine import support
|
||||
from heat.engine import translation
|
||||
|
||||
|
||||
class Listener(neutron.NeutronResource):
|
||||
|
@ -137,16 +138,17 @@ class Listener(neutron.NeutronResource):
|
|||
)
|
||||
}
|
||||
|
||||
def __init__(self, name, definition, stack):
|
||||
super(Listener, self).__init__(name, definition, stack)
|
||||
self._lb_id = None
|
||||
|
||||
@property
|
||||
def lb_id(self):
|
||||
if self._lb_id is None:
|
||||
self._lb_id = self.client_plugin().find_resourceid_by_name_or_id(
|
||||
'loadbalancer', self.properties[self.LOADBALANCER])
|
||||
return self._lb_id
|
||||
def translation_rules(self, props):
|
||||
return [
|
||||
translation.TranslationRule(
|
||||
props,
|
||||
translation.TranslationRule.RESOLVE,
|
||||
[self.LOADBALANCER],
|
||||
client_plugin=self.client_plugin(),
|
||||
finder='find_resourceid_by_name_or_id',
|
||||
entity='loadbalancer'
|
||||
),
|
||||
]
|
||||
|
||||
def validate(self):
|
||||
res = super(Listener, self).validate()
|
||||
|
@ -161,16 +163,15 @@ class Listener(neutron.NeutronResource):
|
|||
raise exception.StackValidationFailed(message=msg)
|
||||
|
||||
def _check_lb_status(self):
|
||||
return self.client_plugin().check_lb_status(self.lb_id)
|
||||
lb_id = self.properties[self.LOADBALANCER]
|
||||
return self.client_plugin().check_lb_status(lb_id)
|
||||
|
||||
def handle_create(self):
|
||||
properties = self.prepare_properties(
|
||||
self.properties,
|
||||
self.physical_resource_name())
|
||||
|
||||
self.client_plugin().resolve_loadbalancer(
|
||||
properties, self.LOADBALANCER, 'loadbalancer_id')
|
||||
|
||||
properties['loadbalancer_id'] = properties.pop(self.LOADBALANCER)
|
||||
return properties
|
||||
|
||||
def check_create_complete(self, properties):
|
||||
|
|
|
@ -23,6 +23,7 @@ from heat.engine import constraints
|
|||
from heat.engine import properties
|
||||
from heat.engine.resources.openstack.neutron import neutron
|
||||
from heat.engine import support
|
||||
from heat.engine import translation
|
||||
|
||||
|
||||
class LoadBalancer(neutron.NeutronResource):
|
||||
|
@ -117,15 +118,24 @@ class LoadBalancer(neutron.NeutronResource):
|
|||
)
|
||||
}
|
||||
|
||||
def translation_rules(self, props):
|
||||
return [
|
||||
translation.TranslationRule(
|
||||
props,
|
||||
translation.TranslationRule.RESOLVE,
|
||||
[self.VIP_SUBNET],
|
||||
client_plugin=self.client_plugin(),
|
||||
finder='find_resourceid_by_name_or_id',
|
||||
entity='subnet'
|
||||
),
|
||||
]
|
||||
|
||||
def handle_create(self):
|
||||
properties = self.prepare_properties(
|
||||
self.properties,
|
||||
self.physical_resource_name()
|
||||
)
|
||||
|
||||
self.client_plugin().resolve_subnet(
|
||||
properties, self.VIP_SUBNET, 'vip_subnet_id')
|
||||
|
||||
properties['vip_subnet_id'] = properties.pop(self.VIP_SUBNET)
|
||||
lb = self.client().create_loadbalancer(
|
||||
{'loadbalancer': properties})['loadbalancer']
|
||||
self.resource_id_set(lb['id'])
|
||||
|
|
|
@ -21,6 +21,7 @@ from heat.engine import constraints
|
|||
from heat.engine import properties
|
||||
from heat.engine.resources.openstack.neutron import neutron
|
||||
from heat.engine import support
|
||||
from heat.engine import translation
|
||||
|
||||
|
||||
class Pool(neutron.NeutronResource):
|
||||
|
@ -139,6 +140,18 @@ class Pool(neutron.NeutronResource):
|
|||
),
|
||||
}
|
||||
|
||||
def translation_rules(self, props):
|
||||
return [
|
||||
translation.TranslationRule(
|
||||
props,
|
||||
translation.TranslationRule.RESOLVE,
|
||||
[self.LISTENER],
|
||||
client_plugin=self.client_plugin(),
|
||||
finder='find_resourceid_by_name_or_id',
|
||||
entity='listener'
|
||||
),
|
||||
]
|
||||
|
||||
def __init__(self, name, definition, stack):
|
||||
super(Pool, self).__init__(name, definition, stack)
|
||||
self._lb_id = None
|
||||
|
@ -146,10 +159,8 @@ class Pool(neutron.NeutronResource):
|
|||
@property
|
||||
def lb_id(self):
|
||||
if self._lb_id is None:
|
||||
listener_id = self.client_plugin().find_resourceid_by_name_or_id(
|
||||
'listener', self.properties[self.LISTENER])
|
||||
listener_id = self.properties[self.LISTENER]
|
||||
listener = self.client().show_listener(listener_id)['listener']
|
||||
|
||||
self._lb_id = listener['loadbalancers'][0]['id']
|
||||
return self._lb_id
|
||||
|
||||
|
@ -186,9 +197,7 @@ class Pool(neutron.NeutronResource):
|
|||
self.properties,
|
||||
self.physical_resource_name())
|
||||
|
||||
self.client_plugin().resolve_listener(
|
||||
properties, self.LISTENER, 'listener_id')
|
||||
|
||||
properties['listener_id'] = properties.pop(self.LISTENER)
|
||||
session_p = properties.get(self.SESSION_PERSISTENCE)
|
||||
if session_p is not None:
|
||||
session_props = self.prepare_properties(session_p, None)
|
||||
|
|
|
@ -20,6 +20,7 @@ from heat.engine import constraints
|
|||
from heat.engine import properties
|
||||
from heat.engine.resources.openstack.neutron import neutron
|
||||
from heat.engine import support
|
||||
from heat.engine import translation
|
||||
|
||||
|
||||
class PoolMember(neutron.NeutronResource):
|
||||
|
@ -107,6 +108,18 @@ class PoolMember(neutron.NeutronResource):
|
|||
)
|
||||
}
|
||||
|
||||
def translation_rules(self, props):
|
||||
return [
|
||||
translation.TranslationRule(
|
||||
props,
|
||||
translation.TranslationRule.RESOLVE,
|
||||
[self.SUBNET],
|
||||
client_plugin=self.client_plugin(),
|
||||
finder='find_resourceid_by_name_or_id',
|
||||
entity='subnet'
|
||||
),
|
||||
]
|
||||
|
||||
def __init__(self, name, definition, stack):
|
||||
super(PoolMember, self).__init__(name, definition, stack)
|
||||
self._pool_id = None
|
||||
|
@ -145,9 +158,7 @@ class PoolMember(neutron.NeutronResource):
|
|||
properties.pop('pool_id')
|
||||
|
||||
if self.SUBNET in properties:
|
||||
self.client_plugin().resolve_subnet(
|
||||
properties, self.SUBNET, 'subnet_id')
|
||||
|
||||
properties['subnet_id'] = properties.pop(self.SUBNET)
|
||||
return properties
|
||||
|
||||
def check_create_complete(self, properties):
|
||||
|
|
|
@ -42,8 +42,6 @@ class LoadBalancerTest(common.HeatTestCase):
|
|||
self.t = template_format.parse(tmpl)
|
||||
self.stack = utils.parse_stack(self.t)
|
||||
self.lb = self.stack['lb']
|
||||
self.lb.resource_id_set('1234')
|
||||
|
||||
self.neutron_client = mock.MagicMock()
|
||||
self.lb.client = mock.MagicMock()
|
||||
self.lb.client.return_value = self.neutron_client
|
||||
|
@ -52,6 +50,8 @@ class LoadBalancerTest(common.HeatTestCase):
|
|||
return_value='123')
|
||||
self.lb.client_plugin().client = mock.MagicMock(
|
||||
return_value=self.neutron_client)
|
||||
self.lb.translate_properties(self.lb.properties)
|
||||
self.lb.resource_id_set('1234')
|
||||
|
||||
def test_create(self):
|
||||
self._create_stack()
|
||||
|
|
|
@ -46,6 +46,7 @@ class PoolMemberTest(common.HeatTestCase):
|
|||
mock.MagicMock(return_value='123'))
|
||||
self.member.client_plugin().client = mock.MagicMock(
|
||||
return_value=self.neutron_client)
|
||||
self.member.translate_properties(self.member.properties)
|
||||
|
||||
def test_create(self):
|
||||
self._create_stack()
|
||||
|
|
Loading…
Reference in New Issue