)]}'
{"/PATCHSET_LEVEL":[{"author":{"_account_id":34270,"name":"Nikolay Fedorov","email":"jingvar@gmail.com","username":"jingvar"},"change_message_id":"a8ad6393a472d1d735a976898f75d137accad68d","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":5,"id":"b0e64beb_7fb416d5","updated":"2021-11-17 14:34:36.000000000","message":"I\u0027m not sure that storing themes files in kayobe-config is right place. (a lot of files )\nProbably usage curl or git clone would be better, to deliver the files to target node /etc/kolla/horizon ...","commit_id":"330d540a11d786d1cb8382d5656bb29591b6b7e8"},{"author":{"_account_id":34076,"name":"Jakub Darmach","email":"jakub@stackhpc.com","username":"darmach"},"change_message_id":"fd72464a85c6b1a7fa9ee89e8b544447abc77e7c","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":6,"id":"c534c2b6_2294965b","updated":"2022-01-13 14:06:09.000000000","message":"Uploaded new patchset :)","commit_id":"d7c0a70c996cba9d7c0fecc6764f783498ca8e76"},{"author":{"_account_id":34076,"name":"Jakub Darmach","email":"jakub@stackhpc.com","username":"darmach"},"change_message_id":"89bcdfad3917bf02297cfe29313765269a46f6ac","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":8,"id":"6948e9b6_bdccd00a","updated":"2022-01-27 15:23:17.000000000","message":"Opened a change in kolla - to correct +x not being set on directories when setting +r.\nAdded as dependency for this one.","commit_id":"16142698b5c4cfcb50a4b1267872d50c5bc9dd2e"},{"author":{"_account_id":27339,"name":"Michal Arbet","email":"michal.arbet@ultimum.io","username":"michalarbet"},"change_message_id":"1a6bae324726a1e36bc771b0a23de38224d3838d","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":10,"id":"9adf4375_f5b671bd","updated":"2022-01-28 10:40:52.000000000","message":"I just wondering, is kolla-ansible right place to inject themes into horizon container ?\nBecause I already using customized horizon dockerfile from kolla, and just providing local_settings by kolla-ansible (which is already implemented in k-a).\n\nActually themes are not \"configuration files\" which is normally in /etc/kolla ...they are regular files :/ .","commit_id":"0443f312166e404cb1331015f299d8ad00e174f8"},{"author":{"_account_id":14826,"name":"Mark Goddard","email":"markgoddard86@gmail.com","username":"mgoddard"},"change_message_id":"0ddca0f830fb1e500349b9b233924b45f0660857","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":10,"id":"d2cef0ff_dd9e6e3c","in_reply_to":"9adf4375_f5b671bd","updated":"2022-01-28 11:07:38.000000000","message":"Customising horizon is often the only reason people might need to build images locally, and this simple patch allows you to avoid that. Sometimes the theme may be complicated, but often it\u0027s just a change of logo","commit_id":"0443f312166e404cb1331015f299d8ad00e174f8"},{"author":{"_account_id":34076,"name":"Jakub Darmach","email":"jakub@stackhpc.com","username":"darmach"},"change_message_id":"bc72b91a118347ebdaf62acf74ee94aa653803d6","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":11,"id":"d4e7cae2_86e93e6b","updated":"2022-01-31 14:18:03.000000000","message":"Escaped name and label in local_settings template","commit_id":"a4e303d60ad22c6e2c7845bbac657e3be303171f"},{"author":{"_account_id":22629,"name":"Michal Nasiadka","email":"mnasiadka@gmail.com","username":"mnasiadka"},"change_message_id":"937bd785cb33c455262138d184ce1cd36af1256d","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":12,"id":"da70a0f0_a5aeebad","updated":"2022-01-31 16:42:25.000000000","message":"Let\u0027s merge it if tested and working ;-)","commit_id":"7f2d203354725fdf8ebcb3ecc14fa4937043aba5"},{"author":{"_account_id":27339,"name":"Michal Arbet","email":"michal.arbet@ultimum.io","username":"michalarbet"},"change_message_id":"8e4ed208bfa7f95f41e08d4f11a396120045ed80","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":12,"id":"83f3af1f_40980aa6","updated":"2022-01-31 15:27:13.000000000","message":"Tested and working","commit_id":"7f2d203354725fdf8ebcb3ecc14fa4937043aba5"}],"ansible/roles/horizon/defaults/main.yml":[{"author":{"_account_id":27339,"name":"Michal Arbet","email":"michal.arbet@ultimum.io","username":"michalarbet"},"change_message_id":"f03e3c19aef150be797b8d04fe2995947a3c6417","unresolved":true,"context_lines":[{"line_number":80,"context_line":"horizon_keystone_domain_choices:"},{"line_number":81,"context_line":"  Default: default"},{"line_number":82,"context_line":""},{"line_number":83,"context_line":"horizon_custom_themes: []"},{"line_number":84,"context_line":""},{"line_number":85,"context_line":"####################"},{"line_number":86,"context_line":"# Database"}],"source_content_type":"text/x-yaml","patch_set":4,"id":"c6a34b0c_4b512d7b","line":83,"updated":"2021-06-28 17:24:19.000000000","message":"Does it need to be defined manually by user ?\nIt should be easy to use stat, register folder names and then render values to local_settings.\n\nFrom other perspective of view, usage horizon_custom_themes variable would simplify process of enable/disable themes in /etc/kolla/config/horizon/themes.","commit_id":"ad5441499662c4b5d9f9932f3c6a92ba73c4052b"},{"author":{"_account_id":22629,"name":"Michal Nasiadka","email":"mnasiadka@gmail.com","username":"mnasiadka"},"change_message_id":"2aa8618e6bd97971a8532b4c1a00782c84a11eec","unresolved":true,"context_lines":[{"line_number":80,"context_line":"horizon_keystone_domain_choices:"},{"line_number":81,"context_line":"  Default: default"},{"line_number":82,"context_line":""},{"line_number":83,"context_line":"horizon_custom_themes: []"},{"line_number":84,"context_line":""},{"line_number":85,"context_line":"####################"},{"line_number":86,"context_line":"# Database"}],"source_content_type":"text/x-yaml","patch_set":4,"id":"3f7a346c_6d58ebb0","line":83,"in_reply_to":"c6a34b0c_4b512d7b","updated":"2021-09-15 12:39:47.000000000","message":"I\u0027m not a fan of that approach - but if more reviewers will request that direction - I can update ;-)","commit_id":"ad5441499662c4b5d9f9932f3c6a92ba73c4052b"}],"ansible/roles/horizon/tasks/config.yml":[{"author":{"_account_id":14826,"name":"Mark Goddard","email":"markgoddard86@gmail.com","username":"mgoddard"},"change_message_id":"57a2643418d7c23923ba4217ac7c8f2ac50698dc","unresolved":true,"context_lines":[{"line_number":139,"context_line":"  copy:"},{"line_number":140,"context_line":"    src: \"{{ node_custom_config }}/horizon/themes/{{ item.name }}\""},{"line_number":141,"context_line":"    dest: \"{{ node_config_directory }}/horizon/themes/\""},{"line_number":142,"context_line":"    mode: 0644"},{"line_number":143,"context_line":"  when:"},{"line_number":144,"context_line":"    - horizon.enabled | bool"},{"line_number":145,"context_line":"    - inventory_hostname in groups[horizon.group]"}],"source_content_type":"text/x-yaml","patch_set":6,"id":"a0b1a0be_d5b574f5","line":142,"range":{"start_line":142,"start_character":10,"end_line":142,"end_character":14},"updated":"2022-01-14 16:53:47.000000000","message":"Usually we use 0660","commit_id":"d7c0a70c996cba9d7c0fecc6764f783498ca8e76"},{"author":{"_account_id":34076,"name":"Jakub Darmach","email":"jakub@stackhpc.com","username":"darmach"},"change_message_id":"5c34c7b4eab7d0064e7d8e2a0a5d6699b90f85bb","unresolved":false,"context_lines":[{"line_number":139,"context_line":"  copy:"},{"line_number":140,"context_line":"    src: \"{{ node_custom_config }}/horizon/themes/{{ item.name }}\""},{"line_number":141,"context_line":"    dest: \"{{ node_config_directory }}/horizon/themes/\""},{"line_number":142,"context_line":"    mode: 0644"},{"line_number":143,"context_line":"  when:"},{"line_number":144,"context_line":"    - horizon.enabled | bool"},{"line_number":145,"context_line":"    - inventory_hostname in groups[horizon.group]"}],"source_content_type":"text/x-yaml","patch_set":6,"id":"52a39378_124d0789","line":142,"range":{"start_line":142,"start_character":10,"end_line":142,"end_character":14},"in_reply_to":"a0b1a0be_d5b574f5","updated":"2022-01-18 10:52:50.000000000","message":"Ack","commit_id":"d7c0a70c996cba9d7c0fecc6764f783498ca8e76"}],"ansible/roles/horizon/templates/horizon.json.j2":[{"author":{"_account_id":14826,"name":"Mark Goddard","email":"markgoddard86@gmail.com","username":"mgoddard"},"change_message_id":"57a2643418d7c23923ba4217ac7c8f2ac50698dc","unresolved":true,"context_lines":[{"line_number":45,"context_line":"        {"},{"line_number":46,"context_line":"            \"source\": \"{{ container_config_directory}}/themes\","},{"line_number":47,"context_line":"            \"dest\": \"/etc/openstack-dashboard/themes\","},{"line_number":48,"context_line":"            \"preserve_properties\": \"True\""},{"line_number":49,"context_line":"        }{% endif %}"},{"line_number":50,"context_line":"    ]"},{"line_number":51,"context_line":"}"}],"source_content_type":"text/x-jinja2","patch_set":6,"id":"4ffc3502_8ec17774","line":48,"updated":"2022-01-14 16:53:47.000000000","message":"Why? This will end up with the host owner \u0026 group","commit_id":"d7c0a70c996cba9d7c0fecc6764f783498ca8e76"},{"author":{"_account_id":34076,"name":"Jakub Darmach","email":"jakub@stackhpc.com","username":"darmach"},"change_message_id":"5c34c7b4eab7d0064e7d8e2a0a5d6699b90f85bb","unresolved":true,"context_lines":[{"line_number":45,"context_line":"        {"},{"line_number":46,"context_line":"            \"source\": \"{{ container_config_directory}}/themes\","},{"line_number":47,"context_line":"            \"dest\": \"/etc/openstack-dashboard/themes\","},{"line_number":48,"context_line":"            \"preserve_properties\": \"True\""},{"line_number":49,"context_line":"        }{% endif %}"},{"line_number":50,"context_line":"    ]"},{"line_number":51,"context_line":"}"}],"source_content_type":"text/x-jinja2","patch_set":6,"id":"6b988ccb_5b8ff15e","line":48,"in_reply_to":"4ffc3502_8ec17774","updated":"2022-01-18 10:52:50.000000000","message":"Both those changes are related to the issue I had copying the files into the container - they were copied with directories missing x, which resulted in horizon not starting up due to not being able to traverse themes directory.\n\nWhen the configuration files are being copied over to controllers with  `horizon/tasks/config.yml` they are created as root:root with permissions set in the task.\n\nLater on these files are copied into the container by `https://github.com/openstack/kolla/blob/master/docker/base/set_configs.py` as defined in `horizon/templates/horizon.json.j2` which is templated into config.json.\nAnd the problem is that set_config.py while copies files correctly, it uses same permissions when copying directories - as defined in `config.json` it created all theme subdirectories without +x which caused them to be not traversable and app failed to start logging permission errors.\n\nBy switching to 644 in `Copying over custom themes` tasks we\u0027re creating files as root:root(644) on controllers, which later on results into them being root:root(644) on container - because of `preserve_properties\u003dtrue`.\n\nAnd since set_config.py does not mess with the permissions at all - it leaves +x on directories (which was present on controller located files).\n\nIt surely isn\u0027t ideal, maybe I can deal with it better?","commit_id":"d7c0a70c996cba9d7c0fecc6764f783498ca8e76"},{"author":{"_account_id":34076,"name":"Jakub Darmach","email":"jakub@stackhpc.com","username":"darmach"},"change_message_id":"89bcdfad3917bf02297cfe29313765269a46f6ac","unresolved":false,"context_lines":[{"line_number":45,"context_line":"        {"},{"line_number":46,"context_line":"            \"source\": \"{{ container_config_directory}}/themes\","},{"line_number":47,"context_line":"            \"dest\": \"/etc/openstack-dashboard/themes\","},{"line_number":48,"context_line":"            \"preserve_properties\": \"True\""},{"line_number":49,"context_line":"        }{% endif %}"},{"line_number":50,"context_line":"    ]"},{"line_number":51,"context_line":"}"}],"source_content_type":"text/x-jinja2","patch_set":6,"id":"7aa46ca6_aba409b6","line":48,"in_reply_to":"62f8e669_31ec3b86","updated":"2022-01-27 15:23:17.000000000","message":"Corrected missing execute on directories in set_configs.py in kolla (added as dependency for this change)","commit_id":"d7c0a70c996cba9d7c0fecc6764f783498ca8e76"},{"author":{"_account_id":22629,"name":"Michal Nasiadka","email":"mnasiadka@gmail.com","username":"mnasiadka"},"change_message_id":"90f0d69db5ad15f693dc9249b3cd8cb35fd8018f","unresolved":true,"context_lines":[{"line_number":45,"context_line":"        {"},{"line_number":46,"context_line":"            \"source\": \"{{ container_config_directory}}/themes\","},{"line_number":47,"context_line":"            \"dest\": \"/etc/openstack-dashboard/themes\","},{"line_number":48,"context_line":"            \"preserve_properties\": \"True\""},{"line_number":49,"context_line":"        }{% endif %}"},{"line_number":50,"context_line":"    ]"},{"line_number":51,"context_line":"}"}],"source_content_type":"text/x-jinja2","patch_set":6,"id":"62f8e669_31ec3b86","line":48,"in_reply_to":"6b988ccb_5b8ff15e","updated":"2022-01-20 19:49:33.000000000","message":"Maybe we need a Kolla change to treat /etc/openstack-dashboard/themes correctly? (e.g. set proper permissions for directories) Or a change to kolla_set_configs for dir_perm when recurse: true.","commit_id":"d7c0a70c996cba9d7c0fecc6764f783498ca8e76"}],"ansible/roles/horizon/templates/local_settings.j2":[{"author":{"_account_id":30491,"name":"Radosław Piliszek","display_name":"Radek","email":"radek@piliszek.it","username":"yoctozepto","status":"self-employed techologist, collaborating mostly with 7bulls.com"},"change_message_id":"ca558e812bd339ded1000266a95b5e1da4abb549","unresolved":true,"context_lines":[{"line_number":517,"context_line":"     (\u0027default\u0027, \u0027Default\u0027, \u0027themes/default\u0027),"},{"line_number":518,"context_line":"     (\u0027material\u0027, \u0027Material\u0027, \u0027themes/material\u0027),"},{"line_number":519,"context_line":"{% for theme in horizon_custom_themes %}"},{"line_number":520,"context_line":"     (\u0027{{ theme.name }}\u0027, \u0027{{ theme.label }}\u0027, \u0027/etc/openstack-dashboard/themes/{{ theme.name }}\u0027),"},{"line_number":521,"context_line":"{% endfor %}"},{"line_number":522,"context_line":"]"},{"line_number":523,"context_line":"{% endif %}"}],"source_content_type":"text/x-jinja2","patch_set":4,"id":"d3953684_58c11805","line":520,"updated":"2021-09-20 18:06:47.000000000","message":"let\u0027s escape \u0027 in these strings; they could easily be like \"Michal\u0027s favourite\" and break 😊","commit_id":"ad5441499662c4b5d9f9932f3c6a92ba73c4052b"},{"author":{"_account_id":34076,"name":"Jakub Darmach","email":"jakub@stackhpc.com","username":"darmach"},"change_message_id":"89bcdfad3917bf02297cfe29313765269a46f6ac","unresolved":false,"context_lines":[{"line_number":517,"context_line":"     (\u0027default\u0027, \u0027Default\u0027, \u0027themes/default\u0027),"},{"line_number":518,"context_line":"     (\u0027material\u0027, \u0027Material\u0027, \u0027themes/material\u0027),"},{"line_number":519,"context_line":"{% for theme in horizon_custom_themes %}"},{"line_number":520,"context_line":"     (\u0027{{ theme.name }}\u0027, \u0027{{ theme.label }}\u0027, \u0027/etc/openstack-dashboard/themes/{{ theme.name }}\u0027),"},{"line_number":521,"context_line":"{% endfor %}"},{"line_number":522,"context_line":"]"},{"line_number":523,"context_line":"{% endif %}"}],"source_content_type":"text/x-jinja2","patch_set":4,"id":"838b64c5_a8242123","line":520,"in_reply_to":"4cafa303_68797c92","updated":"2022-01-27 15:23:17.000000000","message":"Nope, they doesn\u0027t seem like working then.","commit_id":"ad5441499662c4b5d9f9932f3c6a92ba73c4052b"},{"author":{"_account_id":22629,"name":"Michal Nasiadka","email":"mnasiadka@gmail.com","username":"mnasiadka"},"change_message_id":"5ec90bab94458d1b156fab5528209a8bd0c860e3","unresolved":true,"context_lines":[{"line_number":517,"context_line":"     (\u0027default\u0027, \u0027Default\u0027, \u0027themes/default\u0027),"},{"line_number":518,"context_line":"     (\u0027material\u0027, \u0027Material\u0027, \u0027themes/material\u0027),"},{"line_number":519,"context_line":"{% for theme in horizon_custom_themes %}"},{"line_number":520,"context_line":"     (\u0027{{ theme.name }}\u0027, \u0027{{ theme.label }}\u0027, \u0027/etc/openstack-dashboard/themes/{{ theme.name }}\u0027),"},{"line_number":521,"context_line":"{% endfor %}"},{"line_number":522,"context_line":"]"},{"line_number":523,"context_line":"{% endif %}"}],"source_content_type":"text/x-jinja2","patch_set":4,"id":"4cafa303_68797c92","line":520,"in_reply_to":"d3953684_58c11805","updated":"2021-10-01 08:11:11.000000000","message":"Are you sure that it will work then? ;-)","commit_id":"ad5441499662c4b5d9f9932f3c6a92ba73c4052b"},{"author":{"_account_id":14826,"name":"Mark Goddard","email":"markgoddard86@gmail.com","username":"mgoddard"},"change_message_id":"3cb163dd590ecfc161ac4b9ee3a7ee7026ef3490","unresolved":true,"context_lines":[{"line_number":514,"context_line":"#]"},{"line_number":515,"context_line":"{% if horizon_custom_themes | length \u003e 0 %}"},{"line_number":516,"context_line":"AVAILABLE_THEMES \u003d ["},{"line_number":517,"context_line":"     (\u0027default\u0027, \u0027Default\u0027, \u0027themes/default\u0027),"},{"line_number":518,"context_line":"     (\u0027material\u0027, \u0027Material\u0027, \u0027themes/material\u0027),"},{"line_number":519,"context_line":"{% for theme in horizon_custom_themes %}"},{"line_number":520,"context_line":"     (\\\u0027{{ theme.name }}\\\u0027, \\\u0027{{ theme.label }}\\\u0027, \\\u0027/etc/openstack-dashboard/themes/{{ theme.name }}\\\u0027),"},{"line_number":521,"context_line":"{% endfor %}"}],"source_content_type":"text/x-jinja2","patch_set":5,"id":"643b22fc_50df794f","line":518,"range":{"start_line":517,"start_character":0,"end_line":518,"end_character":49},"updated":"2021-10-13 09:10:06.000000000","message":"We might not always want these, but I suppose it would be possible to override this variable in custom_local_settings.","commit_id":"330d540a11d786d1cb8382d5656bb29591b6b7e8"},{"author":{"_account_id":34076,"name":"Jakub Darmach","email":"jakub@stackhpc.com","username":"darmach"},"change_message_id":"fd72464a85c6b1a7fa9ee89e8b544447abc77e7c","unresolved":false,"context_lines":[{"line_number":514,"context_line":"#]"},{"line_number":515,"context_line":"{% if horizon_custom_themes | length \u003e 0 %}"},{"line_number":516,"context_line":"AVAILABLE_THEMES \u003d ["},{"line_number":517,"context_line":"     (\u0027default\u0027, \u0027Default\u0027, \u0027themes/default\u0027),"},{"line_number":518,"context_line":"     (\u0027material\u0027, \u0027Material\u0027, \u0027themes/material\u0027),"},{"line_number":519,"context_line":"{% for theme in horizon_custom_themes %}"},{"line_number":520,"context_line":"     (\\\u0027{{ theme.name }}\\\u0027, \\\u0027{{ theme.label }}\\\u0027, \\\u0027/etc/openstack-dashboard/themes/{{ theme.name }}\\\u0027),"},{"line_number":521,"context_line":"{% endfor %}"}],"source_content_type":"text/x-jinja2","patch_set":5,"id":"2d5f3ae0_9ff3000a","line":518,"range":{"start_line":517,"start_character":0,"end_line":518,"end_character":49},"in_reply_to":"643b22fc_50df794f","updated":"2022-01-13 14:06:09.000000000","message":"Ack","commit_id":"330d540a11d786d1cb8382d5656bb29591b6b7e8"},{"author":{"_account_id":14826,"name":"Mark Goddard","email":"markgoddard86@gmail.com","username":"mgoddard"},"change_message_id":"3cb163dd590ecfc161ac4b9ee3a7ee7026ef3490","unresolved":true,"context_lines":[{"line_number":520,"context_line":"     (\\\u0027{{ theme.name }}\\\u0027, \\\u0027{{ theme.label }}\\\u0027, \\\u0027/etc/openstack-dashboard/themes/{{ theme.name }}\\\u0027),"},{"line_number":521,"context_line":"{% endfor %}"},{"line_number":522,"context_line":"]"},{"line_number":523,"context_line":"{% endif %}"},{"line_number":524,"context_line":""},{"line_number":525,"context_line":"LOGGING \u003d {"},{"line_number":526,"context_line":"    \u0027version\u0027: 1,"}],"source_content_type":"text/x-jinja2","patch_set":5,"id":"1cb32e47_e4c07430","line":523,"updated":"2021-10-13 09:10:06.000000000","message":"Should we allow a default theme to be set via DEFAULT_THEME? Either via another variable or an optional default field in horizon_custom_themes?","commit_id":"330d540a11d786d1cb8382d5656bb29591b6b7e8"},{"author":{"_account_id":34076,"name":"Jakub Darmach","email":"jakub@stackhpc.com","username":"darmach"},"change_message_id":"fd72464a85c6b1a7fa9ee89e8b544447abc77e7c","unresolved":false,"context_lines":[{"line_number":520,"context_line":"     (\\\u0027{{ theme.name }}\\\u0027, \\\u0027{{ theme.label }}\\\u0027, \\\u0027/etc/openstack-dashboard/themes/{{ theme.name }}\\\u0027),"},{"line_number":521,"context_line":"{% endfor %}"},{"line_number":522,"context_line":"]"},{"line_number":523,"context_line":"{% endif %}"},{"line_number":524,"context_line":""},{"line_number":525,"context_line":"LOGGING \u003d {"},{"line_number":526,"context_line":"    \u0027version\u0027: 1,"}],"source_content_type":"text/x-jinja2","patch_set":5,"id":"9d872a59_e75a4cc5","line":523,"in_reply_to":"1cb32e47_e4c07430","updated":"2022-01-13 14:06:09.000000000","message":"Done","commit_id":"330d540a11d786d1cb8382d5656bb29591b6b7e8"},{"author":{"_account_id":27339,"name":"Michal Arbet","email":"michal.arbet@ultimum.io","username":"michalarbet"},"change_message_id":"116ae43eb3c9391bab01f04233f8dbe8f119044f","unresolved":true,"context_lines":[{"line_number":208,"context_line":""},{"line_number":209,"context_line":"OPENSTACK_KEYSTONE_URL \u003d \"{{ horizon_keystone_url }}\""},{"line_number":210,"context_line":"OPENSTACK_KEYSTONE_DEFAULT_ROLE \u003d \"{{ keystone_default_user_role }}\""},{"line_number":211,"context_line":""},{"line_number":212,"context_line":"{% if enable_keystone_federation | bool %}"},{"line_number":213,"context_line":"# Enables keystone web single-sign-on if set to True."},{"line_number":214,"context_line":"WEBSSO_ENABLED \u003d True"},{"line_number":215,"context_line":""}],"source_content_type":"text/x-jinja2","patch_set":10,"id":"f12eaf03_2c9014de","line":212,"range":{"start_line":211,"start_character":0,"end_line":212,"end_character":42},"updated":"2022-01-31 14:27:11.000000000","message":"Why is this changed ? Maybe rebase on top of master ?","commit_id":"0443f312166e404cb1331015f299d8ad00e174f8"},{"author":{"_account_id":34076,"name":"Jakub Darmach","email":"jakub@stackhpc.com","username":"darmach"},"change_message_id":"acf463aa082fc030a3807acb7b39e02d0da7bfd7","unresolved":false,"context_lines":[{"line_number":208,"context_line":""},{"line_number":209,"context_line":"OPENSTACK_KEYSTONE_URL \u003d \"{{ horizon_keystone_url }}\""},{"line_number":210,"context_line":"OPENSTACK_KEYSTONE_DEFAULT_ROLE \u003d \"{{ keystone_default_user_role }}\""},{"line_number":211,"context_line":""},{"line_number":212,"context_line":"{% if enable_keystone_federation | bool %}"},{"line_number":213,"context_line":"# Enables keystone web single-sign-on if set to True."},{"line_number":214,"context_line":"WEBSSO_ENABLED \u003d True"},{"line_number":215,"context_line":""}],"source_content_type":"text/x-jinja2","patch_set":10,"id":"934f6dd7_d96a3c1c","line":212,"range":{"start_line":211,"start_character":0,"end_line":212,"end_character":42},"in_reply_to":"f12eaf03_2c9014de","updated":"2022-01-31 14:38:54.000000000","message":"Yes, rebased and it\u0027s all fine now.","commit_id":"0443f312166e404cb1331015f299d8ad00e174f8"},{"author":{"_account_id":27339,"name":"Michal Arbet","email":"michal.arbet@ultimum.io","username":"michalarbet"},"change_message_id":"116ae43eb3c9391bab01f04233f8dbe8f119044f","unresolved":true,"context_lines":[{"line_number":211,"context_line":""},{"line_number":212,"context_line":"{% if enable_keystone_federation | bool %}"},{"line_number":213,"context_line":"# Enables keystone web single-sign-on if set to True."},{"line_number":214,"context_line":"WEBSSO_ENABLED \u003d True"},{"line_number":215,"context_line":""},{"line_number":216,"context_line":"# Determines which authentication choice to show as default."},{"line_number":217,"context_line":"#WEBSSO_INITIAL_CHOICE \u003d \"credentials\""}],"source_content_type":"text/x-jinja2","patch_set":10,"id":"ea2bab83_4d86c26e","line":214,"range":{"start_line":214,"start_character":0,"end_line":214,"end_character":21},"updated":"2022-01-31 14:27:11.000000000","message":"Ditto","commit_id":"0443f312166e404cb1331015f299d8ad00e174f8"},{"author":{"_account_id":34076,"name":"Jakub Darmach","email":"jakub@stackhpc.com","username":"darmach"},"change_message_id":"acf463aa082fc030a3807acb7b39e02d0da7bfd7","unresolved":false,"context_lines":[{"line_number":211,"context_line":""},{"line_number":212,"context_line":"{% if enable_keystone_federation | bool %}"},{"line_number":213,"context_line":"# Enables keystone web single-sign-on if set to True."},{"line_number":214,"context_line":"WEBSSO_ENABLED \u003d True"},{"line_number":215,"context_line":""},{"line_number":216,"context_line":"# Determines which authentication choice to show as default."},{"line_number":217,"context_line":"#WEBSSO_INITIAL_CHOICE \u003d \"credentials\""}],"source_content_type":"text/x-jinja2","patch_set":10,"id":"d30a1b70_7c99b9d4","line":214,"range":{"start_line":214,"start_character":0,"end_line":214,"end_character":21},"in_reply_to":"ea2bab83_4d86c26e","updated":"2022-01-31 14:38:54.000000000","message":"Done","commit_id":"0443f312166e404cb1331015f299d8ad00e174f8"},{"author":{"_account_id":27339,"name":"Michal Arbet","email":"michal.arbet@ultimum.io","username":"michalarbet"},"change_message_id":"116ae43eb3c9391bab01f04233f8dbe8f119044f","unresolved":true,"context_lines":[{"line_number":224,"context_line":"# Do not remove the mandatory credentials mechanism."},{"line_number":225,"context_line":"# Note: The last two tuples are sample mapping keys to a identity provider"},{"line_number":226,"context_line":"# and federation protocol combination (WEBSSO_IDP_MAPPING)."},{"line_number":227,"context_line":"WEBSSO_KEYSTONE_URL \u003d \"{{ keystone_public_url }}/v3\""},{"line_number":228,"context_line":"WEBSSO_CHOICES \u003d ("},{"line_number":229,"context_line":"    (\"credentials\", _(\"Keystone Credentials\")),"},{"line_number":230,"context_line":"    {% for idp in keystone_identity_providers %}"},{"line_number":231,"context_line":"    (\"{{ idp.name }}_{{ idp.protocol }}\", \"{{ idp.public_name }}\"),"},{"line_number":232,"context_line":"    {% endfor %}"},{"line_number":233,"context_line":")"},{"line_number":234,"context_line":""},{"line_number":235,"context_line":"# A dictionary of specific identity provider and federation protocol"},{"line_number":236,"context_line":"# combinations. From the selected authentication mechanism, the value"}],"source_content_type":"text/x-jinja2","patch_set":10,"id":"431080c7_e1e30cff","line":233,"range":{"start_line":227,"start_character":0,"end_line":233,"end_character":1},"updated":"2022-01-31 14:27:11.000000000","message":"ditto","commit_id":"0443f312166e404cb1331015f299d8ad00e174f8"},{"author":{"_account_id":34076,"name":"Jakub Darmach","email":"jakub@stackhpc.com","username":"darmach"},"change_message_id":"acf463aa082fc030a3807acb7b39e02d0da7bfd7","unresolved":false,"context_lines":[{"line_number":224,"context_line":"# Do not remove the mandatory credentials mechanism."},{"line_number":225,"context_line":"# Note: The last two tuples are sample mapping keys to a identity provider"},{"line_number":226,"context_line":"# and federation protocol combination (WEBSSO_IDP_MAPPING)."},{"line_number":227,"context_line":"WEBSSO_KEYSTONE_URL \u003d \"{{ keystone_public_url }}/v3\""},{"line_number":228,"context_line":"WEBSSO_CHOICES \u003d ("},{"line_number":229,"context_line":"    (\"credentials\", _(\"Keystone Credentials\")),"},{"line_number":230,"context_line":"    {% for idp in keystone_identity_providers %}"},{"line_number":231,"context_line":"    (\"{{ idp.name }}_{{ idp.protocol }}\", \"{{ idp.public_name }}\"),"},{"line_number":232,"context_line":"    {% endfor %}"},{"line_number":233,"context_line":")"},{"line_number":234,"context_line":""},{"line_number":235,"context_line":"# A dictionary of specific identity provider and federation protocol"},{"line_number":236,"context_line":"# combinations. From the selected authentication mechanism, the value"}],"source_content_type":"text/x-jinja2","patch_set":10,"id":"88747cf8_8ed056d6","line":233,"range":{"start_line":227,"start_character":0,"end_line":233,"end_character":1},"in_reply_to":"431080c7_e1e30cff","updated":"2022-01-31 14:38:54.000000000","message":"Done","commit_id":"0443f312166e404cb1331015f299d8ad00e174f8"},{"author":{"_account_id":27339,"name":"Michal Arbet","email":"michal.arbet@ultimum.io","username":"michalarbet"},"change_message_id":"116ae43eb3c9391bab01f04233f8dbe8f119044f","unresolved":true,"context_lines":[{"line_number":239,"context_line":"# specific WebSSO endpoint in keystone, otherwise it will use the value"},{"line_number":240,"context_line":"# as the protocol_id when redirecting to the WebSSO by protocol endpoint."},{"line_number":241,"context_line":"# NOTE: The value is expected to be a tuple formatted as: (\u003cidp_id\u003e, \u003cprotocol_id\u003e)."},{"line_number":242,"context_line":"WEBSSO_IDP_MAPPING \u003d {"},{"line_number":243,"context_line":"{% for idp in keystone_identity_providers %}"},{"line_number":244,"context_line":"    \"{{ idp.name }}_{{ idp.protocol }}\": (\"{{ idp.name }}\", \"{{ idp.protocol }}\"),"},{"line_number":245,"context_line":"{% endfor %}"},{"line_number":246,"context_line":"}"},{"line_number":247,"context_line":"{% endif %}"},{"line_number":248,"context_line":""},{"line_number":249,"context_line":"# Disable SSL certificate checks (useful for self-signed certificates):"},{"line_number":250,"context_line":"#OPENSTACK_SSL_NO_VERIFY \u003d True"}],"source_content_type":"text/x-jinja2","patch_set":10,"id":"00b681ee_13a6a1c2","line":247,"range":{"start_line":242,"start_character":0,"end_line":247,"end_character":11},"updated":"2022-01-31 14:27:11.000000000","message":"ditto","commit_id":"0443f312166e404cb1331015f299d8ad00e174f8"},{"author":{"_account_id":34076,"name":"Jakub Darmach","email":"jakub@stackhpc.com","username":"darmach"},"change_message_id":"acf463aa082fc030a3807acb7b39e02d0da7bfd7","unresolved":false,"context_lines":[{"line_number":239,"context_line":"# specific WebSSO endpoint in keystone, otherwise it will use the value"},{"line_number":240,"context_line":"# as the protocol_id when redirecting to the WebSSO by protocol endpoint."},{"line_number":241,"context_line":"# NOTE: The value is expected to be a tuple formatted as: (\u003cidp_id\u003e, \u003cprotocol_id\u003e)."},{"line_number":242,"context_line":"WEBSSO_IDP_MAPPING \u003d {"},{"line_number":243,"context_line":"{% for idp in keystone_identity_providers %}"},{"line_number":244,"context_line":"    \"{{ idp.name }}_{{ idp.protocol }}\": (\"{{ idp.name }}\", \"{{ idp.protocol }}\"),"},{"line_number":245,"context_line":"{% endfor %}"},{"line_number":246,"context_line":"}"},{"line_number":247,"context_line":"{% endif %}"},{"line_number":248,"context_line":""},{"line_number":249,"context_line":"# Disable SSL certificate checks (useful for self-signed certificates):"},{"line_number":250,"context_line":"#OPENSTACK_SSL_NO_VERIFY \u003d True"}],"source_content_type":"text/x-jinja2","patch_set":10,"id":"6f050882_2a0471da","line":247,"range":{"start_line":242,"start_character":0,"end_line":247,"end_character":11},"in_reply_to":"00b681ee_13a6a1c2","updated":"2022-01-31 14:38:54.000000000","message":"Done","commit_id":"0443f312166e404cb1331015f299d8ad00e174f8"},{"author":{"_account_id":30491,"name":"Radosław Piliszek","display_name":"Radek","email":"radek@piliszek.it","username":"yoctozepto","status":"self-employed techologist, collaborating mostly with 7bulls.com"},"change_message_id":"3700edb30681ee4366ca162e920f9462bcb6e1c8","unresolved":true,"context_lines":[{"line_number":520,"context_line":"     (\u0027default\u0027, \u0027Default\u0027, \u0027themes/default\u0027),"},{"line_number":521,"context_line":"     (\u0027material\u0027, \u0027Material\u0027, \u0027themes/material\u0027),"},{"line_number":522,"context_line":"{% for theme in horizon_custom_themes %}"},{"line_number":523,"context_line":"     (\u0027{{ theme.name }}\u0027, \u0027{{ theme.label }}\u0027, \u0027/etc/openstack-dashboard/themes/{{ theme.name }}\u0027),"},{"line_number":524,"context_line":"{% endfor %}"},{"line_number":525,"context_line":"]"},{"line_number":526,"context_line":"{% endif %}"}],"source_content_type":"text/x-jinja2","patch_set":10,"id":"1bac077b_0848b6ee","line":523,"range":{"start_line":523,"start_character":27,"end_line":523,"end_character":44},"updated":"2022-01-31 11:34:06.000000000","message":"\u0027 should be escaped in here to avoid syntax errors","commit_id":"0443f312166e404cb1331015f299d8ad00e174f8"},{"author":{"_account_id":34076,"name":"Jakub Darmach","email":"jakub@stackhpc.com","username":"darmach"},"change_message_id":"bc72b91a118347ebdaf62acf74ee94aa653803d6","unresolved":false,"context_lines":[{"line_number":520,"context_line":"     (\u0027default\u0027, \u0027Default\u0027, \u0027themes/default\u0027),"},{"line_number":521,"context_line":"     (\u0027material\u0027, \u0027Material\u0027, \u0027themes/material\u0027),"},{"line_number":522,"context_line":"{% for theme in horizon_custom_themes %}"},{"line_number":523,"context_line":"     (\u0027{{ theme.name }}\u0027, \u0027{{ theme.label }}\u0027, \u0027/etc/openstack-dashboard/themes/{{ theme.name }}\u0027),"},{"line_number":524,"context_line":"{% endfor %}"},{"line_number":525,"context_line":"]"},{"line_number":526,"context_line":"{% endif %}"}],"source_content_type":"text/x-jinja2","patch_set":10,"id":"139f8706_189d20cd","line":523,"range":{"start_line":523,"start_character":27,"end_line":523,"end_character":44},"in_reply_to":"1bac077b_0848b6ee","updated":"2022-01-31 14:18:03.000000000","message":"Done","commit_id":"0443f312166e404cb1331015f299d8ad00e174f8"}],"doc/source/reference/shared-services/horizon-guide.rst":[{"author":{"_account_id":30491,"name":"Radosław Piliszek","display_name":"Radek","email":"radek@piliszek.it","username":"yoctozepto","status":"self-employed techologist, collaborating mostly with 7bulls.com"},"change_message_id":"ca558e812bd339ded1000266a95b5e1da4abb549","unresolved":true,"context_lines":[{"line_number":35,"context_line":""},{"line_number":36,"context_line":".. code-block:: yaml"},{"line_number":37,"context_line":""},{"line_number":38,"context_line":"   horizon_custom_themes"},{"line_number":39,"context_line":"     - name: my_custom_theme"},{"line_number":40,"context_line":"       label: CustomTheme"},{"line_number":41,"context_line":""}],"source_content_type":"text/x-rst","patch_set":4,"id":"027dcfed_941deda4","line":38,"range":{"start_line":38,"start_character":23,"end_line":38,"end_character":24},"updated":"2021-09-20 18:06:47.000000000","message":"missing colon","commit_id":"ad5441499662c4b5d9f9932f3c6a92ba73c4052b"},{"author":{"_account_id":34076,"name":"Jakub Darmach","email":"jakub@stackhpc.com","username":"darmach"},"change_message_id":"fd72464a85c6b1a7fa9ee89e8b544447abc77e7c","unresolved":false,"context_lines":[{"line_number":35,"context_line":""},{"line_number":36,"context_line":".. code-block:: yaml"},{"line_number":37,"context_line":""},{"line_number":38,"context_line":"   horizon_custom_themes"},{"line_number":39,"context_line":"     - name: my_custom_theme"},{"line_number":40,"context_line":"       label: CustomTheme"},{"line_number":41,"context_line":""}],"source_content_type":"text/x-rst","patch_set":4,"id":"8c630682_efb00676","line":38,"range":{"start_line":38,"start_character":23,"end_line":38,"end_character":24},"in_reply_to":"027dcfed_941deda4","updated":"2022-01-13 14:06:09.000000000","message":"Done","commit_id":"ad5441499662c4b5d9f9932f3c6a92ba73c4052b"},{"author":{"_account_id":14826,"name":"Mark Goddard","email":"markgoddard86@gmail.com","username":"mgoddard"},"change_message_id":"3cb163dd590ecfc161ac4b9ee3a7ee7026ef3490","unresolved":true,"context_lines":[{"line_number":37,"context_line":""},{"line_number":38,"context_line":"   horizon_custom_themes:"},{"line_number":39,"context_line":"     - name: my_custom_theme"},{"line_number":40,"context_line":"       label: CustomTheme"},{"line_number":41,"context_line":""}],"source_content_type":"text/x-rst","patch_set":5,"id":"8f150380_111bdbc9","line":40,"updated":"2021-10-13 09:10:06.000000000","message":"Themes need to be copied to /etc/kolla/config/horizon/themes","commit_id":"330d540a11d786d1cb8382d5656bb29591b6b7e8"},{"author":{"_account_id":34076,"name":"Jakub Darmach","email":"jakub@stackhpc.com","username":"darmach"},"change_message_id":"fd72464a85c6b1a7fa9ee89e8b544447abc77e7c","unresolved":false,"context_lines":[{"line_number":37,"context_line":""},{"line_number":38,"context_line":"   horizon_custom_themes:"},{"line_number":39,"context_line":"     - name: my_custom_theme"},{"line_number":40,"context_line":"       label: CustomTheme"},{"line_number":41,"context_line":""}],"source_content_type":"text/x-rst","patch_set":5,"id":"395ab436_0735720d","line":40,"in_reply_to":"8f150380_111bdbc9","updated":"2022-01-13 14:06:09.000000000","message":"Done","commit_id":"330d540a11d786d1cb8382d5656bb29591b6b7e8"},{"author":{"_account_id":14826,"name":"Mark Goddard","email":"markgoddard86@gmail.com","username":"mgoddard"},"change_message_id":"3cb163dd590ecfc161ac4b9ee3a7ee7026ef3490","unresolved":true,"context_lines":[{"line_number":38,"context_line":"   horizon_custom_themes:"},{"line_number":39,"context_line":"     - name: my_custom_theme"},{"line_number":40,"context_line":"       label: CustomTheme"},{"line_number":41,"context_line":""}],"source_content_type":"text/x-rst","patch_set":5,"id":"fa4e804c_9d813bbb","line":41,"updated":"2021-10-13 09:10:06.000000000","message":"We should say that this updates AVAILABLE_THEMES.","commit_id":"330d540a11d786d1cb8382d5656bb29591b6b7e8"},{"author":{"_account_id":34076,"name":"Jakub Darmach","email":"jakub@stackhpc.com","username":"darmach"},"change_message_id":"fd72464a85c6b1a7fa9ee89e8b544447abc77e7c","unresolved":false,"context_lines":[{"line_number":38,"context_line":"   horizon_custom_themes:"},{"line_number":39,"context_line":"     - name: my_custom_theme"},{"line_number":40,"context_line":"       label: CustomTheme"},{"line_number":41,"context_line":""}],"source_content_type":"text/x-rst","patch_set":5,"id":"455d0c80_e6f4dd17","line":41,"in_reply_to":"fa4e804c_9d813bbb","updated":"2022-01-13 14:06:09.000000000","message":"Done","commit_id":"330d540a11d786d1cb8382d5656bb29591b6b7e8"}]}
