def link_props_drop(self): lookup_mask = self._unpack_link_props(key='lookup_mask') with graph.begin() as tx: removed_records = link_props_utils.drop_by_mask(tx, lookup_mask) for link_props in removed_records: isl = model.InterSwitchLink.new_from_link_props(link_props) isl_utils.del_props(tx, isl, link_props.props) response_batch = [ message_utils.make_link_props_response(self.payload, x) for x in removed_records] message_utils.send_link_props_chunked_response( response_batch, self.correlation_id)
def handle_link_props(self): try: if self.get_message_type() == CD_LINK_PROPS_PUT: self.link_props_put() elif self.get_message_type() == CD_LINK_PROPS_DROP: self.link_props_drop() else: raise exc.NotImplementedError( 'link props request {}'.format(self.get_message_type())) except CypherSyntaxError as e: logger.exception('Request produce invalid cypher query') payload = message_utils.make_link_props_response( self.payload, None, 'Invalid request') message_utils.send_link_props_response( payload, self.correlation_id, self.get_message_type() == CD_LINK_PROPS_DROP) except Exception as e: payload = message_utils.make_link_props_response( self.payload, None, error=str(e)) message_utils.send_link_props_response( payload, self.correlation_id, self.get_message_type() == CD_LINK_PROPS_DROP)
def handle_link_props(self): try: if self.get_message_type() == CD_LINK_PROPS_PUT: self.link_props_put() elif self.get_message_type() == CD_LINK_PROPS_DROP: self.link_props_drop() else: raise exc.NotImplementedError( 'link props request {}'.format(self.get_message_type())) except exc.Error as e: payload = message_utils.make_link_props_response( self.payload, None, error=str(e)) message_utils.send_link_props_response( payload, self.correlation_id, self.get_message_type() == CD_LINK_PROPS_DROP)
def link_props_put(self): link_props = self._unpack_link_props() protected = link_props.extract_protected_props() if protected: raise exc.UnacceptableDataError( link_props, 'property(es) %s is can\'t be changed'.format( ', '.join(repr(x) for x in sorted(protected)))) with graph.begin() as tx: link_props_utils.create_if_missing(tx, link_props) link_props_utils.set_props_and_propagate_to_isl(tx, link_props) actual_link_props = link_props_utils.read(tx, link_props) payload = message_utils.make_link_props_response( self.payload, actual_link_props) message_utils.send_link_props_response(payload, self.correlation_id)