)]}'
{"manila_tempest_tests/config.py":[{"author":{"_account_id":30002,"name":"Douglas Viroel","email":"viroel@gmail.com","username":"dviroel"},"change_message_id":"20e706873c2ef969d5e7b0dd3992620fdc370756","unresolved":false,"context_lines":[{"line_number":174,"context_line":"                help\u003d\"Whether to suppress errors with clean up operation \""},{"line_number":175,"context_line":"                     \"or not. There are cases when we may want to skip \""},{"line_number":176,"context_line":"                     \"such errors and catch only test errors.\"),"},{"line_number":177,"context_line":"    cfg.StrOpt(\"security_service_id\","},{"line_number":178,"context_line":"               default\u003d\"\","},{"line_number":179,"context_line":"               help\u003d\"Security service id.\"),"},{"line_number":180,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"ff570b3c_163929f1","line":177,"updated":"2020-05-16 02:16:34.000000000","message":"not needed, you can remove this option","commit_id":"7110f5dbdb8317709291849457de3dad42ff4495"},{"author":{"_account_id":30998,"name":"Andre Luiz Beltrami Rocha","display_name":"Andre Beltrami","email":"debeltrami@gmail.com","username":"andrebeltrami"},"change_message_id":"dfab1b36091e11f4d25e7a097c9f0f7af98f8c0a","unresolved":false,"context_lines":[{"line_number":174,"context_line":"                help\u003d\"Whether to suppress errors with clean up operation \""},{"line_number":175,"context_line":"                     \"or not. There are cases when we may want to skip \""},{"line_number":176,"context_line":"                     \"such errors and catch only test errors.\"),"},{"line_number":177,"context_line":"    cfg.StrOpt(\"security_service_id\","},{"line_number":178,"context_line":"               default\u003d\"\","},{"line_number":179,"context_line":"               help\u003d\"Security service id.\"),"},{"line_number":180,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"ff570b3c_ed9d8666","line":177,"in_reply_to":"ff570b3c_163929f1","updated":"2020-05-19 21:00:59.000000000","message":"I will remove this in the next PS. Thank you.","commit_id":"7110f5dbdb8317709291849457de3dad42ff4495"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"705d9d5728fa7fb91c6b19412cf2dbfe5436196b","unresolved":false,"context_lines":[{"line_number":277,"context_line":"                help\u003d\"Enable or disable running IPv6 tests.\"),"},{"line_number":278,"context_line":""},{"line_number":279,"context_line":"]"},{"line_number":280,"context_line":""},{"line_number":281,"context_line":"security_service \u003d cfg.OptGroup(name\u003d\"share_security_service\","},{"line_number":282,"context_line":"                                title\u003d\"Share Security Service Options\")"},{"line_number":283,"context_line":"SecurityService \u003d ["}],"source_content_type":"text/x-python","patch_set":1,"id":"ff570b3c_1c2e32fa","line":280,"range":{"start_line":280,"start_character":0,"end_line":280,"end_character":0},"updated":"2020-05-19 19:33:43.000000000","message":"What\u0027s the advantage of using an opt group?\nhave you considered a dict-opt?","commit_id":"7110f5dbdb8317709291849457de3dad42ff4495"},{"author":{"_account_id":30998,"name":"Andre Luiz Beltrami Rocha","display_name":"Andre Beltrami","email":"debeltrami@gmail.com","username":"andrebeltrami"},"change_message_id":"dfab1b36091e11f4d25e7a097c9f0f7af98f8c0a","unresolved":false,"context_lines":[{"line_number":277,"context_line":"                help\u003d\"Enable or disable running IPv6 tests.\"),"},{"line_number":278,"context_line":""},{"line_number":279,"context_line":"]"},{"line_number":280,"context_line":""},{"line_number":281,"context_line":"security_service \u003d cfg.OptGroup(name\u003d\"share_security_service\","},{"line_number":282,"context_line":"                                title\u003d\"Share Security Service Options\")"},{"line_number":283,"context_line":"SecurityService \u003d ["}],"source_content_type":"text/x-python","patch_set":1,"id":"ff570b3c_6daa1685","line":280,"range":{"start_line":280,"start_character":0,"end_line":280,"end_character":0},"in_reply_to":"ff570b3c_1c2e32fa","updated":"2020-05-19 21:00:59.000000000","message":"Hi Goutham, I think we haven\u0027t understood what you said with dict-opt. Do you suggest doing something like the following code inside the share opt group, right? \n\ncfg.DictOpt(\"type\":\"active_directory\",\"option2\":\"value\"},\n            default\u003d{},\n            ...)","commit_id":"7110f5dbdb8317709291849457de3dad42ff4495"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"6bcf9ef22fac5f021b84e6a816a118c6af8e5e99","unresolved":false,"context_lines":[{"line_number":277,"context_line":"                help\u003d\"Enable or disable running IPv6 tests.\"),"},{"line_number":278,"context_line":""},{"line_number":279,"context_line":"]"},{"line_number":280,"context_line":""},{"line_number":281,"context_line":"security_service \u003d cfg.OptGroup(name\u003d\"share_security_service\","},{"line_number":282,"context_line":"                                title\u003d\"Share Security Service Options\")"},{"line_number":283,"context_line":"SecurityService \u003d ["}],"source_content_type":"text/x-python","patch_set":1,"id":"ff570b3c_dec82a75","line":280,"range":{"start_line":280,"start_character":0,"end_line":280,"end_character":0},"in_reply_to":"ff570b3c_6daa1685","updated":"2020-05-19 23:32:30.000000000","message":"Yes, so oslo.config supports DictOpt, a way to specify a set of key\u003dvalue pairs... \nso, your config opt here could be called \"security_service\" and can take the necessary values as key\u003dvalue pairs example:\n\n type:active_directory, dns_ip:203.0.113.112, user:Administrator, password:xyzzyspoon!\n\nAnd, oslo.config also supports multi opts... so, since you want to allow configuring multiple security services, you can use cfg.MultiOpt... Take a look at some examples here:\n\nhttp://codesearch.openstack.org/?\nq\u003ditem_type%3Dtypes.Dict()\u0026i\u003dnope\u0026files\u003d\u0026repos\u003d\n\nThis one is a great example of what we could use:\n\nhttps://opendev.org/openstack/cinder/src/branch/master/cinder/volume/drivers/netapp/options.py#L147-L162","commit_id":"7110f5dbdb8317709291849457de3dad42ff4495"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"f7826351a2b3eaa8f41ce72abd95d01bea72a63d","unresolved":false,"context_lines":[{"line_number":174,"context_line":"                help\u003d\"Whether to suppress errors with clean up operation \""},{"line_number":175,"context_line":"                     \"or not. There are cases when we may want to skip \""},{"line_number":176,"context_line":"                     \"such errors and catch only test errors.\"),"},{"line_number":177,"context_line":"    cfg.DictOpt(\"security_service\","},{"line_number":178,"context_line":"                default\u003d{},"},{"line_number":179,"context_line":"                help\u003d\"This option enables specify a security service \""},{"line_number":180,"context_line":"                     \"parameters needed to create security services \""}],"source_content_type":"text/x-python","patch_set":3,"id":"ff570b3c_a5ecd08f","line":177,"range":{"start_line":177,"start_character":8,"end_line":177,"end_character":15},"updated":"2020-05-26 21:37:04.000000000","message":"DictOpt isn\u0027t repeatable, MultiOpt is..","commit_id":"478848969bb34de002cefd9f922f62d68dd33c8b"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"f7826351a2b3eaa8f41ce72abd95d01bea72a63d","unresolved":false,"context_lines":[{"line_number":175,"context_line":"                     \"or not. There are cases when we may want to skip \""},{"line_number":176,"context_line":"                     \"such errors and catch only test errors.\"),"},{"line_number":177,"context_line":"    cfg.DictOpt(\"security_service\","},{"line_number":178,"context_line":"                default\u003d{},"},{"line_number":179,"context_line":"                help\u003d\"This option enables specify a security service \""},{"line_number":180,"context_line":"                     \"parameters needed to create security services \""},{"line_number":181,"context_line":"                     \"dynamically in order to run the tempest tests. \""}],"source_content_type":"text/x-python","patch_set":3,"id":"ff570b3c_85bd4c6a","line":178,"range":{"start_line":178,"start_character":16,"end_line":178,"end_character":27},"updated":"2020-05-26 21:37:04.000000000","message":"also set \"secret\u003dTrue\" because ss_password is part of the configuration and you don\u0027t want to see it in the logs..","commit_id":"478848969bb34de002cefd9f922f62d68dd33c8b"},{"author":{"_account_id":30002,"name":"Douglas Viroel","email":"viroel@gmail.com","username":"dviroel"},"change_message_id":"d64968e682b8634e60e6beb86206af3971371b09","unresolved":false,"context_lines":[{"line_number":175,"context_line":"                     \"or not. There are cases when we may want to skip \""},{"line_number":176,"context_line":"                     \"such errors and catch only test errors.\"),"},{"line_number":177,"context_line":"    cfg.DictOpt(\"security_service\","},{"line_number":178,"context_line":"                default\u003d{},"},{"line_number":179,"context_line":"                help\u003d\"This option enables specify a security service \""},{"line_number":180,"context_line":"                     \"parameters needed to create security services \""},{"line_number":181,"context_line":"                     \"dynamically in order to run the tempest tests. \""}],"source_content_type":"text/x-python","patch_set":3,"id":"ff570b3c_d868a988","line":178,"range":{"start_line":178,"start_character":16,"end_line":178,"end_character":27},"in_reply_to":"ff570b3c_85bd4c6a","updated":"2020-05-28 12:35:55.000000000","message":"+1","commit_id":"478848969bb34de002cefd9f922f62d68dd33c8b"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"f7826351a2b3eaa8f41ce72abd95d01bea72a63d","unresolved":false,"context_lines":[{"line_number":176,"context_line":"                     \"such errors and catch only test errors.\"),"},{"line_number":177,"context_line":"    cfg.DictOpt(\"security_service\","},{"line_number":178,"context_line":"                default\u003d{},"},{"line_number":179,"context_line":"                help\u003d\"This option enables specify a security service \""},{"line_number":180,"context_line":"                     \"parameters needed to create security services \""},{"line_number":181,"context_line":"                     \"dynamically in order to run the tempest tests. \""},{"line_number":182,"context_line":"                     \"The set of parameters that can be configured \""}],"source_content_type":"text/x-python","patch_set":3,"id":"ff570b3c_e5fd283c","line":179,"range":{"start_line":179,"start_character":43,"end_line":179,"end_character":68},"updated":"2020-05-26 21:37:04.000000000","message":"specifying security service","commit_id":"478848969bb34de002cefd9f922f62d68dd33c8b"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"f7826351a2b3eaa8f41ce72abd95d01bea72a63d","unresolved":false,"context_lines":[{"line_number":178,"context_line":"                default\u003d{},"},{"line_number":179,"context_line":"                help\u003d\"This option enables specify a security service \""},{"line_number":180,"context_line":"                     \"parameters needed to create security services \""},{"line_number":181,"context_line":"                     \"dynamically in order to run the tempest tests. \""},{"line_number":182,"context_line":"                     \"The set of parameters that can be configured \""},{"line_number":183,"context_line":"                     \"is the same used in the security service creation. \""},{"line_number":184,"context_line":"                     \"Each entry takes the standard dict config parameters: \""}],"source_content_type":"text/x-python","patch_set":3,"id":"ff570b3c_659758ed","line":181,"range":{"start_line":181,"start_character":68,"end_line":181,"end_character":69},"updated":"2020-05-26 21:37:04.000000000","message":"Please add: \n\nThe configured security service must be reachable by the project share networks created by the tests. So, ideally project networks must be able to route to the network where the pre-existing security service has been deployed.","commit_id":"478848969bb34de002cefd9f922f62d68dd33c8b"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"f7826351a2b3eaa8f41ce72abd95d01bea72a63d","unresolved":false,"context_lines":[{"line_number":181,"context_line":"                     \"dynamically in order to run the tempest tests. \""},{"line_number":182,"context_line":"                     \"The set of parameters that can be configured \""},{"line_number":183,"context_line":"                     \"is the same used in the security service creation. \""},{"line_number":184,"context_line":"                     \"Each entry takes the standard dict config parameters: \""},{"line_number":185,"context_line":"                     \"security_service \u003d \""},{"line_number":186,"context_line":"                     \"ss_type:\u003cldap, kerberos or active_directory\u003e, \""},{"line_number":187,"context_line":"                     \"ss_dns_ip:value, ss_user:value, ss_password\u003dvalue, \""}],"source_content_type":"text/x-python","patch_set":3,"id":"ff570b3c_a5a17049","line":184,"range":{"start_line":184,"start_character":22,"end_line":184,"end_character":32},"updated":"2020-05-26 21:37:04.000000000","message":"Before this line add:\n\n\"You can repeat this option many times, and each entry.... \"","commit_id":"478848969bb34de002cefd9f922f62d68dd33c8b"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"fb57fc0a1c25d9fd157b2ea65247070ff51dbbf4","unresolved":false,"context_lines":[{"line_number":174,"context_line":"                help\u003d\"Whether to suppress errors with clean up operation \""},{"line_number":175,"context_line":"                     \"or not. There are cases when we may want to skip \""},{"line_number":176,"context_line":"                     \"such errors and catch only test errors.\"),"},{"line_number":177,"context_line":"    cfg.DictOpt(\"security_service\","},{"line_number":178,"context_line":"                default\u003d{},"},{"line_number":179,"context_line":"                help\u003d\"This option enables specify a security service \""},{"line_number":180,"context_line":"                     \"parameters needed to create security services \""},{"line_number":181,"context_line":"                     \"dynamically in order to run the tempest tests. \""},{"line_number":182,"context_line":"                     \"The set of parameters that can be configured \""},{"line_number":183,"context_line":"                     \"is the same used in the security service creation. \""},{"line_number":184,"context_line":"                     \"Each entry takes the standard dict config parameters: \""},{"line_number":185,"context_line":"                     \"security_service \u003d \""},{"line_number":186,"context_line":"                     \"ss_type:\u003cldap, kerberos or active_directory\u003e, \""},{"line_number":187,"context_line":"                     \"ss_dns_ip:value, ss_user:value, ss_password\u003dvalue, \""},{"line_number":188,"context_line":"                     \"ss_domain:value, ss_server:value\"),"},{"line_number":189,"context_line":""},{"line_number":190,"context_line":"    # Switching ON/OFF test suites filtered by features"},{"line_number":191,"context_line":"    cfg.BoolOpt(\"run_quota_tests\","}],"source_content_type":"text/x-python","patch_set":3,"id":"ff570b3c_45e4d4ac","line":188,"range":{"start_line":177,"start_character":0,"end_line":188,"end_character":57},"updated":"2020-05-26 21:33:26.000000000","message":"This only allows for one security service.. however, manila\u0027s design is to allow as many security services as needed to be associated with a given share network.. \n\nso, perhaps make this a MultiOpt as suggested on PS 1: https://review.opendev.org/#/c/728604/1..3/manila_tempest_tests/config.py","commit_id":"478848969bb34de002cefd9f922f62d68dd33c8b"},{"author":{"_account_id":30002,"name":"Douglas Viroel","email":"viroel@gmail.com","username":"dviroel"},"change_message_id":"d64968e682b8634e60e6beb86206af3971371b09","unresolved":false,"context_lines":[{"line_number":174,"context_line":"                help\u003d\"Whether to suppress errors with clean up operation \""},{"line_number":175,"context_line":"                     \"or not. There are cases when we may want to skip \""},{"line_number":176,"context_line":"                     \"such errors and catch only test errors.\"),"},{"line_number":177,"context_line":"    cfg.DictOpt(\"security_service\","},{"line_number":178,"context_line":"                default\u003d{},"},{"line_number":179,"context_line":"                help\u003d\"This option enables specify a security service \""},{"line_number":180,"context_line":"                     \"parameters needed to create security services \""},{"line_number":181,"context_line":"                     \"dynamically in order to run the tempest tests. \""},{"line_number":182,"context_line":"                     \"The set of parameters that can be configured \""},{"line_number":183,"context_line":"                     \"is the same used in the security service creation. \""},{"line_number":184,"context_line":"                     \"Each entry takes the standard dict config parameters: \""},{"line_number":185,"context_line":"                     \"security_service \u003d \""},{"line_number":186,"context_line":"                     \"ss_type:\u003cldap, kerberos or active_directory\u003e, \""},{"line_number":187,"context_line":"                     \"ss_dns_ip:value, ss_user:value, ss_password\u003dvalue, \""},{"line_number":188,"context_line":"                     \"ss_domain:value, ss_server:value\"),"},{"line_number":189,"context_line":""},{"line_number":190,"context_line":"    # Switching ON/OFF test suites filtered by features"},{"line_number":191,"context_line":"    cfg.BoolOpt(\"run_quota_tests\","}],"source_content_type":"text/x-python","patch_set":3,"id":"ff570b3c_b894d545","line":188,"range":{"start_line":177,"start_character":0,"end_line":188,"end_character":57},"in_reply_to":"ff570b3c_45e4d4ac","updated":"2020-05-28 12:35:55.000000000","message":"It is possible, but we can\u0027t test it with more than one security service at this moment, on both upstream and downstream CI\u0027s. So we can rely on a list with a single element for now, using MultiOpt.","commit_id":"478848969bb34de002cefd9f922f62d68dd33c8b"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"00f9ee0042317f9e0339458e4249224ce83ead51","unresolved":false,"context_lines":[{"line_number":174,"context_line":"                help\u003d\"Whether to suppress errors with clean up operation \""},{"line_number":175,"context_line":"                     \"or not. There are cases when we may want to skip \""},{"line_number":176,"context_line":"                     \"such errors and catch only test errors.\"),"},{"line_number":177,"context_line":"    cfg.DictOpt(\"security_service\","},{"line_number":178,"context_line":"                default\u003d{},"},{"line_number":179,"context_line":"                help\u003d\"This option enables specify a security service \""},{"line_number":180,"context_line":"                     \"parameters needed to create security services \""},{"line_number":181,"context_line":"                     \"dynamically in order to run the tempest tests. \""},{"line_number":182,"context_line":"                     \"The set of parameters that can be configured \""},{"line_number":183,"context_line":"                     \"is the same used in the security service creation. \""},{"line_number":184,"context_line":"                     \"Each entry takes the standard dict config parameters: \""},{"line_number":185,"context_line":"                     \"security_service \u003d \""},{"line_number":186,"context_line":"                     \"ss_type:\u003cldap, kerberos or active_directory\u003e, \""},{"line_number":187,"context_line":"                     \"ss_dns_ip:value, ss_user:value, ss_password\u003dvalue, \""},{"line_number":188,"context_line":"                     \"ss_domain:value, ss_server:value\"),"},{"line_number":189,"context_line":""},{"line_number":190,"context_line":"    # Switching ON/OFF test suites filtered by features"},{"line_number":191,"context_line":"    cfg.BoolOpt(\"run_quota_tests\","}],"source_content_type":"text/x-python","patch_set":3,"id":"ff570b3c_d597c4ea","line":188,"range":{"start_line":177,"start_character":0,"end_line":188,"end_character":57},"in_reply_to":"ff570b3c_b894d545","updated":"2020-05-28 22:19:53.000000000","message":"True, your only choice is the dummy driver upstream for any sort of security group testing..","commit_id":"478848969bb34de002cefd9f922f62d68dd33c8b"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"feb73fc298683eb33cdf2533f3dc3f22fb4a7e96","unresolved":false,"context_lines":[{"line_number":184,"context_line":"                      \"The configured security service must be reachable by \""},{"line_number":185,"context_line":"                      \"the project share networks created by the tests. So, \""},{"line_number":186,"context_line":"                      \"ideally project networks must be able to route to the \""},{"line_number":187,"context_line":"                      \"network where the pre-existing security services has \""},{"line_number":188,"context_line":"                      \"been deployed. The set of parameters that can be \""},{"line_number":189,"context_line":"                      \"configured is the same used in the security service \""},{"line_number":190,"context_line":"                      \"creation. You can repeat this option many times, and \""}],"source_content_type":"text/x-python","patch_set":23,"id":"ff570b3c_f16faaf7","line":187,"range":{"start_line":187,"start_character":63,"end_line":187,"end_character":71},"updated":"2020-06-26 22:49:41.000000000","message":"service","commit_id":"22de8bf90245045e9ddabe6bb8d7be55117fb3d6"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"feb73fc298683eb33cdf2533f3dc3f22fb4a7e96","unresolved":false,"context_lines":[{"line_number":186,"context_line":"                      \"ideally project networks must be able to route to the \""},{"line_number":187,"context_line":"                      \"network where the pre-existing security services has \""},{"line_number":188,"context_line":"                      \"been deployed. The set of parameters that can be \""},{"line_number":189,"context_line":"                      \"configured is the same used in the security service \""},{"line_number":190,"context_line":"                      \"creation. You can repeat this option many times, and \""},{"line_number":191,"context_line":"                      \"each entry takes the standard dict config parameters: \""},{"line_number":192,"context_line":"                      \"security_service \u003d \""}],"source_content_type":"text/x-python","patch_set":23,"id":"ff570b3c_517f76aa","line":189,"range":{"start_line":189,"start_character":45,"end_line":189,"end_character":46},"updated":"2020-06-26 22:49:41.000000000","message":"as","commit_id":"22de8bf90245045e9ddabe6bb8d7be55117fb3d6"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"feb73fc298683eb33cdf2533f3dc3f22fb4a7e96","unresolved":false,"context_lines":[{"line_number":181,"context_line":"                 help\u003d\"This option enables specifying security service \""},{"line_number":182,"context_line":"                      \"parameters needed to create security services \""},{"line_number":183,"context_line":"                      \"dynamically in order to run the tempest tests. \""},{"line_number":184,"context_line":"                      \"The configured security service must be reachable by \""},{"line_number":185,"context_line":"                      \"the project share networks created by the tests. So, \""},{"line_number":186,"context_line":"                      \"ideally project networks must be able to route to the \""},{"line_number":187,"context_line":"                      \"network where the pre-existing security services has \""}],"source_content_type":"text/x-python","patch_set":26,"id":"ff570b3c_e1be9cfd","line":184,"range":{"start_line":184,"start_character":73,"end_line":184,"end_character":75},"updated":"2020-06-26 22:49:41.000000000","message":"nit: from","commit_id":"f82a16aea35fee7cc346bf01e3f081c44b20254d"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"feb73fc298683eb33cdf2533f3dc3f22fb4a7e96","unresolved":false,"context_lines":[{"line_number":186,"context_line":"                      \"ideally project networks must be able to route to the \""},{"line_number":187,"context_line":"                      \"network where the pre-existing security services has \""},{"line_number":188,"context_line":"                      \"been deployed. The set of parameters that can be \""},{"line_number":189,"context_line":"                      \"configured is the same used in the security service \""},{"line_number":190,"context_line":"                      \"creation. You can repeat this option many times, and \""},{"line_number":191,"context_line":"                      \"each entry takes the standard dict config parameters: \""},{"line_number":192,"context_line":"                      \"security_service \u003d \""}],"source_content_type":"text/x-python","patch_set":26,"id":"ff570b3c_013910a2","line":189,"range":{"start_line":189,"start_character":45,"end_line":189,"end_character":46},"updated":"2020-06-26 22:49:41.000000000","message":"as","commit_id":"f82a16aea35fee7cc346bf01e3f081c44b20254d"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"feb73fc298683eb33cdf2533f3dc3f22fb4a7e96","unresolved":false,"context_lines":[{"line_number":186,"context_line":"                      \"ideally project networks must be able to route to the \""},{"line_number":187,"context_line":"                      \"network where the pre-existing security services has \""},{"line_number":188,"context_line":"                      \"been deployed. The set of parameters that can be \""},{"line_number":189,"context_line":"                      \"configured is the same used in the security service \""},{"line_number":190,"context_line":"                      \"creation. You can repeat this option many times, and \""},{"line_number":191,"context_line":"                      \"each entry takes the standard dict config parameters: \""},{"line_number":192,"context_line":"                      \"security_service \u003d \""}],"source_content_type":"text/x-python","patch_set":29,"id":"bf51134e_4574fb35","line":189,"range":{"start_line":189,"start_character":45,"end_line":189,"end_character":46},"updated":"2020-06-26 22:49:41.000000000","message":"as","commit_id":"f68281dcc77f4395f250b032566b4730bd57b8d9"}],"manila_tempest_tests/tests/api/admin/test_migration.py":[{"author":{"_account_id":30002,"name":"Douglas Viroel","email":"viroel@gmail.com","username":"dviroel"},"change_message_id":"01961cc443fff790bc1952dc524b51cc78e546a5","unresolved":false,"context_lines":[{"line_number":442,"context_line":"        if not CONF.share.multitenancy_enabled:"},{"line_number":443,"context_line":"            # If currently configured is DHSS\u003dFalse,"},{"line_number":444,"context_line":"            # then we need it for DHSS\u003dTrue"},{"line_number":445,"context_line":"            new_share_network \u003d self.create_share_network("},{"line_number":446,"context_line":"                client\u003dself.shares_v2_client,"},{"line_number":447,"context_line":"                cleanup_in_class\u003dFalse,"},{"line_number":448,"context_line":"                add_security_services\u003dFalse"},{"line_number":449,"context_line":"            )"},{"line_number":450,"context_line":"            new_share_network_id \u003d new_share_network[\"id\"]"},{"line_number":451,"context_line":"        else:"},{"line_number":452,"context_line":"            # If currently configured is DHSS\u003dTrue,"}],"source_content_type":"text/x-python","patch_set":19,"id":"ff570b3c_da5c7a4e","line":449,"range":{"start_line":445,"start_character":0,"end_line":449,"end_character":13},"updated":"2020-06-08 16:28:37.000000000","message":"depending on the test configuration, might fail to create without a neutron net and subnet. My guess is that only dummy may run this test, and it uses the Standalone plugin.","commit_id":"c5b8a0b4aa0aa56bdd739a4c28d854adec0b24a5"},{"author":{"_account_id":30998,"name":"Andre Luiz Beltrami Rocha","display_name":"Andre Beltrami","email":"debeltrami@gmail.com","username":"andrebeltrami"},"change_message_id":"bf5b66452be1e625bf3e8f26294226fdf53f0a16","unresolved":false,"context_lines":[{"line_number":442,"context_line":"        if not CONF.share.multitenancy_enabled:"},{"line_number":443,"context_line":"            # If currently configured is DHSS\u003dFalse,"},{"line_number":444,"context_line":"            # then we need it for DHSS\u003dTrue"},{"line_number":445,"context_line":"            new_share_network \u003d self.create_share_network("},{"line_number":446,"context_line":"                client\u003dself.shares_v2_client,"},{"line_number":447,"context_line":"                cleanup_in_class\u003dFalse,"},{"line_number":448,"context_line":"                add_security_services\u003dFalse"},{"line_number":449,"context_line":"            )"},{"line_number":450,"context_line":"            new_share_network_id \u003d new_share_network[\"id\"]"},{"line_number":451,"context_line":"        else:"},{"line_number":452,"context_line":"            # If currently configured is DHSS\u003dTrue,"}],"source_content_type":"text/x-python","patch_set":19,"id":"ff570b3c_59f6a3da","line":449,"range":{"start_line":445,"start_character":0,"end_line":449,"end_character":13},"in_reply_to":"ff570b3c_da5c7a4e","updated":"2020-06-09 14:44:05.000000000","message":"I will try back this change as the base, in order to see if our changes in the provide share network fix the issue that I am facing in this class.","commit_id":"c5b8a0b4aa0aa56bdd739a4c28d854adec0b24a5"},{"author":{"_account_id":30002,"name":"Douglas Viroel","email":"viroel@gmail.com","username":"dviroel"},"change_message_id":"eed72bf337514dd8618dc091aedd959aaedb75d6","unresolved":false,"context_lines":[{"line_number":454,"context_line":""},{"line_number":455,"context_line":"        share \u003d self.create_share(self.protocol,"},{"line_number":456,"context_line":"                                  share_type_id\u003dself.share_type_id,"},{"line_number":457,"context_line":"                                  cleanup_in_class\u003dFalse)"},{"line_number":458,"context_line":"        share \u003d self.shares_v2_client.get_share(share[\u0027id\u0027])"},{"line_number":459,"context_line":"        share, dest_pool \u003d self._setup_migration(share, opposite\u003dTrue)"},{"line_number":460,"context_line":""}],"source_content_type":"text/x-python","patch_set":40,"id":"bf51134e_ac29bf37","line":457,"range":{"start_line":457,"start_character":34,"end_line":457,"end_character":56},"updated":"2020-06-26 12:03:14.000000000","message":"at the end, the only thing that really was changed here is: \u0027cleanup_in_class\u003dFalse\u0027, right? make sense since default is class iirc.","commit_id":"6aab9a89130089bf26f0730572067e2ce8949eee"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"feb73fc298683eb33cdf2533f3dc3f22fb4a7e96","unresolved":false,"context_lines":[{"line_number":454,"context_line":""},{"line_number":455,"context_line":"        share \u003d self.create_share(self.protocol,"},{"line_number":456,"context_line":"                                  share_type_id\u003dself.share_type_id,"},{"line_number":457,"context_line":"                                  cleanup_in_class\u003dFalse)"},{"line_number":458,"context_line":"        share \u003d self.shares_v2_client.get_share(share[\u0027id\u0027])"},{"line_number":459,"context_line":"        share, dest_pool \u003d self._setup_migration(share, opposite\u003dTrue)"},{"line_number":460,"context_line":""}],"source_content_type":"text/x-python","patch_set":40,"id":"bf51134e_46a6faac","line":457,"range":{"start_line":457,"start_character":34,"end_line":457,"end_character":56},"in_reply_to":"bf51134e_ac29bf37","updated":"2020-06-26 22:49:41.000000000","message":"I wish the default in the \"create_share\" method for cleanup_in_class would be False, so that cleanups are attempted immediately after a test case finishes. This is the right thing to do here.","commit_id":"6aab9a89130089bf26f0730572067e2ce8949eee"}],"manila_tempest_tests/tests/api/admin/test_share_servers.py":[{"author":{"_account_id":30002,"name":"Douglas Viroel","email":"viroel@gmail.com","username":"dviroel"},"change_message_id":"01961cc443fff790bc1952dc524b51cc78e546a5","unresolved":false,"context_lines":[{"line_number":50,"context_line":"            share_type_id\u003dcls.share_type_id)"},{"line_number":51,"context_line":"        cls.share_network \u003d cls.shares_v2_client.get_share_network("},{"line_number":52,"context_line":"            cls.shares_v2_client.share_network_id)"},{"line_number":53,"context_line":"        cls.share_network_id \u003d cls.share_network[\"id\"]"},{"line_number":54,"context_line":""},{"line_number":55,"context_line":"        if not cls.share_network[\"name\"]:"},{"line_number":56,"context_line":"            sn_id \u003d cls.share_network[\"id\"]"}],"source_content_type":"text/x-python","patch_set":19,"id":"ff570b3c_da0aba25","line":53,"range":{"start_line":53,"start_character":8,"end_line":53,"end_character":54},"updated":"2020-06-08 16:28:37.000000000","message":"is this needed?","commit_id":"c5b8a0b4aa0aa56bdd739a4c28d854adec0b24a5"},{"author":{"_account_id":30998,"name":"Andre Luiz Beltrami Rocha","display_name":"Andre Beltrami","email":"debeltrami@gmail.com","username":"andrebeltrami"},"change_message_id":"bf5b66452be1e625bf3e8f26294226fdf53f0a16","unresolved":false,"context_lines":[{"line_number":50,"context_line":"            share_type_id\u003dcls.share_type_id)"},{"line_number":51,"context_line":"        cls.share_network \u003d cls.shares_v2_client.get_share_network("},{"line_number":52,"context_line":"            cls.shares_v2_client.share_network_id)"},{"line_number":53,"context_line":"        cls.share_network_id \u003d cls.share_network[\"id\"]"},{"line_number":54,"context_line":""},{"line_number":55,"context_line":"        if not cls.share_network[\"name\"]:"},{"line_number":56,"context_line":"            sn_id \u003d cls.share_network[\"id\"]"}],"source_content_type":"text/x-python","patch_set":19,"id":"ff570b3c_7672944b","line":53,"range":{"start_line":53,"start_character":8,"end_line":53,"end_character":54},"in_reply_to":"ff570b3c_da0aba25","updated":"2020-06-09 14:44:05.000000000","message":"No.","commit_id":"c5b8a0b4aa0aa56bdd739a4c28d854adec0b24a5"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"feb73fc298683eb33cdf2533f3dc3f22fb4a7e96","unresolved":false,"context_lines":[{"line_number":45,"context_line":"        # create share type"},{"line_number":46,"context_line":"        cls.share_type \u003d cls._create_share_type()"},{"line_number":47,"context_line":"        cls.share_type_id \u003d cls.share_type[\u0027id\u0027]"},{"line_number":48,"context_line":"        # create share in this new share network"},{"line_number":49,"context_line":"        cls.share \u003d cls.create_share("},{"line_number":50,"context_line":"            share_type_id\u003dcls.share_type_id)"},{"line_number":51,"context_line":"        cls.share_network \u003d cls.shares_v2_client.get_share_network("}],"source_content_type":"text/x-python","patch_set":23,"id":"ff570b3c_595e71e9","line":48,"range":{"start_line":48,"start_character":22,"end_line":48,"end_character":48},"updated":"2020-06-26 22:49:41.000000000","message":"there\u0027s no new share network, yet?","commit_id":"22de8bf90245045e9ddabe6bb8d7be55117fb3d6"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"feb73fc298683eb33cdf2533f3dc3f22fb4a7e96","unresolved":false,"context_lines":[{"line_number":225,"context_line":"        # TODO(vponomaryov): attach security-services too. If any exist from"},{"line_number":226,"context_line":"        #                    donor share-network."},{"line_number":227,"context_line":"        new_sn \u003d self.create_share_network("},{"line_number":228,"context_line":"            add_security_services\u003dTrue,"},{"line_number":229,"context_line":"            neutron_net_id\u003dself.share_net_info[\u0027neutron_net_id\u0027],"},{"line_number":230,"context_line":"            neutron_subnet_id\u003dself.share_net_info[\u0027neutron_subnet_id\u0027])"},{"line_number":231,"context_line":""}],"source_content_type":"text/x-python","patch_set":29,"id":"bf51134e_8593b34f","line":228,"range":{"start_line":228,"start_character":38,"end_line":228,"end_character":39},"updated":"2020-06-26 22:49:41.000000000","message":"`cleanup_in_class\u003dFalse` here as well?","commit_id":"f68281dcc77f4395f250b032566b4730bd57b8d9"},{"author":{"_account_id":30002,"name":"Douglas Viroel","email":"viroel@gmail.com","username":"dviroel"},"change_message_id":"eed72bf337514dd8618dc091aedd959aaedb75d6","unresolved":false,"context_lines":[{"line_number":289,"context_line":"        # Get network and subnet from existing share_network and reuse it"},{"line_number":290,"context_line":"        # to be able to delete share_server after test ends."},{"line_number":291,"context_line":"        new_sn \u003d self.create_share_network("},{"line_number":292,"context_line":"            cleanup_in_class\u003dFalse,"},{"line_number":293,"context_line":"            add_security_services\u003dTrue,"},{"line_number":294,"context_line":"            neutron_net_id\u003dself.share_net_info[\u0027neutron_net_id\u0027],"},{"line_number":295,"context_line":"            neutron_subnet_id\u003dself.share_net_info[\u0027neutron_subnet_id\u0027])"}],"source_content_type":"text/x-python","patch_set":40,"id":"bf51134e_acdedf3a","line":292,"range":{"start_line":292,"start_character":0,"end_line":292,"end_character":35},"updated":"2020-06-26 12:03:14.000000000","message":"default is False, np","commit_id":"6aab9a89130089bf26f0730572067e2ce8949eee"},{"author":{"_account_id":30998,"name":"Andre Luiz Beltrami Rocha","display_name":"Andre Beltrami","email":"debeltrami@gmail.com","username":"andrebeltrami"},"change_message_id":"a5e053f58b94e2f4acf8253afb236eb0f69fb445","unresolved":false,"context_lines":[{"line_number":289,"context_line":"        # Get network and subnet from existing share_network and reuse it"},{"line_number":290,"context_line":"        # to be able to delete share_server after test ends."},{"line_number":291,"context_line":"        new_sn \u003d self.create_share_network("},{"line_number":292,"context_line":"            cleanup_in_class\u003dFalse,"},{"line_number":293,"context_line":"            add_security_services\u003dTrue,"},{"line_number":294,"context_line":"            neutron_net_id\u003dself.share_net_info[\u0027neutron_net_id\u0027],"},{"line_number":295,"context_line":"            neutron_subnet_id\u003dself.share_net_info[\u0027neutron_subnet_id\u0027])"}],"source_content_type":"text/x-python","patch_set":40,"id":"bf51134e_930de0e9","line":292,"range":{"start_line":292,"start_character":0,"end_line":292,"end_character":35},"in_reply_to":"bf51134e_acdedf3a","updated":"2020-06-29 16:43:54.000000000","message":"Done","commit_id":"6aab9a89130089bf26f0730572067e2ce8949eee"}],"manila_tempest_tests/tests/api/base.py":[{"author":{"_account_id":30002,"name":"Douglas Viroel","email":"viroel@gmail.com","username":"dviroel"},"change_message_id":"6c2d1eb4d0bbb2ada6fc189694af6850c87d1b12","unresolved":false,"context_lines":[{"line_number":874,"context_line":"            \"client\": client,"},{"line_number":875,"context_line":"        }"},{"line_number":876,"context_line":""},{"line_number":877,"context_line":"        if add_security_service and \\"},{"line_number":878,"context_line":"                CONF.share.security_service.get(\"ss_type\") is not None:"},{"line_number":879,"context_line":"            security_service_id \u003d cls.provide_security_service(client)"},{"line_number":880,"context_line":"            client.add_sec_service_to_share_network("}],"source_content_type":"text/x-python","patch_set":2,"id":"ff570b3c_369e5c54","line":877,"range":{"start_line":877,"start_character":36,"end_line":877,"end_character":37},"updated":"2020-05-25 02:29:26.000000000","message":"use: ()","commit_id":"5e26102c13a47b3fbb2ae87e388d015cb8948d86"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"fb57fc0a1c25d9fd157b2ea65247070ff51dbbf4","unresolved":false,"context_lines":[{"line_number":318,"context_line":"        super(BaseSharesTest, cls).resource_cleanup()"},{"line_number":319,"context_line":""},{"line_number":320,"context_line":"    @classmethod"},{"line_number":321,"context_line":"    def provide_security_service(cls, shares_client):"},{"line_number":322,"context_line":"        search_word \u003d \"reusable\""},{"line_number":323,"context_line":"        ss_name \u003d \"ss_autogenerated_by_tempest_%s\" % search_word"},{"line_number":324,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"ff570b3c_c298da6b","line":321,"range":{"start_line":321,"start_character":8,"end_line":321,"end_character":32},"updated":"2020-05-26 21:33:26.000000000","message":"\"associate_security_services_to_share_network\" perhaps?","commit_id":"478848969bb34de002cefd9f922f62d68dd33c8b"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"fb57fc0a1c25d9fd157b2ea65247070ff51dbbf4","unresolved":false,"context_lines":[{"line_number":318,"context_line":"        super(BaseSharesTest, cls).resource_cleanup()"},{"line_number":319,"context_line":""},{"line_number":320,"context_line":"    @classmethod"},{"line_number":321,"context_line":"    def provide_security_service(cls, shares_client):"},{"line_number":322,"context_line":"        search_word \u003d \"reusable\""},{"line_number":323,"context_line":"        ss_name \u003d \"ss_autogenerated_by_tempest_%s\" % search_word"},{"line_number":324,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"ff570b3c_05dadce7","line":321,"range":{"start_line":321,"start_character":51,"end_line":321,"end_character":52},"updated":"2020-05-26 21:33:26.000000000","message":"accept the share network as well, and perform the \"add_sec_service_to_share_network\" call at the end of this method itself...","commit_id":"478848969bb34de002cefd9f922f62d68dd33c8b"},{"author":{"_account_id":30002,"name":"Douglas Viroel","email":"viroel@gmail.com","username":"dviroel"},"change_message_id":"d64968e682b8634e60e6beb86206af3971371b09","unresolved":false,"context_lines":[{"line_number":318,"context_line":"        super(BaseSharesTest, cls).resource_cleanup()"},{"line_number":319,"context_line":""},{"line_number":320,"context_line":"    @classmethod"},{"line_number":321,"context_line":"    def provide_security_service(cls, shares_client):"},{"line_number":322,"context_line":"        search_word \u003d \"reusable\""},{"line_number":323,"context_line":"        ss_name \u003d \"ss_autogenerated_by_tempest_%s\" % search_word"},{"line_number":324,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"ff570b3c_388f2524","line":321,"range":{"start_line":321,"start_character":51,"end_line":321,"end_character":52},"in_reply_to":"ff570b3c_05dadce7","updated":"2020-05-28 12:35:55.000000000","message":"+1. Only if share_network_id is not None, so the test can decide to associate it or not.","commit_id":"478848969bb34de002cefd9f922f62d68dd33c8b"},{"author":{"_account_id":30002,"name":"Douglas Viroel","email":"viroel@gmail.com","username":"dviroel"},"change_message_id":"d64968e682b8634e60e6beb86206af3971371b09","unresolved":false,"context_lines":[{"line_number":318,"context_line":"        super(BaseSharesTest, cls).resource_cleanup()"},{"line_number":319,"context_line":""},{"line_number":320,"context_line":"    @classmethod"},{"line_number":321,"context_line":"    def provide_security_service(cls, shares_client):"},{"line_number":322,"context_line":"        search_word \u003d \"reusable\""},{"line_number":323,"context_line":"        ss_name \u003d \"ss_autogenerated_by_tempest_%s\" % search_word"},{"line_number":324,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"ff570b3c_38b8c5c6","line":321,"range":{"start_line":321,"start_character":8,"end_line":321,"end_character":32},"in_reply_to":"ff570b3c_c298da6b","updated":"2020-05-28 12:35:55.000000000","message":"maybe: \"setup_and_associate...\" since there is sec. service creation within the function.","commit_id":"478848969bb34de002cefd9f922f62d68dd33c8b"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"fb57fc0a1c25d9fd157b2ea65247070ff51dbbf4","unresolved":false,"context_lines":[{"line_number":320,"context_line":"    @classmethod"},{"line_number":321,"context_line":"    def provide_security_service(cls, shares_client):"},{"line_number":322,"context_line":"        search_word \u003d \"reusable\""},{"line_number":323,"context_line":"        ss_name \u003d \"ss_autogenerated_by_tempest_%s\" % search_word"},{"line_number":324,"context_line":""},{"line_number":325,"context_line":"        security_services \u003d shares_client.list_security_services()"},{"line_number":326,"context_line":"        for ss in security_services:"},{"line_number":327,"context_line":"            if ss[\"name\"] and search_word in ss[\"name\"]:"},{"line_number":328,"context_line":"                return ss[\"id\"]"},{"line_number":329,"context_line":""},{"line_number":330,"context_line":"        ss_configs \u003d CONF.share.security_service"},{"line_number":331,"context_line":"        ss_params \u003d {"}],"source_content_type":"text/x-python","patch_set":3,"id":"ff570b3c_22a716aa","line":328,"range":{"start_line":323,"start_character":8,"end_line":328,"end_character":31},"updated":"2020-05-26 21:33:26.000000000","message":"Why this optimization?\n\nCan\u0027t we just search for security services by the configured name/s?","commit_id":"478848969bb34de002cefd9f922f62d68dd33c8b"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"fb57fc0a1c25d9fd157b2ea65247070ff51dbbf4","unresolved":false,"context_lines":[{"line_number":327,"context_line":"            if ss[\"name\"] and search_word in ss[\"name\"]:"},{"line_number":328,"context_line":"                return ss[\"id\"]"},{"line_number":329,"context_line":""},{"line_number":330,"context_line":"        ss_configs \u003d CONF.share.security_service"},{"line_number":331,"context_line":"        ss_params \u003d {"},{"line_number":332,"context_line":"            \"name\": ss_name,"},{"line_number":333,"context_line":"            \"dns_ip\": ss_configs.get(\"ss_dns_ip\"),"}],"source_content_type":"text/x-python","patch_set":3,"id":"ff570b3c_e54fe8bb","line":330,"range":{"start_line":330,"start_character":21,"end_line":330,"end_character":48},"updated":"2020-05-26 21:33:26.000000000","message":"A share network can have any number of security services.. So, if you consider making the config opt a multiOpt, it\u0027ll provide flexibility...You can iterate through the config opts and create security services per the config, and add them all to the given Share network..","commit_id":"478848969bb34de002cefd9f922f62d68dd33c8b"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"00f9ee0042317f9e0339458e4249224ce83ead51","unresolved":false,"context_lines":[{"line_number":327,"context_line":"            if ss[\"name\"] and search_word in ss[\"name\"]:"},{"line_number":328,"context_line":"                return ss[\"id\"]"},{"line_number":329,"context_line":""},{"line_number":330,"context_line":"        ss_configs \u003d CONF.share.security_service"},{"line_number":331,"context_line":"        ss_params \u003d {"},{"line_number":332,"context_line":"            \"name\": ss_name,"},{"line_number":333,"context_line":"            \"dns_ip\": ss_configs.get(\"ss_dns_ip\"),"}],"source_content_type":"text/x-python","patch_set":3,"id":"ff570b3c_75b1988f","line":330,"range":{"start_line":330,"start_character":21,"end_line":330,"end_character":48},"in_reply_to":"ff570b3c_b8cb3551","updated":"2020-05-28 22:19:53.000000000","message":"Hmm, I\u0027m okay with this plan of starting with one if its too hard to make this change right away, with little benefit..","commit_id":"478848969bb34de002cefd9f922f62d68dd33c8b"},{"author":{"_account_id":30002,"name":"Douglas Viroel","email":"viroel@gmail.com","username":"dviroel"},"change_message_id":"d64968e682b8634e60e6beb86206af3971371b09","unresolved":false,"context_lines":[{"line_number":327,"context_line":"            if ss[\"name\"] and search_word in ss[\"name\"]:"},{"line_number":328,"context_line":"                return ss[\"id\"]"},{"line_number":329,"context_line":""},{"line_number":330,"context_line":"        ss_configs \u003d CONF.share.security_service"},{"line_number":331,"context_line":"        ss_params \u003d {"},{"line_number":332,"context_line":"            \"name\": ss_name,"},{"line_number":333,"context_line":"            \"dns_ip\": ss_configs.get(\"ss_dns_ip\"),"}],"source_content_type":"text/x-python","patch_set":3,"id":"ff570b3c_b8cb3551","line":330,"range":{"start_line":330,"start_character":21,"end_line":330,"end_character":48},"in_reply_to":"ff570b3c_e54fe8bb","updated":"2020-05-28 12:35:55.000000000","message":"+1, but we\u0027ll consider testing one at this time, we don\u0027t have a setup ready to configure more than one sec. service at this moment.","commit_id":"478848969bb34de002cefd9f922f62d68dd33c8b"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"0576b1b5d7499c312e0a91e4f54d760b673c90f0","unresolved":false,"context_lines":[{"line_number":339,"context_line":""},{"line_number":340,"context_line":"        ss_type \u003d CONF.share.security_service.get(\"ss_type\")"},{"line_number":341,"context_line":"        ss \u003d cls.create_security_service(ss_type,"},{"line_number":342,"context_line":"                                         **ss_params)"},{"line_number":343,"context_line":"        return ss[\"id\"]"},{"line_number":344,"context_line":""},{"line_number":345,"context_line":"    @classmethod"},{"line_number":346,"context_line":"    @network_synchronized"}],"source_content_type":"text/x-python","patch_set":3,"id":"ff570b3c_cbb75586","line":343,"range":{"start_line":342,"start_character":53,"end_line":343,"end_character":23},"updated":"2020-05-27 00:37:02.000000000","message":"You\u0027ll need to handle cleanup as well.. \n\n1) Disassociate the security service from share network\n2) Delete the security service..","commit_id":"478848969bb34de002cefd9f922f62d68dd33c8b"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"e2e81a1d95cf37378c36ab72af4d8f374a28d040","unresolved":false,"context_lines":[{"line_number":339,"context_line":""},{"line_number":340,"context_line":"        ss_type \u003d CONF.share.security_service.get(\"ss_type\")"},{"line_number":341,"context_line":"        ss \u003d cls.create_security_service(ss_type,"},{"line_number":342,"context_line":"                                         **ss_params)"},{"line_number":343,"context_line":"        return ss[\"id\"]"},{"line_number":344,"context_line":""},{"line_number":345,"context_line":"    @classmethod"},{"line_number":346,"context_line":"    @network_synchronized"}],"source_content_type":"text/x-python","patch_set":3,"id":"ff570b3c_2532355f","line":343,"range":{"start_line":342,"start_character":53,"end_line":343,"end_character":23},"in_reply_to":"ff570b3c_1bd16dce","updated":"2020-05-31 20:12:02.000000000","message":"I don\u0027t... where do you see this reuse? Is it some particular test classes? or random?","commit_id":"478848969bb34de002cefd9f922f62d68dd33c8b"},{"author":{"_account_id":30002,"name":"Douglas Viroel","email":"viroel@gmail.com","username":"dviroel"},"change_message_id":"fdd08db6ad448b0d5a12b0637db21154e53103a8","unresolved":false,"context_lines":[{"line_number":339,"context_line":""},{"line_number":340,"context_line":"        ss_type \u003d CONF.share.security_service.get(\"ss_type\")"},{"line_number":341,"context_line":"        ss \u003d cls.create_security_service(ss_type,"},{"line_number":342,"context_line":"                                         **ss_params)"},{"line_number":343,"context_line":"        return ss[\"id\"]"},{"line_number":344,"context_line":""},{"line_number":345,"context_line":"    @classmethod"},{"line_number":346,"context_line":"    @network_synchronized"}],"source_content_type":"text/x-python","patch_set":3,"id":"ff570b3c_1bd16dce","line":343,"range":{"start_line":342,"start_character":53,"end_line":343,"end_character":23},"in_reply_to":"ff570b3c_98cbd148","updated":"2020-05-29 02:24:27.000000000","message":"@gouthamr, we might need to start deleting share-networks in \u0027provide_share_network\u0027 also, or this logic isn\u0027t going to work. I saw some share-networks being reused after removing the security service, and CIFS share creation failing.\nDO you see any problem with cleaning up share-networks? Don\u0027t know why was implemented in this way.","commit_id":"478848969bb34de002cefd9f922f62d68dd33c8b"},{"author":{"_account_id":30002,"name":"Douglas Viroel","email":"viroel@gmail.com","username":"dviroel"},"change_message_id":"d64968e682b8634e60e6beb86206af3971371b09","unresolved":false,"context_lines":[{"line_number":339,"context_line":""},{"line_number":340,"context_line":"        ss_type \u003d CONF.share.security_service.get(\"ss_type\")"},{"line_number":341,"context_line":"        ss \u003d cls.create_security_service(ss_type,"},{"line_number":342,"context_line":"                                         **ss_params)"},{"line_number":343,"context_line":"        return ss[\"id\"]"},{"line_number":344,"context_line":""},{"line_number":345,"context_line":"    @classmethod"},{"line_number":346,"context_line":"    @network_synchronized"}],"source_content_type":"text/x-python","patch_set":3,"id":"ff570b3c_98cbd148","line":343,"range":{"start_line":342,"start_character":53,"end_line":343,"end_character":23},"in_reply_to":"ff570b3c_cbb75586","updated":"2020-05-28 12:35:55.000000000","message":"+1, you\u0027ll need to handle dissociate security service at cleanup methods.","commit_id":"478848969bb34de002cefd9f922f62d68dd33c8b"},{"author":{"_account_id":30002,"name":"Douglas Viroel","email":"viroel@gmail.com","username":"dviroel"},"change_message_id":"d64968e682b8634e60e6beb86206af3971371b09","unresolved":false,"context_lines":[{"line_number":875,"context_line":"        }"},{"line_number":876,"context_line":""},{"line_number":877,"context_line":"        if add_security_service and ("},{"line_number":878,"context_line":"                CONF.share.security_service.get(\"ss_type\") is not None):"},{"line_number":879,"context_line":"            security_service_id \u003d cls.provide_security_service(client)"},{"line_number":880,"context_line":"            client.add_sec_service_to_share_network("},{"line_number":881,"context_line":"                share_network[\"id\"],"}],"source_content_type":"text/x-python","patch_set":3,"id":"ff570b3c_3879e5fb","line":878,"range":{"start_line":878,"start_character":16,"end_line":878,"end_character":58},"updated":"2020-05-28 12:35:55.000000000","message":"You could move this validation into \u0027provide_security_service\u0027 and return None if no \u0027security_service\u0027 was set in tempest configuration. This might work if also provide the \u0027share_network_id\u0027 as a parameter. If no \u0027security_service\u0027 was created and associated to the \u0027share_network\u0027 you don\u0027t need to worry, just continue the flow.\nMakes sense?","commit_id":"478848969bb34de002cefd9f922f62d68dd33c8b"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"fb57fc0a1c25d9fd157b2ea65247070ff51dbbf4","unresolved":false,"context_lines":[{"line_number":876,"context_line":""},{"line_number":877,"context_line":"        if add_security_service and ("},{"line_number":878,"context_line":"                CONF.share.security_service.get(\"ss_type\") is not None):"},{"line_number":879,"context_line":"            security_service_id \u003d cls.provide_security_service(client)"},{"line_number":880,"context_line":"            client.add_sec_service_to_share_network("},{"line_number":881,"context_line":"                share_network[\"id\"],"},{"line_number":882,"context_line":"                security_service_id)"},{"line_number":883,"context_line":""},{"line_number":884,"context_line":"        if cleanup_in_class:"},{"line_number":885,"context_line":"            cls.class_resources.insert(0, resource)"}],"source_content_type":"text/x-python","patch_set":3,"id":"ff570b3c_e277de3a","line":882,"range":{"start_line":879,"start_character":12,"end_line":882,"end_character":36},"updated":"2020-05-26 21:33:26.000000000","message":"delegate this to the method..","commit_id":"478848969bb34de002cefd9f922f62d68dd33c8b"},{"author":{"_account_id":30002,"name":"Douglas Viroel","email":"viroel@gmail.com","username":"dviroel"},"change_message_id":"d64968e682b8634e60e6beb86206af3971371b09","unresolved":false,"context_lines":[{"line_number":876,"context_line":""},{"line_number":877,"context_line":"        if add_security_service and ("},{"line_number":878,"context_line":"                CONF.share.security_service.get(\"ss_type\") is not None):"},{"line_number":879,"context_line":"            security_service_id \u003d cls.provide_security_service(client)"},{"line_number":880,"context_line":"            client.add_sec_service_to_share_network("},{"line_number":881,"context_line":"                share_network[\"id\"],"},{"line_number":882,"context_line":"                security_service_id)"},{"line_number":883,"context_line":""},{"line_number":884,"context_line":"        if cleanup_in_class:"},{"line_number":885,"context_line":"            cls.class_resources.insert(0, resource)"}],"source_content_type":"text/x-python","patch_set":3,"id":"ff570b3c_78835dcd","line":882,"range":{"start_line":879,"start_character":12,"end_line":882,"end_character":36},"in_reply_to":"ff570b3c_e277de3a","updated":"2020-05-28 12:35:55.000000000","message":"+1","commit_id":"478848969bb34de002cefd9f922f62d68dd33c8b"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"e2e81a1d95cf37378c36ab72af4d8f374a28d040","unresolved":false,"context_lines":[{"line_number":328,"context_line":"        security_services \u003d shares_client.list_security_services()"},{"line_number":329,"context_line":""},{"line_number":330,"context_line":"        for ss_config in ss_configs:"},{"line_number":331,"context_line":"            ss \u003d None"},{"line_number":332,"context_line":"            ss_name \u003d \"ss_autogenerated_by_tempest_%s\" % ("},{"line_number":333,"context_line":"                ss_config.get(\"ss_type\"))"},{"line_number":334,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"ff570b3c_e5dddd14","line":331,"range":{"start_line":331,"start_character":12,"end_line":331,"end_character":21},"updated":"2020-05-31 20:12:02.000000000","message":"nit: not a very readable name, use \"security_service\" perhaps?","commit_id":"28fe8a5bf420c756fb94b167b327f63f8f0b2b35"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"e2e81a1d95cf37378c36ab72af4d8f374a28d040","unresolved":false,"context_lines":[{"line_number":332,"context_line":"            ss_name \u003d \"ss_autogenerated_by_tempest_%s\" % ("},{"line_number":333,"context_line":"                ss_config.get(\"ss_type\"))"},{"line_number":334,"context_line":""},{"line_number":335,"context_line":"            if security_services is not None:"},{"line_number":336,"context_line":"                for security_service in security_services:"},{"line_number":337,"context_line":"                    if ss_name \u003d\u003d security_service[\"name\"]:"},{"line_number":338,"context_line":"                        ss \u003d security_service"},{"line_number":339,"context_line":"                        break"},{"line_number":340,"context_line":""},{"line_number":341,"context_line":"            if ss is None:"},{"line_number":342,"context_line":"                ss_params \u003d {"}],"source_content_type":"text/x-python","patch_set":4,"id":"ff570b3c_85bfc1a8","line":339,"range":{"start_line":335,"start_character":12,"end_line":339,"end_character":29},"updated":"2020-05-31 20:12:02.000000000","message":"services_matching_name \u003d [s for s in security_services if s[\u0027name] \u003d\u003d ss_name]\nsecurity_service \u003d (services_matching_name[0] if services_matching_name else None)","commit_id":"28fe8a5bf420c756fb94b167b327f63f8f0b2b35"},{"author":{"_account_id":30002,"name":"Douglas Viroel","email":"viroel@gmail.com","username":"dviroel"},"change_message_id":"01961cc443fff790bc1952dc524b51cc78e546a5","unresolved":false,"context_lines":[{"line_number":348,"context_line":"                    \"password\": ss_config.get(\"ss_password\")"},{"line_number":349,"context_line":"                }"},{"line_number":350,"context_line":"                ss_type \u003d ss_config.get(\"ss_type\")"},{"line_number":351,"context_line":"                ss \u003d cls.create_security_service("},{"line_number":352,"context_line":"                    ss_type,"},{"line_number":353,"context_line":"                    cleanup_in_class\u003dcleanup_in_class,"},{"line_number":354,"context_line":"                    **ss_params)"},{"line_number":355,"context_line":""},{"line_number":356,"context_line":"            cls.add_sec_service_to_share_network("},{"line_number":357,"context_line":"                shares_client, share_network_id, ss[\"id\"],"}],"source_content_type":"text/x-python","patch_set":4,"id":"ff570b3c_ca3c33e3","line":354,"range":{"start_line":351,"start_character":15,"end_line":354,"end_character":32},"updated":"2020-06-08 16:28:37.000000000","message":"It is good to provide the client here also.","commit_id":"28fe8a5bf420c756fb94b167b327f63f8f0b2b35"},{"author":{"_account_id":30002,"name":"Douglas Viroel","email":"viroel@gmail.com","username":"dviroel"},"change_message_id":"01961cc443fff790bc1952dc524b51cc78e546a5","unresolved":false,"context_lines":[{"line_number":342,"context_line":"            }"},{"line_number":343,"context_line":"            ss_type \u003d ss_config.get(\"ss_type\")"},{"line_number":344,"context_line":"            security_service \u003d cls.create_security_service("},{"line_number":345,"context_line":"                ss_type,"},{"line_number":346,"context_line":"                cleanup_in_class\u003dcleanup_in_class,"},{"line_number":347,"context_line":"                **ss_params)"},{"line_number":348,"context_line":""}],"source_content_type":"text/x-python","patch_set":19,"id":"ff570b3c_754a9f5b","line":345,"updated":"2020-06-08 16:28:37.000000000","message":"client\u003dshares_client","commit_id":"c5b8a0b4aa0aa56bdd739a4c28d854adec0b24a5"},{"author":{"_account_id":30998,"name":"Andre Luiz Beltrami Rocha","display_name":"Andre Beltrami","email":"debeltrami@gmail.com","username":"andrebeltrami"},"change_message_id":"bf5b66452be1e625bf3e8f26294226fdf53f0a16","unresolved":false,"context_lines":[{"line_number":342,"context_line":"            }"},{"line_number":343,"context_line":"            ss_type \u003d ss_config.get(\"ss_type\")"},{"line_number":344,"context_line":"            security_service \u003d cls.create_security_service("},{"line_number":345,"context_line":"                ss_type,"},{"line_number":346,"context_line":"                cleanup_in_class\u003dcleanup_in_class,"},{"line_number":347,"context_line":"                **ss_params)"},{"line_number":348,"context_line":""}],"source_content_type":"text/x-python","patch_set":19,"id":"ff570b3c_76a734a9","line":345,"in_reply_to":"ff570b3c_754a9f5b","updated":"2020-06-09 14:44:05.000000000","message":"Done","commit_id":"c5b8a0b4aa0aa56bdd739a4c28d854adec0b24a5"},{"author":{"_account_id":30002,"name":"Douglas Viroel","email":"viroel@gmail.com","username":"dviroel"},"change_message_id":"01961cc443fff790bc1952dc524b51cc78e546a5","unresolved":false,"context_lines":[{"line_number":412,"context_line":"            else:"},{"line_number":413,"context_line":"                net_id \u003d subnet_id \u003d None"},{"line_number":414,"context_line":"                networks \u003d networks_client.list_networks()[\"networks\"]"},{"line_number":415,"context_line":"                if networks:"},{"line_number":416,"context_line":"                    for network in networks:"},{"line_number":417,"context_line":"                        if network[\"subnets\"]:"},{"line_number":418,"context_line":"                            net_id \u003d network[\"id\"]"}],"source_content_type":"text/x-python","patch_set":19,"id":"ff570b3c_b5c9d7ad","line":415,"range":{"start_line":415,"start_character":15,"end_line":415,"end_character":28},"updated":"2020-06-08 16:28:37.000000000","message":"don\u0027t think that this validation is needed, it will be always a list, empty or not.","commit_id":"c5b8a0b4aa0aa56bdd739a4c28d854adec0b24a5"},{"author":{"_account_id":30998,"name":"Andre Luiz Beltrami Rocha","display_name":"Andre Beltrami","email":"debeltrami@gmail.com","username":"andrebeltrami"},"change_message_id":"bf5b66452be1e625bf3e8f26294226fdf53f0a16","unresolved":false,"context_lines":[{"line_number":412,"context_line":"            else:"},{"line_number":413,"context_line":"                net_id \u003d subnet_id \u003d None"},{"line_number":414,"context_line":"                networks \u003d networks_client.list_networks()[\"networks\"]"},{"line_number":415,"context_line":"                if networks:"},{"line_number":416,"context_line":"                    for network in networks:"},{"line_number":417,"context_line":"                        if network[\"subnets\"]:"},{"line_number":418,"context_line":"                            net_id \u003d network[\"id\"]"}],"source_content_type":"text/x-python","patch_set":19,"id":"ff570b3c_168198c4","line":415,"range":{"start_line":415,"start_character":15,"end_line":415,"end_character":28},"in_reply_to":"ff570b3c_b5c9d7ad","updated":"2020-06-09 14:44:05.000000000","message":"If it will be always a list we can remove.","commit_id":"c5b8a0b4aa0aa56bdd739a4c28d854adec0b24a5"},{"author":{"_account_id":30002,"name":"Douglas Viroel","email":"viroel@gmail.com","username":"dviroel"},"change_message_id":"01961cc443fff790bc1952dc524b51cc78e546a5","unresolved":false,"context_lines":[{"line_number":437,"context_line":"                return sn[\"id\"]"},{"line_number":438,"context_line":""},{"line_number":439,"context_line":"    @classmethod"},{"line_number":440,"context_line":"    def create_network(cls):"},{"line_number":441,"context_line":"        network \u003d cls.networks_client.create_network("},{"line_number":442,"context_line":"            name\u003d\"tempest-net\")"},{"line_number":443,"context_line":"        cls.addCleanup(cls.networks_client.delete_network,"}],"source_content_type":"text/x-python","patch_set":19,"id":"ff570b3c_b55717cb","line":440,"range":{"start_line":440,"start_character":8,"end_line":440,"end_character":22},"updated":"2020-06-08 16:28:37.000000000","message":"why not use classResourceCleanup on all resources?","commit_id":"c5b8a0b4aa0aa56bdd739a4c28d854adec0b24a5"},{"author":{"_account_id":30998,"name":"Andre Luiz Beltrami Rocha","display_name":"Andre Beltrami","email":"debeltrami@gmail.com","username":"andrebeltrami"},"change_message_id":"bf5b66452be1e625bf3e8f26294226fdf53f0a16","unresolved":false,"context_lines":[{"line_number":437,"context_line":"                return sn[\"id\"]"},{"line_number":438,"context_line":""},{"line_number":439,"context_line":"    @classmethod"},{"line_number":440,"context_line":"    def create_network(cls):"},{"line_number":441,"context_line":"        network \u003d cls.networks_client.create_network("},{"line_number":442,"context_line":"            name\u003d\"tempest-net\")"},{"line_number":443,"context_line":"        cls.addCleanup(cls.networks_client.delete_network,"}],"source_content_type":"text/x-python","patch_set":19,"id":"ff570b3c_798c477f","line":440,"range":{"start_line":440,"start_character":8,"end_line":440,"end_character":22},"in_reply_to":"ff570b3c_b55717cb","updated":"2020-06-09 14:44:05.000000000","message":"I will test with this change!","commit_id":"c5b8a0b4aa0aa56bdd739a4c28d854adec0b24a5"},{"author":{"_account_id":30002,"name":"Douglas Viroel","email":"viroel@gmail.com","username":"dviroel"},"change_message_id":"01961cc443fff790bc1952dc524b51cc78e546a5","unresolved":false,"context_lines":[{"line_number":455,"context_line":"            router[\"id\"],"},{"line_number":456,"context_line":"            subnet_id\u003dsubnet[\u0027id\u0027])"},{"line_number":457,"context_line":""},{"line_number":458,"context_line":"        cls.addCleanup(test_utils.call_and_ignore_notfound_exc,"},{"line_number":459,"context_line":"                       cls.routers_client.remove_router_interface,"},{"line_number":460,"context_line":"                       router[\"id\"],"},{"line_number":461,"context_line":"                       subnet_id\u003dsubnet[\u0027id\u0027])"},{"line_number":462,"context_line":""},{"line_number":463,"context_line":"        cls.addClassResourceCleanup("},{"line_number":464,"context_line":"            test_utils.call_and_ignore_notfound_exc,"},{"line_number":465,"context_line":"            cls.delete_router, router)"},{"line_number":466,"context_line":""},{"line_number":467,"context_line":"        return network, subnet, router"},{"line_number":468,"context_line":""}],"source_content_type":"text/x-python","patch_set":19,"id":"ff570b3c_356b0786","line":465,"range":{"start_line":458,"start_character":0,"end_line":465,"end_character":38},"updated":"2020-06-08 16:28:37.000000000","message":"you\u0027ll need to invert those 2","commit_id":"c5b8a0b4aa0aa56bdd739a4c28d854adec0b24a5"},{"author":{"_account_id":30998,"name":"Andre Luiz Beltrami Rocha","display_name":"Andre Beltrami","email":"debeltrami@gmail.com","username":"andrebeltrami"},"change_message_id":"bf5b66452be1e625bf3e8f26294226fdf53f0a16","unresolved":false,"context_lines":[{"line_number":455,"context_line":"            router[\"id\"],"},{"line_number":456,"context_line":"            subnet_id\u003dsubnet[\u0027id\u0027])"},{"line_number":457,"context_line":""},{"line_number":458,"context_line":"        cls.addCleanup(test_utils.call_and_ignore_notfound_exc,"},{"line_number":459,"context_line":"                       cls.routers_client.remove_router_interface,"},{"line_number":460,"context_line":"                       router[\"id\"],"},{"line_number":461,"context_line":"                       subnet_id\u003dsubnet[\u0027id\u0027])"},{"line_number":462,"context_line":""},{"line_number":463,"context_line":"        cls.addClassResourceCleanup("},{"line_number":464,"context_line":"            test_utils.call_and_ignore_notfound_exc,"},{"line_number":465,"context_line":"            cls.delete_router, router)"},{"line_number":466,"context_line":""},{"line_number":467,"context_line":"        return network, subnet, router"},{"line_number":468,"context_line":""}],"source_content_type":"text/x-python","patch_set":19,"id":"ff570b3c_3992cfa0","line":465,"range":{"start_line":458,"start_character":0,"end_line":465,"end_character":38},"in_reply_to":"ff570b3c_356b0786","updated":"2020-06-09 14:44:05.000000000","message":"Done","commit_id":"c5b8a0b4aa0aa56bdd739a4c28d854adec0b24a5"},{"author":{"_account_id":30002,"name":"Douglas Viroel","email":"viroel@gmail.com","username":"dviroel"},"change_message_id":"d7ea33a1f593ee91d590a62e10d0b8cd626017af","unresolved":false,"context_lines":[{"line_number":438,"context_line":"                return sn[\"id\"]"},{"line_number":439,"context_line":""},{"line_number":440,"context_line":"    @classmethod"},{"line_number":441,"context_line":"    def create_network(cls, networks_client):"},{"line_number":442,"context_line":"        if not networks_client:"},{"line_number":443,"context_line":"            networks_client \u003d cls.networks_client"},{"line_number":444,"context_line":"        network \u003d networks_client.create_network("}],"source_content_type":"text/x-python","patch_set":22,"id":"ff570b3c_a8b9477a","line":441,"range":{"start_line":441,"start_character":28,"end_line":441,"end_character":43},"updated":"2020-06-10 22:04:06.000000000","message":"networks_client\u003dNone\nsince you made it optional in the first \u0027if\u0027","commit_id":"a31bb292a5c668efa0e1363a00628ff84cc18bd1"},{"author":{"_account_id":30998,"name":"Andre Luiz Beltrami Rocha","display_name":"Andre Beltrami","email":"debeltrami@gmail.com","username":"andrebeltrami"},"change_message_id":"6e97dd21522f6201c130cb4960e3e6846bd26748","unresolved":false,"context_lines":[{"line_number":438,"context_line":"                return sn[\"id\"]"},{"line_number":439,"context_line":""},{"line_number":440,"context_line":"    @classmethod"},{"line_number":441,"context_line":"    def create_network(cls, networks_client):"},{"line_number":442,"context_line":"        if not networks_client:"},{"line_number":443,"context_line":"            networks_client \u003d cls.networks_client"},{"line_number":444,"context_line":"        network \u003d networks_client.create_network("}],"source_content_type":"text/x-python","patch_set":22,"id":"ff570b3c_cbf11504","line":441,"range":{"start_line":441,"start_character":28,"end_line":441,"end_character":43},"in_reply_to":"ff570b3c_a8b9477a","updated":"2020-06-10 22:26:09.000000000","message":"Done","commit_id":"a31bb292a5c668efa0e1363a00628ff84cc18bd1"},{"author":{"_account_id":30002,"name":"Douglas Viroel","email":"viroel@gmail.com","username":"dviroel"},"change_message_id":"d7ea33a1f593ee91d590a62e10d0b8cd626017af","unresolved":false,"context_lines":[{"line_number":439,"context_line":""},{"line_number":440,"context_line":"    @classmethod"},{"line_number":441,"context_line":"    def create_network(cls, networks_client):"},{"line_number":442,"context_line":"        if not networks_client:"},{"line_number":443,"context_line":"            networks_client \u003d cls.networks_client"},{"line_number":444,"context_line":"        network \u003d networks_client.create_network("},{"line_number":445,"context_line":"            name\u003d\"tempest-net\")"},{"line_number":446,"context_line":"        cls.addClassResourceCleanup("}],"source_content_type":"text/x-python","patch_set":22,"id":"ff570b3c_28a53748","line":443,"range":{"start_line":442,"start_character":0,"end_line":443,"end_character":49},"updated":"2020-06-10 22:04:06.000000000","message":"ow: networks_client \u003d networks_client or cls.networks_client","commit_id":"a31bb292a5c668efa0e1363a00628ff84cc18bd1"},{"author":{"_account_id":30002,"name":"Douglas Viroel","email":"viroel@gmail.com","username":"dviroel"},"change_message_id":"75ed0525783ef83fecbaf5d035b3f4c26139be79","unresolved":false,"context_lines":[{"line_number":442,"context_line":"        if not networks_client:"},{"line_number":443,"context_line":"            networks_client \u003d cls.networks_client"},{"line_number":444,"context_line":"        network \u003d networks_client.create_network("},{"line_number":445,"context_line":"            name\u003d\"tempest-net\")"},{"line_number":446,"context_line":"        cls.addClassResourceCleanup("},{"line_number":447,"context_line":"            test_utils.call_and_ignore_notfound_exc,"},{"line_number":448,"context_line":"            networks_client.delete_network,"}],"source_content_type":"text/x-python","patch_set":29,"id":"bf51134e_10edd824","line":445,"updated":"2020-06-18 21:25:32.000000000","message":"can you provide the shares_client tenant id here? \u0027tenant_id\u003dshares_client.tenant_id\u0027","commit_id":"f68281dcc77f4395f250b032566b4730bd57b8d9"},{"author":{"_account_id":30998,"name":"Andre Luiz Beltrami Rocha","display_name":"Andre Beltrami","email":"debeltrami@gmail.com","username":"andrebeltrami"},"change_message_id":"3f5897c3d96146a17ba41b61577d20777722b319","unresolved":false,"context_lines":[{"line_number":442,"context_line":"        if not networks_client:"},{"line_number":443,"context_line":"            networks_client \u003d cls.networks_client"},{"line_number":444,"context_line":"        network \u003d networks_client.create_network("},{"line_number":445,"context_line":"            name\u003d\"tempest-net\")"},{"line_number":446,"context_line":"        cls.addClassResourceCleanup("},{"line_number":447,"context_line":"            test_utils.call_and_ignore_notfound_exc,"},{"line_number":448,"context_line":"            networks_client.delete_network,"}],"source_content_type":"text/x-python","patch_set":29,"id":"bf51134e_31de143f","line":445,"in_reply_to":"bf51134e_10edd824","updated":"2020-06-19 13:25:41.000000000","message":"Done","commit_id":"f68281dcc77f4395f250b032566b4730bd57b8d9"},{"author":{"_account_id":30002,"name":"Douglas Viroel","email":"viroel@gmail.com","username":"dviroel"},"change_message_id":"75ed0525783ef83fecbaf5d035b3f4c26139be79","unresolved":false,"context_lines":[{"line_number":449,"context_line":"            network[\u0027network\u0027][\u0027id\u0027])"},{"line_number":450,"context_line":""},{"line_number":451,"context_line":"        subnet \u003d cls.subnets_client.create_subnet("},{"line_number":452,"context_line":"            network_id\u003dnetwork[\u0027network\u0027][\u0027id\u0027])"},{"line_number":453,"context_line":"        cls.addClassResourceCleanup("},{"line_number":454,"context_line":"            test_utils.call_and_ignore_notfound_exc,"},{"line_number":455,"context_line":"            cls.subnets_client.delete_subnet,"}],"source_content_type":"text/x-python","patch_set":29,"id":"bf51134e_90d8c87f","line":452,"updated":"2020-06-18 21:25:32.000000000","message":"Same as L445","commit_id":"f68281dcc77f4395f250b032566b4730bd57b8d9"},{"author":{"_account_id":30998,"name":"Andre Luiz Beltrami Rocha","display_name":"Andre Beltrami","email":"debeltrami@gmail.com","username":"andrebeltrami"},"change_message_id":"3f5897c3d96146a17ba41b61577d20777722b319","unresolved":false,"context_lines":[{"line_number":449,"context_line":"            network[\u0027network\u0027][\u0027id\u0027])"},{"line_number":450,"context_line":""},{"line_number":451,"context_line":"        subnet \u003d cls.subnets_client.create_subnet("},{"line_number":452,"context_line":"            network_id\u003dnetwork[\u0027network\u0027][\u0027id\u0027])"},{"line_number":453,"context_line":"        cls.addClassResourceCleanup("},{"line_number":454,"context_line":"            test_utils.call_and_ignore_notfound_exc,"},{"line_number":455,"context_line":"            cls.subnets_client.delete_subnet,"}],"source_content_type":"text/x-python","patch_set":29,"id":"bf51134e_11e150ff","line":452,"in_reply_to":"bf51134e_90d8c87f","updated":"2020-06-19 13:25:41.000000000","message":"Done","commit_id":"f68281dcc77f4395f250b032566b4730bd57b8d9"},{"author":{"_account_id":30002,"name":"Douglas Viroel","email":"viroel@gmail.com","username":"dviroel"},"change_message_id":"75ed0525783ef83fecbaf5d035b3f4c26139be79","unresolved":false,"context_lines":[{"line_number":456,"context_line":"            subnet[\u0027subnet\u0027][\u0027id\u0027])"},{"line_number":457,"context_line":""},{"line_number":458,"context_line":"        body \u003d cls.routers_client.create_router("},{"line_number":459,"context_line":"            name\u003d\"tempest-router\")"},{"line_number":460,"context_line":"        router \u003d body[\u0027router\u0027]"},{"line_number":461,"context_line":"        cls.routers_client.add_router_interface(router[\"id\"],"},{"line_number":462,"context_line":"                                                subnet_id\u003dsubnet[\u0027id\u0027])"}],"source_content_type":"text/x-python","patch_set":29,"id":"bf51134e_70cd34b7","line":459,"range":{"start_line":459,"start_character":32,"end_line":459,"end_character":33},"updated":"2020-06-18 21:25:32.000000000","message":"Same as L445","commit_id":"f68281dcc77f4395f250b032566b4730bd57b8d9"},{"author":{"_account_id":30998,"name":"Andre Luiz Beltrami Rocha","display_name":"Andre Beltrami","email":"debeltrami@gmail.com","username":"andrebeltrami"},"change_message_id":"3f5897c3d96146a17ba41b61577d20777722b319","unresolved":false,"context_lines":[{"line_number":456,"context_line":"            subnet[\u0027subnet\u0027][\u0027id\u0027])"},{"line_number":457,"context_line":""},{"line_number":458,"context_line":"        body \u003d cls.routers_client.create_router("},{"line_number":459,"context_line":"            name\u003d\"tempest-router\")"},{"line_number":460,"context_line":"        router \u003d body[\u0027router\u0027]"},{"line_number":461,"context_line":"        cls.routers_client.add_router_interface(router[\"id\"],"},{"line_number":462,"context_line":"                                                subnet_id\u003dsubnet[\u0027id\u0027])"}],"source_content_type":"text/x-python","patch_set":29,"id":"bf51134e_71e7ec13","line":459,"range":{"start_line":459,"start_character":32,"end_line":459,"end_character":33},"in_reply_to":"bf51134e_70cd34b7","updated":"2020-06-19 13:25:41.000000000","message":"Done","commit_id":"f68281dcc77f4395f250b032566b4730bd57b8d9"},{"author":{"_account_id":30002,"name":"Douglas Viroel","email":"viroel@gmail.com","username":"dviroel"},"change_message_id":"2b230ef12e3ac5f8960605a2c6e890e5d611799a","unresolved":false,"context_lines":[{"line_number":452,"context_line":"            networks_client.delete_network,"},{"line_number":453,"context_line":"            network[\u0027network\u0027][\u0027id\u0027])"},{"line_number":454,"context_line":""},{"line_number":455,"context_line":"        subnet \u003d cls.subnets_client.create_subnet("},{"line_number":456,"context_line":"            tenant_id\u003dshares_client.tenant_id,"},{"line_number":457,"context_line":"            network_id\u003dnetwork[\u0027network\u0027][\u0027id\u0027],"},{"line_number":458,"context_line":"            name\u003d\"tempest-subnet\")"},{"line_number":459,"context_line":"        cls.addClassResourceCleanup("},{"line_number":460,"context_line":"            test_utils.call_and_ignore_notfound_exc,"},{"line_number":461,"context_line":"            cls.subnets_client.delete_subnet,"},{"line_number":462,"context_line":"            subnet[\u0027subnet\u0027][\u0027id\u0027])"},{"line_number":463,"context_line":""},{"line_number":464,"context_line":"        body \u003d cls.routers_client.create_router("},{"line_number":465,"context_line":"            tenant_id\u003dshares_client.tenant_id,"},{"line_number":466,"context_line":"            name\u003d\"tempest-router\")"},{"line_number":467,"context_line":"        router \u003d body[\u0027router\u0027]"},{"line_number":468,"context_line":"        cls.routers_client.add_router_interface(router[\"id\"],"},{"line_number":469,"context_line":"                                                subnet_id\u003dsubnet[\u0027id\u0027])"},{"line_number":470,"context_line":""},{"line_number":471,"context_line":"        cls.addClassResourceCleanup(test_utils.call_and_ignore_notfound_exc,"},{"line_number":472,"context_line":"                                    cls.routers_client.delete_router, router)"}],"source_content_type":"text/x-python","patch_set":30,"id":"bf51134e_553c4dc7","line":469,"range":{"start_line":455,"start_character":7,"end_line":469,"end_character":71},"updated":"2020-06-19 17:46:03.000000000","message":"I think that you might need to use CONF.network info here to build both subnets and router using the correct info.\nOn Tempest DynamicCredentialProvider._create_subnet() you\u0027ll see how to properly use the provided \u0027cidr\u0027 and \u0027bit mask\u0027 to create a compatible subnet.\nThe same for the DynamicCredentialProvider._create_router(), you\u0027ll see that you must provide the \u0027public_network_id\u0027 to configure the external-gateway.","commit_id":"11558146b8298dff4bd604cbb7b0673d584d8e94"},{"author":{"_account_id":30002,"name":"Douglas Viroel","email":"viroel@gmail.com","username":"dviroel"},"change_message_id":"6cfa16f4407e67cec22a7a2268fa81f1b675a1e1","unresolved":false,"context_lines":[{"line_number":407,"context_line":"                # Share-network already exists, use it"},{"line_number":408,"context_line":"                return sc.share_network_id"},{"line_number":409,"context_line":"            elif not CONF.share.create_networks_when_multitenancy_enabled:"},{"line_number":410,"context_line":"                # Create new share-network if one was not found"},{"line_number":411,"context_line":"                sn_desc \u003d \"This share-network was created by tempest\""},{"line_number":412,"context_line":"                sn \u003d cls.create_share_network(cleanup_in_class\u003dTrue,"},{"line_number":413,"context_line":"                                              add_security_services\u003dTrue,"}],"source_content_type":"text/x-python","patch_set":32,"id":"bf51134e_b6548fff","line":410,"range":{"start_line":410,"start_character":42,"end_line":410,"end_character":63},"updated":"2020-06-24 13:36:20.000000000","message":"remove this part of the comment, since we aren\u0027t checking for already created share networks","commit_id":"47b188ac29028c79728be93964ff1c2294a0555f"},{"author":{"_account_id":30002,"name":"Douglas Viroel","email":"viroel@gmail.com","username":"dviroel"},"change_message_id":"6cfa16f4407e67cec22a7a2268fa81f1b675a1e1","unresolved":false,"context_lines":[{"line_number":415,"context_line":"                                              description\u003dsn_desc)"},{"line_number":416,"context_line":"                return sn[\"id\"]"},{"line_number":417,"context_line":"            else:"},{"line_number":418,"context_line":"                net_id \u003d subnet_id \u003d None"},{"line_number":419,"context_line":"                networks \u003d networks_client.list_networks()[\"networks\"]"},{"line_number":420,"context_line":"                for network in networks:"},{"line_number":421,"context_line":"                    if network[\"subnets\"]:"},{"line_number":422,"context_line":"                        net_id \u003d network[\"id\"]"},{"line_number":423,"context_line":"                        subnet_id \u003d network[\"subnets\"][0]"},{"line_number":424,"context_line":"                        break"},{"line_number":425,"context_line":""},{"line_number":426,"context_line":"                # Create suitable network"},{"line_number":427,"context_line":"                if net_id is None or subnet_id is None:"},{"line_number":428,"context_line":"                    network, subnet, router \u003d cls.create_network("},{"line_number":429,"context_line":"                        shares_client\u003dshares_client,"},{"line_number":430,"context_line":"                        networks_client\u003dnetworks_client)"}],"source_content_type":"text/x-python","patch_set":32,"id":"bf51134e_16173b47","line":427,"range":{"start_line":418,"start_character":0,"end_line":427,"end_character":55},"updated":"2020-06-24 13:36:20.000000000","message":"I believe that we should remove this part since \u0027create_networks_when_multitenancy_enabled\u0027 is enabled:\n\n\"If this one is set to True, then tempest will create neutron networks for each new manila share-network it creates.\"","commit_id":"47b188ac29028c79728be93964ff1c2294a0555f"},{"author":{"_account_id":30002,"name":"Douglas Viroel","email":"viroel@gmail.com","username":"dviroel"},"change_message_id":"6cfa16f4407e67cec22a7a2268fa81f1b675a1e1","unresolved":false,"context_lines":[{"line_number":442,"context_line":""},{"line_number":443,"context_line":"                return sn[\"id\"]"},{"line_number":444,"context_line":""},{"line_number":445,"context_line":"    @classmethod"},{"line_number":446,"context_line":"    def create_network(cls, shares_client\u003dNone, networks_client\u003dNone):"},{"line_number":447,"context_line":"        if not shares_client:"},{"line_number":448,"context_line":"            shares_client \u003d cls.shares_client"}],"source_content_type":"text/x-python","patch_set":32,"id":"bf51134e_b6f00fff","line":445,"range":{"start_line":445,"start_character":5,"end_line":445,"end_character":16},"updated":"2020-06-24 13:36:20.000000000","message":"add method docstring, explaining that you will create networks/subnets/router and that tempest.conf info will be used, that the resource will be cleanup at the class teardown and so on...","commit_id":"47b188ac29028c79728be93964ff1c2294a0555f"},{"author":{"_account_id":30002,"name":"Douglas Viroel","email":"viroel@gmail.com","username":"dviroel"},"change_message_id":"6cfa16f4407e67cec22a7a2268fa81f1b675a1e1","unresolved":false,"context_lines":[{"line_number":443,"context_line":"                return sn[\"id\"]"},{"line_number":444,"context_line":""},{"line_number":445,"context_line":"    @classmethod"},{"line_number":446,"context_line":"    def create_network(cls, shares_client\u003dNone, networks_client\u003dNone):"},{"line_number":447,"context_line":"        if not shares_client:"},{"line_number":448,"context_line":"            shares_client \u003d cls.shares_client"},{"line_number":449,"context_line":"        if not networks_client:"},{"line_number":450,"context_line":"            networks_client \u003d cls.networks_client"},{"line_number":451,"context_line":"        network \u003d networks_client.create_network("},{"line_number":452,"context_line":"            tenant_id\u003dshares_client.tenant_id,"},{"line_number":453,"context_line":"            name\u003d\"tempest-net\")"},{"line_number":454,"context_line":"        cls.addClassResourceCleanup("},{"line_number":455,"context_line":"            test_utils.call_and_ignore_notfound_exc,"},{"line_number":456,"context_line":"            networks_client.delete_network,"},{"line_number":457,"context_line":"            network[\u0027network\u0027][\u0027id\u0027])"},{"line_number":458,"context_line":"        subnet \u003d cls.subnets_client.create_subnet("},{"line_number":459,"context_line":"            network_id\u003dnetwork[\u0027network\u0027][\u0027id\u0027],"},{"line_number":460,"context_line":"            cidr\u003dstr(cls.project_network_cidr),"},{"line_number":461,"context_line":"            tenant_id\u003dshares_client.tenant_id,"},{"line_number":462,"context_line":"            name\u003d\"tempest-subnet\","},{"line_number":463,"context_line":"            ip_version\u003d(ipaddress.ip_network("},{"line_number":464,"context_line":"                six.text_type(cls.project_network_cidr)).version))"},{"line_number":465,"context_line":"        cls.addClassResourceCleanup("},{"line_number":466,"context_line":"            test_utils.call_and_ignore_notfound_exc,"},{"line_number":467,"context_line":"            cls.subnets_client.delete_subnet,"},{"line_number":468,"context_line":"            subnet[\u0027subnet\u0027][\u0027id\u0027])"},{"line_number":469,"context_line":"        kwargs \u003d {\u0027name\u0027: \"tempest-router\","},{"line_number":470,"context_line":"                  \u0027tenant_id\u0027: shares_client.tenant_id}"},{"line_number":471,"context_line":"        if cls.public_network_id:"},{"line_number":472,"context_line":"            kwargs[\u0027external_gateway_info\u0027] \u003d dict("},{"line_number":473,"context_line":"                network_id\u003dcls.public_network_id)"},{"line_number":474,"context_line":"        body \u003d cls.routers_client.create_router(**kwargs)"},{"line_number":475,"context_line":"        router \u003d body[\u0027router\u0027]"},{"line_number":476,"context_line":"        cls.routers_client.add_router_interface(router[\"id\"],"},{"line_number":477,"context_line":"                                                subnet_id\u003dsubnet[\u0027id\u0027])"},{"line_number":478,"context_line":"        cls.addClassResourceCleanup(test_utils.call_and_ignore_notfound_exc,"},{"line_number":479,"context_line":"                                    cls.routers_client.delete_router, router)"},{"line_number":480,"context_line":"        cls.addClassResourceCleanup("},{"line_number":481,"context_line":"            test_utils.call_and_ignore_notfound_exc,"},{"line_number":482,"context_line":"            cls.routers_client.remove_router_interface,"},{"line_number":483,"context_line":"            router[\"id\"],"},{"line_number":484,"context_line":"            subnet_id\u003dsubnet[\u0027id\u0027])"},{"line_number":485,"context_line":""},{"line_number":486,"context_line":"        return network, subnet, router"},{"line_number":487,"context_line":""},{"line_number":488,"context_line":"    @classmethod"},{"line_number":489,"context_line":"    def _create_share(cls, share_protocol\u003dNone, size\u003dNone, name\u003dNone,"}],"source_content_type":"text/x-python","patch_set":32,"id":"bf51134e_d66783e8","line":486,"range":{"start_line":446,"start_character":0,"end_line":486,"end_character":38},"updated":"2020-06-24 13:36:20.000000000","message":"please add some blank lines between main calls, like:\n- check for clients\n * blank line *\n- create network\n- add cleanup\n * blank line *\n- create subnet\n- add cleanup\n\n...","commit_id":"47b188ac29028c79728be93964ff1c2294a0555f"},{"author":{"_account_id":30002,"name":"Douglas Viroel","email":"viroel@gmail.com","username":"dviroel"},"change_message_id":"d877ace495500f987672b2229792dfbce676d7f5","unresolved":false,"context_lines":[{"line_number":380,"context_line":""},{"line_number":381,"context_line":"    @classmethod"},{"line_number":382,"context_line":"    @network_synchronized"},{"line_number":383,"context_line":"    def provide_share_network(cls, shares_client, networks_client,"},{"line_number":384,"context_line":"                              ignore_multitenancy_config\u003dFalse):"},{"line_number":385,"context_line":"        \"\"\"Used for finding/creating share network for multitenant driver."},{"line_number":386,"context_line":""}],"source_content_type":"text/x-python","patch_set":36,"id":"bf51134e_fc941639","line":383,"range":{"start_line":383,"start_character":8,"end_line":383,"end_character":29},"updated":"2020-06-25 13:31:34.000000000","message":"I was taking a look on the code and I think that the solution will be:\n1. To have a admin credentials o setup_clients just to handle network creation. This isolated credential will be delete at the end of the class.\n2. Your \u0027create_network\u0027 method will need to use network,subnet and router clients created using this admin credential and provide the shares_client \u0027tenant-id\u0027.\n3. In this way, the \u0027create_network\u0027 method should not accept network/subnet/router clients, since we can\u0027t guarantee that they have the proper credentials to create resources for a specific tenant.\n4. We should consider bringing back the \u0027isolated_credentials\u0027 check a reuses of network resources already created by this accounts.\n5. We should consider reuse some network resources, that were created to a specific \u0027tenant-id\u0027 to avoid quota issues.","commit_id":"7096745e3effcaaf296c47afcea87723ee945cf1"},{"author":{"_account_id":30998,"name":"Andre Luiz Beltrami Rocha","display_name":"Andre Beltrami","email":"debeltrami@gmail.com","username":"andrebeltrami"},"change_message_id":"e3db3e1aaa9b18441b28ce902d1e03aede620288","unresolved":false,"context_lines":[{"line_number":380,"context_line":""},{"line_number":381,"context_line":"    @classmethod"},{"line_number":382,"context_line":"    @network_synchronized"},{"line_number":383,"context_line":"    def provide_share_network(cls, shares_client, networks_client,"},{"line_number":384,"context_line":"                              ignore_multitenancy_config\u003dFalse):"},{"line_number":385,"context_line":"        \"\"\"Used for finding/creating share network for multitenant driver."},{"line_number":386,"context_line":""}],"source_content_type":"text/x-python","patch_set":36,"id":"bf51134e_286ac918","line":383,"range":{"start_line":383,"start_character":8,"end_line":383,"end_character":29},"in_reply_to":"bf51134e_fc941639","updated":"2020-06-25 15:58:02.000000000","message":"Let`s try this! Thanks dviroel!","commit_id":"7096745e3effcaaf296c47afcea87723ee945cf1"},{"author":{"_account_id":30002,"name":"Douglas Viroel","email":"viroel@gmail.com","username":"dviroel"},"change_message_id":"d877ace495500f987672b2229792dfbce676d7f5","unresolved":false,"context_lines":[{"line_number":434,"context_line":"                return sn[\u0027id\u0027]"},{"line_number":435,"context_line":""},{"line_number":436,"context_line":"    @classmethod"},{"line_number":437,"context_line":"    def create_network(cls, shares_client\u003dNone, networks_client\u003dNone):"},{"line_number":438,"context_line":"        \"\"\"Used for creating neutron network resources."},{"line_number":439,"context_line":""},{"line_number":440,"context_line":"        This method creates a suitable network, subnet and router"}],"source_content_type":"text/x-python","patch_set":36,"id":"bf51134e_fcbd36b7","line":437,"range":{"start_line":437,"start_character":0,"end_line":437,"end_character":70},"updated":"2020-06-25 13:31:34.000000000","message":"def provide_network_resources_for_tenant(cls, tenant_id):","commit_id":"7096745e3effcaaf296c47afcea87723ee945cf1"},{"author":{"_account_id":30998,"name":"Andre Luiz Beltrami Rocha","display_name":"Andre Beltrami","email":"debeltrami@gmail.com","username":"andrebeltrami"},"change_message_id":"e3db3e1aaa9b18441b28ce902d1e03aede620288","unresolved":false,"context_lines":[{"line_number":434,"context_line":"                return sn[\u0027id\u0027]"},{"line_number":435,"context_line":""},{"line_number":436,"context_line":"    @classmethod"},{"line_number":437,"context_line":"    def create_network(cls, shares_client\u003dNone, networks_client\u003dNone):"},{"line_number":438,"context_line":"        \"\"\"Used for creating neutron network resources."},{"line_number":439,"context_line":""},{"line_number":440,"context_line":"        This method creates a suitable network, subnet and router"}],"source_content_type":"text/x-python","patch_set":36,"id":"bf51134e_8875d5fc","line":437,"range":{"start_line":437,"start_character":0,"end_line":437,"end_character":70},"in_reply_to":"bf51134e_fcbd36b7","updated":"2020-06-25 15:58:02.000000000","message":"Done","commit_id":"7096745e3effcaaf296c47afcea87723ee945cf1"},{"author":{"_account_id":30002,"name":"Douglas Viroel","email":"viroel@gmail.com","username":"dviroel"},"change_message_id":"eed72bf337514dd8618dc091aedd959aaedb75d6","unresolved":false,"context_lines":[{"line_number":281,"context_line":"        if CONF.service_available.neutron:"},{"line_number":282,"context_line":"            cls.networks_client \u003d os.network.NetworksClient()"},{"line_number":283,"context_line":"            cls.subnets_client \u003d os.network.SubnetsClient()"},{"line_number":284,"context_line":"            cls.routers_client \u003d os.network.RoutersClient()"},{"line_number":285,"context_line":"            # Admin network clients to create resources for tenants"},{"line_number":286,"context_line":"            cls.admin_nc, cls.admin_snc, cls.admin_rc \u003d ("},{"line_number":287,"context_line":"                cls.get_network_clients_with_isolated_creds())"}],"source_content_type":"text/x-python","patch_set":40,"id":"bf51134e_2ceacfd6","line":284,"range":{"start_line":284,"start_character":12,"end_line":284,"end_character":59},"updated":"2020-06-26 12:03:14.000000000","message":"don\u0027t think that we are using this anymore, you can remove it","commit_id":"6aab9a89130089bf26f0730572067e2ce8949eee"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"feb73fc298683eb33cdf2533f3dc3f22fb4a7e96","unresolved":false,"context_lines":[{"line_number":281,"context_line":"        if CONF.service_available.neutron:"},{"line_number":282,"context_line":"            cls.networks_client \u003d os.network.NetworksClient()"},{"line_number":283,"context_line":"            cls.subnets_client \u003d os.network.SubnetsClient()"},{"line_number":284,"context_line":"            cls.routers_client \u003d os.network.RoutersClient()"},{"line_number":285,"context_line":"            # Admin network clients to create resources for tenants"},{"line_number":286,"context_line":"            cls.admin_nc, cls.admin_snc, cls.admin_rc \u003d ("},{"line_number":287,"context_line":"                cls.get_network_clients_with_isolated_creds())"}],"source_content_type":"text/x-python","patch_set":40,"id":"bf51134e_69d4ae48","line":284,"range":{"start_line":284,"start_character":12,"end_line":284,"end_character":59},"in_reply_to":"bf51134e_2ceacfd6","updated":"2020-06-26 22:49:41.000000000","message":"+1, drop this","commit_id":"6aab9a89130089bf26f0730572067e2ce8949eee"},{"author":{"_account_id":30998,"name":"Andre Luiz Beltrami Rocha","display_name":"Andre Beltrami","email":"debeltrami@gmail.com","username":"andrebeltrami"},"change_message_id":"a5e053f58b94e2f4acf8253afb236eb0f69fb445","unresolved":false,"context_lines":[{"line_number":281,"context_line":"        if CONF.service_available.neutron:"},{"line_number":282,"context_line":"            cls.networks_client \u003d os.network.NetworksClient()"},{"line_number":283,"context_line":"            cls.subnets_client \u003d os.network.SubnetsClient()"},{"line_number":284,"context_line":"            cls.routers_client \u003d os.network.RoutersClient()"},{"line_number":285,"context_line":"            # Admin network clients to create resources for tenants"},{"line_number":286,"context_line":"            cls.admin_nc, cls.admin_snc, cls.admin_rc \u003d ("},{"line_number":287,"context_line":"                cls.get_network_clients_with_isolated_creds())"}],"source_content_type":"text/x-python","patch_set":40,"id":"bf51134e_338fb42a","line":284,"range":{"start_line":284,"start_character":12,"end_line":284,"end_character":59},"in_reply_to":"bf51134e_69d4ae48","updated":"2020-06-29 16:43:54.000000000","message":"Done","commit_id":"6aab9a89130089bf26f0730572067e2ce8949eee"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"feb73fc298683eb33cdf2533f3dc3f22fb4a7e96","unresolved":false,"context_lines":[{"line_number":282,"context_line":"            cls.networks_client \u003d os.network.NetworksClient()"},{"line_number":283,"context_line":"            cls.subnets_client \u003d os.network.SubnetsClient()"},{"line_number":284,"context_line":"            cls.routers_client \u003d os.network.RoutersClient()"},{"line_number":285,"context_line":"            # Admin network clients to create resources for tenants"},{"line_number":286,"context_line":"            cls.admin_nc, cls.admin_snc, cls.admin_rc \u003d ("},{"line_number":287,"context_line":"                cls.get_network_clients_with_isolated_creds())"},{"line_number":288,"context_line":"        else:"},{"line_number":289,"context_line":"            cls.networks_client \u003d None"},{"line_number":290,"context_line":"            cls.subnets_client \u003d None"}],"source_content_type":"text/x-python","patch_set":40,"id":"bf51134e_6962eeaf","line":287,"range":{"start_line":285,"start_character":0,"end_line":287,"end_character":62},"updated":"2020-06-26 22:49:41.000000000","message":"We don\u0027t need this always, so why don\u0027t we make this conditional:\n\n      if CONF.share.multitenancy_enabled and CONF.auth.use_dynamic_credentials:\n              # Get admin credentials so we can create neutron networks\n              # dynamically if/when needed\n              cls.admin_nc, cls.admin_snc, cls.admin_rc \u003d (\n                     cls.get_network_clients_with_isolated_creds()\n              )","commit_id":"6aab9a89130089bf26f0730572067e2ce8949eee"},{"author":{"_account_id":30998,"name":"Andre Luiz Beltrami Rocha","display_name":"Andre Beltrami","email":"debeltrami@gmail.com","username":"andrebeltrami"},"change_message_id":"a5e053f58b94e2f4acf8253afb236eb0f69fb445","unresolved":false,"context_lines":[{"line_number":282,"context_line":"            cls.networks_client \u003d os.network.NetworksClient()"},{"line_number":283,"context_line":"            cls.subnets_client \u003d os.network.SubnetsClient()"},{"line_number":284,"context_line":"            cls.routers_client \u003d os.network.RoutersClient()"},{"line_number":285,"context_line":"            # Admin network clients to create resources for tenants"},{"line_number":286,"context_line":"            cls.admin_nc, cls.admin_snc, cls.admin_rc \u003d ("},{"line_number":287,"context_line":"                cls.get_network_clients_with_isolated_creds())"},{"line_number":288,"context_line":"        else:"},{"line_number":289,"context_line":"            cls.networks_client \u003d None"},{"line_number":290,"context_line":"            cls.subnets_client \u003d None"}],"source_content_type":"text/x-python","patch_set":40,"id":"bf51134e_7385ac06","line":287,"range":{"start_line":285,"start_character":0,"end_line":287,"end_character":62},"in_reply_to":"bf51134e_18c44f3f","updated":"2020-06-29 16:43:54.000000000","message":"Done","commit_id":"6aab9a89130089bf26f0730572067e2ce8949eee"},{"author":{"_account_id":30002,"name":"Douglas Viroel","email":"viroel@gmail.com","username":"dviroel"},"change_message_id":"6cf9b2d923c2747a66fbf0a2c535ede54a46d419","unresolved":false,"context_lines":[{"line_number":282,"context_line":"            cls.networks_client \u003d os.network.NetworksClient()"},{"line_number":283,"context_line":"            cls.subnets_client \u003d os.network.SubnetsClient()"},{"line_number":284,"context_line":"            cls.routers_client \u003d os.network.RoutersClient()"},{"line_number":285,"context_line":"            # Admin network clients to create resources for tenants"},{"line_number":286,"context_line":"            cls.admin_nc, cls.admin_snc, cls.admin_rc \u003d ("},{"line_number":287,"context_line":"                cls.get_network_clients_with_isolated_creds())"},{"line_number":288,"context_line":"        else:"},{"line_number":289,"context_line":"            cls.networks_client \u003d None"},{"line_number":290,"context_line":"            cls.subnets_client \u003d None"}],"source_content_type":"text/x-python","patch_set":40,"id":"bf51134e_18c44f3f","line":287,"range":{"start_line":285,"start_character":0,"end_line":287,"end_character":62},"in_reply_to":"bf51134e_6962eeaf","updated":"2020-06-29 12:47:23.000000000","message":"+1","commit_id":"6aab9a89130089bf26f0730572067e2ce8949eee"},{"author":{"_account_id":30998,"name":"Andre Luiz Beltrami Rocha","display_name":"Andre Beltrami","email":"debeltrami@gmail.com","username":"andrebeltrami"},"change_message_id":"a5e053f58b94e2f4acf8253afb236eb0f69fb445","unresolved":false,"context_lines":[{"line_number":282,"context_line":"            cls.networks_client \u003d os.network.NetworksClient()"},{"line_number":283,"context_line":"            cls.subnets_client \u003d os.network.SubnetsClient()"},{"line_number":284,"context_line":"            cls.routers_client \u003d os.network.RoutersClient()"},{"line_number":285,"context_line":"            # Admin network clients to create resources for tenants"},{"line_number":286,"context_line":"            cls.admin_nc, cls.admin_snc, cls.admin_rc \u003d ("},{"line_number":287,"context_line":"                cls.get_network_clients_with_isolated_creds())"},{"line_number":288,"context_line":"        else:"},{"line_number":289,"context_line":"            cls.networks_client \u003d None"},{"line_number":290,"context_line":"            cls.subnets_client \u003d None"}],"source_content_type":"text/x-python","patch_set":40,"id":"bf51134e_b37aa420","line":287,"range":{"start_line":285,"start_character":0,"end_line":287,"end_character":62},"in_reply_to":"bf51134e_6962eeaf","updated":"2020-06-29 16:43:54.000000000","message":"Done","commit_id":"6aab9a89130089bf26f0730572067e2ce8949eee"},{"author":{"_account_id":30998,"name":"Andre Luiz Beltrami Rocha","display_name":"Andre Beltrami","email":"debeltrami@gmail.com","username":"andrebeltrami"},"change_message_id":"a5e053f58b94e2f4acf8253afb236eb0f69fb445","unresolved":false,"context_lines":[{"line_number":288,"context_line":"        else:"},{"line_number":289,"context_line":"            cls.networks_client \u003d None"},{"line_number":290,"context_line":"            cls.subnets_client \u003d None"},{"line_number":291,"context_line":"            cls.routers_client \u003d None"},{"line_number":292,"context_line":""},{"line_number":293,"context_line":"        cls.project_network_cidr \u003d CONF.network.project_network_cidr"},{"line_number":294,"context_line":"        cls.public_network_id \u003d CONF.network.public_network_id"}],"source_content_type":"text/x-python","patch_set":40,"id":"bf51134e_c8d16625","line":291,"range":{"start_line":291,"start_character":0,"end_line":291,"end_character":37},"updated":"2020-06-29 16:43:54.000000000","message":"don\u0027t need this anymore also.","commit_id":"6aab9a89130089bf26f0730572067e2ce8949eee"},{"author":{"_account_id":30002,"name":"Douglas Viroel","email":"viroel@gmail.com","username":"dviroel"},"change_message_id":"eed72bf337514dd8618dc091aedd959aaedb75d6","unresolved":false,"context_lines":[{"line_number":328,"context_line":"        super(BaseSharesTest, cls).resource_cleanup()"},{"line_number":329,"context_line":""},{"line_number":330,"context_line":"    @classmethod"},{"line_number":331,"context_line":"    def provide_and_associate_security_services("},{"line_number":332,"context_line":"            cls, shares_client, share_network_id, cleanup_in_class\u003dTrue):"},{"line_number":333,"context_line":""},{"line_number":334,"context_line":"        ss_configs \u003d CONF.share.security_service"}],"source_content_type":"text/x-python","patch_set":40,"id":"bf51134e_0cd26b28","line":331,"range":{"start_line":331,"start_character":4,"end_line":331,"end_character":47},"updated":"2020-06-26 12:03:14.000000000","message":"if you have a chance, add a small docstring to your method. Explain that will take effect only if a security service config is set, and its harmless if not set","commit_id":"6aab9a89130089bf26f0730572067e2ce8949eee"},{"author":{"_account_id":30998,"name":"Andre Luiz Beltrami Rocha","display_name":"Andre Beltrami","email":"debeltrami@gmail.com","username":"andrebeltrami"},"change_message_id":"a5e053f58b94e2f4acf8253afb236eb0f69fb445","unresolved":false,"context_lines":[{"line_number":328,"context_line":"        super(BaseSharesTest, cls).resource_cleanup()"},{"line_number":329,"context_line":""},{"line_number":330,"context_line":"    @classmethod"},{"line_number":331,"context_line":"    def provide_and_associate_security_services("},{"line_number":332,"context_line":"            cls, shares_client, share_network_id, cleanup_in_class\u003dTrue):"},{"line_number":333,"context_line":""},{"line_number":334,"context_line":"        ss_configs \u003d CONF.share.security_service"}],"source_content_type":"text/x-python","patch_set":40,"id":"bf51134e_53918846","line":331,"range":{"start_line":331,"start_character":4,"end_line":331,"end_character":47},"in_reply_to":"bf51134e_0cd26b28","updated":"2020-06-29 16:43:54.000000000","message":"Done","commit_id":"6aab9a89130089bf26f0730572067e2ce8949eee"},{"author":{"_account_id":30002,"name":"Douglas Viroel","email":"viroel@gmail.com","username":"dviroel"},"change_message_id":"eed72bf337514dd8618dc091aedd959aaedb75d6","unresolved":false,"context_lines":[{"line_number":360,"context_line":"                cleanup_in_class\u003dcleanup_in_class)"},{"line_number":361,"context_line":""},{"line_number":362,"context_line":"    @classmethod"},{"line_number":363,"context_line":"    def add_sec_service_to_share_network("},{"line_number":364,"context_line":"            cls, client, share_network_id,"},{"line_number":365,"context_line":"            security_service_id, cleanup_in_class\u003dTrue):"},{"line_number":366,"context_line":""}],"source_content_type":"text/x-python","patch_set":40,"id":"bf51134e_acac1f9f","line":363,"range":{"start_line":363,"start_character":8,"end_line":363,"end_character":40},"updated":"2020-06-26 12:03:14.000000000","message":"small docstring will be nice","commit_id":"6aab9a89130089bf26f0730572067e2ce8949eee"},{"author":{"_account_id":30998,"name":"Andre Luiz Beltrami Rocha","display_name":"Andre Beltrami","email":"debeltrami@gmail.com","username":"andrebeltrami"},"change_message_id":"a5e053f58b94e2f4acf8253afb236eb0f69fb445","unresolved":false,"context_lines":[{"line_number":360,"context_line":"                cleanup_in_class\u003dcleanup_in_class)"},{"line_number":361,"context_line":""},{"line_number":362,"context_line":"    @classmethod"},{"line_number":363,"context_line":"    def add_sec_service_to_share_network("},{"line_number":364,"context_line":"            cls, client, share_network_id,"},{"line_number":365,"context_line":"            security_service_id, cleanup_in_class\u003dTrue):"},{"line_number":366,"context_line":""}],"source_content_type":"text/x-python","patch_set":40,"id":"bf51134e_3394d436","line":363,"range":{"start_line":363,"start_character":8,"end_line":363,"end_character":40},"in_reply_to":"bf51134e_acac1f9f","updated":"2020-06-29 16:43:54.000000000","message":"Done","commit_id":"6aab9a89130089bf26f0730572067e2ce8949eee"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"feb73fc298683eb33cdf2533f3dc3f22fb4a7e96","unresolved":false,"context_lines":[{"line_number":414,"context_line":"                # Share-network already exists, use it"},{"line_number":415,"context_line":"                return sc.share_network_id"},{"line_number":416,"context_line":"            elif not CONF.share.create_networks_when_multitenancy_enabled:"},{"line_number":417,"context_line":"                # Create new share-network"},{"line_number":418,"context_line":"                sn_desc \u003d \"This share-network was created by tempest\""},{"line_number":419,"context_line":"                sn \u003d cls.create_share_network(cleanup_in_class\u003dTrue,"},{"line_number":420,"context_line":"                                              add_security_services\u003dTrue,"}],"source_content_type":"text/x-python","patch_set":40,"id":"bf51134e_69078ecb","line":417,"range":{"start_line":417,"start_character":18,"end_line":417,"end_character":42},"updated":"2020-06-26 22:49:41.000000000","message":"Lets expand this comment:\n\n  # We need a new share network, but don\u0027t need to associate any\n  # neutron networks to it - this configuration is used when manila\n  # is configured with \"StandaloneNetworkPlugin\" or \"NeutronSingleNetworkPlugin\"\n  # where all tenants share a single backend network where shares\n  # are exported.","commit_id":"6aab9a89130089bf26f0730572067e2ce8949eee"},{"author":{"_account_id":30002,"name":"Douglas Viroel","email":"viroel@gmail.com","username":"dviroel"},"change_message_id":"6cf9b2d923c2747a66fbf0a2c535ede54a46d419","unresolved":false,"context_lines":[{"line_number":414,"context_line":"                # Share-network already exists, use it"},{"line_number":415,"context_line":"                return sc.share_network_id"},{"line_number":416,"context_line":"            elif not CONF.share.create_networks_when_multitenancy_enabled:"},{"line_number":417,"context_line":"                # Create new share-network"},{"line_number":418,"context_line":"                sn_desc \u003d \"This share-network was created by tempest\""},{"line_number":419,"context_line":"                sn \u003d cls.create_share_network(cleanup_in_class\u003dTrue,"},{"line_number":420,"context_line":"                                              add_security_services\u003dTrue,"}],"source_content_type":"text/x-python","patch_set":40,"id":"bf51134e_78e8ebb1","line":417,"range":{"start_line":417,"start_character":18,"end_line":417,"end_character":42},"in_reply_to":"bf51134e_69078ecb","updated":"2020-06-29 12:47:23.000000000","message":"+1","commit_id":"6aab9a89130089bf26f0730572067e2ce8949eee"},{"author":{"_account_id":30998,"name":"Andre Luiz Beltrami Rocha","display_name":"Andre Beltrami","email":"debeltrami@gmail.com","username":"andrebeltrami"},"change_message_id":"a5e053f58b94e2f4acf8253afb236eb0f69fb445","unresolved":false,"context_lines":[{"line_number":414,"context_line":"                # Share-network already exists, use it"},{"line_number":415,"context_line":"                return sc.share_network_id"},{"line_number":416,"context_line":"            elif not CONF.share.create_networks_when_multitenancy_enabled:"},{"line_number":417,"context_line":"                # Create new share-network"},{"line_number":418,"context_line":"                sn_desc \u003d \"This share-network was created by tempest\""},{"line_number":419,"context_line":"                sn \u003d cls.create_share_network(cleanup_in_class\u003dTrue,"},{"line_number":420,"context_line":"                                              add_security_services\u003dTrue,"}],"source_content_type":"text/x-python","patch_set":40,"id":"bf51134e_9397a03a","line":417,"range":{"start_line":417,"start_character":18,"end_line":417,"end_character":42},"in_reply_to":"bf51134e_69078ecb","updated":"2020-06-29 16:43:54.000000000","message":"Done","commit_id":"6aab9a89130089bf26f0730572067e2ce8949eee"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"feb73fc298683eb33cdf2533f3dc3f22fb4a7e96","unresolved":false,"context_lines":[{"line_number":423,"context_line":"                return sn[\u0027id\u0027]"},{"line_number":424,"context_line":"            else:"},{"line_number":425,"context_line":"                net_id \u003d subnet_id \u003d None"},{"line_number":426,"context_line":"                if not isolated_creds_client:"},{"line_number":427,"context_line":"                    networks \u003d networks_client.list_networks()"},{"line_number":428,"context_line":"                    if \"networks\" in networks.keys():"},{"line_number":429,"context_line":"                        networks \u003d networks[\u0027networks\u0027]"}],"source_content_type":"text/x-python","patch_set":40,"id":"bf51134e_e9fa7eba","line":426,"range":{"start_line":426,"start_character":16,"end_line":426,"end_character":45},"updated":"2020-06-26 22:49:41.000000000","message":"Lets invert this for readability, \n\n   if isolated_creds_client:\n            sn_name \u003d \"autogenerated_by_tempest_for_isolated_creds\"\n             # Use precreated network and subnet from isolated_creds\n             net_id \u003d isolated_creds_client.get_credentials(\n                        isolated_creds_client.type_of_creds).network[\u0027id\u0027]\n              subnet_id \u003d isolated_creds_client.get_credentials(\n                        isolated_creds_client.type_of_creds).subnet[\u0027id\u0027]\n   else:\n     ....","commit_id":"6aab9a89130089bf26f0730572067e2ce8949eee"},{"author":{"_account_id":30002,"name":"Douglas Viroel","email":"viroel@gmail.com","username":"dviroel"},"change_message_id":"6cf9b2d923c2747a66fbf0a2c535ede54a46d419","unresolved":false,"context_lines":[{"line_number":423,"context_line":"                return sn[\u0027id\u0027]"},{"line_number":424,"context_line":"            else:"},{"line_number":425,"context_line":"                net_id \u003d subnet_id \u003d None"},{"line_number":426,"context_line":"                if not isolated_creds_client:"},{"line_number":427,"context_line":"                    networks \u003d networks_client.list_networks()"},{"line_number":428,"context_line":"                    if \"networks\" in networks.keys():"},{"line_number":429,"context_line":"                        networks \u003d networks[\u0027networks\u0027]"}],"source_content_type":"text/x-python","patch_set":40,"id":"bf51134e_d8d2d7ff","line":426,"range":{"start_line":426,"start_character":16,"end_line":426,"end_character":45},"in_reply_to":"bf51134e_e9fa7eba","updated":"2020-06-29 12:47:23.000000000","message":"+1","commit_id":"6aab9a89130089bf26f0730572067e2ce8949eee"},{"author":{"_account_id":30998,"name":"Andre Luiz Beltrami Rocha","display_name":"Andre Beltrami","email":"debeltrami@gmail.com","username":"andrebeltrami"},"change_message_id":"a5e053f58b94e2f4acf8253afb236eb0f69fb445","unresolved":false,"context_lines":[{"line_number":423,"context_line":"                return sn[\u0027id\u0027]"},{"line_number":424,"context_line":"            else:"},{"line_number":425,"context_line":"                net_id \u003d subnet_id \u003d None"},{"line_number":426,"context_line":"                if not isolated_creds_client:"},{"line_number":427,"context_line":"                    networks \u003d networks_client.list_networks()"},{"line_number":428,"context_line":"                    if \"networks\" in networks.keys():"},{"line_number":429,"context_line":"                        networks \u003d networks[\u0027networks\u0027]"}],"source_content_type":"text/x-python","patch_set":40,"id":"bf51134e_b39f444e","line":426,"range":{"start_line":426,"start_character":16,"end_line":426,"end_character":45},"in_reply_to":"bf51134e_e9fa7eba","updated":"2020-06-29 16:43:54.000000000","message":"Done","commit_id":"6aab9a89130089bf26f0730572067e2ce8949eee"},{"author":{"_account_id":30002,"name":"Douglas Viroel","email":"viroel@gmail.com","username":"dviroel"},"change_message_id":"eed72bf337514dd8618dc091aedd959aaedb75d6","unresolved":false,"context_lines":[{"line_number":428,"context_line":"                    if \"networks\" in networks.keys():"},{"line_number":429,"context_line":"                        networks \u003d networks[\u0027networks\u0027]"},{"line_number":430,"context_line":"                    for network in networks:"},{"line_number":431,"context_line":"                        if sc.tenant_id \u003d\u003d network[\u0027tenant_id\u0027]:"},{"line_number":432,"context_line":"                            net_id \u003d network[\u0027id\u0027]"},{"line_number":433,"context_line":"                            if len(network[\u0027subnets\u0027]) \u003e 0:"},{"line_number":434,"context_line":"                                subnet_id \u003d network[\u0027subnets\u0027][0]"}],"source_content_type":"text/x-python","patch_set":40,"id":"bf51134e_8cbafbbd","line":431,"range":{"start_line":431,"start_character":0,"end_line":431,"end_character":64},"updated":"2020-06-26 12:03:14.000000000","message":"From my point of view, there is no problem in reusing the network and subnets that were created for this tenant, since it\u0027s this method that is creating them in lines below.\nWe might avoid neutron quotas issues with this and guarantee that the tenant can access these network resources.","commit_id":"6aab9a89130089bf26f0730572067e2ce8949eee"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"feb73fc298683eb33cdf2533f3dc3f22fb4a7e96","unresolved":false,"context_lines":[{"line_number":428,"context_line":"                    if \"networks\" in networks.keys():"},{"line_number":429,"context_line":"                        networks \u003d networks[\u0027networks\u0027]"},{"line_number":430,"context_line":"                    for network in networks:"},{"line_number":431,"context_line":"                        if sc.tenant_id \u003d\u003d network[\u0027tenant_id\u0027]:"},{"line_number":432,"context_line":"                            net_id \u003d network[\u0027id\u0027]"},{"line_number":433,"context_line":"                            if len(network[\u0027subnets\u0027]) \u003e 0:"},{"line_number":434,"context_line":"                                subnet_id \u003d network[\u0027subnets\u0027][0]"}],"source_content_type":"text/x-python","patch_set":40,"id":"bf51134e_b6e581de","line":431,"range":{"start_line":431,"start_character":0,"end_line":431,"end_character":64},"in_reply_to":"bf51134e_8cbafbbd","updated":"2020-06-26 22:49:41.000000000","message":"+1","commit_id":"6aab9a89130089bf26f0730572067e2ce8949eee"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"feb73fc298683eb33cdf2533f3dc3f22fb4a7e96","unresolved":false,"context_lines":[{"line_number":424,"context_line":"            else:"},{"line_number":425,"context_line":"                net_id \u003d subnet_id \u003d None"},{"line_number":426,"context_line":"                if not isolated_creds_client:"},{"line_number":427,"context_line":"                    networks \u003d networks_client.list_networks()"},{"line_number":428,"context_line":"                    if \"networks\" in networks.keys():"},{"line_number":429,"context_line":"                        networks \u003d networks[\u0027networks\u0027]"},{"line_number":430,"context_line":"                    for network in networks:"},{"line_number":431,"context_line":"                        if sc.tenant_id \u003d\u003d network[\u0027tenant_id\u0027]:"},{"line_number":432,"context_line":"                            net_id \u003d network[\u0027id\u0027]"},{"line_number":433,"context_line":"                            if len(network[\u0027subnets\u0027]) \u003e 0:"},{"line_number":434,"context_line":"                                subnet_id \u003d network[\u0027subnets\u0027][0]"},{"line_number":435,"context_line":"                                break"},{"line_number":436,"context_line":""},{"line_number":437,"context_line":"                    if net_id is None or subnet_id is None:"},{"line_number":438,"context_line":"                        network, subnet, router \u003d ("}],"source_content_type":"text/x-python","patch_set":40,"id":"bf51134e_7665a91d","line":435,"range":{"start_line":427,"start_character":20,"end_line":435,"end_character":37},"updated":"2020-06-26 22:49:41.000000000","message":"This can be simplified:\n  \n  # (1) Retrieve non-public network list owned by the tenant.\n  search_opts \u003d {\u0027tenant_id\u0027: tenant_id, \u0027shared\u0027: False}\n  tenant_networks \u003d networks_client.list_networks(**search_opts).get(\n                    \u0027networks\u0027, [])\n  tenant_networks_with_a_subnet \u003d [n for n in networks if n[\u0027subnets]]\n  if tenant_networks_with_a_subnet: \n      net_id \u003d tenant_networks_with_a_subnet[0][\u0027id\u0027]\n      subnet_id \u003d  tenant_networks_with_a_subnet[0][\u0027subnets\u0027][0][\u0027id\u0027]","commit_id":"6aab9a89130089bf26f0730572067e2ce8949eee"},{"author":{"_account_id":30998,"name":"Andre Luiz Beltrami Rocha","display_name":"Andre Beltrami","email":"debeltrami@gmail.com","username":"andrebeltrami"},"change_message_id":"a5e053f58b94e2f4acf8253afb236eb0f69fb445","unresolved":false,"context_lines":[{"line_number":424,"context_line":"            else:"},{"line_number":425,"context_line":"                net_id \u003d subnet_id \u003d None"},{"line_number":426,"context_line":"                if not isolated_creds_client:"},{"line_number":427,"context_line":"                    networks \u003d networks_client.list_networks()"},{"line_number":428,"context_line":"                    if \"networks\" in networks.keys():"},{"line_number":429,"context_line":"                        networks \u003d networks[\u0027networks\u0027]"},{"line_number":430,"context_line":"                    for network in networks:"},{"line_number":431,"context_line":"                        if sc.tenant_id \u003d\u003d network[\u0027tenant_id\u0027]:"},{"line_number":432,"context_line":"                            net_id \u003d network[\u0027id\u0027]"},{"line_number":433,"context_line":"                            if len(network[\u0027subnets\u0027]) \u003e 0:"},{"line_number":434,"context_line":"                                subnet_id \u003d network[\u0027subnets\u0027][0]"},{"line_number":435,"context_line":"                                break"},{"line_number":436,"context_line":""},{"line_number":437,"context_line":"                    if net_id is None or subnet_id is None:"},{"line_number":438,"context_line":"                        network, subnet, router \u003d ("}],"source_content_type":"text/x-python","patch_set":40,"id":"bf51134e_93b040df","line":435,"range":{"start_line":427,"start_character":20,"end_line":435,"end_character":37},"in_reply_to":"bf51134e_7665a91d","updated":"2020-06-29 16:43:54.000000000","message":"Done","commit_id":"6aab9a89130089bf26f0730572067e2ce8949eee"},{"author":{"_account_id":30002,"name":"Douglas Viroel","email":"viroel@gmail.com","username":"dviroel"},"change_message_id":"6cf9b2d923c2747a66fbf0a2c535ede54a46d419","unresolved":false,"context_lines":[{"line_number":424,"context_line":"            else:"},{"line_number":425,"context_line":"                net_id \u003d subnet_id \u003d None"},{"line_number":426,"context_line":"                if not isolated_creds_client:"},{"line_number":427,"context_line":"                    networks \u003d networks_client.list_networks()"},{"line_number":428,"context_line":"                    if \"networks\" in networks.keys():"},{"line_number":429,"context_line":"                        networks \u003d networks[\u0027networks\u0027]"},{"line_number":430,"context_line":"                    for network in networks:"},{"line_number":431,"context_line":"                        if sc.tenant_id \u003d\u003d network[\u0027tenant_id\u0027]:"},{"line_number":432,"context_line":"                            net_id \u003d network[\u0027id\u0027]"},{"line_number":433,"context_line":"                            if len(network[\u0027subnets\u0027]) \u003e 0:"},{"line_number":434,"context_line":"                                subnet_id \u003d network[\u0027subnets\u0027][0]"},{"line_number":435,"context_line":"                                break"},{"line_number":436,"context_line":""},{"line_number":437,"context_line":"                    if net_id is None or subnet_id is None:"},{"line_number":438,"context_line":"                        network, subnet, router \u003d ("}],"source_content_type":"text/x-python","patch_set":40,"id":"bf51134e_18d9ef20","line":435,"range":{"start_line":427,"start_character":20,"end_line":435,"end_character":37},"in_reply_to":"bf51134e_7665a91d","updated":"2020-06-29 12:47:23.000000000","message":"great optimization, +1","commit_id":"6aab9a89130089bf26f0730572067e2ce8949eee"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"feb73fc298683eb33cdf2533f3dc3f22fb4a7e96","unresolved":false,"context_lines":[{"line_number":434,"context_line":"                                subnet_id \u003d network[\u0027subnets\u0027][0]"},{"line_number":435,"context_line":"                                break"},{"line_number":436,"context_line":""},{"line_number":437,"context_line":"                    if net_id is None or subnet_id is None:"},{"line_number":438,"context_line":"                        network, subnet, router \u003d ("},{"line_number":439,"context_line":"                            cls.provide_network_resources_for_tenant_id("},{"line_number":440,"context_line":"                                sc.tenant_id)"}],"source_content_type":"text/x-python","patch_set":40,"id":"bf51134e_09e09225","line":437,"range":{"start_line":437,"start_character":20,"end_line":437,"end_character":59},"updated":"2020-06-26 22:49:41.000000000","message":"I don\u0027t think we should hit this condition at all! because we ALWAYS request dynamic creds with network resources if \"CONF.share.create_networks_when_multitenancy_enabled\" is True. See lines 162-189 on this file\n\nSo I feel this may not be required. Let me do some testing, please don\u0027t act on this comment if you make another patch - I\u0027ll check if we need this at all... \n\nI\u0027m throwing away a lot of the usage of \"isolated\" creds with this patch here: https://review.opendev.org/#/c/736195/","commit_id":"6aab9a89130089bf26f0730572067e2ce8949eee"},{"author":{"_account_id":30002,"name":"Douglas Viroel","email":"viroel@gmail.com","username":"dviroel"},"change_message_id":"6cf9b2d923c2747a66fbf0a2c535ede54a46d419","unresolved":false,"context_lines":[{"line_number":434,"context_line":"                                subnet_id \u003d network[\u0027subnets\u0027][0]"},{"line_number":435,"context_line":"                                break"},{"line_number":436,"context_line":""},{"line_number":437,"context_line":"                    if net_id is None or subnet_id is None:"},{"line_number":438,"context_line":"                        network, subnet, router \u003d ("},{"line_number":439,"context_line":"                            cls.provide_network_resources_for_tenant_id("},{"line_number":440,"context_line":"                                sc.tenant_id)"}],"source_content_type":"text/x-python","patch_set":40,"id":"bf51134e_d33d98c4","line":437,"range":{"start_line":437,"start_character":20,"end_line":437,"end_character":59},"in_reply_to":"bf51134e_09e09225","updated":"2020-06-29 12:47:23.000000000","message":"BaseSharesTest seems to create its credentials in a different way and it uses \u0027provide_share_network\u0027 to setup the first network resources, at line 307. I believe that at this moment we won\u0027t have a net_id and a subnet_id for that specific tenant-id.","commit_id":"6aab9a89130089bf26f0730572067e2ce8949eee"},{"author":{"_account_id":30998,"name":"Andre Luiz Beltrami Rocha","display_name":"Andre Beltrami","email":"debeltrami@gmail.com","username":"andrebeltrami"},"change_message_id":"a5e053f58b94e2f4acf8253afb236eb0f69fb445","unresolved":false,"context_lines":[{"line_number":434,"context_line":"                                subnet_id \u003d network[\u0027subnets\u0027][0]"},{"line_number":435,"context_line":"                                break"},{"line_number":436,"context_line":""},{"line_number":437,"context_line":"                    if net_id is None or subnet_id is None:"},{"line_number":438,"context_line":"                        network, subnet, router \u003d ("},{"line_number":439,"context_line":"                            cls.provide_network_resources_for_tenant_id("},{"line_number":440,"context_line":"                                sc.tenant_id)"}],"source_content_type":"text/x-python","patch_set":40,"id":"bf51134e_bbdc3ae4","line":437,"range":{"start_line":437,"start_character":20,"end_line":437,"end_character":59},"in_reply_to":"bf51134e_09e09225","updated":"2020-06-29 16:43:54.000000000","message":"Thanks Goutham, I will wait to change this as recommended!","commit_id":"6aab9a89130089bf26f0730572067e2ce8949eee"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"feb73fc298683eb33cdf2533f3dc3f22fb4a7e96","unresolved":false,"context_lines":[{"line_number":498,"context_line":"        if cls.public_network_id:"},{"line_number":499,"context_line":"            kwargs[\u0027external_gateway_info\u0027] \u003d dict("},{"line_number":500,"context_line":"                network_id\u003dcls.public_network_id)"},{"line_number":501,"context_line":"        body \u003d cls.routers_client.create_router(**kwargs)"},{"line_number":502,"context_line":"        router \u003d body[\u0027router\u0027]"},{"line_number":503,"context_line":""},{"line_number":504,"context_line":"        cls.admin_rc.add_router_interface("},{"line_number":505,"context_line":"            router[\u0027id\u0027],"},{"line_number":506,"context_line":"            subnet_id\u003dsubnet[\u0027subnet\u0027][\u0027id\u0027])"},{"line_number":507,"context_line":"        cls.addClassResourceCleanup(test_utils.call_and_ignore_notfound_exc,"},{"line_number":508,"context_line":"                                    cls.admin_rc.delete_router, router)"},{"line_number":509,"context_line":"        cls.addClassResourceCleanup("},{"line_number":510,"context_line":"            test_utils.call_and_ignore_notfound_exc,"},{"line_number":511,"context_line":"            cls.admin_rc.remove_router_interface,"},{"line_number":512,"context_line":"            router[\u0027id\u0027],"},{"line_number":513,"context_line":"            subnet_id\u003dsubnet[\u0027subnet\u0027][\u0027id\u0027])"},{"line_number":514,"context_line":""},{"line_number":515,"context_line":"        return network, subnet, router"},{"line_number":516,"context_line":""}],"source_content_type":"text/x-python","patch_set":40,"id":"bf51134e_897142ab","line":513,"range":{"start_line":501,"start_character":8,"end_line":513,"end_character":45},"updated":"2020-06-26 22:49:41.000000000","message":"shouldn\u0027t this be executed only if you have a \"public_network_id\"?\n\nIf a \"public_network_id\" is missing, no need for a router..","commit_id":"6aab9a89130089bf26f0730572067e2ce8949eee"},{"author":{"_account_id":30002,"name":"Douglas Viroel","email":"viroel@gmail.com","username":"dviroel"},"change_message_id":"6cf9b2d923c2747a66fbf0a2c535ede54a46d419","unresolved":false,"context_lines":[{"line_number":498,"context_line":"        if cls.public_network_id:"},{"line_number":499,"context_line":"            kwargs[\u0027external_gateway_info\u0027] \u003d dict("},{"line_number":500,"context_line":"                network_id\u003dcls.public_network_id)"},{"line_number":501,"context_line":"        body \u003d cls.routers_client.create_router(**kwargs)"},{"line_number":502,"context_line":"        router \u003d body[\u0027router\u0027]"},{"line_number":503,"context_line":""},{"line_number":504,"context_line":"        cls.admin_rc.add_router_interface("},{"line_number":505,"context_line":"            router[\u0027id\u0027],"},{"line_number":506,"context_line":"            subnet_id\u003dsubnet[\u0027subnet\u0027][\u0027id\u0027])"},{"line_number":507,"context_line":"        cls.addClassResourceCleanup(test_utils.call_and_ignore_notfound_exc,"},{"line_number":508,"context_line":"                                    cls.admin_rc.delete_router, router)"},{"line_number":509,"context_line":"        cls.addClassResourceCleanup("},{"line_number":510,"context_line":"            test_utils.call_and_ignore_notfound_exc,"},{"line_number":511,"context_line":"            cls.admin_rc.remove_router_interface,"},{"line_number":512,"context_line":"            router[\u0027id\u0027],"},{"line_number":513,"context_line":"            subnet_id\u003dsubnet[\u0027subnet\u0027][\u0027id\u0027])"},{"line_number":514,"context_line":""},{"line_number":515,"context_line":"        return network, subnet, router"},{"line_number":516,"context_line":""}],"source_content_type":"text/x-python","patch_set":40,"id":"bf51134e_93f16004","line":513,"range":{"start_line":501,"start_character":8,"end_line":513,"end_character":45},"in_reply_to":"bf51134e_897142ab","updated":"2020-06-29 12:47:23.000000000","message":"+1","commit_id":"6aab9a89130089bf26f0730572067e2ce8949eee"},{"author":{"_account_id":30998,"name":"Andre Luiz Beltrami Rocha","display_name":"Andre Beltrami","email":"debeltrami@gmail.com","username":"andrebeltrami"},"change_message_id":"a5e053f58b94e2f4acf8253afb236eb0f69fb445","unresolved":false,"context_lines":[{"line_number":498,"context_line":"        if cls.public_network_id:"},{"line_number":499,"context_line":"            kwargs[\u0027external_gateway_info\u0027] \u003d dict("},{"line_number":500,"context_line":"                network_id\u003dcls.public_network_id)"},{"line_number":501,"context_line":"        body \u003d cls.routers_client.create_router(**kwargs)"},{"line_number":502,"context_line":"        router \u003d body[\u0027router\u0027]"},{"line_number":503,"context_line":""},{"line_number":504,"context_line":"        cls.admin_rc.add_router_interface("},{"line_number":505,"context_line":"            router[\u0027id\u0027],"},{"line_number":506,"context_line":"            subnet_id\u003dsubnet[\u0027subnet\u0027][\u0027id\u0027])"},{"line_number":507,"context_line":"        cls.addClassResourceCleanup(test_utils.call_and_ignore_notfound_exc,"},{"line_number":508,"context_line":"                                    cls.admin_rc.delete_router, router)"},{"line_number":509,"context_line":"        cls.addClassResourceCleanup("},{"line_number":510,"context_line":"            test_utils.call_and_ignore_notfound_exc,"},{"line_number":511,"context_line":"            cls.admin_rc.remove_router_interface,"},{"line_number":512,"context_line":"            router[\u0027id\u0027],"},{"line_number":513,"context_line":"            subnet_id\u003dsubnet[\u0027subnet\u0027][\u0027id\u0027])"},{"line_number":514,"context_line":""},{"line_number":515,"context_line":"        return network, subnet, router"},{"line_number":516,"context_line":""}],"source_content_type":"text/x-python","patch_set":40,"id":"bf51134e_33e214d6","line":513,"range":{"start_line":501,"start_character":8,"end_line":513,"end_character":45},"in_reply_to":"bf51134e_897142ab","updated":"2020-06-29 16:43:54.000000000","message":"Done","commit_id":"6aab9a89130089bf26f0730572067e2ce8949eee"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"e4cbcf4a99a0f704ca70fc2c92e75ddca4c86f3a","unresolved":false,"context_lines":[{"line_number":344,"context_line":"            security service"},{"line_number":345,"context_line":"        :param cleanup_in_class: if the security service and the association"},{"line_number":346,"context_line":"            will be removed in the method teardown or class teardown"},{"line_number":347,"context_line":"        :returns: None -- if the security service configuration is not"},{"line_number":348,"context_line":"            defined"},{"line_number":349,"context_line":"        \"\"\""},{"line_number":350,"context_line":""},{"line_number":351,"context_line":"        ss_configs \u003d CONF.share.security_service"}],"source_content_type":"text/x-python","patch_set":42,"id":"bf51134e_9864d5e7","line":348,"range":{"start_line":347,"start_character":18,"end_line":348,"end_character":19},"updated":"2020-06-29 22:29:40.000000000","message":"returns None, all the time..","commit_id":"832759b6b88371917fe1a72620c011e7f83b4901"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"32c1cd79b1d9b8b4d7fbbf9a66a30a2e2a0b710b","unresolved":false,"context_lines":[{"line_number":456,"context_line":"                                              description\u003dsn_desc)"},{"line_number":457,"context_line":"                return sn[\u0027id\u0027]"},{"line_number":458,"context_line":"            else:"},{"line_number":459,"context_line":"                if isolated_creds_client:"},{"line_number":460,"context_line":"                    sn_name \u003d \"autogenerated_by_tempest_for_isolated_creds\""},{"line_number":461,"context_line":"                    # Use precreated network and subnet from isolated_creds"},{"line_number":462,"context_line":"                    net_id \u003d isolated_creds_client.get_credentials("},{"line_number":463,"context_line":"                        isolated_creds_client.type_of_creds).network[\u0027id\u0027]"},{"line_number":464,"context_line":"                    subnet_id \u003d isolated_creds_client.get_credentials("},{"line_number":465,"context_line":"                        isolated_creds_client.type_of_creds).subnet[\u0027id\u0027]"},{"line_number":466,"context_line":"                else:"},{"line_number":467,"context_line":"                    net_id \u003d subnet_id \u003d None"},{"line_number":468,"context_line":"                    # Retrieve non-public network list owned by the tenant"}],"source_content_type":"text/x-python","patch_set":42,"id":"bf51134e_33ecb8f2","line":465,"range":{"start_line":459,"start_character":0,"end_line":465,"end_character":73},"updated":"2020-07-01 01:20:30.000000000","message":"This was deleted in https://review.opendev.org/#/c/736195/ - will make this much simpler, remove.","commit_id":"832759b6b88371917fe1a72620c011e7f83b4901"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"51ed4de9341df84b559cc12da984d11d7933186e","unresolved":false,"context_lines":[{"line_number":475,"context_line":""},{"line_number":476,"context_line":"        if name is None:"},{"line_number":477,"context_line":"            # Get name of test method"},{"line_number":478,"context_line":"            name \u003d inspect.stack()[1][3]"},{"line_number":479,"context_line":"            if len(name) \u003e 32:"},{"line_number":480,"context_line":"                name \u003d name[0:32]"},{"line_number":481,"context_line":"        # Choose type of isolated creds"}],"source_content_type":"text/x-python","patch_set":44,"id":"bf51134e_be5a4f80","line":478,"updated":"2020-07-01 03:29:41.000000000","message":"pep8: F821 undefined name \u0027inspect\u0027","commit_id":"af004188c232c9837c2314a7261beb163d24c771"}],"zuul.d/manila-tempest-jobs.yaml":[{"author":{"_account_id":30002,"name":"Douglas Viroel","email":"viroel@gmail.com","username":"dviroel"},"change_message_id":"6cfa16f4407e67cec22a7a2268fa81f1b675a1e1","unresolved":false,"context_lines":[{"line_number":187,"context_line":"              multitenancy_enabled: true"},{"line_number":188,"context_line":"              backend_names: LONDON,PARIS"},{"line_number":189,"context_line":"              multi_backend: true"},{"line_number":190,"context_line":"              run_ipv6_test: false"},{"line_number":191,"context_line":"            network-feature-enabled:"},{"line_number":192,"context_line":"              ipv6: false"},{"line_number":193,"context_line":"              ipv6_subnet_attributes: false"},{"line_number":194,"context_line":""},{"line_number":195,"context_line":"- job:"},{"line_number":196,"context_line":"    name: manila-tempest-plugin-generic"}],"source_content_type":"text/x-yaml","patch_set":32,"id":"bf51134e_76d31761","line":193,"range":{"start_line":190,"start_character":0,"end_line":193,"end_character":43},"updated":"2020-06-24 13:36:20.000000000","message":"don\u0027t think that will be needed","commit_id":"47b188ac29028c79728be93964ff1c2294a0555f"}]}
