)]}'
{"ci/roles/server/tasks/main.yml":[{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"9f1474dffa80164804905f855226d0ed215958bc","unresolved":false,"context_lines":[{"line_number":127,"context_line":""},{"line_number":128,"context_line":"- debug: var\u003dserver"},{"line_number":129,"context_line":""},{"line_number":130,"context_line":"- name: Get info about one server in all projects"},{"line_number":131,"context_line":"  openstack.cloud.server_info:"},{"line_number":132,"context_line":"    cloud: \"{{ cloud }}\""},{"line_number":133,"context_line":"    all_projects: true"}],"source_content_type":"text/x-yaml","patch_set":10,"id":"ff570b3c_aab02d8d","line":130,"range":{"start_line":130,"start_character":8,"end_line":130,"end_character":49},"updated":"2020-05-26 10:51:51.000000000","message":"This no longer holds, is it intended? I think it\u0027s valuable to keep this test.","commit_id":"98e266657f0123fb1bb85ecf2e314722de4826b8"}],"plugins/module_utils/openstack.py":[{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"f6cbdb3eb78d8cba3beff3edb3f59287372ddd15","unresolved":false,"context_lines":[{"line_number":198,"context_line":""},{"line_number":199,"context_line":"    def __call__(self):"},{"line_number":200,"context_line":"        try:"},{"line_number":201,"context_line":"            self.run()"},{"line_number":202,"context_line":"        except self.sdk.exceptions.OpenStackCloudException as e:"},{"line_number":203,"context_line":"            self.ansible.fail_json(msg\u003dstr(e), extra_data\u003de.extra_data)"},{"line_number":204,"context_line":"        self.ansible.exit_json(**self.results)"}],"source_content_type":"text/x-python","patch_set":1,"id":"1f493fa4_dc5c4480","line":201,"updated":"2020-04-23 12:51:39.000000000","message":"cannot we get results as a return value of self.run?","commit_id":"0f2a502881e865db101a51512f79ef3a8f7ecdae"},{"author":{"_account_id":10969,"name":"Shnaidman Sagi (Sergey)","display_name":"Shnaidman Sagi","email":"sshnaidm@redhat.com","username":"sergsh"},"change_message_id":"3b670cdca9a1d04bc0b3aa492b9ac6eff2a72f6b","unresolved":false,"context_lines":[{"line_number":198,"context_line":""},{"line_number":199,"context_line":"    def __call__(self):"},{"line_number":200,"context_line":"        try:"},{"line_number":201,"context_line":"            self.run()"},{"line_number":202,"context_line":"        except self.sdk.exceptions.OpenStackCloudException as e:"},{"line_number":203,"context_line":"            self.ansible.fail_json(msg\u003dstr(e), extra_data\u003de.extra_data)"},{"line_number":204,"context_line":"        self.ansible.exit_json(**self.results)"}],"source_content_type":"text/x-python","patch_set":1,"id":"1f493fa4_b25d21eb","line":201,"in_reply_to":"1f493fa4_dc5c4480","updated":"2020-04-23 13:43:33.000000000","message":"yeah, maybe a good idea, need to check how it can be integrated in current modules","commit_id":"0f2a502881e865db101a51512f79ef3a8f7ecdae"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"9f1474dffa80164804905f855226d0ed215958bc","unresolved":false,"context_lines":[{"line_number":224,"context_line":""},{"line_number":225,"context_line":"    def log(self, msg):"},{"line_number":226,"context_line":"        self.ansible.log("},{"line_number":227,"context_line":"            \" \".join([\u0027OS-ANSIBLE-LOG:\u0027, self.module_name, msg]))"},{"line_number":228,"context_line":""},{"line_number":229,"context_line":"    def debug(self, msg):"},{"line_number":230,"context_line":"        if self.ansible._debug or self.ansible._verbosity \u003e 2:"}],"source_content_type":"text/x-python","patch_set":10,"id":"ff570b3c_2a625d17","line":227,"range":{"start_line":227,"start_character":22,"end_line":227,"end_character":40},"updated":"2020-05-26 10:51:51.000000000","message":"Is this prefix useful? Looks like something self.ansible.log should care about (and if it doesn\u0027t, it\u0027s probably not needed).","commit_id":"98e266657f0123fb1bb85ecf2e314722de4826b8"},{"author":{"_account_id":10969,"name":"Shnaidman Sagi (Sergey)","display_name":"Shnaidman Sagi","email":"sshnaidm@redhat.com","username":"sergsh"},"change_message_id":"7eb2eb8804fa86fe2c7ddf3c9dfbd3510919be61","unresolved":false,"context_lines":[{"line_number":224,"context_line":""},{"line_number":225,"context_line":"    def log(self, msg):"},{"line_number":226,"context_line":"        self.ansible.log("},{"line_number":227,"context_line":"            \" \".join([\u0027OS-ANSIBLE-LOG:\u0027, self.module_name, msg]))"},{"line_number":228,"context_line":""},{"line_number":229,"context_line":"    def debug(self, msg):"},{"line_number":230,"context_line":"        if self.ansible._debug or self.ansible._verbosity \u003e 2:"}],"source_content_type":"text/x-python","patch_set":10,"id":"ff570b3c_793c31bf","line":227,"range":{"start_line":227,"start_character":22,"end_line":227,"end_character":40},"in_reply_to":"ff570b3c_1e27dbb8","updated":"2020-05-26 13:46:56.000000000","message":"actually I see there is some prefix included, so let\u0027s really drop it.","commit_id":"98e266657f0123fb1bb85ecf2e314722de4826b8"},{"author":{"_account_id":2,"name":"Monty Taylor","email":"mordred@inaugust.com","username":"mordred"},"change_message_id":"d4a3c60f11d2b37dc2ce93e3e857e0e8130a60fb","unresolved":false,"context_lines":[{"line_number":224,"context_line":""},{"line_number":225,"context_line":"    def log(self, msg):"},{"line_number":226,"context_line":"        self.ansible.log("},{"line_number":227,"context_line":"            \" \".join([\u0027OS-ANSIBLE-LOG:\u0027, self.module_name, msg]))"},{"line_number":228,"context_line":""},{"line_number":229,"context_line":"    def debug(self, msg):"},{"line_number":230,"context_line":"        if self.ansible._debug or self.ansible._verbosity \u003e 2:"}],"source_content_type":"text/x-python","patch_set":10,"id":"ff570b3c_385e37e6","line":227,"range":{"start_line":227,"start_character":22,"end_line":227,"end_character":40},"in_reply_to":"ff570b3c_2a625d17","updated":"2020-05-26 12:17:43.000000000","message":"I agree about the prefix.","commit_id":"98e266657f0123fb1bb85ecf2e314722de4826b8"},{"author":{"_account_id":10969,"name":"Shnaidman Sagi (Sergey)","display_name":"Shnaidman Sagi","email":"sshnaidm@redhat.com","username":"sergsh"},"change_message_id":"9d3009ba143dee5a58d2759410f43b1f39d33336","unresolved":false,"context_lines":[{"line_number":224,"context_line":""},{"line_number":225,"context_line":"    def log(self, msg):"},{"line_number":226,"context_line":"        self.ansible.log("},{"line_number":227,"context_line":"            \" \".join([\u0027OS-ANSIBLE-LOG:\u0027, self.module_name, msg]))"},{"line_number":228,"context_line":""},{"line_number":229,"context_line":"    def debug(self, msg):"},{"line_number":230,"context_line":"        if self.ansible._debug or self.ansible._verbosity \u003e 2:"}],"source_content_type":"text/x-python","patch_set":10,"id":"ff570b3c_1e27dbb8","line":227,"range":{"start_line":227,"start_character":22,"end_line":227,"end_character":40},"in_reply_to":"ff570b3c_2a625d17","updated":"2020-05-26 13:17:29.000000000","message":"It\u0027s all sent to journal, so if somebody wants to grep for OS modules logs, need to either use something like \"grep (server|server_info|server_action|...)\" or just to grep by this prefix.\nI found it kind of useful when debugging.\n\"self.ansible.log\" doesn\u0027t care about anything, just sends message to log.","commit_id":"98e266657f0123fb1bb85ecf2e314722de4826b8"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"9f1474dffa80164804905f855226d0ed215958bc","unresolved":false,"context_lines":[{"line_number":243,"context_line":"    def openstack_cloud_from_module(self):"},{"line_number":244,"context_line":"        try:"},{"line_number":245,"context_line":"            # Due to the name shadowing we should import other way"},{"line_number":246,"context_line":"            sdk \u003d importlib.import_module(\u0027openstack\u0027)"},{"line_number":247,"context_line":"            sdk_version_lib \u003d importlib.import_module(\u0027openstack.version\u0027)"},{"line_number":248,"context_line":"            self.sdk_version \u003d sdk_version_lib.__version__"},{"line_number":249,"context_line":"        except ImportError:"},{"line_number":250,"context_line":"            self.fail_json(msg\u003d\u0027openstacksdk is required for this module\u0027)"}],"source_content_type":"text/x-python","patch_set":10,"id":"ff570b3c_4a7191e0","line":247,"range":{"start_line":246,"start_character":0,"end_line":247,"end_character":74},"updated":"2020-05-26 10:51:51.000000000","message":"nit: use normal \u0027import\u0027 statement","commit_id":"98e266657f0123fb1bb85ecf2e314722de4826b8"},{"author":{"_account_id":27900,"name":"Artem Goncharov","email":"artem.goncharov@gmail.com","username":"gtema"},"change_message_id":"cddd1e09e3c2472ceeb00694b905aae26e4ee436","unresolved":false,"context_lines":[{"line_number":243,"context_line":"    def openstack_cloud_from_module(self):"},{"line_number":244,"context_line":"        try:"},{"line_number":245,"context_line":"            # Due to the name shadowing we should import other way"},{"line_number":246,"context_line":"            sdk \u003d importlib.import_module(\u0027openstack\u0027)"},{"line_number":247,"context_line":"            sdk_version_lib \u003d importlib.import_module(\u0027openstack.version\u0027)"},{"line_number":248,"context_line":"            self.sdk_version \u003d sdk_version_lib.__version__"},{"line_number":249,"context_line":"        except ImportError:"},{"line_number":250,"context_line":"            self.fail_json(msg\u003d\u0027openstacksdk is required for this module\u0027)"}],"source_content_type":"text/x-python","patch_set":10,"id":"ff570b3c_0d7a1387","line":247,"range":{"start_line":246,"start_character":0,"end_line":247,"end_character":74},"in_reply_to":"ff570b3c_4a7191e0","updated":"2020-05-26 11:14:55.000000000","message":"it will not work due to the name conflict. If this file is renamed - no problem.","commit_id":"98e266657f0123fb1bb85ecf2e314722de4826b8"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"9f1474dffa80164804905f855226d0ed215958bc","unresolved":false,"context_lines":[{"line_number":283,"context_line":"                    \u0027ca_cert\u0027, \u0027client_key\u0027, \u0027api_timeout\u0027, \u0027auth_type\u0027):"},{"line_number":284,"context_line":"                if self.params[param] is not None:"},{"line_number":285,"context_line":"                    self.fail_json(msg\u003dfail_message.format(param\u003dparam))"},{"line_number":286,"context_line":"            # For \u0027interface\u0027 parameter, fail if we receive a non-default value"},{"line_number":287,"context_line":"            if self.params[\u0027interface\u0027] !\u003d \u0027public\u0027:"},{"line_number":288,"context_line":"                self.fail_json(msg\u003dfail_message.format(param\u003d\u0027interface\u0027))"},{"line_number":289,"context_line":"        else:"}],"source_content_type":"text/x-python","patch_set":10,"id":"ff570b3c_aa75cdce","line":286,"updated":"2020-05-26 10:51:51.000000000","message":"O__o","commit_id":"98e266657f0123fb1bb85ecf2e314722de4826b8"},{"author":{"_account_id":10969,"name":"Shnaidman Sagi (Sergey)","display_name":"Shnaidman Sagi","email":"sshnaidm@redhat.com","username":"sergsh"},"change_message_id":"9d3009ba143dee5a58d2759410f43b1f39d33336","unresolved":false,"context_lines":[{"line_number":283,"context_line":"                    \u0027ca_cert\u0027, \u0027client_key\u0027, \u0027api_timeout\u0027, \u0027auth_type\u0027):"},{"line_number":284,"context_line":"                if self.params[param] is not None:"},{"line_number":285,"context_line":"                    self.fail_json(msg\u003dfail_message.format(param\u003dparam))"},{"line_number":286,"context_line":"            # For \u0027interface\u0027 parameter, fail if we receive a non-default value"},{"line_number":287,"context_line":"            if self.params[\u0027interface\u0027] !\u003d \u0027public\u0027:"},{"line_number":288,"context_line":"                self.fail_json(msg\u003dfail_message.format(param\u003d\u0027interface\u0027))"},{"line_number":289,"context_line":"        else:"}],"source_content_type":"text/x-python","patch_set":10,"id":"ff570b3c_9e680bbb","line":286,"in_reply_to":"ff570b3c_aa75cdce","updated":"2020-05-26 13:17:29.000000000","message":"I don\u0027t even know what it means.. it\u0027s the same function as in line 153, just made it as a method. Will need to rewrite it in followups anyway.","commit_id":"98e266657f0123fb1bb85ecf2e314722de4826b8"},{"author":{"_account_id":2,"name":"Monty Taylor","email":"mordred@inaugust.com","username":"mordred"},"change_message_id":"d4a3c60f11d2b37dc2ce93e3e857e0e8130a60fb","unresolved":false,"context_lines":[{"line_number":283,"context_line":"                    \u0027ca_cert\u0027, \u0027client_key\u0027, \u0027api_timeout\u0027, \u0027auth_type\u0027):"},{"line_number":284,"context_line":"                if self.params[param] is not None:"},{"line_number":285,"context_line":"                    self.fail_json(msg\u003dfail_message.format(param\u003dparam))"},{"line_number":286,"context_line":"            # For \u0027interface\u0027 parameter, fail if we receive a non-default value"},{"line_number":287,"context_line":"            if self.params[\u0027interface\u0027] !\u003d \u0027public\u0027:"},{"line_number":288,"context_line":"                self.fail_json(msg\u003dfail_message.format(param\u003d\u0027interface\u0027))"},{"line_number":289,"context_line":"        else:"}],"source_content_type":"text/x-python","patch_set":10,"id":"ff570b3c_d8e57b3a","line":286,"in_reply_to":"ff570b3c_aa75cdce","updated":"2020-05-26 12:17:43.000000000","message":"I had the same response - but this is inside the \"did we receive a cloud config dict\" logic - basically saying, if you pass a cloud_config dict to cloud, you can\u0027t also override things.","commit_id":"98e266657f0123fb1bb85ecf2e314722de4826b8"},{"author":{"_account_id":7353,"name":"Kevin Carter","email":"kevin@cloudnull.com","username":"cloudnull"},"change_message_id":"932c57eece2b1e1a65b1251730b771588af7e458","unresolved":false,"context_lines":[{"line_number":69,"context_line":""},{"line_number":70,"context_line":""},{"line_number":71,"context_line":"def openstack_argument_spec():"},{"line_number":72,"context_line":"    # DEPRECATED: This argument spec is only used for the deprecated old"},{"line_number":73,"context_line":"    # OpenStack modules. It turns out that modern OpenStack auth is WAY"},{"line_number":74,"context_line":"    # more complex than this."},{"line_number":75,"context_line":"    # Consume standard OpenStack environment variables."},{"line_number":76,"context_line":"    # This is mainly only useful for ad-hoc command line operation as"},{"line_number":77,"context_line":"    # in playbooks one would assume variables would be used appropriately"},{"line_number":78,"context_line":"    OS_AUTH_URL \u003d os.environ.get(\u0027OS_AUTH_URL\u0027, \u0027http://127.0.0.1:35357/v2.0/\u0027)"},{"line_number":79,"context_line":"    OS_PASSWORD \u003d os.environ.get(\u0027OS_PASSWORD\u0027, None)"},{"line_number":80,"context_line":"    OS_REGION_NAME \u003d os.environ.get(\u0027OS_REGION_NAME\u0027, None)"}],"source_content_type":"text/x-python","patch_set":12,"id":"ff570b3c_6cda75e9","line":77,"range":{"start_line":72,"start_character":0,"end_line":77,"end_character":73},"updated":"2020-05-28 19:07:09.000000000","message":"while I the current module doesn\u0027t have good documentation, I think a major refactor like this is a good time to change that. I\u0027d really like to see all of the methods in this file documented, and things like this comment to be pushed into a proper doc string.","commit_id":"9fd0e099928aa46167d7955c7c1ae42553787eda"},{"author":{"_account_id":7353,"name":"Kevin Carter","email":"kevin@cloudnull.com","username":"cloudnull"},"change_message_id":"b4bcdf1e70ecb3db2fa44e88fc466a049a09b754","unresolved":false,"context_lines":[{"line_number":69,"context_line":""},{"line_number":70,"context_line":""},{"line_number":71,"context_line":"def openstack_argument_spec():"},{"line_number":72,"context_line":"    # DEPRECATED: This argument spec is only used for the deprecated old"},{"line_number":73,"context_line":"    # OpenStack modules. It turns out that modern OpenStack auth is WAY"},{"line_number":74,"context_line":"    # more complex than this."},{"line_number":75,"context_line":"    # Consume standard OpenStack environment variables."},{"line_number":76,"context_line":"    # This is mainly only useful for ad-hoc command line operation as"},{"line_number":77,"context_line":"    # in playbooks one would assume variables would be used appropriately"},{"line_number":78,"context_line":"    OS_AUTH_URL \u003d os.environ.get(\u0027OS_AUTH_URL\u0027, \u0027http://127.0.0.1:35357/v2.0/\u0027)"},{"line_number":79,"context_line":"    OS_PASSWORD \u003d os.environ.get(\u0027OS_PASSWORD\u0027, None)"},{"line_number":80,"context_line":"    OS_REGION_NAME \u003d os.environ.get(\u0027OS_REGION_NAME\u0027, None)"}],"source_content_type":"text/x-python","patch_set":12,"id":"ff570b3c_b26ca936","line":77,"range":{"start_line":72,"start_character":0,"end_line":77,"end_character":73},"in_reply_to":"ff570b3c_121915d6","updated":"2020-06-02 17:06:55.000000000","message":"Even if we make the argument that old functions can remain undocumented, there\u0027s no reason not to document the new ones.","commit_id":"9fd0e099928aa46167d7955c7c1ae42553787eda"},{"author":{"_account_id":7353,"name":"Kevin Carter","email":"kevin@cloudnull.com","username":"cloudnull"},"change_message_id":"9ba0d5b22b61716d500738421ddf37a78b36dd29","unresolved":false,"context_lines":[{"line_number":69,"context_line":""},{"line_number":70,"context_line":""},{"line_number":71,"context_line":"def openstack_argument_spec():"},{"line_number":72,"context_line":"    # DEPRECATED: This argument spec is only used for the deprecated old"},{"line_number":73,"context_line":"    # OpenStack modules. It turns out that modern OpenStack auth is WAY"},{"line_number":74,"context_line":"    # more complex than this."},{"line_number":75,"context_line":"    # Consume standard OpenStack environment variables."},{"line_number":76,"context_line":"    # This is mainly only useful for ad-hoc command line operation as"},{"line_number":77,"context_line":"    # in playbooks one would assume variables would be used appropriately"},{"line_number":78,"context_line":"    OS_AUTH_URL \u003d os.environ.get(\u0027OS_AUTH_URL\u0027, \u0027http://127.0.0.1:35357/v2.0/\u0027)"},{"line_number":79,"context_line":"    OS_PASSWORD \u003d os.environ.get(\u0027OS_PASSWORD\u0027, None)"},{"line_number":80,"context_line":"    OS_REGION_NAME \u003d os.environ.get(\u0027OS_REGION_NAME\u0027, None)"}],"source_content_type":"text/x-python","patch_set":12,"id":"ff570b3c_121915d6","line":77,"range":{"start_line":72,"start_character":0,"end_line":77,"end_character":73},"in_reply_to":"ff570b3c_34da6d77","updated":"2020-06-02 17:05:49.000000000","message":"this change rewrites most of this as-is, I Think adding doc strings for params, types, and returns doesn\u0027t add much if anything to the commit length.","commit_id":"9fd0e099928aa46167d7955c7c1ae42553787eda"},{"author":{"_account_id":10969,"name":"Shnaidman Sagi (Sergey)","display_name":"Shnaidman Sagi","email":"sshnaidm@redhat.com","username":"sergsh"},"change_message_id":"2f51a994aadf543f9fcd11ac1dce22bc2159d3c0","unresolved":false,"context_lines":[{"line_number":69,"context_line":""},{"line_number":70,"context_line":""},{"line_number":71,"context_line":"def openstack_argument_spec():"},{"line_number":72,"context_line":"    # DEPRECATED: This argument spec is only used for the deprecated old"},{"line_number":73,"context_line":"    # OpenStack modules. It turns out that modern OpenStack auth is WAY"},{"line_number":74,"context_line":"    # more complex than this."},{"line_number":75,"context_line":"    # Consume standard OpenStack environment variables."},{"line_number":76,"context_line":"    # This is mainly only useful for ad-hoc command line operation as"},{"line_number":77,"context_line":"    # in playbooks one would assume variables would be used appropriately"},{"line_number":78,"context_line":"    OS_AUTH_URL \u003d os.environ.get(\u0027OS_AUTH_URL\u0027, \u0027http://127.0.0.1:35357/v2.0/\u0027)"},{"line_number":79,"context_line":"    OS_PASSWORD \u003d os.environ.get(\u0027OS_PASSWORD\u0027, None)"},{"line_number":80,"context_line":"    OS_REGION_NAME \u003d os.environ.get(\u0027OS_REGION_NAME\u0027, None)"}],"source_content_type":"text/x-python","patch_set":12,"id":"ff570b3c_34da6d77","line":77,"range":{"start_line":72,"start_character":0,"end_line":77,"end_character":73},"in_reply_to":"ff570b3c_6cda75e9","updated":"2020-05-30 19:38:57.000000000","message":"We\u0027ll need to rewrite the auth in followups anyway.\nI\u0027d prefer to invest in docs for new functions.\nTo start rewriting it in this patch is too much tbh for one commit.","commit_id":"9fd0e099928aa46167d7955c7c1ae42553787eda"},{"author":{"_account_id":10969,"name":"Shnaidman Sagi (Sergey)","display_name":"Shnaidman Sagi","email":"sshnaidm@redhat.com","username":"sergsh"},"change_message_id":"4f3cdbb55fc1bb9a8fb053b8e1c304d1aac96951","unresolved":false,"context_lines":[{"line_number":69,"context_line":""},{"line_number":70,"context_line":""},{"line_number":71,"context_line":"def openstack_argument_spec():"},{"line_number":72,"context_line":"    # DEPRECATED: This argument spec is only used for the deprecated old"},{"line_number":73,"context_line":"    # OpenStack modules. It turns out that modern OpenStack auth is WAY"},{"line_number":74,"context_line":"    # more complex than this."},{"line_number":75,"context_line":"    # Consume standard OpenStack environment variables."},{"line_number":76,"context_line":"    # This is mainly only useful for ad-hoc command line operation as"},{"line_number":77,"context_line":"    # in playbooks one would assume variables would be used appropriately"},{"line_number":78,"context_line":"    OS_AUTH_URL \u003d os.environ.get(\u0027OS_AUTH_URL\u0027, \u0027http://127.0.0.1:35357/v2.0/\u0027)"},{"line_number":79,"context_line":"    OS_PASSWORD \u003d os.environ.get(\u0027OS_PASSWORD\u0027, None)"},{"line_number":80,"context_line":"    OS_REGION_NAME \u003d os.environ.get(\u0027OS_REGION_NAME\u0027, None)"}],"source_content_type":"text/x-python","patch_set":12,"id":"ff570b3c_92d7e5bf","line":77,"range":{"start_line":72,"start_character":0,"end_line":77,"end_character":73},"in_reply_to":"ff570b3c_b26ca936","updated":"2020-06-02 17:10:17.000000000","message":"Agree, will document new ones.","commit_id":"9fd0e099928aa46167d7955c7c1ae42553787eda"},{"author":{"_account_id":7353,"name":"Kevin Carter","email":"kevin@cloudnull.com","username":"cloudnull"},"change_message_id":"932c57eece2b1e1a65b1251730b771588af7e458","unresolved":false,"context_lines":[{"line_number":264,"context_line":"                and \u0027max_ver\u0027 in self.argument_spec[param]"},{"line_number":265,"context_line":"                    and StrictVersion(self.sdk_version) \u003e self.argument_spec[param][\u0027max_ver\u0027]):"},{"line_number":266,"context_line":"                self.fail_json("},{"line_number":267,"context_line":"                    msg\u003d\"To use parameter \u0027{param}\u0027 with module \u0027{module}\u0027, the installed version of \""},{"line_number":268,"context_line":"                    \"the openstacksdk library MUST be \u003c\u003d{max_version}.\".format("},{"line_number":269,"context_line":"                        max_version\u003dself.argument_spec[param][\u0027max_ver\u0027],"},{"line_number":270,"context_line":"                        param\u003dparam,"}],"source_content_type":"text/x-python","patch_set":12,"id":"ff570b3c_6c88b5c5","line":267,"range":{"start_line":267,"start_character":0,"end_line":267,"end_character":102},"updated":"2020-05-28 19:07:09.000000000","message":"I don\u0027t think the linters are working for these modules?","commit_id":"9fd0e099928aa46167d7955c7c1ae42553787eda"},{"author":{"_account_id":7353,"name":"Kevin Carter","email":"kevin@cloudnull.com","username":"cloudnull"},"change_message_id":"9ba0d5b22b61716d500738421ddf37a78b36dd29","unresolved":false,"context_lines":[{"line_number":264,"context_line":"                and \u0027max_ver\u0027 in self.argument_spec[param]"},{"line_number":265,"context_line":"                    and StrictVersion(self.sdk_version) \u003e self.argument_spec[param][\u0027max_ver\u0027]):"},{"line_number":266,"context_line":"                self.fail_json("},{"line_number":267,"context_line":"                    msg\u003d\"To use parameter \u0027{param}\u0027 with module \u0027{module}\u0027, the installed version of \""},{"line_number":268,"context_line":"                    \"the openstacksdk library MUST be \u003c\u003d{max_version}.\".format("},{"line_number":269,"context_line":"                        max_version\u003dself.argument_spec[param][\u0027max_ver\u0027],"},{"line_number":270,"context_line":"                        param\u003dparam,"}],"source_content_type":"text/x-python","patch_set":12,"id":"ff570b3c_72317159","line":267,"range":{"start_line":267,"start_character":0,"end_line":267,"end_character":102},"in_reply_to":"ff570b3c_14f009fd","updated":"2020-06-02 17:05:49.000000000","message":"python !\u003d ansible\n\nI think if we ran pep8 here it would fail. While I\u0027m not dead set on a line length of 79 (black defaults to 88) I think 160 it too much.","commit_id":"9fd0e099928aa46167d7955c7c1ae42553787eda"},{"author":{"_account_id":10969,"name":"Shnaidman Sagi (Sergey)","display_name":"Shnaidman Sagi","email":"sshnaidm@redhat.com","username":"sergsh"},"change_message_id":"2f51a994aadf543f9fcd11ac1dce22bc2159d3c0","unresolved":false,"context_lines":[{"line_number":264,"context_line":"                and \u0027max_ver\u0027 in self.argument_spec[param]"},{"line_number":265,"context_line":"                    and StrictVersion(self.sdk_version) \u003e self.argument_spec[param][\u0027max_ver\u0027]):"},{"line_number":266,"context_line":"                self.fail_json("},{"line_number":267,"context_line":"                    msg\u003d\"To use parameter \u0027{param}\u0027 with module \u0027{module}\u0027, the installed version of \""},{"line_number":268,"context_line":"                    \"the openstacksdk library MUST be \u003c\u003d{max_version}.\".format("},{"line_number":269,"context_line":"                        max_version\u003dself.argument_spec[param][\u0027max_ver\u0027],"},{"line_number":270,"context_line":"                        param\u003dparam,"}],"source_content_type":"text/x-python","patch_set":12,"id":"ff570b3c_14f009fd","line":267,"range":{"start_line":267,"start_character":0,"end_line":267,"end_character":102},"in_reply_to":"ff570b3c_6c88b5c5","updated":"2020-05-30 19:38:57.000000000","message":"Ansible linter has 160 line length","commit_id":"9fd0e099928aa46167d7955c7c1ae42553787eda"},{"author":{"_account_id":10969,"name":"Shnaidman Sagi (Sergey)","display_name":"Shnaidman Sagi","email":"sshnaidm@redhat.com","username":"sergsh"},"change_message_id":"4f3cdbb55fc1bb9a8fb053b8e1c304d1aac96951","unresolved":false,"context_lines":[{"line_number":264,"context_line":"                and \u0027max_ver\u0027 in self.argument_spec[param]"},{"line_number":265,"context_line":"                    and StrictVersion(self.sdk_version) \u003e self.argument_spec[param][\u0027max_ver\u0027]):"},{"line_number":266,"context_line":"                self.fail_json("},{"line_number":267,"context_line":"                    msg\u003d\"To use parameter \u0027{param}\u0027 with module \u0027{module}\u0027, the installed version of \""},{"line_number":268,"context_line":"                    \"the openstacksdk library MUST be \u003c\u003d{max_version}.\".format("},{"line_number":269,"context_line":"                        max_version\u003dself.argument_spec[param][\u0027max_ver\u0027],"},{"line_number":270,"context_line":"                        param\u003dparam,"}],"source_content_type":"text/x-python","patch_set":12,"id":"ff570b3c_72cdf12e","line":267,"range":{"start_line":267,"start_character":0,"end_line":267,"end_character":102},"in_reply_to":"ff570b3c_72317159","updated":"2020-06-02 17:10:17.000000000","message":"We use ansible-test for validating modules and their code, it includes both configured pylint and pep8 with required settings and some disabled errors.\nI think it\u0027s better to keep up with ansible modules style here.\nSo we do run pep8, but with custom line length.","commit_id":"9fd0e099928aa46167d7955c7c1ae42553787eda"},{"author":{"_account_id":7353,"name":"Kevin Carter","email":"kevin@cloudnull.com","username":"cloudnull"},"change_message_id":"764f25d21cdb8992f618ea42d115e6aa644ff15e","unresolved":false,"context_lines":[{"line_number":264,"context_line":"                and \u0027max_ver\u0027 in self.argument_spec[param]"},{"line_number":265,"context_line":"                    and StrictVersion(self.sdk_version) \u003e self.argument_spec[param][\u0027max_ver\u0027]):"},{"line_number":266,"context_line":"                self.fail_json("},{"line_number":267,"context_line":"                    msg\u003d\"To use parameter \u0027{param}\u0027 with module \u0027{module}\u0027, the installed version of \""},{"line_number":268,"context_line":"                    \"the openstacksdk library MUST be \u003c\u003d{max_version}.\".format("},{"line_number":269,"context_line":"                        max_version\u003dself.argument_spec[param][\u0027max_ver\u0027],"},{"line_number":270,"context_line":"                        param\u003dparam,"}],"source_content_type":"text/x-python","patch_set":12,"id":"ff570b3c_32c7f914","line":267,"range":{"start_line":267,"start_character":0,"end_line":267,"end_character":102},"in_reply_to":"ff570b3c_72317159","updated":"2020-06-02 17:09:13.000000000","message":"you could just run `black` on this whole file and it would format it correctly.\n\nSomething like this would work perfectly\n\n  $ black --line-length 78 --target-version py36 plugins/module_utils/openstack.py","commit_id":"9fd0e099928aa46167d7955c7c1ae42553787eda"},{"author":{"_account_id":7353,"name":"Kevin Carter","email":"kevin@cloudnull.com","username":"cloudnull"},"change_message_id":"ee237a2efebb07cf0a514f131e89330a272dfbe8","unresolved":false,"context_lines":[{"line_number":264,"context_line":"                and \u0027max_ver\u0027 in self.argument_spec[param]"},{"line_number":265,"context_line":"                    and StrictVersion(self.sdk_version) \u003e self.argument_spec[param][\u0027max_ver\u0027]):"},{"line_number":266,"context_line":"                self.fail_json("},{"line_number":267,"context_line":"                    msg\u003d\"To use parameter \u0027{param}\u0027 with module \u0027{module}\u0027, the installed version of \""},{"line_number":268,"context_line":"                    \"the openstacksdk library MUST be \u003c\u003d{max_version}.\".format("},{"line_number":269,"context_line":"                        max_version\u003dself.argument_spec[param][\u0027max_ver\u0027],"},{"line_number":270,"context_line":"                        param\u003dparam,"}],"source_content_type":"text/x-python","patch_set":12,"id":"ff570b3c_9dd37538","line":267,"range":{"start_line":267,"start_character":0,"end_line":267,"end_character":102},"in_reply_to":"ff570b3c_72cdf12e","updated":"2020-06-02 19:23:46.000000000","message":"I\u0027d argue that Ansible in fact does not have a code style given they basically allow everything. That said, this isn\u0027t something I will block on, though it is something I will nitpick later. I feel we should adhere to the code style we\u0027ve come to expect in OpenStack.","commit_id":"9fd0e099928aa46167d7955c7c1ae42553787eda"},{"author":{"_account_id":10969,"name":"Shnaidman Sagi (Sergey)","display_name":"Shnaidman Sagi","email":"sshnaidm@redhat.com","username":"sergsh"},"change_message_id":"b2c6193c517a42b81296ae486967efb8580277df","unresolved":false,"context_lines":[{"line_number":264,"context_line":"                and \u0027max_ver\u0027 in self.argument_spec[param]"},{"line_number":265,"context_line":"                    and StrictVersion(self.sdk_version) \u003e self.argument_spec[param][\u0027max_ver\u0027]):"},{"line_number":266,"context_line":"                self.fail_json("},{"line_number":267,"context_line":"                    msg\u003d\"To use parameter \u0027{param}\u0027 with module \u0027{module}\u0027, the installed version of \""},{"line_number":268,"context_line":"                    \"the openstacksdk library MUST be \u003c\u003d{max_version}.\".format("},{"line_number":269,"context_line":"                        max_version\u003dself.argument_spec[param][\u0027max_ver\u0027],"},{"line_number":270,"context_line":"                        param\u003dparam,"}],"source_content_type":"text/x-python","patch_set":12,"id":"ff570b3c_1d6da531","line":267,"range":{"start_line":267,"start_character":0,"end_line":267,"end_character":102},"in_reply_to":"ff570b3c_9dd37538","updated":"2020-06-02 19:40:43.000000000","message":"I\u0027d argue on that, we should more keep up with ansible collections IMHO. But we can argue on that in ptg meeting, for example :)","commit_id":"9fd0e099928aa46167d7955c7c1ae42553787eda"}],"plugins/modules/network.py":[{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"d22868d296a68cf8744c34e23771714f05c1ceca","unresolved":false,"context_lines":[{"line_number":158,"context_line":""},{"line_number":159,"context_line":"from ansible.module_utils.basic import AnsibleModule"},{"line_number":160,"context_line":"from ..module_utils.openstack import (openstack_full_argument_spec,"},{"line_number":161,"context_line":"                                                                                openstack_module_kwargs,"},{"line_number":162,"context_line":"                                                                                openstack_cloud_from_module)"},{"line_number":163,"context_line":""},{"line_number":164,"context_line":""}],"source_content_type":"text/x-python","patch_set":5,"id":"ff570b3c_b876393d","line":161,"updated":"2020-05-19 15:05:41.000000000","message":"linters: E127 continuation line over-indented for visual indent","commit_id":"a09e5d8f1e1cf2224c48afcaf3fb49d11d2b60bd"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"d22868d296a68cf8744c34e23771714f05c1ceca","unresolved":false,"context_lines":[{"line_number":158,"context_line":""},{"line_number":159,"context_line":"from ansible.module_utils.basic import AnsibleModule"},{"line_number":160,"context_line":"from ..module_utils.openstack import (openstack_full_argument_spec,"},{"line_number":161,"context_line":"                                                                                openstack_module_kwargs,"},{"line_number":162,"context_line":"                                                                                openstack_cloud_from_module)"},{"line_number":163,"context_line":""},{"line_number":164,"context_line":""}],"source_content_type":"text/x-python","patch_set":5,"id":"ff570b3c_f891d148","line":161,"updated":"2020-05-19 15:05:41.000000000","message":"linters: E127 continuation line over-indented for visual indent","commit_id":"a09e5d8f1e1cf2224c48afcaf3fb49d11d2b60bd"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"d22868d296a68cf8744c34e23771714f05c1ceca","unresolved":false,"context_lines":[{"line_number":158,"context_line":""},{"line_number":159,"context_line":"from ansible.module_utils.basic import AnsibleModule"},{"line_number":160,"context_line":"from ..module_utils.openstack import (openstack_full_argument_spec,"},{"line_number":161,"context_line":"                                                                                openstack_module_kwargs,"},{"line_number":162,"context_line":"                                                                                openstack_cloud_from_module)"},{"line_number":163,"context_line":""},{"line_number":164,"context_line":""}],"source_content_type":"text/x-python","patch_set":5,"id":"ff570b3c_38986968","line":161,"updated":"2020-05-19 15:05:41.000000000","message":"pep8: E127 continuation line over-indented for visual indent","commit_id":"a09e5d8f1e1cf2224c48afcaf3fb49d11d2b60bd"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"d22868d296a68cf8744c34e23771714f05c1ceca","unresolved":false,"context_lines":[{"line_number":159,"context_line":"from ansible.module_utils.basic import AnsibleModule"},{"line_number":160,"context_line":"from ..module_utils.openstack import (openstack_full_argument_spec,"},{"line_number":161,"context_line":"                                                                                openstack_module_kwargs,"},{"line_number":162,"context_line":"                                                                                openstack_cloud_from_module)"},{"line_number":163,"context_line":""},{"line_number":164,"context_line":""},{"line_number":165,"context_line":"def main():"}],"source_content_type":"text/x-python","patch_set":5,"id":"ff570b3c_9871b547","line":162,"updated":"2020-05-19 15:05:41.000000000","message":"linters: E127 continuation line over-indented for visual indent","commit_id":"a09e5d8f1e1cf2224c48afcaf3fb49d11d2b60bd"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"d22868d296a68cf8744c34e23771714f05c1ceca","unresolved":false,"context_lines":[{"line_number":159,"context_line":"from ansible.module_utils.basic import AnsibleModule"},{"line_number":160,"context_line":"from ..module_utils.openstack import (openstack_full_argument_spec,"},{"line_number":161,"context_line":"                                                                                openstack_module_kwargs,"},{"line_number":162,"context_line":"                                                                                openstack_cloud_from_module)"},{"line_number":163,"context_line":""},{"line_number":164,"context_line":""},{"line_number":165,"context_line":"def main():"}],"source_content_type":"text/x-python","patch_set":5,"id":"ff570b3c_d894cd39","line":162,"updated":"2020-05-19 15:05:41.000000000","message":"linters: E127 continuation line over-indented for visual indent","commit_id":"a09e5d8f1e1cf2224c48afcaf3fb49d11d2b60bd"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"d22868d296a68cf8744c34e23771714f05c1ceca","unresolved":false,"context_lines":[{"line_number":159,"context_line":"from ansible.module_utils.basic import AnsibleModule"},{"line_number":160,"context_line":"from ..module_utils.openstack import (openstack_full_argument_spec,"},{"line_number":161,"context_line":"                                                                                openstack_module_kwargs,"},{"line_number":162,"context_line":"                                                                                openstack_cloud_from_module)"},{"line_number":163,"context_line":""},{"line_number":164,"context_line":""},{"line_number":165,"context_line":"def main():"}],"source_content_type":"text/x-python","patch_set":5,"id":"ff570b3c_189be565","line":162,"updated":"2020-05-19 15:05:41.000000000","message":"pep8: E127 continuation line over-indented for visual indent","commit_id":"a09e5d8f1e1cf2224c48afcaf3fb49d11d2b60bd"}],"plugins/modules/os_server.py":[{"author":{"_account_id":2,"name":"Monty Taylor","email":"mordred@inaugust.com","username":"mordred"},"change_message_id":"3a3df44387ba612f04cef3e4eff5b64e9353006f","unresolved":false,"context_lines":[{"line_number":474,"context_line":"            yield net"},{"line_number":475,"context_line":""},{"line_number":476,"context_line":""},{"line_number":477,"context_line":"def _network_args(module, cloud):"},{"line_number":478,"context_line":"    args \u003d []"},{"line_number":479,"context_line":"    nics \u003d module.params[\u0027nics\u0027]"},{"line_number":480,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"1f493fa4_6ce99eb5","line":477,"updated":"2020-04-28 15:24:01.000000000","message":"We should really make this a method and stop passing module and cloud - but that can be a followup.","commit_id":"0f2a502881e865db101a51512f79ef3a8f7ecdae"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"f6cbdb3eb78d8cba3beff3edb3f59287372ddd15","unresolved":false,"context_lines":[{"line_number":479,"context_line":"    nics \u003d module.params[\u0027nics\u0027]"},{"line_number":480,"context_line":""},{"line_number":481,"context_line":"    if not isinstance(nics, list):"},{"line_number":482,"context_line":"        module.fail(msg\u003d\u0027The \\\u0027nics\\\u0027 parameter must be a list.\u0027)"},{"line_number":483,"context_line":""},{"line_number":484,"context_line":"    for num, net in enumerate(_parse_nics(nics)):"},{"line_number":485,"context_line":"        if not isinstance(net, dict):"}],"source_content_type":"text/x-python","patch_set":1,"id":"1f493fa4_fcd5c0b8","line":482,"updated":"2020-04-23 12:51:39.000000000","message":"can we somehow keep compatibility with fail_json? I\u0027m afraid of people forgetting the difference..","commit_id":"0f2a502881e865db101a51512f79ef3a8f7ecdae"},{"author":{"_account_id":10969,"name":"Shnaidman Sagi (Sergey)","display_name":"Shnaidman Sagi","email":"sshnaidm@redhat.com","username":"sergsh"},"change_message_id":"3b670cdca9a1d04bc0b3aa492b9ac6eff2a72f6b","unresolved":false,"context_lines":[{"line_number":479,"context_line":"    nics \u003d module.params[\u0027nics\u0027]"},{"line_number":480,"context_line":""},{"line_number":481,"context_line":"    if not isinstance(nics, list):"},{"line_number":482,"context_line":"        module.fail(msg\u003d\u0027The \\\u0027nics\\\u0027 parameter must be a list.\u0027)"},{"line_number":483,"context_line":""},{"line_number":484,"context_line":"    for num, net in enumerate(_parse_nics(nics)):"},{"line_number":485,"context_line":"        if not isinstance(net, dict):"}],"source_content_type":"text/x-python","patch_set":1,"id":"1f493fa4_3250f1d4","line":482,"in_reply_to":"1f493fa4_fcd5c0b8","updated":"2020-04-23 13:43:33.000000000","message":"yeah, we can do like \"self.fail_json  \u003d self.ansible.fail_json\", not a problem\n\nI just think that maybe for new contributors will be more clear \"fail/exit\" than fail_json/exit_json. Not sure if worth to keep both, maybe to stay with self.fail_json","commit_id":"0f2a502881e865db101a51512f79ef3a8f7ecdae"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"f6cbdb3eb78d8cba3beff3edb3f59287372ddd15","unresolved":false,"context_lines":[{"line_number":798,"context_line":"                timeout\u003dself.params[\u0027timeout\u0027],"},{"line_number":799,"context_line":"                delete_ips\u003dself.params[\u0027delete_fip\u0027])"},{"line_number":800,"context_line":"        except Exception as e:"},{"line_number":801,"context_line":"            self.fail(msg\u003d\"Error in deleting vm: %s\" % str(e))"},{"line_number":802,"context_line":"        self.exit(changed\u003dTrue, result\u003d\u0027deleted\u0027)"},{"line_number":803,"context_line":""},{"line_number":804,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"1f493fa4_7cca501a","line":801,"updated":"2020-04-23 12:51:39.000000000","message":"nit: str() not needed at all","commit_id":"0f2a502881e865db101a51512f79ef3a8f7ecdae"},{"author":{"_account_id":10969,"name":"Shnaidman Sagi (Sergey)","display_name":"Shnaidman Sagi","email":"sshnaidm@redhat.com","username":"sergsh"},"change_message_id":"3b670cdca9a1d04bc0b3aa492b9ac6eff2a72f6b","unresolved":false,"context_lines":[{"line_number":798,"context_line":"                timeout\u003dself.params[\u0027timeout\u0027],"},{"line_number":799,"context_line":"                delete_ips\u003dself.params[\u0027delete_fip\u0027])"},{"line_number":800,"context_line":"        except Exception as e:"},{"line_number":801,"context_line":"            self.fail(msg\u003d\"Error in deleting vm: %s\" % str(e))"},{"line_number":802,"context_line":"        self.exit(changed\u003dTrue, result\u003d\u0027deleted\u0027)"},{"line_number":803,"context_line":""},{"line_number":804,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"1f493fa4_7208b9d8","line":801,"in_reply_to":"1f493fa4_7cca501a","updated":"2020-04-23 13:43:33.000000000","message":"ack","commit_id":"0f2a502881e865db101a51512f79ef3a8f7ecdae"}]}
