Skip to content

Commit

Permalink
LBaaS member-update failure
Browse files Browse the repository at this point in the history
This fixes lbaas member-update of weight/admin_state.
pool_id update won't be fixed by this.

Change-Id: I3d7b5345479a6d8c78fdf695e71ed78cdd022006
Partial-Bug: #1462456
  • Loading branch information
Varun Lodaya committed Oct 30, 2015
1 parent 91bf123 commit 77b7d4e
Showing 1 changed file with 19 additions and 23 deletions.
Expand Up @@ -175,18 +175,12 @@ def update_properties(self, member_db, id, m):
return False

def update_object(self, member_db, id, m):
old_pool_id = self._get_member_pool_id(member_db)
if 'pool_id' in m and m['pool_id'] != old_pool_id:
pool_id = m['pool_id']
else:
pool_id = old_pool_id
if 'pool_id' in m and self._get_member_pool_id(member_db) != m['pool_id']:
try:
pool = self._api.loadbalancer_pool_read(id=m['pool_id'])
except NoIdError:
raise loadbalancer.PoolNotFound(pool_id=m['pool_id'])

try:
pool = self._api.loadbalancer_pool_read(id=pool_id)
except NoIdError:
raise loadbalancer.PoolNotFound(pool_id=pool_id)

if pool_id != old_pool_id:
db_props = member_db.get_loadbalancer_member_properties()
members = pool.get_loadbalancer_members()
for member in members or []:
Expand All @@ -200,17 +194,19 @@ def update_object(self, member_db, id, m):
port=props.get_protocol_port(),
pool=m['pool_id'])

# delete member from old pool
props = member_db.get_loadbalancer_member_properties()
obj_uuid = member_db.uuid
self._api.loadbalancer_member_delete(id=member_db.uuid)
# delete member from old pool
props = member_db.get_loadbalancer_member_properties()
obj_uuid = member_db.uuid
self._api.loadbalancer_member_delete(id=member_db.uuid)

# create member for the new pool with same uuid and props
id_perms = IdPermsType(enable=True)
member_obj = LoadbalancerMember(
obj_uuid, pool, loadbalancer_member_properties=props,
id_perms=id_perms)
member_obj.uuid = obj_uuid
self._api.loadbalancer_member_create(member_obj)
# create member for the new pool with same uuid and props
id_perms = IdPermsType(enable=True)
member_obj = LoadbalancerMember(
obj_uuid, pool, loadbalancer_member_properties=props,
id_perms=id_perms)
member_obj.uuid = obj_uuid
self._api.loadbalancer_member_create(member_obj)

return True
return True

return False

0 comments on commit 77b7d4e

Please sign in to comment.