)]}'
{"neutron/plugins/ml2/drivers/cisco/dfa/config_profile.py":[{"author":{"_account_id":1689,"name":"Robert Kukura","email":"rk@theep.net","username":"rkukura"},"change_message_id":"86fa27fb7e621008c7a98d37c9cc6938759413f6","unresolved":false,"context_lines":[{"line_number":31,"context_line":"# Attribute Map"},{"line_number":32,"context_line":"RESOURCE_ATTRIBUTE_MAP \u003d {"},{"line_number":33,"context_line":"    \u0027config_profiles\u0027: {"},{"line_number":34,"context_line":"        \u0027id\u0027: {\u0027allow_post\u0027: True, \u0027allow_put\u0027: True,"},{"line_number":35,"context_line":"        \u0027validate\u0027: {\u0027type:uuid\u0027: attributes.UUID_PATTERN},"},{"line_number":36,"context_line":"        \u0027is_visible\u0027: True},"},{"line_number":37,"context_line":"        \u0027name\u0027: {\u0027allow_post\u0027: True, \u0027allow_put\u0027: True,"}],"source_content_type":"text/x-python","patch_set":1,"id":"baada198_84955ce5","line":34,"updated":"2014-08-05 18:59:05.000000000","message":"These all need to be false if the extension does not implement create and update.","commit_id":"18d0f5dd2168957b362acc84cce83e19d508d09b"},{"author":{"_account_id":10393,"name":"nlahouti","email":"nader.lahouti@gmail.com","username":"nlahouti"},"change_message_id":"0c1e19ab43bc6e2d212d284ad922a858e49a90f9","unresolved":false,"context_lines":[{"line_number":31,"context_line":"# Attribute Map"},{"line_number":32,"context_line":"RESOURCE_ATTRIBUTE_MAP \u003d {"},{"line_number":33,"context_line":"    \u0027config_profiles\u0027: {"},{"line_number":34,"context_line":"        \u0027id\u0027: {\u0027allow_post\u0027: True, \u0027allow_put\u0027: True,"},{"line_number":35,"context_line":"        \u0027validate\u0027: {\u0027type:uuid\u0027: attributes.UUID_PATTERN},"},{"line_number":36,"context_line":"        \u0027is_visible\u0027: True},"},{"line_number":37,"context_line":"        \u0027name\u0027: {\u0027allow_post\u0027: True, \u0027allow_put\u0027: True,"}],"source_content_type":"text/x-python","patch_set":1,"id":"baada198_ddd26932","line":34,"in_reply_to":"baada198_84955ce5","updated":"2014-08-08 04:47:34.000000000","message":"Done","commit_id":"18d0f5dd2168957b362acc84cce83e19d508d09b"},{"author":{"_account_id":1689,"name":"Robert Kukura","email":"rk@theep.net","username":"rkukura"},"change_message_id":"86fa27fb7e621008c7a98d37c9cc6938759413f6","unresolved":false,"context_lines":[{"line_number":33,"context_line":"    \u0027config_profiles\u0027: {"},{"line_number":34,"context_line":"        \u0027id\u0027: {\u0027allow_post\u0027: True, \u0027allow_put\u0027: True,"},{"line_number":35,"context_line":"        \u0027validate\u0027: {\u0027type:uuid\u0027: attributes.UUID_PATTERN},"},{"line_number":36,"context_line":"        \u0027is_visible\u0027: True},"},{"line_number":37,"context_line":"        \u0027name\u0027: {\u0027allow_post\u0027: True, \u0027allow_put\u0027: True,"},{"line_number":38,"context_line":"                 \u0027is_visible\u0027: True, \u0027default\u0027: \u0027\u0027},"},{"line_number":39,"context_line":"    },"}],"source_content_type":"text/x-python","patch_set":1,"id":"baada198_645e8853","line":36,"updated":"2014-08-05 18:59:05.000000000","message":"The above two lines should be indented, right?","commit_id":"18d0f5dd2168957b362acc84cce83e19d508d09b"},{"author":{"_account_id":10393,"name":"nlahouti","email":"nader.lahouti@gmail.com","username":"nlahouti"},"change_message_id":"0c1e19ab43bc6e2d212d284ad922a858e49a90f9","unresolved":false,"context_lines":[{"line_number":33,"context_line":"    \u0027config_profiles\u0027: {"},{"line_number":34,"context_line":"        \u0027id\u0027: {\u0027allow_post\u0027: True, \u0027allow_put\u0027: True,"},{"line_number":35,"context_line":"        \u0027validate\u0027: {\u0027type:uuid\u0027: attributes.UUID_PATTERN},"},{"line_number":36,"context_line":"        \u0027is_visible\u0027: True},"},{"line_number":37,"context_line":"        \u0027name\u0027: {\u0027allow_post\u0027: True, \u0027allow_put\u0027: True,"},{"line_number":38,"context_line":"                 \u0027is_visible\u0027: True, \u0027default\u0027: \u0027\u0027},"},{"line_number":39,"context_line":"    },"}],"source_content_type":"text/x-python","patch_set":1,"id":"baada198_1dddc141","line":36,"in_reply_to":"baada198_645e8853","updated":"2014-08-08 04:47:34.000000000","message":"Done","commit_id":"18d0f5dd2168957b362acc84cce83e19d508d09b"},{"author":{"_account_id":1689,"name":"Robert Kukura","email":"rk@theep.net","username":"rkukura"},"change_message_id":"86fa27fb7e621008c7a98d37c9cc6938759413f6","unresolved":false,"context_lines":[{"line_number":34,"context_line":"        \u0027id\u0027: {\u0027allow_post\u0027: True, \u0027allow_put\u0027: True,"},{"line_number":35,"context_line":"        \u0027validate\u0027: {\u0027type:uuid\u0027: attributes.UUID_PATTERN},"},{"line_number":36,"context_line":"        \u0027is_visible\u0027: True},"},{"line_number":37,"context_line":"        \u0027name\u0027: {\u0027allow_post\u0027: True, \u0027allow_put\u0027: True,"},{"line_number":38,"context_line":"                 \u0027is_visible\u0027: True, \u0027default\u0027: \u0027\u0027},"},{"line_number":39,"context_line":"    },"},{"line_number":40,"context_line":"    \u0027config_profile_bindings\u0027: {"}],"source_content_type":"text/x-python","patch_set":1,"id":"baada198_2453b03b","line":37,"updated":"2014-08-05 18:59:05.000000000","message":"Same here.","commit_id":"18d0f5dd2168957b362acc84cce83e19d508d09b"},{"author":{"_account_id":10393,"name":"nlahouti","email":"nader.lahouti@gmail.com","username":"nlahouti"},"change_message_id":"0c1e19ab43bc6e2d212d284ad922a858e49a90f9","unresolved":false,"context_lines":[{"line_number":34,"context_line":"        \u0027id\u0027: {\u0027allow_post\u0027: True, \u0027allow_put\u0027: True,"},{"line_number":35,"context_line":"        \u0027validate\u0027: {\u0027type:uuid\u0027: attributes.UUID_PATTERN},"},{"line_number":36,"context_line":"        \u0027is_visible\u0027: True},"},{"line_number":37,"context_line":"        \u0027name\u0027: {\u0027allow_post\u0027: True, \u0027allow_put\u0027: True,"},{"line_number":38,"context_line":"                 \u0027is_visible\u0027: True, \u0027default\u0027: \u0027\u0027},"},{"line_number":39,"context_line":"    },"},{"line_number":40,"context_line":"    \u0027config_profile_bindings\u0027: {"}],"source_content_type":"text/x-python","patch_set":1,"id":"baada198_5dde593d","line":37,"in_reply_to":"baada198_2453b03b","updated":"2014-08-08 04:47:34.000000000","message":"Done","commit_id":"18d0f5dd2168957b362acc84cce83e19d508d09b"},{"author":{"_account_id":1689,"name":"Robert Kukura","email":"rk@theep.net","username":"rkukura"},"change_message_id":"86fa27fb7e621008c7a98d37c9cc6938759413f6","unresolved":false,"context_lines":[{"line_number":43,"context_line":"            \u0027is_visible\u0027: True},"},{"line_number":44,"context_line":"        \u0027network_id\u0027: {\u0027allow_post\u0027: True, \u0027allow_put\u0027: True,"},{"line_number":45,"context_line":"                       \u0027is_visible\u0027: True},"},{"line_number":46,"context_line":"    },"},{"line_number":47,"context_line":"}"},{"line_number":48,"context_line":""},{"line_number":49,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"baada198_c444b475","line":46,"updated":"2014-08-05 18:59:05.000000000","message":"This resource is replaced by the extended attribute on network, right?","commit_id":"18d0f5dd2168957b362acc84cce83e19d508d09b"},{"author":{"_account_id":10393,"name":"nlahouti","email":"nader.lahouti@gmail.com","username":"nlahouti"},"change_message_id":"0c1e19ab43bc6e2d212d284ad922a858e49a90f9","unresolved":false,"context_lines":[{"line_number":43,"context_line":"            \u0027is_visible\u0027: True},"},{"line_number":44,"context_line":"        \u0027network_id\u0027: {\u0027allow_post\u0027: True, \u0027allow_put\u0027: True,"},{"line_number":45,"context_line":"                       \u0027is_visible\u0027: True},"},{"line_number":46,"context_line":"    },"},{"line_number":47,"context_line":"}"},{"line_number":48,"context_line":""},{"line_number":49,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"baada198_9d963148","line":46,"in_reply_to":"baada198_c444b475","updated":"2014-08-08 04:47:34.000000000","message":"No this is for binding between config profile and network.\nWill remove it as the REST API is not implemented for that","commit_id":"18d0f5dd2168957b362acc84cce83e19d508d09b"},{"author":{"_account_id":1689,"name":"Robert Kukura","email":"rk@theep.net","username":"rkukura"},"change_message_id":"86fa27fb7e621008c7a98d37c9cc6938759413f6","unresolved":false,"context_lines":[{"line_number":55,"context_line":""},{"line_number":56,"context_line":"    @classmethod"},{"line_number":57,"context_line":"    def get_alias(cls):"},{"line_number":58,"context_line":"        return \u0027config_profile\u0027"},{"line_number":59,"context_line":""},{"line_number":60,"context_line":"    @classmethod"},{"line_number":61,"context_line":"    def get_description(cls):"}],"source_content_type":"text/x-python","patch_set":1,"id":"baada198_c43bd4e8","line":58,"updated":"2014-08-05 18:59:05.000000000","message":"\u0027cisco_dfa_config_profile\u0027?","commit_id":"18d0f5dd2168957b362acc84cce83e19d508d09b"},{"author":{"_account_id":10393,"name":"nlahouti","email":"nader.lahouti@gmail.com","username":"nlahouti"},"change_message_id":"0c1e19ab43bc6e2d212d284ad922a858e49a90f9","unresolved":false,"context_lines":[{"line_number":55,"context_line":""},{"line_number":56,"context_line":"    @classmethod"},{"line_number":57,"context_line":"    def get_alias(cls):"},{"line_number":58,"context_line":"        return \u0027config_profile\u0027"},{"line_number":59,"context_line":""},{"line_number":60,"context_line":"    @classmethod"},{"line_number":61,"context_line":"    def get_description(cls):"}],"source_content_type":"text/x-python","patch_set":1,"id":"baada198_dd87c90f","line":58,"in_reply_to":"baada198_c43bd4e8","updated":"2014-08-08 04:47:34.000000000","message":"Done","commit_id":"18d0f5dd2168957b362acc84cce83e19d508d09b"},{"author":{"_account_id":1689,"name":"Robert Kukura","email":"rk@theep.net","username":"rkukura"},"change_message_id":"86fa27fb7e621008c7a98d37c9cc6938759413f6","unresolved":false,"context_lines":[{"line_number":105,"context_line":"        return \u0027Cisco DFA Network Configuration Profile\u0027"},{"line_number":106,"context_line":""},{"line_number":107,"context_line":"    @abc.abstractmethod"},{"line_number":108,"context_line":"    def get_config_profiles(self, context, filters, fields):"},{"line_number":109,"context_line":"        pass"}],"source_content_type":"text/x-python","patch_set":1,"id":"baada198_7f9b71c8","line":108,"updated":"2014-08-05 18:59:05.000000000","message":"Do you also need get_config_profile()?","commit_id":"18d0f5dd2168957b362acc84cce83e19d508d09b"},{"author":{"_account_id":10393,"name":"nlahouti","email":"nader.lahouti@gmail.com","username":"nlahouti"},"change_message_id":"0c1e19ab43bc6e2d212d284ad922a858e49a90f9","unresolved":false,"context_lines":[{"line_number":105,"context_line":"        return \u0027Cisco DFA Network Configuration Profile\u0027"},{"line_number":106,"context_line":""},{"line_number":107,"context_line":"    @abc.abstractmethod"},{"line_number":108,"context_line":"    def get_config_profiles(self, context, filters, fields):"},{"line_number":109,"context_line":"        pass"}],"source_content_type":"text/x-python","patch_set":1,"id":"baada198_9d6d516a","line":108,"in_reply_to":"baada198_7f9b71c8","updated":"2014-08-08 04:47:34.000000000","message":"the get_config_profile is implemented, will add it in here.","commit_id":"18d0f5dd2168957b362acc84cce83e19d508d09b"},{"author":{"_account_id":12737,"name":"Jacek Swiderski","email":"jacek.swiderski@codilime.com","username":"Altran"},"change_message_id":"120124a94e8aa671c8b75f591dd402c1c0140178","unresolved":false,"context_lines":[{"line_number":19,"context_line":""},{"line_number":20,"context_line":"import six"},{"line_number":21,"context_line":""},{"line_number":22,"context_line":""},{"line_number":23,"context_line":"from neutron.api import extensions"},{"line_number":24,"context_line":"from neutron.api.v2 import attributes"},{"line_number":25,"context_line":"from neutron.api.v2 import base"}],"source_content_type":"text/x-python","patch_set":9,"id":"fa98f980_d19e2556","line":22,"updated":"2014-09-01 10:01:11.000000000","message":"nit: remove one line","commit_id":"5f3b67857e7f80c9ea1d1af11868dcef0988fa5d"},{"author":{"_account_id":10393,"name":"nlahouti","email":"nader.lahouti@gmail.com","username":"nlahouti"},"change_message_id":"0bede644c47b2c677b8976cce1d84928e155936b","unresolved":false,"context_lines":[{"line_number":19,"context_line":""},{"line_number":20,"context_line":"import six"},{"line_number":21,"context_line":""},{"line_number":22,"context_line":""},{"line_number":23,"context_line":"from neutron.api import extensions"},{"line_number":24,"context_line":"from neutron.api.v2 import attributes"},{"line_number":25,"context_line":"from neutron.api.v2 import base"}],"source_content_type":"text/x-python","patch_set":9,"id":"fa98f980_5b72244a","line":22,"in_reply_to":"fa98f980_d19e2556","updated":"2014-09-02 03:23:16.000000000","message":"Done","commit_id":"5f3b67857e7f80c9ea1d1af11868dcef0988fa5d"},{"author":{"_account_id":12737,"name":"Jacek Swiderski","email":"jacek.swiderski@codilime.com","username":"Altran"},"change_message_id":"120124a94e8aa671c8b75f591dd402c1c0140178","unresolved":false,"context_lines":[{"line_number":72,"context_line":"        exts \u003d []"},{"line_number":73,"context_line":"        plugin \u003d manager.NeutronManager.get_service_plugins()["},{"line_number":74,"context_line":"                                                        constants.CISCO_DFA]"},{"line_number":75,"context_line":"        for resource_name in [\u0027config_profile\u0027]:"},{"line_number":76,"context_line":"            collection_name \u003d resource_name + \"s\""},{"line_number":77,"context_line":"            controller \u003d base.create_resource("},{"line_number":78,"context_line":"                collection_name,"}],"source_content_type":"text/x-python","patch_set":9,"id":"fa98f980_b18361cb","line":75,"updated":"2014-09-01 10:01:11.000000000","message":"I saw that there were 2 elements in earlier revisions but now this loop is unnecessary.","commit_id":"5f3b67857e7f80c9ea1d1af11868dcef0988fa5d"},{"author":{"_account_id":10393,"name":"nlahouti","email":"nader.lahouti@gmail.com","username":"nlahouti"},"change_message_id":"0bede644c47b2c677b8976cce1d84928e155936b","unresolved":false,"context_lines":[{"line_number":72,"context_line":"        exts \u003d []"},{"line_number":73,"context_line":"        plugin \u003d manager.NeutronManager.get_service_plugins()["},{"line_number":74,"context_line":"                                                        constants.CISCO_DFA]"},{"line_number":75,"context_line":"        for resource_name in [\u0027config_profile\u0027]:"},{"line_number":76,"context_line":"            collection_name \u003d resource_name + \"s\""},{"line_number":77,"context_line":"            controller \u003d base.create_resource("},{"line_number":78,"context_line":"                collection_name,"}],"source_content_type":"text/x-python","patch_set":9,"id":"fa98f980_fb7cb822","line":75,"in_reply_to":"fa98f980_b18361cb","updated":"2014-09-02 03:23:16.000000000","message":"Done","commit_id":"5f3b67857e7f80c9ea1d1af11868dcef0988fa5d"}],"neutron/plugins/ml2/drivers/cisco/dfa/config_profile_service.py":[{"author":{"_account_id":1689,"name":"Robert Kukura","email":"rk@theep.net","username":"rkukura"},"change_message_id":"86fa27fb7e621008c7a98d37c9cc6938759413f6","unresolved":false,"context_lines":[{"line_number":152,"context_line":"class ConfigProfilePlugin(ConfigProfile_db_mixin):"},{"line_number":153,"context_line":"    \"\"\"Implementation of the Cisco DFA Config Profile Service Plugin.\"\"\""},{"line_number":154,"context_line":""},{"line_number":155,"context_line":"    supported_extension_aliases \u003d [\"config_profile\"]"},{"line_number":156,"context_line":""},{"line_number":157,"context_line":"    def __init__(self):"},{"line_number":158,"context_line":"        super(ConfigProfilePlugin, self).__init__()"}],"source_content_type":"text/x-python","patch_set":1,"id":"baada198_04d30cd4","line":155,"updated":"2014-08-05 18:59:05.000000000","message":"Shouldn\u0027t the extension alias be \"cisco_config_profile\" or \"cisco_dfa_config_profile\"?","commit_id":"18d0f5dd2168957b362acc84cce83e19d508d09b"},{"author":{"_account_id":10393,"name":"nlahouti","email":"nader.lahouti@gmail.com","username":"nlahouti"},"change_message_id":"0c1e19ab43bc6e2d212d284ad922a858e49a90f9","unresolved":false,"context_lines":[{"line_number":152,"context_line":"class ConfigProfilePlugin(ConfigProfile_db_mixin):"},{"line_number":153,"context_line":"    \"\"\"Implementation of the Cisco DFA Config Profile Service Plugin.\"\"\""},{"line_number":154,"context_line":""},{"line_number":155,"context_line":"    supported_extension_aliases \u003d [\"config_profile\"]"},{"line_number":156,"context_line":""},{"line_number":157,"context_line":"    def __init__(self):"},{"line_number":158,"context_line":"        super(ConfigProfilePlugin, self).__init__()"}],"source_content_type":"text/x-python","patch_set":1,"id":"baada198_580ae41e","line":155,"in_reply_to":"baada198_04d30cd4","updated":"2014-08-08 04:47:34.000000000","message":"Done","commit_id":"18d0f5dd2168957b362acc84cce83e19d508d09b"},{"author":{"_account_id":6659,"name":"Paul Michali","email":"pc@michali.net","username":"pcm"},"change_message_id":"440759802696584eeb759d523ccd2936fd3920a9","unresolved":false,"context_lines":[{"line_number":57,"context_line":"        if cfgid:"},{"line_number":58,"context_line":"            ent \u003d (db_session.query(dfa_models_v2.ConfigProfile)."},{"line_number":59,"context_line":"                   filter_by(id\u003dcfgid).first())"},{"line_number":60,"context_line":"            if ent is None:"},{"line_number":61,"context_line":"                return False"},{"line_number":62,"context_line":"            elif ent.id \u003d\u003d cfgid:"},{"line_number":63,"context_line":"                return True"}],"source_content_type":"text/x-python","patch_set":2,"id":"baada198_9760be0e","line":60,"updated":"2014-08-08 11:31:01.000000000","message":"Could do the following instead for L60-75:\n\n        if ent and ent.id \u003d\u003d cfgid:\n            return True\n    elif cfgname:\n        ent \u003d (db_session...)\n        if ent and ent.name \u003d\u003d cfgname:\n            return True\n    return False\n\nThis also makes it explicit that you are returning False for the case when both ID and name are not specified (versus returning None in that case). If you don\u0027t want to make the return explicit, you can leave off the return False and use the implicit None.","commit_id":"d2c75c4877e2f4e46ba6f24655380a4cad932f54"},{"author":{"_account_id":10393,"name":"nlahouti","email":"nader.lahouti@gmail.com","username":"nlahouti"},"change_message_id":"e6138caa6a34c65915dfcc03816c7b323a662fd6","unresolved":false,"context_lines":[{"line_number":57,"context_line":"        if cfgid:"},{"line_number":58,"context_line":"            ent \u003d (db_session.query(dfa_models_v2.ConfigProfile)."},{"line_number":59,"context_line":"                   filter_by(id\u003dcfgid).first())"},{"line_number":60,"context_line":"            if ent is None:"},{"line_number":61,"context_line":"                return False"},{"line_number":62,"context_line":"            elif ent.id \u003d\u003d cfgid:"},{"line_number":63,"context_line":"                return True"}],"source_content_type":"text/x-python","patch_set":2,"id":"baada198_eb85800a","line":60,"in_reply_to":"baada198_9760be0e","updated":"2014-08-09 05:49:53.000000000","message":"Done","commit_id":"d2c75c4877e2f4e46ba6f24655380a4cad932f54"},{"author":{"_account_id":6659,"name":"Paul Michali","email":"pc@michali.net","username":"pcm"},"change_message_id":"440759802696584eeb759d523ccd2936fd3920a9","unresolved":false,"context_lines":[{"line_number":97,"context_line":""},{"line_number":98,"context_line":"    def get_config_profiles(self, context, filters\u003dNone, fields\u003dNone):"},{"line_number":99,"context_line":"        \"\"\"Return DFA configuration profiles.\"\"\""},{"line_number":100,"context_line":"        res \u003d self._get_collection(context,"},{"line_number":101,"context_line":"                                   dfa_models_v2.ConfigProfile,"},{"line_number":102,"context_line":"                                   self._make_config_profile_dict,"},{"line_number":103,"context_line":"                                   filters\u003dfilters, fields\u003dfields)"}],"source_content_type":"text/x-python","patch_set":2,"id":"baada198_625b6a23","line":100,"updated":"2014-08-08 11:31:01.000000000","message":"Could eliminate res variable and do return here.","commit_id":"d2c75c4877e2f4e46ba6f24655380a4cad932f54"},{"author":{"_account_id":10393,"name":"nlahouti","email":"nader.lahouti@gmail.com","username":"nlahouti"},"change_message_id":"e6138caa6a34c65915dfcc03816c7b323a662fd6","unresolved":false,"context_lines":[{"line_number":97,"context_line":""},{"line_number":98,"context_line":"    def get_config_profiles(self, context, filters\u003dNone, fields\u003dNone):"},{"line_number":99,"context_line":"        \"\"\"Return DFA configuration profiles.\"\"\""},{"line_number":100,"context_line":"        res \u003d self._get_collection(context,"},{"line_number":101,"context_line":"                                   dfa_models_v2.ConfigProfile,"},{"line_number":102,"context_line":"                                   self._make_config_profile_dict,"},{"line_number":103,"context_line":"                                   filters\u003dfilters, fields\u003dfields)"}],"source_content_type":"text/x-python","patch_set":2,"id":"baada198_0b8b941e","line":100,"in_reply_to":"baada198_625b6a23","updated":"2014-08-09 05:49:53.000000000","message":"Done","commit_id":"d2c75c4877e2f4e46ba6f24655380a4cad932f54"},{"author":{"_account_id":6659,"name":"Paul Michali","email":"pc@michali.net","username":"pcm"},"change_message_id":"440759802696584eeb759d523ccd2936fd3920a9","unresolved":false,"context_lines":[{"line_number":113,"context_line":""},{"line_number":114,"context_line":"    def _invalidate_config_profile(self):"},{"line_number":115,"context_line":"        \"\"\"Invalidate the onfig profile database.\"\"\""},{"line_number":116,"context_line":"        db_session \u003d db.get_session()"},{"line_number":117,"context_line":"        entries \u003d db_session.query(dfa_models_v2.ConfigProfile).all()"},{"line_number":118,"context_line":"        for ent in entries:"},{"line_number":119,"context_line":"            if not self._get_config_profile_binding(db_session, ent.id):"}],"source_content_type":"text/x-python","patch_set":2,"id":"baada198_e275ba86","line":116,"updated":"2014-08-08 11:31:01.000000000","message":"Curious...does this need to be done as part of a transaction (IOW could profiles change between queries and deletes)?","commit_id":"d2c75c4877e2f4e46ba6f24655380a4cad932f54"},{"author":{"_account_id":10393,"name":"nlahouti","email":"nader.lahouti@gmail.com","username":"nlahouti"},"change_message_id":"e6138caa6a34c65915dfcc03816c7b323a662fd6","unresolved":false,"context_lines":[{"line_number":113,"context_line":""},{"line_number":114,"context_line":"    def _invalidate_config_profile(self):"},{"line_number":115,"context_line":"        \"\"\"Invalidate the onfig profile database.\"\"\""},{"line_number":116,"context_line":"        db_session \u003d db.get_session()"},{"line_number":117,"context_line":"        entries \u003d db_session.query(dfa_models_v2.ConfigProfile).all()"},{"line_number":118,"context_line":"        for ent in entries:"},{"line_number":119,"context_line":"            if not self._get_config_profile_binding(db_session, ent.id):"}],"source_content_type":"text/x-python","patch_set":2,"id":"baada198_666fe593","line":116,"in_reply_to":"baada198_e275ba86","updated":"2014-08-09 05:49:53.000000000","message":"good point.","commit_id":"d2c75c4877e2f4e46ba6f24655380a4cad932f54"},{"author":{"_account_id":6659,"name":"Paul Michali","email":"pc@michali.net","username":"pcm"},"change_message_id":"440759802696584eeb759d523ccd2936fd3920a9","unresolved":false,"context_lines":[{"line_number":189,"context_line":""},{"line_number":190,"context_line":"    def get_config_profiles(self, context, filters\u003dNone, fields\u003dNone):"},{"line_number":191,"context_line":"        \"\"\"Return DFA configuration profiles.\"\"\""},{"line_number":192,"context_line":"        res \u003d super(ConfigProfilePlugin, self).get_config_profiles("},{"line_number":193,"context_line":"                                context, filters, fields)"},{"line_number":194,"context_line":"        return res"},{"line_number":195,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"baada198_a2e66248","line":192,"updated":"2014-08-08 11:31:01.000000000","message":"could eliminate res","commit_id":"d2c75c4877e2f4e46ba6f24655380a4cad932f54"},{"author":{"_account_id":10393,"name":"nlahouti","email":"nader.lahouti@gmail.com","username":"nlahouti"},"change_message_id":"e6138caa6a34c65915dfcc03816c7b323a662fd6","unresolved":false,"context_lines":[{"line_number":189,"context_line":""},{"line_number":190,"context_line":"    def get_config_profiles(self, context, filters\u003dNone, fields\u003dNone):"},{"line_number":191,"context_line":"        \"\"\"Return DFA configuration profiles.\"\"\""},{"line_number":192,"context_line":"        res \u003d super(ConfigProfilePlugin, self).get_config_profiles("},{"line_number":193,"context_line":"                                context, filters, fields)"},{"line_number":194,"context_line":"        return res"},{"line_number":195,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"baada198_866cf99e","line":192,"in_reply_to":"baada198_a2e66248","updated":"2014-08-09 05:49:53.000000000","message":"Done","commit_id":"d2c75c4877e2f4e46ba6f24655380a4cad932f54"},{"author":{"_account_id":6659,"name":"Paul Michali","email":"pc@michali.net","username":"pcm"},"change_message_id":"440759802696584eeb759d523ccd2936fd3920a9","unresolved":false,"context_lines":[{"line_number":195,"context_line":""},{"line_number":196,"context_line":"    def get_config_profile(self, context, cfpid, fields\u003dNone):"},{"line_number":197,"context_line":"        \"\"\"Return DFA configuration profile.\"\"\""},{"line_number":198,"context_line":"        res \u003d super(ConfigProfilePlugin, self).get_config_profile("},{"line_number":199,"context_line":"                                context, cfpid, fields)"},{"line_number":200,"context_line":"        return res"}],"source_content_type":"text/x-python","patch_set":2,"id":"baada198_c2eb5610","line":198,"updated":"2014-08-08 11:31:01.000000000","message":"ditto","commit_id":"d2c75c4877e2f4e46ba6f24655380a4cad932f54"},{"author":{"_account_id":10393,"name":"nlahouti","email":"nader.lahouti@gmail.com","username":"nlahouti"},"change_message_id":"e6138caa6a34c65915dfcc03816c7b323a662fd6","unresolved":false,"context_lines":[{"line_number":195,"context_line":""},{"line_number":196,"context_line":"    def get_config_profile(self, context, cfpid, fields\u003dNone):"},{"line_number":197,"context_line":"        \"\"\"Return DFA configuration profile.\"\"\""},{"line_number":198,"context_line":"        res \u003d super(ConfigProfilePlugin, self).get_config_profile("},{"line_number":199,"context_line":"                                context, cfpid, fields)"},{"line_number":200,"context_line":"        return res"}],"source_content_type":"text/x-python","patch_set":2,"id":"baada198_062f093f","line":198,"in_reply_to":"baada198_c2eb5610","updated":"2014-08-09 05:49:53.000000000","message":"Done","commit_id":"d2c75c4877e2f4e46ba6f24655380a4cad932f54"},{"author":{"_account_id":6659,"name":"Paul Michali","email":"pc@michali.net","username":"pcm"},"change_message_id":"c8f450dcd71a6c24274e2bfc930595e641b450b5","unresolved":false,"context_lines":[{"line_number":82,"context_line":""},{"line_number":83,"context_line":"    def get_config_profiles(self, context, filters\u003dNone, fields\u003dNone):"},{"line_number":84,"context_line":"        \"\"\"Return DFA configuration profiles.\"\"\""},{"line_number":85,"context_line":"        res \u003d self._get_collection(context,"},{"line_number":86,"context_line":"                                   dfa_models_v2.ConfigProfile,"},{"line_number":87,"context_line":"                                   self._make_config_profile_dict,"},{"line_number":88,"context_line":"                                   filters\u003dfilters, fields\u003dfields)"}],"source_content_type":"text/x-python","patch_set":3,"id":"baada198_d0020471","line":85,"updated":"2014-08-11 11:05:48.000000000","message":"Can just return here.","commit_id":"57ff7fb838e9adb97c47ce08d5b48d0d580e8fc9"},{"author":{"_account_id":10393,"name":"nlahouti","email":"nader.lahouti@gmail.com","username":"nlahouti"},"change_message_id":"5be9f7ce19b58c0dd84e5fc3cd40ced01181f5bb","unresolved":false,"context_lines":[{"line_number":82,"context_line":""},{"line_number":83,"context_line":"    def get_config_profiles(self, context, filters\u003dNone, fields\u003dNone):"},{"line_number":84,"context_line":"        \"\"\"Return DFA configuration profiles.\"\"\""},{"line_number":85,"context_line":"        res \u003d self._get_collection(context,"},{"line_number":86,"context_line":"                                   dfa_models_v2.ConfigProfile,"},{"line_number":87,"context_line":"                                   self._make_config_profile_dict,"},{"line_number":88,"context_line":"                                   filters\u003dfilters, fields\u003dfields)"}],"source_content_type":"text/x-python","patch_set":3,"id":"baada198_e6402734","line":85,"in_reply_to":"baada198_d0020471","updated":"2014-08-11 16:22:25.000000000","message":"Done","commit_id":"57ff7fb838e9adb97c47ce08d5b48d0d580e8fc9"},{"author":{"_account_id":2592,"name":"Mark McClain","email":"mark@mcclain.xyz","username":"markmcclain"},"change_message_id":"ae9a71c194a82e4d9586acc4346f5586cf575064","unresolved":false,"context_lines":[{"line_number":23,"context_line":"import neutron.db.api as db"},{"line_number":24,"context_line":"from neutron.db import common_db_mixin as base_db"},{"line_number":25,"context_line":"from neutron.openstack.common import log as logging"},{"line_number":26,"context_line":"from neutron.openstack.common import uuidutils as uuidutils"},{"line_number":27,"context_line":"from neutron.plugins.ml2.drivers.cisco import dfa"},{"line_number":28,"context_line":"from neutron.plugins.ml2.drivers.cisco.dfa import cisco_dfa_rest"},{"line_number":29,"context_line":"from neutron.plugins.ml2.drivers.cisco.dfa import config_profile as cfg_prof"}],"source_content_type":"text/x-python","patch_set":7,"id":"1abeadc6_31287796","line":26,"updated":"2014-08-29 20:58:44.000000000","message":"as uuidutils is not needed here","commit_id":"d8d35343797fcaf55f076006017756aecdfc40d9"},{"author":{"_account_id":10393,"name":"nlahouti","email":"nader.lahouti@gmail.com","username":"nlahouti"},"change_message_id":"56ff478480f1751c08b73fa0e541601d4a905167","unresolved":false,"context_lines":[{"line_number":23,"context_line":"import neutron.db.api as db"},{"line_number":24,"context_line":"from neutron.db import common_db_mixin as base_db"},{"line_number":25,"context_line":"from neutron.openstack.common import log as logging"},{"line_number":26,"context_line":"from neutron.openstack.common import uuidutils as uuidutils"},{"line_number":27,"context_line":"from neutron.plugins.ml2.drivers.cisco import dfa"},{"line_number":28,"context_line":"from neutron.plugins.ml2.drivers.cisco.dfa import cisco_dfa_rest"},{"line_number":29,"context_line":"from neutron.plugins.ml2.drivers.cisco.dfa import config_profile as cfg_prof"}],"source_content_type":"text/x-python","patch_set":7,"id":"1abeadc6_aacb29a2","line":26,"in_reply_to":"1abeadc6_31287796","updated":"2014-09-01 02:04:01.000000000","message":"Thanks, good catch. Removed it.","commit_id":"d8d35343797fcaf55f076006017756aecdfc40d9"},{"author":{"_account_id":2592,"name":"Mark McClain","email":"mark@mcclain.xyz","username":"markmcclain"},"change_message_id":"ae9a71c194a82e4d9586acc4346f5586cf575064","unresolved":false,"context_lines":[{"line_number":149,"context_line":"        \"\"\""},{"line_number":150,"context_line":"        try:"},{"line_number":151,"context_line":"            cfg_profiles \u003d self._dcnm_client.config_profile_list()"},{"line_number":152,"context_line":"            if len(cfg_profiles):"},{"line_number":153,"context_line":"                for prof in cfg_profiles:"},{"line_number":154,"context_line":"                    cfgp_id \u003d uuidutils.generate_uuid()"},{"line_number":155,"context_line":"                    cfgp_name \u003d prof"}],"source_content_type":"text/x-python","patch_set":7,"id":"1abeadc6_711d8f72","line":152,"updated":"2014-08-29 20:58:44.000000000","message":"is cfg_profiles possibly None? If so you can remove this line and rephrase 151 to read:\n\ncfg_profiles \u003d self._dcnm_client.config_profile_list() or []","commit_id":"d8d35343797fcaf55f076006017756aecdfc40d9"},{"author":{"_account_id":10393,"name":"nlahouti","email":"nader.lahouti@gmail.com","username":"nlahouti"},"change_message_id":"56ff478480f1751c08b73fa0e541601d4a905167","unresolved":false,"context_lines":[{"line_number":149,"context_line":"        \"\"\""},{"line_number":150,"context_line":"        try:"},{"line_number":151,"context_line":"            cfg_profiles \u003d self._dcnm_client.config_profile_list()"},{"line_number":152,"context_line":"            if len(cfg_profiles):"},{"line_number":153,"context_line":"                for prof in cfg_profiles:"},{"line_number":154,"context_line":"                    cfgp_id \u003d uuidutils.generate_uuid()"},{"line_number":155,"context_line":"                    cfgp_name \u003d prof"}],"source_content_type":"text/x-python","patch_set":7,"id":"1abeadc6_aa7de96e","line":152,"in_reply_to":"1abeadc6_711d8f72","updated":"2014-09-01 02:04:01.000000000","message":"Done","commit_id":"d8d35343797fcaf55f076006017756aecdfc40d9"},{"author":{"_account_id":9380,"name":"Sayaji Patil","email":"sayaji15@gmail.com","username":"Sayaji"},"change_message_id":"ebf1d610b175eab55ae6b2f9fdf515b7347234fd","unresolved":false,"context_lines":[{"line_number":42,"context_line":"        if fields:"},{"line_number":43,"context_line":"            return dict(((key, item) for key, item in res.items()"},{"line_number":44,"context_line":"                        if key in fields))"},{"line_number":45,"context_line":"        return res"},{"line_number":46,"context_line":""},{"line_number":47,"context_line":"    def _make_config_profile_dict(self, config_profile, fields\u003dNone):"},{"line_number":48,"context_line":"        res \u003d {\u0027id\u0027: config_profile[\u0027id\u0027], \u0027name\u0027: config_profile[\u0027name\u0027]}"}],"source_content_type":"text/x-python","patch_set":10,"id":"fa98f980_4f7870f2","line":45,"updated":"2014-09-02 21:18:04.000000000","message":"Can use the _fields() from the base class ?","commit_id":"e403433b52e56e2cdfaa1dcbc1713927a7631dd2"},{"author":{"_account_id":10393,"name":"nlahouti","email":"nader.lahouti@gmail.com","username":"nlahouti"},"change_message_id":"e4bd579049e25384ef9f11ebce2b04cfb673b9b1","unresolved":false,"context_lines":[{"line_number":42,"context_line":"        if fields:"},{"line_number":43,"context_line":"            return dict(((key, item) for key, item in res.items()"},{"line_number":44,"context_line":"                        if key in fields))"},{"line_number":45,"context_line":"        return res"},{"line_number":46,"context_line":""},{"line_number":47,"context_line":"    def _make_config_profile_dict(self, config_profile, fields\u003dNone):"},{"line_number":48,"context_line":"        res \u003d {\u0027id\u0027: config_profile[\u0027id\u0027], \u0027name\u0027: config_profile[\u0027name\u0027]}"}],"source_content_type":"text/x-python","patch_set":10,"id":"fa98f980_6b9d2166","line":45,"in_reply_to":"fa98f980_4f7870f2","updated":"2014-09-03 00:45:12.000000000","message":"Yes. Will change it.","commit_id":"e403433b52e56e2cdfaa1dcbc1713927a7631dd2"},{"author":{"_account_id":9380,"name":"Sayaji Patil","email":"sayaji15@gmail.com","username":"Sayaji"},"change_message_id":"ebf1d610b175eab55ae6b2f9fdf515b7347234fd","unresolved":false,"context_lines":[{"line_number":57,"context_line":"        if cfgid:"},{"line_number":58,"context_line":"            ent \u003d (db_session.query(dfa_models_v2.ConfigProfile)."},{"line_number":59,"context_line":"                   filter_by(id\u003dcfgid).first())"},{"line_number":60,"context_line":"            if ent and ent.id \u003d\u003d cfgid:"},{"line_number":61,"context_line":"                return True"},{"line_number":62,"context_line":"        elif cfgname:"},{"line_number":63,"context_line":"            ent \u003d (db_session.query(dfa_models_v2.ConfigProfile)."}],"source_content_type":"text/x-python","patch_set":10,"id":"fa98f980_433692e8","line":60,"updated":"2014-09-02 21:18:04.000000000","message":"Do you need \"and\" condition? Filter_by should take care of it","commit_id":"e403433b52e56e2cdfaa1dcbc1713927a7631dd2"},{"author":{"_account_id":10393,"name":"nlahouti","email":"nader.lahouti@gmail.com","username":"nlahouti"},"change_message_id":"e4bd579049e25384ef9f11ebce2b04cfb673b9b1","unresolved":false,"context_lines":[{"line_number":57,"context_line":"        if cfgid:"},{"line_number":58,"context_line":"            ent \u003d (db_session.query(dfa_models_v2.ConfigProfile)."},{"line_number":59,"context_line":"                   filter_by(id\u003dcfgid).first())"},{"line_number":60,"context_line":"            if ent and ent.id \u003d\u003d cfgid:"},{"line_number":61,"context_line":"                return True"},{"line_number":62,"context_line":"        elif cfgname:"},{"line_number":63,"context_line":"            ent \u003d (db_session.query(dfa_models_v2.ConfigProfile)."}],"source_content_type":"text/x-python","patch_set":10,"id":"fa98f980_4ba21d9a","line":60,"in_reply_to":"fa98f980_433692e8","updated":"2014-09-03 00:45:12.000000000","message":"Done","commit_id":"e403433b52e56e2cdfaa1dcbc1713927a7631dd2"},{"author":{"_account_id":9380,"name":"Sayaji Patil","email":"sayaji15@gmail.com","username":"Sayaji"},"change_message_id":"ebf1d610b175eab55ae6b2f9fdf515b7347234fd","unresolved":false,"context_lines":[{"line_number":62,"context_line":"        elif cfgname:"},{"line_number":63,"context_line":"            ent \u003d (db_session.query(dfa_models_v2.ConfigProfile)."},{"line_number":64,"context_line":"                   filter_by(name\u003dcfgname).first())"},{"line_number":65,"context_line":"            if ent and ent.name \u003d\u003d cfgname:"},{"line_number":66,"context_line":"                return True"},{"line_number":67,"context_line":"        return False"},{"line_number":68,"context_line":""}],"source_content_type":"text/x-python","patch_set":10,"id":"fa98f980_a3757e99","line":65,"updated":"2014-09-02 21:18:04.000000000","message":"Same here","commit_id":"e403433b52e56e2cdfaa1dcbc1713927a7631dd2"},{"author":{"_account_id":10393,"name":"nlahouti","email":"nader.lahouti@gmail.com","username":"nlahouti"},"change_message_id":"e4bd579049e25384ef9f11ebce2b04cfb673b9b1","unresolved":false,"context_lines":[{"line_number":62,"context_line":"        elif cfgname:"},{"line_number":63,"context_line":"            ent \u003d (db_session.query(dfa_models_v2.ConfigProfile)."},{"line_number":64,"context_line":"                   filter_by(name\u003dcfgname).first())"},{"line_number":65,"context_line":"            if ent and ent.name \u003d\u003d cfgname:"},{"line_number":66,"context_line":"                return True"},{"line_number":67,"context_line":"        return False"},{"line_number":68,"context_line":""}],"source_content_type":"text/x-python","patch_set":10,"id":"fa98f980_6bab6175","line":65,"in_reply_to":"fa98f980_a3757e99","updated":"2014-09-03 00:45:12.000000000","message":"Done","commit_id":"e403433b52e56e2cdfaa1dcbc1713927a7631dd2"},{"author":{"_account_id":9380,"name":"Sayaji Patil","email":"sayaji15@gmail.com","username":"Sayaji"},"change_message_id":"ebf1d610b175eab55ae6b2f9fdf515b7347234fd","unresolved":false,"context_lines":[{"line_number":72,"context_line":"            return (db_session.query(dfa_models_v2.ConfigProfileBinding)."},{"line_number":73,"context_line":"                    filter_by(cfg_profile_id\u003dcfgp_id)."},{"line_number":74,"context_line":"                    one())"},{"line_number":75,"context_line":"        except (exc.NoResultFound, exc.MultipleResultsFound):"},{"line_number":76,"context_line":"            return None"},{"line_number":77,"context_line":""},{"line_number":78,"context_line":"    def get_config_profile(self, context, cfgid, fields\u003dNone):"}],"source_content_type":"text/x-python","patch_set":10,"id":"fa98f980_6fd7f4ed","line":75,"updated":"2014-09-02 21:18:04.000000000","message":"Do you have to handle MultipleResultsFound ? Looks like cfg_profile_id is the primary key and will be unique","commit_id":"e403433b52e56e2cdfaa1dcbc1713927a7631dd2"},{"author":{"_account_id":10393,"name":"nlahouti","email":"nader.lahouti@gmail.com","username":"nlahouti"},"change_message_id":"e4bd579049e25384ef9f11ebce2b04cfb673b9b1","unresolved":false,"context_lines":[{"line_number":72,"context_line":"            return (db_session.query(dfa_models_v2.ConfigProfileBinding)."},{"line_number":73,"context_line":"                    filter_by(cfg_profile_id\u003dcfgp_id)."},{"line_number":74,"context_line":"                    one())"},{"line_number":75,"context_line":"        except (exc.NoResultFound, exc.MultipleResultsFound):"},{"line_number":76,"context_line":"            return None"},{"line_number":77,"context_line":""},{"line_number":78,"context_line":"    def get_config_profile(self, context, cfgid, fields\u003dNone):"}],"source_content_type":"text/x-python","patch_set":10,"id":"fa98f980_ebe591dc","line":75,"in_reply_to":"fa98f980_6fd7f4ed","updated":"2014-09-03 00:45:12.000000000","message":"Done","commit_id":"e403433b52e56e2cdfaa1dcbc1713927a7631dd2"},{"author":{"_account_id":9380,"name":"Sayaji Patil","email":"sayaji15@gmail.com","username":"Sayaji"},"change_message_id":"ebf1d610b175eab55ae6b2f9fdf515b7347234fd","unresolved":false,"context_lines":[{"line_number":122,"context_line":"        try:"},{"line_number":123,"context_line":"            return db_session.query("},{"line_number":124,"context_line":"                dfa_models_v2.ConfigProfile).filter_by(id\u003did).one()"},{"line_number":125,"context_line":"        except (exc.NoResultFound, exc.MultipleResultsFound):"},{"line_number":126,"context_line":"            raise dexc.ConfigProfileIdNotFound(profile_id\u003did)"},{"line_number":127,"context_line":""},{"line_number":128,"context_line":""}],"source_content_type":"text/x-python","patch_set":10,"id":"fa98f980_2f508c5d","line":125,"updated":"2014-09-02 21:18:04.000000000","message":"Same as above","commit_id":"e403433b52e56e2cdfaa1dcbc1713927a7631dd2"},{"author":{"_account_id":10393,"name":"nlahouti","email":"nader.lahouti@gmail.com","username":"nlahouti"},"change_message_id":"e4bd579049e25384ef9f11ebce2b04cfb673b9b1","unresolved":false,"context_lines":[{"line_number":122,"context_line":"        try:"},{"line_number":123,"context_line":"            return db_session.query("},{"line_number":124,"context_line":"                dfa_models_v2.ConfigProfile).filter_by(id\u003did).one()"},{"line_number":125,"context_line":"        except (exc.NoResultFound, exc.MultipleResultsFound):"},{"line_number":126,"context_line":"            raise dexc.ConfigProfileIdNotFound(profile_id\u003did)"},{"line_number":127,"context_line":""},{"line_number":128,"context_line":""}],"source_content_type":"text/x-python","patch_set":10,"id":"fa98f980_0bebb5b0","line":125,"in_reply_to":"fa98f980_2f508c5d","updated":"2014-09-03 00:45:12.000000000","message":"Done","commit_id":"e403433b52e56e2cdfaa1dcbc1713927a7631dd2"}]}
