)]}'
{"neutron/objects/qos/rule.py":[{"author":{"_account_id":23821,"name":"Prince Nana Owusu Boateng","email":"prince.a.owusu.boateng@intel.com","username":"nanaboat"},"change_message_id":"54c0909ec0e803c49c7d2d09a6c83ff4ac1bd28e","unresolved":false,"context_lines":[{"line_number":103,"context_line":"        if _target_version \u003c (1, 1) and isinstance(self, QosDscpMarkingRule):"},{"line_number":104,"context_line":"            raise exception.IncompatibleObjectVersion("},{"line_number":105,"context_line":"                objver\u003dtarget_version, objname\u003dQosDscpMarkingRule.obj_name())"},{"line_number":106,"context_line":"        if (_target_version \u003c (1, 1) and"},{"line_number":107,"context_line":"                isinstance(self, QosMinimumBandwidthRule)):"},{"line_number":108,"context_line":"            raise exception.IncompatibleObjectVersion("},{"line_number":109,"context_line":"                objver\u003dtarget_version,"},{"line_number":110,"context_line":"                objname\u003dQosMinimumBandwidthRule.obj_name())"},{"line_number":111,"context_line":""},{"line_number":112,"context_line":""},{"line_number":113,"context_line":"@obj_base.VersionedObjectRegistry.register"}],"source_content_type":"text/x-python","patch_set":1,"id":"bff0334d_52a33c9f","line":110,"range":{"start_line":106,"start_character":8,"end_line":110,"end_character":59},"updated":"2017-04-06 21:14:42.000000000","message":"please check indentation here. looks wierd","commit_id":"e16fd97704096099e8c1562b1a766eb9c7c93447"},{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"07e28b58c391afdd62e6337f6613dcf8cef02373","unresolved":false,"context_lines":[{"line_number":103,"context_line":"        if _target_version \u003c (1, 1) and isinstance(self, QosDscpMarkingRule):"},{"line_number":104,"context_line":"            raise exception.IncompatibleObjectVersion("},{"line_number":105,"context_line":"                objver\u003dtarget_version, objname\u003dQosDscpMarkingRule.obj_name())"},{"line_number":106,"context_line":"        if (_target_version \u003c (1, 1) and"},{"line_number":107,"context_line":"                isinstance(self, QosMinimumBandwidthRule)):"},{"line_number":108,"context_line":"            raise exception.IncompatibleObjectVersion("},{"line_number":109,"context_line":"                objver\u003dtarget_version,"},{"line_number":110,"context_line":"                objname\u003dQosMinimumBandwidthRule.obj_name())"},{"line_number":111,"context_line":""},{"line_number":112,"context_line":""},{"line_number":113,"context_line":"@obj_base.VersionedObjectRegistry.register"}],"source_content_type":"text/x-python","patch_set":1,"id":"bff0334d_003ae932","line":110,"range":{"start_line":106,"start_character":8,"end_line":110,"end_character":59},"in_reply_to":"bff0334d_52a33c9f","updated":"2017-04-07 10:07:57.000000000","message":"I know, but it\u0027s correct","commit_id":"e16fd97704096099e8c1562b1a766eb9c7c93447"},{"author":{"_account_id":18051,"name":"David Shaughnessy","email":"david.shaughnessy@intel.com","username":"davidsha"},"change_message_id":"e196dbb6e9c2965063bcece9ac1fe25913d58fce","unresolved":false,"context_lines":[{"line_number":111,"context_line":""},{"line_number":112,"context_line":""},{"line_number":113,"context_line":"@obj_base.VersionedObjectRegistry.register"},{"line_number":114,"context_line":"class QosBandwidthLimitRule(QosRule):"},{"line_number":115,"context_line":""},{"line_number":116,"context_line":"    db_model \u003d qos_db_model.QosBandwidthLimitRule"},{"line_number":117,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"bff0334d_479c8b5c","line":114,"updated":"2017-04-07 14:59:26.000000000","message":"You will need to add a VERSION to each of these classes, otherwise you\u0027re still micro versioning.\nYou\u0027ll also need to override obj_make_compatible in all of them.\nAlso you need to modify tests in neutron/tests/unit/object/test_rule.py","commit_id":"e16fd97704096099e8c1562b1a766eb9c7c93447"}],"neutron/objects/qos/rule_type.py":[{"author":{"_account_id":18051,"name":"David Shaughnessy","email":"david.shaughnessy@intel.com","username":"davidsha"},"change_message_id":"e196dbb6e9c2965063bcece9ac1fe25913d58fce","unresolved":false,"context_lines":[{"line_number":30,"context_line":""},{"line_number":31,"context_line":"    def __init__(self, **kwargs):"},{"line_number":32,"context_line":"        self.AUTO_TYPE \u003d obj_fields.Enum("},{"line_number":33,"context_line":"            valid_values\u003dqos_consts.VALID_RULE_TYPES)"},{"line_number":34,"context_line":"        super(RuleTypeField, self).__init__(**kwargs)"},{"line_number":35,"context_line":""},{"line_number":36,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"bff0334d_9b8f8a22","line":33,"range":{"start_line":33,"start_character":25,"end_line":33,"end_character":52},"updated":"2017-04-07 14:59:26.000000000","message":"In line with my comments below, maybe change this to\n\"valid_values\u003dkwargs.get(\u0027valid_qos_rules\u0027) or qos_consts.VALID_RULE_TYPES\"","commit_id":"e16fd97704096099e8c1562b1a766eb9c7c93447"},{"author":{"_account_id":18051,"name":"David Shaughnessy","email":"david.shaughnessy@intel.com","username":"davidsha"},"change_message_id":"e196dbb6e9c2965063bcece9ac1fe25913d58fce","unresolved":false,"context_lines":[{"line_number":39,"context_line":"    # Version 1.0: Initial version, only BandwidthLimitRule"},{"line_number":40,"context_line":"    # Version 1.1: Added DscpMarkingRule"},{"line_number":41,"context_line":"    # Version 1.2: Added QosMinimumBandwidthRule"},{"line_number":42,"context_line":"    VERSION \u003d rule.QosRule.VERSION"},{"line_number":43,"context_line":""},{"line_number":44,"context_line":"    fields \u003d {"},{"line_number":45,"context_line":"        \u0027type\u0027: RuleTypeField(),"}],"source_content_type":"text/x-python","patch_set":1,"id":"bff0334d_8a63bab1","line":42,"range":{"start_line":42,"start_character":4,"end_line":42,"end_character":34},"updated":"2017-04-07 14:59:26.000000000","message":"This should have a unique version rather than just copying the QosRule VERSION.","commit_id":"e16fd97704096099e8c1562b1a766eb9c7c93447"},{"author":{"_account_id":18051,"name":"David Shaughnessy","email":"david.shaughnessy@intel.com","username":"davidsha"},"change_message_id":"e196dbb6e9c2965063bcece9ac1fe25913d58fce","unresolved":false,"context_lines":[{"line_number":70,"context_line":"        # TODO(ihrachys): apply filters to returned result"},{"line_number":71,"context_line":"        return [cls(type\u003dtype_) for type_ in rule_types]"},{"line_number":72,"context_line":""},{"line_number":73,"context_line":"    def obj_make_compatible(self, primitive, target_version):"},{"line_number":74,"context_line":"        _target_version \u003d versionutils.convert_version_to_tuple(target_version)"},{"line_number":75,"context_line":"        if (_target_version \u003c (1, 1) and \u0027type\u0027 in primitive and"},{"line_number":76,"context_line":"                primitive[\u0027type\u0027] \u003d\u003d qos_consts.RULE_TYPE_DSCP_MARKING):"}],"source_content_type":"text/x-python","patch_set":1,"id":"bff0334d_3bb99ee8","line":73,"range":{"start_line":73,"start_character":7,"end_line":73,"end_character":27},"updated":"2017-04-07 14:59:26.000000000","message":"What we need to do is take out QosRules from the list of valid QosRules when the version is degraded.","commit_id":"e16fd97704096099e8c1562b1a766eb9c7c93447"}],"neutron/tests/unit/objects/qos/test_policy.py":[{"author":{"_account_id":18051,"name":"David Shaughnessy","email":"david.shaughnessy@intel.com","username":"davidsha"},"change_message_id":"e196dbb6e9c2965063bcece9ac1fe25913d58fce","unresolved":false,"context_lines":[{"line_number":374,"context_line":"        primitive \u003d obj.obj_to_primitive(target_version\u003dversion)"},{"line_number":375,"context_line":"        return policy.QosPolicy.clean_obj_from_primitive(primitive)"},{"line_number":376,"context_line":""},{"line_number":377,"context_line":"    def test_object_version(self):"},{"line_number":378,"context_line":"        policy_obj, rule_objs \u003d self._create_test_policy_with_rules("},{"line_number":379,"context_line":"            RULE_OBJ_CLS.keys(), reload_rules\u003dTrue)"},{"line_number":380,"context_line":""},{"line_number":381,"context_line":"        policy_obj_v1_2 \u003d self._policy_through_version("},{"line_number":382,"context_line":"            policy_obj, policy.QosPolicy.VERSION)"},{"line_number":383,"context_line":""},{"line_number":384,"context_line":"        for rule_obj in rule_objs:"},{"line_number":385,"context_line":"            self.assertIn(rule_obj, policy_obj_v1_2.rules)"},{"line_number":386,"context_line":""},{"line_number":387,"context_line":"    def test_object_version_degradation_1_0(self):"},{"line_number":388,"context_line":"        policy_obj, rule_objs \u003d self._create_test_policy_with_rules("},{"line_number":389,"context_line":"            [qos_consts.RULE_TYPE_BANDWIDTH_LIMIT,"},{"line_number":390,"context_line":"             qos_consts.RULE_TYPE_DSCP_MARKING], reload_rules\u003dTrue)"},{"line_number":391,"context_line":""},{"line_number":392,"context_line":"        policy_obj_v1_0 \u003d self._policy_through_version(policy_obj, \u00271.0\u0027)"},{"line_number":393,"context_line":""},{"line_number":394,"context_line":"        self.assertIn(rule_objs[0], policy_obj_v1_0.rules)"},{"line_number":395,"context_line":"        self.assertNotIn(rule_objs[1], policy_obj_v1_0.rules)"},{"line_number":396,"context_line":""},{"line_number":397,"context_line":"    def test_object_version_degradation_1_1(self):"},{"line_number":398,"context_line":"        policy_obj, rule_objs \u003d self._create_test_policy_with_rules("},{"line_number":399,"context_line":"            [qos_consts.RULE_TYPE_BANDWIDTH_LIMIT,"},{"line_number":400,"context_line":"             qos_consts.RULE_TYPE_DSCP_MARKING,"},{"line_number":401,"context_line":"             qos_consts.RULE_TYPE_MINIMUM_BANDWIDTH], reload_rules\u003dTrue)"},{"line_number":402,"context_line":""},{"line_number":403,"context_line":"        policy_obj_v1_1 \u003d self._policy_through_version(policy_obj, \u00271.1\u0027)"},{"line_number":404,"context_line":""},{"line_number":405,"context_line":"        self.assertIn(rule_objs[0], policy_obj_v1_1.rules)"},{"line_number":406,"context_line":"        self.assertIn(rule_objs[1], policy_obj_v1_1.rules)"},{"line_number":407,"context_line":"        self.assertNotIn(rule_objs[2], policy_obj_v1_1.rules)"},{"line_number":408,"context_line":""},{"line_number":409,"context_line":"    def test_object_version_degradation_1_2(self):"},{"line_number":410,"context_line":"        policy_obj \u003d self._create_test_policy()"},{"line_number":411,"context_line":"        policy_obj.description \u003d None"},{"line_number":412,"context_line":"        policy_v1_2 \u003d policy_obj.obj_to_primitive(target_version\u003d\u00271.2\u0027)"},{"line_number":413,"context_line":"        self.assertNotIn(\u0027revision_number\u0027,"},{"line_number":414,"context_line":"                         policy_v1_2[\u0027versioned_object.data\u0027])"},{"line_number":415,"context_line":"        self.assertNotIn(\u0027created_at\u0027, policy_v1_2[\u0027versioned_object.data\u0027])"},{"line_number":416,"context_line":"        self.assertNotIn(\u0027updated_at\u0027, policy_v1_2[\u0027versioned_object.data\u0027])"},{"line_number":417,"context_line":"        self.assertEqual(\u0027\u0027,"},{"line_number":418,"context_line":"                         policy_v1_2[\u0027versioned_object.data\u0027][\u0027description\u0027])"},{"line_number":419,"context_line":""},{"line_number":420,"context_line":"    def test_object_version_degradation_1_3(self):"},{"line_number":421,"context_line":"        policy_obj \u003d self._create_test_policy()"},{"line_number":422,"context_line":"        policy_v1_3 \u003d policy_obj.obj_to_primitive(target_version\u003d\u00271.3\u0027)"},{"line_number":423,"context_line":"        self.assertNotIn(\u0027project_id\u0027, policy_v1_3[\u0027versioned_object.data\u0027])"},{"line_number":424,"context_line":"        self.assertIn(\u0027tenant_id\u0027, policy_v1_3[\u0027versioned_object.data\u0027])"},{"line_number":425,"context_line":""},{"line_number":426,"context_line":"    def test_filter_by_shared(self):"},{"line_number":427,"context_line":"        policy_obj \u003d policy.QosPolicy("}],"source_content_type":"text/x-python","patch_set":1,"id":"bff0334d_1b893ac9","line":424,"range":{"start_line":377,"start_character":2,"end_line":424,"end_character":72},"updated":"2017-04-07 14:59:26.000000000","message":"All these tests will probably need to be redone.","commit_id":"e16fd97704096099e8c1562b1a766eb9c7c93447"}],"neutron/tests/unit/objects/qos/test_rule_type.py":[{"author":{"_account_id":18051,"name":"David Shaughnessy","email":"david.shaughnessy@intel.com","username":"davidsha"},"change_message_id":"e196dbb6e9c2965063bcece9ac1fe25913d58fce","unresolved":false,"context_lines":[{"line_number":51,"context_line":"        primitive \u003d obj.obj_to_primitive(target_version\u003dversion)"},{"line_number":52,"context_line":"        return rule_type.QosRuleType.clean_obj_from_primitive(primitive)"},{"line_number":53,"context_line":""},{"line_number":54,"context_line":"    def test_object_version_degradation_1_0(self):"},{"line_number":55,"context_line":"        qos_rule_type \u003d rule_type.QosRuleType("},{"line_number":56,"context_line":"            type\u003dqos_consts.RULE_TYPE_DSCP_MARKING)"},{"line_number":57,"context_line":"        self.assertRaises(exception.IncompatibleObjectVersion,"},{"line_number":58,"context_line":"                          qos_rule_type.obj_to_primitive, \u00271.0\u0027)"},{"line_number":59,"context_line":""},{"line_number":60,"context_line":"    def test_object_version_degradation_1_1(self):"},{"line_number":61,"context_line":"        qos_rule_type \u003d rule_type.QosRuleType("},{"line_number":62,"context_line":"            type\u003dqos_consts.RULE_TYPE_MINIMUM_BANDWIDTH)"},{"line_number":63,"context_line":"        self.assertRaises(exception.IncompatibleObjectVersion,"},{"line_number":64,"context_line":"                          qos_rule_type.obj_to_primitive, \u00271.1\u0027)"}],"source_content_type":"text/x-python","patch_set":1,"id":"bff0334d_1b281ae0","line":64,"range":{"start_line":54,"start_character":0,"end_line":64,"end_character":64},"updated":"2017-04-07 14:59:26.000000000","message":"These tests are wrong, type is an object that contains a list of rules and when the version is degraded it should remove elements of the list that were introduced in later versions.\ntype is not a string for storing the object name.","commit_id":"e16fd97704096099e8c1562b1a766eb9c7c93447"}]}
