Merge "Fix Pool resource update for session_persistence"
This commit is contained in:
commit
ea6633c35b
@ -87,6 +87,7 @@ class Pool(octavia_base.OctaviaBase):
|
|||||||
'required if type is APP_COOKIE.')
|
'required if type is APP_COOKIE.')
|
||||||
)
|
)
|
||||||
},
|
},
|
||||||
|
update_allowed=True,
|
||||||
),
|
),
|
||||||
NAME: properties.Schema(
|
NAME: properties.Schema(
|
||||||
properties.Schema.STRING,
|
properties.Schema.STRING,
|
||||||
@ -177,12 +178,15 @@ class Pool(octavia_base.OctaviaBase):
|
|||||||
props['listener_id'] = props.pop(self.LISTENER)
|
props['listener_id'] = props.pop(self.LISTENER)
|
||||||
if self.LOADBALANCER in props:
|
if self.LOADBALANCER in props:
|
||||||
props['loadbalancer_id'] = props.pop(self.LOADBALANCER)
|
props['loadbalancer_id'] = props.pop(self.LOADBALANCER)
|
||||||
|
self._prepare_session_persistence(props)
|
||||||
|
return props
|
||||||
|
|
||||||
|
def _prepare_session_persistence(self, props):
|
||||||
session_p = props.get(self.SESSION_PERSISTENCE)
|
session_p = props.get(self.SESSION_PERSISTENCE)
|
||||||
if session_p is not None:
|
if session_p is not None:
|
||||||
session_props = dict(
|
session_props = dict(
|
||||||
(k, v) for k, v in session_p.items() if v is not None)
|
(k, v) for k, v in session_p.items() if v is not None)
|
||||||
props[self.SESSION_PERSISTENCE] = session_props
|
props[self.SESSION_PERSISTENCE] = session_props
|
||||||
return props
|
|
||||||
|
|
||||||
def validate(self):
|
def validate(self):
|
||||||
super(Pool, self).validate()
|
super(Pool, self).validate()
|
||||||
@ -215,7 +219,9 @@ class Pool(octavia_base.OctaviaBase):
|
|||||||
return self.client().pool_create(json={'pool': properties})['pool']
|
return self.client().pool_create(json={'pool': properties})['pool']
|
||||||
|
|
||||||
def _resource_update(self, prop_diff):
|
def _resource_update(self, prop_diff):
|
||||||
self.client().pool_set(self.resource_id, json={'pool': prop_diff})
|
props = dict((k, v) for k, v in prop_diff.items() if v is not None)
|
||||||
|
self._prepare_session_persistence(props)
|
||||||
|
self.client().pool_set(self.resource_id, json={'pool': props})
|
||||||
|
|
||||||
def _resource_delete(self):
|
def _resource_delete(self):
|
||||||
self.client().pool_delete(self.resource_id)
|
self.client().pool_delete(self.resource_id)
|
||||||
|
@ -135,6 +135,7 @@ class PoolTest(common.HeatTestCase):
|
|||||||
exceptions.Conflict(409), None]
|
exceptions.Conflict(409), None]
|
||||||
prop_diff = {
|
prop_diff = {
|
||||||
'admin_state_up': False,
|
'admin_state_up': False,
|
||||||
|
'session_persistence': {'type': 'source_ip'},
|
||||||
'name': 'your_pool',
|
'name': 'your_pool',
|
||||||
'lb_algorithm': 'SOURCE_IP'
|
'lb_algorithm': 'SOURCE_IP'
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user