def create_pool_member(self, context, member, pool_id): try: with context.session.begin(subtransactions=True): self._load_id(context, member) member['pool_id'] = pool_id member['provisioning_status'] = constants.PENDING_CREATE member['operating_status'] = lb_const.OFFLINE member_db = models.MemberV2(**member) context.session.add(member_db) except exception.DBDuplicateEntry: raise loadbalancerv2.MemberExists(address=member['address'], port=member['protocol_port'], pool=pool_id) context.session.refresh(member_db.pool) return data_models.Member.from_sqlalchemy_model(member_db)
def update_object(self, member_db, id, m): pool_id = member_db.parent_uuid try: pool = self._api.loadbalancer_pool_read(id=pool_id) except NoIdError: raise loadbalancerv2.EntityNotFound(name='Pool', id=pool_id) db_props = member_db.get_loadbalancer_member_properties() members = pool.get_loadbalancer_members() for member in members or []: if id == member['uuid']: continue member_obj = self._api.loadbalancer_member_read(id=member['uuid']) props = member_obj.get_loadbalancer_member_properties() if ((props.get_address() == db_props.get_address()) and (props.get_protocol_port() == db_props.get_protocol_port())): raise loadbalancerv2.MemberExists( address=props.get_address(), port=props.get_protocol_port(), pool=pool_id) return True