)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":8449,"name":"Marios Andreou","email":"marios.andreou@gmail.com","username":"marios"},"change_message_id":"36bee5e86adbe8c43d95a201ee148366f3d30163","unresolved":false,"context_lines":[{"line_number":11,"context_line":""},{"line_number":12,"context_line":"Change-Id: I23fc883ee243a34e1abd6914377b206160e5d52a"},{"line_number":13,"context_line":"Depends-On: I4fd47445f012878e595649be8371ea212548cbd8"},{"line_number":14,"context_line":"Implements: blueprint multiple-external-ceph"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":12,"id":"3fa7e38b_28dc1c70","line":14,"updated":"2020-02-03 08:24:29.000000000","message":"maybe add the bug then if you get another update here https://bugs.launchpad.net/tripleo/+bug/1861488","commit_id":"d2436d8665703eda2c824d5d751b70a5636c0266"},{"author":{"_account_id":18002,"name":"John Fulton","email":"fulton@redhat.com","username":"fultonj"},"change_message_id":"15d8ae79276aad99ab7f4ff1601d78a44e57cbc6","unresolved":false,"context_lines":[{"line_number":11,"context_line":""},{"line_number":12,"context_line":"Change-Id: I23fc883ee243a34e1abd6914377b206160e5d52a"},{"line_number":13,"context_line":"Depends-On: I4fd47445f012878e595649be8371ea212548cbd8"},{"line_number":14,"context_line":"Implements: blueprint multiple-external-ceph"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":12,"id":"3fa7e38b_2f889718","line":14,"in_reply_to":"3fa7e38b_28dc1c70","updated":"2020-02-03 19:39:28.000000000","message":"Yes, it\u0027s the depends-on which should address it so I\u0027ve added a related bug note.\n\n https://review.opendev.org/#/c/702143/21//COMMIT_MSG","commit_id":"d2436d8665703eda2c824d5d751b70a5636c0266"}],"deployment/ceph-ansible/ceph-base.yaml":[{"author":{"_account_id":18002,"name":"John Fulton","email":"fulton@redhat.com","username":"fultonj"},"change_message_id":"419815c20635537adaf287190e984439a3ab9e9c","unresolved":false,"context_lines":[{"line_number":250,"context_line":"      were used, the second run would configure the overcloud to also use the ceph2"},{"line_number":251,"context_line":"      cluster with all the previous paramters except /etc/ceph/ceph2.conf would have"},{"line_number":252,"context_line":"      a mon_host entry containing the value of external_cluster_mon_ips below, and"},{"line_number":253,"context_line":"      not the default CephExternalMonHost. Each subsequent ceph-ansible runs passes"},{"line_number":254,"context_line":"      \u0027--limit clients\u0027. This parameter may not be used to deploy additional internal"},{"line_number":255,"context_line":"      Ceph clusters within one Heat stack. The map for each list should contain not"},{"line_number":256,"context_line":"      tripleo-heat-template parameters but ceph-ansible parameters."},{"line_number":257,"context_line":"        - ceph2:"}],"source_content_type":"text/x-yaml","patch_set":3,"id":"3fa7e38b_0867e0ba","line":254,"range":{"start_line":253,"start_character":43,"end_line":254,"end_character":24},"updated":"2020-01-14 21:57:32.000000000","message":"This might be OK but only if I use an updated inventory. E.g. a controller isn\u0027t included in the tripleo-inventory\u0027s ceph-ansible clients group. But in this context I would want it to be part of the client role. I.e. I don\u0027t want my controller to run additional mons for a ceph2 cluster. I want it to be a client of the ceph2 cluster. More work will be needed in tripleo-ansible, probably in the file below, to make this work as desired.\n\nhttps://review.opendev.org/#/c/702143/7/tripleo_ansible/roles/tripleo-ceph-run-ansible/tasks/main.yml","commit_id":"5ae1bad2f453993c179d9d9210b52203dc98805a"},{"author":{"_account_id":18002,"name":"John Fulton","email":"fulton@redhat.com","username":"fultonj"},"change_message_id":"5efed532fdf82b6ff9fe0072e9ef351361e4013c","unresolved":false,"context_lines":[{"line_number":250,"context_line":"      were used, the second run would configure the overcloud to also use the ceph2"},{"line_number":251,"context_line":"      cluster with all the previous paramters except /etc/ceph/ceph2.conf would have"},{"line_number":252,"context_line":"      a mon_host entry containing the value of external_cluster_mon_ips below, and"},{"line_number":253,"context_line":"      not the default CephExternalMonHost. Each subsequent ceph-ansible runs passes"},{"line_number":254,"context_line":"      \u0027--limit clients\u0027. This parameter may not be used to deploy additional internal"},{"line_number":255,"context_line":"      Ceph clusters within one Heat stack. The map for each list should contain not"},{"line_number":256,"context_line":"      tripleo-heat-template parameters but ceph-ansible parameters."},{"line_number":257,"context_line":"        - ceph2:"}],"source_content_type":"text/x-yaml","patch_set":3,"id":"3fa7e38b_ba44cb1b","line":254,"range":{"start_line":253,"start_character":43,"end_line":254,"end_character":24},"in_reply_to":"3fa7e38b_0867e0ba","updated":"2020-01-15 04:47:54.000000000","message":"I think PS8 from tripleo ansible takes care of this now:\n\nhttps://review.opendev.org/#/c/702143/5..8/tripleo_ansible/roles/tripleo-ceph-run-ansible/tasks/main.yml","commit_id":"5ae1bad2f453993c179d9d9210b52203dc98805a"},{"author":{"_account_id":18002,"name":"John Fulton","email":"fulton@redhat.com","username":"fultonj"},"change_message_id":"a1a137366875f1523b5cf15d940269b261f0bece","unresolved":false,"context_lines":[{"line_number":239,"context_line":"          key: \"AQBRgQ9eAAAAABAAv84zEilJYZPNuJ0Iwn9Ndg\u003d\u003d\""},{"line_number":240,"context_line":"          mode: \"0600\""},{"line_number":241,"context_line":"    default: []"},{"line_number":242,"context_line":"  CephMultiBackendsHash:"},{"line_number":243,"context_line":"    type: json"},{"line_number":244,"context_line":"    hidden: true"},{"line_number":245,"context_line":"    description: |"}],"source_content_type":"text/x-yaml","patch_set":4,"id":"3fa7e38b_4c0957da","line":242,"range":{"start_line":242,"start_character":2,"end_line":242,"end_character":23},"updated":"2020-01-15 21:58:20.000000000","message":"CephExternalMultiConfig","commit_id":"c2ff6e0ec2399973259a81bb11711caa2d1e0136"},{"author":{"_account_id":18002,"name":"John Fulton","email":"fulton@redhat.com","username":"fultonj"},"change_message_id":"7f0cef2f87e1d84c4e7c9c5b9b7323bc2cc5528e","unresolved":false,"context_lines":[{"line_number":239,"context_line":"          key: \"AQBRgQ9eAAAAABAAv84zEilJYZPNuJ0Iwn9Ndg\u003d\u003d\""},{"line_number":240,"context_line":"          mode: \"0600\""},{"line_number":241,"context_line":"    default: []"},{"line_number":242,"context_line":"  CephMultiBackendsHash:"},{"line_number":243,"context_line":"    type: json"},{"line_number":244,"context_line":"    hidden: true"},{"line_number":245,"context_line":"    description: |"}],"source_content_type":"text/x-yaml","patch_set":4,"id":"3fa7e38b_61844a0f","line":242,"range":{"start_line":242,"start_character":2,"end_line":242,"end_character":23},"in_reply_to":"3fa7e38b_0c783f2a","updated":"2020-01-16 20:00:57.000000000","message":"Done","commit_id":"c2ff6e0ec2399973259a81bb11711caa2d1e0136"},{"author":{"_account_id":21129,"name":"Alan Bishop","email":"abishopsweng@gmail.com","username":"ASBishop","status":"ex Red Hat"},"change_message_id":"0dd9c9a6b1fa1cc912e7b00caa01f5a4ea87075b","unresolved":false,"context_lines":[{"line_number":239,"context_line":"          key: \"AQBRgQ9eAAAAABAAv84zEilJYZPNuJ0Iwn9Ndg\u003d\u003d\""},{"line_number":240,"context_line":"          mode: \"0600\""},{"line_number":241,"context_line":"    default: []"},{"line_number":242,"context_line":"  CephMultiBackendsHash:"},{"line_number":243,"context_line":"    type: json"},{"line_number":244,"context_line":"    hidden: true"},{"line_number":245,"context_line":"    description: |"}],"source_content_type":"text/x-yaml","patch_set":4,"id":"3fa7e38b_0c783f2a","line":242,"range":{"start_line":242,"start_character":2,"end_line":242,"end_character":23},"in_reply_to":"3fa7e38b_4c0957da","updated":"2020-01-15 22:02:34.000000000","message":"I agree, and the name is consistent with the direction that cinder is heading for multi-backends.","commit_id":"c2ff6e0ec2399973259a81bb11711caa2d1e0136"},{"author":{"_account_id":18002,"name":"John Fulton","email":"fulton@redhat.com","username":"fultonj"},"change_message_id":"a1a137366875f1523b5cf15d940269b261f0bece","unresolved":false,"context_lines":[{"line_number":248,"context_line":"      an extra count(list) times using the same parameters as the first run except"},{"line_number":249,"context_line":"      each parameter within each map will override the defaults. If the following"},{"line_number":250,"context_line":"      were used, the second run would configure the overcloud to also use the ceph2"},{"line_number":251,"context_line":"      cluster with all the previous paramters except /etc/ceph/ceph2.conf would have"},{"line_number":252,"context_line":"      a mon_host entry containing the value of external_cluster_mon_ips below, and"},{"line_number":253,"context_line":"      not the default CephExternalMonHost. Each subsequent ceph-ansible runs passes"},{"line_number":254,"context_line":"      \u0027--limit clients\u0027. This parameter may not be used to deploy additional internal"}],"source_content_type":"text/x-yaml","patch_set":4,"id":"3fa7e38b_ac024bb8","line":251,"range":{"start_line":251,"start_character":36,"end_line":251,"end_character":45},"updated":"2020-01-15 21:58:20.000000000","message":"parameters","commit_id":"c2ff6e0ec2399973259a81bb11711caa2d1e0136"},{"author":{"_account_id":18002,"name":"John Fulton","email":"fulton@redhat.com","username":"fultonj"},"change_message_id":"7f0cef2f87e1d84c4e7c9c5b9b7323bc2cc5528e","unresolved":false,"context_lines":[{"line_number":248,"context_line":"      an extra count(list) times using the same parameters as the first run except"},{"line_number":249,"context_line":"      each parameter within each map will override the defaults. If the following"},{"line_number":250,"context_line":"      were used, the second run would configure the overcloud to also use the ceph2"},{"line_number":251,"context_line":"      cluster with all the previous paramters except /etc/ceph/ceph2.conf would have"},{"line_number":252,"context_line":"      a mon_host entry containing the value of external_cluster_mon_ips below, and"},{"line_number":253,"context_line":"      not the default CephExternalMonHost. Each subsequent ceph-ansible runs passes"},{"line_number":254,"context_line":"      \u0027--limit clients\u0027. This parameter may not be used to deploy additional internal"}],"source_content_type":"text/x-yaml","patch_set":4,"id":"3fa7e38b_81870612","line":251,"range":{"start_line":251,"start_character":36,"end_line":251,"end_character":45},"in_reply_to":"3fa7e38b_ac024bb8","updated":"2020-01-16 20:00:57.000000000","message":"Done","commit_id":"c2ff6e0ec2399973259a81bb11711caa2d1e0136"},{"author":{"_account_id":21129,"name":"Alan Bishop","email":"abishopsweng@gmail.com","username":"ASBishop","status":"ex Red Hat"},"change_message_id":"06e2490b627cdabaae716ac25a103200f6be785f","unresolved":false,"context_lines":[{"line_number":250,"context_line":"      were used, the second run would configure the overcloud to also use the ceph2"},{"line_number":251,"context_line":"      cluster with all the previous paramters except /etc/ceph/ceph2.conf would have"},{"line_number":252,"context_line":"      a mon_host entry containing the value of external_cluster_mon_ips below, and"},{"line_number":253,"context_line":"      not the default CephExternalMonHost. Each subsequent ceph-ansible runs passes"},{"line_number":254,"context_line":"      \u0027--limit clients\u0027. This parameter may not be used to deploy additional internal"},{"line_number":255,"context_line":"      Ceph clusters within one Heat stack. The map for each list should contain not"},{"line_number":256,"context_line":"      tripleo-heat-template parameters but ceph-ansible parameters."},{"line_number":257,"context_line":"        - ceph2:"}],"source_content_type":"text/x-yaml","patch_set":4,"id":"3fa7e38b_eca04339","line":254,"range":{"start_line":253,"start_character":43,"end_line":254,"end_character":24},"updated":"2020-01-15 22:30:43.000000000","message":"Looks like the Depends-On patch no longer uses --limit, and instead specifies a new  inventory-external.yaml. These details should be transparent to this THT, so perhaps the idea should be described in abstract terms. Namely, subsequent ceph-ansible runs are restricted to just ceph client nodes.","commit_id":"c2ff6e0ec2399973259a81bb11711caa2d1e0136"},{"author":{"_account_id":18002,"name":"John Fulton","email":"fulton@redhat.com","username":"fultonj"},"change_message_id":"7f0cef2f87e1d84c4e7c9c5b9b7323bc2cc5528e","unresolved":false,"context_lines":[{"line_number":250,"context_line":"      were used, the second run would configure the overcloud to also use the ceph2"},{"line_number":251,"context_line":"      cluster with all the previous paramters except /etc/ceph/ceph2.conf would have"},{"line_number":252,"context_line":"      a mon_host entry containing the value of external_cluster_mon_ips below, and"},{"line_number":253,"context_line":"      not the default CephExternalMonHost. Each subsequent ceph-ansible runs passes"},{"line_number":254,"context_line":"      \u0027--limit clients\u0027. This parameter may not be used to deploy additional internal"},{"line_number":255,"context_line":"      Ceph clusters within one Heat stack. The map for each list should contain not"},{"line_number":256,"context_line":"      tripleo-heat-template parameters but ceph-ansible parameters."},{"line_number":257,"context_line":"        - ceph2:"}],"source_content_type":"text/x-yaml","patch_set":4,"id":"3fa7e38b_c193be58","line":254,"range":{"start_line":253,"start_character":43,"end_line":254,"end_character":24},"in_reply_to":"3fa7e38b_eca04339","updated":"2020-01-16 20:00:57.000000000","message":"done.","commit_id":"c2ff6e0ec2399973259a81bb11711caa2d1e0136"},{"author":{"_account_id":18002,"name":"John Fulton","email":"fulton@redhat.com","username":"fultonj"},"change_message_id":"d1f15591eb10cef042b3c28f0681225a85f4821f","unresolved":false,"context_lines":[{"line_number":266,"context_line":"                  osd: \"osd: profile rbd pool\u003dvolumes, profile rbd pool\u003dbackups, profile rbd pool\u003dvms, profile rbd pool\u003dimages\""},{"line_number":267,"context_line":"                key: \"AQCwmeRcAAAAABAA6SQU/bGqFjlfLro5KxrB1Q\u003d\u003d\""},{"line_number":268,"context_line":"                mode: \"0600\""},{"line_number":269,"context_line":"            keys: *openstack_keys"},{"line_number":270,"context_line":"            dashboard_enabled: false"},{"line_number":271,"context_line":"    default: []"},{"line_number":272,"context_line":""}],"source_content_type":"text/x-yaml","patch_set":5,"id":"3fa7e38b_a153223a","line":269,"range":{"start_line":269,"start_character":12,"end_line":269,"end_character":33},"updated":"2020-01-16 20:31:08.000000000","message":"Unless I override openstack_keys and keys with the same value, then the keys from the previous install wins and I don\u0027t get the keys I want installed. I think what\u0027s above is fine as an example as I want it to be easy for users to copy this and make their own.\n\nThe happens when users use this as we want them to with \u003e2 external ceph clusters. If I do this:\n\nhttps://github.com/fultonj/ussuri/blob/2c8329561db4585cecbe8a18ced272c1f777bafa/multiceph/overrides.yaml#L39\n\nThen it fails with:\n\nComposerError: found duplicate anchor \u0027openstack_keys\u0027; first occurence\n  in \"overrides.yaml\", line 44, column 25\nsecond occurence\n  in \"overrides.yaml\", line 58, column 25\nfound duplicate anchor \u0027openstack_keys\u0027; first occurence\n  in \"overrides.yaml\", line 44, column 25\nsecond occurence\n  in \"overrides.yaml\", line 58, column 25\n\nThis is easy enough to workaround by naming each YAML anchor differently (as in the diff below), but it makes the example less nice. \n\nAny ideas on how to make this part nicer?\n\n\n(undercloud) [stack@undercloud multiceph]$ git diff\ndiff --git a/multiceph/overrides.yaml b/multiceph/overrides.yaml\nindex 6e04840..6f69ed5 100644\n--- a/multiceph/overrides.yaml\n+++ b/multiceph/overrides.yaml\n@@ -41,7 +41,7 @@ parameter_defaults:\n         cluster: \u0027ceph0\u0027\n         fsid: \u0027af25554b-42f6-4d2b-9b9b-d08a1132d3e8\u0027\n         external_cluster_mon_ips: \u0027192.168.24.250\u0027\n-        openstack_keys: \u0026openstack_keys\n+        openstack_keys: \u0026openstack_keys0\n           - name: \"client.openstack\"\n             caps:\n               mgr: \"allow *\"\n@@ -49,13 +49,13 @@ parameter_defaults:\n               osd: \"osd: profile rbd pool\u003dvolumes, profile rbd pool\u003dbackups, profile rbd pool\n             key: \"AQCwmeRcAAAAABAA6SQU/bGqFjlfLro5KxrB1Q\u003d\u003d\"\n             mode: \"0600\"\n-        keys: *openstack_keys\n+        keys: *openstack_keys0\n         dashboard_enabled: false\n     - ceph1:\n         cluster: \u0027ceph1\u0027\n         fsid: \u0027e2cba068-5f14-4b0f-b047-acf375c0004a\u0027\n         external_cluster_mon_ips: \u0027192.168.24.251\u0027\n-        openstack_keys: \u0026openstack_keys\n+        openstack_keys: \u0026openstack_keys1\n           - name: \"client.openstack\"\n             caps:\n               mgr: \"allow *\"\n@@ -63,5 +63,5 @@ parameter_defaults:\n               osd: \"osd: profile rbd pool\u003dvolumes, profile rbd pool\u003dbackups, profile rbd pool\n             key: \"AQCwmeRcAAAAABAA6SQU/bGqFjlfLro5KxrB1Q\u003d\u003d\"\n             mode: \"0600\"\n-        keys: *openstack_keys\n+        keys: *openstack_keys1\n         dashboard_enabled: false","commit_id":"838b3fe87ae9c5214cca00f038dba4d66ae748e0"},{"author":{"_account_id":21129,"name":"Alan Bishop","email":"abishopsweng@gmail.com","username":"ASBishop","status":"ex Red Hat"},"change_message_id":"16421c967bd36872aed28f9cd747dccbca50bb64","unresolved":false,"context_lines":[{"line_number":266,"context_line":"                  osd: \"osd: profile rbd pool\u003dvolumes, profile rbd pool\u003dbackups, profile rbd pool\u003dvms, profile rbd pool\u003dimages\""},{"line_number":267,"context_line":"                key: \"AQCwmeRcAAAAABAA6SQU/bGqFjlfLro5KxrB1Q\u003d\u003d\""},{"line_number":268,"context_line":"                mode: \"0600\""},{"line_number":269,"context_line":"            keys: *openstack_keys"},{"line_number":270,"context_line":"            dashboard_enabled: false"},{"line_number":271,"context_line":"    default: []"},{"line_number":272,"context_line":""}],"source_content_type":"text/x-yaml","patch_set":5,"id":"3fa7e38b_a416d049","line":269,"range":{"start_line":269,"start_character":12,"end_line":269,"end_character":33},"in_reply_to":"3fa7e38b_a153223a","updated":"2020-01-16 20:38:37.000000000","message":"Instead of the user being responsible for ensuring each hash contains a \u0027keys\u0027 entry that matches their \u0027openstack_keys\u0027, maybe you could add a yaql expression (on or around L603) that inserts the \u0027key\u0027 automatically.","commit_id":"838b3fe87ae9c5214cca00f038dba4d66ae748e0"},{"author":{"_account_id":18002,"name":"John Fulton","email":"fulton@redhat.com","username":"fultonj"},"change_message_id":"47a24dd3ab9c6757df61c0681304f207787f48e8","unresolved":false,"context_lines":[{"line_number":266,"context_line":"                  osd: \"osd: profile rbd pool\u003dvolumes, profile rbd pool\u003dbackups, profile rbd pool\u003dvms, profile rbd pool\u003dimages\""},{"line_number":267,"context_line":"                key: \"AQCwmeRcAAAAABAA6SQU/bGqFjlfLro5KxrB1Q\u003d\u003d\""},{"line_number":268,"context_line":"                mode: \"0600\""},{"line_number":269,"context_line":"            keys: *openstack_keys"},{"line_number":270,"context_line":"            dashboard_enabled: false"},{"line_number":271,"context_line":"    default: []"},{"line_number":272,"context_line":""}],"source_content_type":"text/x-yaml","patch_set":5,"id":"3fa7e38b_77dab3e6","line":269,"range":{"start_line":269,"start_character":12,"end_line":269,"end_character":33},"in_reply_to":"3fa7e38b_a416d049","updated":"2020-01-18 21:23:28.000000000","message":"Not a bad idea. I was about to break out the yaql docs when I found that if I just pass \u0027keys\u0027 and not \u0027openstack_keys\u0027 that it \"just works\" (tm). So I\u0027m going to leave the yaql for that out for simplicities sake and just update my example to use keys.","commit_id":"838b3fe87ae9c5214cca00f038dba4d66ae748e0"},{"author":{"_account_id":6796,"name":"Giulio Fidente","email":"gfidente@redhat.com","username":"gfidente"},"change_message_id":"029a88dffe6e04f8567216d09d14df4f5d373afc","unresolved":false,"context_lines":[{"line_number":254,"context_line":"      to just ceph clients. CephExternalMultiConfig may not be used to deploy additional"},{"line_number":255,"context_line":"      internal Ceph clusters within one Heat stack. The map for each list should contain"},{"line_number":256,"context_line":"      not tripleo-heat-template parameters but ceph-ansible parameters."},{"line_number":257,"context_line":"        - ceph2:"},{"line_number":258,"context_line":"            cluster: \u0027ceph2\u0027"},{"line_number":259,"context_line":"            fsid: \u0027e2cba068-5f14-4b0f-b047-acf375c0004a\u0027"},{"line_number":260,"context_line":"            external_cluster_mon_ips: \u0027172.18.0.42,172.18.0.33,172.18.0.8\u0027"}],"source_content_type":"text/x-yaml","patch_set":8,"id":"3fa7e38b_14d4791e","line":257,"updated":"2020-01-21 16:49:05.000000000","message":"I guess from user perspective we could avoid the key and make it just a list of items to loop through:\n\n          - cluster: \u0027ceph2\u0027\n            fsid: \u0027e2cba068-5f14-4b0f-b047-acf375c0004a\u0027\n            external_cluster_mon_ips: \u0027172.18.0.42,172.18.0.33,172.18.0.8\u0027\n            keys:\n              - name: \"client.openstack\"\n                caps:\n                  mgr: \"allow *\"\n                  mon: \"profile rbd\"\n            ...\n            dashboard_enabled: false\n          - cluster: \u0027another\u0027\n            fsid: \u0027e2cba068-5f14-4b0f-b047-acf375c0004a\u0027\n            external_cluster_mon_ips: \u0027172.18.0.42,172.18.0.33,172.18.0.8\u0027\n            keys:\n              - name: \"client.openstack\"\n                caps:\n                  mgr: \"allow *\"\n                  mon: \"profile rbd\"\n            ...\n            dashboard_enabled: false","commit_id":"2ed2ba74b54d19e5af97db5fb529108a89f97b99"},{"author":{"_account_id":18002,"name":"John Fulton","email":"fulton@redhat.com","username":"fultonj"},"change_message_id":"eb96df6a9ed365967c08ccf829888927acd9c6dc","unresolved":false,"context_lines":[{"line_number":254,"context_line":"      to just ceph clients. CephExternalMultiConfig may not be used to deploy additional"},{"line_number":255,"context_line":"      internal Ceph clusters within one Heat stack. The map for each list should contain"},{"line_number":256,"context_line":"      not tripleo-heat-template parameters but ceph-ansible parameters."},{"line_number":257,"context_line":"        - ceph2:"},{"line_number":258,"context_line":"            cluster: \u0027ceph2\u0027"},{"line_number":259,"context_line":"            fsid: \u0027e2cba068-5f14-4b0f-b047-acf375c0004a\u0027"},{"line_number":260,"context_line":"            external_cluster_mon_ips: \u0027172.18.0.42,172.18.0.33,172.18.0.8\u0027"}],"source_content_type":"text/x-yaml","patch_set":8,"id":"3fa7e38b_d1579626","line":257,"in_reply_to":"3fa7e38b_14d4791e","updated":"2020-01-25 18:39:43.000000000","message":"\u003e I guess from user perspective we could avoid the key and make it\n \u003e just a list of items to loop through:\n\nPS9 uses this. Let\u0027s try it. It differs from the pattern used for https://opendev.org/openstack/tripleo-heat-templates/src/branch/master/environments/cinder-pure-config.yaml#L25 but it also works. Maybe this it\u0027s cleaner this way.\n\nI\u0027ll update tripleo-ansible to use the new structure.","commit_id":"2ed2ba74b54d19e5af97db5fb529108a89f97b99"},{"author":{"_account_id":18002,"name":"John Fulton","email":"fulton@redhat.com","username":"fultonj"},"change_message_id":"47c5a11c17ed2e1cacfcc04bd2c7098489e7b309","unresolved":false,"context_lines":[{"line_number":254,"context_line":"      to just ceph clients. CephExternalMultiConfig may not be used to deploy additional"},{"line_number":255,"context_line":"      internal Ceph clusters within one Heat stack. The map for each list should contain"},{"line_number":256,"context_line":"      not tripleo-heat-template parameters but ceph-ansible parameters."},{"line_number":257,"context_line":"        - ceph2:"},{"line_number":258,"context_line":"            cluster: \u0027ceph2\u0027"},{"line_number":259,"context_line":"            fsid: \u0027e2cba068-5f14-4b0f-b047-acf375c0004a\u0027"},{"line_number":260,"context_line":"            external_cluster_mon_ips: \u0027172.18.0.42,172.18.0.33,172.18.0.8\u0027"}],"source_content_type":"text/x-yaml","patch_set":8,"id":"3fa7e38b_a6c1b883","line":257,"in_reply_to":"3fa7e38b_14d4791e","updated":"2020-01-21 20:51:25.000000000","message":"The existing data structure follows an existing pattern in TripleO\n\nhttps://opendev.org/openstack/tripleo-heat-templates/src/branch/master/environments/cinder-pure-config.yaml#L25\n\nThe existing data structure is also nice for things like this since I don\u0027t have to unpack the contents of the value inside searching for the cluster name:\n\nhttps://review.opendev.org/#/c/702143/14/tripleo_ansible/roles/tripleo-ceph-work-dir/tasks/prepare.yml@59\n\nI use the same pattern throughout the tripleo-ansible patch:\n\nhttps://review.opendev.org/#/c/702143/14/tripleo_ansible/roles/tripleo-ceph-run-ansible/tasks/main.yml@87\n\nAlso it\u0027s what we agreed on in the blueprint:\n\nhttps://blueprints.launchpad.net/tripleo/+spec/multiple-external-ceph\n\nI\u0027d rather not change it unless there\u0027s a good reason.","commit_id":"2ed2ba74b54d19e5af97db5fb529108a89f97b99"},{"author":{"_account_id":6796,"name":"Giulio Fidente","email":"gfidente@redhat.com","username":"gfidente"},"change_message_id":"9233b192270e1b541512ac664474f9167fdf5dd1","unresolved":false,"context_lines":[{"line_number":254,"context_line":"      to just ceph clients. CephExternalMultiConfig may not be used to deploy additional"},{"line_number":255,"context_line":"      internal Ceph clusters within one Heat stack. The map for each list should contain"},{"line_number":256,"context_line":"      not tripleo-heat-template parameters but ceph-ansible parameters."},{"line_number":257,"context_line":"        - ceph2:"},{"line_number":258,"context_line":"            cluster: \u0027ceph2\u0027"},{"line_number":259,"context_line":"            fsid: \u0027e2cba068-5f14-4b0f-b047-acf375c0004a\u0027"},{"line_number":260,"context_line":"            external_cluster_mon_ips: \u0027172.18.0.42,172.18.0.33,172.18.0.8\u0027"}],"source_content_type":"text/x-yaml","patch_set":8,"id":"3fa7e38b_c6c95451","line":257,"in_reply_to":"3fa7e38b_a6c1b883","updated":"2020-01-28 01:23:57.000000000","message":"ok I see, don\u0027t make it a list then maybe, like it happens in the first link","commit_id":"2ed2ba74b54d19e5af97db5fb529108a89f97b99"},{"author":{"_account_id":18002,"name":"John Fulton","email":"fulton@redhat.com","username":"fultonj"},"change_message_id":"c43eee26601f54516383103bd381489ca30f7f14","unresolved":false,"context_lines":[{"line_number":68,"context_line":"  CephAnsibleExtraConfig:"},{"line_number":69,"context_line":"    type: json"},{"line_number":70,"context_line":"    description: Extra vars for the ceph-ansible playbook"},{"line_number":71,"context_line":"    default: {}"},{"line_number":72,"context_line":"  CephAnsibleSkipTags:"},{"line_number":73,"context_line":"    type: string"},{"line_number":74,"context_line":"    description: List of ceph-ansible tags to skip"}],"source_content_type":"text/x-yaml","patch_set":10,"id":"3fa7e38b_42ce6c58","line":71,"range":{"start_line":71,"start_character":13,"end_line":71,"end_character":15},"updated":"2020-01-27 17:06:58.000000000","message":"change this to [] as per marios review of the tripleo-ansible part of this topic.","commit_id":"232515306a1efcba3d43f5f7ac21da8f34b18b03"},{"author":{"_account_id":6796,"name":"Giulio Fidente","email":"gfidente@redhat.com","username":"gfidente"},"change_message_id":"9233b192270e1b541512ac664474f9167fdf5dd1","unresolved":false,"context_lines":[{"line_number":68,"context_line":"  CephAnsibleExtraConfig:"},{"line_number":69,"context_line":"    type: json"},{"line_number":70,"context_line":"    description: Extra vars for the ceph-ansible playbook"},{"line_number":71,"context_line":"    default: {}"},{"line_number":72,"context_line":"  CephAnsibleSkipTags:"},{"line_number":73,"context_line":"    type: string"},{"line_number":74,"context_line":"    description: List of ceph-ansible tags to skip"}],"source_content_type":"text/x-yaml","patch_set":10,"id":"3fa7e38b_ce0cc245","line":71,"range":{"start_line":71,"start_character":13,"end_line":71,"end_character":15},"in_reply_to":"3fa7e38b_42ce6c58","updated":"2020-01-28 01:23:57.000000000","message":"not sure if we can do this without breaking backward compat; this is a map in the form of:\n\n  {\"env_variable\":\"value\", \"env_variable_other\":\"value\"}\n\nhonestly I am not sure we need to do this; ceph_ansible_extra_vars is built on line 591 as a map merging this parameter into a few others hardcoded so the resulting format won\u0027t change anyway","commit_id":"232515306a1efcba3d43f5f7ac21da8f34b18b03"},{"author":{"_account_id":18002,"name":"John Fulton","email":"fulton@redhat.com","username":"fultonj"},"change_message_id":"767b79bb535875ac30b83b2a7851d6e10e985f43","unresolved":false,"context_lines":[{"line_number":68,"context_line":"  CephAnsibleExtraConfig:"},{"line_number":69,"context_line":"    type: json"},{"line_number":70,"context_line":"    description: Extra vars for the ceph-ansible playbook"},{"line_number":71,"context_line":"    default: {}"},{"line_number":72,"context_line":"  CephAnsibleSkipTags:"},{"line_number":73,"context_line":"    type: string"},{"line_number":74,"context_line":"    description: List of ceph-ansible tags to skip"}],"source_content_type":"text/x-yaml","patch_set":10,"id":"3fa7e38b_879a210f","line":71,"range":{"start_line":71,"start_character":13,"end_line":71,"end_character":15},"in_reply_to":"3fa7e38b_49df6c66","updated":"2020-01-28 18:29:48.000000000","message":"Yes, you\u0027re right. I had the wrong variable! I meant to say:\n\n CephAnsibleEnvironmentVariables\n\nI\u0027m not proposing I change the type from json to list. Just that it default to an empty list instead of an empty map. \n\n{} is valid json\n[] is valid json too\n\nSince it\u0027s only used by tripleo-ansible to do this:\n\n ceph_ansible_environment_variables|join(\u0027 \u0027)\n\nI don\u0027t think it shouldn\u0027t be a problem. PS11 has the change. We can talk about it more there perhaps?","commit_id":"232515306a1efcba3d43f5f7ac21da8f34b18b03"},{"author":{"_account_id":6796,"name":"Giulio Fidente","email":"gfidente@redhat.com","username":"gfidente"},"change_message_id":"6ef9d552cfd10c1012f694aad8fdcebd9c1fe6ed","unresolved":false,"context_lines":[{"line_number":68,"context_line":"  CephAnsibleExtraConfig:"},{"line_number":69,"context_line":"    type: json"},{"line_number":70,"context_line":"    description: Extra vars for the ceph-ansible playbook"},{"line_number":71,"context_line":"    default: {}"},{"line_number":72,"context_line":"  CephAnsibleSkipTags:"},{"line_number":73,"context_line":"    type: string"},{"line_number":74,"context_line":"    description: List of ceph-ansible tags to skip"}],"source_content_type":"text/x-yaml","patch_set":10,"id":"3fa7e38b_49df6c66","line":71,"range":{"start_line":71,"start_character":13,"end_line":71,"end_character":15},"in_reply_to":"3fa7e38b_ce0cc245","updated":"2020-01-28 01:41:59.000000000","message":"note that they are not *environment* variables but *ansible* extra variables","commit_id":"232515306a1efcba3d43f5f7ac21da8f34b18b03"},{"author":{"_account_id":6796,"name":"Giulio Fidente","email":"gfidente@redhat.com","username":"gfidente"},"change_message_id":"8bba4e67a1a4dc3b0b55cec2d294675565d9a143","unresolved":false,"context_lines":[{"line_number":186,"context_line":"    constraints:"},{"line_number":187,"context_line":"    - range: { min: 1, max: 5 }"},{"line_number":188,"context_line":"  CephAnsibleEnvironmentVariables:"},{"line_number":189,"context_line":"    default: []"},{"line_number":190,"context_line":"    description: Mapping of Ansible environment variables to override defaults."},{"line_number":191,"context_line":"    type: json"},{"line_number":192,"context_line":"  SwiftFetchDirGetTempurl:"}],"source_content_type":"text/x-yaml","patch_set":12,"id":"3fa7e38b_b0ebada3","line":189,"updated":"2020-01-30 19:06:04.000000000","message":"in fact the problem is this was supposed to be a mapping in key: value format (as per description) and in queens we treated it as such [1] [2]\n\nthen from stein with the migration of that code to ansible we assumed it would be a list of key\u003dvalue items\n\nI\u0027d try to keep/restore the functionality as it was unless we have other code doing this differently somewhere, in that case just adopt same format whicever it is for consistency\n\n1. https://github.com/openstack/tripleo-common/blob/stable/queens/workbooks/ceph-ansible.yaml#L12\n2. https://github.com/openstack/tripleo-common/blob/stable/queens/workbooks/ceph-ansible.yaml#L184","commit_id":"d2436d8665703eda2c824d5d751b70a5636c0266"},{"author":{"_account_id":18002,"name":"John Fulton","email":"fulton@redhat.com","username":"fultonj"},"change_message_id":"15d8ae79276aad99ab7f4ff1601d78a44e57cbc6","unresolved":false,"context_lines":[{"line_number":186,"context_line":"    constraints:"},{"line_number":187,"context_line":"    - range: { min: 1, max: 5 }"},{"line_number":188,"context_line":"  CephAnsibleEnvironmentVariables:"},{"line_number":189,"context_line":"    default: []"},{"line_number":190,"context_line":"    description: Mapping of Ansible environment variables to override defaults."},{"line_number":191,"context_line":"    type: json"},{"line_number":192,"context_line":"  SwiftFetchDirGetTempurl:"}],"source_content_type":"text/x-yaml","patch_set":12,"id":"3fa7e38b_2fb5f7f0","line":189,"in_reply_to":"3fa7e38b_16a2af98","updated":"2020-02-03 19:39:28.000000000","message":"changed back to {} as per ps13","commit_id":"d2436d8665703eda2c824d5d751b70a5636c0266"},{"author":{"_account_id":18002,"name":"John Fulton","email":"fulton@redhat.com","username":"fultonj"},"change_message_id":"fff49a25005337f6e9200c8088a364a26124d581","unresolved":false,"context_lines":[{"line_number":186,"context_line":"    constraints:"},{"line_number":187,"context_line":"    - range: { min: 1, max: 5 }"},{"line_number":188,"context_line":"  CephAnsibleEnvironmentVariables:"},{"line_number":189,"context_line":"    default: []"},{"line_number":190,"context_line":"    description: Mapping of Ansible environment variables to override defaults."},{"line_number":191,"context_line":"    type: json"},{"line_number":192,"context_line":"  SwiftFetchDirGetTempurl:"}],"source_content_type":"text/x-yaml","patch_set":12,"id":"3fa7e38b_16a2af98","line":189,"in_reply_to":"3fa7e38b_b0ebada3","updated":"2020-01-31 21:59:23.000000000","message":"THT passes it to ansible like this:\n\nhttps://github.com/openstack/tripleo-heat-templates/blob/master/deployment/ceph-ansible/ceph-base.yaml#L592-L595\n\nAs per our IRC conversation the yaql needs a default of {}. \n\nMolecule runs tripleo-ansible with \n\nhttps://review.opendev.org/#/c/702143/20/tripleo_ansible/roles/tripleo_ceph_common/defaults/main.yml\n\nMaybe we should change the yaql","commit_id":"d2436d8665703eda2c824d5d751b70a5636c0266"},{"author":{"_account_id":8449,"name":"Marios Andreou","email":"marios.andreou@gmail.com","username":"marios"},"change_message_id":"3001d4b92fcb5458a67a1884e7749c856bee8abb","unresolved":false,"context_lines":[{"line_number":242,"context_line":"  CephExternalMultiConfig:"},{"line_number":243,"context_line":"    type: json"},{"line_number":244,"context_line":"    hidden: true"},{"line_number":245,"context_line":"    description: |"},{"line_number":246,"context_line":"      List of maps describing extra overrides which will be applied when configuring"},{"line_number":247,"context_line":"      extra external Ceph clusters. If this list is non-empty, ceph-ansible will run"},{"line_number":248,"context_line":"      an extra count(list) times using the same parameters as the first run except"}],"source_content_type":"text/x-yaml","patch_set":12,"id":"3fa7e38b_90e8ea7e","line":245,"range":{"start_line":245,"start_character":4,"end_line":245,"end_character":15},"updated":"2020-01-31 07:47:41.000000000","message":"does this need a release note? sounds like it does ;)","commit_id":"d2436d8665703eda2c824d5d751b70a5636c0266"},{"author":{"_account_id":18002,"name":"John Fulton","email":"fulton@redhat.com","username":"fultonj"},"change_message_id":"15d8ae79276aad99ab7f4ff1601d78a44e57cbc6","unresolved":false,"context_lines":[{"line_number":242,"context_line":"  CephExternalMultiConfig:"},{"line_number":243,"context_line":"    type: json"},{"line_number":244,"context_line":"    hidden: true"},{"line_number":245,"context_line":"    description: |"},{"line_number":246,"context_line":"      List of maps describing extra overrides which will be applied when configuring"},{"line_number":247,"context_line":"      extra external Ceph clusters. If this list is non-empty, ceph-ansible will run"},{"line_number":248,"context_line":"      an extra count(list) times using the same parameters as the first run except"}],"source_content_type":"text/x-yaml","patch_set":12,"id":"3fa7e38b_cfdc6345","line":245,"range":{"start_line":245,"start_character":4,"end_line":245,"end_character":15},"in_reply_to":"3fa7e38b_90e8ea7e","updated":"2020-02-03 19:39:28.000000000","message":"Yes, it does. Thanks for the reminding me! I\u0027ve added one.","commit_id":"d2436d8665703eda2c824d5d751b70a5636c0266"},{"author":{"_account_id":6796,"name":"Giulio Fidente","email":"gfidente@redhat.com","username":"gfidente"},"change_message_id":"02ad191348386c69a603765eb878853ddf640d5c","unresolved":false,"context_lines":[{"line_number":619,"context_line":"                swift_get_url: {get_param: SwiftFetchDirGetTempurl}"},{"line_number":620,"context_line":"                swift_put_url: {get_param: SwiftFetchDirPutTempurl}"},{"line_number":621,"context_line":"                ceph_ansible_environment_variables:"},{"line_number":622,"context_line":"                  - yaql:"},{"line_number":623,"context_line":"                      data: {get_param: CephAnsibleEnvironmentVariables}"},{"line_number":624,"context_line":"                      expression: $.data.items().select($[0] + \u0027\u003d\u0027 + $[1]).join(\u0027 \u0027)"},{"line_number":625,"context_line":"                ceph_ansible_skip_tags: {get_param:  CephAnsibleSkipTags}"}],"source_content_type":"text/x-yaml","patch_set":12,"id":"3fa7e38b_b1716516","line":622,"updated":"2020-01-31 15:30:01.000000000","message":"we can turn the result into a list instead of putting the string into a list item so we don\u0027t have to do [0]|join(\u0027 \u0027) in https://review.opendev.org/#/c/702143","commit_id":"d2436d8665703eda2c824d5d751b70a5636c0266"},{"author":{"_account_id":18002,"name":"John Fulton","email":"fulton@redhat.com","username":"fultonj"},"change_message_id":"15d8ae79276aad99ab7f4ff1601d78a44e57cbc6","unresolved":false,"context_lines":[{"line_number":619,"context_line":"                swift_get_url: {get_param: SwiftFetchDirGetTempurl}"},{"line_number":620,"context_line":"                swift_put_url: {get_param: SwiftFetchDirPutTempurl}"},{"line_number":621,"context_line":"                ceph_ansible_environment_variables:"},{"line_number":622,"context_line":"                  - yaql:"},{"line_number":623,"context_line":"                      data: {get_param: CephAnsibleEnvironmentVariables}"},{"line_number":624,"context_line":"                      expression: $.data.items().select($[0] + \u0027\u003d\u0027 + $[1]).join(\u0027 \u0027)"},{"line_number":625,"context_line":"                ceph_ansible_skip_tags: {get_param:  CephAnsibleSkipTags}"}],"source_content_type":"text/x-yaml","patch_set":12,"id":"3fa7e38b_6fe9afe2","line":622,"in_reply_to":"3fa7e38b_b1716516","updated":"2020-02-03 19:39:28.000000000","message":"Thanks for your help on this. PS13 updates yaql with what you provided to turn this into a list instead of a concatenated string in a list with only one item.","commit_id":"d2436d8665703eda2c824d5d751b70a5636c0266"},{"author":{"_account_id":18002,"name":"John Fulton","email":"fulton@redhat.com","username":"fultonj"},"change_message_id":"9c03e9f8944ea62617c7eb41198d8a39d33032f5","unresolved":false,"context_lines":[{"line_number":627,"context_line":"                swift_get_url: {get_param: SwiftFetchDirGetTempurl}"},{"line_number":628,"context_line":"                swift_put_url: {get_param: SwiftFetchDirPutTempurl}"},{"line_number":629,"context_line":"                ceph_ansible_environment_variables:"},{"line_number":630,"context_line":"                  yaql:"},{"line_number":631,"context_line":"                    data: {get_param: CephAnsibleEnvironmentVariables}"},{"line_number":632,"context_line":"                    expression: $.data.items().select($[0] + \u0027\u003d\u0027 + $[1])"},{"line_number":633,"context_line":"                ceph_ansible_skip_tags: {get_param:  CephAnsibleSkipTags}"},{"line_number":634,"context_line":"            - name: get ssh private key"},{"line_number":635,"context_line":"              include_role:"}],"source_content_type":"text/x-yaml","patch_set":13,"id":"3fa7e38b_ba7e00be","line":632,"range":{"start_line":630,"start_character":0,"end_line":632,"end_character":72},"updated":"2020-02-04 00:23:59.000000000","message":"This change produced better results as we used to get something like this:\n\n      ceph_ansible_environment_variables:\n      - ANSIBLE_SSH_RETRIES\u003d4 DEFAULT_FORKS\u003d3\n\nNow we get this:\n\n      ceph_ansible_environment_variables:\n      - ANSIBLE_FILTER_PLUGINS\u003d/usr/share/ceph-ansible/plugins/filter/\n      - ANSIBLE_HOST_KEY_CHECKING\u003dFalse\n      - ANSIBLE_PRIVATE_KEY_FILE\u003d/home/stack/.ssh/id_rsa\n      - ANSIBLE_LOG_PATH\u003d/home/stack/ceph-install-workflow.log\n\nUnless we\u0027re looking to change the yaql more, it\u0027s input (in THT) is a dict and its output (for ansible\u0027s fact setting) is a list. The fix is that it\u0027s a sane list.\n\nhttps://review.opendev.org/#/c/702143/20/tripleo_ansible/roles/tripleo_ceph_common/defaults/main.yml","commit_id":"39a7b6754bcf508f286a2fe916b1c5eb94be7a06"},{"author":{"_account_id":25402,"name":"Francesco Pantano","email":"fpantano@redhat.com","username":"fmount"},"change_message_id":"c263fab97520cb8360d6f02e4b523f821734aec3","unresolved":false,"context_lines":[{"line_number":627,"context_line":"                swift_get_url: {get_param: SwiftFetchDirGetTempurl}"},{"line_number":628,"context_line":"                swift_put_url: {get_param: SwiftFetchDirPutTempurl}"},{"line_number":629,"context_line":"                ceph_ansible_environment_variables:"},{"line_number":630,"context_line":"                  yaql:"},{"line_number":631,"context_line":"                    data: {get_param: CephAnsibleEnvironmentVariables}"},{"line_number":632,"context_line":"                    expression: $.data.items().select($[0] + \u0027\u003d\u0027 + $[1])"},{"line_number":633,"context_line":"                ceph_ansible_skip_tags: {get_param:  CephAnsibleSkipTags}"},{"line_number":634,"context_line":"            - name: get ssh private key"},{"line_number":635,"context_line":"              include_role:"}],"source_content_type":"text/x-yaml","patch_set":13,"id":"3fa7e38b_3216b0f5","line":632,"range":{"start_line":630,"start_character":0,"end_line":632,"end_character":72},"in_reply_to":"3fa7e38b_ba7e00be","updated":"2020-02-04 12:16:04.000000000","message":"++","commit_id":"39a7b6754bcf508f286a2fe916b1c5eb94be7a06"}],"releasenotes/notes/ceph_external_multi_config-80d707e5bf75e886.yaml":[{"author":{"_account_id":8449,"name":"Marios Andreou","email":"marios.andreou@gmail.com","username":"marios"},"change_message_id":"cf78f5e0f34934854e11707810490aef2d3ae15a","unresolved":false,"context_lines":[{"line_number":2,"context_line":"features:"},{"line_number":3,"context_line":"  - |"},{"line_number":4,"context_line":"    The new parameter CephExternalMultiConfig may be used to configure OpenStack"},{"line_number":5,"context_line":"    to use multiple external Ceph clusters."}],"source_content_type":"text/x-yaml","patch_set":13,"id":"3fa7e38b_ab7eb4bd","line":5,"updated":"2020-02-04 06:51:24.000000000","message":"thanks for that, if you get an update please consider adding a pointer to environments/scenarios001-standalone.yaml for the example of what it might look like.","commit_id":"39a7b6754bcf508f286a2fe916b1c5eb94be7a06"}]}
