)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":8576,"name":"Yair Fried","email":"yfried@redhat.com","username":"yfried"},"change_message_id":"5a853b854ef8bef249fb17670fb5c15399a0d225","unresolved":false,"context_lines":[{"line_number":12,"context_line":"be used to create servers. So all servers created by Tempest will use"},{"line_number":13,"context_line":"the same network and it doesn\u0027t matter how many shared internal"},{"line_number":14,"context_line":"networks has a cloud."},{"line_number":15,"context_line":""},{"line_number":16,"context_line":"Unit tests for new methods and missing unit tests were added."},{"line_number":17,"context_line":""},{"line_number":18,"context_line":"Change-Id: I487806fe9a8ccd8528922cfaa2700df30961ef9b"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":20,"id":"3a29b11f_ac98101d","line":15,"updated":"2015-10-22 10:30:12.000000000","message":"This patch also creates the exec_wrapper. Might be better to split patches","commit_id":"326492dca18c3f9a060bf56eb05e914d6458f557"},{"author":{"_account_id":7428,"name":"Yaroslav Lobankov","email":"lobankovyv@gmail.com","username":"ylobankov"},"change_message_id":"c78cd1b47f76fb27267071edbb37cb4a79dda62b","unresolved":false,"context_lines":[{"line_number":12,"context_line":"be used to create servers. So all servers created by Tempest will use"},{"line_number":13,"context_line":"the same network and it doesn\u0027t matter how many shared internal"},{"line_number":14,"context_line":"networks has a cloud."},{"line_number":15,"context_line":""},{"line_number":16,"context_line":"Unit tests for new methods and missing unit tests were added."},{"line_number":17,"context_line":""},{"line_number":18,"context_line":"Change-Id: I487806fe9a8ccd8528922cfaa2700df30961ef9b"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":20,"id":"3a29b11f_fda9d024","line":15,"in_reply_to":"3a29b11f_ac98101d","updated":"2015-10-22 11:38:03.000000000","message":"I could, but I\u0027d prefer to leave these changes in this patch :)","commit_id":"326492dca18c3f9a060bf56eb05e914d6458f557"},{"author":{"_account_id":8576,"name":"Yair Fried","email":"yfried@redhat.com","username":"yfried"},"change_message_id":"eabe4b73d658d1b17b3d38417bb6343ab212b6b9","unresolved":false,"context_lines":[{"line_number":5,"context_line":"CommitDate: 2015-11-09 23:06:43 +0300"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"[Verify] Adding creation of network resources to Tempest context"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Tempest creates private network resources for all tests by default."},{"line_number":10,"context_line":"We, of course, can use it, but it will not work in some cases. For example,"},{"line_number":11,"context_line":"when a cloud has a few networks that are visible in all tenants. In this"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":24,"id":"da85f559_0aedd424","line":8,"updated":"2015-11-10 11:11:33.000000000","message":"please split this paragraph so problem and solutions are clear.","commit_id":"b13f182d76f97c5d5dddf1ef3008d14f5958bc12"},{"author":{"_account_id":8576,"name":"Yair Fried","email":"yfried@redhat.com","username":"yfried"},"change_message_id":"eabe4b73d658d1b17b3d38417bb6343ab212b6b9","unresolved":false,"context_lines":[{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Tempest creates private network resources for all tests by default."},{"line_number":10,"context_line":"We, of course, can use it, but it will not work in some cases. For example,"},{"line_number":11,"context_line":"when a cloud has a few networks that are visible in all tenants. In this"},{"line_number":12,"context_line":"case Tempest tests will fail with error \"Multiple possible networks found\"."},{"line_number":13,"context_line":"The approach when we create private network resources before test run and"},{"line_number":14,"context_line":"configure the fixed_network_name option allows us to avoid such failures."}],"source_content_type":"text/x-gerrit-commit-message","patch_set":24,"id":"da85f559_ea3730ae","line":11,"range":{"start_line":11,"start_character":17,"end_line":11,"end_character":63},"updated":"2015-11-10 11:11:33.000000000","message":"\"one or more shared networks\"","commit_id":"b13f182d76f97c5d5dddf1ef3008d14f5958bc12"},{"author":{"_account_id":8576,"name":"Yair Fried","email":"yfried@redhat.com","username":"yfried"},"change_message_id":"eabe4b73d658d1b17b3d38417bb6343ab212b6b9","unresolved":false,"context_lines":[{"line_number":9,"context_line":"Tempest creates private network resources for all tests by default."},{"line_number":10,"context_line":"We, of course, can use it, but it will not work in some cases. For example,"},{"line_number":11,"context_line":"when a cloud has a few networks that are visible in all tenants. In this"},{"line_number":12,"context_line":"case Tempest tests will fail with error \"Multiple possible networks found\"."},{"line_number":13,"context_line":"The approach when we create private network resources before test run and"},{"line_number":14,"context_line":"configure the fixed_network_name option allows us to avoid such failures."},{"line_number":15,"context_line":"Also, there is a possibility not to create private network resources."}],"source_content_type":"text/x-gerrit-commit-message","patch_set":24,"id":"da85f559_8a47841c","line":12,"updated":"2015-11-10 11:11:33.000000000","message":"problem ends here.","commit_id":"b13f182d76f97c5d5dddf1ef3008d14f5958bc12"},{"author":{"_account_id":8576,"name":"Yair Fried","email":"yfried@redhat.com","username":"yfried"},"change_message_id":"eabe4b73d658d1b17b3d38417bb6343ab212b6b9","unresolved":false,"context_lines":[{"line_number":10,"context_line":"We, of course, can use it, but it will not work in some cases. For example,"},{"line_number":11,"context_line":"when a cloud has a few networks that are visible in all tenants. In this"},{"line_number":12,"context_line":"case Tempest tests will fail with error \"Multiple possible networks found\"."},{"line_number":13,"context_line":"The approach when we create private network resources before test run and"},{"line_number":14,"context_line":"configure the fixed_network_name option allows us to avoid such failures."},{"line_number":15,"context_line":"Also, there is a possibility not to create private network resources."},{"line_number":16,"context_line":"In this case we have to configure the fixed_network_name option manually"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":24,"id":"da85f559_aa5848fb","line":13,"range":{"start_line":13,"start_character":0,"end_line":13,"end_character":20},"updated":"2015-11-10 11:11:33.000000000","message":"Solution 1:","commit_id":"b13f182d76f97c5d5dddf1ef3008d14f5958bc12"},{"author":{"_account_id":8576,"name":"Yair Fried","email":"yfried@redhat.com","username":"yfried"},"change_message_id":"eabe4b73d658d1b17b3d38417bb6343ab212b6b9","unresolved":false,"context_lines":[{"line_number":12,"context_line":"case Tempest tests will fail with error \"Multiple possible networks found\"."},{"line_number":13,"context_line":"The approach when we create private network resources before test run and"},{"line_number":14,"context_line":"configure the fixed_network_name option allows us to avoid such failures."},{"line_number":15,"context_line":"Also, there is a possibility not to create private network resources."},{"line_number":16,"context_line":"In this case we have to configure the fixed_network_name option manually"},{"line_number":17,"context_line":"in the Tempest config file and then the Tempest context will not create"},{"line_number":18,"context_line":"network resources."},{"line_number":19,"context_line":""}],"source_content_type":"text/x-gerrit-commit-message","patch_set":24,"id":"da85f559_ea2c104c","line":16,"range":{"start_line":15,"start_character":0,"end_line":16,"end_character":23},"updated":"2015-11-10 11:11:33.000000000","message":"Solution 2:","commit_id":"b13f182d76f97c5d5dddf1ef3008d14f5958bc12"},{"author":{"_account_id":8576,"name":"Yair Fried","email":"yfried@redhat.com","username":"yfried"},"change_message_id":"eabe4b73d658d1b17b3d38417bb6343ab212b6b9","unresolved":false,"context_lines":[{"line_number":16,"context_line":"In this case we have to configure the fixed_network_name option manually"},{"line_number":17,"context_line":"in the Tempest config file and then the Tempest context will not create"},{"line_number":18,"context_line":"network resources."},{"line_number":19,"context_line":""},{"line_number":20,"context_line":"Unit tests for new methods and missing unit tests were added."},{"line_number":21,"context_line":""},{"line_number":22,"context_line":"Change-Id: I487806fe9a8ccd8528922cfaa2700df30961ef9b"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":24,"id":"da85f559_4a167cf2","line":19,"updated":"2015-11-10 11:11:33.000000000","message":"I don\u0027t understand how solution 1 is different from solution 2. could you please explain? Sorry.","commit_id":"b13f182d76f97c5d5dddf1ef3008d14f5958bc12"},{"author":{"_account_id":8576,"name":"Yair Fried","email":"yfried@redhat.com","username":"yfried"},"change_message_id":"eabe4b73d658d1b17b3d38417bb6343ab212b6b9","unresolved":false,"context_lines":[{"line_number":18,"context_line":"network resources."},{"line_number":19,"context_line":""},{"line_number":20,"context_line":"Unit tests for new methods and missing unit tests were added."},{"line_number":21,"context_line":""},{"line_number":22,"context_line":"Change-Id: I487806fe9a8ccd8528922cfaa2700df30961ef9b"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":24,"id":"da85f559_0abe34d4","line":21,"updated":"2015-11-10 11:11:33.000000000","message":"exec_wrapper created","commit_id":"b13f182d76f97c5d5dddf1ef3008d14f5958bc12"},{"author":{"_account_id":8576,"name":"Yair Fried","email":"yfried@redhat.com","username":"yfried"},"change_message_id":"6fa428c6a0296b796ef6f68410dd2c8760f46163","unresolved":false,"context_lines":[{"line_number":22,"context_line":"    if the cloud has some shared networks, we will create our own shared"},{"line_number":23,"context_line":"    network and specify its name in the Tempest config file;"},{"line_number":24,"context_line":""},{"line_number":25,"context_line":"    if the cloud has some shared networks and a user will configure the fixed_"},{"line_number":26,"context_line":"    network_name option in the Tempest config file manually, in this case our"},{"line_number":27,"context_line":"    own shared network will not be created and the specified network in the"},{"line_number":28,"context_line":"    tempest.conf file will be used by Tempest."},{"line_number":29,"context_line":""},{"line_number":30,"context_line":"The exec_wrapper function was added."},{"line_number":31,"context_line":"Unit tests for new methods and missing unit tests were added."},{"line_number":32,"context_line":""}],"source_content_type":"text/x-gerrit-commit-message","patch_set":25,"id":"da85f559_f8c05c2c","line":29,"range":{"start_line":25,"start_character":0,"end_line":29,"end_character":0},"updated":"2015-11-10 13:15:28.000000000","message":"If user configured a fixed_network_name then we don\u0027t need to do anything.","commit_id":"3523c5ba0f1b0f09d312344632c03041cf098097"}],"rally/common/utils.py":[{"author":{"_account_id":8576,"name":"Yair Fried","email":"yfried@redhat.com","username":"yfried"},"change_message_id":"eabe4b73d658d1b17b3d38417bb6343ab212b6b9","unresolved":false,"context_lines":[{"line_number":136,"context_line":"            self.__int.value \u003d 0"},{"line_number":137,"context_line":""},{"line_number":138,"context_line":""},{"line_number":139,"context_line":"def exc_wrapper(exc, msg):"},{"line_number":140,"context_line":"    def decorator(f):"},{"line_number":141,"context_line":"        @functools.wraps(f)"},{"line_number":142,"context_line":"        def wrapper(self, *args, **kwargs):"}],"source_content_type":"text/x-python","patch_set":24,"id":"da85f559_8ae30405","line":139,"updated":"2015-11-10 11:11:33.000000000","message":"Please add a docstring here","commit_id":"b13f182d76f97c5d5dddf1ef3008d14f5958bc12"},{"author":{"_account_id":7428,"name":"Yaroslav Lobankov","email":"lobankovyv@gmail.com","username":"ylobankov"},"change_message_id":"bfbbef67ad4d5370c80368b03ae4ebcdd30d94b5","unresolved":false,"context_lines":[{"line_number":136,"context_line":"            self.__int.value \u003d 0"},{"line_number":137,"context_line":""},{"line_number":138,"context_line":""},{"line_number":139,"context_line":"def exc_wrapper(exc, msg):"},{"line_number":140,"context_line":"    def decorator(f):"},{"line_number":141,"context_line":"        @functools.wraps(f)"},{"line_number":142,"context_line":"        def wrapper(self, *args, **kwargs):"}],"source_content_type":"text/x-python","patch_set":24,"id":"da85f559_62a6fb11","line":139,"in_reply_to":"da85f559_8ae30405","updated":"2015-11-10 12:52:34.000000000","message":"Done","commit_id":"b13f182d76f97c5d5dddf1ef3008d14f5958bc12"},{"author":{"_account_id":8576,"name":"Yair Fried","email":"yfried@redhat.com","username":"yfried"},"change_message_id":"6fa428c6a0296b796ef6f68410dd2c8760f46163","unresolved":false,"context_lines":[{"line_number":140,"context_line":"    \"\"\"An exception wrapper for any method of a class."},{"line_number":141,"context_line":""},{"line_number":142,"context_line":"    The wrapper allows us to produce a certain exception if any failure"},{"line_number":143,"context_line":"    happens inside the method."},{"line_number":144,"context_line":""},{"line_number":145,"context_line":"    :param exc: Exception to raise if any failure happens"},{"line_number":146,"context_line":"    :param msg: Short message describing the reason of a failure"}],"source_content_type":"text/x-python","patch_set":25,"id":"da85f559_381d840f","line":143,"updated":"2015-11-10 13:15:28.000000000","message":"And log original exception","commit_id":"3523c5ba0f1b0f09d312344632c03041cf098097"}],"rally/verification/tempest/config.py":[{"author":{"_account_id":6172,"name":"Boris Pavlovic","email":"boris@pavlovic.me","username":"boris-42"},"change_message_id":"8dfc591aa54e19e5e0eb67abb6fe515fd837ea6e","unresolved":false,"context_lines":[{"line_number":287,"context_line":"        # expiration."},{"line_number":288,"context_line":"        self.clients.clear()"},{"line_number":289,"context_line":"        keystoneclient \u003d self.clients.keystone()"},{"line_number":290,"context_line":"        glanceclient \u003d self.clients.glance()"},{"line_number":291,"context_line":"        novaclient \u003d self.clients.nova()"},{"line_number":292,"context_line":""},{"line_number":293,"context_line":"        self._cleanup_tempest_roles(keystoneclient)"}],"source_content_type":"text/x-python","patch_set":13,"id":"5a2ca52d_0362563e","line":290,"updated":"2015-10-16 09:24:17.000000000","message":"this looks terrible just use in all methods like: \n\n  self._cleunp_tempest_roles \n\nself.clients\n\ninstead of passing just part of clients to these methods","commit_id":"a88ba7fcb44e17a2c116d4b8acd2b6af7f0ccca8"},{"author":{"_account_id":6172,"name":"Boris Pavlovic","email":"boris@pavlovic.me","username":"boris-42"},"change_message_id":"8dfc591aa54e19e5e0eb67abb6fe515fd837ea6e","unresolved":false,"context_lines":[{"line_number":290,"context_line":"        glanceclient \u003d self.clients.glance()"},{"line_number":291,"context_line":"        novaclient \u003d self.clients.nova()"},{"line_number":292,"context_line":""},{"line_number":293,"context_line":"        self._cleanup_tempest_roles(keystoneclient)"},{"line_number":294,"context_line":"        self._cleanup_resource("},{"line_number":295,"context_line":"            \"image\", glanceclient.images.delete, self._created_images)"},{"line_number":296,"context_line":"        self._cleanup_resource("}],"source_content_type":"text/x-python","patch_set":13,"id":"5a2ca52d_83dd06e2","line":293,"updated":"2015-10-16 09:24:17.000000000","message":"we should do here try/except or inside this method (otherwise we may leave some resources in cloud)","commit_id":"a88ba7fcb44e17a2c116d4b8acd2b6af7f0ccca8"},{"author":{"_account_id":6172,"name":"Boris Pavlovic","email":"boris@pavlovic.me","username":"boris-42"},"change_message_id":"8dfc591aa54e19e5e0eb67abb6fe515fd837ea6e","unresolved":false,"context_lines":[{"line_number":374,"context_line":"                                       self._created_flavors, **params)"},{"line_number":375,"context_line":"        return flavor"},{"line_number":376,"context_line":""},{"line_number":377,"context_line":"    def _create_network_resources(self):"},{"line_number":378,"context_line":"        neutronclient \u003d self.clients.neutron()"},{"line_number":379,"context_line":"        net \u003d self._create_network(neutronclient)"},{"line_number":380,"context_line":"        subnet \u003d self._create_subnet(neutronclient, net)"}],"source_content_type":"text/x-python","patch_set":13,"id":"5a2ca52d_836f462a","line":377,"updated":"2015-10-16 09:24:17.000000000","message":"Seems like we should get rid of this code and use existing solution for this. \n\ncreate_network of network wrapper: \n\nhttps://github.com/openstack/rally/blob/master/rally/plugins/openstack/wrappers/network.py#L53","commit_id":"a88ba7fcb44e17a2c116d4b8acd2b6af7f0ccca8"},{"author":{"_account_id":8576,"name":"Yair Fried","email":"yfried@redhat.com","username":"yfried"},"change_message_id":"5a853b854ef8bef249fb17670fb5c15399a0d225","unresolved":false,"context_lines":[{"line_number":77,"context_line":"        conf_data.write(conf_file)"},{"line_number":78,"context_line":""},{"line_number":79,"context_line":""},{"line_number":80,"context_line":"def exc_wrapper(exc, msg):"},{"line_number":81,"context_line":"    def decorator(f):"},{"line_number":82,"context_line":"        def wrapper(self, *args, **kwargs):"},{"line_number":83,"context_line":"            try:"}],"source_content_type":"text/x-python","patch_set":20,"id":"3a29b11f_ec80488d","line":80,"updated":"2015-10-22 10:30:12.000000000","message":"@functools.wraps(func)","commit_id":"326492dca18c3f9a060bf56eb05e914d6458f557"},{"author":{"_account_id":7369,"name":"Sergey Skripnick","email":"sskripnick@mirantis.com","username":"redixin"},"change_message_id":"88566b51457bb5828bda5b9c495dc0bdfdf48f49","unresolved":false,"context_lines":[{"line_number":77,"context_line":"        conf_data.write(conf_file)"},{"line_number":78,"context_line":""},{"line_number":79,"context_line":""},{"line_number":80,"context_line":"def exc_wrapper(exc, msg):"},{"line_number":81,"context_line":"    def decorator(f):"},{"line_number":82,"context_line":"        def wrapper(self, *args, **kwargs):"},{"line_number":83,"context_line":"            try:"}],"source_content_type":"text/x-python","patch_set":20,"id":"3a29b11f_e91fdab4","line":80,"updated":"2015-10-22 10:24:59.000000000","message":"This decorator may be useful. Consider about moving it to rally.common.utils. Also it need better name, like wrap_exception","commit_id":"326492dca18c3f9a060bf56eb05e914d6458f557"},{"author":{"_account_id":7428,"name":"Yaroslav Lobankov","email":"lobankovyv@gmail.com","username":"ylobankov"},"change_message_id":"d9ab33e1f82a5bfe41956dbe78bd4d6ec741c37c","unresolved":false,"context_lines":[{"line_number":77,"context_line":"        conf_data.write(conf_file)"},{"line_number":78,"context_line":""},{"line_number":79,"context_line":""},{"line_number":80,"context_line":"def exc_wrapper(exc, msg):"},{"line_number":81,"context_line":"    def decorator(f):"},{"line_number":82,"context_line":"        def wrapper(self, *args, **kwargs):"},{"line_number":83,"context_line":"            try:"}],"source_content_type":"text/x-python","patch_set":20,"id":"3a29b11f_42102357","line":80,"in_reply_to":"3a29b11f_ec80488d","updated":"2015-10-22 11:33:44.000000000","message":"OK, will do.","commit_id":"326492dca18c3f9a060bf56eb05e914d6458f557"},{"author":{"_account_id":7369,"name":"Sergey Skripnick","email":"sskripnick@mirantis.com","username":"redixin"},"change_message_id":"88566b51457bb5828bda5b9c495dc0bdfdf48f49","unresolved":false,"context_lines":[{"line_number":297,"context_line":"    def __exit__(self, exc_type, exc_value, exc_traceback):"},{"line_number":298,"context_line":"        # Tempest tests may take more than 1 hour and we should remove all"},{"line_number":299,"context_line":"        # cached clients sessions to avoid tokens expiration."},{"line_number":300,"context_line":"        self.clients.clear()"},{"line_number":301,"context_line":""},{"line_number":302,"context_line":"        self._cleanup_tempest_roles()"},{"line_number":303,"context_line":"        self._cleanup_images()"}],"source_content_type":"text/x-python","patch_set":20,"id":"3a29b11f_8c6f54fb","line":300,"updated":"2015-10-22 10:24:59.000000000","message":"There should be mechanism in clients for this, isnt it?","commit_id":"326492dca18c3f9a060bf56eb05e914d6458f557"},{"author":{"_account_id":7428,"name":"Yaroslav Lobankov","email":"lobankovyv@gmail.com","username":"ylobankov"},"change_message_id":"d9ab33e1f82a5bfe41956dbe78bd4d6ec741c37c","unresolved":false,"context_lines":[{"line_number":297,"context_line":"    def __exit__(self, exc_type, exc_value, exc_traceback):"},{"line_number":298,"context_line":"        # Tempest tests may take more than 1 hour and we should remove all"},{"line_number":299,"context_line":"        # cached clients sessions to avoid tokens expiration."},{"line_number":300,"context_line":"        self.clients.clear()"},{"line_number":301,"context_line":""},{"line_number":302,"context_line":"        self._cleanup_tempest_roles()"},{"line_number":303,"context_line":"        self._cleanup_images()"}],"source_content_type":"text/x-python","patch_set":20,"id":"3a29b11f_bdecb82a","line":300,"in_reply_to":"3a29b11f_8c6f54fb","updated":"2015-10-22 11:33:44.000000000","message":"I use clients from osclients.py and all client methods are wrapped by @cached decorator. I invoke the clear method to remove all cached clients sessions. What\u0027s wrong with it? :)","commit_id":"326492dca18c3f9a060bf56eb05e914d6458f557"},{"author":{"_account_id":8576,"name":"Yair Fried","email":"yfried@redhat.com","username":"yfried"},"change_message_id":"eabe4b73d658d1b17b3d38417bb6343ab212b6b9","unresolved":false,"context_lines":[{"line_number":281,"context_line":"            neutronclient \u003d self.clients.neutron()"},{"line_number":282,"context_line":"            if neutronclient.list_networks(shared\u003dTrue)[\"networks\"]:"},{"line_number":283,"context_line":"                # If the OpenStack cloud has some networks that are visible"},{"line_number":284,"context_line":"                # in all tenants (i.e. shared networks), we will create own"},{"line_number":285,"context_line":"                # network resources (network, subnet and router) and specify"},{"line_number":286,"context_line":"                # name of the created network in the Tempest config file."},{"line_number":287,"context_line":"                # Such approach will allow us to avoid failures of Tempest"}],"source_content_type":"text/x-python","patch_set":24,"id":"da85f559_aae8487d","line":284,"range":{"start_line":284,"start_character":65,"end_line":284,"end_character":75},"updated":"2015-11-10 11:11:33.000000000","message":"create our own","commit_id":"b13f182d76f97c5d5dddf1ef3008d14f5958bc12"},{"author":{"_account_id":8576,"name":"Yair Fried","email":"yfried@redhat.com","username":"yfried"},"change_message_id":"eabe4b73d658d1b17b3d38417bb6343ab212b6b9","unresolved":false,"context_lines":[{"line_number":280,"context_line":"        if \"neutron\" in self.available_services:"},{"line_number":281,"context_line":"            neutronclient \u003d self.clients.neutron()"},{"line_number":282,"context_line":"            if neutronclient.list_networks(shared\u003dTrue)[\"networks\"]:"},{"line_number":283,"context_line":"                # If the OpenStack cloud has some networks that are visible"},{"line_number":284,"context_line":"                # in all tenants (i.e. shared networks), we will create own"},{"line_number":285,"context_line":"                # network resources (network, subnet and router) and specify"},{"line_number":286,"context_line":"                # name of the created network in the Tempest config file."},{"line_number":287,"context_line":"                # Such approach will allow us to avoid failures of Tempest"}],"source_content_type":"text/x-python","patch_set":24,"id":"da85f559_0abab4c0","line":284,"range":{"start_line":283,"start_character":45,"end_line":284,"end_character":38},"updated":"2015-11-10 11:11:33.000000000","message":"please remove this.","commit_id":"b13f182d76f97c5d5dddf1ef3008d14f5958bc12"},{"author":{"_account_id":7428,"name":"Yaroslav Lobankov","email":"lobankovyv@gmail.com","username":"ylobankov"},"change_message_id":"bfbbef67ad4d5370c80368b03ae4ebcdd30d94b5","unresolved":false,"context_lines":[{"line_number":281,"context_line":"            neutronclient \u003d self.clients.neutron()"},{"line_number":282,"context_line":"            if neutronclient.list_networks(shared\u003dTrue)[\"networks\"]:"},{"line_number":283,"context_line":"                # If the OpenStack cloud has some networks that are visible"},{"line_number":284,"context_line":"                # in all tenants (i.e. shared networks), we will create own"},{"line_number":285,"context_line":"                # network resources (network, subnet and router) and specify"},{"line_number":286,"context_line":"                # name of the created network in the Tempest config file."},{"line_number":287,"context_line":"                # Such approach will allow us to avoid failures of Tempest"}],"source_content_type":"text/x-python","patch_set":24,"id":"da85f559_643febd6","line":284,"in_reply_to":"da85f559_0abab4c0","updated":"2015-11-10 12:52:34.000000000","message":"Done","commit_id":"b13f182d76f97c5d5dddf1ef3008d14f5958bc12"},{"author":{"_account_id":7428,"name":"Yaroslav Lobankov","email":"lobankovyv@gmail.com","username":"ylobankov"},"change_message_id":"bfbbef67ad4d5370c80368b03ae4ebcdd30d94b5","unresolved":false,"context_lines":[{"line_number":281,"context_line":"            neutronclient \u003d self.clients.neutron()"},{"line_number":282,"context_line":"            if neutronclient.list_networks(shared\u003dTrue)[\"networks\"]:"},{"line_number":283,"context_line":"                # If the OpenStack cloud has some networks that are visible"},{"line_number":284,"context_line":"                # in all tenants (i.e. shared networks), we will create own"},{"line_number":285,"context_line":"                # network resources (network, subnet and router) and specify"},{"line_number":286,"context_line":"                # name of the created network in the Tempest config file."},{"line_number":287,"context_line":"                # Such approach will allow us to avoid failures of Tempest"}],"source_content_type":"text/x-python","patch_set":24,"id":"da85f559_242243ba","line":284,"in_reply_to":"da85f559_aae8487d","updated":"2015-11-10 12:52:34.000000000","message":"Done","commit_id":"b13f182d76f97c5d5dddf1ef3008d14f5958bc12"},{"author":{"_account_id":8576,"name":"Yair Fried","email":"yfried@redhat.com","username":"yfried"},"change_message_id":"eabe4b73d658d1b17b3d38417bb6343ab212b6b9","unresolved":false,"context_lines":[{"line_number":282,"context_line":"            if neutronclient.list_networks(shared\u003dTrue)[\"networks\"]:"},{"line_number":283,"context_line":"                # If the OpenStack cloud has some networks that are visible"},{"line_number":284,"context_line":"                # in all tenants (i.e. shared networks), we will create own"},{"line_number":285,"context_line":"                # network resources (network, subnet and router) and specify"},{"line_number":286,"context_line":"                # name of the created network in the Tempest config file."},{"line_number":287,"context_line":"                # Such approach will allow us to avoid failures of Tempest"},{"line_number":288,"context_line":"                # tests with error \"Multiple possible networks found\"."}],"source_content_type":"text/x-python","patch_set":24,"id":"da85f559_8afea436","line":285,"range":{"start_line":285,"start_character":37,"end_line":285,"end_character":44},"updated":"2015-11-10 11:11:33.000000000","message":"shared network","commit_id":"b13f182d76f97c5d5dddf1ef3008d14f5958bc12"},{"author":{"_account_id":7428,"name":"Yaroslav Lobankov","email":"lobankovyv@gmail.com","username":"ylobankov"},"change_message_id":"bfbbef67ad4d5370c80368b03ae4ebcdd30d94b5","unresolved":false,"context_lines":[{"line_number":282,"context_line":"            if neutronclient.list_networks(shared\u003dTrue)[\"networks\"]:"},{"line_number":283,"context_line":"                # If the OpenStack cloud has some networks that are visible"},{"line_number":284,"context_line":"                # in all tenants (i.e. shared networks), we will create own"},{"line_number":285,"context_line":"                # network resources (network, subnet and router) and specify"},{"line_number":286,"context_line":"                # name of the created network in the Tempest config file."},{"line_number":287,"context_line":"                # Such approach will allow us to avoid failures of Tempest"},{"line_number":288,"context_line":"                # tests with error \"Multiple possible networks found\"."}],"source_content_type":"text/x-python","patch_set":24,"id":"da85f559_c4301704","line":285,"in_reply_to":"da85f559_8afea436","updated":"2015-11-10 12:52:34.000000000","message":"Done","commit_id":"b13f182d76f97c5d5dddf1ef3008d14f5958bc12"},{"author":{"_account_id":8576,"name":"Yair Fried","email":"yfried@redhat.com","username":"yfried"},"change_message_id":"eabe4b73d658d1b17b3d38417bb6343ab212b6b9","unresolved":false,"context_lines":[{"line_number":284,"context_line":"                # in all tenants (i.e. shared networks), we will create own"},{"line_number":285,"context_line":"                # network resources (network, subnet and router) and specify"},{"line_number":286,"context_line":"                # name of the created network in the Tempest config file."},{"line_number":287,"context_line":"                # Such approach will allow us to avoid failures of Tempest"},{"line_number":288,"context_line":"                # tests with error \"Multiple possible networks found\"."},{"line_number":289,"context_line":"                # Otherwise the default behavior defined in Tempest will be"},{"line_number":290,"context_line":"                # used and Tempest itself will manage network resources."},{"line_number":291,"context_line":"                LOG.debug(\"Shared networks found. \""},{"line_number":292,"context_line":"                          \"\u0027fixed_network_name\u0027 option should be configured\")"},{"line_number":293,"context_line":"                self._configure_option(\"fixed_network_name\","}],"source_content_type":"text/x-python","patch_set":24,"id":"da85f559_0ac074df","line":290,"range":{"start_line":287,"start_character":18,"end_line":290,"end_character":72},"updated":"2015-11-10 11:11:33.000000000","message":"Not sure if this is required. it\u0027s already in commit message.","commit_id":"b13f182d76f97c5d5dddf1ef3008d14f5958bc12"},{"author":{"_account_id":7428,"name":"Yaroslav Lobankov","email":"lobankovyv@gmail.com","username":"ylobankov"},"change_message_id":"bfbbef67ad4d5370c80368b03ae4ebcdd30d94b5","unresolved":false,"context_lines":[{"line_number":287,"context_line":"                # Such approach will allow us to avoid failures of Tempest"},{"line_number":288,"context_line":"                # tests with error \"Multiple possible networks found\"."},{"line_number":289,"context_line":"                # Otherwise the default behavior defined in Tempest will be"},{"line_number":290,"context_line":"                # used and Tempest itself will manage network resources."},{"line_number":291,"context_line":"                LOG.debug(\"Shared networks found. \""},{"line_number":292,"context_line":"                          \"\u0027fixed_network_name\u0027 option should be configured\")"},{"line_number":293,"context_line":"                self._configure_option(\"fixed_network_name\","}],"source_content_type":"text/x-python","patch_set":24,"id":"da85f559_64392b41","line":290,"in_reply_to":"da85f559_0ac074df","updated":"2015-11-10 12:52:34.000000000","message":"It is written for people who will read this code.","commit_id":"b13f182d76f97c5d5dddf1ef3008d14f5958bc12"},{"author":{"_account_id":8576,"name":"Yair Fried","email":"yfried@redhat.com","username":"yfried"},"change_message_id":"eabe4b73d658d1b17b3d38417bb6343ab212b6b9","unresolved":false,"context_lines":[{"line_number":296,"context_line":"        _write_config(self.conf_path, self.conf)"},{"line_number":297,"context_line":""},{"line_number":298,"context_line":"    def __exit__(self, exc_type, exc_value, exc_traceback):"},{"line_number":299,"context_line":"        # Tempest tests may take more than 1 hour and we should remove all"},{"line_number":300,"context_line":"        # cached clients sessions to avoid tokens expiration."},{"line_number":301,"context_line":"        self.clients.clear()"},{"line_number":302,"context_line":""}],"source_content_type":"text/x-python","patch_set":24,"id":"da85f559_4a451cb1","line":299,"updated":"2015-11-10 11:11:33.000000000","message":"This isn\u0027t in commit message. Does this have to be in this patch?","commit_id":"b13f182d76f97c5d5dddf1ef3008d14f5958bc12"},{"author":{"_account_id":7428,"name":"Yaroslav Lobankov","email":"lobankovyv@gmail.com","username":"ylobankov"},"change_message_id":"bfbbef67ad4d5370c80368b03ae4ebcdd30d94b5","unresolved":false,"context_lines":[{"line_number":296,"context_line":"        _write_config(self.conf_path, self.conf)"},{"line_number":297,"context_line":""},{"line_number":298,"context_line":"    def __exit__(self, exc_type, exc_value, exc_traceback):"},{"line_number":299,"context_line":"        # Tempest tests may take more than 1 hour and we should remove all"},{"line_number":300,"context_line":"        # cached clients sessions to avoid tokens expiration."},{"line_number":301,"context_line":"        self.clients.clear()"},{"line_number":302,"context_line":""}],"source_content_type":"text/x-python","patch_set":24,"id":"da85f559_e47d1bb2","line":299,"in_reply_to":"da85f559_4a451cb1","updated":"2015-11-10 12:52:34.000000000","message":"Probably not. I will remove it and add it in another patch.","commit_id":"b13f182d76f97c5d5dddf1ef3008d14f5958bc12"},{"author":{"_account_id":8576,"name":"Yair Fried","email":"yfried@redhat.com","username":"yfried"},"change_message_id":"eabe4b73d658d1b17b3d38417bb6343ab212b6b9","unresolved":false,"context_lines":[{"line_number":324,"context_line":"                self._created_roles.append(client.roles.create(role))"},{"line_number":325,"context_line":""},{"line_number":326,"context_line":"    def _configure_option(self, option, create_method, *args, **kwargs):"},{"line_number":327,"context_line":"        option_value \u003d self.conf.get(\"compute\", option)"},{"line_number":328,"context_line":"        if not option_value:"},{"line_number":329,"context_line":"            LOG.debug(\"Option \u0027%s\u0027 is not configured\" % option)"},{"line_number":330,"context_line":"            resource \u003d create_method(*args, **kwargs)"}],"source_content_type":"text/x-python","patch_set":24,"id":"da85f559_6e0d8a36","line":327,"updated":"2015-11-10 11:11:33.000000000","message":"why only compute options?","commit_id":"b13f182d76f97c5d5dddf1ef3008d14f5958bc12"},{"author":{"_account_id":7428,"name":"Yaroslav Lobankov","email":"lobankovyv@gmail.com","username":"ylobankov"},"change_message_id":"bfbbef67ad4d5370c80368b03ae4ebcdd30d94b5","unresolved":false,"context_lines":[{"line_number":324,"context_line":"                self._created_roles.append(client.roles.create(role))"},{"line_number":325,"context_line":""},{"line_number":326,"context_line":"    def _configure_option(self, option, create_method, *args, **kwargs):"},{"line_number":327,"context_line":"        option_value \u003d self.conf.get(\"compute\", option)"},{"line_number":328,"context_line":"        if not option_value:"},{"line_number":329,"context_line":"            LOG.debug(\"Option \u0027%s\u0027 is not configured\" % option)"},{"line_number":330,"context_line":"            resource \u003d create_method(*args, **kwargs)"}],"source_content_type":"text/x-python","patch_set":24,"id":"da85f559_e4543b22","line":327,"in_reply_to":"da85f559_6e0d8a36","updated":"2015-11-10 12:52:34.000000000","message":"Because we configure options only from compute section.","commit_id":"b13f182d76f97c5d5dddf1ef3008d14f5958bc12"},{"author":{"_account_id":8576,"name":"Yair Fried","email":"yfried@redhat.com","username":"yfried"},"change_message_id":"c6a1fcb9566d921e6ffdfab468cf3307f3381bc7","unresolved":false,"context_lines":[{"line_number":332,"context_line":"                      \"in Tempest config file. {opt} \u003d {opt_val}\""},{"line_number":333,"context_line":"                      .format(opt\u003doption, opt_val\u003doption_value))"},{"line_number":334,"context_line":""},{"line_number":335,"context_line":"    @utils.exc_wrapper(_create_resource_exc, \"image couldn\u0027t be created.\")"},{"line_number":336,"context_line":"    def _create_image(self):"},{"line_number":337,"context_line":"        glanceclient \u003d self.clients.glance()"},{"line_number":338,"context_line":"        params \u003d {"},{"line_number":339,"context_line":"            \"name\": \"rally-verify-img-%s\" % uuid.uuid4(),"},{"line_number":340,"context_line":"            \"disk_format\": \"qcow2\","},{"line_number":341,"context_line":"            \"container_format\": \"bare\","},{"line_number":342,"context_line":"            \"is_public\": True"},{"line_number":343,"context_line":"        }"},{"line_number":344,"context_line":"        LOG.debug(\"Creating image \u0027%s\u0027\" % params[\"name\"])"},{"line_number":345,"context_line":"        image \u003d glanceclient.images.create(**params)"},{"line_number":346,"context_line":"        self._created_images.append(image)"},{"line_number":347,"context_line":"        image.update(data\u003dopen("},{"line_number":348,"context_line":"            os.path.join(_create_or_get_data_dir(), IMAGE_NAME), \"rb\"))"},{"line_number":349,"context_line":""},{"line_number":350,"context_line":"        return image"},{"line_number":351,"context_line":""},{"line_number":352,"context_line":"    @utils.exc_wrapper(_create_resource_exc, \"flavor couldn\u0027t be created.\")"},{"line_number":353,"context_line":"    def _create_flavor(self, flv_ram):"},{"line_number":354,"context_line":"        novaclient \u003d self.clients.nova()"},{"line_number":355,"context_line":"        params \u003d {"},{"line_number":356,"context_line":"            \"name\": \"m1.rally-verify-flv-%s\" % uuid.uuid4(),"},{"line_number":357,"context_line":"            \"ram\": flv_ram,"},{"line_number":358,"context_line":"            \"vcpus\": 1,"},{"line_number":359,"context_line":"            \"disk\": 0"},{"line_number":360,"context_line":"        }"},{"line_number":361,"context_line":"        LOG.debug(\"Creating flavor \u0027%s\u0027\" % params[\"name\"])"},{"line_number":362,"context_line":"        flavor \u003d novaclient.flavors.create(**params)"},{"line_number":363,"context_line":"        self._created_flavors.append(flavor)"},{"line_number":364,"context_line":""},{"line_number":365,"context_line":"        return flavor"},{"line_number":366,"context_line":""}],"source_content_type":"text/x-python","patch_set":26,"id":"da85f559_39134568","line":363,"range":{"start_line":335,"start_character":0,"end_line":363,"end_character":0},"updated":"2015-11-10 14:26:16.000000000","message":"these should go in previous patch","commit_id":"5afc1d5d0edf81e0925de9b075db956838b43b1e"}],"tests/unit/verification/test_config.py":[{"author":{"_account_id":6172,"name":"Boris Pavlovic","email":"boris@pavlovic.me","username":"boris-42"},"change_message_id":"9b8fd6f02528dfffb4d34fa6c1e3f95d8fae7618","unresolved":false,"context_lines":[{"line_number":402,"context_line":"        client \u003d mock.MagicMock()"},{"line_number":403,"context_line":"        client.images.create.side_effect \u003d [fakes.FakeImage(id\u003d\"id1\")]"},{"line_number":404,"context_line":"        glance \u003d mock.MagicMock()"},{"line_number":405,"context_line":"        glance.Client.return_value \u003d client"},{"line_number":406,"context_line":"        with mock.patch.dict(\"sys.modules\", {\"glanceclient\": glance}):"},{"line_number":407,"context_line":"            image \u003d self.context._create_image()"},{"line_number":408,"context_line":"            self.assertEqual(\"id1\", image.id)"}],"source_content_type":"text/x-python","patch_set":33,"id":"da85f559_f2fd016f","line":405,"updated":"2015-11-14 10:49:35.000000000","message":"why not just:\n\n  glance \u003d mock.MagicMock() \n  glance.Client.return_value.images.create.side_effect \u003d [fakes.FakeImage(id\u003d\"id1\")]\n\n2 lines vs 4 lines\n\nin other cases well","commit_id":"58714d75089facf49eb9ea8678ef72fa514b6930"},{"author":{"_account_id":6172,"name":"Boris Pavlovic","email":"boris@pavlovic.me","username":"boris-42"},"change_message_id":"9b8fd6f02528dfffb4d34fa6c1e3f95d8fae7618","unresolved":false,"context_lines":[{"line_number":403,"context_line":"        client.images.create.side_effect \u003d [fakes.FakeImage(id\u003d\"id1\")]"},{"line_number":404,"context_line":"        glance \u003d mock.MagicMock()"},{"line_number":405,"context_line":"        glance.Client.return_value \u003d client"},{"line_number":406,"context_line":"        with mock.patch.dict(\"sys.modules\", {\"glanceclient\": glance}):"},{"line_number":407,"context_line":"            image \u003d self.context._create_image()"},{"line_number":408,"context_line":"            self.assertEqual(\"id1\", image.id)"},{"line_number":409,"context_line":"            self.assertEqual(\"id1\", self.context._created_images[0].id)"}],"source_content_type":"text/x-python","patch_set":33,"id":"da85f559_724911d0","line":406,"updated":"2015-11-14 10:49:35.000000000","message":"why you are not just mocking osclients.Client.glance @mock.patch(....)","commit_id":"58714d75089facf49eb9ea8678ef72fa514b6930"},{"author":{"_account_id":6172,"name":"Boris Pavlovic","email":"boris@pavlovic.me","username":"boris-42"},"change_message_id":"9b8fd6f02528dfffb4d34fa6c1e3f95d8fae7618","unresolved":false,"context_lines":[{"line_number":406,"context_line":"        with mock.patch.dict(\"sys.modules\", {\"glanceclient\": glance}):"},{"line_number":407,"context_line":"            image \u003d self.context._create_image()"},{"line_number":408,"context_line":"            self.assertEqual(\"id1\", image.id)"},{"line_number":409,"context_line":"            self.assertEqual(\"id1\", self.context._created_images[0].id)"},{"line_number":410,"context_line":""},{"line_number":411,"context_line":"    def test__create_flavor(self):"},{"line_number":412,"context_line":"        client \u003d mock.MagicMock()"}],"source_content_type":"text/x-python","patch_set":33,"id":"da85f559_f20bc17b","line":409,"updated":"2015-11-14 10:49:35.000000000","message":"Keep in mind I comment just one place but I would like to see all such cases fixed.","commit_id":"58714d75089facf49eb9ea8678ef72fa514b6930"},{"author":{"_account_id":6172,"name":"Boris Pavlovic","email":"boris@pavlovic.me","username":"boris-42"},"change_message_id":"1d1e39b5498e1155545e22f521fbe5c46dda4e09","unresolved":false,"context_lines":[{"line_number":318,"context_line":"    @mock.patch(\"rally.common.objects.deploy.db.deployment_get\")"},{"line_number":319,"context_line":"    @mock.patch(\"rally.osclients.Clients.services\","},{"line_number":320,"context_line":"                return_value\u003d{\"test_service_type\": \"test_service\"})"},{"line_number":321,"context_line":"    @mock.patch(\"rally.osclients.Clients.verified_keystone\")"},{"line_number":322,"context_line":"    def setUp(self, mock_clients_verified_keystone,"},{"line_number":323,"context_line":"              mock_clients_services, mock_deployment_get):"},{"line_number":324,"context_line":"        super(TempestResourcesContextTestCase, self).setUp()"}],"source_content_type":"text/x-python","patch_set":35,"id":"ba8a016a_e2da3d78","line":321,"updated":"2015-11-16 17:13:07.000000000","message":"why this work at all?","commit_id":"2b844e78c874749a9550342c0c207cd9f62a5f59"}]}
