)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":10475,"name":"Alexander Maretskiy","email":"amaretskiy@mirantis.com","username":"maretskiy"},"change_message_id":"1462dd9df6fb3a4dd56c65cc95259f959f54cce6","unresolved":false,"context_lines":[{"line_number":4,"context_line":"Commit:     Chandidas Gharami \u003cchandidas@in.ibm.com\u003e"},{"line_number":5,"context_line":"CommitDate: 2016-05-25 01:51:55 -0700"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"rally-ci recheck"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Change-Id: Ib46965035072fc6871b3bd1750c085361f1519cd"},{"line_number":10,"context_line":"Implements: blueprint neutron-nova-resource-creation"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":7,"id":"bab6814e_04aed197","line":7,"updated":"2016-05-25 08:57:27.000000000","message":"Here should be commit notes, as descriptive as possible.\n\nTo run \"rally-ci recheck\", just post a message to this patch by clicking on \"Reply\" button","commit_id":"4af92589a2a9f632d5f1877a2ff8afd58f1ea7b4"},{"author":{"_account_id":20535,"name":"Chandidas Gharami","email":"chandidas@in.ibm.com","username":"chandidas"},"change_message_id":"0d0f892f29e9cc0e20c5253fbd4d70b2b3a8bdb3","unresolved":false,"context_lines":[{"line_number":4,"context_line":"Commit:     Chandidas Gharami \u003cchandidas@in.ibm.com\u003e"},{"line_number":5,"context_line":"CommitDate: 2016-05-25 01:51:55 -0700"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"rally-ci recheck"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Change-Id: Ib46965035072fc6871b3bd1750c085361f1519cd"},{"line_number":10,"context_line":"Implements: blueprint neutron-nova-resource-creation"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":7,"id":"bab6814e_fa7ec468","line":7,"in_reply_to":"bab6814e_04aed197","updated":"2016-05-27 10:21:38.000000000","message":"sure.","commit_id":"4af92589a2a9f632d5f1877a2ff8afd58f1ea7b4"},{"author":{"_account_id":10475,"name":"Alexander Maretskiy","email":"amaretskiy@mirantis.com","username":"maretskiy"},"change_message_id":"03565c8ba7037ba3a1d38276ac3e3d7ecaf50cd1","unresolved":false,"context_lines":[{"line_number":6,"context_line":""},{"line_number":7,"context_line":"New scenario to create Neutron and Nova resources for a tenant"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"retriggering ci job"},{"line_number":10,"context_line":""},{"line_number":11,"context_line":"Change-Id: Ib46965035072fc6871b3bd1750c085361f1519cd"},{"line_number":12,"context_line":"Implements: blueprint neutron-nova-resource-creation"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":11,"id":"7aa08908_7de343a5","line":9,"updated":"2016-06-15 09:01:00.000000000","message":"Here should be some details about the proposed change.","commit_id":"9ab3cd3cc2b7a89f99f66683a5d5f847b64de6d3"},{"author":{"_account_id":21528,"name":"chenhb","email":"chen.haibing1@zte.com.cn","username":"chenhb"},"change_message_id":"43c317e375abb22fe01e639dc8f0e6787d0170bc","unresolved":false,"context_lines":[{"line_number":6,"context_line":""},{"line_number":7,"context_line":"New scenario to create Neutron and Nova resources for a tenant"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"retriggering ci job"},{"line_number":10,"context_line":""},{"line_number":11,"context_line":"Change-Id: Ib46965035072fc6871b3bd1750c085361f1519cd"},{"line_number":12,"context_line":"Implements: blueprint neutron-nova-resource-creation"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":11,"id":"7aa08908_eb14864e","line":9,"in_reply_to":"7aa08908_6b5d3615","updated":"2016-06-15 10:45:56.000000000","message":"If you wanted to re-trigger check or gate jobs, you can post \"recheck\" in the reply form.","commit_id":"9ab3cd3cc2b7a89f99f66683a5d5f847b64de6d3"},{"author":{"_account_id":10475,"name":"Alexander Maretskiy","email":"amaretskiy@mirantis.com","username":"maretskiy"},"change_message_id":"923fef833f00fba68e7db6e9db159c61d02489b2","unresolved":false,"context_lines":[{"line_number":6,"context_line":""},{"line_number":7,"context_line":"New scenario to create Neutron and Nova resources for a tenant"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"retriggering ci job"},{"line_number":10,"context_line":""},{"line_number":11,"context_line":"Change-Id: Ib46965035072fc6871b3bd1750c085361f1519cd"},{"line_number":12,"context_line":"Implements: blueprint neutron-nova-resource-creation"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":11,"id":"7aa08908_8befc2e8","line":9,"in_reply_to":"7aa08908_6b5d3615","updated":"2016-06-15 10:33:53.000000000","message":"This does not matter how significant current patch-set differs from previous one, the commit message should always explain what will this patch improve/fix/etc. If the patch is not complete, you can just add WIP to commit message title so everyone will know that work is in progress (example: https://review.openstack.org/#/c/328978/)","commit_id":"9ab3cd3cc2b7a89f99f66683a5d5f847b64de6d3"},{"author":{"_account_id":20535,"name":"Chandidas Gharami","email":"chandidas@in.ibm.com","username":"chandidas"},"change_message_id":"4d16d7d71b31bd565774ee223b28141dd6a2d497","unresolved":false,"context_lines":[{"line_number":6,"context_line":""},{"line_number":7,"context_line":"New scenario to create Neutron and Nova resources for a tenant"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"retriggering ci job"},{"line_number":10,"context_line":""},{"line_number":11,"context_line":"Change-Id: Ib46965035072fc6871b3bd1750c085361f1519cd"},{"line_number":12,"context_line":"Implements: blueprint neutron-nova-resource-creation"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":11,"id":"7aa08908_6b5d3615","line":9,"in_reply_to":"7aa08908_7de343a5","updated":"2016-06-15 10:28:28.000000000","message":"Have not done any change in this change-set. Some test-cases were failing because of environment problem, I just wanted to re-trigger the tests again. So I updated commit message and pushed it again.","commit_id":"9ab3cd3cc2b7a89f99f66683a5d5f847b64de6d3"},{"author":{"_account_id":20535,"name":"Chandidas Gharami","email":"chandidas@in.ibm.com","username":"chandidas"},"change_message_id":"0e2a7bd5451af5585f26c723eeef03e54afd13ea","unresolved":false,"context_lines":[{"line_number":6,"context_line":""},{"line_number":7,"context_line":"New scenario to create Neutron and Nova resources for a tenant"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"retriggering ci job"},{"line_number":10,"context_line":""},{"line_number":11,"context_line":"Change-Id: Ib46965035072fc6871b3bd1750c085361f1519cd"},{"line_number":12,"context_line":"Implements: blueprint neutron-nova-resource-creation"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":11,"id":"7aa08908_fce60b49","line":9,"in_reply_to":"7aa08908_eb14864e","updated":"2016-06-15 12:26:56.000000000","message":"Good. I was unaware of these techniques.\n\nI have pushed all the planned changes for this work.","commit_id":"9ab3cd3cc2b7a89f99f66683a5d5f847b64de6d3"},{"author":{"_account_id":10475,"name":"Alexander Maretskiy","email":"amaretskiy@mirantis.com","username":"maretskiy"},"change_message_id":"6e10429a4ce3e4c99b5a8e75c3412aff971d6d12","unresolved":false,"context_lines":[{"line_number":6,"context_line":""},{"line_number":7,"context_line":"New scenario to create Neutron and Nova resources for a tenant"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"retriggering ci job"},{"line_number":10,"context_line":""},{"line_number":11,"context_line":"Change-Id: Ib46965035072fc6871b3bd1750c085361f1519cd"},{"line_number":12,"context_line":"Implements: blueprint neutron-nova-resource-creation"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":11,"id":"3aaa91ec_37bde168","line":9,"in_reply_to":"7aa08908_fce60b49","updated":"2016-06-23 13:23:55.000000000","message":"Please fill this commit message with patch description.","commit_id":"9ab3cd3cc2b7a89f99f66683a5d5f847b64de6d3"},{"author":{"_account_id":10475,"name":"Alexander Maretskiy","email":"amaretskiy@mirantis.com","username":"maretskiy"},"change_message_id":"98c61e2a4105284928abf6d0b2bad6bc525eaaa6","unresolved":false,"context_lines":[{"line_number":6,"context_line":""},{"line_number":7,"context_line":"New scenario to create Neutron and Nova resources for a tenant"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"rebased patch-set 12"},{"line_number":10,"context_line":""},{"line_number":11,"context_line":"Change-Id: Ib46965035072fc6871b3bd1750c085361f1519cd"},{"line_number":12,"context_line":"Implements: blueprint neutron-nova-resource-creation"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":13,"id":"1aa78d24_f16a9780","line":9,"updated":"2016-07-14 13:50:49.000000000","message":"Please replace this comment with details about proposed changes","commit_id":"564f06c00752307796302712102784fa92c2d2e3"},{"author":{"_account_id":20535,"name":"Chandidas Gharami","email":"chandidas@in.ibm.com","username":"chandidas"},"change_message_id":"4fc913b735316b31986d55fd8c2fe4bf6270d0d7","unresolved":false,"context_lines":[{"line_number":6,"context_line":""},{"line_number":7,"context_line":"New scenario to create Neutron and Nova resources for a tenant"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"rebased patch-set 12"},{"line_number":10,"context_line":""},{"line_number":11,"context_line":"Change-Id: Ib46965035072fc6871b3bd1750c085361f1519cd"},{"line_number":12,"context_line":"Implements: blueprint neutron-nova-resource-creation"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":13,"id":"dada55a8_cd979946","line":9,"in_reply_to":"1aa78d24_f16a9780","updated":"2016-07-20 07:42:15.000000000","message":"Done","commit_id":"564f06c00752307796302712102784fa92c2d2e3"}],"rally/plugins/openstack/scenarios/tenant_centric/neutron_nova_resources.py":[{"author":{"_account_id":12395,"name":"Roman Vasylets","email":"pomeo92@gmail.com","username":"rvasilets"},"change_message_id":"6d424fd5a7c9757ad277017a032089e25268760d","unresolved":false,"context_lines":[{"line_number":34,"context_line":"CONF \u003d cfg.CONF"},{"line_number":35,"context_line":""},{"line_number":36,"context_line":""},{"line_number":37,"context_line":"class NeutronNovaResources(utils.TenantScenario):"},{"line_number":38,"context_line":"    \"\"\"Benchmark scenario for Neutron and Nova resources.\"\"\""},{"line_number":39,"context_line":""},{"line_number":40,"context_line":"    @types.set(image\u003dtypes.ImageResourceType, flavor\u003dtypes.FlavorResourceType)"}],"source_content_type":"text/x-python","patch_set":2,"id":"dab17558_64e60718","line":37,"updated":"2016-05-12 11:38:49.000000000","message":"First I suggest you to split you patch on 3-4 patches. Because it is too big and it hard to review","commit_id":"80afaa67de7d3ae612f7acde4a643bd11e255b3a"},{"author":{"_account_id":20535,"name":"Chandidas Gharami","email":"chandidas@in.ibm.com","username":"chandidas"},"change_message_id":"b8e94f830218b832b4db2b0452ac4a7771fb8a8c","unresolved":false,"context_lines":[{"line_number":34,"context_line":"CONF \u003d cfg.CONF"},{"line_number":35,"context_line":""},{"line_number":36,"context_line":""},{"line_number":37,"context_line":"class NeutronNovaResources(utils.TenantScenario):"},{"line_number":38,"context_line":"    \"\"\"Benchmark scenario for Neutron and Nova resources.\"\"\""},{"line_number":39,"context_line":""},{"line_number":40,"context_line":"    @types.set(image\u003dtypes.ImageResourceType, flavor\u003dtypes.FlavorResourceType)"}],"source_content_type":"text/x-python","patch_set":2,"id":"bab6814e_385ff473","line":37,"in_reply_to":"dab17558_64e60718","updated":"2016-05-27 10:19:52.000000000","message":"This scenario is already being used. So it is checked in as is","commit_id":"80afaa67de7d3ae612f7acde4a643bd11e255b3a"},{"author":{"_account_id":12395,"name":"Roman Vasylets","email":"pomeo92@gmail.com","username":"rvasilets"},"change_message_id":"6d424fd5a7c9757ad277017a032089e25268760d","unresolved":false,"context_lines":[{"line_number":37,"context_line":"class NeutronNovaResources(utils.TenantScenario):"},{"line_number":38,"context_line":"    \"\"\"Benchmark scenario for Neutron and Nova resources.\"\"\""},{"line_number":39,"context_line":""},{"line_number":40,"context_line":"    @types.set(image\u003dtypes.ImageResourceType, flavor\u003dtypes.FlavorResourceType)"},{"line_number":41,"context_line":"    @validation.image_valid_on_flavor(\"flavor\", \"image\")"},{"line_number":42,"context_line":"    @validation.required_services(consts.Service.NEUTRON, consts.Service.NOVA)"},{"line_number":43,"context_line":"    @validation.required_openstack(users\u003dTrue)"}],"source_content_type":"text/x-python","patch_set":2,"id":"dab17558_5f4aae28","line":40,"updated":"2016-05-12 11:38:49.000000000","message":"please use types.convert - set was depricated","commit_id":"80afaa67de7d3ae612f7acde4a643bd11e255b3a"},{"author":{"_account_id":20535,"name":"Chandidas Gharami","email":"chandidas@in.ibm.com","username":"chandidas"},"change_message_id":"b8e94f830218b832b4db2b0452ac4a7771fb8a8c","unresolved":false,"context_lines":[{"line_number":37,"context_line":"class NeutronNovaResources(utils.TenantScenario):"},{"line_number":38,"context_line":"    \"\"\"Benchmark scenario for Neutron and Nova resources.\"\"\""},{"line_number":39,"context_line":""},{"line_number":40,"context_line":"    @types.set(image\u003dtypes.ImageResourceType, flavor\u003dtypes.FlavorResourceType)"},{"line_number":41,"context_line":"    @validation.image_valid_on_flavor(\"flavor\", \"image\")"},{"line_number":42,"context_line":"    @validation.required_services(consts.Service.NEUTRON, consts.Service.NOVA)"},{"line_number":43,"context_line":"    @validation.required_openstack(users\u003dTrue)"}],"source_content_type":"text/x-python","patch_set":2,"id":"bab6814e_1895d0e3","line":40,"in_reply_to":"dab17558_5f4aae28","updated":"2016-05-27 10:19:52.000000000","message":"Done","commit_id":"80afaa67de7d3ae612f7acde4a643bd11e255b3a"},{"author":{"_account_id":21528,"name":"chenhb","email":"chen.haibing1@zte.com.cn","username":"chenhb"},"change_message_id":"9336d7ed461cfa0bb5f8e8af9ec04a15569fabeb","unresolved":false,"context_lines":[{"line_number":75,"context_line":""},{"line_number":76,"context_line":"        ###"},{"line_number":77,"context_line":"        # Create Network"},{"line_number":78,"context_line":"        #"},{"line_number":79,"context_line":"        self.create_network_resources()"},{"line_number":80,"context_line":"        ###"},{"line_number":81,"context_line":"        # Create Subnet"}],"source_content_type":"text/x-python","patch_set":2,"id":"dab17558_6f0780ca","line":78,"updated":"2016-05-10 09:33:21.000000000","message":"I am not sure these comments are necessary.We can know their functional from these method names.","commit_id":"80afaa67de7d3ae612f7acde4a643bd11e255b3a"},{"author":{"_account_id":20535,"name":"Chandidas Gharami","email":"chandidas@in.ibm.com","username":"chandidas"},"change_message_id":"b8e94f830218b832b4db2b0452ac4a7771fb8a8c","unresolved":false,"context_lines":[{"line_number":75,"context_line":""},{"line_number":76,"context_line":"        ###"},{"line_number":77,"context_line":"        # Create Network"},{"line_number":78,"context_line":"        #"},{"line_number":79,"context_line":"        self.create_network_resources()"},{"line_number":80,"context_line":"        ###"},{"line_number":81,"context_line":"        # Create Subnet"}],"source_content_type":"text/x-python","patch_set":2,"id":"bab6814e_38bb7474","line":78,"in_reply_to":"dab17558_6f0780ca","updated":"2016-05-27 10:19:52.000000000","message":"Done","commit_id":"80afaa67de7d3ae612f7acde4a643bd11e255b3a"},{"author":{"_account_id":12395,"name":"Roman Vasylets","email":"pomeo92@gmail.com","username":"rvasilets"},"change_message_id":"6d424fd5a7c9757ad277017a032089e25268760d","unresolved":false,"context_lines":[{"line_number":75,"context_line":""},{"line_number":76,"context_line":"        ###"},{"line_number":77,"context_line":"        # Create Network"},{"line_number":78,"context_line":"        #"},{"line_number":79,"context_line":"        self.create_network_resources()"},{"line_number":80,"context_line":"        ###"},{"line_number":81,"context_line":"        # Create Subnet"}],"source_content_type":"text/x-python","patch_set":2,"id":"dab17558_1fdca645","line":78,"in_reply_to":"dab17558_6f0780ca","updated":"2016-05-12 11:38:49.000000000","message":"We can add the list of events to the docstring\n1. Create network\n2. Create subnet..","commit_id":"80afaa67de7d3ae612f7acde4a643bd11e255b3a"},{"author":{"_account_id":12395,"name":"Roman Vasylets","email":"pomeo92@gmail.com","username":"rvasilets"},"change_message_id":"6d424fd5a7c9757ad277017a032089e25268760d","unresolved":false,"context_lines":[{"line_number":112,"context_line":"        ###"},{"line_number":113,"context_line":"        # Delete resources"},{"line_number":114,"context_line":"        #"},{"line_number":115,"context_line":"        self.delete_all_resources(**kwargs)"},{"line_number":116,"context_line":""},{"line_number":117,"context_line":"    def create_network_resources(self):"},{"line_number":118,"context_line":"        \"\"\"Creates network resources."}],"source_content_type":"text/x-python","patch_set":2,"id":"dab17558_3fc9a9ad","line":115,"updated":"2016-05-12 11:38:49.000000000","message":"In docstring you wrote \"This scenario creates configurable number of Neutron resources (networks, subnets, routers, floatingips etc) and boots VMs over all these Neutron networks\" in this case you don\u0027t need to cleanup resources by hand. This should be done by Rally cleanup itself that you specify in 44 line. But if you want to measure this operations then please update docstring","commit_id":"80afaa67de7d3ae612f7acde4a643bd11e255b3a"},{"author":{"_account_id":20535,"name":"Chandidas Gharami","email":"chandidas@in.ibm.com","username":"chandidas"},"change_message_id":"b8e94f830218b832b4db2b0452ac4a7771fb8a8c","unresolved":false,"context_lines":[{"line_number":112,"context_line":"        ###"},{"line_number":113,"context_line":"        # Delete resources"},{"line_number":114,"context_line":"        #"},{"line_number":115,"context_line":"        self.delete_all_resources(**kwargs)"},{"line_number":116,"context_line":""},{"line_number":117,"context_line":"    def create_network_resources(self):"},{"line_number":118,"context_line":"        \"\"\"Creates network resources."}],"source_content_type":"text/x-python","patch_set":2,"id":"bab6814e_783cdc2f","line":115,"in_reply_to":"dab17558_3fc9a9ad","updated":"2016-05-27 10:19:52.000000000","message":"Done","commit_id":"80afaa67de7d3ae612f7acde4a643bd11e255b3a"},{"author":{"_account_id":21528,"name":"chenhb","email":"chen.haibing1@zte.com.cn","username":"chenhb"},"change_message_id":"9336d7ed461cfa0bb5f8e8af9ec04a15569fabeb","unresolved":false,"context_lines":[{"line_number":286,"context_line":""},{"line_number":287,"context_line":"        LOG.debug(\"Router [%s] creation done\", len(self.routers))"},{"line_number":288,"context_line":""},{"line_number":289,"context_line":"    def create_sg_resources(self):"},{"line_number":290,"context_line":"        \"\"\"Create security group resources."},{"line_number":291,"context_line":""},{"line_number":292,"context_line":"        \"\"\""}],"source_content_type":"text/x-python","patch_set":2,"id":"dab17558_cfaf8c28","line":289,"updated":"2016-05-10 09:33:21.000000000","message":"I think it is perhaps better to use the full name.","commit_id":"80afaa67de7d3ae612f7acde4a643bd11e255b3a"},{"author":{"_account_id":20535,"name":"Chandidas Gharami","email":"chandidas@in.ibm.com","username":"chandidas"},"change_message_id":"b8e94f830218b832b4db2b0452ac4a7771fb8a8c","unresolved":false,"context_lines":[{"line_number":286,"context_line":""},{"line_number":287,"context_line":"        LOG.debug(\"Router [%s] creation done\", len(self.routers))"},{"line_number":288,"context_line":""},{"line_number":289,"context_line":"    def create_sg_resources(self):"},{"line_number":290,"context_line":"        \"\"\"Create security group resources."},{"line_number":291,"context_line":""},{"line_number":292,"context_line":"        \"\"\""}],"source_content_type":"text/x-python","patch_set":2,"id":"bab6814e_586d9803","line":289,"in_reply_to":"dab17558_cfaf8c28","updated":"2016-05-27 10:19:52.000000000","message":"Done","commit_id":"80afaa67de7d3ae612f7acde4a643bd11e255b3a"},{"author":{"_account_id":21528,"name":"chenhb","email":"chen.haibing1@zte.com.cn","username":"chenhb"},"change_message_id":"9336d7ed461cfa0bb5f8e8af9ec04a15569fabeb","unresolved":false,"context_lines":[{"line_number":332,"context_line":"        predef_group \u003d {\"ssh_icmp_allow\": def_rules}"},{"line_number":333,"context_line":"        self.sg_create_groups(predef_group)"},{"line_number":334,"context_line":""},{"line_number":335,"context_line":"    def sg_create_groups(self, sg_groups):"},{"line_number":336,"context_line":"        \"\"\"Create security groups from the given configuration data."},{"line_number":337,"context_line":""},{"line_number":338,"context_line":"        \"\"\""}],"source_content_type":"text/x-python","patch_set":2,"id":"dab17558_4f1c3b6a","line":335,"updated":"2016-05-10 09:33:21.000000000","message":"same here. create_security_groups_from_config ?","commit_id":"80afaa67de7d3ae612f7acde4a643bd11e255b3a"},{"author":{"_account_id":20535,"name":"Chandidas Gharami","email":"chandidas@in.ibm.com","username":"chandidas"},"change_message_id":"b8e94f830218b832b4db2b0452ac4a7771fb8a8c","unresolved":false,"context_lines":[{"line_number":332,"context_line":"        predef_group \u003d {\"ssh_icmp_allow\": def_rules}"},{"line_number":333,"context_line":"        self.sg_create_groups(predef_group)"},{"line_number":334,"context_line":""},{"line_number":335,"context_line":"    def sg_create_groups(self, sg_groups):"},{"line_number":336,"context_line":"        \"\"\"Create security groups from the given configuration data."},{"line_number":337,"context_line":""},{"line_number":338,"context_line":"        \"\"\""}],"source_content_type":"text/x-python","patch_set":2,"id":"bab6814e_58e8f87c","line":335,"in_reply_to":"dab17558_4f1c3b6a","updated":"2016-05-27 10:19:52.000000000","message":"Done","commit_id":"80afaa67de7d3ae612f7acde4a643bd11e255b3a"},{"author":{"_account_id":14168,"name":"Alexandr Nevenchannyy","email":"anevenchannyy@mirantis.com","username":"anevenchannyy"},"change_message_id":"403aec6f03f6e99e8172655786afc714dc9e0129","unresolved":false,"context_lines":[{"line_number":683,"context_line":"                ssh \u003d self.login_to_server(ip, ssh_port, user, paswd)"},{"line_number":684,"context_line":"                ssh.close()"},{"line_number":685,"context_line":""},{"line_number":686,"context_line":"    def delete_all_resources(self, **kwargs):"},{"line_number":687,"context_line":"        \"\"\"Deletes all the resources."},{"line_number":688,"context_line":""},{"line_number":689,"context_line":"        Generally this scenario depends on Rally cleanup procedure"}],"source_content_type":"text/x-python","patch_set":7,"id":"bab6814e_f57095a6","line":686,"range":{"start_line":686,"start_character":4,"end_line":686,"end_character":45},"updated":"2016-05-25 09:42:01.000000000","message":"Deletion time of the resources covered by other tests","commit_id":"4af92589a2a9f632d5f1877a2ff8afd58f1ea7b4"},{"author":{"_account_id":20535,"name":"Chandidas Gharami","email":"chandidas@in.ibm.com","username":"chandidas"},"change_message_id":"0d0f892f29e9cc0e20c5253fbd4d70b2b3a8bdb3","unresolved":false,"context_lines":[{"line_number":683,"context_line":"                ssh \u003d self.login_to_server(ip, ssh_port, user, paswd)"},{"line_number":684,"context_line":"                ssh.close()"},{"line_number":685,"context_line":""},{"line_number":686,"context_line":"    def delete_all_resources(self, **kwargs):"},{"line_number":687,"context_line":"        \"\"\"Deletes all the resources."},{"line_number":688,"context_line":""},{"line_number":689,"context_line":"        Generally this scenario depends on Rally cleanup procedure"}],"source_content_type":"text/x-python","patch_set":7,"id":"bab6814e_50c40f91","line":686,"range":{"start_line":686,"start_character":4,"end_line":686,"end_character":45},"in_reply_to":"bab6814e_f57095a6","updated":"2016-05-27 10:21:38.000000000","message":"Yes different resources already have their deletion cases. However, it would be different when we delete resources in scale setup. This gives picture of delete operation in a fully loaded system.","commit_id":"4af92589a2a9f632d5f1877a2ff8afd58f1ea7b4"},{"author":{"_account_id":21528,"name":"chenhb","email":"chen.haibing1@zte.com.cn","username":"chenhb"},"change_message_id":"4c0f04f89d348ae15df2d41a5f1e369e2343b5a4","unresolved":false,"context_lines":[{"line_number":141,"context_line":""},{"line_number":142,"context_line":"        LOG.debug(\"Subnet [%s] creation done\", len(self.subnets))"},{"line_number":143,"context_line":""},{"line_number":144,"context_line":"    def dhcp_port_status_check(self):"},{"line_number":145,"context_line":"        \"\"\"Verifies the Dhcp port status as ACTIVE."},{"line_number":146,"context_line":""},{"line_number":147,"context_line":"        \"\"\""}],"source_content_type":"text/x-python","patch_set":9,"id":"9abb7d3a_43f946c8","line":144,"updated":"2016-05-27 08:12:21.000000000","message":"I think check_dhcp_port_status is better.","commit_id":"0c1797b1837e0844e4d47f99379e867af02b3978"},{"author":{"_account_id":20535,"name":"Chandidas Gharami","email":"chandidas@in.ibm.com","username":"chandidas"},"change_message_id":"04504e30038c4b298c5172b5bcb0be129af3c4ce","unresolved":false,"context_lines":[{"line_number":141,"context_line":""},{"line_number":142,"context_line":"        LOG.debug(\"Subnet [%s] creation done\", len(self.subnets))"},{"line_number":143,"context_line":""},{"line_number":144,"context_line":"    def dhcp_port_status_check(self):"},{"line_number":145,"context_line":"        \"\"\"Verifies the Dhcp port status as ACTIVE."},{"line_number":146,"context_line":""},{"line_number":147,"context_line":"        \"\"\""}],"source_content_type":"text/x-python","patch_set":9,"id":"9abb7d3a_51af47e3","line":144,"in_reply_to":"9abb7d3a_43f946c8","updated":"2016-05-27 10:14:30.000000000","message":"agree","commit_id":"0c1797b1837e0844e4d47f99379e867af02b3978"},{"author":{"_account_id":21528,"name":"chenhb","email":"chen.haibing1@zte.com.cn","username":"chenhb"},"change_message_id":"4c0f04f89d348ae15df2d41a5f1e369e2343b5a4","unresolved":false,"context_lines":[{"line_number":302,"context_line":"        prov_net_enabled \u003d self.resource_config.get("},{"line_number":303,"context_line":"            \"provider_network\").get(\"enable\")"},{"line_number":304,"context_line":""},{"line_number":305,"context_line":"        if prov_net_enabled is True:"},{"line_number":306,"context_line":"            provider_netid \u003d self.resource_config.get("},{"line_number":307,"context_line":"                \"provider_network\").get(\"network_id\")"},{"line_number":308,"context_line":""}],"source_content_type":"text/x-python","patch_set":9,"id":"9abb7d3a_fe1f2d59","line":305,"updated":"2016-05-27 08:12:21.000000000","message":"There is a bug, if prov_net_enabled is false.","commit_id":"0c1797b1837e0844e4d47f99379e867af02b3978"},{"author":{"_account_id":21528,"name":"chenhb","email":"chen.haibing1@zte.com.cn","username":"chenhb"},"change_message_id":"8ce87966a79929a57d4af43f9fc261f6cee3b34c","unresolved":false,"context_lines":[{"line_number":302,"context_line":"        prov_net_enabled \u003d self.resource_config.get("},{"line_number":303,"context_line":"            \"provider_network\").get(\"enable\")"},{"line_number":304,"context_line":""},{"line_number":305,"context_line":"        if prov_net_enabled is True:"},{"line_number":306,"context_line":"            provider_netid \u003d self.resource_config.get("},{"line_number":307,"context_line":"                \"provider_network\").get(\"network_id\")"},{"line_number":308,"context_line":""}],"source_content_type":"text/x-python","patch_set":9,"id":"9abb7d3a_423777e3","line":305,"in_reply_to":"9abb7d3a_313e03b9","updated":"2016-05-27 11:18:49.000000000","message":"Oh, sorry for no more consideration. I thought provider_netid is not allowed equal None.","commit_id":"0c1797b1837e0844e4d47f99379e867af02b3978"},{"author":{"_account_id":20535,"name":"Chandidas Gharami","email":"chandidas@in.ibm.com","username":"chandidas"},"change_message_id":"04504e30038c4b298c5172b5bcb0be129af3c4ce","unresolved":false,"context_lines":[{"line_number":302,"context_line":"        prov_net_enabled \u003d self.resource_config.get("},{"line_number":303,"context_line":"            \"provider_network\").get(\"enable\")"},{"line_number":304,"context_line":""},{"line_number":305,"context_line":"        if prov_net_enabled is True:"},{"line_number":306,"context_line":"            provider_netid \u003d self.resource_config.get("},{"line_number":307,"context_line":"                \"provider_network\").get(\"network_id\")"},{"line_number":308,"context_line":""}],"source_content_type":"text/x-python","patch_set":9,"id":"9abb7d3a_313e03b9","line":305,"in_reply_to":"9abb7d3a_fe1f2d59","updated":"2016-05-27 10:14:30.000000000","message":"provider_netid is initialized to None (in line 301). \nCould you elaborate the issue.","commit_id":"0c1797b1837e0844e4d47f99379e867af02b3978"},{"author":{"_account_id":10475,"name":"Alexander Maretskiy","email":"amaretskiy@mirantis.com","username":"maretskiy"},"change_message_id":"667f9a2178df6f4f9f9ba31be222849032f255af","unresolved":false,"context_lines":[{"line_number":35,"context_line":""},{"line_number":36,"context_line":""},{"line_number":37,"context_line":"class NeutronNovaResources(utils.TenantScenario):"},{"line_number":38,"context_line":"    \"\"\"Benchmark scenario for Neutron and Nova resources.\"\"\""},{"line_number":39,"context_line":""},{"line_number":40,"context_line":"    @types.convert(image\u003d{\"type\": \"glance_image\"},"},{"line_number":41,"context_line":"                   flavor\u003d{\"type\": \"nova_flavor\"})"}],"source_content_type":"text/x-python","patch_set":11,"id":"3aaa91ec_5c440d1a","line":38,"updated":"2016-06-23 15:55:20.000000000","message":"Please remove word \"Benchmark\" since benchmark is specific type of test and this scenario is not (or at least \"not only\") a benchmark","commit_id":"9ab3cd3cc2b7a89f99f66683a5d5f847b64de6d3"},{"author":{"_account_id":20535,"name":"Chandidas Gharami","email":"chandidas@in.ibm.com","username":"chandidas"},"change_message_id":"3082f17fe745d163ae0cd779b33b8e5cbae9d8dd","unresolved":false,"context_lines":[{"line_number":35,"context_line":""},{"line_number":36,"context_line":""},{"line_number":37,"context_line":"class NeutronNovaResources(utils.TenantScenario):"},{"line_number":38,"context_line":"    \"\"\"Benchmark scenario for Neutron and Nova resources.\"\"\""},{"line_number":39,"context_line":""},{"line_number":40,"context_line":"    @types.convert(image\u003d{\"type\": \"glance_image\"},"},{"line_number":41,"context_line":"                   flavor\u003d{\"type\": \"nova_flavor\"})"}],"source_content_type":"text/x-python","patch_set":11,"id":"3aaa91ec_ffa25299","line":38,"in_reply_to":"3aaa91ec_5c440d1a","updated":"2016-06-28 10:26:35.000000000","message":"Will replace \"Benchmark\" with something like \u0027measurement\u0027.","commit_id":"9ab3cd3cc2b7a89f99f66683a5d5f847b64de6d3"},{"author":{"_account_id":10475,"name":"Alexander Maretskiy","email":"amaretskiy@mirantis.com","username":"maretskiy"},"change_message_id":"667f9a2178df6f4f9f9ba31be222849032f255af","unresolved":false,"context_lines":[{"line_number":43,"context_line":"    @validation.required_services(consts.Service.NEUTRON, consts.Service.NOVA)"},{"line_number":44,"context_line":"    @validation.required_openstack(users\u003dTrue)"},{"line_number":45,"context_line":"    @scenario.configure(context\u003d{\"cleanup\": [\"nova\", \"neutron\"]})"},{"line_number":46,"context_line":"    def resource_creation(self, resource_config, image, flavor, **kwargs):"},{"line_number":47,"context_line":"        \"\"\"Create Neutron and Nova resources."},{"line_number":48,"context_line":""},{"line_number":49,"context_line":"        This scenario creates configurable number of Neutron resources ("}],"source_content_type":"text/x-python","patch_set":11,"id":"3aaa91ec_7fb29b07","line":46,"updated":"2016-06-23 15:55:20.000000000","message":"1) This scenario also deletes resources, so its name must include \"delete\" as well, something like \"create_and_delete_resources\"\n\n2) Suggestion: having explicit arguments instead of \"resource_config\" will be self-descriptive and avoid many potential issues with resource_config argument validation.\n\nIf you would insist on this single complex argument, then all its keys should be documented","commit_id":"9ab3cd3cc2b7a89f99f66683a5d5f847b64de6d3"},{"author":{"_account_id":20535,"name":"Chandidas Gharami","email":"chandidas@in.ibm.com","username":"chandidas"},"change_message_id":"3082f17fe745d163ae0cd779b33b8e5cbae9d8dd","unresolved":false,"context_lines":[{"line_number":43,"context_line":"    @validation.required_services(consts.Service.NEUTRON, consts.Service.NOVA)"},{"line_number":44,"context_line":"    @validation.required_openstack(users\u003dTrue)"},{"line_number":45,"context_line":"    @scenario.configure(context\u003d{\"cleanup\": [\"nova\", \"neutron\"]})"},{"line_number":46,"context_line":"    def resource_creation(self, resource_config, image, flavor, **kwargs):"},{"line_number":47,"context_line":"        \"\"\"Create Neutron and Nova resources."},{"line_number":48,"context_line":""},{"line_number":49,"context_line":"        This scenario creates configurable number of Neutron resources ("}],"source_content_type":"text/x-python","patch_set":11,"id":"3aaa91ec_dffe7637","line":46,"in_reply_to":"3aaa91ec_7fb29b07","updated":"2016-06-28 10:26:35.000000000","message":"1) \"create_and_delete_resources\" -\u003e done\n2) We will document all the arguments as the number of arguments are high.","commit_id":"9ab3cd3cc2b7a89f99f66683a5d5f847b64de6d3"},{"author":{"_account_id":10475,"name":"Alexander Maretskiy","email":"amaretskiy@mirantis.com","username":"maretskiy"},"change_message_id":"667f9a2178df6f4f9f9ba31be222849032f255af","unresolved":false,"context_lines":[{"line_number":54,"context_line":"        Finally, the scenario measures the time it take to ping VM IPs"},{"line_number":55,"context_line":"        and ssh login to VMs using respective IPs."},{"line_number":56,"context_line":"        Generally this scenario depends on regular Rally cleanup procedure"},{"line_number":57,"context_line":"        to delete all the resources it adds. However, to benchmark the"},{"line_number":58,"context_line":"        deletion time of all these resources, the scenario provides a"},{"line_number":59,"context_line":"        configuration paramter so that the scenario itself can delete all"},{"line_number":60,"context_line":"        these resources."}],"source_content_type":"text/x-python","patch_set":11,"id":"3aaa91ec_d6b29493","line":57,"updated":"2016-06-23 15:55:20.000000000","message":"s/to benchmark/to measure/","commit_id":"9ab3cd3cc2b7a89f99f66683a5d5f847b64de6d3"},{"author":{"_account_id":20535,"name":"Chandidas Gharami","email":"chandidas@in.ibm.com","username":"chandidas"},"change_message_id":"3082f17fe745d163ae0cd779b33b8e5cbae9d8dd","unresolved":false,"context_lines":[{"line_number":54,"context_line":"        Finally, the scenario measures the time it take to ping VM IPs"},{"line_number":55,"context_line":"        and ssh login to VMs using respective IPs."},{"line_number":56,"context_line":"        Generally this scenario depends on regular Rally cleanup procedure"},{"line_number":57,"context_line":"        to delete all the resources it adds. However, to benchmark the"},{"line_number":58,"context_line":"        deletion time of all these resources, the scenario provides a"},{"line_number":59,"context_line":"        configuration paramter so that the scenario itself can delete all"},{"line_number":60,"context_line":"        these resources."}],"source_content_type":"text/x-python","patch_set":11,"id":"3aaa91ec_bfb56a7f","line":57,"in_reply_to":"3aaa91ec_d6b29493","updated":"2016-06-28 10:26:35.000000000","message":"accepted.","commit_id":"9ab3cd3cc2b7a89f99f66683a5d5f847b64de6d3"},{"author":{"_account_id":10475,"name":"Alexander Maretskiy","email":"amaretskiy@mirantis.com","username":"maretskiy"},"change_message_id":"667f9a2178df6f4f9f9ba31be222849032f255af","unresolved":false,"context_lines":[{"line_number":56,"context_line":"        Generally this scenario depends on regular Rally cleanup procedure"},{"line_number":57,"context_line":"        to delete all the resources it adds. However, to benchmark the"},{"line_number":58,"context_line":"        deletion time of all these resources, the scenario provides a"},{"line_number":59,"context_line":"        configuration paramter so that the scenario itself can delete all"},{"line_number":60,"context_line":"        these resources."},{"line_number":61,"context_line":""},{"line_number":62,"context_line":"        :param resource_config: dict, contains resource configuration options"}],"source_content_type":"text/x-python","patch_set":11,"id":"3aaa91ec_f6a51047","line":59,"updated":"2016-06-23 15:55:20.000000000","message":"parameter","commit_id":"9ab3cd3cc2b7a89f99f66683a5d5f847b64de6d3"},{"author":{"_account_id":20535,"name":"Chandidas Gharami","email":"chandidas@in.ibm.com","username":"chandidas"},"change_message_id":"3082f17fe745d163ae0cd779b33b8e5cbae9d8dd","unresolved":false,"context_lines":[{"line_number":56,"context_line":"        Generally this scenario depends on regular Rally cleanup procedure"},{"line_number":57,"context_line":"        to delete all the resources it adds. However, to benchmark the"},{"line_number":58,"context_line":"        deletion time of all these resources, the scenario provides a"},{"line_number":59,"context_line":"        configuration paramter so that the scenario itself can delete all"},{"line_number":60,"context_line":"        these resources."},{"line_number":61,"context_line":""},{"line_number":62,"context_line":"        :param resource_config: dict, contains resource configuration options"}],"source_content_type":"text/x-python","patch_set":11,"id":"3aaa91ec_7f62e217","line":59,"in_reply_to":"3aaa91ec_f6a51047","updated":"2016-06-28 10:26:35.000000000","message":"accepted.","commit_id":"9ab3cd3cc2b7a89f99f66683a5d5f847b64de6d3"},{"author":{"_account_id":10475,"name":"Alexander Maretskiy","email":"amaretskiy@mirantis.com","username":"maretskiy"},"change_message_id":"667f9a2178df6f4f9f9ba31be222849032f255af","unresolved":false,"context_lines":[{"line_number":67,"context_line":""},{"line_number":68,"context_line":"        LOG.debug(\"resource config is %s\", resource_config)"},{"line_number":69,"context_line":""},{"line_number":70,"context_line":"        self.resource_config \u003d self.process_config_data(resource_config)"},{"line_number":71,"context_line":""},{"line_number":72,"context_line":"        self.networks \u003d {}"},{"line_number":73,"context_line":"        self.subnets \u003d {}"}],"source_content_type":"text/x-python","patch_set":11,"id":"3aaa91ec_6238423e","line":70,"updated":"2016-06-23 15:55:20.000000000","message":"Here we validate argument with jsonschema, however it would be nice to avoid jsonschema inside scenario (the best place is validation decorators or resource types, which do their job before iterations start) because jsonschema is really heavy and its runtime impacts load_duration.\n\nI recommend to simplify scenario configuration, for example:\n\ndef create_and_delete_resources(self, image, flavor, networks_num\u003dNone, subnets_per_network\u003dNone, ...\u003cand so on\u003e...):\n\n(None by default means do not create any, maybe better to have explicit int as default)","commit_id":"9ab3cd3cc2b7a89f99f66683a5d5f847b64de6d3"},{"author":{"_account_id":20535,"name":"Chandidas Gharami","email":"chandidas@in.ibm.com","username":"chandidas"},"change_message_id":"3082f17fe745d163ae0cd779b33b8e5cbae9d8dd","unresolved":false,"context_lines":[{"line_number":67,"context_line":""},{"line_number":68,"context_line":"        LOG.debug(\"resource config is %s\", resource_config)"},{"line_number":69,"context_line":""},{"line_number":70,"context_line":"        self.resource_config \u003d self.process_config_data(resource_config)"},{"line_number":71,"context_line":""},{"line_number":72,"context_line":"        self.networks \u003d {}"},{"line_number":73,"context_line":"        self.subnets \u003d {}"}],"source_content_type":"text/x-python","patch_set":11,"id":"3aaa91ec_629fe9b4","line":70,"in_reply_to":"3aaa91ec_6238423e","updated":"2016-06-28 10:26:35.000000000","message":"Nice suggestion, we will remove jsonschema validation.\nAs it is difficult to simplify configuration with so many arguments, we will introduce validation decorator to sanitize configuration data.","commit_id":"9ab3cd3cc2b7a89f99f66683a5d5f847b64de6d3"},{"author":{"_account_id":10475,"name":"Alexander Maretskiy","email":"amaretskiy@mirantis.com","username":"maretskiy"},"change_message_id":"667f9a2178df6f4f9f9ba31be222849032f255af","unresolved":false,"context_lines":[{"line_number":79,"context_line":"        self.vm_ips \u003d {}"},{"line_number":80,"context_line":"        self.vm_ports \u003d {}"},{"line_number":81,"context_line":""},{"line_number":82,"context_line":"        self.create_network_resources()"},{"line_number":83,"context_line":"        self.create_subnet_resources()"},{"line_number":84,"context_line":"        self.check_dhcp_port_status()"},{"line_number":85,"context_line":"        self.create_router_resources()"}],"source_content_type":"text/x-python","patch_set":11,"id":"3aaa91ec_50f06c67","line":82,"updated":"2016-06-23 15:55:20.000000000","message":"This (and below) is an implicit action, it is better to make it explicit by specifying arguments, for example:\n\n self.create_network_resources(networks_num\u003dnetworks_num,\n                               subnets_per_network\u003dsubnets_per_network,\n                               ...)","commit_id":"9ab3cd3cc2b7a89f99f66683a5d5f847b64de6d3"},{"author":{"_account_id":20535,"name":"Chandidas Gharami","email":"chandidas@in.ibm.com","username":"chandidas"},"change_message_id":"3082f17fe745d163ae0cd779b33b8e5cbae9d8dd","unresolved":false,"context_lines":[{"line_number":79,"context_line":"        self.vm_ips \u003d {}"},{"line_number":80,"context_line":"        self.vm_ports \u003d {}"},{"line_number":81,"context_line":""},{"line_number":82,"context_line":"        self.create_network_resources()"},{"line_number":83,"context_line":"        self.create_subnet_resources()"},{"line_number":84,"context_line":"        self.check_dhcp_port_status()"},{"line_number":85,"context_line":"        self.create_router_resources()"}],"source_content_type":"text/x-python","patch_set":11,"id":"3aaa91ec_c20e9de4","line":82,"in_reply_to":"3aaa91ec_50f06c67","updated":"2016-06-28 10:26:35.000000000","message":"We will merge network, subnet and router resource to a single method. However, as the number arguments are high we go with implicit action with proper documentation of the method.","commit_id":"9ab3cd3cc2b7a89f99f66683a5d5f847b64de6d3"},{"author":{"_account_id":10475,"name":"Alexander Maretskiy","email":"amaretskiy@mirantis.com","username":"maretskiy"},"change_message_id":"667f9a2178df6f4f9f9ba31be222849032f255af","unresolved":false,"context_lines":[{"line_number":109,"context_line":""},{"line_number":110,"context_line":"        LOG.debug(\"Network [%s] creation done\", len(self.networks))"},{"line_number":111,"context_line":""},{"line_number":112,"context_line":"    def create_subnet_resources(self):"},{"line_number":113,"context_line":"        \"\"\"Creates subnet resources."},{"line_number":114,"context_line":""},{"line_number":115,"context_line":"        \"\"\""}],"source_content_type":"text/x-python","patch_set":11,"id":"3aaa91ec_2b9c550e","line":112,"updated":"2016-06-23 15:55:20.000000000","message":"Some methods should be merged into single one, for example create_network_resources, create_subnet_resources and create_router_resources, because they are closely connected","commit_id":"9ab3cd3cc2b7a89f99f66683a5d5f847b64de6d3"},{"author":{"_account_id":20535,"name":"Chandidas Gharami","email":"chandidas@in.ibm.com","username":"chandidas"},"change_message_id":"3082f17fe745d163ae0cd779b33b8e5cbae9d8dd","unresolved":false,"context_lines":[{"line_number":109,"context_line":""},{"line_number":110,"context_line":"        LOG.debug(\"Network [%s] creation done\", len(self.networks))"},{"line_number":111,"context_line":""},{"line_number":112,"context_line":"    def create_subnet_resources(self):"},{"line_number":113,"context_line":"        \"\"\"Creates subnet resources."},{"line_number":114,"context_line":""},{"line_number":115,"context_line":"        \"\"\""}],"source_content_type":"text/x-python","patch_set":11,"id":"3aaa91ec_822bf532","line":112,"in_reply_to":"3aaa91ec_2b9c550e","updated":"2016-06-28 10:26:35.000000000","message":"Done","commit_id":"9ab3cd3cc2b7a89f99f66683a5d5f847b64de6d3"},{"author":{"_account_id":10475,"name":"Alexander Maretskiy","email":"amaretskiy@mirantis.com","username":"maretskiy"},"change_message_id":"667f9a2178df6f4f9f9ba31be222849032f255af","unresolved":false,"context_lines":[{"line_number":228,"context_line":"            return"},{"line_number":229,"context_line":""},{"line_number":230,"context_line":"        groups \u003d self.resource_config.get(\"security_groups\").get(\"groups\")"},{"line_number":231,"context_line":"        if len(groups) \u003e 0:"},{"line_number":232,"context_line":"            LOG.info(\"Creating configured security groups\")"},{"line_number":233,"context_line":"            self.create_security_group_from_config(groups)"},{"line_number":234,"context_line":"            return"}],"source_content_type":"text/x-python","patch_set":11,"id":"3aaa91ec_f0719845","line":231,"updated":"2016-06-23 15:55:20.000000000","message":"Simply \"if groups:\"","commit_id":"9ab3cd3cc2b7a89f99f66683a5d5f847b64de6d3"},{"author":{"_account_id":20535,"name":"Chandidas Gharami","email":"chandidas@in.ibm.com","username":"chandidas"},"change_message_id":"3082f17fe745d163ae0cd779b33b8e5cbae9d8dd","unresolved":false,"context_lines":[{"line_number":228,"context_line":"            return"},{"line_number":229,"context_line":""},{"line_number":230,"context_line":"        groups \u003d self.resource_config.get(\"security_groups\").get(\"groups\")"},{"line_number":231,"context_line":"        if len(groups) \u003e 0:"},{"line_number":232,"context_line":"            LOG.info(\"Creating configured security groups\")"},{"line_number":233,"context_line":"            self.create_security_group_from_config(groups)"},{"line_number":234,"context_line":"            return"}],"source_content_type":"text/x-python","patch_set":11,"id":"3aaa91ec_e2e3d903","line":231,"in_reply_to":"3aaa91ec_f0719845","updated":"2016-06-28 10:26:35.000000000","message":"Done","commit_id":"9ab3cd3cc2b7a89f99f66683a5d5f847b64de6d3"},{"author":{"_account_id":10475,"name":"Alexander Maretskiy","email":"amaretskiy@mirantis.com","username":"maretskiy"},"change_message_id":"667f9a2178df6f4f9f9ba31be222849032f255af","unresolved":false,"context_lines":[{"line_number":467,"context_line":"        LOG.debug(\"boot_vms_in_oneshot done\")"},{"line_number":468,"context_line":""},{"line_number":469,"context_line":"    def learn_vms_public_private_ips(self):"},{"line_number":470,"context_line":"        \"\"\"This function learns private/public IPs of each vms."},{"line_number":471,"context_line":""},{"line_number":472,"context_line":"        \"\"\""},{"line_number":473,"context_line":""}],"source_content_type":"text/x-python","patch_set":11,"id":"3aaa91ec_4b4f216b","line":470,"updated":"2016-06-23 15:55:20.000000000","message":"Remove \"This function\" - this is redundant and this is also not a function but method","commit_id":"9ab3cd3cc2b7a89f99f66683a5d5f847b64de6d3"},{"author":{"_account_id":20535,"name":"Chandidas Gharami","email":"chandidas@in.ibm.com","username":"chandidas"},"change_message_id":"3082f17fe745d163ae0cd779b33b8e5cbae9d8dd","unresolved":false,"context_lines":[{"line_number":467,"context_line":"        LOG.debug(\"boot_vms_in_oneshot done\")"},{"line_number":468,"context_line":""},{"line_number":469,"context_line":"    def learn_vms_public_private_ips(self):"},{"line_number":470,"context_line":"        \"\"\"This function learns private/public IPs of each vms."},{"line_number":471,"context_line":""},{"line_number":472,"context_line":"        \"\"\""},{"line_number":473,"context_line":""}],"source_content_type":"text/x-python","patch_set":11,"id":"3aaa91ec_a2af1193","line":470,"in_reply_to":"3aaa91ec_4b4f216b","updated":"2016-06-28 10:26:35.000000000","message":"Done","commit_id":"9ab3cd3cc2b7a89f99f66683a5d5f847b64de6d3"},{"author":{"_account_id":10475,"name":"Alexander Maretskiy","email":"amaretskiy@mirantis.com","username":"maretskiy"},"change_message_id":"667f9a2178df6f4f9f9ba31be222849032f255af","unresolved":false,"context_lines":[{"line_number":494,"context_line":"                \"floating\": [], \"provider\": None}"},{"line_number":495,"context_line":""},{"line_number":496,"context_line":"            vm_addresses_map \u003d vm.addresses"},{"line_number":497,"context_line":"            # LOG.debug(\"VM \u0027%s\u0027 addresses are %s\", vm.name, vm_addresses_map)"},{"line_number":498,"context_line":""},{"line_number":499,"context_line":"            for net_name, addrs_list in vm_addresses_map.items():"},{"line_number":500,"context_line":""}],"source_content_type":"text/x-python","patch_set":11,"id":"3aaa91ec_8b6c69d1","line":497,"updated":"2016-06-23 15:55:20.000000000","message":"This line should be removed or uncommented","commit_id":"9ab3cd3cc2b7a89f99f66683a5d5f847b64de6d3"},{"author":{"_account_id":20535,"name":"Chandidas Gharami","email":"chandidas@in.ibm.com","username":"chandidas"},"change_message_id":"3082f17fe745d163ae0cd779b33b8e5cbae9d8dd","unresolved":false,"context_lines":[{"line_number":494,"context_line":"                \"floating\": [], \"provider\": None}"},{"line_number":495,"context_line":""},{"line_number":496,"context_line":"            vm_addresses_map \u003d vm.addresses"},{"line_number":497,"context_line":"            # LOG.debug(\"VM \u0027%s\u0027 addresses are %s\", vm.name, vm_addresses_map)"},{"line_number":498,"context_line":""},{"line_number":499,"context_line":"            for net_name, addrs_list in vm_addresses_map.items():"},{"line_number":500,"context_line":""}],"source_content_type":"text/x-python","patch_set":11,"id":"3aaa91ec_c2aa1d85","line":497,"in_reply_to":"3aaa91ec_8b6c69d1","updated":"2016-06-28 10:26:35.000000000","message":"Done","commit_id":"9ab3cd3cc2b7a89f99f66683a5d5f847b64de6d3"},{"author":{"_account_id":10475,"name":"Alexander Maretskiy","email":"amaretskiy@mirantis.com","username":"maretskiy"},"change_message_id":"667f9a2178df6f4f9f9ba31be222849032f255af","unresolved":false,"context_lines":[{"line_number":509,"context_line":"                            ip_info[\"provider\"] \u003d addr_map.get(\"addr\")"},{"line_number":510,"context_line":""},{"line_number":511,"context_line":"            self.vm_ips[vm.id] \u003d ip_info"},{"line_number":512,"context_line":"            # LOG.debug(\"VM \u0027%s\u0027. Learnt ips are %s\", vm.name, ip_info)"},{"line_number":513,"context_line":""},{"line_number":514,"context_line":"        LOG.debug(\"VMs public private ip learning done\")"},{"line_number":515,"context_line":""}],"source_content_type":"text/x-python","patch_set":11,"id":"3aaa91ec_ebb40d36","line":512,"updated":"2016-06-23 15:55:20.000000000","message":"same here","commit_id":"9ab3cd3cc2b7a89f99f66683a5d5f847b64de6d3"},{"author":{"_account_id":20535,"name":"Chandidas Gharami","email":"chandidas@in.ibm.com","username":"chandidas"},"change_message_id":"3082f17fe745d163ae0cd779b33b8e5cbae9d8dd","unresolved":false,"context_lines":[{"line_number":509,"context_line":"                            ip_info[\"provider\"] \u003d addr_map.get(\"addr\")"},{"line_number":510,"context_line":""},{"line_number":511,"context_line":"            self.vm_ips[vm.id] \u003d ip_info"},{"line_number":512,"context_line":"            # LOG.debug(\"VM \u0027%s\u0027. Learnt ips are %s\", vm.name, ip_info)"},{"line_number":513,"context_line":""},{"line_number":514,"context_line":"        LOG.debug(\"VMs public private ip learning done\")"},{"line_number":515,"context_line":""}],"source_content_type":"text/x-python","patch_set":11,"id":"3aaa91ec_82b935ef","line":512,"in_reply_to":"3aaa91ec_ebb40d36","updated":"2016-06-28 10:26:35.000000000","message":"Done","commit_id":"9ab3cd3cc2b7a89f99f66683a5d5f847b64de6d3"},{"author":{"_account_id":10475,"name":"Alexander Maretskiy","email":"amaretskiy@mirantis.com","username":"maretskiy"},"change_message_id":"667f9a2178df6f4f9f9ba31be222849032f255af","unresolved":false,"context_lines":[{"line_number":537,"context_line":"                attachment_list \u003d self.clients("},{"line_number":538,"context_line":"                    \"nova\").servers.interface_list(vm)"},{"line_number":539,"context_line":"                attempt_count +\u003d 1"},{"line_number":540,"context_line":"                # LOG.debug(\"vm %s attempt_count %d, attachment_list %s\","},{"line_number":541,"context_line":"                #           vm.name, attempt_count, attachment_list)"},{"line_number":542,"context_line":""},{"line_number":543,"context_line":"            if len(attachment_list) \u003c\u003d 0:"}],"source_content_type":"text/x-python","patch_set":11,"id":"3aaa91ec_4beba113","line":540,"updated":"2016-06-23 15:55:20.000000000","message":"same here","commit_id":"9ab3cd3cc2b7a89f99f66683a5d5f847b64de6d3"},{"author":{"_account_id":20535,"name":"Chandidas Gharami","email":"chandidas@in.ibm.com","username":"chandidas"},"change_message_id":"3082f17fe745d163ae0cd779b33b8e5cbae9d8dd","unresolved":false,"context_lines":[{"line_number":537,"context_line":"                attachment_list \u003d self.clients("},{"line_number":538,"context_line":"                    \"nova\").servers.interface_list(vm)"},{"line_number":539,"context_line":"                attempt_count +\u003d 1"},{"line_number":540,"context_line":"                # LOG.debug(\"vm %s attempt_count %d, attachment_list %s\","},{"line_number":541,"context_line":"                #           vm.name, attempt_count, attachment_list)"},{"line_number":542,"context_line":""},{"line_number":543,"context_line":"            if len(attachment_list) \u003c\u003d 0:"}],"source_content_type":"text/x-python","patch_set":11,"id":"3aaa91ec_62bec9d5","line":540,"in_reply_to":"3aaa91ec_4beba113","updated":"2016-06-28 10:26:35.000000000","message":"Done","commit_id":"9ab3cd3cc2b7a89f99f66683a5d5f847b64de6d3"},{"author":{"_account_id":10475,"name":"Alexander Maretskiy","email":"amaretskiy@mirantis.com","username":"maretskiy"},"change_message_id":"667f9a2178df6f4f9f9ba31be222849032f255af","unresolved":false,"context_lines":[{"line_number":540,"context_line":"                # LOG.debug(\"vm %s attempt_count %d, attachment_list %s\","},{"line_number":541,"context_line":"                #           vm.name, attempt_count, attachment_list)"},{"line_number":542,"context_line":""},{"line_number":543,"context_line":"            if len(attachment_list) \u003c\u003d 0:"},{"line_number":544,"context_line":"                continue"},{"line_number":545,"context_line":""},{"line_number":546,"context_line":"            # LOG.debug(\"VM %s attachemts are %s\", vm.name, attachment_list)"}],"source_content_type":"text/x-python","patch_set":11,"id":"3aaa91ec_6be01dfb","line":543,"updated":"2016-06-23 15:55:20.000000000","message":"This len can not be negative.\n\n if not attachment_list:","commit_id":"9ab3cd3cc2b7a89f99f66683a5d5f847b64de6d3"},{"author":{"_account_id":20535,"name":"Chandidas Gharami","email":"chandidas@in.ibm.com","username":"chandidas"},"change_message_id":"3082f17fe745d163ae0cd779b33b8e5cbae9d8dd","unresolved":false,"context_lines":[{"line_number":540,"context_line":"                # LOG.debug(\"vm %s attempt_count %d, attachment_list %s\","},{"line_number":541,"context_line":"                #           vm.name, attempt_count, attachment_list)"},{"line_number":542,"context_line":""},{"line_number":543,"context_line":"            if len(attachment_list) \u003c\u003d 0:"},{"line_number":544,"context_line":"                continue"},{"line_number":545,"context_line":""},{"line_number":546,"context_line":"            # LOG.debug(\"VM %s attachemts are %s\", vm.name, attachment_list)"}],"source_content_type":"text/x-python","patch_set":11,"id":"3aaa91ec_c2b33d09","line":543,"in_reply_to":"3aaa91ec_6be01dfb","updated":"2016-06-28 10:26:35.000000000","message":"Done","commit_id":"9ab3cd3cc2b7a89f99f66683a5d5f847b64de6d3"},{"author":{"_account_id":10475,"name":"Alexander Maretskiy","email":"amaretskiy@mirantis.com","username":"maretskiy"},"change_message_id":"667f9a2178df6f4f9f9ba31be222849032f255af","unresolved":false,"context_lines":[{"line_number":552,"context_line":"                if attachment.net_id in pvt_net_ids:"},{"line_number":553,"context_line":"                    vm_info.append((attachment.port_id, attachment.net_id))"},{"line_number":554,"context_line":""},{"line_number":555,"context_line":"            if len(vm_info) \u003e 0:"},{"line_number":556,"context_line":"                self.vm_ports[vm.id] \u003d vm_info"},{"line_number":557,"context_line":""},{"line_number":558,"context_line":"        LOG.debug(\"all VM interfaces %s\", self.vm_ports)"}],"source_content_type":"text/x-python","patch_set":11,"id":"3aaa91ec_2bc1f554","line":555,"updated":"2016-06-23 15:55:20.000000000","message":"if vm_info:","commit_id":"9ab3cd3cc2b7a89f99f66683a5d5f847b64de6d3"},{"author":{"_account_id":20535,"name":"Chandidas Gharami","email":"chandidas@in.ibm.com","username":"chandidas"},"change_message_id":"3082f17fe745d163ae0cd779b33b8e5cbae9d8dd","unresolved":false,"context_lines":[{"line_number":552,"context_line":"                if attachment.net_id in pvt_net_ids:"},{"line_number":553,"context_line":"                    vm_info.append((attachment.port_id, attachment.net_id))"},{"line_number":554,"context_line":""},{"line_number":555,"context_line":"            if len(vm_info) \u003e 0:"},{"line_number":556,"context_line":"                self.vm_ports[vm.id] \u003d vm_info"},{"line_number":557,"context_line":""},{"line_number":558,"context_line":"        LOG.debug(\"all VM interfaces %s\", self.vm_ports)"}],"source_content_type":"text/x-python","patch_set":11,"id":"3aaa91ec_02cee582","line":555,"in_reply_to":"3aaa91ec_2bc1f554","updated":"2016-06-28 10:26:35.000000000","message":"Done","commit_id":"9ab3cd3cc2b7a89f99f66683a5d5f847b64de6d3"},{"author":{"_account_id":10475,"name":"Alexander Maretskiy","email":"amaretskiy@mirantis.com","username":"maretskiy"},"change_message_id":"667f9a2178df6f4f9f9ba31be222849032f255af","unresolved":false,"context_lines":[{"line_number":694,"context_line":"        :param kwargs: Optional additional arguments"},{"line_number":695,"context_line":"        \"\"\""},{"line_number":696,"context_line":""},{"line_number":697,"context_line":"        cleanup \u003d self.resource_config.get(\"benchmark_cleanup\")"},{"line_number":698,"context_line":"        if cleanup is False:"},{"line_number":699,"context_line":"            LOG.info(\"no resource cleanup from scenario\")"},{"line_number":700,"context_line":"            return"}],"source_content_type":"text/x-python","patch_set":11,"id":"3aaa91ec_96392cf5","line":697,"updated":"2016-06-23 15:55:20.000000000","message":"Please remove word \"benchmark\" here","commit_id":"9ab3cd3cc2b7a89f99f66683a5d5f847b64de6d3"},{"author":{"_account_id":20535,"name":"Chandidas Gharami","email":"chandidas@in.ibm.com","username":"chandidas"},"change_message_id":"3082f17fe745d163ae0cd779b33b8e5cbae9d8dd","unresolved":false,"context_lines":[{"line_number":694,"context_line":"        :param kwargs: Optional additional arguments"},{"line_number":695,"context_line":"        \"\"\""},{"line_number":696,"context_line":""},{"line_number":697,"context_line":"        cleanup \u003d self.resource_config.get(\"benchmark_cleanup\")"},{"line_number":698,"context_line":"        if cleanup is False:"},{"line_number":699,"context_line":"            LOG.info(\"no resource cleanup from scenario\")"},{"line_number":700,"context_line":"            return"}],"source_content_type":"text/x-python","patch_set":11,"id":"3aaa91ec_027c251f","line":697,"in_reply_to":"3aaa91ec_96392cf5","updated":"2016-06-28 10:26:35.000000000","message":"Done","commit_id":"9ab3cd3cc2b7a89f99f66683a5d5f847b64de6d3"},{"author":{"_account_id":10475,"name":"Alexander Maretskiy","email":"amaretskiy@mirantis.com","username":"maretskiy"},"change_message_id":"667f9a2178df6f4f9f9ba31be222849032f255af","unresolved":false,"context_lines":[{"line_number":700,"context_line":"            return"},{"line_number":701,"context_line":""},{"line_number":702,"context_line":"        num_fip \u003d len(self.fips)"},{"line_number":703,"context_line":"        if num_fip \u003e 0:"},{"line_number":704,"context_line":"            action_name \u003d \"delete_%s_floatingips\" % (num_fip)"},{"line_number":705,"context_line":"            with atomic.ActionTimer(self, action_name):"},{"line_number":706,"context_line":"                disassoc_body \u003d {\"floatingip\": {}}"}],"source_content_type":"text/x-python","patch_set":11,"id":"3aaa91ec_0bc7d964","line":703,"updated":"2016-06-23 15:55:20.000000000","message":"if num_fip:","commit_id":"9ab3cd3cc2b7a89f99f66683a5d5f847b64de6d3"},{"author":{"_account_id":20535,"name":"Chandidas Gharami","email":"chandidas@in.ibm.com","username":"chandidas"},"change_message_id":"3082f17fe745d163ae0cd779b33b8e5cbae9d8dd","unresolved":false,"context_lines":[{"line_number":700,"context_line":"            return"},{"line_number":701,"context_line":""},{"line_number":702,"context_line":"        num_fip \u003d len(self.fips)"},{"line_number":703,"context_line":"        if num_fip \u003e 0:"},{"line_number":704,"context_line":"            action_name \u003d \"delete_%s_floatingips\" % (num_fip)"},{"line_number":705,"context_line":"            with atomic.ActionTimer(self, action_name):"},{"line_number":706,"context_line":"                disassoc_body \u003d {\"floatingip\": {}}"}],"source_content_type":"text/x-python","patch_set":11,"id":"3aaa91ec_e278f92d","line":703,"in_reply_to":"3aaa91ec_0bc7d964","updated":"2016-06-28 10:26:35.000000000","message":"Done","commit_id":"9ab3cd3cc2b7a89f99f66683a5d5f847b64de6d3"},{"author":{"_account_id":10475,"name":"Alexander Maretskiy","email":"amaretskiy@mirantis.com","username":"maretskiy"},"change_message_id":"667f9a2178df6f4f9f9ba31be222849032f255af","unresolved":false,"context_lines":[{"line_number":913,"context_line":"            \"additionalProperties\": False"},{"line_number":914,"context_line":"        }"},{"line_number":915,"context_line":""},{"line_number":916,"context_line":"        jsonschema.validate(resource_config, resource_config_schema)"},{"line_number":917,"context_line":""},{"line_number":918,"context_line":"        # Schema validation passed."},{"line_number":919,"context_line":"        # Now assign default values if not given in configuration."}],"source_content_type":"text/x-python","patch_set":11,"id":"3aaa91ec_317b228e","line":916,"updated":"2016-06-23 15:55:20.000000000","message":"As mentioned above, jsonschema itself takes a lot of scenario time. It is better to simplify approach of arguments passing and validation to 1) avoid usage jsonschema and 2) make actions as explicit as possible","commit_id":"9ab3cd3cc2b7a89f99f66683a5d5f847b64de6d3"},{"author":{"_account_id":20535,"name":"Chandidas Gharami","email":"chandidas@in.ibm.com","username":"chandidas"},"change_message_id":"3082f17fe745d163ae0cd779b33b8e5cbae9d8dd","unresolved":false,"context_lines":[{"line_number":913,"context_line":"            \"additionalProperties\": False"},{"line_number":914,"context_line":"        }"},{"line_number":915,"context_line":""},{"line_number":916,"context_line":"        jsonschema.validate(resource_config, resource_config_schema)"},{"line_number":917,"context_line":""},{"line_number":918,"context_line":"        # Schema validation passed."},{"line_number":919,"context_line":"        # Now assign default values if not given in configuration."}],"source_content_type":"text/x-python","patch_set":11,"id":"3aaa91ec_02d1c5fb","line":916,"in_reply_to":"3aaa91ec_317b228e","updated":"2016-06-28 10:26:35.000000000","message":"As per suggestion jsonschema validation will be removed.","commit_id":"9ab3cd3cc2b7a89f99f66683a5d5f847b64de6d3"},{"author":{"_account_id":10475,"name":"Alexander Maretskiy","email":"amaretskiy@mirantis.com","username":"maretskiy"},"change_message_id":"98c61e2a4105284928abf6d0b2bad6bc525eaaa6","unresolved":false,"context_lines":[{"line_number":94,"context_line":"    return validation.ValidationResult(True)"},{"line_number":95,"context_line":""},{"line_number":96,"context_line":""},{"line_number":97,"context_line":"class NeutronNovaResources(utils.TenantScenario):"},{"line_number":98,"context_line":"    \"\"\"Scenario for Neutron and Nova resources.\"\"\""},{"line_number":99,"context_line":""},{"line_number":100,"context_line":"    @validate_resource_config()"}],"source_content_type":"text/x-python","patch_set":13,"id":"1aa78d24_bd3d7e2e","line":97,"updated":"2016-07-14 13:50:49.000000000","message":"Why not \"TenantResources\" (or, even better, \"ProjectResources\")?","commit_id":"564f06c00752307796302712102784fa92c2d2e3"},{"author":{"_account_id":20535,"name":"Chandidas Gharami","email":"chandidas@in.ibm.com","username":"chandidas"},"change_message_id":"4fc913b735316b31986d55fd8c2fe4bf6270d0d7","unresolved":false,"context_lines":[{"line_number":94,"context_line":"    return validation.ValidationResult(True)"},{"line_number":95,"context_line":""},{"line_number":96,"context_line":""},{"line_number":97,"context_line":"class NeutronNovaResources(utils.TenantScenario):"},{"line_number":98,"context_line":"    \"\"\"Scenario for Neutron and Nova resources.\"\"\""},{"line_number":99,"context_line":""},{"line_number":100,"context_line":"    @validate_resource_config()"}],"source_content_type":"text/x-python","patch_set":13,"id":"dada55a8_6db78df5","line":97,"in_reply_to":"1aa78d24_bd3d7e2e","updated":"2016-07-20 07:42:15.000000000","message":"I feel NeutronNovaResources is more explicit as currently main focus is on Neutron and Nova only. In future if we want to bring in other group of resources, most probably another Class would be better considering the size of this file.","commit_id":"564f06c00752307796302712102784fa92c2d2e3"},{"author":{"_account_id":10475,"name":"Alexander Maretskiy","email":"amaretskiy@mirantis.com","username":"maretskiy"},"change_message_id":"98c61e2a4105284928abf6d0b2bad6bc525eaaa6","unresolved":false,"context_lines":[{"line_number":251,"context_line":"        :param kwargs: Optional additional arguments"},{"line_number":252,"context_line":"        \"\"\""},{"line_number":253,"context_line":""},{"line_number":254,"context_line":"        LOG.debug(\"resource config is %s\", resource_config)"},{"line_number":255,"context_line":"        self.resource_config \u003d self.process_config_data(resource_config)"},{"line_number":256,"context_line":""},{"line_number":257,"context_line":"        self.networks \u003d {}"}],"source_content_type":"text/x-python","patch_set":13,"id":"1aa78d24_4c779208","line":254,"updated":"2016-07-14 13:50:49.000000000","message":"This log message should be removed since it 1) duplicates L45 and 2) there is no reason to show same config in each iteration","commit_id":"564f06c00752307796302712102784fa92c2d2e3"},{"author":{"_account_id":20535,"name":"Chandidas Gharami","email":"chandidas@in.ibm.com","username":"chandidas"},"change_message_id":"4fc913b735316b31986d55fd8c2fe4bf6270d0d7","unresolved":false,"context_lines":[{"line_number":251,"context_line":"        :param kwargs: Optional additional arguments"},{"line_number":252,"context_line":"        \"\"\""},{"line_number":253,"context_line":""},{"line_number":254,"context_line":"        LOG.debug(\"resource config is %s\", resource_config)"},{"line_number":255,"context_line":"        self.resource_config \u003d self.process_config_data(resource_config)"},{"line_number":256,"context_line":""},{"line_number":257,"context_line":"        self.networks \u003d {}"}],"source_content_type":"text/x-python","patch_set":13,"id":"dada55a8_ed189d77","line":254,"in_reply_to":"1aa78d24_4c779208","updated":"2016-07-20 07:42:15.000000000","message":"Done","commit_id":"564f06c00752307796302712102784fa92c2d2e3"},{"author":{"_account_id":10475,"name":"Alexander Maretskiy","email":"amaretskiy@mirantis.com","username":"maretskiy"},"change_message_id":"98c61e2a4105284928abf6d0b2bad6bc525eaaa6","unresolved":false,"context_lines":[{"line_number":599,"context_line":""},{"line_number":600,"context_line":"        LOG.debug(\"boot_vms_in_sequence done\")"},{"line_number":601,"context_line":""},{"line_number":602,"context_line":"    def boot_vms_in_oneshot(self, image, flavor, provider_netid, **kwargs):"},{"line_number":603,"context_line":"        \"\"\"Boots all VM resources using one single nova API call."},{"line_number":604,"context_line":""},{"line_number":605,"context_line":"        :param image: image to be used to boot an instance"}],"source_content_type":"text/x-python","patch_set":13,"id":"1aa78d24_47bacd72","line":602,"updated":"2016-07-14 13:50:49.000000000","message":"This method has a lot of duplicated code with boot_vms_in_sequence() and boot_vms_in_parallel() - these methods can be merged into single one, or, at least, boot_vms_in_sequence() and boot_vms_in_oneshot() can be merged into one method boot_vms_serially(vm_count, ...).","commit_id":"564f06c00752307796302712102784fa92c2d2e3"},{"author":{"_account_id":20535,"name":"Chandidas Gharami","email":"chandidas@in.ibm.com","username":"chandidas"},"change_message_id":"4fc913b735316b31986d55fd8c2fe4bf6270d0d7","unresolved":false,"context_lines":[{"line_number":599,"context_line":""},{"line_number":600,"context_line":"        LOG.debug(\"boot_vms_in_sequence done\")"},{"line_number":601,"context_line":""},{"line_number":602,"context_line":"    def boot_vms_in_oneshot(self, image, flavor, provider_netid, **kwargs):"},{"line_number":603,"context_line":"        \"\"\"Boots all VM resources using one single nova API call."},{"line_number":604,"context_line":""},{"line_number":605,"context_line":"        :param image: image to be used to boot an instance"}],"source_content_type":"text/x-python","patch_set":13,"id":"dada55a8_4d7609a5","line":602,"in_reply_to":"1aa78d24_47bacd72","updated":"2016-07-20 07:42:15.000000000","message":"Accept.. lot of duplicate code here.. will work on these methods to minimize duplicate code.","commit_id":"564f06c00752307796302712102784fa92c2d2e3"},{"author":{"_account_id":10475,"name":"Alexander Maretskiy","email":"amaretskiy@mirantis.com","username":"maretskiy"},"change_message_id":"66fde6e971fcaf3fe19762f3356e33c6f4343429","unresolved":false,"context_lines":[{"line_number":553,"context_line":""},{"line_number":554,"context_line":"        LOG.debug(\"boot_vms_in_sequence done\")"},{"line_number":555,"context_line":""},{"line_number":556,"context_line":"    def boot_vms_in_oneshot(self, image, flavor,"},{"line_number":557,"context_line":"                            vnic_gen, vm_count, **kwargs):"},{"line_number":558,"context_line":"        \"\"\"Boots all VM resources using one single nova API call."},{"line_number":559,"context_line":""}],"source_content_type":"text/x-python","patch_set":15,"id":"bacf61ea_46799581","line":556,"updated":"2016-08-05 12:21:02.000000000","message":"As commented at patch set 13, this method is redundant. Use boot_vms_in_sequence(..., vm_count\u003d1, ...) instead","commit_id":"12127f7e1ea6b795653efb43289987e8e9e66c1c"},{"author":{"_account_id":20535,"name":"Chandidas Gharami","email":"chandidas@in.ibm.com","username":"chandidas"},"change_message_id":"1bb8e69234ad0e32c80c89026afd91257fd70dcf","unresolved":false,"context_lines":[{"line_number":553,"context_line":""},{"line_number":554,"context_line":"        LOG.debug(\"boot_vms_in_sequence done\")"},{"line_number":555,"context_line":""},{"line_number":556,"context_line":"    def boot_vms_in_oneshot(self, image, flavor,"},{"line_number":557,"context_line":"                            vnic_gen, vm_count, **kwargs):"},{"line_number":558,"context_line":"        \"\"\"Boots all VM resources using one single nova API call."},{"line_number":559,"context_line":""}],"source_content_type":"text/x-python","patch_set":15,"id":"9ad45d7e_38587532","line":556,"in_reply_to":"bacf61ea_46799581","updated":"2016-08-09 10:33:44.000000000","message":"Done","commit_id":"12127f7e1ea6b795653efb43289987e8e9e66c1c"}],"rally/plugins/openstack/scenarios/tenant_centric/utils.py":[{"author":{"_account_id":10475,"name":"Alexander Maretskiy","email":"amaretskiy@mirantis.com","username":"maretskiy"},"change_message_id":"667f9a2178df6f4f9f9ba31be222849032f255af","unresolved":false,"context_lines":[{"line_number":33,"context_line":"ICMP_DOWN_STATUS \u003d \"ICMP DOWN\""},{"line_number":34,"context_line":""},{"line_number":35,"context_line":""},{"line_number":36,"context_line":"class ResourceObject(object):"},{"line_number":37,"context_line":""},{"line_number":38,"context_line":"    def __init__(self, name, value, status):"},{"line_number":39,"context_line":"        self.name \u003d name"}],"source_content_type":"text/x-python","patch_set":11,"id":"3aaa91ec_16e6dc43","line":36,"updated":"2016-06-23 15:55:20.000000000","message":"I would recommend to use dict() instead because this class creates abstraction which is something worth to be in wrapper, not in scenario","commit_id":"9ab3cd3cc2b7a89f99f66683a5d5f847b64de6d3"},{"author":{"_account_id":20535,"name":"Chandidas Gharami","email":"chandidas@in.ibm.com","username":"chandidas"},"change_message_id":"3082f17fe745d163ae0cd779b33b8e5cbae9d8dd","unresolved":false,"context_lines":[{"line_number":33,"context_line":"ICMP_DOWN_STATUS \u003d \"ICMP DOWN\""},{"line_number":34,"context_line":""},{"line_number":35,"context_line":""},{"line_number":36,"context_line":"class ResourceObject(object):"},{"line_number":37,"context_line":""},{"line_number":38,"context_line":"    def __init__(self, name, value, status):"},{"line_number":39,"context_line":"        self.name \u003d name"}],"source_content_type":"text/x-python","patch_set":11,"id":"3aaa91ec_7f878212","line":36,"in_reply_to":"3aaa91ec_16e6dc43","updated":"2016-06-28 10:26:35.000000000","message":"will replace the class with dict.","commit_id":"9ab3cd3cc2b7a89f99f66683a5d5f847b64de6d3"},{"author":{"_account_id":10475,"name":"Alexander Maretskiy","email":"amaretskiy@mirantis.com","username":"maretskiy"},"change_message_id":"98c61e2a4105284928abf6d0b2bad6bc525eaaa6","unresolved":false,"context_lines":[{"line_number":33,"context_line":"ICMP_DOWN_STATUS \u003d \"ICMP DOWN\""},{"line_number":34,"context_line":""},{"line_number":35,"context_line":""},{"line_number":36,"context_line":"class TenantScenario(scenario.OpenStackScenario):"},{"line_number":37,"context_line":"    \"\"\"Base class for tenant centric scenario."},{"line_number":38,"context_line":""},{"line_number":39,"context_line":"    This class mainly holds all utility functions."}],"source_content_type":"text/x-python","patch_set":13,"id":"1aa78d24_013d50bb","line":36,"updated":"2016-07-14 13:50:49.000000000","message":"In KeystoneV3 terminology tenant is called \"project\" so this scenario is better to call ProjectScenario","commit_id":"564f06c00752307796302712102784fa92c2d2e3"},{"author":{"_account_id":20535,"name":"Chandidas Gharami","email":"chandidas@in.ibm.com","username":"chandidas"},"change_message_id":"4fc913b735316b31986d55fd8c2fe4bf6270d0d7","unresolved":false,"context_lines":[{"line_number":33,"context_line":"ICMP_DOWN_STATUS \u003d \"ICMP DOWN\""},{"line_number":34,"context_line":""},{"line_number":35,"context_line":""},{"line_number":36,"context_line":"class TenantScenario(scenario.OpenStackScenario):"},{"line_number":37,"context_line":"    \"\"\"Base class for tenant centric scenario."},{"line_number":38,"context_line":""},{"line_number":39,"context_line":"    This class mainly holds all utility functions."}],"source_content_type":"text/x-python","patch_set":13,"id":"dada55a8_c20e483a","line":36,"in_reply_to":"1aa78d24_013d50bb","updated":"2016-07-20 07:42:15.000000000","message":"Done","commit_id":"564f06c00752307796302712102784fa92c2d2e3"}],"samples/tasks/scenarios/tenant_centric/create-neutron-nova-resources.json":[{"author":{"_account_id":14168,"name":"Alexandr Nevenchannyy","email":"anevenchannyy@mirantis.com","username":"anevenchannyy"},"change_message_id":"403aec6f03f6e99e8172655786afc714dc9e0129","unresolved":false,"context_lines":[{"line_number":14,"context_line":"                \"networks\": {"},{"line_number":15,"context_line":"                    \"count\": 2"},{"line_number":16,"context_line":"                },"},{"line_number":17,"context_line":"                \"routers\": { "},{"line_number":18,"context_line":"                    \"count\": 1 "},{"line_number":19,"context_line":"                },"},{"line_number":20,"context_line":"                \"instances\": {"}],"source_content_type":"application/json","patch_set":7,"id":"bab6814e_f737fd4a","line":17,"range":{"start_line":17,"start_character":28,"end_line":17,"end_character":29},"updated":"2016-05-25 09:42:01.000000000","message":"please remove tailing spaces","commit_id":"4af92589a2a9f632d5f1877a2ff8afd58f1ea7b4"},{"author":{"_account_id":14168,"name":"Alexandr Nevenchannyy","email":"anevenchannyy@mirantis.com","username":"anevenchannyy"},"change_message_id":"403aec6f03f6e99e8172655786afc714dc9e0129","unresolved":false,"context_lines":[{"line_number":15,"context_line":"                    \"count\": 2"},{"line_number":16,"context_line":"                },"},{"line_number":17,"context_line":"                \"routers\": { "},{"line_number":18,"context_line":"                    \"count\": 1 "},{"line_number":19,"context_line":"                },"},{"line_number":20,"context_line":"                \"instances\": {"},{"line_number":21,"context_line":"                    \"count\": 10,"}],"source_content_type":"application/json","patch_set":7,"id":"bab6814e_974951d3","line":18,"range":{"start_line":18,"start_character":30,"end_line":18,"end_character":31},"updated":"2016-05-25 09:42:01.000000000","message":"same as above","commit_id":"4af92589a2a9f632d5f1877a2ff8afd58f1ea7b4"}],"tests/unit/plugins/openstack/scenarios/tenant_centric/test_neutron_nova_resources.py":[{"author":{"_account_id":7369,"name":"Sergey Skripnick","email":"sskripnick@mirantis.com","username":"redixin"},"change_message_id":"3c641d08175232855d954343844cad4417a9f910","unresolved":false,"context_lines":[{"line_number":180,"context_line":"        self.assertEqual(net_count, self.neu.create_network.call_count)"},{"line_number":181,"context_line":"        self.assertEqual(net_count, len(sut.networks))"},{"line_number":182,"context_line":""},{"line_number":183,"context_line":"    def test_create_subnet_resources(self):"},{"line_number":184,"context_line":"        sut \u003d self.scenario"},{"line_number":185,"context_line":"        sbnt_cnt \u003d 2"},{"line_number":186,"context_line":"        netid \u003d \"111\""}],"source_content_type":"text/x-python","patch_set":7,"id":"bab6814e_e4774639","line":183,"updated":"2016-05-25 10:52:13.000000000","message":"network_wrapper.generate_cidr should be mocked. That\u0027s why some other tests are failing (other tests are incorrect too)","commit_id":"4af92589a2a9f632d5f1877a2ff8afd58f1ea7b4"}]}
