)]}'
{"devstack/plugin.sh":[{"author":{"_account_id":7805,"name":"Li Ma","email":"skywalker.nick@gmail.com","username":"Nick"},"change_message_id":"1d4cc7a73ad0f73e69f0176686352ac49229ef7e","unresolved":false,"context_lines":[{"line_number":132,"context_line":"            iniset $NEUTRON_CONF quotas quota_security_group_rule \"-1\""},{"line_number":133,"context_line":"        fi"},{"line_number":134,"context_line":""},{"line_number":135,"context_line":"        if is_service_enabled df-meta ; then"},{"line_number":136,"context_line":"            NOVA_CONF\u003d${NOVA_CONF:-\"/etc/nova/nova.conf\"}"},{"line_number":137,"context_line":"            iniset $NOVA_CONF neutron service_metadata_proxy True"},{"line_number":138,"context_line":"            iniset $NOVA_CONF neutron metadata_proxy_shared_secret $METADATA_PROXY_SHARED_SECRET"}],"source_content_type":"text/x-sh","patch_set":5,"id":"bab6814e_361e75bb","line":135,"range":{"start_line":135,"start_character":30,"end_line":135,"end_character":37},"updated":"2016-05-26 04:20:37.000000000","message":"df-metadata?","commit_id":"47b350edd725a6845acaf9e55fc967d009446c4c"},{"author":{"_account_id":20229,"name":"Omer Anson","email":"omer.anson@toganetworks.com","username":"oanson"},"change_message_id":"b923d344590f877113bf32a1958587e76a2da334","unresolved":false,"context_lines":[{"line_number":132,"context_line":"            iniset $NEUTRON_CONF quotas quota_security_group_rule \"-1\""},{"line_number":133,"context_line":"        fi"},{"line_number":134,"context_line":""},{"line_number":135,"context_line":"        if is_service_enabled df-meta ; then"},{"line_number":136,"context_line":"            NOVA_CONF\u003d${NOVA_CONF:-\"/etc/nova/nova.conf\"}"},{"line_number":137,"context_line":"            iniset $NOVA_CONF neutron service_metadata_proxy True"},{"line_number":138,"context_line":"            iniset $NOVA_CONF neutron metadata_proxy_shared_secret $METADATA_PROXY_SHARED_SECRET"}],"source_content_type":"text/x-sh","patch_set":5,"id":"9abb7d3a_9c5cf626","line":135,"range":{"start_line":135,"start_character":30,"end_line":135,"end_character":37},"in_reply_to":"bab6814e_361e75bb","updated":"2016-05-29 06:19:41.000000000","message":"Done","commit_id":"47b350edd725a6845acaf9e55fc967d009446c4c"},{"author":{"_account_id":6854,"name":"YAMAMOTO Takashi","email":"yamamoto@midokura.com","username":"yamamoto"},"change_message_id":"e287f77f190d16aa3eb57e7279e795cc465ac3bc","unresolved":false,"context_lines":[{"line_number":89,"context_line":"        iniset $NOVA_CONF neutron service_metadata_proxy True"},{"line_number":90,"context_line":"        iniset $NOVA_CONF neutron metadata_proxy_shared_secret $METADATA_PROXY_SHARED_SECRET"},{"line_number":91,"context_line":"        iniset $NEUTRON_CONF DEFAULT metadata_proxy_shared_secret $METADATA_PROXY_SHARED_SECRET"},{"line_number":92,"context_line":"        iniset $NEUTRON_CONF df apps_list \"$DF_APPS_LIST,metadata_service_app.MetadataServiceApp\""},{"line_number":93,"context_line":"        iniset $NEUTRON_CONF df_metadata ip \"$DF_METADATA_SERVICE_IP\""},{"line_number":94,"context_line":"        iniset $NEUTRON_CONF df_metadata port \"$DF_METADATA_SERVICE_PORT\""},{"line_number":95,"context_line":"        iniset $NEUTRON_CONF df_metadata interface \"$DF_METADATA_SERVICE_INTERFACE\""}],"source_content_type":"text/x-sh","patch_set":7,"id":"3aaa91ec_6c000c03","line":92,"range":{"start_line":92,"start_character":0,"end_line":92,"end_character":97},"updated":"2016-06-30 08:50:11.000000000","message":"i guess it\u0027s better to just modify DF_APPS_LIST here\nand let the caller do iniset at once.","commit_id":"fb0e8b6da2ba5800316927f1a4aa3262d0611af7"},{"author":{"_account_id":20229,"name":"Omer Anson","email":"omer.anson@toganetworks.com","username":"oanson"},"change_message_id":"bf25f621afdcaa6305931ce2d5a3ee53342a476c","unresolved":false,"context_lines":[{"line_number":89,"context_line":"        iniset $NOVA_CONF neutron service_metadata_proxy True"},{"line_number":90,"context_line":"        iniset $NOVA_CONF neutron metadata_proxy_shared_secret $METADATA_PROXY_SHARED_SECRET"},{"line_number":91,"context_line":"        iniset $NEUTRON_CONF DEFAULT metadata_proxy_shared_secret $METADATA_PROXY_SHARED_SECRET"},{"line_number":92,"context_line":"        iniset $NEUTRON_CONF df apps_list \"$DF_APPS_LIST,metadata_service_app.MetadataServiceApp\""},{"line_number":93,"context_line":"        iniset $NEUTRON_CONF df_metadata ip \"$DF_METADATA_SERVICE_IP\""},{"line_number":94,"context_line":"        iniset $NEUTRON_CONF df_metadata port \"$DF_METADATA_SERVICE_PORT\""},{"line_number":95,"context_line":"        iniset $NEUTRON_CONF df_metadata interface \"$DF_METADATA_SERVICE_INTERFACE\""}],"source_content_type":"text/x-sh","patch_set":7,"id":"1aa78d24_97907aee","line":92,"range":{"start_line":92,"start_character":0,"end_line":92,"end_character":97},"in_reply_to":"3aaa91ec_6c000c03","updated":"2016-07-03 17:22:12.000000000","message":"Done","commit_id":"fb0e8b6da2ba5800316927f1a4aa3262d0611af7"},{"author":{"_account_id":6854,"name":"YAMAMOTO Takashi","email":"yamamoto@midokura.com","username":"yamamoto"},"change_message_id":"e287f77f190d16aa3eb57e7279e795cc465ac3bc","unresolved":false,"context_lines":[{"line_number":364,"context_line":"        sudo ip addr add dev $DF_METADATA_SERVICE_INTERFACE $DF_METADATA_SERVICE_IP/0"},{"line_number":365,"context_line":"        sudo ip link set dev $DF_METADATA_SERVICE_INTERFACE up"},{"line_number":366,"context_line":"        sudo ip route add 0.0.0.0/0 dev $DF_METADATA_SERVICE_INTERFACE table 2"},{"line_number":367,"context_line":"        sudo ip rule add from $DF_METADATA_SERVICE_IP table 2"},{"line_number":368,"context_line":"        run_process df-metadata \"python $DF_METADATA_SERVICE --config-file $NEUTRON_CONF\""},{"line_number":369,"context_line":"    fi"},{"line_number":370,"context_line":"}"}],"source_content_type":"text/x-sh","patch_set":7,"id":"3aaa91ec_92110e55","line":367,"updated":"2016-06-30 08:50:11.000000000","message":"who\u0027s responsible to make these happen for non-devstack (ie. normal) deployments?\ni wonder if this belongs to the service itself.","commit_id":"fb0e8b6da2ba5800316927f1a4aa3262d0611af7"},{"author":{"_account_id":20229,"name":"Omer Anson","email":"omer.anson@toganetworks.com","username":"oanson"},"change_message_id":"bf25f621afdcaa6305931ce2d5a3ee53342a476c","unresolved":false,"context_lines":[{"line_number":364,"context_line":"        sudo ip addr add dev $DF_METADATA_SERVICE_INTERFACE $DF_METADATA_SERVICE_IP/0"},{"line_number":365,"context_line":"        sudo ip link set dev $DF_METADATA_SERVICE_INTERFACE up"},{"line_number":366,"context_line":"        sudo ip route add 0.0.0.0/0 dev $DF_METADATA_SERVICE_INTERFACE table 2"},{"line_number":367,"context_line":"        sudo ip rule add from $DF_METADATA_SERVICE_IP table 2"},{"line_number":368,"context_line":"        run_process df-metadata \"python $DF_METADATA_SERVICE --config-file $NEUTRON_CONF\""},{"line_number":369,"context_line":"    fi"},{"line_number":370,"context_line":"}"}],"source_content_type":"text/x-sh","patch_set":7,"id":"1aa78d24_37b6e68a","line":367,"in_reply_to":"3aaa91ec_92110e55","updated":"2016-07-03 17:22:12.000000000","message":"You\u0027re right. I\u0027ll see what I can do.","commit_id":"fb0e8b6da2ba5800316927f1a4aa3262d0611af7"}],"dragonflow/cmd/eventlet/df_metadata_service.py":[{"author":{"_account_id":7805,"name":"Li Ma","email":"skywalker.nick@gmail.com","username":"Nick"},"change_message_id":"1d4cc7a73ad0f73e69f0176686352ac49229ef7e","unresolved":false,"context_lines":[{"line_number":25,"context_line":"def main():"},{"line_number":26,"context_line":"    cfg.CONF.register_opts(metadata_conf.METADATA_PROXY_HANDLER_OPTS)"},{"line_number":27,"context_line":"    cfg.CONF.register_opts(common_params.df_opts, \u0027df\u0027)"},{"line_number":28,"context_line":"    cfg.CONF.register_opts(metadata_service_app.options, \u0027df_meta\u0027)"},{"line_number":29,"context_line":"    config.init(sys.argv[1:])"},{"line_number":30,"context_line":"    config.setup_logging()"},{"line_number":31,"context_line":"    service \u003d wsgi.Server(\u0027dragonflow-metadata-service\u0027, disable_ssl\u003dTrue)"}],"source_content_type":"text/x-python","patch_set":5,"id":"bab6814e_d6e56909","line":28,"range":{"start_line":28,"start_character":58,"end_line":28,"end_character":65},"updated":"2016-05-26 04:20:37.000000000","message":"is df_metadata more meaningful?","commit_id":"47b350edd725a6845acaf9e55fc967d009446c4c"},{"author":{"_account_id":20229,"name":"Omer Anson","email":"omer.anson@toganetworks.com","username":"oanson"},"change_message_id":"b923d344590f877113bf32a1958587e76a2da334","unresolved":false,"context_lines":[{"line_number":25,"context_line":"def main():"},{"line_number":26,"context_line":"    cfg.CONF.register_opts(metadata_conf.METADATA_PROXY_HANDLER_OPTS)"},{"line_number":27,"context_line":"    cfg.CONF.register_opts(common_params.df_opts, \u0027df\u0027)"},{"line_number":28,"context_line":"    cfg.CONF.register_opts(metadata_service_app.options, \u0027df_meta\u0027)"},{"line_number":29,"context_line":"    config.init(sys.argv[1:])"},{"line_number":30,"context_line":"    config.setup_logging()"},{"line_number":31,"context_line":"    service \u003d wsgi.Server(\u0027dragonflow-metadata-service\u0027, disable_ssl\u003dTrue)"}],"source_content_type":"text/x-python","patch_set":5,"id":"9abb7d3a_fc41c23a","line":28,"range":{"start_line":28,"start_character":58,"end_line":28,"end_character":65},"in_reply_to":"bab6814e_d6e56909","updated":"2016-05-29 06:19:41.000000000","message":"Done.","commit_id":"47b350edd725a6845acaf9e55fc967d009446c4c"},{"author":{"_account_id":6854,"name":"YAMAMOTO Takashi","email":"yamamoto@midokura.com","username":"yamamoto"},"change_message_id":"caf1f601b1fce33ff449b9a27ac3c6c233ec7db2","unresolved":false,"context_lines":[{"line_number":28,"context_line":"    interface \u003d cfg.CONF.df_metadata.interface"},{"line_number":29,"context_line":"    cmd \u003d [\"ovs-vsctl\", \"add-port\", bridge, interface,"},{"line_number":30,"context_line":"        \"--\", \"set\", \"Interface\", interface, \"type\u003dinternal\"]"},{"line_number":31,"context_line":"    utils.execute(cmd, run_as_root\u003dTrue, check_exit_code\u003d[0])"},{"line_number":32,"context_line":""},{"line_number":33,"context_line":"    ip \u003d cfg.CONF.df_metadata.ip"},{"line_number":34,"context_line":"    cmd \u003d [\"ip\", \"addr\", \"add\", \"dev\", interface, \"{}/0\".format(ip)]"}],"source_content_type":"text/x-python","patch_set":8,"id":"1aa78d24_46866514","line":31,"range":{"start_line":31,"start_character":41,"end_line":31,"end_character":60},"updated":"2016-07-08 09:38:01.000000000","message":"check_exit_code is a boolean.\nmaybe you\u0027re confused with extra_ok_codes?","commit_id":"b50bb8bc61a2ce87a667e11a9fa3761ceeac1929"}],"dragonflow/common/exceptions.py":[{"author":{"_account_id":7805,"name":"Li Ma","email":"skywalker.nick@gmail.com","username":"Nick"},"change_message_id":"1d4cc7a73ad0f73e69f0176686352ac49229ef7e","unresolved":false,"context_lines":[{"line_number":83,"context_line":""},{"line_number":84,"context_line":""},{"line_number":85,"context_line":"class NoRemoteIPProxyException(DragonflowException):"},{"line_number":86,"context_line":"    message \u003d _(\u0027The request has no remote IP\u0027)"}],"source_content_type":"text/x-python","patch_set":5,"id":"bab6814e_16ec11f2","line":86,"range":{"start_line":86,"start_character":17,"end_line":86,"end_character":45},"updated":"2016-05-26 04:20:37.000000000","message":"The metadata request?","commit_id":"47b350edd725a6845acaf9e55fc967d009446c4c"},{"author":{"_account_id":20229,"name":"Omer Anson","email":"omer.anson@toganetworks.com","username":"oanson"},"change_message_id":"b923d344590f877113bf32a1958587e76a2da334","unresolved":false,"context_lines":[{"line_number":83,"context_line":""},{"line_number":84,"context_line":""},{"line_number":85,"context_line":"class NoRemoteIPProxyException(DragonflowException):"},{"line_number":86,"context_line":"    message \u003d _(\u0027The request has no remote IP\u0027)"}],"source_content_type":"text/x-python","patch_set":5,"id":"9abb7d3a_3c4cea6f","line":86,"range":{"start_line":86,"start_character":17,"end_line":86,"end_character":45},"in_reply_to":"bab6814e_16ec11f2","updated":"2016-05-29 06:19:41.000000000","message":"Done","commit_id":"47b350edd725a6845acaf9e55fc967d009446c4c"}],"dragonflow/controller/metadata_service_app.py":[{"author":{"_account_id":7805,"name":"Li Ma","email":"skywalker.nick@gmail.com","username":"Nick"},"change_message_id":"1d4cc7a73ad0f73e69f0176686352ac49229ef7e","unresolved":false,"context_lines":[{"line_number":82,"context_line":"        )"},{"line_number":83,"context_line":"        self._arp_responder \u003d None"},{"line_number":84,"context_line":"        self._ofport \u003d None"},{"line_number":85,"context_line":"        cfg.CONF.register_opts(options, group\u003d\u0027df_meta\u0027)"},{"line_number":86,"context_line":"        self._ip \u003d cfg.CONF.df_meta.ip"},{"line_number":87,"context_line":"        self._port \u003d cfg.CONF.df_meta.port"},{"line_number":88,"context_line":""}],"source_content_type":"text/x-python","patch_set":5,"id":"bab6814e_36ab1577","line":85,"range":{"start_line":85,"start_character":47,"end_line":85,"end_character":54},"updated":"2016-05-26 04:20:37.000000000","message":"suggest to rename to df_metadata.","commit_id":"47b350edd725a6845acaf9e55fc967d009446c4c"},{"author":{"_account_id":20229,"name":"Omer Anson","email":"omer.anson@toganetworks.com","username":"oanson"},"change_message_id":"b923d344590f877113bf32a1958587e76a2da334","unresolved":false,"context_lines":[{"line_number":82,"context_line":"        )"},{"line_number":83,"context_line":"        self._arp_responder \u003d None"},{"line_number":84,"context_line":"        self._ofport \u003d None"},{"line_number":85,"context_line":"        cfg.CONF.register_opts(options, group\u003d\u0027df_meta\u0027)"},{"line_number":86,"context_line":"        self._ip \u003d cfg.CONF.df_meta.ip"},{"line_number":87,"context_line":"        self._port \u003d cfg.CONF.df_meta.port"},{"line_number":88,"context_line":""}],"source_content_type":"text/x-python","patch_set":5,"id":"9abb7d3a_1c492660","line":85,"range":{"start_line":85,"start_character":47,"end_line":85,"end_character":54},"in_reply_to":"bab6814e_36ab1577","updated":"2016-05-29 06:19:41.000000000","message":"Done","commit_id":"47b350edd725a6845acaf9e55fc967d009446c4c"},{"author":{"_account_id":7805,"name":"Li Ma","email":"skywalker.nick@gmail.com","username":"Nick"},"change_message_id":"1d4cc7a73ad0f73e69f0176686352ac49229ef7e","unresolved":false,"context_lines":[{"line_number":102,"context_line":"            idl,"},{"line_number":103,"context_line":"            \u0027Interface\u0027,"},{"line_number":104,"context_line":"            \u0027name\u0027,"},{"line_number":105,"context_line":"            \u0027tap-metadata\u0027,"},{"line_number":106,"context_line":"            None,"},{"line_number":107,"context_line":"        )"},{"line_number":108,"context_line":"        if not interface:"}],"source_content_type":"text/x-python","patch_set":5,"id":"bab6814e_b696e53b","line":105,"range":{"start_line":105,"start_character":12,"end_line":105,"end_character":26},"updated":"2016-05-26 04:20:37.000000000","message":"suggest to make it as an option because it appears both in the code and devstack script.","commit_id":"47b350edd725a6845acaf9e55fc967d009446c4c"},{"author":{"_account_id":20229,"name":"Omer Anson","email":"omer.anson@toganetworks.com","username":"oanson"},"change_message_id":"b923d344590f877113bf32a1958587e76a2da334","unresolved":false,"context_lines":[{"line_number":102,"context_line":"            idl,"},{"line_number":103,"context_line":"            \u0027Interface\u0027,"},{"line_number":104,"context_line":"            \u0027name\u0027,"},{"line_number":105,"context_line":"            \u0027tap-metadata\u0027,"},{"line_number":106,"context_line":"            None,"},{"line_number":107,"context_line":"        )"},{"line_number":108,"context_line":"        if not interface:"}],"source_content_type":"text/x-python","patch_set":5,"id":"9abb7d3a_7c74b29b","line":105,"range":{"start_line":105,"start_character":12,"end_line":105,"end_character":26},"in_reply_to":"bab6814e_b696e53b","updated":"2016-05-29 06:19:41.000000000","message":"Done","commit_id":"47b350edd725a6845acaf9e55fc967d009446c4c"},{"author":{"_account_id":7805,"name":"Li Ma","email":"skywalker.nick@gmail.com","username":"Nick"},"change_message_id":"c0834224e4823fb037171ee16ff35fc6768e0327","unresolved":false,"context_lines":[{"line_number":157,"context_line":"            ip_proto\u003dipv4.inet.IPPROTO_TCP,"},{"line_number":158,"context_line":"            tcp_flags\u003d(TCP_SYN, TCP_SYN | TCP_ACK),"},{"line_number":159,"context_line":"        )"},{"line_number":160,"context_line":"        learn_actions \u003d self._get_learn_actions(ofproto, parser)"},{"line_number":161,"context_line":"        learn_actions.extend(actions)"},{"line_number":162,"context_line":"        inst \u003d [parser.OFPInstructionActions("},{"line_number":163,"context_line":"            ofproto.OFPIT_APPLY_ACTIONS,"},{"line_number":164,"context_line":"            learn_actions,"}],"source_content_type":"text/x-python","patch_set":6,"id":"9abb7d3a_75122e5a","line":161,"range":{"start_line":160,"start_character":7,"end_line":161,"end_character":37},"updated":"2016-06-02 13:27:32.000000000","message":"The learn actions are never triggered in my latest devstack environment. As a result, table 13 is always missing. I\u0027m testing it using ubuntu cloud image. The key pair cannot be injected by cloud-init.","commit_id":"16f700e52bc355bebeeb02524e225cb49748a034"},{"author":{"_account_id":7805,"name":"Li Ma","email":"skywalker.nick@gmail.com","username":"Nick"},"change_message_id":"0691e8d2820da16e8f4b41c80de0f3978a16db0e","unresolved":false,"context_lines":[{"line_number":157,"context_line":"            ip_proto\u003dipv4.inet.IPPROTO_TCP,"},{"line_number":158,"context_line":"            tcp_flags\u003d(TCP_SYN, TCP_SYN | TCP_ACK),"},{"line_number":159,"context_line":"        )"},{"line_number":160,"context_line":"        learn_actions \u003d self._get_learn_actions(ofproto, parser)"},{"line_number":161,"context_line":"        learn_actions.extend(actions)"},{"line_number":162,"context_line":"        inst \u003d [parser.OFPInstructionActions("},{"line_number":163,"context_line":"            ofproto.OFPIT_APPLY_ACTIONS,"},{"line_number":164,"context_line":"            learn_actions,"}],"source_content_type":"text/x-python","patch_set":6,"id":"9abb7d3a_7f81444d","line":161,"range":{"start_line":160,"start_character":7,"end_line":161,"end_character":37},"in_reply_to":"9abb7d3a_75122e5a","updated":"2016-06-03 02:19:44.000000000","message":"the arp responder to gateway ip doesn\u0027t work in my env. i think it has nothing to do with this patch.","commit_id":"16f700e52bc355bebeeb02524e225cb49748a034"},{"author":{"_account_id":7805,"name":"Li Ma","email":"skywalker.nick@gmail.com","username":"Nick"},"change_message_id":"4b02bb30f8ce0ed33c5e4d31ac4e7ae9875c7ede","unresolved":false,"context_lines":[{"line_number":172,"context_line":"            inst\u003dinst,"},{"line_number":173,"context_line":"        )"},{"line_number":174,"context_line":"        # Response packet"},{"line_number":175,"context_line":"        match \u003d parser.OFPMatch(in_port\u003dofport)"},{"line_number":176,"context_line":"        inst \u003d ["},{"line_number":177,"context_line":"            parser.OFPInstructionGotoTable(const.METADATA_SERVICE_REPLY_TABLE),"},{"line_number":178,"context_line":"        ]"},{"line_number":179,"context_line":"        self.mod_flow("},{"line_number":180,"context_line":"            datapath\u003ddatapath,"},{"line_number":181,"context_line":"            table_id\u003dconst.INGRESS_CLASSIFICATION_DISPATCH_TABLE,"},{"line_number":182,"context_line":"            command\u003dofproto.OFPFC_ADD,"},{"line_number":183,"context_line":"            priority\u003dconst.PRIORITY_MEDIUM,"},{"line_number":184,"context_line":"            match\u003dmatch,"},{"line_number":185,"context_line":"            inst\u003dinst,"},{"line_number":186,"context_line":"        )"},{"line_number":187,"context_line":"        self._create_arp_responder(mac)"},{"line_number":188,"context_line":""},{"line_number":189,"context_line":"    def _add_incoming_flows(self):"}],"source_content_type":"text/x-python","patch_set":6,"id":"9abb7d3a_8e050e16","line":186,"range":{"start_line":175,"start_character":8,"end_line":186,"end_character":9},"updated":"2016-06-02 10:46:16.000000000","message":"Nit: maybe you can use the pre-defined function: self.add_flow_go_to_table","commit_id":"16f700e52bc355bebeeb02524e225cb49748a034"},{"author":{"_account_id":7805,"name":"Li Ma","email":"skywalker.nick@gmail.com","username":"Nick"},"change_message_id":"31e0470c6a3b7201a9d899eb0b8cc31f0cc7101e","unresolved":false,"context_lines":[{"line_number":172,"context_line":"            inst\u003dinst,"},{"line_number":173,"context_line":"        )"},{"line_number":174,"context_line":"        # Response packet"},{"line_number":175,"context_line":"        match \u003d parser.OFPMatch(in_port\u003dofport)"},{"line_number":176,"context_line":"        inst \u003d ["},{"line_number":177,"context_line":"            parser.OFPInstructionGotoTable(const.METADATA_SERVICE_REPLY_TABLE),"},{"line_number":178,"context_line":"        ]"},{"line_number":179,"context_line":"        self.mod_flow("},{"line_number":180,"context_line":"            datapath\u003ddatapath,"},{"line_number":181,"context_line":"            table_id\u003dconst.INGRESS_CLASSIFICATION_DISPATCH_TABLE,"},{"line_number":182,"context_line":"            command\u003dofproto.OFPFC_ADD,"},{"line_number":183,"context_line":"            priority\u003dconst.PRIORITY_MEDIUM,"},{"line_number":184,"context_line":"            match\u003dmatch,"},{"line_number":185,"context_line":"            inst\u003dinst,"},{"line_number":186,"context_line":"        )"},{"line_number":187,"context_line":"        self._create_arp_responder(mac)"},{"line_number":188,"context_line":""},{"line_number":189,"context_line":"    def _add_incoming_flows(self):"}],"source_content_type":"text/x-python","patch_set":6,"id":"9abb7d3a_0abbc176","line":186,"range":{"start_line":175,"start_character":8,"end_line":186,"end_character":9},"in_reply_to":"9abb7d3a_51010739","updated":"2016-06-02 13:22:41.000000000","message":":-)","commit_id":"16f700e52bc355bebeeb02524e225cb49748a034"},{"author":{"_account_id":20229,"name":"Omer Anson","email":"omer.anson@toganetworks.com","username":"oanson"},"change_message_id":"aaa997ab4dfe832caeec7917030e95361763d184","unresolved":false,"context_lines":[{"line_number":172,"context_line":"            inst\u003dinst,"},{"line_number":173,"context_line":"        )"},{"line_number":174,"context_line":"        # Response packet"},{"line_number":175,"context_line":"        match \u003d parser.OFPMatch(in_port\u003dofport)"},{"line_number":176,"context_line":"        inst \u003d ["},{"line_number":177,"context_line":"            parser.OFPInstructionGotoTable(const.METADATA_SERVICE_REPLY_TABLE),"},{"line_number":178,"context_line":"        ]"},{"line_number":179,"context_line":"        self.mod_flow("},{"line_number":180,"context_line":"            datapath\u003ddatapath,"},{"line_number":181,"context_line":"            table_id\u003dconst.INGRESS_CLASSIFICATION_DISPATCH_TABLE,"},{"line_number":182,"context_line":"            command\u003dofproto.OFPFC_ADD,"},{"line_number":183,"context_line":"            priority\u003dconst.PRIORITY_MEDIUM,"},{"line_number":184,"context_line":"            match\u003dmatch,"},{"line_number":185,"context_line":"            inst\u003dinst,"},{"line_number":186,"context_line":"        )"},{"line_number":187,"context_line":"        self._create_arp_responder(mac)"},{"line_number":188,"context_line":""},{"line_number":189,"context_line":"    def _add_incoming_flows(self):"}],"source_content_type":"text/x-python","patch_set":6,"id":"9abb7d3a_51010739","line":186,"range":{"start_line":175,"start_character":8,"end_line":186,"end_character":9},"in_reply_to":"9abb7d3a_8e050e16","updated":"2016-06-02 10:58:44.000000000","message":"Will do.\nAnd I don\u0027t think it\u0027s a Nit.","commit_id":"16f700e52bc355bebeeb02524e225cb49748a034"},{"author":{"_account_id":7805,"name":"Li Ma","email":"skywalker.nick@gmail.com","username":"Nick"},"change_message_id":"31e0470c6a3b7201a9d899eb0b8cc31f0cc7101e","unresolved":false,"context_lines":[{"line_number":417,"context_line":"            method\u003dreq.method,"},{"line_number":418,"context_line":"            headers\u003dheaders,"},{"line_number":419,"context_line":"            body\u003dreq.body"},{"line_number":420,"context_line":"        )"},{"line_number":421,"context_line":"        if resp.status \u003d\u003d 200:"},{"line_number":422,"context_line":"            LOG.debug(str(resp))"},{"line_number":423,"context_line":"            return self.create_response(req, resp, content)"}],"source_content_type":"text/x-python","patch_set":6,"id":"9abb7d3a_2aa32551","line":420,"updated":"2016-06-02 13:22:41.000000000","message":"Suggest to add some log info here to help debug. For example:\nLOG.info(_LI(\u0027The metadata request is %s, and the corresponding response is %s)...)","commit_id":"16f700e52bc355bebeeb02524e225cb49748a034"},{"author":{"_account_id":6854,"name":"YAMAMOTO Takashi","email":"yamamoto@midokura.com","username":"yamamoto"},"change_message_id":"e287f77f190d16aa3eb57e7279e795cc465ac3bc","unresolved":false,"context_lines":[{"line_number":1,"context_line":"# Copyright (c) 2015 OpenStack Foundation."},{"line_number":2,"context_line":"# All Rights Reserved."},{"line_number":3,"context_line":"#"},{"line_number":4,"context_line":"#    Licensed under the Apache License, Version 2.0 (the \"License\"); you may"}],"source_content_type":"text/x-python","patch_set":7,"id":"3aaa91ec_b2424a3c","line":1,"range":{"start_line":1,"start_character":16,"end_line":1,"end_character":20},"updated":"2016-06-30 08:50:11.000000000","message":"2016?","commit_id":"fb0e8b6da2ba5800316927f1a4aa3262d0611af7"},{"author":{"_account_id":20229,"name":"Omer Anson","email":"omer.anson@toganetworks.com","username":"oanson"},"change_message_id":"bf25f621afdcaa6305931ce2d5a3ee53342a476c","unresolved":false,"context_lines":[{"line_number":1,"context_line":"# Copyright (c) 2015 OpenStack Foundation."},{"line_number":2,"context_line":"# All Rights Reserved."},{"line_number":3,"context_line":"#"},{"line_number":4,"context_line":"#    Licensed under the Apache License, Version 2.0 (the \"License\"); you may"}],"source_content_type":"text/x-python","patch_set":7,"id":"1aa78d24_b793f6f9","line":1,"range":{"start_line":1,"start_character":16,"end_line":1,"end_character":20},"in_reply_to":"3aaa91ec_b2424a3c","updated":"2016-07-03 17:22:12.000000000","message":"Done","commit_id":"fb0e8b6da2ba5800316927f1a4aa3262d0611af7"},{"author":{"_account_id":20297,"name":"duankebo","email":"duankebo@huawei.com","username":"duankebo"},"change_message_id":"4b5df3508fa17601fb6cd3473134156e5b7780b5","unresolved":false,"context_lines":[{"line_number":157,"context_line":"            ip_proto\u003dipv4.inet.IPPROTO_TCP,"},{"line_number":158,"context_line":"            tcp_flags\u003d(TCP_SYN, TCP_SYN | TCP_ACK),"},{"line_number":159,"context_line":"        )"},{"line_number":160,"context_line":"        learn_actions \u003d self._get_learn_actions(ofproto, parser)"},{"line_number":161,"context_line":"        learn_actions.extend(actions)"},{"line_number":162,"context_line":"        inst \u003d [parser.OFPInstructionActions("},{"line_number":163,"context_line":"            ofproto.OFPIT_APPLY_ACTIONS,"}],"source_content_type":"text/x-python","patch_set":7,"id":"7aa08908_04f18d6a","line":160,"range":{"start_line":160,"start_character":29,"end_line":160,"end_character":47},"updated":"2016-06-12 12:01:57.000000000","message":"Here the logic is inconsistent which the spec, you may need to update your metadata spec.","commit_id":"fb0e8b6da2ba5800316927f1a4aa3262d0611af7"},{"author":{"_account_id":20229,"name":"Omer Anson","email":"omer.anson@toganetworks.com","username":"oanson"},"change_message_id":"6e033e2570ab7d881ee4ae25f53bc8d237ada9bb","unresolved":false,"context_lines":[{"line_number":157,"context_line":"            ip_proto\u003dipv4.inet.IPPROTO_TCP,"},{"line_number":158,"context_line":"            tcp_flags\u003d(TCP_SYN, TCP_SYN | TCP_ACK),"},{"line_number":159,"context_line":"        )"},{"line_number":160,"context_line":"        learn_actions \u003d self._get_learn_actions(ofproto, parser)"},{"line_number":161,"context_line":"        learn_actions.extend(actions)"},{"line_number":162,"context_line":"        inst \u003d [parser.OFPInstructionActions("},{"line_number":163,"context_line":"            ofproto.OFPIT_APPLY_ACTIONS,"}],"source_content_type":"text/x-python","patch_set":7,"id":"7aa08908_ecc25984","line":160,"range":{"start_line":160,"start_character":29,"end_line":160,"end_character":47},"in_reply_to":"7aa08908_04f18d6a","updated":"2016-06-13 09:03:56.000000000","message":"Will do.","commit_id":"fb0e8b6da2ba5800316927f1a4aa3262d0611af7"},{"author":{"_account_id":13070,"name":"Eran Gampel","email":"eran@gampel.net","username":"Gampel"},"change_message_id":"e6175f5cf69da3056a7d376875b13aec41ac1159","unresolved":false,"context_lines":[{"line_number":234,"context_line":"        \"\"\""},{"line_number":235,"context_line":"        return ["},{"line_number":236,"context_line":"            parser.NXActionRegMove("},{"line_number":237,"context_line":"                src_field\u003d\u0027in_port\u0027,"},{"line_number":238,"context_line":"                dst_field\u003d\u0027ipv4_src\u0027,"},{"line_number":239,"context_line":"                n_bits\u003d32,"},{"line_number":240,"context_line":"            ),"}],"source_content_type":"text/x-python","patch_set":7,"id":"7aa08908_e3f4bbf1","line":237,"range":{"start_line":237,"start_character":27,"end_line":237,"end_character":34},"updated":"2016-06-09 08:52:55.000000000","message":"I think that we shoudl not use the in_port inorder to  avoid  accesses to OVSDB from the proxy.\nI think it will be better to limit the proxy to assess only to the DF_DB.\nWe could use the tunnel key (unique across the site) or add another key that is unique per port per compute Node.","commit_id":"fb0e8b6da2ba5800316927f1a4aa3262d0611af7"},{"author":{"_account_id":13070,"name":"Eran Gampel","email":"eran@gampel.net","username":"Gampel"},"change_message_id":"4a01656aece9bb9f4c5a04979f5444485fdd4b64","unresolved":false,"context_lines":[{"line_number":234,"context_line":"        \"\"\""},{"line_number":235,"context_line":"        return ["},{"line_number":236,"context_line":"            parser.NXActionRegMove("},{"line_number":237,"context_line":"                src_field\u003d\u0027in_port\u0027,"},{"line_number":238,"context_line":"                dst_field\u003d\u0027ipv4_src\u0027,"},{"line_number":239,"context_line":"                n_bits\u003d32,"},{"line_number":240,"context_line":"            ),"}],"source_content_type":"text/x-python","patch_set":7,"id":"3aaa91ec_87707c73","line":237,"range":{"start_line":237,"start_character":27,"end_line":237,"end_character":34},"in_reply_to":"7aa08908_150ad379","updated":"2016-06-26 08:01:47.000000000","message":"Ok I think in the future we should consider adding the relevant data to the DF DB to remove this dual DB query","commit_id":"fb0e8b6da2ba5800316927f1a4aa3262d0611af7"},{"author":{"_account_id":20229,"name":"Omer Anson","email":"omer.anson@toganetworks.com","username":"oanson"},"change_message_id":"73aad333ce723c5628ce58d5d7c9043a2aa0903e","unresolved":false,"context_lines":[{"line_number":234,"context_line":"        \"\"\""},{"line_number":235,"context_line":"        return ["},{"line_number":236,"context_line":"            parser.NXActionRegMove("},{"line_number":237,"context_line":"                src_field\u003d\u0027in_port\u0027,"},{"line_number":238,"context_line":"                dst_field\u003d\u0027ipv4_src\u0027,"},{"line_number":239,"context_line":"                n_bits\u003d32,"},{"line_number":240,"context_line":"            ),"}],"source_content_type":"text/x-python","patch_set":7,"id":"7aa08908_150ad379","line":237,"range":{"start_line":237,"start_character":27,"end_line":237,"end_character":34},"in_reply_to":"7aa08908_d4eb3477","updated":"2016-06-15 09:58:13.000000000","message":"There are some complications here:\nThe service require\u0027s the port\u0027s VM id. This information isn\u0027t in DF DB. There are three options:\n1. Add the information to DF DB in plugin.py\n2. Continue reading the information from OVSDB. Try to add the tenant\u0027s ID to OVS DB as well.\n3. Get the information from Neutron DB.\n\nIn any case, I would like to postpone this to a later patch.","commit_id":"fb0e8b6da2ba5800316927f1a4aa3262d0611af7"},{"author":{"_account_id":20229,"name":"Omer Anson","email":"omer.anson@toganetworks.com","username":"oanson"},"change_message_id":"b56eb2e73a01ef70eee296d16b5dc00fc45a411e","unresolved":false,"context_lines":[{"line_number":234,"context_line":"        \"\"\""},{"line_number":235,"context_line":"        return ["},{"line_number":236,"context_line":"            parser.NXActionRegMove("},{"line_number":237,"context_line":"                src_field\u003d\u0027in_port\u0027,"},{"line_number":238,"context_line":"                dst_field\u003d\u0027ipv4_src\u0027,"},{"line_number":239,"context_line":"                n_bits\u003d32,"},{"line_number":240,"context_line":"            ),"}],"source_content_type":"text/x-python","patch_set":7,"id":"7aa08908_d4eb3477","line":237,"range":{"start_line":237,"start_character":27,"end_line":237,"end_character":34},"in_reply_to":"7aa08908_e3f4bbf1","updated":"2016-06-09 10:38:04.000000000","message":"I\u0027ll try, and see if it works.","commit_id":"fb0e8b6da2ba5800316927f1a4aa3262d0611af7"},{"author":{"_account_id":13070,"name":"Eran Gampel","email":"eran@gampel.net","username":"Gampel"},"change_message_id":"e6175f5cf69da3056a7d376875b13aec41ac1159","unresolved":false,"context_lines":[{"line_number":232,"context_line":"        set the first bit of that field, and output to the metadata service"},{"line_number":233,"context_line":"        OVS port."},{"line_number":234,"context_line":"        \"\"\""},{"line_number":235,"context_line":"        return ["},{"line_number":236,"context_line":"            parser.NXActionRegMove("},{"line_number":237,"context_line":"                src_field\u003d\u0027in_port\u0027,"},{"line_number":238,"context_line":"                dst_field\u003d\u0027ipv4_src\u0027,"},{"line_number":239,"context_line":"                n_bits\u003d32,"},{"line_number":240,"context_line":"            ),"},{"line_number":241,"context_line":"            parser.NXActionRegLoad(31, 1, \u0027ipv4_src\u0027, 1),"},{"line_number":242,"context_line":"            parser.OFPActionOutput("},{"line_number":243,"context_line":"                self._ofport,"},{"line_number":244,"context_line":"                ofproto.OFPCML_NO_BUFFER,"},{"line_number":245,"context_line":"            )"},{"line_number":246,"context_line":"        ]"},{"line_number":247,"context_line":""},{"line_number":248,"context_line":"    def _get_learn_actions(self, ofproto, parser):"},{"line_number":249,"context_line":"        return ["}],"source_content_type":"text/x-python","patch_set":7,"id":"7aa08908_c565471e","line":246,"range":{"start_line":235,"start_character":8,"end_line":246,"end_character":9},"updated":"2016-06-09 08:52:55.000000000","message":"If this is \nint(src_ip) \u003c- in_port | 0x80000000 (\u003d in_port | int(128.0.0.0)).\n\nIt deserve more documentation and use of cost unless the reader is a compiler","commit_id":"fb0e8b6da2ba5800316927f1a4aa3262d0611af7"},{"author":{"_account_id":20229,"name":"Omer Anson","email":"omer.anson@toganetworks.com","username":"oanson"},"change_message_id":"b56eb2e73a01ef70eee296d16b5dc00fc45a411e","unresolved":false,"context_lines":[{"line_number":232,"context_line":"        set the first bit of that field, and output to the metadata service"},{"line_number":233,"context_line":"        OVS port."},{"line_number":234,"context_line":"        \"\"\""},{"line_number":235,"context_line":"        return ["},{"line_number":236,"context_line":"            parser.NXActionRegMove("},{"line_number":237,"context_line":"                src_field\u003d\u0027in_port\u0027,"},{"line_number":238,"context_line":"                dst_field\u003d\u0027ipv4_src\u0027,"},{"line_number":239,"context_line":"                n_bits\u003d32,"},{"line_number":240,"context_line":"            ),"},{"line_number":241,"context_line":"            parser.NXActionRegLoad(31, 1, \u0027ipv4_src\u0027, 1),"},{"line_number":242,"context_line":"            parser.OFPActionOutput("},{"line_number":243,"context_line":"                self._ofport,"},{"line_number":244,"context_line":"                ofproto.OFPCML_NO_BUFFER,"},{"line_number":245,"context_line":"            )"},{"line_number":246,"context_line":"        ]"},{"line_number":247,"context_line":""},{"line_number":248,"context_line":"    def _get_learn_actions(self, ofproto, parser):"},{"line_number":249,"context_line":"        return ["}],"source_content_type":"text/x-python","patch_set":7,"id":"7aa08908_14d77cc0","line":246,"range":{"start_line":235,"start_character":8,"end_line":246,"end_character":9},"in_reply_to":"7aa08908_c565471e","updated":"2016-06-09 10:38:04.000000000","message":"I will add some comments.","commit_id":"fb0e8b6da2ba5800316927f1a4aa3262d0611af7"},{"author":{"_account_id":20297,"name":"duankebo","email":"duankebo@huawei.com","username":"duankebo"},"change_message_id":"4b5df3508fa17601fb6cd3473134156e5b7780b5","unresolved":false,"context_lines":[{"line_number":346,"context_line":"                    ),"},{"line_number":347,"context_line":"                    parser.NXFlowSpecLoad("},{"line_number":348,"context_line":"                        src\u003d(\u0027eth_src\u0027, 0),"},{"line_number":349,"context_line":"                        dst\u003d(\u0027eth_src\u0027, 0),"},{"line_number":350,"context_line":"                        n_bits\u003d48,"},{"line_number":351,"context_line":"                    ),"},{"line_number":352,"context_line":"                    parser.NXFlowSpecLoad("}],"source_content_type":"text/x-python","patch_set":7,"id":"7aa08908_0992484b","line":349,"range":{"start_line":349,"start_character":30,"end_line":349,"end_character":37},"updated":"2016-06-12 12:01:57.000000000","message":"eth_src to eth_src?","commit_id":"fb0e8b6da2ba5800316927f1a4aa3262d0611af7"},{"author":{"_account_id":20229,"name":"Omer Anson","email":"omer.anson@toganetworks.com","username":"oanson"},"change_message_id":"6e033e2570ab7d881ee4ae25f53bc8d237ada9bb","unresolved":false,"context_lines":[{"line_number":346,"context_line":"                    ),"},{"line_number":347,"context_line":"                    parser.NXFlowSpecLoad("},{"line_number":348,"context_line":"                        src\u003d(\u0027eth_src\u0027, 0),"},{"line_number":349,"context_line":"                        dst\u003d(\u0027eth_src\u0027, 0),"},{"line_number":350,"context_line":"                        n_bits\u003d48,"},{"line_number":351,"context_line":"                    ),"},{"line_number":352,"context_line":"                    parser.NXFlowSpecLoad("}],"source_content_type":"text/x-python","patch_set":7,"id":"7aa08908_4c6a8d82","line":349,"range":{"start_line":349,"start_character":30,"end_line":349,"end_character":37},"in_reply_to":"7aa08908_0992484b","updated":"2016-06-13 09:03:56.000000000","message":"Yes. The source \u0027eth_src\u0027 field is in the current packet. The dst \u0027eth_dst\u0027 is in the packet that will be handled by the learned flow. It means, on the learned flow, set the source ethernet address to the ethernet address that cause the creation of the learned flow.","commit_id":"fb0e8b6da2ba5800316927f1a4aa3262d0611af7"},{"author":{"_account_id":13070,"name":"Eran Gampel","email":"eran@gampel.net","username":"Gampel"},"change_message_id":"e6175f5cf69da3056a7d376875b13aec41ac1159","unresolved":false,"context_lines":[{"line_number":532,"context_line":"        Return some link-local IP address. Since the VM randomly chooses one"},{"line_number":533,"context_line":"        without telling anyone, NOVA doesn\u0027t know the true IP anyway."},{"line_number":534,"context_line":"        \"\"\""},{"line_number":535,"context_line":"        return \u0027169.254.1.1\u0027"},{"line_number":536,"context_line":""},{"line_number":537,"context_line":"    def _get_instance_and_tenant_id(self, in_port):"},{"line_number":538,"context_line":"        self.idl.run()"}],"source_content_type":"text/x-python","patch_set":7,"id":"7aa08908_a31753a1","line":535,"range":{"start_line":535,"start_character":16,"end_line":535,"end_character":28},"updated":"2016-06-09 08:52:55.000000000","message":"what if this IP is all ready taken and used against Nova \nI think it will be better to follow the zero conf standard and check via arp that the address is not taken","commit_id":"fb0e8b6da2ba5800316927f1a4aa3262d0611af7"},{"author":{"_account_id":20229,"name":"Omer Anson","email":"omer.anson@toganetworks.com","username":"oanson"},"change_message_id":"bf25f621afdcaa6305931ce2d5a3ee53342a476c","unresolved":false,"context_lines":[{"line_number":532,"context_line":"        Return some link-local IP address. Since the VM randomly chooses one"},{"line_number":533,"context_line":"        without telling anyone, NOVA doesn\u0027t know the true IP anyway."},{"line_number":534,"context_line":"        \"\"\""},{"line_number":535,"context_line":"        return \u0027169.254.1.1\u0027"},{"line_number":536,"context_line":""},{"line_number":537,"context_line":"    def _get_instance_and_tenant_id(self, in_port):"},{"line_number":538,"context_line":"        self.idl.run()"}],"source_content_type":"text/x-python","patch_set":7,"id":"1aa78d24_578612ba","line":535,"range":{"start_line":535,"start_character":16,"end_line":535,"end_character":28},"in_reply_to":"3aaa91ec_786ba3b9","updated":"2016-07-03 17:22:12.000000000","message":"According to that, it should be the VM\u0027s real IP address (the one it will set to, or provided via DHCP). I\u0027ll modify the code to reflect that.","commit_id":"fb0e8b6da2ba5800316927f1a4aa3262d0611af7"},{"author":{"_account_id":6854,"name":"YAMAMOTO Takashi","email":"yamamoto@midokura.com","username":"yamamoto"},"change_message_id":"e287f77f190d16aa3eb57e7279e795cc465ac3bc","unresolved":false,"context_lines":[{"line_number":532,"context_line":"        Return some link-local IP address. Since the VM randomly chooses one"},{"line_number":533,"context_line":"        without telling anyone, NOVA doesn\u0027t know the true IP anyway."},{"line_number":534,"context_line":"        \"\"\""},{"line_number":535,"context_line":"        return \u0027169.254.1.1\u0027"},{"line_number":536,"context_line":""},{"line_number":537,"context_line":"    def _get_instance_and_tenant_id(self, in_port):"},{"line_number":538,"context_line":"        self.idl.run()"}],"source_content_type":"text/x-python","patch_set":7,"id":"3aaa91ec_786ba3b9","line":535,"range":{"start_line":535,"start_character":16,"end_line":535,"end_character":28},"in_reply_to":"7aa08908_14501c5e","updated":"2016-06-30 08:50:11.000000000","message":"i did some research when i did similar for midonet.\nhope it helps.\nhttps://github.com/midonet/midonet/blob/master/midolman/src/main/scala/org/midonet/midolman/openstack/metadata/NovaMetadataClient.scala#L47","commit_id":"fb0e8b6da2ba5800316927f1a4aa3262d0611af7"},{"author":{"_account_id":20229,"name":"Omer Anson","email":"omer.anson@toganetworks.com","username":"oanson"},"change_message_id":"b56eb2e73a01ef70eee296d16b5dc00fc45a411e","unresolved":false,"context_lines":[{"line_number":532,"context_line":"        Return some link-local IP address. Since the VM randomly chooses one"},{"line_number":533,"context_line":"        without telling anyone, NOVA doesn\u0027t know the true IP anyway."},{"line_number":534,"context_line":"        \"\"\""},{"line_number":535,"context_line":"        return \u0027169.254.1.1\u0027"},{"line_number":536,"context_line":""},{"line_number":537,"context_line":"    def _get_instance_and_tenant_id(self, in_port):"},{"line_number":538,"context_line":"        self.idl.run()"}],"source_content_type":"text/x-python","patch_set":7,"id":"7aa08908_14501c5e","line":535,"range":{"start_line":535,"start_character":16,"end_line":535,"end_character":28},"in_reply_to":"7aa08908_a31753a1","updated":"2016-06-09 10:38:04.000000000","message":"This is encoded on the HTTP header, and I think it is ignored - I Think nova code only verifies the header exists.","commit_id":"fb0e8b6da2ba5800316927f1a4aa3262d0611af7"},{"author":{"_account_id":6854,"name":"YAMAMOTO Takashi","email":"yamamoto@midokura.com","username":"yamamoto"},"change_message_id":"d8160c76352a966ae31b525dcb84c9aadfaca2e6","unresolved":false,"context_lines":[{"line_number":173,"context_line":"        )"},{"line_number":174,"context_line":"        # Response packet"},{"line_number":175,"context_line":"        actions \u003d ["},{"line_number":176,"context_line":"            parser.NXActionRegLoad(0, 31, \u0027in_port\u0027, 0),"},{"line_number":177,"context_line":"        ]"},{"line_number":178,"context_line":"        inst \u003d ["},{"line_number":179,"context_line":"            parser.OFPInstructionActions("}],"source_content_type":"text/x-python","patch_set":8,"id":"1aa78d24_e654b1cb","line":176,"updated":"2016-07-08 09:33:51.000000000","message":"as you know these arguments were changed in an incompatilbe way in ryu 4.4.  the change might or might not be reverted in a later release.  please consider using kwargs (ie. start\u003d31, end\u003d31, dst\u003d\u0027ipv4_src\u0027, value\u003d1) so that breakage can be easily detected at least.","commit_id":"b50bb8bc61a2ce87a667e11a9fa3761ceeac1929"},{"author":{"_account_id":6854,"name":"YAMAMOTO Takashi","email":"yamamoto@midokura.com","username":"yamamoto"},"change_message_id":"d8160c76352a966ae31b525dcb84c9aadfaca2e6","unresolved":false,"context_lines":[{"line_number":252,"context_line":"                dst_field\u003d\u0027ipv4_src\u0027,"},{"line_number":253,"context_line":"                n_bits\u003d32,"},{"line_number":254,"context_line":"            ),"},{"line_number":255,"context_line":"            parser.NXActionRegLoad(31, 31, \u0027ipv4_src\u0027, 1),"},{"line_number":256,"context_line":"            parser.OFPActionOutput("},{"line_number":257,"context_line":"                self._ofport,"},{"line_number":258,"context_line":"                ofproto.OFPCML_NO_BUFFER,"}],"source_content_type":"text/x-python","patch_set":8,"id":"1aa78d24_b2fb0447","line":255,"range":{"start_line":255,"start_character":35,"end_line":255,"end_character":42},"updated":"2016-07-08 09:33:51.000000000","message":"ditto","commit_id":"b50bb8bc61a2ce87a667e11a9fa3761ceeac1929"},{"author":{"_account_id":9200,"name":"IWAMOTO Toshihiro","email":"iwamoto@valinux.co.jp","username":"toshii"},"change_message_id":"ac73ef36fcc11ef22766c71f1c6478aa14566e48","unresolved":false,"context_lines":[{"line_number":252,"context_line":"                dst_field\u003d\u0027ipv4_src\u0027,"},{"line_number":253,"context_line":"                n_bits\u003d32,"},{"line_number":254,"context_line":"            ),"},{"line_number":255,"context_line":"            parser.NXActionRegLoad(31, 1, \u0027ipv4_src\u0027, 1),"},{"line_number":256,"context_line":"            parser.OFPActionOutput("},{"line_number":257,"context_line":"                self._ofport,"},{"line_number":258,"context_line":"                ofproto.OFPCML_NO_BUFFER,"}],"source_content_type":"text/x-python","patch_set":9,"id":"bacf61ea_207613d7","line":255,"updated":"2016-08-01 02:23:11.000000000","message":"Due to an effort to introduce uniformity of Ryu API, ryu 4.5 will have the commit https://github.com/osrg/ryu/commit/64ba9f1cdcd9314522254fb749c22fa6bcfd63dd .\n\nFor ryu\u003e\u003d4.5, you\u0027ll need to do NXActionRegLoad(31 \u003c\u003c 6 | 1 - 1, ...)\n\nSorry for inconvenience...","commit_id":"2af5a9d1c46630116b3ed91783dc4d402ad4d57b"}]}
