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)
Пример #2
0
 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