def _cb_dcnm_msg(self, method, body):
LOG.debug('<STR_LIT>',<EOL>{'<STR_LIT:key>': method.routing_key, '<STR_LIT:body>': body})<EOL>partition_keyword = '<STR_LIT>'<EOL>network_keyword = partition_keyword + '<STR_LIT>'<EOL>network_create_key = network_keyword + '<STR_LIT>'<EOL>network_update_key = network_keyword + '<STR_LIT>'<EOL>msg = jsonutils.loads(body)<EOL>LOG.debug('<STR_LIT>', msg)<EOL>if not msg:<EOL><INDENT>LOG.debug("<STR_LIT>")<EOL>return<EOL><DEDENT>url = msg['<STR_LIT>']<EOL>url_fields = url.split('<STR_LIT:/>')<EOL>pre_project_name = url_fields[<NUM_LIT:4>]<EOL>pre_partition_name = url_fields[<NUM_LIT:6>]<EOL>pre_seg_id = url_fields[<NUM_LIT:9>]<EOL>data = {"<STR_LIT>": pre_project_name,<EOL>"<STR_LIT>": pre_partition_name,<EOL>"<STR_LIT>": pre_seg_id}<EOL>if network_create_key in method.routing_key or (<EOL>network_update_key in method.routing_key):<EOL><INDENT>pri = self._create_pri<EOL>event_type = '<STR_LIT>'<EOL><DEDENT>else:<EOL><INDENT>pri = self._delete_pri<EOL>event_type = '<STR_LIT>'<EOL><DEDENT>if self._pq is not None:<EOL><INDENT>payload = (event_type, data)<EOL>self._pq.put((pri, time.ctime, payload))<EOL><DEDENT>
Callback function to process DCNM network creation/update/deletion
        message received by AMQP.

        It also communicates with DCNM to extract info for CPNR record
        insertion/deletion.

        :param pika.channel.Channel ch: The channel instance.
        :param pika.Spec.Basic.Deliver method: The basic deliver method
                                               which includes routing key.
        :param pika.Spec.BasicProperties properties: properties
        :param str body: The message body.