Skip to content

Commit

Permalink
Handle session persistence info in case of lbaasv2
Browse files Browse the repository at this point in the history
Change-Id: Ic6e6c19322558b8c6508c3db4a1fc6a6d1edfeb8
Closes-Bug:#1565135
  • Loading branch information
Senthilnathan Murugappan committed Apr 1, 2016
1 parent 357b0a0 commit 2b23d74
Showing 1 changed file with 29 additions and 1 deletion.
Expand Up @@ -38,6 +38,12 @@ def make_properties(self, pool):
for key, mapping in self._loadbalancer_pool_type_mapping.iteritems():
if mapping in pool:
setattr(props, key, pool[mapping])
sp = pool['session_persistence']
if sp is not None:
if 'type' in sp:
props.session_persistence = sp['type']
if 'cookie_name' in sp:
props.persistence_cookie_name = sp['cookie_name']
return props

def _get_listeners(self, pool):
Expand All @@ -56,6 +62,7 @@ def make_dict(self, pool, fields=None):
'description': self._get_object_description(pool),
'status': self._get_object_status(pool),
'listeners': self._get_listeners(pool),
'session_persistence': None,
}

props = pool.get_loadbalancer_pool_properties()
Expand All @@ -64,6 +71,12 @@ def make_dict(self, pool, fields=None):
if value is not None:
res[mapping] = value

if props.session_persistence:
sp = {'type': props.session_persistence}
if props.session_persistence == 'APP_COOKIE':
sp['cookie_name'] = props.persistence_cookie_name
res['session_persistence'] = sp

res['provider'] = pool.get_loadbalancer_pool_provider()

# members
Expand Down Expand Up @@ -170,10 +183,25 @@ def create(self, context, pool):
self._api.loadbalancer_pool_create(pool)
return self.make_dict(pool)

def _update_pool_properties(self, props, pool):
change = self.update_properties_subr(props, pool)
if 'session_persistence' in pool:
sp = pool['session_persistence']
new_type = sp.get('type', None)
if props.session_persistence != new_type:
props.session_persistence = new_type
change = True
new_cookie_name = sp.get('cookie_name', None)
if props.persistence_cookie_name != new_cookie_name and \
props.session_persistence == 'APP_COOKIE':
props.persistence_cookie_name = new_cookie_name
change = True
return change

def update_properties(self, pool_db, id, p):
props = pool_db.get_loadbalancer_pool_properties()
change = False
if self.update_properties_subr(props, p):
if self._update_pool_properties(props, p):
pool_db.set_loadbalancer_pool_properties(props)
change = True

Expand Down

0 comments on commit 2b23d74

Please sign in to comment.