)]}'
{"neutron/plugins/vmware/nsxlib/secgroup.py":[{"author":{"_account_id":11762,"name":"Han Zhou","email":"zhouhan@gmail.com","username":"hanzhou"},"change_message_id":"6b8329969a3f95b9457c011a031fb917aa08678d","unresolved":false,"context_lines":[{"line_number":168,"context_line":"    # rule if it is part of another rule."},{"line_number":169,"context_line":"    logical_port_rules_summarized \u003d []"},{"line_number":170,"context_line":"    for i in range(len(logical_port_rules)):"},{"line_number":171,"context_line":"        for j in range(len(logical_port_rules)):"},{"line_number":172,"context_line":"            if (i !\u003d j and is_sg_rule_subset(logical_port_rules[i],"},{"line_number":173,"context_line":"                                             logical_port_rules[j])):"},{"line_number":174,"context_line":"                break"}],"source_content_type":"text/x-python","patch_set":4,"id":"3a961159_41a87d77","line":171,"updated":"2014-12-17 14:43:57.000000000","message":"Sudhi, this loop has potential problem, if there are two rules equal in the security group. E.g. A is subset of B and B is subset of A, then neither of the rules will be appended.","commit_id":"4dc6a457e30f63bda80ba043ddfb263f5b4077d6"},{"author":{"_account_id":11762,"name":"Han Zhou","email":"zhouhan@gmail.com","username":"hanzhou"},"change_message_id":"6b8329969a3f95b9457c011a031fb917aa08678d","unresolved":false,"context_lines":[{"line_number":194,"context_line":"                                                       0L) and"},{"line_number":195,"context_line":"            sgr1.get(\u0027port_range_max\u0027, 65535L) \u003c\u003d sgr2.get(\u0027port_range_max\u0027,"},{"line_number":196,"context_line":"                                                           65535L) and"},{"line_number":197,"context_line":"            (sgr2.get(\u0027remote_ip_prefix\u0027) is None or"},{"line_number":198,"context_line":"             sgr1.get(\u0027remote_ip_prefix\u0027) \u003d\u003d sgr2.get(\u0027remote_ip_prefix\u0027)) and"},{"line_number":199,"context_line":"            (sgr2.get(\u0027profile_uuid\u0027) is None or"},{"line_number":200,"context_line":"             sgr1.get(\u0027profile_uuid\u0027) \u003d\u003d sgr2.get(\u0027profile_uuid\u0027)))"}],"source_content_type":"text/x-python","patch_set":4,"id":"3a961159_44b96b14","line":197,"updated":"2014-12-17 14:43:57.000000000","message":"Sudhi, there is no \u0027remote_ip_prefix\u0027 but just \u0027ip_prefix\u0027. The result is that this is always none, and so always equal.","commit_id":"4dc6a457e30f63bda80ba043ddfb263f5b4077d6"},{"author":{"_account_id":11762,"name":"Han Zhou","email":"zhouhan@gmail.com","username":"hanzhou"},"change_message_id":"db01ea5b743e5c6cc59dddf10bf675ec2ece3a1c","unresolved":false,"context_lines":[{"line_number":213,"context_line":"            sgr1.get(\u0027port_range_max\u0027, 65535L) \u003c\u003d sgr2.get(\u0027port_range_max\u0027,"},{"line_number":214,"context_line":"                                                           65535L) and"},{"line_number":215,"context_line":"            (sgr2.get(\u0027remote_ip_prefix\u0027) is None or"},{"line_number":216,"context_line":"             sgr1.get(\u0027remote_ip_prefix\u0027) \u003d\u003d sgr2.get(\u0027remote_ip_prefix\u0027)) and"},{"line_number":217,"context_line":"            (sgr2.get(\u0027profile_uuid\u0027) is None or"},{"line_number":218,"context_line":"             sgr1.get(\u0027profile_uuid\u0027) \u003d\u003d sgr2.get(\u0027profile_uuid\u0027)))"}],"source_content_type":"text/x-python","patch_set":6,"id":"3a961159_496562ad","line":216,"updated":"2014-12-24 02:52:04.000000000","message":"\u0027remote_ip_prefix\u0027 doesn\u0027t exist. Should be \u0027ip_prefix\u0027. Otherwise 2 rules with different ip_prefix will be regarded as subset by mistake.","commit_id":"6d40859eb81a0c64c2767c44c9e38ed7ed702497"}],"neutron/tests/unit/vmware/nsxlib/test_secgroup.py":[{"author":{"_account_id":4395,"name":"Aaron Rosen","email":"aaronorosen@gmail.com","username":"arosen"},"change_message_id":"edc594782f3bcc4d760edce16561d58e74e5dab3","unresolved":false,"context_lines":[{"line_number":92,"context_line":"        self.assertIn(ingress_rule,"},{"line_number":93,"context_line":"                      sec_prof_res[\u0027logical_port_ingress_rules\u0027])"},{"line_number":94,"context_line":""},{"line_number":95,"context_line":"    def test_update_security_profile_rules_summarize(self):"},{"line_number":96,"context_line":"        sec_prof \u003d secgrouplib.create_security_profile("},{"line_number":97,"context_line":"            self.fake_cluster, _uuid(), \u0027pippo\u0027, {\u0027name\u0027: \u0027test\u0027})"},{"line_number":98,"context_line":"        ingress_rule \u003d [{\u0027ethertype\u0027: \u0027IPv4\u0027}]"}],"source_content_type":"text/x-python","patch_set":3,"id":"baa201ad_303a2f99","line":95,"updated":"2014-10-09 04:31:19.000000000","message":"I think we should add a few different test cases here to cover all the optimizations you do.   port_range_min: 1-65535  etc. I think these tests shoudl also just target summarize_security_group_rules()  and assert on what it returns and what we expect","commit_id":"0779eb1fcb9c5fb1b0c6a9444669bd8753dafa95"},{"author":{"_account_id":4395,"name":"Aaron Rosen","email":"aaronorosen@gmail.com","username":"arosen"},"change_message_id":"edc594782f3bcc4d760edce16561d58e74e5dab3","unresolved":false,"context_lines":[{"line_number":96,"context_line":"        sec_prof \u003d secgrouplib.create_security_profile("},{"line_number":97,"context_line":"            self.fake_cluster, _uuid(), \u0027pippo\u0027, {\u0027name\u0027: \u0027test\u0027})"},{"line_number":98,"context_line":"        ingress_rule \u003d [{\u0027ethertype\u0027: \u0027IPv4\u0027}]"},{"line_number":99,"context_line":"        egress_rules \u003d ["},{"line_number":100,"context_line":"            {\u0027ethertype\u0027: \u0027IPv4\u0027, \u0027protocol\u0027: constants.PROTO_NUM_UDP,"},{"line_number":101,"context_line":"             \u0027port_range_min\u0027: 1, \u0027port_range_max\u0027: 1,"},{"line_number":102,"context_line":"             \u0027remote_ip_prefix\u0027: \u00271.1.1.1/20\u0027},"}],"source_content_type":"text/x-python","patch_set":3,"id":"baa201ad_b0229f4f","line":99,"updated":"2014-10-09 04:31:19.000000000","message":"i think this test should be called is_subset but it\u0027s not testing a case of 1 - 65535 (we should have an explicit test for that).","commit_id":"0779eb1fcb9c5fb1b0c6a9444669bd8753dafa95"},{"author":{"_account_id":4395,"name":"Aaron Rosen","email":"aaronorosen@gmail.com","username":"arosen"},"change_message_id":"edc594782f3bcc4d760edce16561d58e74e5dab3","unresolved":false,"context_lines":[{"line_number":115,"context_line":"            cluster\u003dself.fake_cluster)"},{"line_number":116,"context_line":"        self.assertEqual(sec_prof[\u0027uuid\u0027], sec_prof_res[\u0027uuid\u0027])"},{"line_number":117,"context_line":"        # Check for builtin rules"},{"line_number":118,"context_line":"        self.assertEqual(len(sec_prof_res[\u0027logical_port_egress_rules\u0027]), 1)"},{"line_number":119,"context_line":"        self.assertEqual(len(sec_prof_res[\u0027logical_port_ingress_rules\u0027]), 1)"},{"line_number":120,"context_line":"        self.assertIn(ingress_rule,"},{"line_number":121,"context_line":"                      sec_prof_res[\u0027logical_port_ingress_rules\u0027])"}],"source_content_type":"text/x-python","patch_set":3,"id":"baa201ad_9043db11","line":118,"updated":"2014-10-09 04:31:19.000000000","message":"we should also assert on what we expect the out come rule to be.","commit_id":"0779eb1fcb9c5fb1b0c6a9444669bd8753dafa95"},{"author":{"_account_id":4395,"name":"Aaron Rosen","email":"aaronorosen@gmail.com","username":"arosen"},"change_message_id":"edc594782f3bcc4d760edce16561d58e74e5dab3","unresolved":false,"context_lines":[{"line_number":119,"context_line":"        self.assertEqual(len(sec_prof_res[\u0027logical_port_ingress_rules\u0027]), 1)"},{"line_number":120,"context_line":"        self.assertIn(ingress_rule,"},{"line_number":121,"context_line":"                      sec_prof_res[\u0027logical_port_ingress_rules\u0027])"},{"line_number":122,"context_line":"        pass"},{"line_number":123,"context_line":""},{"line_number":124,"context_line":"    def test_update_security_profile_rules_noingress(self):"},{"line_number":125,"context_line":"        sec_prof \u003d secgrouplib.create_security_profile("}],"source_content_type":"text/x-python","patch_set":3,"id":"baa201ad_d0c1e380","line":122,"updated":"2014-10-09 04:31:19.000000000","message":"pass not needed.","commit_id":"0779eb1fcb9c5fb1b0c6a9444669bd8753dafa95"}]}
