)]}'
{"ci/roles/project/tasks/main.yml":[{"author":{"_account_id":10969,"name":"Shnaidman Sagi (Sergey)","display_name":"Shnaidman Sagi","email":"sshnaidm@redhat.com","username":"sergsh"},"change_message_id":"fd4025ffb8f607f92b9119006ec559c54b67544d","unresolved":false,"context_lines":[{"line_number":8,"context_line":"     domain_id: default"},{"line_number":9,"context_line":"     enabled: True"},{"line_number":10,"context_line":"     properties:"},{"line_number":11,"context_line":"       foo: bar"},{"line_number":12,"context_line":"  register: project"},{"line_number":13,"context_line":""},{"line_number":14,"context_line":"- debug: var\u003dproject"}],"source_content_type":"text/x-yaml","patch_set":3,"id":"df33271e_973d21c6","line":11,"range":{"start_line":11,"start_character":7,"end_line":11,"end_character":15},"updated":"2020-03-30 22:39:26.000000000","message":"seems like it has a predefined set of values:\n\nhttps://zuul.opendev.org/t/openstack/build/af6e0371685b4b7393bbf5bd722564b3/log/job-output.txt#44167","commit_id":"fbbe61e33ba78846a4b04161e2c9cb9498445d87"},{"author":{"_account_id":14369,"name":"Mark Chappell","email":"mchappel@redhat.com","username":"tremble"},"change_message_id":"2cc3514d4ea5dc92b755a90e69f364509ba7ee15","unresolved":false,"context_lines":[{"line_number":1,"context_line":"---"},{"line_number":2,"context_line":"- name: Create project"},{"line_number":3,"context_line":"  openstack.cloud.os_project:"},{"line_number":4,"context_line":"     cloud: \"{{ cloud }}\""}],"source_content_type":"text/x-yaml","patch_set":10,"id":"df33271e_e838c7d3","line":1,"updated":"2020-04-02 09:11:26.000000000","message":"While these tests will test that things don\u0027t explode, they don\u0027t test that the module actually behaves the way you expect...\n\nAre the values *actually* set?\nAre they actually updated?\nDo they only get updated when you explictly try to change them?\nDoes check mode behave?\nDo your properties get added when you expect?\nDo they stay when you expect them to?\nDo they get removed when you expect them to?\nAre each of the changes idempotent?\nDo the parameters get updated when each one\u0027s changed on its own?","commit_id":"37a221e7c7d95086353c6bdddf652710d952502d"},{"author":{"_account_id":14369,"name":"Mark Chappell","email":"mchappel@redhat.com","username":"tremble"},"change_message_id":"64d414a5cea1e684aaeef26eaf4b22611931f3ef","unresolved":false,"context_lines":[{"line_number":1,"context_line":"---"},{"line_number":2,"context_line":"- name: Create project"},{"line_number":3,"context_line":"  openstack.cloud.os_project:"},{"line_number":4,"context_line":"     cloud: \"{{ cloud }}\""}],"source_content_type":"text/x-yaml","patch_set":10,"id":"df33271e_110a2a89","line":1,"in_reply_to":"df33271e_b13a5eca","updated":"2020-04-06 16:13:38.000000000","message":"I\u0027m not a core dev, but I\u0027d certainly recommend trying to build out a full set of tests, I\u0027ve caught more than a few dumb bugs that way...\n\nAt the very least I\u0027d recommend it for the properties piece.","commit_id":"37a221e7c7d95086353c6bdddf652710d952502d"},{"author":{"_account_id":27224,"name":"Duc Truong","email":"duc.openstack@gmail.com","username":"dtruong2"},"change_message_id":"33102ad4a24c93a1a397e55ca2091386caf3d130","unresolved":false,"context_lines":[{"line_number":1,"context_line":"---"},{"line_number":2,"context_line":"- name: Create project"},{"line_number":3,"context_line":"  openstack.cloud.os_project:"},{"line_number":4,"context_line":"     cloud: \"{{ cloud }}\""}],"source_content_type":"text/x-yaml","patch_set":10,"id":"df33271e_b13a5eca","line":1,"in_reply_to":"df33271e_e838c7d3","updated":"2020-04-06 15:51:55.000000000","message":"I see your point but I was following the pattern of existing tests and most of them do not go into this level detailed testing.  Are you asking to do have test cases covering the above scenarios for only the new \u0027properties\u0027 field or for all the existing fields in os_project?","commit_id":"37a221e7c7d95086353c6bdddf652710d952502d"}],"ci/roles/project_properties/tasks/main.yml":[{"author":{"_account_id":10969,"name":"Shnaidman Sagi (Sergey)","display_name":"Shnaidman Sagi","email":"sshnaidm@redhat.com","username":"sergsh"},"change_message_id":"915cade31bdab72bd980eb24f82922c5df1e0360","unresolved":false,"context_lines":[{"line_number":34,"context_line":"      - \u0027\"project\" in create_project\u0027"},{"line_number":35,"context_line":"      - \u0027\"dummy_key\" in project\u0027"},{"line_number":36,"context_line":"      - project.dummy_key \u003d\u003d dummy_value"},{"line_number":37,"context_line":"    vars:"},{"line_number":38,"context_line":"      project: \u0027{{ create_project.project }}\u0027"},{"line_number":39,"context_line":""},{"line_number":40,"context_line":"- name: \u0027Create project with properties (retry - no change) - CHECK_MODE\u0027"},{"line_number":41,"context_line":"  check_mode: yes"}],"source_content_type":"text/x-yaml","patch_set":16,"id":"df33271e_ee8eab30","line":38,"range":{"start_line":37,"start_character":4,"end_line":38,"end_character":45},"updated":"2020-04-07 11:55:23.000000000","message":"Invalid options for assert: vars","commit_id":"906fafe3f62f59a8ec92508c4d6af0dc9ac01c07"},{"author":{"_account_id":10969,"name":"Shnaidman Sagi (Sergey)","display_name":"Shnaidman Sagi","email":"sshnaidm@redhat.com","username":"sergsh"},"change_message_id":"f14e9bcd3bc83848d7f5039c1eb02d80d624b6f4","unresolved":false,"context_lines":[{"line_number":32,"context_line":"    - create_project is successful"},{"line_number":33,"context_line":"    - create_project is changed"},{"line_number":34,"context_line":"    - \u0027\"project\" in create_project\u0027"},{"line_number":35,"context_line":"    - \u0027\"extra\" in project\u0027"},{"line_number":36,"context_line":"    - \u0027\"dummy_key\" in project.extra\u0027"},{"line_number":37,"context_line":"    - project.extra.dummy_key \u003d\u003d dummy_value"},{"line_number":38,"context_line":"  vars:"}],"source_content_type":"text/x-yaml","patch_set":20,"id":"df33271e_99ed5db9","line":35,"range":{"start_line":35,"start_character":6,"end_line":35,"end_character":26},"updated":"2020-04-09 16:01:51.000000000","message":"it should be \u0027\"extra\" in create_project[\"project\"]\u0027","commit_id":"593ed18846f4162417c56eea50433977a91c7c40"},{"author":{"_account_id":10969,"name":"Shnaidman Sagi (Sergey)","display_name":"Shnaidman Sagi","email":"sshnaidm@redhat.com","username":"sergsh"},"change_message_id":"f14e9bcd3bc83848d7f5039c1eb02d80d624b6f4","unresolved":false,"context_lines":[{"line_number":33,"context_line":"    - create_project is changed"},{"line_number":34,"context_line":"    - \u0027\"project\" in create_project\u0027"},{"line_number":35,"context_line":"    - \u0027\"extra\" in project\u0027"},{"line_number":36,"context_line":"    - \u0027\"dummy_key\" in project.extra\u0027"},{"line_number":37,"context_line":"    - project.extra.dummy_key \u003d\u003d dummy_value"},{"line_number":38,"context_line":"  vars:"},{"line_number":39,"context_line":"    project: \u0027{{ create_project.project }}\u0027"}],"source_content_type":"text/x-yaml","patch_set":20,"id":"df33271e_19378d4f","line":36,"range":{"start_line":36,"start_character":21,"end_line":36,"end_character":36},"updated":"2020-04-09 16:01:51.000000000","message":"create_project.project.extra","commit_id":"593ed18846f4162417c56eea50433977a91c7c40"},{"author":{"_account_id":10969,"name":"Shnaidman Sagi (Sergey)","display_name":"Shnaidman Sagi","email":"sshnaidm@redhat.com","username":"sergsh"},"change_message_id":"b99265fd1585fe06d97e389cc65a5755a7321f19","unresolved":false,"context_lines":[{"line_number":34,"context_line":"    - \u0027\"project\" in create_project\u0027"},{"line_number":35,"context_line":"    - \u0027\"extra\" in create_project[\"project\"]\u0027"},{"line_number":36,"context_line":"    - \u0027\"dummy_key\" in create_project[\"project\"].extra\u0027"},{"line_number":37,"context_line":"    - project.extra.dummy_key \u003d\u003d dummy_value"},{"line_number":38,"context_line":"  vars:"},{"line_number":39,"context_line":"    project: \u0027{{ create_project.project }}\u0027"},{"line_number":40,"context_line":""}],"source_content_type":"text/x-yaml","patch_set":21,"id":"df33271e_c8ed4cb8","line":37,"range":{"start_line":37,"start_character":5,"end_line":37,"end_character":43},"updated":"2020-04-09 17:49:27.000000000","message":"create_project.extra.dummy_key \u003d\u003d dummy_value\n\nyou should do this for all","commit_id":"1140fa581d1061f477b93846ec0610d6cd13572a"},{"author":{"_account_id":10969,"name":"Shnaidman Sagi (Sergey)","display_name":"Shnaidman Sagi","email":"sshnaidm@redhat.com","username":"sergsh"},"change_message_id":"b99265fd1585fe06d97e389cc65a5755a7321f19","unresolved":false,"context_lines":[{"line_number":36,"context_line":"    - \u0027\"dummy_key\" in create_project[\"project\"].extra\u0027"},{"line_number":37,"context_line":"    - project.extra.dummy_key \u003d\u003d dummy_value"},{"line_number":38,"context_line":"  vars:"},{"line_number":39,"context_line":"    project: \u0027{{ create_project.project }}\u0027"},{"line_number":40,"context_line":""},{"line_number":41,"context_line":"- name: \u0027Create project with properties (retry - no change) - CHECK_MODE\u0027"},{"line_number":42,"context_line":"  check_mode: yes"}],"source_content_type":"text/x-yaml","patch_set":21,"id":"df33271e_0831f45a","line":39,"range":{"start_line":39,"start_character":4,"end_line":39,"end_character":38},"updated":"2020-04-09 17:49:27.000000000","message":"this doesn\u0027t seem to work","commit_id":"1140fa581d1061f477b93846ec0610d6cd13572a"}],"ci/run-collection.yml":[{"author":{"_account_id":10969,"name":"Shnaidman Sagi (Sergey)","display_name":"Shnaidman Sagi","email":"sshnaidm@redhat.com","username":"sergsh"},"change_message_id":"e4b761b0762010e893f9a90f1ab787862acb3e9a","unresolved":false,"context_lines":[{"line_number":20,"context_line":"    - role: project"},{"line_number":21,"context_line":"      tags: project"},{"line_number":22,"context_line":"      when: sdk_version is version(0.46, \u0027\u003e\u003d\u0027)"},{"line_number":23,"context_line":"    - { role: project, tags: project }"},{"line_number":24,"context_line":"    - { role: router, tags: router }"},{"line_number":25,"context_line":"    - { role: security_group, tags: security_group }"},{"line_number":26,"context_line":"    - { role: server, tags: server }"}],"source_content_type":"text/x-yaml","patch_set":6,"id":"df33271e_0898a219","line":23,"range":{"start_line":23,"start_character":5,"end_line":23,"end_character":37},"updated":"2020-04-01 13:53:18.000000000","message":"this is duplicate of above\n\n    - role: project\n      tags: project\n      when: sdk_version is version(0.46, \u0027\u003e\u003d\u0027)","commit_id":"33f1a3a930f815bda38d92b6d6fe8efc30b24064"},{"author":{"_account_id":10969,"name":"Shnaidman Sagi (Sergey)","display_name":"Shnaidman Sagi","email":"sshnaidm@redhat.com","username":"sergsh"},"change_message_id":"cdbe14d7e0cda484abab3fcc4740f83aa85e3219","unresolved":false,"context_lines":[{"line_number":20,"context_line":"    - role: project"},{"line_number":21,"context_line":"      tags: project"},{"line_number":22,"context_line":"      when: sdk_version is version(0.46, \u0027\u003e\u003d\u0027)"},{"line_number":23,"context_line":"    - { role: project, tags: project }"},{"line_number":24,"context_line":"    - { role: router, tags: router }"},{"line_number":25,"context_line":"    - { role: security_group, tags: security_group }"},{"line_number":26,"context_line":"    - { role: server, tags: server }"}],"source_content_type":"text/x-yaml","patch_set":6,"id":"df33271e_2b2480ae","line":23,"range":{"start_line":23,"start_character":5,"end_line":23,"end_character":37},"in_reply_to":"df33271e_0898a219","updated":"2020-04-01 13:55:46.000000000","message":"in master job it\u0027s 0.45.1.dev19, so maybe better \"version(0.45, \"\u003e\") ?","commit_id":"33f1a3a930f815bda38d92b6d6fe8efc30b24064"},{"author":{"_account_id":10969,"name":"Shnaidman Sagi (Sergey)","display_name":"Shnaidman Sagi","email":"sshnaidm@redhat.com","username":"sergsh"},"change_message_id":"48e9f316fe997eb0618b99bba9394379a11b6448","unresolved":false,"context_lines":[{"line_number":19,"context_line":"    - { role: port, tags: port }"},{"line_number":20,"context_line":"    - role: project"},{"line_number":21,"context_line":"      tags: project"},{"line_number":22,"context_line":"      when: sdk_version is version(0.45, \u0027\u003e\u0027)"},{"line_number":23,"context_line":"    - { role: router, tags: router }"},{"line_number":24,"context_line":"    - { role: security_group, tags: security_group }"},{"line_number":25,"context_line":"    - { role: server, tags: server }"}],"source_content_type":"text/x-yaml","patch_set":7,"id":"df33271e_634d033d","line":22,"range":{"start_line":22,"start_character":35,"end_line":22,"end_character":39},"updated":"2020-04-01 23:24:26.000000000","message":"I don\u0027t know why it runs on 0.45.0, let\u0027s try version(0.41, \u0027\u003e\u0027)","commit_id":"11cd93e9381610731d6f8eb3a2ee536b76410768"},{"author":{"_account_id":10969,"name":"Shnaidman Sagi (Sergey)","display_name":"Shnaidman Sagi","email":"sshnaidm@redhat.com","username":"sergsh"},"change_message_id":"4005d25cd26fdb3eb21a097de6fcab17c5d8f0ea","unresolved":false,"context_lines":[{"line_number":19,"context_line":"    - { role: port, tags: port }"},{"line_number":20,"context_line":"    - role: project"},{"line_number":21,"context_line":"      tags: project"},{"line_number":22,"context_line":"      when: sdk_version is version(0.45, \u0027\u003e\u0027)"},{"line_number":23,"context_line":"    - { role: router, tags: router }"},{"line_number":24,"context_line":"    - { role: security_group, tags: security_group }"},{"line_number":25,"context_line":"    - { role: server, tags: server }"}],"source_content_type":"text/x-yaml","patch_set":7,"id":"df33271e_23593bfd","line":22,"range":{"start_line":22,"start_character":35,"end_line":22,"end_character":39},"in_reply_to":"df33271e_634d033d","updated":"2020-04-01 23:25:28.000000000","message":"sorry, I meant version(0.45.1, \"\u003e\u003d\") of course","commit_id":"11cd93e9381610731d6f8eb3a2ee536b76410768"},{"author":{"_account_id":14369,"name":"Mark Chappell","email":"mchappel@redhat.com","username":"tremble"},"change_message_id":"2cc3514d4ea5dc92b755a90e69f364509ba7ee15","unresolved":false,"context_lines":[{"line_number":19,"context_line":"    - { role: port, tags: port }"},{"line_number":20,"context_line":"    - role: project"},{"line_number":21,"context_line":"      tags: project"},{"line_number":22,"context_line":"      when: sdk_version is version(\"0.45.01\", \u0027\u003e\u0027)"},{"line_number":23,"context_line":"    - { role: router, tags: router }"},{"line_number":24,"context_line":"    - { role: security_group, tags: security_group }"},{"line_number":25,"context_line":"    - { role: server, tags: server }"}],"source_content_type":"text/x-yaml","patch_set":10,"id":"df33271e_687b178b","line":22,"updated":"2020-04-02 09:11:26.000000000","message":"This feels wrong, project is a pre-exsiting module we should be running at least basic tests against the old SDK.  (See later comments)","commit_id":"37a221e7c7d95086353c6bdddf652710d952502d"},{"author":{"_account_id":14369,"name":"Mark Chappell","email":"mchappel@redhat.com","username":"tremble"},"change_message_id":"64d414a5cea1e684aaeef26eaf4b22611931f3ef","unresolved":false,"context_lines":[{"line_number":19,"context_line":"    - { role: port, tags: port }"},{"line_number":20,"context_line":"    - role: project"},{"line_number":21,"context_line":"      tags: project"},{"line_number":22,"context_line":"      when: sdk_version is version(\"0.45.01\", \u0027\u003e\u0027)"},{"line_number":23,"context_line":"    - { role: router, tags: router }"},{"line_number":24,"context_line":"    - { role: security_group, tags: security_group }"},{"line_number":25,"context_line":"    - { role: server, tags: server }"}],"source_content_type":"text/x-yaml","patch_set":10,"id":"df33271e_b17c1e21","line":22,"in_reply_to":"df33271e_515b122d","updated":"2020-04-06 16:13:38.000000000","message":"That would be my suggestion, yes.","commit_id":"37a221e7c7d95086353c6bdddf652710d952502d"},{"author":{"_account_id":27224,"name":"Duc Truong","email":"duc.openstack@gmail.com","username":"dtruong2"},"change_message_id":"33102ad4a24c93a1a397e55ca2091386caf3d130","unresolved":false,"context_lines":[{"line_number":19,"context_line":"    - { role: port, tags: port }"},{"line_number":20,"context_line":"    - role: project"},{"line_number":21,"context_line":"      tags: project"},{"line_number":22,"context_line":"      when: sdk_version is version(\"0.45.01\", \u0027\u003e\u0027)"},{"line_number":23,"context_line":"    - { role: router, tags: router }"},{"line_number":24,"context_line":"    - { role: security_group, tags: security_group }"},{"line_number":25,"context_line":"    - { role: server, tags: server }"}],"source_content_type":"text/x-yaml","patch_set":10,"id":"df33271e_515b122d","line":22,"in_reply_to":"df33271e_687b178b","updated":"2020-04-06 15:51:55.000000000","message":"Would the solution in this case be to have two tests, one for basic tests against the old SDK and another test for the new properties field against the new SDK?","commit_id":"37a221e7c7d95086353c6bdddf652710d952502d"},{"author":{"_account_id":10969,"name":"Shnaidman Sagi (Sergey)","display_name":"Shnaidman Sagi","email":"sshnaidm@redhat.com","username":"sergsh"},"change_message_id":"e7b5b0b4099dae9eabf5c286f80759d251603d12","unresolved":false,"context_lines":[{"line_number":23,"context_line":"    - { role: nova_flavor, tags: nova_flavor }"},{"line_number":24,"context_line":"    - { role: object, tags: object }"},{"line_number":25,"context_line":"    - { role: port, tags: port }"},{"line_number":26,"context_line":"    - { role: project, tags: project }"},{"line_number":27,"context_line":"    - role: project_properties"},{"line_number":28,"context_line":"      tags: project_properties"},{"line_number":29,"context_line":"      when: sdk_version is version(\"0.45.01\", \u0027\u003e\u0027)"},{"line_number":30,"context_line":"    - { role: router, tags: router }"},{"line_number":31,"context_line":"    - { role: security_group, tags: security_group }"},{"line_number":32,"context_line":"    - { role: server, tags: server }"}],"source_content_type":"text/x-yaml","patch_set":16,"id":"df33271e_39bf47fc","line":29,"range":{"start_line":26,"start_character":0,"end_line":29,"end_character":50},"updated":"2020-04-07 07:07:04.000000000","message":"that\u0027s fine and if you need to include both in one role, you can just set \"when: sdk_version is version(\"0.45.01\", \u0027\u003e\u0027)\" for specific tasks.","commit_id":"906fafe3f62f59a8ec92508c4d6af0dc9ac01c07"}],"plugins/modules/os_project.py":[{"author":{"_account_id":10969,"name":"Shnaidman Sagi (Sergey)","display_name":"Shnaidman Sagi","email":"sshnaidm@redhat.com","username":"sergsh"},"change_message_id":"4f874669083f9526da6986a606f7ac9e37eef16d","unresolved":false,"context_lines":[{"line_number":42,"context_line":"   properties:"},{"line_number":43,"context_line":"     description:"},{"line_number":44,"context_line":"        - Additional properties to be associated with this project"},{"line_number":45,"context_line":"     default: {}"},{"line_number":46,"context_line":"   state:"},{"line_number":47,"context_line":"     description:"},{"line_number":48,"context_line":"       - Should the resource be present or absent."}],"source_content_type":"text/x-python","patch_set":1,"id":"df33271e_ba0dea36","line":45,"range":{"start_line":45,"start_character":1,"end_line":45,"end_character":16},"updated":"2020-03-26 17:26:08.000000000","message":"please add type\nif it\u0027s \"dict\" please add suboptions, for example see https://github.com/openstack/ansible-collections-openstack/blob/1849f8bd4750f1d5f40b95811a934b1547a1bde4/plugins/modules/os_routers_info.py#L32-L58","commit_id":"ddad37f0cd2547604d727b0fb1c7f607365f280e"},{"author":{"_account_id":27224,"name":"Duc Truong","email":"duc.openstack@gmail.com","username":"dtruong2"},"change_message_id":"042103e699585c5684a35de3b78979595754eb5e","unresolved":false,"context_lines":[{"line_number":42,"context_line":"   properties:"},{"line_number":43,"context_line":"     description:"},{"line_number":44,"context_line":"        - Additional properties to be associated with this project"},{"line_number":45,"context_line":"     default: {}"},{"line_number":46,"context_line":"   state:"},{"line_number":47,"context_line":"     description:"},{"line_number":48,"context_line":"       - Should the resource be present or absent."}],"source_content_type":"text/x-python","patch_set":1,"id":"df33271e_fae1322c","line":45,"range":{"start_line":45,"start_character":1,"end_line":45,"end_character":16},"in_reply_to":"df33271e_ba0dea36","updated":"2020-03-26 17:36:27.000000000","message":"There are no known suboptions for this field because it accepts arbitrary key value pairs.  It is similar to the image properties here: https://github.com/openstack/ansible-collections-openstack/blob/1849f8bd4750f1d5f40b95811a934b1547a1bde4/plugins/modules/os_image.py#L80","commit_id":"ddad37f0cd2547604d727b0fb1c7f607365f280e"},{"author":{"_account_id":10969,"name":"Shnaidman Sagi (Sergey)","display_name":"Shnaidman Sagi","email":"sshnaidm@redhat.com","username":"sergsh"},"change_message_id":"5f6ee686cc0318d418f2c6f6351e47782986b279","unresolved":false,"context_lines":[{"line_number":42,"context_line":"   properties:"},{"line_number":43,"context_line":"     description:"},{"line_number":44,"context_line":"        - Additional properties to be associated with this project"},{"line_number":45,"context_line":"     default: {}"},{"line_number":46,"context_line":"   state:"},{"line_number":47,"context_line":"     description:"},{"line_number":48,"context_line":"       - Should the resource be present or absent."}],"source_content_type":"text/x-python","patch_set":1,"id":"df33271e_7c5e8244","line":45,"range":{"start_line":45,"start_character":1,"end_line":45,"end_character":16},"in_reply_to":"df33271e_fae1322c","updated":"2020-03-30 22:38:23.000000000","message":"So, are we ready to accept here any key-value?","commit_id":"ddad37f0cd2547604d727b0fb1c7f607365f280e"},{"author":{"_account_id":10969,"name":"Shnaidman Sagi (Sergey)","display_name":"Shnaidman Sagi","email":"sshnaidm@redhat.com","username":"sergsh"},"change_message_id":"1d19e630bc073018c2b7b4c4bf0b9c3b514b5aec","unresolved":false,"context_lines":[{"line_number":201,"context_line":"                    enabled\u003denabled)"},{"line_number":202,"context_line":"                changed \u003d True"},{"line_number":203,"context_line":""},{"line_number":204,"context_line":"                project \u003d cloud.update_project("},{"line_number":205,"context_line":"                    project[\u0027id\u0027], description\u003ddescription,"},{"line_number":206,"context_line":"                    enabled\u003denabled, **properties)"},{"line_number":207,"context_line":"            else:"},{"line_number":208,"context_line":"                if _needs_update(module, project):"},{"line_number":209,"context_line":"                    project \u003d cloud.update_project("},{"line_number":210,"context_line":"                        project[\u0027id\u0027], description\u003ddescription,"},{"line_number":211,"context_line":"                        enabled\u003denabled, **properties)"},{"line_number":212,"context_line":"                    changed \u003d True"},{"line_number":213,"context_line":"                else:"},{"line_number":214,"context_line":"                    changed \u003d False"}],"source_content_type":"text/x-python","patch_set":3,"id":"df33271e_766df5ca","line":211,"range":{"start_line":204,"start_character":0,"end_line":211,"end_character":54},"updated":"2020-03-31 10:46:10.000000000","message":"All this should have min_version, otherwise will break users of previous SDK versions","commit_id":"fbbe61e33ba78846a4b04161e2c9cb9498445d87"},{"author":{"_account_id":10969,"name":"Shnaidman Sagi (Sergey)","display_name":"Shnaidman Sagi","email":"sshnaidm@redhat.com","username":"sergsh"},"change_message_id":"d08dc0a287086b482d3e40ce91110b882d02866d","unresolved":false,"context_lines":[{"line_number":168,"context_line":"    properties \u003d module.params[\u0027properties\u0027]"},{"line_number":169,"context_line":"    state \u003d module.params[\u0027state\u0027]"},{"line_number":170,"context_line":""},{"line_number":171,"context_line":"    sdk, cloud \u003d openstack_cloud_from_module(module, min_version\u003d\"0.46\")"},{"line_number":172,"context_line":"    try:"},{"line_number":173,"context_line":"        if domain:"},{"line_number":174,"context_line":"            try:"}],"source_content_type":"text/x-python","patch_set":5,"id":"df33271e_1845a243","line":171,"range":{"start_line":171,"start_character":4,"end_line":171,"end_character":72},"updated":"2020-04-01 00:26:07.000000000","message":"well, I didn\u0027t mean the whole module should have min_version, the only \"properties\" feature. We can\u0027t block users to use this module just because \"properties\"","commit_id":"480403e70151198643a1a57ad8d173c4947766a8"},{"author":{"_account_id":10969,"name":"Shnaidman Sagi (Sergey)","display_name":"Shnaidman Sagi","email":"sshnaidm@redhat.com","username":"sergsh"},"change_message_id":"48e9f316fe997eb0618b99bba9394379a11b6448","unresolved":false,"context_lines":[{"line_number":42,"context_line":"   properties:"},{"line_number":43,"context_line":"     description:"},{"line_number":44,"context_line":"        - Additional properties to be associated with this project. Requires"},{"line_number":45,"context_line":"          openstacksdk\u003e0.45."},{"line_number":46,"context_line":"     default: {}"},{"line_number":47,"context_line":"   state:"},{"line_number":48,"context_line":"     description:"}],"source_content_type":"text/x-python","patch_set":7,"id":"df33271e_63c863a5","line":45,"range":{"start_line":45,"start_character":23,"end_line":45,"end_character":28},"updated":"2020-04-01 23:24:26.000000000","message":"\u003e\u003d0.46","commit_id":"11cd93e9381610731d6f8eb3a2ee536b76410768"},{"author":{"_account_id":10969,"name":"Shnaidman Sagi (Sergey)","display_name":"Shnaidman Sagi","email":"sshnaidm@redhat.com","username":"sergsh"},"change_message_id":"48e9f316fe997eb0618b99bba9394379a11b6448","unresolved":false,"context_lines":[{"line_number":172,"context_line":"    min_version \u003d None"},{"line_number":173,"context_line":""},{"line_number":174,"context_line":"    if properties is not None:"},{"line_number":175,"context_line":"        min_version \u003d \u00270.45.1\u0027"},{"line_number":176,"context_line":""},{"line_number":177,"context_line":"    sdk, cloud \u003d openstack_cloud_from_module(module, min_version)"},{"line_number":178,"context_line":"    try:"}],"source_content_type":"text/x-python","patch_set":7,"id":"df33271e_c3d7af4a","line":175,"range":{"start_line":175,"start_character":23,"end_line":175,"end_character":29},"updated":"2020-04-01 23:24:26.000000000","message":"that can stay 0.46, we limit only tests to \u003e0.45\nActual version of SDK will be 0.46","commit_id":"11cd93e9381610731d6f8eb3a2ee536b76410768"},{"author":{"_account_id":10969,"name":"Shnaidman Sagi (Sergey)","display_name":"Shnaidman Sagi","email":"sshnaidm@redhat.com","username":"sergsh"},"change_message_id":"ea803b3a7ef26ded7b98866bdec75c736a93624b","unresolved":false,"context_lines":[{"line_number":172,"context_line":"    min_version \u003d None"},{"line_number":173,"context_line":""},{"line_number":174,"context_line":"    if properties is not None:"},{"line_number":175,"context_line":"        min_version \u003d \u00270.45.1\u0027"},{"line_number":176,"context_line":""},{"line_number":177,"context_line":"    sdk, cloud \u003d openstack_cloud_from_module(module, min_version)"},{"line_number":178,"context_line":"    try:"}],"source_content_type":"text/x-python","patch_set":7,"id":"df33271e_836767b7","line":175,"range":{"start_line":175,"start_character":23,"end_line":175,"end_character":29},"in_reply_to":"df33271e_c3d7af4a","updated":"2020-04-01 23:26:23.000000000","message":"oops, ignore please this comment :) let\u0027s leave it so","commit_id":"11cd93e9381610731d6f8eb3a2ee536b76410768"},{"author":{"_account_id":14369,"name":"Mark Chappell","email":"mchappel@redhat.com","username":"tremble"},"change_message_id":"2cc3514d4ea5dc92b755a90e69f364509ba7ee15","unresolved":false,"context_lines":[{"line_number":39,"context_line":"        - Is the project enabled"},{"line_number":40,"context_line":"     type: bool"},{"line_number":41,"context_line":"     default: \u0027yes\u0027"},{"line_number":42,"context_line":"   properties:"},{"line_number":43,"context_line":"     description:"},{"line_number":44,"context_line":"        - Additional properties to be associated with this project. Requires"},{"line_number":45,"context_line":"          openstacksdk\u003e0.45."}],"source_content_type":"text/x-python","patch_set":10,"id":"df33271e_68a037f5","line":42,"updated":"2020-04-02 09:11:26.000000000","message":"Does project support properties?  I don\u0027t see it in any of the documentation (is it just implied?)  I\u0027d actually like this for $DAYJOB (Train).","commit_id":"37a221e7c7d95086353c6bdddf652710d952502d"},{"author":{"_account_id":14369,"name":"Mark Chappell","email":"mchappel@redhat.com","username":"tremble"},"change_message_id":"64d414a5cea1e684aaeef26eaf4b22611931f3ef","unresolved":false,"context_lines":[{"line_number":39,"context_line":"        - Is the project enabled"},{"line_number":40,"context_line":"     type: bool"},{"line_number":41,"context_line":"     default: \u0027yes\u0027"},{"line_number":42,"context_line":"   properties:"},{"line_number":43,"context_line":"     description:"},{"line_number":44,"context_line":"        - Additional properties to be associated with this project. Requires"},{"line_number":45,"context_line":"          openstacksdk\u003e0.45."}],"source_content_type":"text/x-python","patch_set":10,"id":"df33271e_91c75a46","line":42,"in_reply_to":"df33271e_68a037f5","updated":"2020-04-06 16:13:38.000000000","message":"Done","commit_id":"37a221e7c7d95086353c6bdddf652710d952502d"},{"author":{"_account_id":27224,"name":"Duc Truong","email":"duc.openstack@gmail.com","username":"dtruong2"},"change_message_id":"33102ad4a24c93a1a397e55ca2091386caf3d130","unresolved":false,"context_lines":[{"line_number":39,"context_line":"        - Is the project enabled"},{"line_number":40,"context_line":"     type: bool"},{"line_number":41,"context_line":"     default: \u0027yes\u0027"},{"line_number":42,"context_line":"   properties:"},{"line_number":43,"context_line":"     description:"},{"line_number":44,"context_line":"        - Additional properties to be associated with this project. Requires"},{"line_number":45,"context_line":"          openstacksdk\u003e0.45."}],"source_content_type":"text/x-python","patch_set":10,"id":"df33271e_6e3ab1e7","line":42,"in_reply_to":"df33271e_68a037f5","updated":"2020-04-06 15:51:55.000000000","message":"Project doesn\u0027t support properties but any arbitrary key value pair (See https://opendev.org/openstack/keystone/src/branch/master/keystone/resource/schema.py#L76)","commit_id":"37a221e7c7d95086353c6bdddf652710d952502d"},{"author":{"_account_id":14369,"name":"Mark Chappell","email":"mchappel@redhat.com","username":"tremble"},"change_message_id":"64d414a5cea1e684aaeef26eaf4b22611931f3ef","unresolved":false,"context_lines":[{"line_number":39,"context_line":"        - Is the project enabled"},{"line_number":40,"context_line":"     type: bool"},{"line_number":41,"context_line":"     default: \u0027yes\u0027"},{"line_number":42,"context_line":"   properties:"},{"line_number":43,"context_line":"     description:"},{"line_number":44,"context_line":"        - Additional properties to be associated with this project. Requires"},{"line_number":45,"context_line":"          openstacksdk\u003e0.45."}],"source_content_type":"text/x-python","patch_set":10,"id":"df33271e_f1c4e642","line":42,"in_reply_to":"df33271e_6e3ab1e7","updated":"2020-04-06 16:13:38.000000000","message":"Done","commit_id":"37a221e7c7d95086353c6bdddf652710d952502d"},{"author":{"_account_id":14369,"name":"Mark Chappell","email":"mchappel@redhat.com","username":"tremble"},"change_message_id":"2cc3514d4ea5dc92b755a90e69f364509ba7ee15","unresolved":false,"context_lines":[{"line_number":42,"context_line":"   properties:"},{"line_number":43,"context_line":"     description:"},{"line_number":44,"context_line":"        - Additional properties to be associated with this project. Requires"},{"line_number":45,"context_line":"          openstacksdk\u003e0.45."},{"line_number":46,"context_line":"     default: {}"},{"line_number":47,"context_line":"   state:"},{"line_number":48,"context_line":"     description:"}],"source_content_type":"text/x-python","patch_set":10,"id":"df33271e_c5e5eedd","line":45,"updated":"2020-04-02 09:11:26.000000000","message":"Please add \"type: dict\" in here too, so that consumers know that they\u0027re supposed to be passing this in as a dictionary.\n\nWhile it seems \u0027obvious\u0027 it\u0027s better that *all* examples are kept good and clean for when someone new looks at the code for examples.","commit_id":"37a221e7c7d95086353c6bdddf652710d952502d"},{"author":{"_account_id":27224,"name":"Duc Truong","email":"duc.openstack@gmail.com","username":"dtruong2"},"change_message_id":"33102ad4a24c93a1a397e55ca2091386caf3d130","unresolved":false,"context_lines":[{"line_number":42,"context_line":"   properties:"},{"line_number":43,"context_line":"     description:"},{"line_number":44,"context_line":"        - Additional properties to be associated with this project. Requires"},{"line_number":45,"context_line":"          openstacksdk\u003e0.45."},{"line_number":46,"context_line":"     default: {}"},{"line_number":47,"context_line":"   state:"},{"line_number":48,"context_line":"     description:"}],"source_content_type":"text/x-python","patch_set":10,"id":"df33271e_ae2319be","line":45,"in_reply_to":"df33271e_c5e5eedd","updated":"2020-04-06 15:51:55.000000000","message":"Done","commit_id":"37a221e7c7d95086353c6bdddf652710d952502d"},{"author":{"_account_id":14369,"name":"Mark Chappell","email":"mchappel@redhat.com","username":"tremble"},"change_message_id":"2cc3514d4ea5dc92b755a90e69f364509ba7ee15","unresolved":false,"context_lines":[{"line_number":117,"context_line":"            return True"},{"line_number":118,"context_line":""},{"line_number":119,"context_line":"    properties \u003d module.params[\u0027properties\u0027]"},{"line_number":120,"context_line":"    project_properties \u003d project.get(\u0027properties\u0027)"},{"line_number":121,"context_line":"    for k, v in properties.items():"},{"line_number":122,"context_line":"        if v is not None and v !\u003d project_properties[k]:"},{"line_number":123,"context_line":"            return True"}],"source_content_type":"text/x-python","patch_set":10,"id":"df33271e_45f27e9b","line":120,"updated":"2020-04-02 09:11:26.000000000","message":"It would be better to say\n\nif properties:\n  project_properties \u003d ...\n  for ...\n\nWith an old version of the SDK project_properties will return None and throw\nAttributeError: \u0027NoneType\u0027 object has no attribute \u0027items\u0027\nwhen it hits your for loop.","commit_id":"37a221e7c7d95086353c6bdddf652710d952502d"},{"author":{"_account_id":27224,"name":"Duc Truong","email":"duc.openstack@gmail.com","username":"dtruong2"},"change_message_id":"33102ad4a24c93a1a397e55ca2091386caf3d130","unresolved":false,"context_lines":[{"line_number":117,"context_line":"            return True"},{"line_number":118,"context_line":""},{"line_number":119,"context_line":"    properties \u003d module.params[\u0027properties\u0027]"},{"line_number":120,"context_line":"    project_properties \u003d project.get(\u0027properties\u0027)"},{"line_number":121,"context_line":"    for k, v in properties.items():"},{"line_number":122,"context_line":"        if v is not None and v !\u003d project_properties[k]:"},{"line_number":123,"context_line":"            return True"}],"source_content_type":"text/x-python","patch_set":10,"id":"df33271e_ee2d21a9","line":120,"in_reply_to":"df33271e_45f27e9b","updated":"2020-04-06 15:51:55.000000000","message":"Done","commit_id":"37a221e7c7d95086353c6bdddf652710d952502d"},{"author":{"_account_id":6816,"name":"Jesse Pretorius","email":"jesse@odyssey4.me","username":"jesse-pretorius"},"change_message_id":"e425478cd23d6c9054a548112e8c1263f44fadc0","unresolved":false,"context_lines":[{"line_number":173,"context_line":""},{"line_number":174,"context_line":"    min_version \u003d None"},{"line_number":175,"context_line":""},{"line_number":176,"context_line":"    if properties is not None:"},{"line_number":177,"context_line":"        min_version \u003d \u00270.45.1\u0027"},{"line_number":178,"context_line":""},{"line_number":179,"context_line":"    sdk, cloud \u003d openstack_cloud_from_module(module, min_version)"},{"line_number":180,"context_line":"    try:"}],"source_content_type":"text/x-python","patch_set":22,"id":"3f4c43b2_c05f57e3","line":177,"range":{"start_line":176,"start_character":0,"end_line":177,"end_character":30},"updated":"2020-04-14 13:47:11.000000000","message":"This will break backwards compatibility for one property (\u0027description\u0027). I think it may be prudent to check if the only property being set is \u0027description\u0027 and to leave min_version \u003d None in that case.","commit_id":"68de1efd0ccfb51cd2ce27676c7c70315c735094"},{"author":{"_account_id":27224,"name":"Duc Truong","email":"duc.openstack@gmail.com","username":"dtruong2"},"change_message_id":"7d475df0b8f8e2e19076e032e2b7a2f2289331a5","unresolved":false,"context_lines":[{"line_number":173,"context_line":""},{"line_number":174,"context_line":"    min_version \u003d None"},{"line_number":175,"context_line":""},{"line_number":176,"context_line":"    if properties is not None:"},{"line_number":177,"context_line":"        min_version \u003d \u00270.45.1\u0027"},{"line_number":178,"context_line":""},{"line_number":179,"context_line":"    sdk, cloud \u003d openstack_cloud_from_module(module, min_version)"},{"line_number":180,"context_line":"    try:"}],"source_content_type":"text/x-python","patch_set":22,"id":"3f4c43b2_d23286f1","line":177,"range":{"start_line":176,"start_character":0,"end_line":177,"end_character":30},"in_reply_to":"3f4c43b2_c05f57e3","updated":"2020-04-14 17:13:38.000000000","message":"I think the problem is that properties default is an empty dictionary so the if conditional is never false.  The correct conditional should be check if properties is true (aka the dictionary is not empty).","commit_id":"68de1efd0ccfb51cd2ce27676c7c70315c735094"},{"author":{"_account_id":6816,"name":"Jesse Pretorius","email":"jesse@odyssey4.me","username":"jesse-pretorius"},"change_message_id":"1fed302b2ce6f6cdf648909bde5a0b5e162a63e1","unresolved":false,"context_lines":[{"line_number":173,"context_line":""},{"line_number":174,"context_line":"    min_version \u003d None"},{"line_number":175,"context_line":""},{"line_number":176,"context_line":"    if properties is not None:"},{"line_number":177,"context_line":"        min_version \u003d \u00270.45.1\u0027"},{"line_number":178,"context_line":""},{"line_number":179,"context_line":"    sdk, cloud \u003d openstack_cloud_from_module(module, min_version)"},{"line_number":180,"context_line":"    try:"}],"source_content_type":"text/x-python","patch_set":22,"id":"3f4c43b2_83270713","line":177,"range":{"start_line":176,"start_character":0,"end_line":177,"end_character":30},"in_reply_to":"3f4c43b2_d23286f1","updated":"2020-04-15 10:37:10.000000000","message":"Oh, silly me - I see now that \u0027description\u0027 is a separate parameter and this introduced the new parameter.","commit_id":"68de1efd0ccfb51cd2ce27676c7c70315c735094"}]}
