)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":2035,"name":"Maru Newby","email":"marun@redhat.com","username":"maru"},"change_message_id":"5a529b5e8275006b995cff3bd13b54dd5e861601","unresolved":false,"context_lines":[{"line_number":6,"context_line":""},{"line_number":7,"context_line":"add generic method create_secgroup \u0026 rule"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"methods"},{"line_number":10,"context_line":"creating an empty secgroup (without rules)"},{"line_number":11,"context_line":"creating a single secgroup rule"},{"line_number":12,"context_line":"both methods use neutron (network_client)"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":17,"id":"AAAATn%2F%2B200%3D","line":9,"updated":"2013-11-19 10:03:14.000000000","message":"This commit message duplicates implementation details rather than explaining why they were chosen.  Please use the  the wiki entry for commit messages (https://wiki.openstack.org/wiki/GitCommitMessages) to guide a rewrite.","commit_id":"5baa67a9b88e78183b16fc91c9359f250a9349c3"}],"tempest/scenario/manager.py":[{"author":{"_account_id":5803,"name":"Attila Fazekas","email":"afazekas@redhat.com","username":"afazekas"},"change_message_id":"7f91c8fcea1e666e8c9406d048349ca138e2a933","unresolved":false,"context_lines":[{"line_number":717,"context_line":"            raise exc.NeutronClientNoUniqueMatch"},{"line_number":718,"context_line":"        return net_common.DeletableSecurityGroup(client\u003dself.network_client,"},{"line_number":719,"context_line":"                                                 **sgs[0])"},{"line_number":720,"context_line":"#         [\u0027security_group\u0027])"},{"line_number":721,"context_line":""},{"line_number":722,"context_line":"    def _create_security_group_rule(self, secgroup\u003dNone, secgroup_id\u003dNone,"},{"line_number":723,"context_line":"                                    tenant_id\u003dNone, **kwargs):"}],"source_content_type":"text/x-python","patch_set":9,"id":"AAAATn%2F%2FU24%3D","line":720,"updated":"2013-11-10 18:41:50.000000000","message":"I guess this line remained here by accident.\n\nCommented out source code should not be in the source (-1).","commit_id":"964a4b8e1b163aa34003fef93186fb371aafdc5c"},{"author":{"_account_id":8576,"name":"Yair Fried","email":"yfried@redhat.com","username":"yfried"},"change_message_id":"eb0a0a022e1c8a493568fc8b910856d653644a13","unresolved":false,"context_lines":[{"line_number":717,"context_line":"            raise exc.NeutronClientNoUniqueMatch"},{"line_number":718,"context_line":"        return net_common.DeletableSecurityGroup(client\u003dself.network_client,"},{"line_number":719,"context_line":"                                                 **sgs[0])"},{"line_number":720,"context_line":"#         [\u0027security_group\u0027])"},{"line_number":721,"context_line":""},{"line_number":722,"context_line":"    def _create_security_group_rule(self, secgroup\u003dNone, secgroup_id\u003dNone,"},{"line_number":723,"context_line":"                                    tenant_id\u003dNone, **kwargs):"}],"source_content_type":"text/x-python","patch_set":9,"id":"AAAATn%2F%2FT%2BU%3D","line":720,"in_reply_to":"AAAATn%2F%2FU24%3D","updated":"2013-11-11 07:01:03.000000000","message":"Done","commit_id":"964a4b8e1b163aa34003fef93186fb371aafdc5c"},{"author":{"_account_id":5803,"name":"Attila Fazekas","email":"afazekas@redhat.com","username":"afazekas"},"change_message_id":"7f91c8fcea1e666e8c9406d048349ca138e2a933","unresolved":false,"context_lines":[{"line_number":724,"context_line":"        \u0027\u0027\u0027"},{"line_number":725,"context_line":"        expects a dictionary containing rule parameters"},{"line_number":726,"context_line":"        \u0027\u0027\u0027"},{"line_number":727,"context_line":"        #get secgroup"},{"line_number":728,"context_line":"        if secgroup_id is None and secgroup is None:"},{"line_number":729,"context_line":"            #get default secgroup"},{"line_number":730,"context_line":"            secgroup \u003d self._default_security_group(tenant_id)"}],"source_content_type":"text/x-python","patch_set":9,"id":"AAAATn%2F%2FU2w%3D","line":727,"updated":"2013-11-10 18:41:50.000000000","message":"I do not think this comment really helpful here.\nBTW: The \u0027#\u0027 must be followed by space . \u0027#  comment text\u0027","commit_id":"964a4b8e1b163aa34003fef93186fb371aafdc5c"},{"author":{"_account_id":8576,"name":"Yair Fried","email":"yfried@redhat.com","username":"yfried"},"change_message_id":"eb0a0a022e1c8a493568fc8b910856d653644a13","unresolved":false,"context_lines":[{"line_number":724,"context_line":"        \u0027\u0027\u0027"},{"line_number":725,"context_line":"        expects a dictionary containing rule parameters"},{"line_number":726,"context_line":"        \u0027\u0027\u0027"},{"line_number":727,"context_line":"        #get secgroup"},{"line_number":728,"context_line":"        if secgroup_id is None and secgroup is None:"},{"line_number":729,"context_line":"            #get default secgroup"},{"line_number":730,"context_line":"            secgroup \u003d self._default_security_group(tenant_id)"}],"source_content_type":"text/x-python","patch_set":9,"id":"AAAATn%2F%2FT%2BQ%3D","line":727,"in_reply_to":"AAAATn%2F%2FU2w%3D","updated":"2013-11-11 07:01:03.000000000","message":"Done","commit_id":"964a4b8e1b163aa34003fef93186fb371aafdc5c"},{"author":{"_account_id":5803,"name":"Attila Fazekas","email":"afazekas@redhat.com","username":"afazekas"},"change_message_id":"05fddd18acbab0440cca84b78d534db7dae9caa5","unresolved":false,"context_lines":[{"line_number":702,"context_line":"        \"\"\""},{"line_number":703,"context_line":"        get default secgroup for given tenant (admin if None)"},{"line_number":704,"context_line":"        \"\"\""},{"line_number":705,"context_line":"        if tenant_id is None:"},{"line_number":706,"context_line":"            tenant_id \u003d self.identity_client.tenants.find("},{"line_number":707,"context_line":"                name\u003dself.config.identity.tenant_name"},{"line_number":708,"context_line":"            ).tenant_id"}],"source_content_type":"text/x-python","patch_set":10,"id":"AAAATn%2F%2FQLQ%3D","line":705,"updated":"2013-11-12 08:34:23.000000000","message":"I have doubts is the admin the right choose for default, probably the \u0027primary\u0027 /demo\u0027 user would be little better, But I do not think we really need a default here.","commit_id":"b1fc7356434fd8ac011810db150e0fb51ddb0fd9"},{"author":{"_account_id":5803,"name":"Attila Fazekas","email":"afazekas@redhat.com","username":"afazekas"},"change_message_id":"05fddd18acbab0440cca84b78d534db7dae9caa5","unresolved":false,"context_lines":[{"line_number":712,"context_line":"        ]"},{"line_number":713,"context_line":"        if len(sgs) \u003d\u003d 0:"},{"line_number":714,"context_line":"            msg \u003d \"No default security group for tenant %s.\" % (tenant_id)"},{"line_number":715,"context_line":"            raise exc.NotFound(404, msg)"},{"line_number":716,"context_line":"        elif len(sgs) \u003e 1:"},{"line_number":717,"context_line":"            raise exc.NeutronClientNoUniqueMatch"},{"line_number":718,"context_line":"        return net_common.DeletableSecurityGroup(client\u003dself.network_client,"}],"source_content_type":"text/x-python","patch_set":10,"id":"AAAATn%2F%2FQOg%3D","line":715,"updated":"2013-11-12 08:34:23.000000000","message":"Raising a rest client exception here is confusing.\n  self.assertTrue(len_sgs\u003e0,  msg)","commit_id":"b1fc7356434fd8ac011810db150e0fb51ddb0fd9"},{"author":{"_account_id":5803,"name":"Attila Fazekas","email":"afazekas@redhat.com","username":"afazekas"},"change_message_id":"05fddd18acbab0440cca84b78d534db7dae9caa5","unresolved":false,"context_lines":[{"line_number":714,"context_line":"            msg \u003d \"No default security group for tenant %s.\" % (tenant_id)"},{"line_number":715,"context_line":"            raise exc.NotFound(404, msg)"},{"line_number":716,"context_line":"        elif len(sgs) \u003e 1:"},{"line_number":717,"context_line":"            raise exc.NeutronClientNoUniqueMatch"},{"line_number":718,"context_line":"        return net_common.DeletableSecurityGroup(client\u003dself.network_client,"},{"line_number":719,"context_line":"                                                 **sgs[0])"},{"line_number":720,"context_line":""}],"source_content_type":"text/x-python","patch_set":10,"id":"AAAATn%2F%2FQOI%3D","line":717,"updated":"2013-11-12 08:34:23.000000000","message":"The exception message should contain the number of default groups found, or the string representation of the original structure received from the server.","commit_id":"b1fc7356434fd8ac011810db150e0fb51ddb0fd9"},{"author":{"_account_id":5803,"name":"Attila Fazekas","email":"afazekas@redhat.com","username":"afazekas"},"change_message_id":"05fddd18acbab0440cca84b78d534db7dae9caa5","unresolved":false,"context_lines":[{"line_number":715,"context_line":"            raise exc.NotFound(404, msg)"},{"line_number":716,"context_line":"        elif len(sgs) \u003e 1:"},{"line_number":717,"context_line":"            raise exc.NeutronClientNoUniqueMatch"},{"line_number":718,"context_line":"        return net_common.DeletableSecurityGroup(client\u003dself.network_client,"},{"line_number":719,"context_line":"                                                 **sgs[0])"},{"line_number":720,"context_line":""},{"line_number":721,"context_line":"    def _create_security_group_rule(self, secgroup\u003dNone, secgroup_id\u003dNone,"}],"source_content_type":"text/x-python","patch_set":10,"id":"AAAATn%2F%2FQMs%3D","line":718,"updated":"2013-11-12 08:34:23.000000000","message":"AFAIK The default group is not delectable at the moment, but in this case it is ok to wrap it into the common wrapper.","commit_id":"b1fc7356434fd8ac011810db150e0fb51ddb0fd9"},{"author":{"_account_id":5803,"name":"Attila Fazekas","email":"afazekas@redhat.com","username":"afazekas"},"change_message_id":"05fddd18acbab0440cca84b78d534db7dae9caa5","unresolved":false,"context_lines":[{"line_number":723,"context_line":"        \u0027\u0027\u0027"},{"line_number":724,"context_line":"        expects a dictionary containing rule parameters"},{"line_number":725,"context_line":"        \u0027\u0027\u0027"},{"line_number":726,"context_line":"        #get secgroup"},{"line_number":727,"context_line":"        if secgroup_id is None and secgroup is None:"},{"line_number":728,"context_line":"            secgroup \u003d self._default_security_group(tenant_id)"},{"line_number":729,"context_line":"        if secgroup is None:"}],"source_content_type":"text/x-python","patch_set":10,"id":"AAAATn%2F%2FQLI%3D","line":726,"updated":"2013-11-12 08:34:23.000000000","message":"# g  \n\nspace","commit_id":"b1fc7356434fd8ac011810db150e0fb51ddb0fd9"},{"author":{"_account_id":261,"name":"Salvatore Orlando","email":"salv.orlando@gmail.com","username":"salvatore-orlando"},"change_message_id":"97a94867bde6febe3a1b9133b8f274379300b491","unresolved":false,"context_lines":[{"line_number":696,"context_line":"        \u0027\u0027\u0027"},{"line_number":697,"context_line":"        create a security group without rules"},{"line_number":698,"context_line":"        :return: DeletableSecgroup"},{"line_number":699,"context_line":"        \u0027\u0027\u0027"},{"line_number":700,"context_line":"        sg_name \u003d rand_name(namestart)"},{"line_number":701,"context_line":"        sg_desc \u003d sg_name + \" description\""},{"line_number":702,"context_line":"        sg_dict \u003d dict(name\u003dsg_name,"}],"source_content_type":"text/x-python","patch_set":17,"id":"AAAATn%2F%2B788%3D","line":699,"updated":"2013-11-18 11:38:53.000000000","message":"docstring convention per HACKING usually manadates double quotes","commit_id":"5baa67a9b88e78183b16fc91c9359f250a9349c3"},{"author":{"_account_id":8576,"name":"Yair Fried","email":"yfried@redhat.com","username":"yfried"},"change_message_id":"d06ce7c7ec069573b92b7b5ca7ea77bfb8897aa3","unresolved":false,"context_lines":[{"line_number":696,"context_line":"        \u0027\u0027\u0027"},{"line_number":697,"context_line":"        create a security group without rules"},{"line_number":698,"context_line":"        :return: DeletableSecgroup"},{"line_number":699,"context_line":"        \u0027\u0027\u0027"},{"line_number":700,"context_line":"        sg_name \u003d rand_name(namestart)"},{"line_number":701,"context_line":"        sg_desc \u003d sg_name + \" description\""},{"line_number":702,"context_line":"        sg_dict \u003d dict(name\u003dsg_name,"}],"source_content_type":"text/x-python","patch_set":17,"id":"AAAATn%2F%2BybI%3D","line":699,"in_reply_to":"AAAATn%2F%2B788%3D","updated":"2013-11-20 08:24:48.000000000","message":"Done","commit_id":"5baa67a9b88e78183b16fc91c9359f250a9349c3"},{"author":{"_account_id":2035,"name":"Maru Newby","email":"marun@redhat.com","username":"maru"},"change_message_id":"5a529b5e8275006b995cff3bd13b54dd5e861601","unresolved":false,"context_lines":[{"line_number":701,"context_line":"        sg_desc \u003d sg_name + \" description\""},{"line_number":702,"context_line":"        sg_dict \u003d dict(name\u003dsg_name,"},{"line_number":703,"context_line":"                       description\u003dsg_desc,"},{"line_number":704,"context_line":"                       )"},{"line_number":705,"context_line":"        if tenant_id is not None:"},{"line_number":706,"context_line":"            sg_dict.update(tenant_id\u003dtenant_id)"},{"line_number":707,"context_line":"        body \u003d dict(security_group\u003dsg_dict)"}],"source_content_type":"text/x-python","patch_set":17,"id":"AAAATn%2F%2B26I%3D","line":704,"updated":"2013-11-19 10:03:14.000000000","message":"This closing bracket should be aligned with the opening bracket (see HACKING).","commit_id":"5baa67a9b88e78183b16fc91c9359f250a9349c3"},{"author":{"_account_id":8576,"name":"Yair Fried","email":"yfried@redhat.com","username":"yfried"},"change_message_id":"d06ce7c7ec069573b92b7b5ca7ea77bfb8897aa3","unresolved":false,"context_lines":[{"line_number":701,"context_line":"        sg_desc \u003d sg_name + \" description\""},{"line_number":702,"context_line":"        sg_dict \u003d dict(name\u003dsg_name,"},{"line_number":703,"context_line":"                       description\u003dsg_desc,"},{"line_number":704,"context_line":"                       )"},{"line_number":705,"context_line":"        if tenant_id is not None:"},{"line_number":706,"context_line":"            sg_dict.update(tenant_id\u003dtenant_id)"},{"line_number":707,"context_line":"        body \u003d dict(security_group\u003dsg_dict)"}],"source_content_type":"text/x-python","patch_set":17,"id":"AAAATn%2F%2ByXM%3D","line":704,"in_reply_to":"AAAATn%2F%2B26I%3D","updated":"2013-11-20 08:24:48.000000000","message":"Done","commit_id":"5baa67a9b88e78183b16fc91c9359f250a9349c3"},{"author":{"_account_id":2035,"name":"Maru Newby","email":"marun@redhat.com","username":"maru"},"change_message_id":"5a529b5e8275006b995cff3bd13b54dd5e861601","unresolved":false,"context_lines":[{"line_number":702,"context_line":"        sg_dict \u003d dict(name\u003dsg_name,"},{"line_number":703,"context_line":"                       description\u003dsg_desc,"},{"line_number":704,"context_line":"                       )"},{"line_number":705,"context_line":"        if tenant_id is not None:"},{"line_number":706,"context_line":"            sg_dict.update(tenant_id\u003dtenant_id)"},{"line_number":707,"context_line":"        body \u003d dict(security_group\u003dsg_dict)"},{"line_number":708,"context_line":"        result \u003d self.network_client.create_security_group(body\u003dbody)"}],"source_content_type":"text/x-python","patch_set":17,"id":"AAAATn%2F%2B26o%3D","line":705,"updated":"2013-11-19 10:03:14.000000000","message":"(Suggestion only) Consider using implicit boolean conversion (if tenant_id) unless there is a need to differentiate None from other values evaluating to False (e.g. bool(\u0027\u0027) \u003d\u003d False for string).","commit_id":"5baa67a9b88e78183b16fc91c9359f250a9349c3"},{"author":{"_account_id":8576,"name":"Yair Fried","email":"yfried@redhat.com","username":"yfried"},"change_message_id":"d06ce7c7ec069573b92b7b5ca7ea77bfb8897aa3","unresolved":false,"context_lines":[{"line_number":702,"context_line":"        sg_dict \u003d dict(name\u003dsg_name,"},{"line_number":703,"context_line":"                       description\u003dsg_desc,"},{"line_number":704,"context_line":"                       )"},{"line_number":705,"context_line":"        if tenant_id is not None:"},{"line_number":706,"context_line":"            sg_dict.update(tenant_id\u003dtenant_id)"},{"line_number":707,"context_line":"        body \u003d dict(security_group\u003dsg_dict)"},{"line_number":708,"context_line":"        result \u003d self.network_client.create_security_group(body\u003dbody)"}],"source_content_type":"text/x-python","patch_set":17,"id":"AAAATn%2F%2ByXI%3D","line":705,"in_reply_to":"AAAATn%2F%2B26o%3D","updated":"2013-11-20 08:24:48.000000000","message":"Done","commit_id":"5baa67a9b88e78183b16fc91c9359f250a9349c3"},{"author":{"_account_id":261,"name":"Salvatore Orlando","email":"salv.orlando@gmail.com","username":"salvatore-orlando"},"change_message_id":"97a94867bde6febe3a1b9133b8f274379300b491","unresolved":false,"context_lines":[{"line_number":718,"context_line":""},{"line_number":719,"context_line":"    def _default_security_group(self, tenant_id\u003dNone):"},{"line_number":720,"context_line":"        \"\"\""},{"line_number":721,"context_line":"        get default secgroup for given tenant (admin if None)"},{"line_number":722,"context_line":"        \"\"\""},{"line_number":723,"context_line":"        if tenant_id is None:"},{"line_number":724,"context_line":"            tenant_id \u003d self.identity_client.tenants.find("}],"source_content_type":"text/x-python","patch_set":17,"id":"AAAATn%2F%2B78Q%3D","line":721,"updated":"2013-11-18 11:38:53.000000000","message":"I am not sure the code below uses the admin\u0027s tenant_id is tenant_id is none. Can you explain?","commit_id":"5baa67a9b88e78183b16fc91c9359f250a9349c3"},{"author":{"_account_id":8576,"name":"Yair Fried","email":"yfried@redhat.com","username":"yfried"},"change_message_id":"d06ce7c7ec069573b92b7b5ca7ea77bfb8897aa3","unresolved":false,"context_lines":[{"line_number":718,"context_line":""},{"line_number":719,"context_line":"    def _default_security_group(self, tenant_id\u003dNone):"},{"line_number":720,"context_line":"        \"\"\""},{"line_number":721,"context_line":"        get default secgroup for given tenant (admin if None)"},{"line_number":722,"context_line":"        \"\"\""},{"line_number":723,"context_line":"        if tenant_id is None:"},{"line_number":724,"context_line":"            tenant_id \u003d self.identity_client.tenants.find("}],"source_content_type":"text/x-python","patch_set":17,"id":"AAAATn%2F%2ByW0%3D","line":721,"in_reply_to":"AAAATn%2F%2B78Q%3D","updated":"2013-11-20 08:24:48.000000000","message":"you\u0027re right - it was using demo_tenant name. fixed","commit_id":"5baa67a9b88e78183b16fc91c9359f250a9349c3"},{"author":{"_account_id":261,"name":"Salvatore Orlando","email":"salv.orlando@gmail.com","username":"salvatore-orlando"},"change_message_id":"97a94867bde6febe3a1b9133b8f274379300b491","unresolved":false,"context_lines":[{"line_number":731,"context_line":"        msg \u003d \"No default security group for tenant %s.\" % (tenant_id)"},{"line_number":732,"context_line":"        self.assertTrue(len(sgs) \u003e 0, msg)"},{"line_number":733,"context_line":"        if len(sgs) \u003e 1:"},{"line_number":734,"context_line":"            msg \u003d \"Found {num} default security groups\".format(num\u003dlen(sgs))"},{"line_number":735,"context_line":"            raise exc.NeutronClientNoUniqueMatch(msg\u003dmsg)"},{"line_number":736,"context_line":"        return net_common.DeletableSecurityGroup(client\u003dself.network_client,"},{"line_number":737,"context_line":"                                                 **sgs[0])"}],"source_content_type":"text/x-python","patch_set":17,"id":"AAAATn%2F%2B78E%3D","line":734,"updated":"2013-11-18 11:38:53.000000000","message":"consider\nmsg \u003d \"Found %d default security groups\" % len(sgs)","commit_id":"5baa67a9b88e78183b16fc91c9359f250a9349c3"},{"author":{"_account_id":8576,"name":"Yair Fried","email":"yfried@redhat.com","username":"yfried"},"change_message_id":"d06ce7c7ec069573b92b7b5ca7ea77bfb8897aa3","unresolved":false,"context_lines":[{"line_number":731,"context_line":"        msg \u003d \"No default security group for tenant %s.\" % (tenant_id)"},{"line_number":732,"context_line":"        self.assertTrue(len(sgs) \u003e 0, msg)"},{"line_number":733,"context_line":"        if len(sgs) \u003e 1:"},{"line_number":734,"context_line":"            msg \u003d \"Found {num} default security groups\".format(num\u003dlen(sgs))"},{"line_number":735,"context_line":"            raise exc.NeutronClientNoUniqueMatch(msg\u003dmsg)"},{"line_number":736,"context_line":"        return net_common.DeletableSecurityGroup(client\u003dself.network_client,"},{"line_number":737,"context_line":"                                                 **sgs[0])"}],"source_content_type":"text/x-python","patch_set":17,"id":"AAAATn%2F%2ByRw%3D","line":734,"in_reply_to":"AAAATn%2F%2B78E%3D","updated":"2013-11-20 08:24:48.000000000","message":"Done","commit_id":"5baa67a9b88e78183b16fc91c9359f250a9349c3"},{"author":{"_account_id":2035,"name":"Maru Newby","email":"marun@redhat.com","username":"maru"},"change_message_id":"5a529b5e8275006b995cff3bd13b54dd5e861601","unresolved":false,"context_lines":[{"line_number":739,"context_line":"    def _create_security_group_rule(self, secgroup\u003dNone, secgroup_id\u003dNone,"},{"line_number":740,"context_line":"                                    tenant_id\u003dNone, **kwargs):"},{"line_number":741,"context_line":"        \u0027\u0027\u0027"},{"line_number":742,"context_line":"        expects a dictionary containing rule parameters"},{"line_number":743,"context_line":"        \u0027\u0027\u0027"},{"line_number":744,"context_line":"        #get secgroup"},{"line_number":745,"context_line":"        if secgroup_id is None and secgroup is None:"}],"source_content_type":"text/x-python","patch_set":17,"id":"AAAATn%2F%2B238%3D","line":742,"updated":"2013-11-19 10:03:14.000000000","message":"Docstrings should follow sphinx convention (http://pythonhosted.org/an_example_pypi_project/sphinx.html).  There should be examples in the tree to crib from.","commit_id":"5baa67a9b88e78183b16fc91c9359f250a9349c3"},{"author":{"_account_id":8576,"name":"Yair Fried","email":"yfried@redhat.com","username":"yfried"},"change_message_id":"d06ce7c7ec069573b92b7b5ca7ea77bfb8897aa3","unresolved":false,"context_lines":[{"line_number":739,"context_line":"    def _create_security_group_rule(self, secgroup\u003dNone, secgroup_id\u003dNone,"},{"line_number":740,"context_line":"                                    tenant_id\u003dNone, **kwargs):"},{"line_number":741,"context_line":"        \u0027\u0027\u0027"},{"line_number":742,"context_line":"        expects a dictionary containing rule parameters"},{"line_number":743,"context_line":"        \u0027\u0027\u0027"},{"line_number":744,"context_line":"        #get secgroup"},{"line_number":745,"context_line":"        if secgroup_id is None and secgroup is None:"}],"source_content_type":"text/x-python","patch_set":17,"id":"AAAATn%2F%2ByS8%3D","line":742,"in_reply_to":"AAAATn%2F%2B238%3D","updated":"2013-11-20 08:24:48.000000000","message":"Done","commit_id":"5baa67a9b88e78183b16fc91c9359f250a9349c3"},{"author":{"_account_id":2035,"name":"Maru Newby","email":"marun@redhat.com","username":"maru"},"change_message_id":"5a529b5e8275006b995cff3bd13b54dd5e861601","unresolved":false,"context_lines":[{"line_number":741,"context_line":"        \u0027\u0027\u0027"},{"line_number":742,"context_line":"        expects a dictionary containing rule parameters"},{"line_number":743,"context_line":"        \u0027\u0027\u0027"},{"line_number":744,"context_line":"        #get secgroup"},{"line_number":745,"context_line":"        if secgroup_id is None and secgroup is None:"},{"line_number":746,"context_line":"            secgroup \u003d self._default_security_group(tenant_id)"},{"line_number":747,"context_line":"        if secgroup is None:"}],"source_content_type":"text/x-python","patch_set":17,"id":"AAAATn%2F%2B24s%3D","line":744,"updated":"2013-11-19 10:03:14.000000000","message":"Redundant comment","commit_id":"5baa67a9b88e78183b16fc91c9359f250a9349c3"},{"author":{"_account_id":8576,"name":"Yair Fried","email":"yfried@redhat.com","username":"yfried"},"change_message_id":"d06ce7c7ec069573b92b7b5ca7ea77bfb8897aa3","unresolved":false,"context_lines":[{"line_number":741,"context_line":"        \u0027\u0027\u0027"},{"line_number":742,"context_line":"        expects a dictionary containing rule parameters"},{"line_number":743,"context_line":"        \u0027\u0027\u0027"},{"line_number":744,"context_line":"        #get secgroup"},{"line_number":745,"context_line":"        if secgroup_id is None and secgroup is None:"},{"line_number":746,"context_line":"            secgroup \u003d self._default_security_group(tenant_id)"},{"line_number":747,"context_line":"        if secgroup is None:"}],"source_content_type":"text/x-python","patch_set":17,"id":"AAAATn%2F%2ByS4%3D","line":744,"in_reply_to":"AAAATn%2F%2B24s%3D","updated":"2013-11-20 08:24:48.000000000","message":"Done","commit_id":"5baa67a9b88e78183b16fc91c9359f250a9349c3"},{"author":{"_account_id":2035,"name":"Maru Newby","email":"marun@redhat.com","username":"maru"},"change_message_id":"5a529b5e8275006b995cff3bd13b54dd5e861601","unresolved":false,"context_lines":[{"line_number":746,"context_line":"            secgroup \u003d self._default_security_group(tenant_id)"},{"line_number":747,"context_line":"        if secgroup is None:"},{"line_number":748,"context_line":"            secgroup \u003d self.network_client.show_security_group(secgroup_id)"},{"line_number":749,"context_line":"        if not isinstance(secgroup, net_common.DeletableSecurityGroup):"},{"line_number":750,"context_line":"            secgroup \u003d net_common.DeletableSecurityGroup("},{"line_number":751,"context_line":"                client\u003dself.network_client,"},{"line_number":752,"context_line":"                **secgroup[\u0027security_group\u0027])"}],"source_content_type":"text/x-python","patch_set":17,"id":"AAAATn%2F%2B23k%3D","line":749,"updated":"2013-11-19 10:03:14.000000000","message":"Please remove this block.  The caller (who will be responsible for registering the object via set_resource) should be responsible for ensuring that the security group is deletable - it should not be the responsibility of a function whose primary function is to create a security group rule.","commit_id":"5baa67a9b88e78183b16fc91c9359f250a9349c3"},{"author":{"_account_id":8576,"name":"Yair Fried","email":"yfried@redhat.com","username":"yfried"},"change_message_id":"d06ce7c7ec069573b92b7b5ca7ea77bfb8897aa3","unresolved":false,"context_lines":[{"line_number":746,"context_line":"            secgroup \u003d self._default_security_group(tenant_id)"},{"line_number":747,"context_line":"        if secgroup is None:"},{"line_number":748,"context_line":"            secgroup \u003d self.network_client.show_security_group(secgroup_id)"},{"line_number":749,"context_line":"        if not isinstance(secgroup, net_common.DeletableSecurityGroup):"},{"line_number":750,"context_line":"            secgroup \u003d net_common.DeletableSecurityGroup("},{"line_number":751,"context_line":"                client\u003dself.network_client,"},{"line_number":752,"context_line":"                **secgroup[\u0027security_group\u0027])"}],"source_content_type":"text/x-python","patch_set":17,"id":"AAAATn%2F%2BySs%3D","line":749,"in_reply_to":"AAAATn%2F%2B23k%3D","updated":"2013-11-20 08:24:48.000000000","message":"Done","commit_id":"5baa67a9b88e78183b16fc91c9359f250a9349c3"}]}
