)]}'
{"patrole_tempest_plugin/tests/api/orchestration/rbac_base.py":[{"author":{"_account_id":23186,"name":"Felipe Monteiro","email":"felipe.carneiro.monteiro@gmail.com","username":"felipe.monteiro"},"change_message_id":"3b513c7fa2d8f87b8dd3a2c8ff27437102125695","unresolved":false,"context_lines":[{"line_number":1,"context_line":"# Copyright 2017 AT\u0026T Corporation."},{"line_number":2,"context_line":"#    Licensed under the Apache License, Version 2.0 (the \"License\"); you may"},{"line_number":3,"context_line":"#    not use this file except in compliance with the License. You may obtain"},{"line_number":4,"context_line":"#    a copy of the License at"}],"source_content_type":"text/x-python","patch_set":3,"id":"ba2be162_b7664027","line":1,"updated":"2017-03-02 04:21:19.000000000","message":"Please add a tearDown to the base class that does:\nrbac_utils.switch_role(self, switchToRbacRole\u003dFalse)\n\n(This isn\u0027t present in your test class as far as I can tell, but it\u0027s better to put it here, because if it goes in all test classes, it might as well go in the base test class; this is also a change that needs to be made for all test classes in another patchset.)","commit_id":"7358c13caf531cea46a38c87b8a36ced046c837c"},{"author":{"_account_id":24816,"name":"Anthony Bellino","email":"ab2434@att.com","username":"anthony.bellino"},"change_message_id":"ba02271a9ec0ce6702d942a7b2f3f42c49497fa7","unresolved":false,"context_lines":[{"line_number":1,"context_line":"# Copyright 2017 AT\u0026T Corporation."},{"line_number":2,"context_line":"#    Licensed under the Apache License, Version 2.0 (the \"License\"); you may"},{"line_number":3,"context_line":"#    not use this file except in compliance with the License. You may obtain"},{"line_number":4,"context_line":"#    a copy of the License at"}],"source_content_type":"text/x-python","patch_set":3,"id":"ba2be162_93bd94b9","line":1,"in_reply_to":"ba2be162_b7664027","updated":"2017-03-02 23:29:42.000000000","message":"fixed in next patch","commit_id":"7358c13caf531cea46a38c87b8a36ced046c837c"},{"author":{"_account_id":23186,"name":"Felipe Monteiro","email":"felipe.carneiro.monteiro@gmail.com","username":"felipe.monteiro"},"change_message_id":"3b513c7fa2d8f87b8dd3a2c8ff27437102125695","unresolved":false,"context_lines":[{"line_number":11,"context_line":"#    License for the specific language governing permissions and limitations"},{"line_number":12,"context_line":"#    under the License."},{"line_number":13,"context_line":""},{"line_number":14,"context_line":"from tempest import config"},{"line_number":15,"context_line":""},{"line_number":16,"context_line":"from tempest.api.orchestration import base as heat_base"},{"line_number":17,"context_line":""},{"line_number":18,"context_line":"CONF \u003d config.CONF"},{"line_number":19,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"ba2be162_771cc8c1","line":16,"range":{"start_line":14,"start_character":0,"end_line":16,"end_character":55},"updated":"2017-03-02 04:21:19.000000000","message":"May these imports be grouped together alphabetically -- i.e. without a space between them?","commit_id":"7358c13caf531cea46a38c87b8a36ced046c837c"},{"author":{"_account_id":24816,"name":"Anthony Bellino","email":"ab2434@att.com","username":"anthony.bellino"},"change_message_id":"ba02271a9ec0ce6702d942a7b2f3f42c49497fa7","unresolved":false,"context_lines":[{"line_number":11,"context_line":"#    License for the specific language governing permissions and limitations"},{"line_number":12,"context_line":"#    under the License."},{"line_number":13,"context_line":""},{"line_number":14,"context_line":"from tempest import config"},{"line_number":15,"context_line":""},{"line_number":16,"context_line":"from tempest.api.orchestration import base as heat_base"},{"line_number":17,"context_line":""},{"line_number":18,"context_line":"CONF \u003d config.CONF"},{"line_number":19,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"ba2be162_d3b38ce7","line":16,"range":{"start_line":14,"start_character":0,"end_line":16,"end_character":55},"in_reply_to":"ba2be162_771cc8c1","updated":"2017-03-02 23:29:42.000000000","message":"fixed in next patch","commit_id":"7358c13caf531cea46a38c87b8a36ced046c837c"},{"author":{"_account_id":23186,"name":"Felipe Monteiro","email":"felipe.carneiro.monteiro@gmail.com","username":"felipe.monteiro"},"change_message_id":"3b513c7fa2d8f87b8dd3a2c8ff27437102125695","unresolved":false,"context_lines":[{"line_number":28,"context_line":"        if not CONF.rbac.rbac_flag:"},{"line_number":29,"context_line":"            raise cls.skipException("},{"line_number":30,"context_line":"                \"%s skipped as RBAC Flag not enabled\" % cls.__name__)"},{"line_number":31,"context_line":"        if \u0027admin\u0027 not in CONF.auth.tempest_roles:"},{"line_number":32,"context_line":"            raise cls.skipException("},{"line_number":33,"context_line":"                \"%s skipped because tempest roles is not admin\" % cls.__name__)"},{"line_number":34,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"ba2be162_7745a8b1","line":31,"range":{"start_line":31,"start_character":8,"end_line":31,"end_character":49},"updated":"2017-03-02 04:21:19.000000000","message":"This should actually be if CONF.auth.tempest_roles !\u003d [\u0027admin\u0027] -- it\u0027s wrong in several other rbac_base.py files, which is something that needs to be fixed in a separate patchset.","commit_id":"7358c13caf531cea46a38c87b8a36ced046c837c"},{"author":{"_account_id":24816,"name":"Anthony Bellino","email":"ab2434@att.com","username":"anthony.bellino"},"change_message_id":"ba02271a9ec0ce6702d942a7b2f3f42c49497fa7","unresolved":false,"context_lines":[{"line_number":28,"context_line":"        if not CONF.rbac.rbac_flag:"},{"line_number":29,"context_line":"            raise cls.skipException("},{"line_number":30,"context_line":"                \"%s skipped as RBAC Flag not enabled\" % cls.__name__)"},{"line_number":31,"context_line":"        if \u0027admin\u0027 not in CONF.auth.tempest_roles:"},{"line_number":32,"context_line":"            raise cls.skipException("},{"line_number":33,"context_line":"                \"%s skipped because tempest roles is not admin\" % cls.__name__)"},{"line_number":34,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"ba2be162_13ca844e","line":31,"range":{"start_line":31,"start_character":8,"end_line":31,"end_character":49},"in_reply_to":"ba2be162_7745a8b1","updated":"2017-03-02 23:29:42.000000000","message":"fixed in next patch","commit_id":"7358c13caf531cea46a38c87b8a36ced046c837c"},{"author":{"_account_id":23186,"name":"Felipe Monteiro","email":"felipe.carneiro.monteiro@gmail.com","username":"felipe.monteiro"},"change_message_id":"eddd2a6cee337c406ced5f2438ae5175e04815f1","unresolved":false,"context_lines":[{"line_number":34,"context_line":"                \"%s skipped because tempest roles is not admin\" % cls.__name__)"},{"line_number":35,"context_line":""},{"line_number":36,"context_line":"    @classmethod"},{"line_number":37,"context_line":"    def setup_clients(cls):"},{"line_number":38,"context_line":"        super(BaseOrchestrationRbacTest, cls).setup_clients()"},{"line_number":39,"context_line":"        cls.auth_provider \u003d cls.os.auth_provider"},{"line_number":40,"context_line":"        cls.admin_client \u003d cls.os_adm.orchestration_client"}],"source_content_type":"text/x-python","patch_set":6,"id":"ba2be162_300af779","line":37,"range":{"start_line":37,"start_character":8,"end_line":37,"end_character":21},"updated":"2017-03-03 17:11:42.000000000","message":"You\u0027ll need to add a cls.rbac_utils \u003d rbac_utils() here","commit_id":"cddb1db05428591c8b7c062c65ff26f62003b33c"},{"author":{"_account_id":24816,"name":"Anthony Bellino","email":"ab2434@att.com","username":"anthony.bellino"},"change_message_id":"651ce03aab48f6538c9a8600a1573be51ca7504a","unresolved":false,"context_lines":[{"line_number":34,"context_line":"                \"%s skipped because tempest roles is not admin\" % cls.__name__)"},{"line_number":35,"context_line":""},{"line_number":36,"context_line":"    @classmethod"},{"line_number":37,"context_line":"    def setup_clients(cls):"},{"line_number":38,"context_line":"        super(BaseOrchestrationRbacTest, cls).setup_clients()"},{"line_number":39,"context_line":"        cls.auth_provider \u003d cls.os.auth_provider"},{"line_number":40,"context_line":"        cls.admin_client \u003d cls.os_adm.orchestration_client"}],"source_content_type":"text/x-python","patch_set":6,"id":"ba2be162_d0a51b47","line":37,"range":{"start_line":37,"start_character":8,"end_line":37,"end_character":21},"in_reply_to":"ba2be162_300af779","updated":"2017-03-03 17:36:20.000000000","message":"fixed in next patch","commit_id":"cddb1db05428591c8b7c062c65ff26f62003b33c"},{"author":{"_account_id":23186,"name":"Felipe Monteiro","email":"felipe.carneiro.monteiro@gmail.com","username":"felipe.monteiro"},"change_message_id":"eddd2a6cee337c406ced5f2438ae5175e04815f1","unresolved":false,"context_lines":[{"line_number":40,"context_line":"        cls.admin_client \u003d cls.os_adm.orchestration_client"},{"line_number":41,"context_line":""},{"line_number":42,"context_line":"    def tearDown(self):"},{"line_number":43,"context_line":"        rbac_utils.switch_role(self, switchToRbacRole\u003dFalse)"},{"line_number":44,"context_line":"        super(BaseOrchestrationRbacTest, self).tearDown()"}],"source_content_type":"text/x-python","patch_set":6,"id":"ba2be162_d01b5bc8","line":43,"range":{"start_line":43,"start_character":8,"end_line":43,"end_character":18},"updated":"2017-03-03 17:11:42.000000000","message":"self.rbac_utils","commit_id":"cddb1db05428591c8b7c062c65ff26f62003b33c"},{"author":{"_account_id":24816,"name":"Anthony Bellino","email":"ab2434@att.com","username":"anthony.bellino"},"change_message_id":"651ce03aab48f6538c9a8600a1573be51ca7504a","unresolved":false,"context_lines":[{"line_number":40,"context_line":"        cls.admin_client \u003d cls.os_adm.orchestration_client"},{"line_number":41,"context_line":""},{"line_number":42,"context_line":"    def tearDown(self):"},{"line_number":43,"context_line":"        rbac_utils.switch_role(self, switchToRbacRole\u003dFalse)"},{"line_number":44,"context_line":"        super(BaseOrchestrationRbacTest, self).tearDown()"}],"source_content_type":"text/x-python","patch_set":6,"id":"ba2be162_7079cfc7","line":43,"range":{"start_line":43,"start_character":8,"end_line":43,"end_character":18},"in_reply_to":"ba2be162_d01b5bc8","updated":"2017-03-03 17:36:20.000000000","message":"fixed in next patch","commit_id":"cddb1db05428591c8b7c062c65ff26f62003b33c"}],"patrole_tempest_plugin/tests/api/orchestration/test_soft_config_rbac.py":[{"author":{"_account_id":23185,"name":"Samantha Blanco","email":"samantha.blanco@att.com","username":"sblanco"},"change_message_id":"b4047512a723820653171f80fe0d740f38019339","unresolved":false,"context_lines":[{"line_number":1,"context_line":"# Copyright 2017 AT\u0026T Corp"},{"line_number":2,"context_line":"# All Rights Reserved."},{"line_number":3,"context_line":"#"},{"line_number":4,"context_line":"#    Licensed under the Apache License, Version 2.0 (the \"License\"); you may"}],"source_content_type":"text/x-python","patch_set":3,"id":"ba2be162_88a3be4e","line":1,"range":{"start_line":1,"start_character":22,"end_line":1,"end_character":26},"updated":"2017-03-02 14:51:37.000000000","message":"\"Corporation.\"","commit_id":"7358c13caf531cea46a38c87b8a36ced046c837c"},{"author":{"_account_id":24816,"name":"Anthony Bellino","email":"ab2434@att.com","username":"anthony.bellino"},"change_message_id":"ba02271a9ec0ce6702d942a7b2f3f42c49497fa7","unresolved":false,"context_lines":[{"line_number":1,"context_line":"# Copyright 2017 AT\u0026T Corp"},{"line_number":2,"context_line":"# All Rights Reserved."},{"line_number":3,"context_line":"#"},{"line_number":4,"context_line":"#    Licensed under the Apache License, Version 2.0 (the \"License\"); you may"}],"source_content_type":"text/x-python","patch_set":3,"id":"ba2be162_494c569e","line":1,"range":{"start_line":1,"start_character":22,"end_line":1,"end_character":26},"in_reply_to":"ba2be162_88a3be4e","updated":"2017-03-02 23:29:42.000000000","message":"fixed in next patch","commit_id":"7358c13caf531cea46a38c87b8a36ced046c837c"},{"author":{"_account_id":23186,"name":"Felipe Monteiro","email":"felipe.carneiro.monteiro@gmail.com","username":"felipe.monteiro"},"change_message_id":"3b513c7fa2d8f87b8dd3a2c8ff27437102125695","unresolved":false,"context_lines":[{"line_number":17,"context_line":"from patrole_tempest_plugin.rbac_utils import rbac_utils"},{"line_number":18,"context_line":"from patrole_tempest_plugin.tests.api.orchestration import rbac_base"},{"line_number":19,"context_line":""},{"line_number":20,"context_line":"from tempest import config"},{"line_number":21,"context_line":""},{"line_number":22,"context_line":"from tempest.common.utils import data_utils"},{"line_number":23,"context_line":"from tempest.lib import decorators"}],"source_content_type":"text/x-python","patch_set":3,"id":"ba2be162_49b00c44","line":20,"range":{"start_line":20,"start_character":0,"end_line":20,"end_character":26},"updated":"2017-03-02 04:21:19.000000000","message":"I don\u0027t think this is used, except in CONF \u003d config.CONF.","commit_id":"7358c13caf531cea46a38c87b8a36ced046c837c"},{"author":{"_account_id":24816,"name":"Anthony Bellino","email":"ab2434@att.com","username":"anthony.bellino"},"change_message_id":"ba02271a9ec0ce6702d942a7b2f3f42c49497fa7","unresolved":false,"context_lines":[{"line_number":17,"context_line":"from patrole_tempest_plugin.rbac_utils import rbac_utils"},{"line_number":18,"context_line":"from patrole_tempest_plugin.tests.api.orchestration import rbac_base"},{"line_number":19,"context_line":""},{"line_number":20,"context_line":"from tempest import config"},{"line_number":21,"context_line":""},{"line_number":22,"context_line":"from tempest.common.utils import data_utils"},{"line_number":23,"context_line":"from tempest.lib import decorators"}],"source_content_type":"text/x-python","patch_set":3,"id":"ba2be162_49337614","line":20,"range":{"start_line":20,"start_character":0,"end_line":20,"end_character":26},"in_reply_to":"ba2be162_49b00c44","updated":"2017-03-02 23:29:42.000000000","message":"fixed in next patch","commit_id":"7358c13caf531cea46a38c87b8a36ced046c837c"},{"author":{"_account_id":23185,"name":"Samantha Blanco","email":"samantha.blanco@att.com","username":"sblanco"},"change_message_id":"b4047512a723820653171f80fe0d740f38019339","unresolved":false,"context_lines":[{"line_number":17,"context_line":"from patrole_tempest_plugin.rbac_utils import rbac_utils"},{"line_number":18,"context_line":"from patrole_tempest_plugin.tests.api.orchestration import rbac_base"},{"line_number":19,"context_line":""},{"line_number":20,"context_line":"from tempest import config"},{"line_number":21,"context_line":""},{"line_number":22,"context_line":"from tempest.common.utils import data_utils"},{"line_number":23,"context_line":"from tempest.lib import decorators"},{"line_number":24,"context_line":""},{"line_number":25,"context_line":""},{"line_number":26,"context_line":"CONF \u003d config.CONF"}],"source_content_type":"text/x-python","patch_set":3,"id":"ba2be162_c8acd637","line":23,"range":{"start_line":20,"start_character":0,"end_line":23,"end_character":34},"updated":"2017-03-02 14:51:37.000000000","message":"Tempest imports should be grouped together and placed above Patrole imports: https://docs.openstack.org/developer/hacking/#imports","commit_id":"7358c13caf531cea46a38c87b8a36ced046c837c"},{"author":{"_account_id":24816,"name":"Anthony Bellino","email":"ab2434@att.com","username":"anthony.bellino"},"change_message_id":"ba02271a9ec0ce6702d942a7b2f3f42c49497fa7","unresolved":false,"context_lines":[{"line_number":17,"context_line":"from patrole_tempest_plugin.rbac_utils import rbac_utils"},{"line_number":18,"context_line":"from patrole_tempest_plugin.tests.api.orchestration import rbac_base"},{"line_number":19,"context_line":""},{"line_number":20,"context_line":"from tempest import config"},{"line_number":21,"context_line":""},{"line_number":22,"context_line":"from tempest.common.utils import data_utils"},{"line_number":23,"context_line":"from tempest.lib import decorators"},{"line_number":24,"context_line":""},{"line_number":25,"context_line":""},{"line_number":26,"context_line":"CONF \u003d config.CONF"}],"source_content_type":"text/x-python","patch_set":3,"id":"ba2be162_a93eb2d7","line":23,"range":{"start_line":20,"start_character":0,"end_line":23,"end_character":34},"in_reply_to":"ba2be162_c8acd637","updated":"2017-03-02 23:29:42.000000000","message":"fixed in next patch","commit_id":"7358c13caf531cea46a38c87b8a36ced046c837c"},{"author":{"_account_id":23186,"name":"Felipe Monteiro","email":"felipe.carneiro.monteiro@gmail.com","username":"felipe.monteiro"},"change_message_id":"3b513c7fa2d8f87b8dd3a2c8ff27437102125695","unresolved":false,"context_lines":[{"line_number":22,"context_line":"from tempest.common.utils import data_utils"},{"line_number":23,"context_line":"from tempest.lib import decorators"},{"line_number":24,"context_line":""},{"line_number":25,"context_line":""},{"line_number":26,"context_line":"CONF \u003d config.CONF"},{"line_number":27,"context_line":""},{"line_number":28,"context_line":""},{"line_number":29,"context_line":"class TestRbacSoftwareConfig(rbac_base.BaseOrchestrationRbacTest):"}],"source_content_type":"text/x-python","patch_set":3,"id":"ba2be162_b77c80ec","line":26,"range":{"start_line":25,"start_character":0,"end_line":26,"end_character":18},"updated":"2017-03-02 04:21:19.000000000","message":"Extra space above and I don\u0027t think this is used.","commit_id":"7358c13caf531cea46a38c87b8a36ced046c837c"},{"author":{"_account_id":24816,"name":"Anthony Bellino","email":"ab2434@att.com","username":"anthony.bellino"},"change_message_id":"ba02271a9ec0ce6702d942a7b2f3f42c49497fa7","unresolved":false,"context_lines":[{"line_number":22,"context_line":"from tempest.common.utils import data_utils"},{"line_number":23,"context_line":"from tempest.lib import decorators"},{"line_number":24,"context_line":""},{"line_number":25,"context_line":""},{"line_number":26,"context_line":"CONF \u003d config.CONF"},{"line_number":27,"context_line":""},{"line_number":28,"context_line":""},{"line_number":29,"context_line":"class TestRbacSoftwareConfig(rbac_base.BaseOrchestrationRbacTest):"}],"source_content_type":"text/x-python","patch_set":3,"id":"ba2be162_e9242ac6","line":26,"range":{"start_line":25,"start_character":0,"end_line":26,"end_character":18},"in_reply_to":"ba2be162_b77c80ec","updated":"2017-03-02 23:29:42.000000000","message":"fixed in next patch","commit_id":"7358c13caf531cea46a38c87b8a36ced046c837c"},{"author":{"_account_id":23186,"name":"Felipe Monteiro","email":"felipe.carneiro.monteiro@gmail.com","username":"felipe.monteiro"},"change_message_id":"3b513c7fa2d8f87b8dd3a2c8ff27437102125695","unresolved":false,"context_lines":[{"line_number":35,"context_line":"        self.configs.append(self._config_create(\u0027b\u0027))"},{"line_number":36,"context_line":"        self._deployment_create(self.configs[0][\u0027id\u0027])"},{"line_number":37,"context_line":""},{"line_number":38,"context_line":"    @rbac_rule_validation.action(service\u003d\"Heat\","},{"line_number":39,"context_line":"                                 rule\u003d\"software_configs:show\")"},{"line_number":40,"context_line":"    @decorators.idempotent_id(\u0027b2e7c98c-e17b-4f37-82f3-5d21eff86e79\u0027)"},{"line_number":41,"context_line":"    def test_get_software_config(self):"}],"source_content_type":"text/x-python","patch_set":3,"id":"ba2be162_b763a040","line":38,"range":{"start_line":38,"start_character":42,"end_line":38,"end_character":46},"updated":"2017-03-02 04:21:19.000000000","message":"Technically it doesn\u0027t matter whether this is capitalized as the framework will coerce it to lower-case, but the convention thus far has been to make it lower-case.","commit_id":"7358c13caf531cea46a38c87b8a36ced046c837c"},{"author":{"_account_id":24816,"name":"Anthony Bellino","email":"ab2434@att.com","username":"anthony.bellino"},"change_message_id":"ba02271a9ec0ce6702d942a7b2f3f42c49497fa7","unresolved":false,"context_lines":[{"line_number":35,"context_line":"        self.configs.append(self._config_create(\u0027b\u0027))"},{"line_number":36,"context_line":"        self._deployment_create(self.configs[0][\u0027id\u0027])"},{"line_number":37,"context_line":""},{"line_number":38,"context_line":"    @rbac_rule_validation.action(service\u003d\"Heat\","},{"line_number":39,"context_line":"                                 rule\u003d\"software_configs:show\")"},{"line_number":40,"context_line":"    @decorators.idempotent_id(\u0027b2e7c98c-e17b-4f37-82f3-5d21eff86e79\u0027)"},{"line_number":41,"context_line":"    def test_get_software_config(self):"}],"source_content_type":"text/x-python","patch_set":3,"id":"ba2be162_691f5a6c","line":38,"range":{"start_line":38,"start_character":42,"end_line":38,"end_character":46},"in_reply_to":"ba2be162_b763a040","updated":"2017-03-02 23:29:42.000000000","message":"fixed in next patch","commit_id":"7358c13caf531cea46a38c87b8a36ced046c837c"},{"author":{"_account_id":23186,"name":"Felipe Monteiro","email":"felipe.carneiro.monteiro@gmail.com","username":"felipe.monteiro"},"change_message_id":"3b513c7fa2d8f87b8dd3a2c8ff27437102125695","unresolved":false,"context_lines":[{"line_number":40,"context_line":"    @decorators.idempotent_id(\u0027b2e7c98c-e17b-4f37-82f3-5d21eff86e79\u0027)"},{"line_number":41,"context_line":"    def test_get_software_config(self):"},{"line_number":42,"context_line":"        rbac_utils.switch_role(self, switchToRbacRole\u003dTrue)"},{"line_number":43,"context_line":"        for conf in self.configs:"},{"line_number":44,"context_line":"            api_config \u003d self.client.show_software_config(conf[\u0027id\u0027])"},{"line_number":45,"context_line":"            self._validate_config(conf, api_config)"},{"line_number":46,"context_line":""},{"line_number":47,"context_line":"    @rbac_rule_validation.action(service\u003d\"Heat\","},{"line_number":48,"context_line":"                                 rule\u003d\"software_deployments:metadata\")"}],"source_content_type":"text/x-python","patch_set":3,"id":"ba2be162_17dc6ce3","line":45,"range":{"start_line":43,"start_character":8,"end_line":45,"end_character":51},"updated":"2017-03-02 04:21:19.000000000","message":"Is there an absolute need to do this twice? It should only be called once for RBAC testing.","commit_id":"7358c13caf531cea46a38c87b8a36ced046c837c"},{"author":{"_account_id":24816,"name":"Anthony Bellino","email":"ab2434@att.com","username":"anthony.bellino"},"change_message_id":"ba02271a9ec0ce6702d942a7b2f3f42c49497fa7","unresolved":false,"context_lines":[{"line_number":40,"context_line":"    @decorators.idempotent_id(\u0027b2e7c98c-e17b-4f37-82f3-5d21eff86e79\u0027)"},{"line_number":41,"context_line":"    def test_get_software_config(self):"},{"line_number":42,"context_line":"        rbac_utils.switch_role(self, switchToRbacRole\u003dTrue)"},{"line_number":43,"context_line":"        for conf in self.configs:"},{"line_number":44,"context_line":"            api_config \u003d self.client.show_software_config(conf[\u0027id\u0027])"},{"line_number":45,"context_line":"            self._validate_config(conf, api_config)"},{"line_number":46,"context_line":""},{"line_number":47,"context_line":"    @rbac_rule_validation.action(service\u003d\"Heat\","},{"line_number":48,"context_line":"                                 rule\u003d\"software_deployments:metadata\")"}],"source_content_type":"text/x-python","patch_set":3,"id":"ba2be162_2902c20b","line":45,"range":{"start_line":43,"start_character":8,"end_line":45,"end_character":51},"in_reply_to":"ba2be162_17dc6ce3","updated":"2017-03-02 23:29:42.000000000","message":"no technical reason to do it twice. fixed in next patch","commit_id":"7358c13caf531cea46a38c87b8a36ced046c837c"},{"author":{"_account_id":23186,"name":"Felipe Monteiro","email":"felipe.carneiro.monteiro@gmail.com","username":"felipe.monteiro"},"change_message_id":"3b513c7fa2d8f87b8dd3a2c8ff27437102125695","unresolved":false,"context_lines":[{"line_number":52,"context_line":"        metadata \u003d self.client.\\"},{"line_number":53,"context_line":"            show_software_deployment_metadata(self.server_id)"},{"line_number":54,"context_line":"        conf_ids \u003d [conf[\u0027id\u0027] for conf in metadata[\u0027metadata\u0027]]"},{"line_number":55,"context_line":"        self.assertIn(self.configs[0][\u0027id\u0027], conf_ids)"},{"line_number":56,"context_line":""},{"line_number":57,"context_line":"    @rbac_rule_validation.action(service\u003d\"Heat\","},{"line_number":58,"context_line":"                                 rule\u003d\"software_deployments:index\")"}],"source_content_type":"text/x-python","patch_set":3,"id":"ba2be162_579424e1","line":55,"range":{"start_line":55,"start_character":8,"end_line":55,"end_character":54},"updated":"2017-03-02 04:21:19.000000000","message":"These assertions aren\u0027t needed, as Tempest already tests all this. It\u0027s a duplication of efforts -- and if the API or whatever changes, a change needs to be made here and in Tempest.","commit_id":"7358c13caf531cea46a38c87b8a36ced046c837c"},{"author":{"_account_id":24816,"name":"Anthony Bellino","email":"ab2434@att.com","username":"anthony.bellino"},"change_message_id":"ba02271a9ec0ce6702d942a7b2f3f42c49497fa7","unresolved":false,"context_lines":[{"line_number":52,"context_line":"        metadata \u003d self.client.\\"},{"line_number":53,"context_line":"            show_software_deployment_metadata(self.server_id)"},{"line_number":54,"context_line":"        conf_ids \u003d [conf[\u0027id\u0027] for conf in metadata[\u0027metadata\u0027]]"},{"line_number":55,"context_line":"        self.assertIn(self.configs[0][\u0027id\u0027], conf_ids)"},{"line_number":56,"context_line":""},{"line_number":57,"context_line":"    @rbac_rule_validation.action(service\u003d\"Heat\","},{"line_number":58,"context_line":"                                 rule\u003d\"software_deployments:index\")"}],"source_content_type":"text/x-python","patch_set":3,"id":"ba2be162_04b88329","line":55,"range":{"start_line":55,"start_character":8,"end_line":55,"end_character":54},"in_reply_to":"ba2be162_579424e1","updated":"2017-03-02 23:29:42.000000000","message":"fixed in next patch","commit_id":"7358c13caf531cea46a38c87b8a36ced046c837c"},{"author":{"_account_id":23186,"name":"Felipe Monteiro","email":"felipe.carneiro.monteiro@gmail.com","username":"felipe.monteiro"},"change_message_id":"3b513c7fa2d8f87b8dd3a2c8ff27437102125695","unresolved":false,"context_lines":[{"line_number":60,"context_line":"    def test_get_deployment_list(self):"},{"line_number":61,"context_line":"        rbac_utils.switch_role(self, switchToRbacRole\u003dTrue)"},{"line_number":62,"context_line":"        deploy_list \u003d self.client.list_software_deployments()"},{"line_number":63,"context_line":"        deploy_ids \u003d [deploy[\u0027id\u0027] for deploy in"},{"line_number":64,"context_line":"                      deploy_list[\u0027software_deployments\u0027]]"},{"line_number":65,"context_line":"        self.assertIn(self.deployment_id, deploy_ids)"},{"line_number":66,"context_line":""},{"line_number":67,"context_line":"    @rbac_rule_validation.action(service\u003d\"Heat\","},{"line_number":68,"context_line":"                                 rule\u003d\"software_deployments:show\")"}],"source_content_type":"text/x-python","patch_set":3,"id":"ba2be162_57826495","line":65,"range":{"start_line":63,"start_character":8,"end_line":65,"end_character":53},"updated":"2017-03-02 04:21:19.000000000","message":"Ditto.","commit_id":"7358c13caf531cea46a38c87b8a36ced046c837c"},{"author":{"_account_id":24816,"name":"Anthony Bellino","email":"ab2434@att.com","username":"anthony.bellino"},"change_message_id":"ba02271a9ec0ce6702d942a7b2f3f42c49497fa7","unresolved":false,"context_lines":[{"line_number":60,"context_line":"    def test_get_deployment_list(self):"},{"line_number":61,"context_line":"        rbac_utils.switch_role(self, switchToRbacRole\u003dTrue)"},{"line_number":62,"context_line":"        deploy_list \u003d self.client.list_software_deployments()"},{"line_number":63,"context_line":"        deploy_ids \u003d [deploy[\u0027id\u0027] for deploy in"},{"line_number":64,"context_line":"                      deploy_list[\u0027software_deployments\u0027]]"},{"line_number":65,"context_line":"        self.assertIn(self.deployment_id, deploy_ids)"},{"line_number":66,"context_line":""},{"line_number":67,"context_line":"    @rbac_rule_validation.action(service\u003d\"Heat\","},{"line_number":68,"context_line":"                                 rule\u003d\"software_deployments:show\")"}],"source_content_type":"text/x-python","patch_set":3,"id":"ba2be162_c4982bc3","line":65,"range":{"start_line":63,"start_character":8,"end_line":65,"end_character":53},"in_reply_to":"ba2be162_57826495","updated":"2017-03-02 23:29:42.000000000","message":"fixed in next patch","commit_id":"7358c13caf531cea46a38c87b8a36ced046c837c"},{"author":{"_account_id":23186,"name":"Felipe Monteiro","email":"felipe.carneiro.monteiro@gmail.com","username":"felipe.monteiro"},"change_message_id":"3b513c7fa2d8f87b8dd3a2c8ff27437102125695","unresolved":false,"context_lines":[{"line_number":68,"context_line":"                                 rule\u003d\"software_deployments:show\")"},{"line_number":69,"context_line":"    @decorators.idempotent_id(\u0027d4e627bc-88a3-4189-8092-151f22ed989d\u0027)"},{"line_number":70,"context_line":"    def test_software_deployment_validate(self):"},{"line_number":71,"context_line":"        rbac_utils.switch_role(self, switchToRbacRole\u003dTrue)"},{"line_number":72,"context_line":"        # Asserting that all fields were created"},{"line_number":73,"context_line":"        self.assert_fields_in_dict(self.deployment[\u0027software_deployment\u0027],"},{"line_number":74,"context_line":"                                   \u0027action\u0027, \u0027config_id\u0027,"}],"source_content_type":"text/x-python","patch_set":3,"id":"ba2be162_d7449475","line":71,"range":{"start_line":71,"start_character":8,"end_line":71,"end_character":59},"updated":"2017-03-02 04:21:19.000000000","message":"The _deployment_create is only present in setUp; it belongs here in order for the policy action to be enforced. However, only include\n\nself.deployment \u003d self.client.create_software_deploy(...)\n\nhere; do server creation, etc., above this.","commit_id":"7358c13caf531cea46a38c87b8a36ced046c837c"},{"author":{"_account_id":23186,"name":"Felipe Monteiro","email":"felipe.carneiro.monteiro@gmail.com","username":"felipe.monteiro"},"change_message_id":"9b8ee594fff8341632dc253868f9079ac41feb55","unresolved":false,"context_lines":[{"line_number":68,"context_line":"                                 rule\u003d\"software_deployments:show\")"},{"line_number":69,"context_line":"    @decorators.idempotent_id(\u0027d4e627bc-88a3-4189-8092-151f22ed989d\u0027)"},{"line_number":70,"context_line":"    def test_software_deployment_validate(self):"},{"line_number":71,"context_line":"        rbac_utils.switch_role(self, switchToRbacRole\u003dTrue)"},{"line_number":72,"context_line":"        # Asserting that all fields were created"},{"line_number":73,"context_line":"        self.assert_fields_in_dict(self.deployment[\u0027software_deployment\u0027],"},{"line_number":74,"context_line":"                                   \u0027action\u0027, \u0027config_id\u0027,"}],"source_content_type":"text/x-python","patch_set":3,"id":"ba2be162_d96f2d29","line":71,"range":{"start_line":71,"start_character":8,"end_line":71,"end_character":59},"in_reply_to":"ba2be162_c4410bab","updated":"2017-03-03 00:37:53.000000000","message":"Fair point. I now see that the API call for showing the deployment is in _validate_deployment. Because the assertions aren\u0027t needed in _validate_deployment, may it be renamed to _show_deployment? But if you only need to call _show_deployment here, then just add the API call here and get rid of the helper function.","commit_id":"7358c13caf531cea46a38c87b8a36ced046c837c"},{"author":{"_account_id":24816,"name":"Anthony Bellino","email":"ab2434@att.com","username":"anthony.bellino"},"change_message_id":"ba02271a9ec0ce6702d942a7b2f3f42c49497fa7","unresolved":false,"context_lines":[{"line_number":68,"context_line":"                                 rule\u003d\"software_deployments:show\")"},{"line_number":69,"context_line":"    @decorators.idempotent_id(\u0027d4e627bc-88a3-4189-8092-151f22ed989d\u0027)"},{"line_number":70,"context_line":"    def test_software_deployment_validate(self):"},{"line_number":71,"context_line":"        rbac_utils.switch_role(self, switchToRbacRole\u003dTrue)"},{"line_number":72,"context_line":"        # Asserting that all fields were created"},{"line_number":73,"context_line":"        self.assert_fields_in_dict(self.deployment[\u0027software_deployment\u0027],"},{"line_number":74,"context_line":"                                   \u0027action\u0027, \u0027config_id\u0027,"}],"source_content_type":"text/x-python","patch_set":3,"id":"ba2be162_c4410bab","line":71,"range":{"start_line":71,"start_character":8,"end_line":71,"end_character":59},"in_reply_to":"ba2be162_d7449475","updated":"2017-03-02 23:29:42.000000000","message":"I don\u0027t exactly agree. the action being tested here is to test the rule \"software_deployments:show\".  which was created in setup.","commit_id":"7358c13caf531cea46a38c87b8a36ced046c837c"},{"author":{"_account_id":23186,"name":"Felipe Monteiro","email":"felipe.carneiro.monteiro@gmail.com","username":"felipe.monteiro"},"change_message_id":"3b513c7fa2d8f87b8dd3a2c8ff27437102125695","unresolved":false,"context_lines":[{"line_number":69,"context_line":"    @decorators.idempotent_id(\u0027d4e627bc-88a3-4189-8092-151f22ed989d\u0027)"},{"line_number":70,"context_line":"    def test_software_deployment_validate(self):"},{"line_number":71,"context_line":"        rbac_utils.switch_role(self, switchToRbacRole\u003dTrue)"},{"line_number":72,"context_line":"        # Asserting that all fields were created"},{"line_number":73,"context_line":"        self.assert_fields_in_dict(self.deployment[\u0027software_deployment\u0027],"},{"line_number":74,"context_line":"                                   \u0027action\u0027, \u0027config_id\u0027,"},{"line_number":75,"context_line":"                                   \u0027id\u0027, \u0027input_values\u0027, \u0027output_values\u0027,"},{"line_number":76,"context_line":"                                   \u0027server_id\u0027, \u0027status\u0027,"},{"line_number":77,"context_line":"                                   \u0027status_reason\u0027)"},{"line_number":78,"context_line":"        # Testing get for this deployment and verifying parameters"},{"line_number":79,"context_line":"        self._validate_deployment(self.action, self.status,"},{"line_number":80,"context_line":"                                  self.status_reason,"},{"line_number":81,"context_line":"                                  self.configs[0][\u0027id\u0027])"},{"line_number":82,"context_line":""},{"line_number":83,"context_line":"    @rbac_rule_validation.action(service\u003d\"Heat\","},{"line_number":84,"context_line":"                                 rule\u003d\"software_deployments:update\")"}],"source_content_type":"text/x-python","patch_set":3,"id":"ba2be162_974a1c82","line":81,"range":{"start_line":72,"start_character":8,"end_line":81,"end_character":56},"updated":"2017-03-02 04:21:19.000000000","message":"None of this is needed.","commit_id":"7358c13caf531cea46a38c87b8a36ced046c837c"},{"author":{"_account_id":24816,"name":"Anthony Bellino","email":"ab2434@att.com","username":"anthony.bellino"},"change_message_id":"ba02271a9ec0ce6702d942a7b2f3f42c49497fa7","unresolved":false,"context_lines":[{"line_number":69,"context_line":"    @decorators.idempotent_id(\u0027d4e627bc-88a3-4189-8092-151f22ed989d\u0027)"},{"line_number":70,"context_line":"    def test_software_deployment_validate(self):"},{"line_number":71,"context_line":"        rbac_utils.switch_role(self, switchToRbacRole\u003dTrue)"},{"line_number":72,"context_line":"        # Asserting that all fields were created"},{"line_number":73,"context_line":"        self.assert_fields_in_dict(self.deployment[\u0027software_deployment\u0027],"},{"line_number":74,"context_line":"                                   \u0027action\u0027, \u0027config_id\u0027,"},{"line_number":75,"context_line":"                                   \u0027id\u0027, \u0027input_values\u0027, \u0027output_values\u0027,"},{"line_number":76,"context_line":"                                   \u0027server_id\u0027, \u0027status\u0027,"},{"line_number":77,"context_line":"                                   \u0027status_reason\u0027)"},{"line_number":78,"context_line":"        # Testing get for this deployment and verifying parameters"},{"line_number":79,"context_line":"        self._validate_deployment(self.action, self.status,"},{"line_number":80,"context_line":"                                  self.status_reason,"},{"line_number":81,"context_line":"                                  self.configs[0][\u0027id\u0027])"},{"line_number":82,"context_line":""},{"line_number":83,"context_line":"    @rbac_rule_validation.action(service\u003d\"Heat\","},{"line_number":84,"context_line":"                                 rule\u003d\"software_deployments:update\")"}],"source_content_type":"text/x-python","patch_set":3,"id":"ba2be162_248f47cd","line":81,"range":{"start_line":72,"start_character":8,"end_line":81,"end_character":56},"in_reply_to":"ba2be162_974a1c82","updated":"2017-03-02 23:29:42.000000000","message":"partial fix , removing the assert ref.","commit_id":"7358c13caf531cea46a38c87b8a36ced046c837c"},{"author":{"_account_id":23186,"name":"Felipe Monteiro","email":"felipe.carneiro.monteiro@gmail.com","username":"felipe.monteiro"},"change_message_id":"3b513c7fa2d8f87b8dd3a2c8ff27437102125695","unresolved":false,"context_lines":[{"line_number":85,"context_line":"    @decorators.idempotent_id(\u002790e8958c-6fa7-4515-b6d7-6d6952979f8c\u0027)"},{"line_number":86,"context_line":"    def test_software_deployment_update(self):"},{"line_number":87,"context_line":"        rbac_utils.switch_role(self, switchToRbacRole\u003dTrue)"},{"line_number":88,"context_line":"        metadata \u003d self.client.\\"},{"line_number":89,"context_line":"            show_software_deployment_metadata(self.server_id)"},{"line_number":90,"context_line":"        # Updating values without changing the configuration ID"},{"line_number":91,"context_line":"        new_action \u003d \u0027ACTION_1\u0027"},{"line_number":92,"context_line":"        new_status \u003d \u0027STATUS_1\u0027"}],"source_content_type":"text/x-python","patch_set":3,"id":"ba2be162_7754c820","line":89,"range":{"start_line":88,"start_character":8,"end_line":89,"end_character":61},"updated":"2017-03-02 04:21:19.000000000","message":"I doubt this is really needed; if it is, place it above the switch_role function call.","commit_id":"7358c13caf531cea46a38c87b8a36ced046c837c"},{"author":{"_account_id":24816,"name":"Anthony Bellino","email":"ab2434@att.com","username":"anthony.bellino"},"change_message_id":"ba02271a9ec0ce6702d942a7b2f3f42c49497fa7","unresolved":false,"context_lines":[{"line_number":85,"context_line":"    @decorators.idempotent_id(\u002790e8958c-6fa7-4515-b6d7-6d6952979f8c\u0027)"},{"line_number":86,"context_line":"    def test_software_deployment_update(self):"},{"line_number":87,"context_line":"        rbac_utils.switch_role(self, switchToRbacRole\u003dTrue)"},{"line_number":88,"context_line":"        metadata \u003d self.client.\\"},{"line_number":89,"context_line":"            show_software_deployment_metadata(self.server_id)"},{"line_number":90,"context_line":"        # Updating values without changing the configuration ID"},{"line_number":91,"context_line":"        new_action \u003d \u0027ACTION_1\u0027"},{"line_number":92,"context_line":"        new_status \u003d \u0027STATUS_1\u0027"}],"source_content_type":"text/x-python","patch_set":3,"id":"ba2be162_2af0f1c8","line":89,"range":{"start_line":88,"start_character":8,"end_line":89,"end_character":61},"in_reply_to":"ba2be162_7754c820","updated":"2017-03-02 23:29:42.000000000","message":"removed in next patch","commit_id":"7358c13caf531cea46a38c87b8a36ced046c837c"},{"author":{"_account_id":23186,"name":"Felipe Monteiro","email":"felipe.carneiro.monteiro@gmail.com","username":"felipe.monteiro"},"change_message_id":"3b513c7fa2d8f87b8dd3a2c8ff27437102125695","unresolved":false,"context_lines":[{"line_number":88,"context_line":"        metadata \u003d self.client.\\"},{"line_number":89,"context_line":"            show_software_deployment_metadata(self.server_id)"},{"line_number":90,"context_line":"        # Updating values without changing the configuration ID"},{"line_number":91,"context_line":"        new_action \u003d \u0027ACTION_1\u0027"},{"line_number":92,"context_line":"        new_status \u003d \u0027STATUS_1\u0027"},{"line_number":93,"context_line":"        new_reason \u003d \u0027REASON_1\u0027"},{"line_number":94,"context_line":"        self.client.update_software_deploy(self.deployment_id,"},{"line_number":95,"context_line":"                                           self.server_id,"},{"line_number":96,"context_line":"                                           self.configs[0][\u0027id\u0027],"}],"source_content_type":"text/x-python","patch_set":3,"id":"ba2be162_17262cce","line":93,"range":{"start_line":91,"start_character":8,"end_line":93,"end_character":31},"updated":"2017-03-02 04:21:19.000000000","message":"Unless this type of formatting is needed, better to use data_utils.rand_name(\u0027reason\u0027), etc.","commit_id":"7358c13caf531cea46a38c87b8a36ced046c837c"},{"author":{"_account_id":24816,"name":"Anthony Bellino","email":"ab2434@att.com","username":"anthony.bellino"},"change_message_id":"ba02271a9ec0ce6702d942a7b2f3f42c49497fa7","unresolved":false,"context_lines":[{"line_number":88,"context_line":"        metadata \u003d self.client.\\"},{"line_number":89,"context_line":"            show_software_deployment_metadata(self.server_id)"},{"line_number":90,"context_line":"        # Updating values without changing the configuration ID"},{"line_number":91,"context_line":"        new_action \u003d \u0027ACTION_1\u0027"},{"line_number":92,"context_line":"        new_status \u003d \u0027STATUS_1\u0027"},{"line_number":93,"context_line":"        new_reason \u003d \u0027REASON_1\u0027"},{"line_number":94,"context_line":"        self.client.update_software_deploy(self.deployment_id,"},{"line_number":95,"context_line":"                                           self.server_id,"},{"line_number":96,"context_line":"                                           self.configs[0][\u0027id\u0027],"}],"source_content_type":"text/x-python","patch_set":3,"id":"ba2be162_ad587b8b","line":93,"range":{"start_line":91,"start_character":8,"end_line":93,"end_character":31},"in_reply_to":"ba2be162_17262cce","updated":"2017-03-02 23:29:42.000000000","message":"fixed in next patch","commit_id":"7358c13caf531cea46a38c87b8a36ced046c837c"},{"author":{"_account_id":23186,"name":"Felipe Monteiro","email":"felipe.carneiro.monteiro@gmail.com","username":"felipe.monteiro"},"change_message_id":"3b513c7fa2d8f87b8dd3a2c8ff27437102125695","unresolved":false,"context_lines":[{"line_number":99,"context_line":"                                           self.output_values,"},{"line_number":100,"context_line":"                                           new_reason,"},{"line_number":101,"context_line":"                                           self.signal_transport)"},{"line_number":102,"context_line":"        # Verifying get and that the deployment was updated as expected"},{"line_number":103,"context_line":"        self._validate_deployment(new_action, new_status,"},{"line_number":104,"context_line":"                                  new_reason, self.configs[0][\u0027id\u0027])"},{"line_number":105,"context_line":"        # Metadata should not be changed at this point"},{"line_number":106,"context_line":"        test_metadata \u003d self.client.\\"},{"line_number":107,"context_line":"            show_software_deployment_metadata(self.server_id)"},{"line_number":108,"context_line":"        for key in metadata[\u0027metadata\u0027][0]:"},{"line_number":109,"context_line":"            self.assertEqual(metadata[\u0027metadata\u0027][0][key],"},{"line_number":110,"context_line":"                             test_metadata[\u0027metadata\u0027][0][key])"},{"line_number":111,"context_line":""},{"line_number":112,"context_line":"    @rbac_rule_validation.action(service\u003d\"Heat\","},{"line_number":113,"context_line":"                                 rule\u003d\"software_deployments:create\")"}],"source_content_type":"text/x-python","patch_set":3,"id":"ba2be162_b73480fb","line":110,"range":{"start_line":102,"start_character":0,"end_line":110,"end_character":63},"updated":"2017-03-02 04:21:19.000000000","message":"Not needed.","commit_id":"7358c13caf531cea46a38c87b8a36ced046c837c"},{"author":{"_account_id":24816,"name":"Anthony Bellino","email":"ab2434@att.com","username":"anthony.bellino"},"change_message_id":"ba02271a9ec0ce6702d942a7b2f3f42c49497fa7","unresolved":false,"context_lines":[{"line_number":99,"context_line":"                                           self.output_values,"},{"line_number":100,"context_line":"                                           new_reason,"},{"line_number":101,"context_line":"                                           self.signal_transport)"},{"line_number":102,"context_line":"        # Verifying get and that the deployment was updated as expected"},{"line_number":103,"context_line":"        self._validate_deployment(new_action, new_status,"},{"line_number":104,"context_line":"                                  new_reason, self.configs[0][\u0027id\u0027])"},{"line_number":105,"context_line":"        # Metadata should not be changed at this point"},{"line_number":106,"context_line":"        test_metadata \u003d self.client.\\"},{"line_number":107,"context_line":"            show_software_deployment_metadata(self.server_id)"},{"line_number":108,"context_line":"        for key in metadata[\u0027metadata\u0027][0]:"},{"line_number":109,"context_line":"            self.assertEqual(metadata[\u0027metadata\u0027][0][key],"},{"line_number":110,"context_line":"                             test_metadata[\u0027metadata\u0027][0][key])"},{"line_number":111,"context_line":""},{"line_number":112,"context_line":"    @rbac_rule_validation.action(service\u003d\"Heat\","},{"line_number":113,"context_line":"                                 rule\u003d\"software_deployments:create\")"}],"source_content_type":"text/x-python","patch_set":3,"id":"ba2be162_0acecd81","line":110,"range":{"start_line":102,"start_character":0,"end_line":110,"end_character":63},"in_reply_to":"ba2be162_b73480fb","updated":"2017-03-02 23:29:42.000000000","message":"removed in next patch","commit_id":"7358c13caf531cea46a38c87b8a36ced046c837c"},{"author":{"_account_id":23186,"name":"Felipe Monteiro","email":"felipe.carneiro.monteiro@gmail.com","username":"felipe.monteiro"},"change_message_id":"3b513c7fa2d8f87b8dd3a2c8ff27437102125695","unresolved":false,"context_lines":[{"line_number":116,"context_line":"        deploy_id \u003d None"},{"line_number":117,"context_line":"        rbac_utils.switch_role(self, switchToRbacRole\u003dTrue)"},{"line_number":118,"context_line":""},{"line_number":119,"context_line":"        server_id \u003d data_utils.rand_name(\u0027dummy-server\u0027)"},{"line_number":120,"context_line":"        action \u003d \u0027ACTION_0\u0027"},{"line_number":121,"context_line":"        status \u003d \u0027STATUS_0\u0027"},{"line_number":122,"context_line":"        input_values \u003d {}"},{"line_number":123,"context_line":"        output_values \u003d []"},{"line_number":124,"context_line":"        status_reason \u003d \u0027REASON_0\u0027"},{"line_number":125,"context_line":"        signal_transport \u003d \u0027NO_SIGNAL\u0027"},{"line_number":126,"context_line":"        deployment \u003d self.client.\\"},{"line_number":127,"context_line":"            create_software_deploy(server_id, self.configs[1][\u0027id\u0027],"},{"line_number":128,"context_line":"                                   action, status,"},{"line_number":129,"context_line":"                                   input_values, output_values,"},{"line_number":130,"context_line":"                                   status_reason,"},{"line_number":131,"context_line":"                                   signal_transport)"},{"line_number":132,"context_line":"        deploy_id \u003d deployment[\u0027software_deployment\u0027][\u0027id\u0027]"},{"line_number":133,"context_line":"        self.assertNotEmpty(deploy_id)"},{"line_number":134,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"ba2be162_f7151849","line":131,"range":{"start_line":119,"start_character":8,"end_line":131,"end_character":52},"updated":"2017-03-02 04:21:19.000000000","message":"This can all go in a helper function, i.e. call _deployment_create. I would do server creation at the class level, unless there\u0027s some good reason why it can\u0027t be there.\n\nAlso, server_id in _deployment_create points to a real server id; this server id is fake.","commit_id":"7358c13caf531cea46a38c87b8a36ced046c837c"},{"author":{"_account_id":24816,"name":"Anthony Bellino","email":"ab2434@att.com","username":"anthony.bellino"},"change_message_id":"ba02271a9ec0ce6702d942a7b2f3f42c49497fa7","unresolved":false,"context_lines":[{"line_number":116,"context_line":"        deploy_id \u003d None"},{"line_number":117,"context_line":"        rbac_utils.switch_role(self, switchToRbacRole\u003dTrue)"},{"line_number":118,"context_line":""},{"line_number":119,"context_line":"        server_id \u003d data_utils.rand_name(\u0027dummy-server\u0027)"},{"line_number":120,"context_line":"        action \u003d \u0027ACTION_0\u0027"},{"line_number":121,"context_line":"        status \u003d \u0027STATUS_0\u0027"},{"line_number":122,"context_line":"        input_values \u003d {}"},{"line_number":123,"context_line":"        output_values \u003d []"},{"line_number":124,"context_line":"        status_reason \u003d \u0027REASON_0\u0027"},{"line_number":125,"context_line":"        signal_transport \u003d \u0027NO_SIGNAL\u0027"},{"line_number":126,"context_line":"        deployment \u003d self.client.\\"},{"line_number":127,"context_line":"            create_software_deploy(server_id, self.configs[1][\u0027id\u0027],"},{"line_number":128,"context_line":"                                   action, status,"},{"line_number":129,"context_line":"                                   input_values, output_values,"},{"line_number":130,"context_line":"                                   status_reason,"},{"line_number":131,"context_line":"                                   signal_transport)"},{"line_number":132,"context_line":"        deploy_id \u003d deployment[\u0027software_deployment\u0027][\u0027id\u0027]"},{"line_number":133,"context_line":"        self.assertNotEmpty(deploy_id)"},{"line_number":134,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"ba2be162_cda20f4b","line":131,"range":{"start_line":119,"start_character":8,"end_line":131,"end_character":52},"in_reply_to":"ba2be162_f7151849","updated":"2017-03-02 23:29:42.000000000","message":"fixed in next patch","commit_id":"7358c13caf531cea46a38c87b8a36ced046c837c"},{"author":{"_account_id":23186,"name":"Felipe Monteiro","email":"felipe.carneiro.monteiro@gmail.com","username":"felipe.monteiro"},"change_message_id":"3b513c7fa2d8f87b8dd3a2c8ff27437102125695","unresolved":false,"context_lines":[{"line_number":136,"context_line":"                                 rule\u003d\"software_deployments:delete\")"},{"line_number":137,"context_line":"    @decorators.idempotent_id(\u002720f4683d-7316-4d88-a6ea-1ee6013da908\u0027)"},{"line_number":138,"context_line":"    def test_software_deployment_delete(self):"},{"line_number":139,"context_line":"        deploy_id \u003d None"},{"line_number":140,"context_line":"        server_id \u003d data_utils.rand_name(\u0027dummy-server\u0027)"},{"line_number":141,"context_line":"        action \u003d \u0027ACTION_0\u0027"},{"line_number":142,"context_line":"        status \u003d \u0027STATUS_0\u0027"},{"line_number":143,"context_line":"        input_values \u003d {}"},{"line_number":144,"context_line":"        output_values \u003d []"},{"line_number":145,"context_line":"        status_reason \u003d \u0027REASON_0\u0027"},{"line_number":146,"context_line":"        signal_transport \u003d \u0027NO_SIGNAL\u0027"},{"line_number":147,"context_line":"        deployment \u003d self.client.\\"},{"line_number":148,"context_line":"            create_software_deploy(server_id, self.configs[1][\u0027id\u0027],"},{"line_number":149,"context_line":"                                   action, status,"},{"line_number":150,"context_line":"                                   input_values, output_values,"},{"line_number":151,"context_line":"                                   status_reason,"},{"line_number":152,"context_line":"                                   signal_transport)"},{"line_number":153,"context_line":"        deploy_id \u003d deployment[\u0027software_deployment\u0027][\u0027id\u0027]"},{"line_number":154,"context_line":"        rbac_utils.switch_role(self, switchToRbacRole\u003dTrue)"},{"line_number":155,"context_line":"        resp \u003d self.client.delete_software_deploy(deploy_id)"},{"line_number":156,"context_line":"        status_code \u003d resp.response.status"}],"source_content_type":"text/x-python","patch_set":3,"id":"ba2be162_690f902e","line":153,"range":{"start_line":139,"start_character":8,"end_line":153,"end_character":59},"updated":"2017-03-02 04:21:19.000000000","message":"Ditto.","commit_id":"7358c13caf531cea46a38c87b8a36ced046c837c"},{"author":{"_account_id":24816,"name":"Anthony Bellino","email":"ab2434@att.com","username":"anthony.bellino"},"change_message_id":"ba02271a9ec0ce6702d942a7b2f3f42c49497fa7","unresolved":false,"context_lines":[{"line_number":136,"context_line":"                                 rule\u003d\"software_deployments:delete\")"},{"line_number":137,"context_line":"    @decorators.idempotent_id(\u002720f4683d-7316-4d88-a6ea-1ee6013da908\u0027)"},{"line_number":138,"context_line":"    def test_software_deployment_delete(self):"},{"line_number":139,"context_line":"        deploy_id \u003d None"},{"line_number":140,"context_line":"        server_id \u003d data_utils.rand_name(\u0027dummy-server\u0027)"},{"line_number":141,"context_line":"        action \u003d \u0027ACTION_0\u0027"},{"line_number":142,"context_line":"        status \u003d \u0027STATUS_0\u0027"},{"line_number":143,"context_line":"        input_values \u003d {}"},{"line_number":144,"context_line":"        output_values \u003d []"},{"line_number":145,"context_line":"        status_reason \u003d \u0027REASON_0\u0027"},{"line_number":146,"context_line":"        signal_transport \u003d \u0027NO_SIGNAL\u0027"},{"line_number":147,"context_line":"        deployment \u003d self.client.\\"},{"line_number":148,"context_line":"            create_software_deploy(server_id, self.configs[1][\u0027id\u0027],"},{"line_number":149,"context_line":"                                   action, status,"},{"line_number":150,"context_line":"                                   input_values, output_values,"},{"line_number":151,"context_line":"                                   status_reason,"},{"line_number":152,"context_line":"                                   signal_transport)"},{"line_number":153,"context_line":"        deploy_id \u003d deployment[\u0027software_deployment\u0027][\u0027id\u0027]"},{"line_number":154,"context_line":"        rbac_utils.switch_role(self, switchToRbacRole\u003dTrue)"},{"line_number":155,"context_line":"        resp \u003d self.client.delete_software_deploy(deploy_id)"},{"line_number":156,"context_line":"        status_code \u003d resp.response.status"}],"source_content_type":"text/x-python","patch_set":3,"id":"ba2be162_f0740669","line":153,"range":{"start_line":139,"start_character":8,"end_line":153,"end_character":59},"in_reply_to":"ba2be162_690f902e","updated":"2017-03-02 23:29:42.000000000","message":"fixed in next patch","commit_id":"7358c13caf531cea46a38c87b8a36ced046c837c"},{"author":{"_account_id":23186,"name":"Felipe Monteiro","email":"felipe.carneiro.monteiro@gmail.com","username":"felipe.monteiro"},"change_message_id":"3b513c7fa2d8f87b8dd3a2c8ff27437102125695","unresolved":false,"context_lines":[{"line_number":161,"context_line":"    @decorators.idempotent_id(\u0027c8fb1c73-fcb6-46c2-9510-8ef0083c9620\u0027)"},{"line_number":162,"context_line":"    def test_config_create(self):"},{"line_number":163,"context_line":"        rbac_utils.switch_role(self, switchToRbacRole\u003dTrue)"},{"line_number":164,"context_line":"        suffix \u003d \u0027c\u0027"},{"line_number":165,"context_line":"        configuration \u003d {\u0027group\u0027: \u0027script\u0027,"},{"line_number":166,"context_line":"                         \u0027inputs\u0027: [],"},{"line_number":167,"context_line":"                         \u0027outputs\u0027: [],"},{"line_number":168,"context_line":"                         \u0027options\u0027: {}}"},{"line_number":169,"context_line":"        configuration[\u0027name\u0027] \u003d \u0027heat_soft_config_%s\u0027 % suffix"},{"line_number":170,"context_line":"        configuration[\u0027config\u0027] \u003d \u0027#!/bin/bash echo init-%s\u0027 % suffix"},{"line_number":171,"context_line":"        api_config \u003d self.client.create_software_config(**configuration)"},{"line_number":172,"context_line":"        configuration[\u0027id\u0027] \u003d api_config[\u0027software_config\u0027][\u0027id\u0027]"},{"line_number":173,"context_line":"        self._validate_config(configuration, api_config)"}],"source_content_type":"text/x-python","patch_set":3,"id":"ba2be162_c94ddc73","line":170,"range":{"start_line":164,"start_character":8,"end_line":170,"end_character":69},"updated":"2017-03-02 04:21:19.000000000","message":"I would include only the bare minimum configuration needed.","commit_id":"7358c13caf531cea46a38c87b8a36ced046c837c"},{"author":{"_account_id":24816,"name":"Anthony Bellino","email":"ab2434@att.com","username":"anthony.bellino"},"change_message_id":"ba02271a9ec0ce6702d942a7b2f3f42c49497fa7","unresolved":false,"context_lines":[{"line_number":161,"context_line":"    @decorators.idempotent_id(\u0027c8fb1c73-fcb6-46c2-9510-8ef0083c9620\u0027)"},{"line_number":162,"context_line":"    def test_config_create(self):"},{"line_number":163,"context_line":"        rbac_utils.switch_role(self, switchToRbacRole\u003dTrue)"},{"line_number":164,"context_line":"        suffix \u003d \u0027c\u0027"},{"line_number":165,"context_line":"        configuration \u003d {\u0027group\u0027: \u0027script\u0027,"},{"line_number":166,"context_line":"                         \u0027inputs\u0027: [],"},{"line_number":167,"context_line":"                         \u0027outputs\u0027: [],"},{"line_number":168,"context_line":"                         \u0027options\u0027: {}}"},{"line_number":169,"context_line":"        configuration[\u0027name\u0027] \u003d \u0027heat_soft_config_%s\u0027 % suffix"},{"line_number":170,"context_line":"        configuration[\u0027config\u0027] \u003d \u0027#!/bin/bash echo init-%s\u0027 % suffix"},{"line_number":171,"context_line":"        api_config \u003d self.client.create_software_config(**configuration)"},{"line_number":172,"context_line":"        configuration[\u0027id\u0027] \u003d api_config[\u0027software_config\u0027][\u0027id\u0027]"},{"line_number":173,"context_line":"        self._validate_config(configuration, api_config)"}],"source_content_type":"text/x-python","patch_set":3,"id":"ba2be162_701ad67e","line":170,"range":{"start_line":164,"start_character":8,"end_line":170,"end_character":69},"in_reply_to":"ba2be162_c94ddc73","updated":"2017-03-02 23:29:42.000000000","message":"fixed in next patch","commit_id":"7358c13caf531cea46a38c87b8a36ced046c837c"},{"author":{"_account_id":23186,"name":"Felipe Monteiro","email":"felipe.carneiro.monteiro@gmail.com","username":"felipe.monteiro"},"change_message_id":"3b513c7fa2d8f87b8dd3a2c8ff27437102125695","unresolved":false,"context_lines":[{"line_number":169,"context_line":"        configuration[\u0027name\u0027] \u003d \u0027heat_soft_config_%s\u0027 % suffix"},{"line_number":170,"context_line":"        configuration[\u0027config\u0027] \u003d \u0027#!/bin/bash echo init-%s\u0027 % suffix"},{"line_number":171,"context_line":"        api_config \u003d self.client.create_software_config(**configuration)"},{"line_number":172,"context_line":"        configuration[\u0027id\u0027] \u003d api_config[\u0027software_config\u0027][\u0027id\u0027]"},{"line_number":173,"context_line":"        self._validate_config(configuration, api_config)"},{"line_number":174,"context_line":""},{"line_number":175,"context_line":"    @rbac_rule_validation.action(service\u003d\"Heat\","},{"line_number":176,"context_line":"                                 rule\u003d\"software_configs:delete\")"}],"source_content_type":"text/x-python","patch_set":3,"id":"ba2be162_e929c08a","line":173,"range":{"start_line":172,"start_character":8,"end_line":173,"end_character":56},"updated":"2017-03-02 04:21:19.000000000","message":"Not needed.","commit_id":"7358c13caf531cea46a38c87b8a36ced046c837c"},{"author":{"_account_id":24816,"name":"Anthony Bellino","email":"ab2434@att.com","username":"anthony.bellino"},"change_message_id":"ba02271a9ec0ce6702d942a7b2f3f42c49497fa7","unresolved":false,"context_lines":[{"line_number":169,"context_line":"        configuration[\u0027name\u0027] \u003d \u0027heat_soft_config_%s\u0027 % suffix"},{"line_number":170,"context_line":"        configuration[\u0027config\u0027] \u003d \u0027#!/bin/bash echo init-%s\u0027 % suffix"},{"line_number":171,"context_line":"        api_config \u003d self.client.create_software_config(**configuration)"},{"line_number":172,"context_line":"        configuration[\u0027id\u0027] \u003d api_config[\u0027software_config\u0027][\u0027id\u0027]"},{"line_number":173,"context_line":"        self._validate_config(configuration, api_config)"},{"line_number":174,"context_line":""},{"line_number":175,"context_line":"    @rbac_rule_validation.action(service\u003d\"Heat\","},{"line_number":176,"context_line":"                                 rule\u003d\"software_configs:delete\")"}],"source_content_type":"text/x-python","patch_set":3,"id":"ba2be162_901f4a6b","line":173,"range":{"start_line":172,"start_character":8,"end_line":173,"end_character":56},"in_reply_to":"ba2be162_e929c08a","updated":"2017-03-02 23:29:42.000000000","message":"removed in next patch","commit_id":"7358c13caf531cea46a38c87b8a36ced046c837c"},{"author":{"_account_id":23186,"name":"Felipe Monteiro","email":"felipe.carneiro.monteiro@gmail.com","username":"felipe.monteiro"},"change_message_id":"3b513c7fa2d8f87b8dd3a2c8ff27437102125695","unresolved":false,"context_lines":[{"line_number":176,"context_line":"                                 rule\u003d\"software_configs:delete\")"},{"line_number":177,"context_line":"    @decorators.idempotent_id(\u0027f4f784ea-9878-4306-bc5f-041ba5307ce5\u0027)"},{"line_number":178,"context_line":"    def test_config_delete(self):"},{"line_number":179,"context_line":"        suffix \u003d \u0027d\u0027"},{"line_number":180,"context_line":"        configuration \u003d {\u0027group\u0027: \u0027script\u0027,"},{"line_number":181,"context_line":"                         \u0027inputs\u0027: [],"},{"line_number":182,"context_line":"                         \u0027outputs\u0027: [],"},{"line_number":183,"context_line":"                         \u0027options\u0027: {}}"},{"line_number":184,"context_line":"        configuration[\u0027name\u0027] \u003d \u0027heat_soft_config_%s\u0027 % suffix"},{"line_number":185,"context_line":"        configuration[\u0027config\u0027] \u003d \u0027#!/bin/bash echo init-%s\u0027 % suffix"},{"line_number":186,"context_line":"        api_config \u003d self.client.create_software_config(**configuration)"},{"line_number":187,"context_line":"        configuration[\u0027id\u0027] \u003d api_config[\u0027software_config\u0027][\u0027id\u0027]"},{"line_number":188,"context_line":"        self._validate_config(configuration, api_config)"}],"source_content_type":"text/x-python","patch_set":3,"id":"ba2be162_c974fc9d","line":185,"range":{"start_line":179,"start_character":8,"end_line":185,"end_character":69},"updated":"2017-03-02 04:21:19.000000000","message":"Second place this is used. Use _config_create instead.","commit_id":"7358c13caf531cea46a38c87b8a36ced046c837c"},{"author":{"_account_id":24816,"name":"Anthony Bellino","email":"ab2434@att.com","username":"anthony.bellino"},"change_message_id":"ba02271a9ec0ce6702d942a7b2f3f42c49497fa7","unresolved":false,"context_lines":[{"line_number":176,"context_line":"                                 rule\u003d\"software_configs:delete\")"},{"line_number":177,"context_line":"    @decorators.idempotent_id(\u0027f4f784ea-9878-4306-bc5f-041ba5307ce5\u0027)"},{"line_number":178,"context_line":"    def test_config_delete(self):"},{"line_number":179,"context_line":"        suffix \u003d \u0027d\u0027"},{"line_number":180,"context_line":"        configuration \u003d {\u0027group\u0027: \u0027script\u0027,"},{"line_number":181,"context_line":"                         \u0027inputs\u0027: [],"},{"line_number":182,"context_line":"                         \u0027outputs\u0027: [],"},{"line_number":183,"context_line":"                         \u0027options\u0027: {}}"},{"line_number":184,"context_line":"        configuration[\u0027name\u0027] \u003d \u0027heat_soft_config_%s\u0027 % suffix"},{"line_number":185,"context_line":"        configuration[\u0027config\u0027] \u003d \u0027#!/bin/bash echo init-%s\u0027 % suffix"},{"line_number":186,"context_line":"        api_config \u003d self.client.create_software_config(**configuration)"},{"line_number":187,"context_line":"        configuration[\u0027id\u0027] \u003d api_config[\u0027software_config\u0027][\u0027id\u0027]"},{"line_number":188,"context_line":"        self._validate_config(configuration, api_config)"}],"source_content_type":"text/x-python","patch_set":3,"id":"ba2be162_336b0887","line":185,"range":{"start_line":179,"start_character":8,"end_line":185,"end_character":69},"in_reply_to":"ba2be162_c974fc9d","updated":"2017-03-02 23:29:42.000000000","message":"fixed in next patch","commit_id":"7358c13caf531cea46a38c87b8a36ced046c837c"},{"author":{"_account_id":23186,"name":"Felipe Monteiro","email":"felipe.carneiro.monteiro@gmail.com","username":"felipe.monteiro"},"change_message_id":"3b513c7fa2d8f87b8dd3a2c8ff27437102125695","unresolved":false,"context_lines":[{"line_number":183,"context_line":"                         \u0027options\u0027: {}}"},{"line_number":184,"context_line":"        configuration[\u0027name\u0027] \u003d \u0027heat_soft_config_%s\u0027 % suffix"},{"line_number":185,"context_line":"        configuration[\u0027config\u0027] \u003d \u0027#!/bin/bash echo init-%s\u0027 % suffix"},{"line_number":186,"context_line":"        api_config \u003d self.client.create_software_config(**configuration)"},{"line_number":187,"context_line":"        configuration[\u0027id\u0027] \u003d api_config[\u0027software_config\u0027][\u0027id\u0027]"},{"line_number":188,"context_line":"        self._validate_config(configuration, api_config)"},{"line_number":189,"context_line":"        rbac_utils.switch_role(self, switchToRbacRole\u003dTrue)"},{"line_number":190,"context_line":"        self.client.delete_software_config(configuration[\u0027id\u0027])"},{"line_number":191,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"ba2be162_a947c849","line":188,"range":{"start_line":186,"start_character":8,"end_line":188,"end_character":56},"updated":"2017-03-02 04:21:19.000000000","message":"Remove.","commit_id":"7358c13caf531cea46a38c87b8a36ced046c837c"},{"author":{"_account_id":24816,"name":"Anthony Bellino","email":"ab2434@att.com","username":"anthony.bellino"},"change_message_id":"ba02271a9ec0ce6702d942a7b2f3f42c49497fa7","unresolved":false,"context_lines":[{"line_number":183,"context_line":"                         \u0027options\u0027: {}}"},{"line_number":184,"context_line":"        configuration[\u0027name\u0027] \u003d \u0027heat_soft_config_%s\u0027 % suffix"},{"line_number":185,"context_line":"        configuration[\u0027config\u0027] \u003d \u0027#!/bin/bash echo init-%s\u0027 % suffix"},{"line_number":186,"context_line":"        api_config \u003d self.client.create_software_config(**configuration)"},{"line_number":187,"context_line":"        configuration[\u0027id\u0027] \u003d api_config[\u0027software_config\u0027][\u0027id\u0027]"},{"line_number":188,"context_line":"        self._validate_config(configuration, api_config)"},{"line_number":189,"context_line":"        rbac_utils.switch_role(self, switchToRbacRole\u003dTrue)"},{"line_number":190,"context_line":"        self.client.delete_software_config(configuration[\u0027id\u0027])"},{"line_number":191,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"ba2be162_730740ca","line":188,"range":{"start_line":186,"start_character":8,"end_line":188,"end_character":56},"in_reply_to":"ba2be162_a947c849","updated":"2017-03-02 23:29:42.000000000","message":"fixed in next patch","commit_id":"7358c13caf531cea46a38c87b8a36ced046c837c"},{"author":{"_account_id":23186,"name":"Felipe Monteiro","email":"felipe.carneiro.monteiro@gmail.com","username":"felipe.monteiro"},"change_message_id":"3b513c7fa2d8f87b8dd3a2c8ff27437102125695","unresolved":false,"context_lines":[{"line_number":201,"context_line":"        self._validate_config(configuration, api_config)"},{"line_number":202,"context_line":"        return configuration"},{"line_number":203,"context_line":""},{"line_number":204,"context_line":"    def _validate_deployment(self, action, status, reason, config_id):"},{"line_number":205,"context_line":"        deployment \u003d self.client.show_software_deployment(self.deployment_id)"},{"line_number":206,"context_line":"        self.assertEqual(action, deployment[\u0027software_deployment\u0027][\u0027action\u0027])"},{"line_number":207,"context_line":"        self.assertEqual(status, deployment[\u0027software_deployment\u0027][\u0027status\u0027])"},{"line_number":208,"context_line":"        self.assertEqual(reason,"},{"line_number":209,"context_line":"                         deployment[\u0027software_deployment\u0027][\u0027status_reason\u0027])"},{"line_number":210,"context_line":"        self.assertEqual(config_id,"},{"line_number":211,"context_line":"                         deployment[\u0027software_deployment\u0027][\u0027config_id\u0027])"},{"line_number":212,"context_line":""},{"line_number":213,"context_line":"    def _validate_config(self, configuration, api_config):"},{"line_number":214,"context_line":"        # Assert all expected keys are present with matching data"}],"source_content_type":"text/x-python","patch_set":3,"id":"ba2be162_6964f0e4","line":211,"range":{"start_line":204,"start_character":0,"end_line":211,"end_character":72},"updated":"2017-03-02 04:21:19.000000000","message":"Not needed.","commit_id":"7358c13caf531cea46a38c87b8a36ced046c837c"},{"author":{"_account_id":24816,"name":"Anthony Bellino","email":"ab2434@att.com","username":"anthony.bellino"},"change_message_id":"ba02271a9ec0ce6702d942a7b2f3f42c49497fa7","unresolved":false,"context_lines":[{"line_number":201,"context_line":"        self._validate_config(configuration, api_config)"},{"line_number":202,"context_line":"        return configuration"},{"line_number":203,"context_line":""},{"line_number":204,"context_line":"    def _validate_deployment(self, action, status, reason, config_id):"},{"line_number":205,"context_line":"        deployment \u003d self.client.show_software_deployment(self.deployment_id)"},{"line_number":206,"context_line":"        self.assertEqual(action, deployment[\u0027software_deployment\u0027][\u0027action\u0027])"},{"line_number":207,"context_line":"        self.assertEqual(status, deployment[\u0027software_deployment\u0027][\u0027status\u0027])"},{"line_number":208,"context_line":"        self.assertEqual(reason,"},{"line_number":209,"context_line":"                         deployment[\u0027software_deployment\u0027][\u0027status_reason\u0027])"},{"line_number":210,"context_line":"        self.assertEqual(config_id,"},{"line_number":211,"context_line":"                         deployment[\u0027software_deployment\u0027][\u0027config_id\u0027])"},{"line_number":212,"context_line":""},{"line_number":213,"context_line":"    def _validate_config(self, configuration, api_config):"},{"line_number":214,"context_line":"        # Assert all expected keys are present with matching data"}],"source_content_type":"text/x-python","patch_set":3,"id":"ba2be162_b3245860","line":211,"range":{"start_line":204,"start_character":0,"end_line":211,"end_character":72},"in_reply_to":"ba2be162_6964f0e4","updated":"2017-03-02 23:29:42.000000000","message":"this is used in test_software_deployment_validate","commit_id":"7358c13caf531cea46a38c87b8a36ced046c837c"},{"author":{"_account_id":23186,"name":"Felipe Monteiro","email":"felipe.carneiro.monteiro@gmail.com","username":"felipe.monteiro"},"change_message_id":"9b8ee594fff8341632dc253868f9079ac41feb55","unresolved":false,"context_lines":[{"line_number":201,"context_line":"        self._validate_config(configuration, api_config)"},{"line_number":202,"context_line":"        return configuration"},{"line_number":203,"context_line":""},{"line_number":204,"context_line":"    def _validate_deployment(self, action, status, reason, config_id):"},{"line_number":205,"context_line":"        deployment \u003d self.client.show_software_deployment(self.deployment_id)"},{"line_number":206,"context_line":"        self.assertEqual(action, deployment[\u0027software_deployment\u0027][\u0027action\u0027])"},{"line_number":207,"context_line":"        self.assertEqual(status, deployment[\u0027software_deployment\u0027][\u0027status\u0027])"},{"line_number":208,"context_line":"        self.assertEqual(reason,"},{"line_number":209,"context_line":"                         deployment[\u0027software_deployment\u0027][\u0027status_reason\u0027])"},{"line_number":210,"context_line":"        self.assertEqual(config_id,"},{"line_number":211,"context_line":"                         deployment[\u0027software_deployment\u0027][\u0027config_id\u0027])"},{"line_number":212,"context_line":""},{"line_number":213,"context_line":"    def _validate_config(self, configuration, api_config):"},{"line_number":214,"context_line":"        # Assert all expected keys are present with matching data"}],"source_content_type":"text/x-python","patch_set":3,"id":"ba2be162_f9af9127","line":211,"range":{"start_line":204,"start_character":0,"end_line":211,"end_character":72},"in_reply_to":"ba2be162_b3245860","updated":"2017-03-03 00:37:53.000000000","message":"Fair enough, but I think that there\u0027s no justification for having a helper function, unless it\u0027s called in 2+ places (i.e. DRY principle). If it\u0027s only called in one place and we\u0027re just talking about a few lines of code, then no need for the helper function -- just makes it hard to track down what does what, because you have to scroll up/down constantly.","commit_id":"7358c13caf531cea46a38c87b8a36ced046c837c"},{"author":{"_account_id":23186,"name":"Felipe Monteiro","email":"felipe.carneiro.monteiro@gmail.com","username":"felipe.monteiro"},"change_message_id":"3b513c7fa2d8f87b8dd3a2c8ff27437102125695","unresolved":false,"context_lines":[{"line_number":210,"context_line":"        self.assertEqual(config_id,"},{"line_number":211,"context_line":"                         deployment[\u0027software_deployment\u0027][\u0027config_id\u0027])"},{"line_number":212,"context_line":""},{"line_number":213,"context_line":"    def _validate_config(self, configuration, api_config):"},{"line_number":214,"context_line":"        # Assert all expected keys are present with matching data"},{"line_number":215,"context_line":"        for k in configuration.keys():"},{"line_number":216,"context_line":"            self.assertEqual(configuration[k],"},{"line_number":217,"context_line":"                             api_config[\u0027software_config\u0027][k])"},{"line_number":218,"context_line":""},{"line_number":219,"context_line":"    def _deployment_create(self, config_id):"},{"line_number":220,"context_line":"        self.server_id \u003d data_utils.rand_name(\u0027dummy-server\u0027)"}],"source_content_type":"text/x-python","patch_set":3,"id":"ba2be162_8963e4db","line":217,"range":{"start_line":213,"start_character":0,"end_line":217,"end_character":62},"updated":"2017-03-02 04:21:19.000000000","message":"Not needed.","commit_id":"7358c13caf531cea46a38c87b8a36ced046c837c"},{"author":{"_account_id":24816,"name":"Anthony Bellino","email":"ab2434@att.com","username":"anthony.bellino"},"change_message_id":"ba02271a9ec0ce6702d942a7b2f3f42c49497fa7","unresolved":false,"context_lines":[{"line_number":210,"context_line":"        self.assertEqual(config_id,"},{"line_number":211,"context_line":"                         deployment[\u0027software_deployment\u0027][\u0027config_id\u0027])"},{"line_number":212,"context_line":""},{"line_number":213,"context_line":"    def _validate_config(self, configuration, api_config):"},{"line_number":214,"context_line":"        # Assert all expected keys are present with matching data"},{"line_number":215,"context_line":"        for k in configuration.keys():"},{"line_number":216,"context_line":"            self.assertEqual(configuration[k],"},{"line_number":217,"context_line":"                             api_config[\u0027software_config\u0027][k])"},{"line_number":218,"context_line":""},{"line_number":219,"context_line":"    def _deployment_create(self, config_id):"},{"line_number":220,"context_line":"        self.server_id \u003d data_utils.rand_name(\u0027dummy-server\u0027)"}],"source_content_type":"text/x-python","patch_set":3,"id":"ba2be162_13ce0482","line":217,"range":{"start_line":213,"start_character":0,"end_line":217,"end_character":62},"in_reply_to":"ba2be162_8963e4db","updated":"2017-03-02 23:29:42.000000000","message":"fixed in next patch","commit_id":"7358c13caf531cea46a38c87b8a36ced046c837c"},{"author":{"_account_id":23186,"name":"Felipe Monteiro","email":"felipe.carneiro.monteiro@gmail.com","username":"felipe.monteiro"},"change_message_id":"d081c50be4aedc3fbdc65e20effcf26507176564","unresolved":false,"context_lines":[{"line_number":97,"context_line":"    @decorators.idempotent_id(\u0027c8fb1c73-fcb6-46c2-9510-8ef0083c9620\u0027)"},{"line_number":98,"context_line":"    def test_config_create(self):"},{"line_number":99,"context_line":"        rbac_utils.switch_role(self, switchToRbacRole\u003dTrue)"},{"line_number":100,"context_line":"        configuration \u003d {\u0027group\u0027: \u0027script\u0027, \u0027inputs\u0027: []}"},{"line_number":101,"context_line":"        configuration[\u0027name\u0027] \u003d data_utils.rand_name(\u0027heat_soft_config\u0027)"},{"line_number":102,"context_line":"        self.client.create_software_config(**configuration)"},{"line_number":103,"context_line":""},{"line_number":104,"context_line":"    @rbac_rule_validation.action(service\u003d\"heat\","},{"line_number":105,"context_line":"                                 rule\u003d\"software_configs:delete\")"}],"source_content_type":"text/x-python","patch_set":6,"id":"ba2be162_c40ca43d","line":102,"range":{"start_line":100,"start_character":8,"end_line":102,"end_character":59},"updated":"2017-03-03 00:46:26.000000000","message":"Looks like you can call _create_config here.","commit_id":"cddb1db05428591c8b7c062c65ff26f62003b33c"},{"author":{"_account_id":24816,"name":"Anthony Bellino","email":"ab2434@att.com","username":"anthony.bellino"},"change_message_id":"651ce03aab48f6538c9a8600a1573be51ca7504a","unresolved":false,"context_lines":[{"line_number":97,"context_line":"    @decorators.idempotent_id(\u0027c8fb1c73-fcb6-46c2-9510-8ef0083c9620\u0027)"},{"line_number":98,"context_line":"    def test_config_create(self):"},{"line_number":99,"context_line":"        rbac_utils.switch_role(self, switchToRbacRole\u003dTrue)"},{"line_number":100,"context_line":"        configuration \u003d {\u0027group\u0027: \u0027script\u0027, \u0027inputs\u0027: []}"},{"line_number":101,"context_line":"        configuration[\u0027name\u0027] \u003d data_utils.rand_name(\u0027heat_soft_config\u0027)"},{"line_number":102,"context_line":"        self.client.create_software_config(**configuration)"},{"line_number":103,"context_line":""},{"line_number":104,"context_line":"    @rbac_rule_validation.action(service\u003d\"heat\","},{"line_number":105,"context_line":"                                 rule\u003d\"software_configs:delete\")"}],"source_content_type":"text/x-python","patch_set":6,"id":"ba2be162_cd5028d7","line":102,"range":{"start_line":100,"start_character":8,"end_line":102,"end_character":59},"in_reply_to":"ba2be162_c40ca43d","updated":"2017-03-03 17:36:20.000000000","message":"fixed in next patch","commit_id":"cddb1db05428591c8b7c062c65ff26f62003b33c"},{"author":{"_account_id":23186,"name":"Felipe Monteiro","email":"felipe.carneiro.monteiro@gmail.com","username":"felipe.monteiro"},"change_message_id":"d9fa82df20fda4af064f2ee1715edf253b6c0b5e","unresolved":false,"context_lines":[{"line_number":120,"context_line":"        configuration[\u0027id\u0027] \u003d api_config[\u0027software_config\u0027][\u0027id\u0027]"},{"line_number":121,"context_line":"        return configuration"},{"line_number":122,"context_line":""},{"line_number":123,"context_line":"    def _validate_deployment(self, action, status, reason, config_id):"},{"line_number":124,"context_line":"        deployment \u003d self.client.show_software_deployment(self.deployment_id)"},{"line_number":125,"context_line":"        self.assertEqual(action, deployment[\u0027software_deployment\u0027][\u0027action\u0027])"},{"line_number":126,"context_line":"        self.assertEqual(status, deployment[\u0027software_deployment\u0027][\u0027status\u0027])"}],"source_content_type":"text/x-python","patch_set":6,"id":"ba2be162_30fcb771","line":123,"range":{"start_line":123,"start_character":8,"end_line":123,"end_character":28},"updated":"2017-03-03 17:10:27.000000000","message":"If you want to keep the assertions, may we call this _show_and_validate_deployment? Otherwise, if you choose to remove the assertions, may we call it _show_deployment?","commit_id":"cddb1db05428591c8b7c062c65ff26f62003b33c"},{"author":{"_account_id":23186,"name":"Felipe Monteiro","email":"felipe.carneiro.monteiro@gmail.com","username":"felipe.monteiro"},"change_message_id":"e3c6bb48c4f6cb20a9f5714c0b9ad15fe920f537","unresolved":false,"context_lines":[{"line_number":24,"context_line":""},{"line_number":25,"context_line":"    def setUp(self):"},{"line_number":26,"context_line":"        super(TestRbacSoftwareConfig, self).setUp()"},{"line_number":27,"context_line":"        self.configs \u003d []"},{"line_number":28,"context_line":"        self.configs.append(self._config_create(\u0027a\u0027))"},{"line_number":29,"context_line":"        self.configs.append(self._config_create(\u0027b\u0027))"},{"line_number":30,"context_line":"        self._deployment_create(self.configs[0][\u0027id\u0027])"},{"line_number":31,"context_line":""},{"line_number":32,"context_line":"    @rbac_rule_validation.action(service\u003d\"heat\","}],"source_content_type":"text/x-python","patch_set":7,"id":"ba2be162_67e2e930","line":29,"range":{"start_line":27,"start_character":8,"end_line":29,"end_character":53},"updated":"2017-03-03 21:39:14.000000000","message":"I noticed that throughout your code you only use self.configs[0], so please just use self.config, i.e. only make one config here.","commit_id":"8e1189639b11e97f4fef55b736344fae4f5d37d4"},{"author":{"_account_id":24816,"name":"Anthony Bellino","email":"ab2434@att.com","username":"anthony.bellino"},"change_message_id":"53fd20b30deb7532e4ecc11e157eea773c492970","unresolved":false,"context_lines":[{"line_number":24,"context_line":""},{"line_number":25,"context_line":"    def setUp(self):"},{"line_number":26,"context_line":"        super(TestRbacSoftwareConfig, self).setUp()"},{"line_number":27,"context_line":"        self.configs \u003d []"},{"line_number":28,"context_line":"        self.configs.append(self._config_create(\u0027a\u0027))"},{"line_number":29,"context_line":"        self.configs.append(self._config_create(\u0027b\u0027))"},{"line_number":30,"context_line":"        self._deployment_create(self.configs[0][\u0027id\u0027])"},{"line_number":31,"context_line":""},{"line_number":32,"context_line":"    @rbac_rule_validation.action(service\u003d\"heat\","}],"source_content_type":"text/x-python","patch_set":7,"id":"ba2be162_804d039c","line":29,"range":{"start_line":27,"start_character":8,"end_line":29,"end_character":53},"in_reply_to":"ba2be162_67e2e930","updated":"2017-03-03 23:28:02.000000000","message":"fixed in next patch","commit_id":"8e1189639b11e97f4fef55b736344fae4f5d37d4"},{"author":{"_account_id":23186,"name":"Felipe Monteiro","email":"felipe.carneiro.monteiro@gmail.com","username":"felipe.monteiro"},"change_message_id":"e3c6bb48c4f6cb20a9f5714c0b9ad15fe920f537","unresolved":false,"context_lines":[{"line_number":112,"context_line":"        configuration[\u0027name\u0027] \u003d \u0027heat_soft_config_%s\u0027 % suffix"},{"line_number":113,"context_line":"        configuration[\u0027config\u0027] \u003d \u0027#!/bin/bash echo init-%s\u0027 % suffix"},{"line_number":114,"context_line":"        api_config \u003d self.client.create_software_config(**configuration)"},{"line_number":115,"context_line":"        configuration[\u0027id\u0027] \u003d api_config[\u0027software_config\u0027][\u0027id\u0027]"},{"line_number":116,"context_line":"        return configuration"},{"line_number":117,"context_line":""},{"line_number":118,"context_line":"    def _deployment_create(self, config_id):"}],"source_content_type":"text/x-python","patch_set":7,"id":"ba2be162_c77b9579","line":115,"range":{"start_line":115,"start_character":8,"end_line":115,"end_character":65},"updated":"2017-03-03 21:39:14.000000000","message":"See L130 below, same logic applies _above_ this line.","commit_id":"8e1189639b11e97f4fef55b736344fae4f5d37d4"},{"author":{"_account_id":24816,"name":"Anthony Bellino","email":"ab2434@att.com","username":"anthony.bellino"},"change_message_id":"53fd20b30deb7532e4ecc11e157eea773c492970","unresolved":false,"context_lines":[{"line_number":112,"context_line":"        configuration[\u0027name\u0027] \u003d \u0027heat_soft_config_%s\u0027 % suffix"},{"line_number":113,"context_line":"        configuration[\u0027config\u0027] \u003d \u0027#!/bin/bash echo init-%s\u0027 % suffix"},{"line_number":114,"context_line":"        api_config \u003d self.client.create_software_config(**configuration)"},{"line_number":115,"context_line":"        configuration[\u0027id\u0027] \u003d api_config[\u0027software_config\u0027][\u0027id\u0027]"},{"line_number":116,"context_line":"        return configuration"},{"line_number":117,"context_line":""},{"line_number":118,"context_line":"    def _deployment_create(self, config_id):"}],"source_content_type":"text/x-python","patch_set":7,"id":"ba2be162_56f111cc","line":115,"range":{"start_line":115,"start_character":8,"end_line":115,"end_character":65},"in_reply_to":"ba2be162_c77b9579","updated":"2017-03-03 23:28:02.000000000","message":"fixed in next patch","commit_id":"8e1189639b11e97f4fef55b736344fae4f5d37d4"},{"author":{"_account_id":23186,"name":"Felipe Monteiro","email":"felipe.carneiro.monteiro@gmail.com","username":"felipe.monteiro"},"change_message_id":"e3c6bb48c4f6cb20a9f5714c0b9ad15fe920f537","unresolved":false,"context_lines":[{"line_number":127,"context_line":"            self.server_id, config_id, self.action, self.status,"},{"line_number":128,"context_line":"            self.input_values, self.output_values, self.status_reason,"},{"line_number":129,"context_line":"            self.signal_transport)"},{"line_number":130,"context_line":"        self.deployment_id \u003d self.deployment[\u0027software_deployment\u0027][\u0027id\u0027]"},{"line_number":131,"context_line":"        return self.deployment_id"}],"source_content_type":"text/x-python","patch_set":7,"id":"ba2be162_a77a2186","line":130,"range":{"start_line":130,"start_character":8,"end_line":130,"end_character":73},"updated":"2017-03-03 21:39:14.000000000","message":"Need to include a self.addCleanup(test_utils.call_and_ignore_notfound_exc, self.client.delete_software_deploy, self.deployment_id) _above_ this line.","commit_id":"8e1189639b11e97f4fef55b736344fae4f5d37d4"},{"author":{"_account_id":24816,"name":"Anthony Bellino","email":"ab2434@att.com","username":"anthony.bellino"},"change_message_id":"53fd20b30deb7532e4ecc11e157eea773c492970","unresolved":false,"context_lines":[{"line_number":127,"context_line":"            self.server_id, config_id, self.action, self.status,"},{"line_number":128,"context_line":"            self.input_values, self.output_values, self.status_reason,"},{"line_number":129,"context_line":"            self.signal_transport)"},{"line_number":130,"context_line":"        self.deployment_id \u003d self.deployment[\u0027software_deployment\u0027][\u0027id\u0027]"},{"line_number":131,"context_line":"        return self.deployment_id"}],"source_content_type":"text/x-python","patch_set":7,"id":"ba2be162_3bc9e859","line":130,"range":{"start_line":130,"start_character":8,"end_line":130,"end_character":73},"in_reply_to":"ba2be162_a77a2186","updated":"2017-03-03 23:28:02.000000000","message":"fixed in next patch","commit_id":"8e1189639b11e97f4fef55b736344fae4f5d37d4"}]}
