)]}'
{"rally/verification/tempest/config.ini":[{"author":{"_account_id":9545,"name":"Andriy Kurilin","email":"andr.kurilin@gmail.com","username":"akurilin"},"change_message_id":"c7e14372f4e777b39fed6cee1719aed3fed5098a","unresolved":false,"context_lines":[{"line_number":8,"context_line":""},{"line_number":9,"context_line":"[compute]"},{"line_number":10,"context_line":"image_ref \u003d"},{"line_number":11,"context_line":"image_ref_alt \u003d"},{"line_number":12,"context_line":"flavor_ref \u003d"},{"line_number":13,"context_line":"flavor_ref_alt \u003d"},{"line_number":14,"context_line":"ssh_user \u003d cirros"}],"source_content_type":"text/x-properties","patch_set":25,"id":"7a2fa921_dfdcd71a","line":11,"updated":"2015-10-05 15:08:27.000000000","message":"Why are these options empty?","commit_id":"eb9463a345f55a7bbc64e59c38367b6e491b3af8"},{"author":{"_account_id":7428,"name":"Yaroslav Lobankov","email":"lobankovyv@gmail.com","username":"ylobankov"},"change_message_id":"bd3bdd3d31839253daf6b33c118c87cd2dbde6a2","unresolved":false,"context_lines":[{"line_number":8,"context_line":""},{"line_number":9,"context_line":"[compute]"},{"line_number":10,"context_line":"image_ref \u003d"},{"line_number":11,"context_line":"image_ref_alt \u003d"},{"line_number":12,"context_line":"flavor_ref \u003d"},{"line_number":13,"context_line":"flavor_ref_alt \u003d"},{"line_number":14,"context_line":"ssh_user \u003d cirros"}],"source_content_type":"text/x-properties","patch_set":25,"id":"7a2fa921_65417039","line":11,"in_reply_to":"7a2fa921_dfdcd71a","updated":"2015-10-05 15:42:37.000000000","message":"I made these options empty to create images and flavors via the context. I could remove them from here at all, but in this case a user will have to write these options manually: \u003coption\u003e \u003d \u003coption ID\u003e. This approach allows users to specify only option  ID ;)\n\n\u003cTitle of commit message\u003e\n...\n    2. If the image_ref option is not specified in the tempest.conf file,\n        the context class will create an image for this option and add ID of\n        the created image to tempest.conf;\n...","commit_id":"eb9463a345f55a7bbc64e59c38367b6e491b3af8"},{"author":{"_account_id":9545,"name":"Andriy Kurilin","email":"andr.kurilin@gmail.com","username":"akurilin"},"change_message_id":"c7e14372f4e777b39fed6cee1719aed3fed5098a","unresolved":false,"context_lines":[{"line_number":46,"context_line":"max_resources_per_stack \u003d 20000"},{"line_number":47,"context_line":""},{"line_number":48,"context_line":"[scenario]"},{"line_number":49,"context_line":"large_ops_number \u003d 2"},{"line_number":50,"context_line":""},{"line_number":51,"context_line":"[service_available]"},{"line_number":52,"context_line":""}],"source_content_type":"text/x-properties","patch_set":25,"id":"7a2fa921_1fdb2f1d","line":49,"updated":"2015-10-05 15:08:27.000000000","message":"Please, add a not here with a description of this magic number:)","commit_id":"eb9463a345f55a7bbc64e59c38367b6e491b3af8"},{"author":{"_account_id":7428,"name":"Yaroslav Lobankov","email":"lobankovyv@gmail.com","username":"ylobankov"},"change_message_id":"bd3bdd3d31839253daf6b33c118c87cd2dbde6a2","unresolved":false,"context_lines":[{"line_number":46,"context_line":"max_resources_per_stack \u003d 20000"},{"line_number":47,"context_line":""},{"line_number":48,"context_line":"[scenario]"},{"line_number":49,"context_line":"large_ops_number \u003d 2"},{"line_number":50,"context_line":""},{"line_number":51,"context_line":"[service_available]"},{"line_number":52,"context_line":""}],"source_content_type":"text/x-properties","patch_set":25,"id":"7a2fa921_e5dca01a","line":49,"in_reply_to":"7a2fa921_1fdb2f1d","updated":"2015-10-05 15:42:37.000000000","message":"If this option \u003d 0 or \u003d1, the corresponding tests will not be run https://github.com/openstack/tempest/blob/master/tempest/scenario/test_large_ops.py#L47 . I chose the minimal count :)","commit_id":"eb9463a345f55a7bbc64e59c38367b6e491b3af8"}],"rally/verification/tempest/config.py":[{"author":{"_account_id":14743,"name":"Viktor Tikkanen","email":"viktor.tikkanen@nokia.com","username":"vitikkan"},"change_message_id":"bd502d8714252d38d44a31595c92043072147936","unresolved":false,"context_lines":[{"line_number":38,"context_line":"    cfg.StrOpt(\"cirros_img_url\","},{"line_number":39,"context_line":"               default\u003d\"http://download.cirros-cloud.net/\""},{"line_number":40,"context_line":"                       \"0.3.2/cirros-0.3.2-x86_64-disk.img\","},{"line_number":41,"context_line":"               help\u003d\"CirrOS image URL\")"},{"line_number":42,"context_line":"]"},{"line_number":43,"context_line":""},{"line_number":44,"context_line":"ROLE_OPTS \u003d ["}],"source_content_type":"text/x-python","patch_set":15,"id":"9a1a9d01_4f1ff55a","line":41,"updated":"2015-09-30 05:29:02.000000000","message":"Hmmm... OpenStack VM Image Guide suggests 0.3.4 version, are there some reasons why to use 0.3.2?","commit_id":"bd04b4c623bc1037baccc8e8f6bde21c8deda04c"},{"author":{"_account_id":7428,"name":"Yaroslav Lobankov","email":"lobankovyv@gmail.com","username":"ylobankov"},"change_message_id":"c8c93d045186445e2e66d06f1ac59135e455166a","unresolved":false,"context_lines":[{"line_number":38,"context_line":"    cfg.StrOpt(\"cirros_img_url\","},{"line_number":39,"context_line":"               default\u003d\"http://download.cirros-cloud.net/\""},{"line_number":40,"context_line":"                       \"0.3.2/cirros-0.3.2-x86_64-disk.img\","},{"line_number":41,"context_line":"               help\u003d\"CirrOS image URL\")"},{"line_number":42,"context_line":"]"},{"line_number":43,"context_line":""},{"line_number":44,"context_line":"ROLE_OPTS \u003d ["}],"source_content_type":"text/x-python","patch_set":15,"id":"9a1a9d01_8337264c","line":41,"in_reply_to":"9a1a9d01_4f1ff55a","updated":"2015-09-30 08:27:20.000000000","message":"No, let\u0027s use 0.3.4.","commit_id":"bd04b4c623bc1037baccc8e8f6bde21c8deda04c"},{"author":{"_account_id":6172,"name":"Boris Pavlovic","email":"boris@pavlovic.me","username":"boris-42"},"change_message_id":"3119a23e625fe8b2c08ce5e6073146c9e07b360f","unresolved":false,"context_lines":[{"line_number":121,"context_line":"                        img_file.flush()"},{"line_number":122,"context_line":"            os.rename(img_path + \".tmp\", img_path)"},{"line_number":123,"context_line":"        else:"},{"line_number":124,"context_line":"            if response.status_code \u003d\u003d 404:"},{"line_number":125,"context_line":"                msg \u003d _(\"Error on downloading CirrOS image, possibly \""},{"line_number":126,"context_line":"                        \"invalid image version or image name in rally.conf\")"},{"line_number":127,"context_line":"            else:"}],"source_content_type":"text/x-python","patch_set":15,"id":"9a1a9d01_51738a15","line":124,"updated":"2015-09-27 05:24:09.000000000","message":"Imho this means only one thing \"Image was not found\" and there is no possibility here, please address message","commit_id":"bd04b4c623bc1037baccc8e8f6bde21c8deda04c"},{"author":{"_account_id":6172,"name":"Boris Pavlovic","email":"boris@pavlovic.me","username":"boris-42"},"change_message_id":"3119a23e625fe8b2c08ce5e6073146c9e07b360f","unresolved":false,"context_lines":[{"line_number":129,"context_line":"                        \"HTTP error code %s\") % response.getcode()"},{"line_number":130,"context_line":"            raise TempestConfigCreationFailure(msg)"},{"line_number":131,"context_line":""},{"line_number":132,"context_line":"    def _create_keystone_roles(self):"},{"line_number":133,"context_line":"        self._create_role(CONF.role.swift_operator_role)"},{"line_number":134,"context_line":"        self._create_role(CONF.role.swift_reseller_admin_role)"},{"line_number":135,"context_line":"        self._create_role(CONF.role.heat_stack_owner_role)"}],"source_content_type":"text/x-python","patch_set":15,"id":"9a1a9d01_d10f9a86","line":132,"updated":"2015-09-27 05:24:09.000000000","message":"actually those are tempest related roles I believe","commit_id":"bd04b4c623bc1037baccc8e8f6bde21c8deda04c"},{"author":{"_account_id":6172,"name":"Boris Pavlovic","email":"boris@pavlovic.me","username":"boris-42"},"change_message_id":"3119a23e625fe8b2c08ce5e6073146c9e07b360f","unresolved":false,"context_lines":[{"line_number":130,"context_line":"            raise TempestConfigCreationFailure(msg)"},{"line_number":131,"context_line":""},{"line_number":132,"context_line":"    def _create_keystone_roles(self):"},{"line_number":133,"context_line":"        self._create_role(CONF.role.swift_operator_role)"},{"line_number":134,"context_line":"        self._create_role(CONF.role.swift_reseller_admin_role)"},{"line_number":135,"context_line":"        self._create_role(CONF.role.heat_stack_owner_role)"},{"line_number":136,"context_line":"        self._create_role(CONF.role.heat_stack_user_role)"}],"source_content_type":"text/x-python","patch_set":15,"id":"9a1a9d01_312136fc","line":133,"updated":"2015-09-27 05:24:09.000000000","message":"We should keep clean cloud after run. \n\nI would suggest to use python context and with constuction\n\n\n   with tempest_roles(): \n       # do the tempet run\n\n   inside tempest_roles.__enter__ you can create roles and in __exit__ remove them (if they didn\u0027t exist before this run)","commit_id":"bd04b4c623bc1037baccc8e8f6bde21c8deda04c"},{"author":{"_account_id":6172,"name":"Boris Pavlovic","email":"boris@pavlovic.me","username":"boris-42"},"change_message_id":"3119a23e625fe8b2c08ce5e6073146c9e07b360f","unresolved":false,"context_lines":[{"line_number":136,"context_line":"        self._create_role(CONF.role.heat_stack_user_role)"},{"line_number":137,"context_line":""},{"line_number":138,"context_line":"    def _create_role(self, role_name):"},{"line_number":139,"context_line":"        if not self._get_role(role_name):"},{"line_number":140,"context_line":"            try:"},{"line_number":141,"context_line":"                self.keystone.roles.create(role_name)"},{"line_number":142,"context_line":"            except Exception as exc:"}],"source_content_type":"text/x-python","patch_set":15,"id":"9a1a9d01_91692228","line":139,"updated":"2015-09-27 05:24:09.000000000","message":"this is not optimal algorithm to create roles imho: \n\n - You are doing N list of roles (which is slow operation if you compare it to python) \n\n - You are looking N times over list to find does role exist or not \n\n - You are using copy-paste for creating roles\n\nso \n\n  class TempestRoles(object): \n\n    def __init__(self, roles): \n        self.roles \u003d roles\n\n    def __ender__(self): \n         self.created_roles \u003d []\n         existing_roles \u003d  set(r.name for r in self.clients(\"keystone\").roles.list())\n         \n         for r in self.roles: \n             if r not in existing_roles:\n                self.created_roles.append(\n                    self.clients(\"keystone\").roles.create(role_name))\n\n    def __exit__(self ,type, value, traceback): \n          for r in self.created_roles: \n               r.delete()","commit_id":"bd04b4c623bc1037baccc8e8f6bde21c8deda04c"},{"author":{"_account_id":6172,"name":"Boris Pavlovic","email":"boris@pavlovic.me","username":"boris-42"},"change_message_id":"3119a23e625fe8b2c08ce5e6073146c9e07b360f","unresolved":false,"context_lines":[{"line_number":138,"context_line":"    def _create_role(self, role_name):"},{"line_number":139,"context_line":"        if not self._get_role(role_name):"},{"line_number":140,"context_line":"            try:"},{"line_number":141,"context_line":"                self.keystone.roles.create(role_name)"},{"line_number":142,"context_line":"            except Exception as exc:"},{"line_number":143,"context_line":"                raise TempestConfigCreationFailure(exc)"},{"line_number":144,"context_line":""}],"source_content_type":"text/x-python","patch_set":15,"id":"9a1a9d01_511ceac0","line":141,"updated":"2015-09-27 05:24:09.000000000","message":"actually I would prefer to use here something like: \n\n\n   self.clients(\"keystone\") instead of self.kystone (to make it more unfifed with the rest of rally code)","commit_id":"bd04b4c623bc1037baccc8e8f6bde21c8deda04c"},{"author":{"_account_id":6172,"name":"Boris Pavlovic","email":"boris@pavlovic.me","username":"boris-42"},"change_message_id":"3119a23e625fe8b2c08ce5e6073146c9e07b360f","unresolved":false,"context_lines":[{"line_number":151,"context_line":""},{"line_number":152,"context_line":"        return role"},{"line_number":153,"context_line":""},{"line_number":154,"context_line":"    def _get_url(self, service_type):"},{"line_number":155,"context_line":"        for service in self.keystone.auth_ref[\"serviceCatalog\"]:"},{"line_number":156,"context_line":"            if self.services_map.get(service[\"type\"]) \u003d\u003d service_type:"},{"line_number":157,"context_line":"                return service[\"endpoints\"][0][\"publicURL\"]"}],"source_content_type":"text/x-python","patch_set":15,"id":"9a1a9d01_f1609e37","line":154,"updated":"2015-09-27 05:24:09.000000000","message":"It will be better to do clear names, like: \n\n  _get_service_url \n\notherwise it is not clear what url are you getting.","commit_id":"bd04b4c623bc1037baccc8e8f6bde21c8deda04c"},{"author":{"_account_id":6172,"name":"Boris Pavlovic","email":"boris@pavlovic.me","username":"boris-42"},"change_message_id":"3119a23e625fe8b2c08ce5e6073146c9e07b360f","unresolved":false,"context_lines":[{"line_number":213,"context_line":"        for flv_ram in [64, 128]:"},{"line_number":214,"context_line":"            if flv_ram not in flavors_ram_map:"},{"line_number":215,"context_line":"                try:"},{"line_number":216,"context_line":"                    flavor \u003d novaclient.flavors.create("},{"line_number":217,"context_line":"                        \"m1.rally-verify-flv-%s\" % uuid.uuid4(),"},{"line_number":218,"context_line":"                        ram\u003dflv_ram, vcpus\u003d1, disk\u003d0)"},{"line_number":219,"context_line":"                except Exception as e:"}],"source_content_type":"text/x-python","patch_set":15,"id":"9a1a9d01_b15a2682","line":216,"updated":"2015-09-27 05:24:09.000000000","message":"same story as for roles. I believe we can create better context, called  \"TempestResources\"\n\nthat will manage all resources inside it self.","commit_id":"bd04b4c623bc1037baccc8e8f6bde21c8deda04c"},{"author":{"_account_id":14743,"name":"Viktor Tikkanen","email":"viktor.tikkanen@nokia.com","username":"vitikkan"},"change_message_id":"bd502d8714252d38d44a31595c92043072147936","unresolved":false,"context_lines":[{"line_number":270,"context_line":"            novaclient \u003d self.clients.nova()"},{"line_number":271,"context_line":"            net_name \u003d next(net.human_id for net in novaclient.networks.list()"},{"line_number":272,"context_line":"                            if net.human_id is not None)"},{"line_number":273,"context_line":"            self.conf.set(\"compute\", \"fixed_network_name\", net_name)"},{"line_number":274,"context_line":"            self.conf.set(\"compute\", \"network_for_ssh\", net_name)"},{"line_number":275,"context_line":""},{"line_number":276,"context_line":"    def configure_network_feature_enabled("}],"source_content_type":"text/x-python","patch_set":15,"id":"9a1a9d01_e314e74d","line":273,"updated":"2015-09-30 05:29:02.000000000","message":"Is there some reason why fixed_network_name will be configured only when neutron service is not available? It seems that some basic tempest test cases (like those from tempest.api.compute.admin.test_servers) fail with \"Multiple possible networks found\" error if fixed_network_name is not defined and multiple networks are visible for a tenant (also when neutron service is available).","commit_id":"bd04b4c623bc1037baccc8e8f6bde21c8deda04c"},{"author":{"_account_id":14743,"name":"Viktor Tikkanen","email":"viktor.tikkanen@nokia.com","username":"vitikkan"},"change_message_id":"75e3f2fb1274a7ba8e3699e15ab340bb62e0d861","unresolved":false,"context_lines":[{"line_number":270,"context_line":"            novaclient \u003d self.clients.nova()"},{"line_number":271,"context_line":"            net_name \u003d next(net.human_id for net in novaclient.networks.list()"},{"line_number":272,"context_line":"                            if net.human_id is not None)"},{"line_number":273,"context_line":"            self.conf.set(\"compute\", \"fixed_network_name\", net_name)"},{"line_number":274,"context_line":"            self.conf.set(\"compute\", \"network_for_ssh\", net_name)"},{"line_number":275,"context_line":""},{"line_number":276,"context_line":"    def configure_network_feature_enabled("}],"source_content_type":"text/x-python","patch_set":15,"id":"9a1a9d01_6d6f4afc","line":273,"in_reply_to":"9a1a9d01_0188e4c3","updated":"2015-09-30 15:49:13.000000000","message":"Actually I was testing this in a \"plain\" tempest setup and allow_tenant_isolation is true there. The problem is that there are still more than one network visible by tenants.\n\nIf I understand right, specifying allow_tenant_isolation as true will help only in such configurations where only one (let\u0027s say private) network is available for a tenant (there may be also e.g. non-shared \"external\" networks owned by admin and visible to other tenants but they are not taken into account when creating an instance).","commit_id":"bd04b4c623bc1037baccc8e8f6bde21c8deda04c"},{"author":{"_account_id":7428,"name":"Yaroslav Lobankov","email":"lobankovyv@gmail.com","username":"ylobankov"},"change_message_id":"b8d0d3fc2a5f15e19de83e522a2804cbe7297734","unresolved":false,"context_lines":[{"line_number":270,"context_line":"            novaclient \u003d self.clients.nova()"},{"line_number":271,"context_line":"            net_name \u003d next(net.human_id for net in novaclient.networks.list()"},{"line_number":272,"context_line":"                            if net.human_id is not None)"},{"line_number":273,"context_line":"            self.conf.set(\"compute\", \"fixed_network_name\", net_name)"},{"line_number":274,"context_line":"            self.conf.set(\"compute\", \"network_for_ssh\", net_name)"},{"line_number":275,"context_line":""},{"line_number":276,"context_line":"    def configure_network_feature_enabled("}],"source_content_type":"text/x-python","patch_set":15,"id":"9a1a9d01_0188e4c3","line":273,"in_reply_to":"9a1a9d01_c4d6844e","updated":"2015-09-30 13:19:21.000000000","message":"Viktor, are you 100% sure that allow_tenant_isolation \u003d true? :) Please, check it ;) https://github.com/openstack/rally/blob/master/rally/verification/tempest/config.ini#L7","commit_id":"bd04b4c623bc1037baccc8e8f6bde21c8deda04c"},{"author":{"_account_id":7428,"name":"Yaroslav Lobankov","email":"lobankovyv@gmail.com","username":"ylobankov"},"change_message_id":"c8c93d045186445e2e66d06f1ac59135e455166a","unresolved":false,"context_lines":[{"line_number":270,"context_line":"            novaclient \u003d self.clients.nova()"},{"line_number":271,"context_line":"            net_name \u003d next(net.human_id for net in novaclient.networks.list()"},{"line_number":272,"context_line":"                            if net.human_id is not None)"},{"line_number":273,"context_line":"            self.conf.set(\"compute\", \"fixed_network_name\", net_name)"},{"line_number":274,"context_line":"            self.conf.set(\"compute\", \"network_for_ssh\", net_name)"},{"line_number":275,"context_line":""},{"line_number":276,"context_line":"    def configure_network_feature_enabled("}],"source_content_type":"text/x-python","patch_set":15,"id":"9a1a9d01_e3e4e2ac","line":273,"in_reply_to":"9a1a9d01_e314e74d","updated":"2015-09-30 08:27:20.000000000","message":"Viktor, if the allow_tenant_isolation option is set to True (it is the default value in Tempest), we don\u0027t need to configure the fixed_network_name option when Neutron is enabled.","commit_id":"bd04b4c623bc1037baccc8e8f6bde21c8deda04c"},{"author":{"_account_id":14743,"name":"Viktor Tikkanen","email":"viktor.tikkanen@nokia.com","username":"vitikkan"},"change_message_id":"c934c44cf7c3dbd295c5f9b430d41b24cf013d2d","unresolved":false,"context_lines":[{"line_number":270,"context_line":"            novaclient \u003d self.clients.nova()"},{"line_number":271,"context_line":"            net_name \u003d next(net.human_id for net in novaclient.networks.list()"},{"line_number":272,"context_line":"                            if net.human_id is not None)"},{"line_number":273,"context_line":"            self.conf.set(\"compute\", \"fixed_network_name\", net_name)"},{"line_number":274,"context_line":"            self.conf.set(\"compute\", \"network_for_ssh\", net_name)"},{"line_number":275,"context_line":""},{"line_number":276,"context_line":"    def configure_network_feature_enabled("}],"source_content_type":"text/x-python","patch_set":15,"id":"9a1a9d01_c4d6844e","line":273,"in_reply_to":"9a1a9d01_e3e4e2ac","updated":"2015-09-30 09:22:21.000000000","message":"Strange... I have allow_tenant_isolation set to true but still get  \"Multiple possible networks found\" error if fixed_network_name is not defined.","commit_id":"bd04b4c623bc1037baccc8e8f6bde21c8deda04c"},{"author":{"_account_id":9545,"name":"Andriy Kurilin","email":"andr.kurilin@gmail.com","username":"akurilin"},"change_message_id":"c7e14372f4e777b39fed6cee1719aed3fed5098a","unresolved":false,"context_lines":[{"line_number":34,"context_line":"IMAGE_OPTS \u003d ["},{"line_number":35,"context_line":"    cfg.StrOpt(\"cirros_img_url\","},{"line_number":36,"context_line":"               default\u003d\"http://download.cirros-cloud.net/\""},{"line_number":37,"context_line":"                       \"0.3.4/cirros-0.3.4-x86_64-disk.img\","},{"line_number":38,"context_line":"               help\u003d\"CirrOS image URL\")"},{"line_number":39,"context_line":"]"},{"line_number":40,"context_line":""}],"source_content_type":"text/x-python","patch_set":25,"id":"7a2fa921_5f3f6725","line":37,"updated":"2015-10-05 15:08:27.000000000","message":"This is the latest image?","commit_id":"eb9463a345f55a7bbc64e59c38367b6e491b3af8"},{"author":{"_account_id":7428,"name":"Yaroslav Lobankov","email":"lobankovyv@gmail.com","username":"ylobankov"},"change_message_id":"bd3bdd3d31839253daf6b33c118c87cd2dbde6a2","unresolved":false,"context_lines":[{"line_number":34,"context_line":"IMAGE_OPTS \u003d ["},{"line_number":35,"context_line":"    cfg.StrOpt(\"cirros_img_url\","},{"line_number":36,"context_line":"               default\u003d\"http://download.cirros-cloud.net/\""},{"line_number":37,"context_line":"                       \"0.3.4/cirros-0.3.4-x86_64-disk.img\","},{"line_number":38,"context_line":"               help\u003d\"CirrOS image URL\")"},{"line_number":39,"context_line":"]"},{"line_number":40,"context_line":""}],"source_content_type":"text/x-python","patch_set":25,"id":"7a2fa921_85ce0c59","line":37,"in_reply_to":"7a2fa921_5f3f6725","updated":"2015-10-05 15:42:37.000000000","message":"Yep.","commit_id":"eb9463a345f55a7bbc64e59c38367b6e491b3af8"},{"author":{"_account_id":9545,"name":"Andriy Kurilin","email":"andr.kurilin@gmail.com","username":"akurilin"},"change_message_id":"c7e14372f4e777b39fed6cee1719aed3fed5098a","unresolved":false,"context_lines":[{"line_number":56,"context_line":""},{"line_number":57,"context_line":"CONF \u003d cfg.CONF"},{"line_number":58,"context_line":"CONF.register_opts(IMAGE_OPTS, \"image\")"},{"line_number":59,"context_line":"CONF.register_opts(ROLE_OPTS, \"role\")"},{"line_number":60,"context_line":""},{"line_number":61,"context_line":"IMAGE_NAME \u003d parse.urlparse(CONF.image.cirros_img_url).path.split(\"/\")[-1]"},{"line_number":62,"context_line":""}],"source_content_type":"text/x-python","patch_set":25,"id":"7a2fa921_5f6d2731","line":59,"updated":"2015-10-05 15:08:27.000000000","message":"you should add new group to rally.common.opts and launch `tox -egenconfig` to update sample config file.","commit_id":"eb9463a345f55a7bbc64e59c38367b6e491b3af8"},{"author":{"_account_id":7428,"name":"Yaroslav Lobankov","email":"lobankovyv@gmail.com","username":"ylobankov"},"change_message_id":"bd3bdd3d31839253daf6b33c118c87cd2dbde6a2","unresolved":false,"context_lines":[{"line_number":56,"context_line":""},{"line_number":57,"context_line":"CONF \u003d cfg.CONF"},{"line_number":58,"context_line":"CONF.register_opts(IMAGE_OPTS, \"image\")"},{"line_number":59,"context_line":"CONF.register_opts(ROLE_OPTS, \"role\")"},{"line_number":60,"context_line":""},{"line_number":61,"context_line":"IMAGE_NAME \u003d parse.urlparse(CONF.image.cirros_img_url).path.split(\"/\")[-1]"},{"line_number":62,"context_line":""}],"source_content_type":"text/x-python","patch_set":25,"id":"7a2fa921_a5fd4870","line":59,"in_reply_to":"7a2fa921_5f6d2731","updated":"2015-10-05 15:42:37.000000000","message":"Will do. Thanks.","commit_id":"eb9463a345f55a7bbc64e59c38367b6e491b3af8"},{"author":{"_account_id":9545,"name":"Andriy Kurilin","email":"andr.kurilin@gmail.com","username":"akurilin"},"change_message_id":"a5d2c8fcc9e249e9ca4cad156c07e5a246b20b82","unresolved":false,"context_lines":[{"line_number":294,"context_line":"            LOG.debug(\"Option \u0027%s\u0027 is not configured\" % option)"},{"line_number":295,"context_line":"            resource \u003d create_method(*args, **kwargs)"},{"line_number":296,"context_line":"            self.conf.set(\"compute\", option, resource.id)"},{"line_number":297,"context_line":"            _write_config(self.conf_path, self.conf)"},{"line_number":298,"context_line":"            LOG.debug(\"Option \u0027{opt}\u0027 is configured. {opt} \u003d {resource_id}\""},{"line_number":299,"context_line":"                      .format(opt\u003doption, resource_id\u003dresource.id))"},{"line_number":300,"context_line":"        else:"}],"source_content_type":"text/x-python","patch_set":26,"id":"7a2fa921_24ba90e2","line":297,"updated":"2015-10-05 20:28:41.000000000","message":"I dislike re-writing config file for every option. Why we cann\u0027t do it once for all \"created\" resources?","commit_id":"ecbc5a71c8c0052663a42d54e8100a67f6c2774a"},{"author":{"_account_id":6172,"name":"Boris Pavlovic","email":"boris@pavlovic.me","username":"boris-42"},"change_message_id":"17f8981dac5f751676b67ab212b6354749990425","unresolved":false,"context_lines":[{"line_number":342,"context_line":"    def _cleanup_roles(self):"},{"line_number":343,"context_line":"        for role in self._created_roles:"},{"line_number":344,"context_line":"            LOG.debug(\"Deleting role \u0027%s\u0027\" % role.name)"},{"line_number":345,"context_line":"            role.delete()"},{"line_number":346,"context_line":""},{"line_number":347,"context_line":"    def _cleanup_resource(self, resource_type, created_resources):"},{"line_number":348,"context_line":"        for res in created_resources:"}],"source_content_type":"text/x-python","patch_set":27,"id":"7a2fa921_5f4f4e92","line":345,"updated":"2015-10-06 03:56:19.000000000","message":"There are 2 problems with this code: \n\n  - If tempest run will take a lot of time token can expire and this will fail, so it is better to create clients here \n\n  - If this raises exception there are no retries (you can use https://github.com/openstack/rally/blob/master/rally/common/utils.py#L286-L304) \n\n   - If this raises exception rest of resources won\u0027t be cleaned up. \n\n\nSo I would suggest to make a separated patch that will address these issues","commit_id":"1dfb99574a78412785d97e3818dcaaf2b5571489"}]}
