コード例 #1
0
    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)
コード例 #2
0
 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)
コード例 #3
0
 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)
コード例 #4
0
    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)