)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":12898,"name":"Tony Breeds","email":"tony@bakeyournoodle.com","username":"tonyb"},"change_message_id":"c1182d77058a7d0128f1c7490d22fb745c9f7d4e","unresolved":true,"context_lines":[{"line_number":4,"context_line":"Commit:     Tony Breeds \u003ctony@bakeyournoodle.com\u003e"},{"line_number":5,"context_line":"CommitDate: 2024-07-01 10:11:30 +1000"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"DNM: Initial dump or mediawiki role and config"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Change-Id: I23658cd900865d419899a1cccca8c8faad148f95"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":33,"id":"54754ce6_7afa0097","line":7,"range":{"start_line":7,"start_character":0,"end_line":7,"end_character":46},"updated":"2024-08-21 02:21:51.000000000","message":"Obviously this in inadequate, and will be fixed in the next patchset","commit_id":"f50cd49aa75aa14c71782b452c71f9ea0d0949e7"}],"/PATCHSET_LEVEL":[{"author":{"_account_id":12898,"name":"Tony Breeds","email":"tony@bakeyournoodle.com","username":"tonyb"},"change_message_id":"5ff71b02f13b8fe9af2db3c231fe825986240e4d","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":12,"id":"7bd48cfc_e87ed985","updated":"2024-06-10 20:38:15.000000000","message":"recheck: To trigger autohold","commit_id":"77919599b447350bf89e0d9ad02422e841085e6b"},{"author":{"_account_id":12898,"name":"Tony Breeds","email":"tony@bakeyournoodle.com","username":"tonyb"},"change_message_id":"a4b81b0b1188bf20a57a6130a950fec8df98b76b","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":20,"id":"8a1e767b_e8e52fb6","updated":"2024-06-13 16:37:51.000000000","message":"recheck: To trigger autohold","commit_id":"12a4b60e5a59d76c1db81ea731492e549eb4dc1a"},{"author":{"_account_id":12898,"name":"Tony Breeds","email":"tony@bakeyournoodle.com","username":"tonyb"},"change_message_id":"e3ce204f9486360db4aa1b5b87402a68c8d2f255","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":22,"id":"a564376d_4b6ff69b","updated":"2024-06-18 02:34:10.000000000","message":"recheck: To trigger autohold","commit_id":"2544a3ba6adea7e5aaa93a832c2fd6d4671b7d8f"},{"author":{"_account_id":12898,"name":"Tony Breeds","email":"tony@bakeyournoodle.com","username":"tonyb"},"change_message_id":"f0980960b20b09ebed6c702d38f78c6cbee5e4be","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":26,"id":"2e584095_10e6703e","updated":"2024-06-20 03:25:22.000000000","message":"recheck: To trigger autohold","commit_id":"c7b542b785564f46d441ad313d89780a1bb1ff24"}],"inventory/service/group_vars/mediawiki.yaml":[{"author":{"_account_id":12898,"name":"Tony Breeds","email":"tony@bakeyournoodle.com","username":"tonyb"},"change_message_id":"4117919b20a194987cfd90c8c25721fc5cbf525f","unresolved":true,"context_lines":[{"line_number":6,"context_line":"  - 80"},{"line_number":7,"context_line":"  - 443"},{"line_number":8,"context_line":"letsencrypt_certs:"},{"line_number":9,"context_line":"  meetpad-opendev-org-main:"},{"line_number":10,"context_line":"    - \u0027{{ inventory_hostname }}\u0027"},{"line_number":11,"context_line":"    - wiki.opendev.org"}],"source_content_type":"text/x-yaml","patch_set":2,"id":"3cc0a574_c5e224d1","line":9,"updated":"2024-06-05 15:37:27.000000000","message":"#Oppps You can tell where I copyied this from ;P\n\nAlso I need to setup/verify the LE handler is setup for this new host","commit_id":"473d8f740a8d4dc6712b856550ee6d83e6015ff2"},{"author":{"_account_id":12898,"name":"Tony Breeds","email":"tony@bakeyournoodle.com","username":"tonyb"},"change_message_id":"c1182d77058a7d0128f1c7490d22fb745c9f7d4e","unresolved":false,"context_lines":[{"line_number":6,"context_line":"  - 80"},{"line_number":7,"context_line":"  - 443"},{"line_number":8,"context_line":"letsencrypt_certs:"},{"line_number":9,"context_line":"  meetpad-opendev-org-main:"},{"line_number":10,"context_line":"    - \u0027{{ inventory_hostname }}\u0027"},{"line_number":11,"context_line":"    - wiki.opendev.org"}],"source_content_type":"text/x-yaml","patch_set":2,"id":"d46e710a_0bcbc039","line":9,"in_reply_to":"3cc0a574_c5e224d1","updated":"2024-08-21 02:21:51.000000000","message":"Done","commit_id":"473d8f740a8d4dc6712b856550ee6d83e6015ff2"},{"author":{"_account_id":4146,"name":"Clark Boylan","email":"cboylan@sapwetik.org","username":"cboylan"},"change_message_id":"f636a5319df03f758b2d703b71f6c18027913ef9","unresolved":true,"context_lines":[{"line_number":8,"context_line":"letsencrypt_certs:"},{"line_number":9,"context_line":"  meetpad-opendev-org-main:"},{"line_number":10,"context_line":"    - \u0027{{ inventory_hostname }}\u0027"},{"line_number":11,"context_line":"    - wiki.opendev.org"}],"source_content_type":"text/x-yaml","patch_set":2,"id":"0756491a_33f06a54","line":11,"updated":"2024-06-04 22:47:02.000000000","message":"In the announcement etherpad it seems to say we\u0027re redirecting www.openstack.org to www.opendev.org. Elsewhere it seemed like we wanted to redirect the old name to a static site instead. If we do the redirect from openstack.org to opendev.org then we\u0027ll need this list to include wiki.opendev.org.","commit_id":"473d8f740a8d4dc6712b856550ee6d83e6015ff2"},{"author":{"_account_id":12898,"name":"Tony Breeds","email":"tony@bakeyournoodle.com","username":"tonyb"},"change_message_id":"4117919b20a194987cfd90c8c25721fc5cbf525f","unresolved":true,"context_lines":[{"line_number":8,"context_line":"letsencrypt_certs:"},{"line_number":9,"context_line":"  meetpad-opendev-org-main:"},{"line_number":10,"context_line":"    - \u0027{{ inventory_hostname }}\u0027"},{"line_number":11,"context_line":"    - wiki.opendev.org"}],"source_content_type":"text/x-yaml","patch_set":2,"id":"a41a7715_ffd5eca3","line":11,"in_reply_to":"0756491a_33f06a54","updated":"2024-06-05 15:37:27.000000000","message":"My expectation/plan is to make wiki.openstack.org a CNAME for static.openstack.org.\nOn static.openstack.org we\u0027ll have a vhost that redirects wiki.openstack.org/* to wiki.opendev.org/*   I think this means that by the time any client is talking to the server it will only be via {wiki,wiki01}.opendev.org","commit_id":"473d8f740a8d4dc6712b856550ee6d83e6015ff2"},{"author":{"_account_id":4146,"name":"Clark Boylan","email":"cboylan@sapwetik.org","username":"cboylan"},"change_message_id":"b5382cf77b3fde761399853b816cc832ddb64891","unresolved":true,"context_lines":[{"line_number":8,"context_line":"letsencrypt_certs:"},{"line_number":9,"context_line":"  meetpad-opendev-org-main:"},{"line_number":10,"context_line":"    - \u0027{{ inventory_hostname }}\u0027"},{"line_number":11,"context_line":"    - wiki.opendev.org"}],"source_content_type":"text/x-yaml","patch_set":2,"id":"840c341c_b92516d0","line":11,"in_reply_to":"4eb145c5_d86b887c","updated":"2024-08-21 21:35:10.000000000","message":"We need to list wiki.openstack.org in here as well with that plan because a browser needs to validate https cert details for wiki.openstack.org before it can receive the redirect to wiki.opendev.org. Basically both names need to be in here.","commit_id":"473d8f740a8d4dc6712b856550ee6d83e6015ff2"},{"author":{"_account_id":12898,"name":"Tony Breeds","email":"tony@bakeyournoodle.com","username":"tonyb"},"change_message_id":"0cce7666f77bef6e6bef8907c49a667d04f81b74","unresolved":true,"context_lines":[{"line_number":8,"context_line":"letsencrypt_certs:"},{"line_number":9,"context_line":"  meetpad-opendev-org-main:"},{"line_number":10,"context_line":"    - \u0027{{ inventory_hostname }}\u0027"},{"line_number":11,"context_line":"    - wiki.opendev.org"}],"source_content_type":"text/x-yaml","patch_set":2,"id":"a0e92b92_15afac94","line":11,"in_reply_to":"840c341c_b92516d0","updated":"2024-08-22 17:25:46.000000000","message":"Acknowledged","commit_id":"473d8f740a8d4dc6712b856550ee6d83e6015ff2"},{"author":{"_account_id":12898,"name":"Tony Breeds","email":"tony@bakeyournoodle.com","username":"tonyb"},"change_message_id":"099e9483e3a5e6f986a739fd5584b292c4846145","unresolved":false,"context_lines":[{"line_number":8,"context_line":"letsencrypt_certs:"},{"line_number":9,"context_line":"  meetpad-opendev-org-main:"},{"line_number":10,"context_line":"    - \u0027{{ inventory_hostname }}\u0027"},{"line_number":11,"context_line":"    - wiki.opendev.org"}],"source_content_type":"text/x-yaml","patch_set":2,"id":"0dd3ad10_ef796e0c","line":11,"in_reply_to":"a0e92b92_15afac94","updated":"2025-10-13 23:53:33.000000000","message":"Done","commit_id":"473d8f740a8d4dc6712b856550ee6d83e6015ff2"},{"author":{"_account_id":12898,"name":"Tony Breeds","email":"tony@bakeyournoodle.com","username":"tonyb"},"change_message_id":"c1182d77058a7d0128f1c7490d22fb745c9f7d4e","unresolved":true,"context_lines":[{"line_number":8,"context_line":"letsencrypt_certs:"},{"line_number":9,"context_line":"  meetpad-opendev-org-main:"},{"line_number":10,"context_line":"    - \u0027{{ inventory_hostname }}\u0027"},{"line_number":11,"context_line":"    - wiki.opendev.org"}],"source_content_type":"text/x-yaml","patch_set":2,"id":"4eb145c5_d86b887c","line":11,"in_reply_to":"a41a7715_ffd5eca3","updated":"2024-08-21 02:21:51.000000000","message":"Is this resolved by that plan above?","commit_id":"473d8f740a8d4dc6712b856550ee6d83e6015ff2"}],"inventory/service/groups.yaml":[{"author":{"_account_id":4146,"name":"Clark Boylan","email":"cboylan@sapwetik.org","username":"cboylan"},"change_message_id":"b5382cf77b3fde761399853b816cc832ddb64891","unresolved":true,"context_lines":[{"line_number":21,"context_line":"    - static[0-9]*.opendev.org"},{"line_number":22,"context_line":"  bastion:"},{"line_number":23,"context_line":"    - bridge*.opendev.org"},{"line_number":24,"context_line":"  borg-backup:"},{"line_number":25,"context_line":"    - etherpad[0-9]*.opendev.org"},{"line_number":26,"context_line":"    - gitea09.opendev.org"},{"line_number":27,"context_line":"    - review02.opendev.org"}],"source_content_type":"text/x-yaml","patch_set":33,"id":"09f9ea0c_df79a6f9","line":24,"updated":"2024-08-21 21:35:10.000000000","message":"We will want this new server to be in the borg backup group as well. But that can occur once we\u0027re happy with the setup and move to production.","commit_id":"f50cd49aa75aa14c71782b452c71f9ea0d0949e7"},{"author":{"_account_id":12898,"name":"Tony Breeds","email":"tony@bakeyournoodle.com","username":"tonyb"},"change_message_id":"0cce7666f77bef6e6bef8907c49a667d04f81b74","unresolved":true,"context_lines":[{"line_number":21,"context_line":"    - static[0-9]*.opendev.org"},{"line_number":22,"context_line":"  bastion:"},{"line_number":23,"context_line":"    - bridge*.opendev.org"},{"line_number":24,"context_line":"  borg-backup:"},{"line_number":25,"context_line":"    - etherpad[0-9]*.opendev.org"},{"line_number":26,"context_line":"    - gitea09.opendev.org"},{"line_number":27,"context_line":"    - review02.opendev.org"}],"source_content_type":"text/x-yaml","patch_set":33,"id":"d5728a21_3901a5ca","line":24,"in_reply_to":"09f9ea0c_df79a6f9","updated":"2024-08-22 17:25:46.000000000","message":"Acknowledged","commit_id":"f50cd49aa75aa14c71782b452c71f9ea0d0949e7"},{"author":{"_account_id":12898,"name":"Tony Breeds","email":"tony@bakeyournoodle.com","username":"tonyb"},"change_message_id":"099e9483e3a5e6f986a739fd5584b292c4846145","unresolved":false,"context_lines":[{"line_number":21,"context_line":"    - static[0-9]*.opendev.org"},{"line_number":22,"context_line":"  bastion:"},{"line_number":23,"context_line":"    - bridge*.opendev.org"},{"line_number":24,"context_line":"  borg-backup:"},{"line_number":25,"context_line":"    - etherpad[0-9]*.opendev.org"},{"line_number":26,"context_line":"    - gitea09.opendev.org"},{"line_number":27,"context_line":"    - review02.opendev.org"}],"source_content_type":"text/x-yaml","patch_set":33,"id":"89c71f79_bf809e02","line":24,"in_reply_to":"d5728a21_3901a5ca","updated":"2025-10-13 23:53:33.000000000","message":"Done","commit_id":"f50cd49aa75aa14c71782b452c71f9ea0d0949e7"}],"playbooks/roles/mediawiki/files/favicon.ico":[{"author":{"_account_id":12898,"name":"Tony Breeds","email":"tony@bakeyournoodle.com","username":"tonyb"},"change_message_id":"c1182d77058a7d0128f1c7490d22fb745c9f7d4e","unresolved":true,"context_lines":[],"source_content_type":"","patch_set":33,"id":"a9a00cc3_64b3e7c3","updated":"2024-08-21 02:21:51.000000000","message":"This should be replaced with the favicon.ico from system-config/assets/\n\nTo do that I\u0027m thinking I\u0027ll do something similar to https://opendev.org/opendev/system-config/src/branch/master/docker/gitea/Dockerfile#L118 to ensure that the assets are in our base container image rather than copied into place.  That will take a small amount of fiddling","commit_id":"f50cd49aa75aa14c71782b452c71f9ea0d0949e7"},{"author":{"_account_id":12898,"name":"Tony Breeds","email":"tony@bakeyournoodle.com","username":"tonyb"},"change_message_id":"099e9483e3a5e6f986a739fd5584b292c4846145","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":33,"id":"f12836fb_439d0f86","in_reply_to":"a9a00cc3_64b3e7c3","updated":"2025-10-13 23:53:33.000000000","message":"Actually as the icon etc are served from the Host Apache, rather than the Container Apache that approach won\u0027t work.  I\u0027ll switch to using the files in assets directly.","commit_id":"f50cd49aa75aa14c71782b452c71f9ea0d0949e7"}],"playbooks/roles/mediawiki/files/robots.txt":[{"author":{"_account_id":4146,"name":"Clark Boylan","email":"cboylan@sapwetik.org","username":"cboylan"},"change_message_id":"b5382cf77b3fde761399853b816cc832ddb64891","unresolved":true,"context_lines":[{"line_number":1,"context_line":"User-agent: *"},{"line_number":2,"context_line":"Disallow: /"}],"source_content_type":"text/plain","patch_set":33,"id":"6b7044e8_c109531f","line":2,"updated":"2024-08-21 21:35:10.000000000","message":"Were we already disallowing indexing? I assume to dissuade spammers? Just want to make sure this is intentional and ideally existing behavior.","commit_id":"f50cd49aa75aa14c71782b452c71f9ea0d0949e7"},{"author":{"_account_id":12898,"name":"Tony Breeds","email":"tony@bakeyournoodle.com","username":"tonyb"},"change_message_id":"099e9483e3a5e6f986a739fd5584b292c4846145","unresolved":false,"context_lines":[{"line_number":1,"context_line":"User-agent: *"},{"line_number":2,"context_line":"Disallow: /"}],"source_content_type":"text/plain","patch_set":33,"id":"9c109a2b_3ad0c5fd","line":2,"in_reply_to":"6b7044e8_c109531f","updated":"2025-10-13 23:53:33.000000000","message":"In the next patchset I\u0027ve made this file match what we serve from wiki.openstack.org.\n\nWhen I started this work we didn\u0027t have a robots.txt on wiki.openstack.org.","commit_id":"f50cd49aa75aa14c71782b452c71f9ea0d0949e7"}],"playbooks/roles/mediawiki/tasks/main.yaml":[{"author":{"_account_id":4146,"name":"Clark Boylan","email":"cboylan@sapwetik.org","username":"cboylan"},"change_message_id":"f636a5319df03f758b2d703b71f6c18027913ef9","unresolved":true,"context_lines":[{"line_number":52,"context_line":""},{"line_number":53,"context_line":"    - name: Set up root mariadb conf file"},{"line_number":54,"context_line":"      template:"},{"line_number":55,"context_line":"        src: root.my.cnf.mariadb_container.j2"},{"line_number":56,"context_line":"        dest: /root/.my.cnf"},{"line_number":57,"context_line":"        mode: 0400"},{"line_number":58,"context_line":"        owner: root"}],"source_content_type":"text/x-yaml","patch_set":2,"id":"64f159da_6544b011","line":55,"updated":"2024-06-04 22:47:02.000000000","message":"Do we need this block? reading the root.my.cnf.mariadb_container.j2 file we seem to be setting defaults for the client which I think the containers already do for us? In particular we\u0027re just telling the client to talk to 127.0.0.1 on port 3306 with username foo and password bar. I would\u0027ve expected this config file to instead impact server settings otherwise we may not need it?","commit_id":"473d8f740a8d4dc6712b856550ee6d83e6015ff2"},{"author":{"_account_id":4146,"name":"Clark Boylan","email":"cboylan@sapwetik.org","username":"cboylan"},"change_message_id":"b5382cf77b3fde761399853b816cc832ddb64891","unresolved":false,"context_lines":[{"line_number":52,"context_line":""},{"line_number":53,"context_line":"    - name: Set up root mariadb conf file"},{"line_number":54,"context_line":"      template:"},{"line_number":55,"context_line":"        src: root.my.cnf.mariadb_container.j2"},{"line_number":56,"context_line":"        dest: /root/.my.cnf"},{"line_number":57,"context_line":"        mode: 0400"},{"line_number":58,"context_line":"        owner: root"}],"source_content_type":"text/x-yaml","patch_set":2,"id":"28a56861_a19149b1","line":55,"in_reply_to":"5a58444b_ca3cd402","updated":"2024-08-21 21:35:10.000000000","message":"Ya I think distinguishing it a bit more between host and conatiner helps. We can still exec mysql client commands in the container in a straightforward manner but it requires remembering a lot more command line foo so I have no objection to keeping this.","commit_id":"473d8f740a8d4dc6712b856550ee6d83e6015ff2"},{"author":{"_account_id":12898,"name":"Tony Breeds","email":"tony@bakeyournoodle.com","username":"tonyb"},"change_message_id":"4117919b20a194987cfd90c8c25721fc5cbf525f","unresolved":true,"context_lines":[{"line_number":52,"context_line":""},{"line_number":53,"context_line":"    - name: Set up root mariadb conf file"},{"line_number":54,"context_line":"      template:"},{"line_number":55,"context_line":"        src: root.my.cnf.mariadb_container.j2"},{"line_number":56,"context_line":"        dest: /root/.my.cnf"},{"line_number":57,"context_line":"        mode: 0400"},{"line_number":58,"context_line":"        owner: root"}],"source_content_type":"text/x-yaml","patch_set":2,"id":"8180ce42_f91b53a5","line":55,"in_reply_to":"64f159da_6544b011","updated":"2024-06-05 15:37:27.000000000","message":"We don\u0027t *need* it.  I created it so that debugging/testing database $stuff on the host (outside of any container) is a little easier.\n\nI figured it was especially helpful while we\u0027re still using RAX-Trove","commit_id":"473d8f740a8d4dc6712b856550ee6d83e6015ff2"},{"author":{"_account_id":12898,"name":"Tony Breeds","email":"tony@bakeyournoodle.com","username":"tonyb"},"change_message_id":"c1182d77058a7d0128f1c7490d22fb745c9f7d4e","unresolved":true,"context_lines":[{"line_number":52,"context_line":""},{"line_number":53,"context_line":"    - name: Set up root mariadb conf file"},{"line_number":54,"context_line":"      template:"},{"line_number":55,"context_line":"        src: root.my.cnf.mariadb_container.j2"},{"line_number":56,"context_line":"        dest: /root/.my.cnf"},{"line_number":57,"context_line":"        mode: 0400"},{"line_number":58,"context_line":"        owner: root"}],"source_content_type":"text/x-yaml","patch_set":2,"id":"5a58444b_ca3cd402","line":55,"in_reply_to":"8180ce42_f91b53a5","updated":"2024-08-21 02:21:51.000000000","message":"Is this question resolved? by the comment above and renaming the file?","commit_id":"473d8f740a8d4dc6712b856550ee6d83e6015ff2"},{"author":{"_account_id":4146,"name":"Clark Boylan","email":"cboylan@sapwetik.org","username":"cboylan"},"change_message_id":"b5382cf77b3fde761399853b816cc832ddb64891","unresolved":true,"context_lines":[{"line_number":14,"context_line":"  user:"},{"line_number":15,"context_line":"    name: \"{{ mediawiki_user }}\""},{"line_number":16,"context_line":"    group: \"{{ mediawiki_group }}\""},{"line_number":17,"context_line":"    uid: \"{{ mediawiki_uid }}\""},{"line_number":18,"context_line":"    home: \"/var/lib/mediawiki\""},{"line_number":19,"context_line":"    create_home: yes"},{"line_number":20,"context_line":"    shell: /bin/bash"}],"source_content_type":"text/x-yaml","patch_set":33,"id":"e663b19e_5ee79516","line":17,"updated":"2024-08-21 21:35:10.000000000","message":"These user/group/uid/gid vars are all set in the server host/group vars. I wonder if we should go ahead and set them in the role defaults. That way we dno\u0027t have to account for them as servers change. Really would only be a thing if we change the values on different servers.","commit_id":"f50cd49aa75aa14c71782b452c71f9ea0d0949e7"},{"author":{"_account_id":12898,"name":"Tony Breeds","email":"tony@bakeyournoodle.com","username":"tonyb"},"change_message_id":"099e9483e3a5e6f986a739fd5584b292c4846145","unresolved":false,"context_lines":[{"line_number":14,"context_line":"  user:"},{"line_number":15,"context_line":"    name: \"{{ mediawiki_user }}\""},{"line_number":16,"context_line":"    group: \"{{ mediawiki_group }}\""},{"line_number":17,"context_line":"    uid: \"{{ mediawiki_uid }}\""},{"line_number":18,"context_line":"    home: \"/var/lib/mediawiki\""},{"line_number":19,"context_line":"    create_home: yes"},{"line_number":20,"context_line":"    shell: /bin/bash"}],"source_content_type":"text/x-yaml","patch_set":33,"id":"17939ece_daf07f2c","line":17,"in_reply_to":"e663b19e_5ee79516","updated":"2025-10-13 23:53:33.000000000","message":"Done","commit_id":"f50cd49aa75aa14c71782b452c71f9ea0d0949e7"},{"author":{"_account_id":12898,"name":"Tony Breeds","email":"tony@bakeyournoodle.com","username":"tonyb"},"change_message_id":"c1182d77058a7d0128f1c7490d22fb745c9f7d4e","unresolved":true,"context_lines":[{"line_number":15,"context_line":"    name: \"{{ mediawiki_user }}\""},{"line_number":16,"context_line":"    group: \"{{ mediawiki_group }}\""},{"line_number":17,"context_line":"    uid: \"{{ mediawiki_uid }}\""},{"line_number":18,"context_line":"    home: \"/var/lib/mediawiki\""},{"line_number":19,"context_line":"    create_home: yes"},{"line_number":20,"context_line":"    shell: /bin/bash"},{"line_number":21,"context_line":"    system: yes"}],"source_content_type":"text/x-yaml","patch_set":33,"id":"262a4ac7_a200bca4","line":18,"range":{"start_line":18,"start_character":0,"end_line":18,"end_character":30},"updated":"2024-08-21 02:21:51.000000000","message":"On the real server we\u0027ll need to mount a (cinder) volume, that\u0027s what we do on the current wiki.openstack.org.  If we do that we can mount that volume as /var/lib/mediawiki, or as /srv/mediawiki.  The latter would mean that filepaths on the host and inside the container are the same which may? making it easier on OpenDev sysadmins.\n\nThoughts?","commit_id":"f50cd49aa75aa14c71782b452c71f9ea0d0949e7"},{"author":{"_account_id":12898,"name":"Tony Breeds","email":"tony@bakeyournoodle.com","username":"tonyb"},"change_message_id":"099e9483e3a5e6f986a739fd5584b292c4846145","unresolved":true,"context_lines":[{"line_number":15,"context_line":"    name: \"{{ mediawiki_user }}\""},{"line_number":16,"context_line":"    group: \"{{ mediawiki_group }}\""},{"line_number":17,"context_line":"    uid: \"{{ mediawiki_uid }}\""},{"line_number":18,"context_line":"    home: \"/var/lib/mediawiki\""},{"line_number":19,"context_line":"    create_home: yes"},{"line_number":20,"context_line":"    shell: /bin/bash"},{"line_number":21,"context_line":"    system: yes"}],"source_content_type":"text/x-yaml","patch_set":33,"id":"30a3d80c_e7df09f8","line":18,"range":{"start_line":18,"start_character":0,"end_line":18,"end_character":30},"in_reply_to":"00aa952e_775bd070","updated":"2025-10-13 23:53:33.000000000","message":"Acknowledged","commit_id":"f50cd49aa75aa14c71782b452c71f9ea0d0949e7"},{"author":{"_account_id":4146,"name":"Clark Boylan","email":"cboylan@sapwetik.org","username":"cboylan"},"change_message_id":"b5382cf77b3fde761399853b816cc832ddb64891","unresolved":true,"context_lines":[{"line_number":15,"context_line":"    name: \"{{ mediawiki_user }}\""},{"line_number":16,"context_line":"    group: \"{{ mediawiki_group }}\""},{"line_number":17,"context_line":"    uid: \"{{ mediawiki_uid }}\""},{"line_number":18,"context_line":"    home: \"/var/lib/mediawiki\""},{"line_number":19,"context_line":"    create_home: yes"},{"line_number":20,"context_line":"    shell: /bin/bash"},{"line_number":21,"context_line":"    system: yes"}],"source_content_type":"text/x-yaml","patch_set":33,"id":"00aa952e_775bd070","line":18,"range":{"start_line":18,"start_character":0,"end_line":18,"end_character":30},"in_reply_to":"262a4ac7_a200bca4","updated":"2024-08-21 21:35:10.000000000","message":"I\u0027m fine with either path. I believe that launch node can take arguments allowing you to say \"attach this existing volume to this path and format it using our lvm + ext4 formatting options\". That way you can have it all preconfigured by the time we add the host to the inventory and this ansible runs.","commit_id":"f50cd49aa75aa14c71782b452c71f9ea0d0949e7"},{"author":{"_account_id":4146,"name":"Clark Boylan","email":"cboylan@sapwetik.org","username":"cboylan"},"change_message_id":"b5382cf77b3fde761399853b816cc832ddb64891","unresolved":true,"context_lines":[{"line_number":117,"context_line":"        recurse: yes"},{"line_number":118,"context_line":""},{"line_number":119,"context_line":"    # This needs to be outside the webroot and writeable to the (container) apache user"},{"line_number":120,"context_line":"    # The easy way to do that is make it sticky and fully open"},{"line_number":121,"context_line":"    - name: Ensure /var/lib/mediawiki/mediawiki/cache has acceptable permissions"},{"line_number":122,"context_line":"      file:"},{"line_number":123,"context_line":"        dest: /var/lib/mediawiki/mediawiki/cache"}],"source_content_type":"text/x-yaml","patch_set":33,"id":"f0772024_3bf0eded","line":120,"updated":"2024-08-21 21:35:10.000000000","message":"Couldn\u0027t we set permissions 0755 and simply chown to the apache user? Is the issue that www-data in the container can have a random or randomish UID?\n\nMy main concern (which may not be a concern) is that any random user could write files into the cache causing them to get served instead of the actual content. The sticky bit prevents us from deleting files that www-data wrote to the cache, but in theory we could pre write cache files as any user and then control their content?","commit_id":"f50cd49aa75aa14c71782b452c71f9ea0d0949e7"},{"author":{"_account_id":12898,"name":"Tony Breeds","email":"tony@bakeyournoodle.com","username":"tonyb"},"change_message_id":"099e9483e3a5e6f986a739fd5584b292c4846145","unresolved":true,"context_lines":[{"line_number":117,"context_line":"        recurse: yes"},{"line_number":118,"context_line":""},{"line_number":119,"context_line":"    # This needs to be outside the webroot and writeable to the (container) apache user"},{"line_number":120,"context_line":"    # The easy way to do that is make it sticky and fully open"},{"line_number":121,"context_line":"    - name: Ensure /var/lib/mediawiki/mediawiki/cache has acceptable permissions"},{"line_number":122,"context_line":"      file:"},{"line_number":123,"context_line":"        dest: /var/lib/mediawiki/mediawiki/cache"}],"source_content_type":"text/x-yaml","patch_set":33,"id":"07252d11_8aee3abf","line":120,"in_reply_to":"f0772024_3bf0eded","updated":"2025-10-13 23:53:33.000000000","message":"If \"random(ish)\" equates to out of our control and could, albeit unlikely, change and we have limited visibility to when it would change.\n\nAs root we can essentially ignore the sticky-bit and remove anything inappropriate, but that does require to notice and act.  At this point we only cache CDB (https://www.mediawiki.org/wiki/CDB) files associated with translation.  but that could change as we get closer to a modern MediaWiki.\n\nHaving said that I can look at tightening the permissions here.","commit_id":"f50cd49aa75aa14c71782b452c71f9ea0d0949e7"},{"author":{"_account_id":4146,"name":"Clark Boylan","email":"cboylan@sapwetik.org","username":"cboylan"},"change_message_id":"b5382cf77b3fde761399853b816cc832ddb64891","unresolved":true,"context_lines":[{"line_number":136,"context_line":"- name: Stop apache service"},{"line_number":137,"context_line":"  service:"},{"line_number":138,"context_line":"    name: apache2"},{"line_number":139,"context_line":"    state: stopped"},{"line_number":140,"context_line":""},{"line_number":141,"context_line":"- name: Apache modules"},{"line_number":142,"context_line":"  apache2_module:"}],"source_content_type":"text/x-yaml","patch_set":33,"id":"228b3742_d385ed53","line":139,"updated":"2024-08-21 21:35:10.000000000","message":"This is going to be a problem for recurring ansible runs. We\u0027ll end up stopping and starting ansible each time through. Instead maybe we can register a handler for when the config files update and in those cases issue a reload or a restart?","commit_id":"f50cd49aa75aa14c71782b452c71f9ea0d0949e7"},{"author":{"_account_id":12898,"name":"Tony Breeds","email":"tony@bakeyournoodle.com","username":"tonyb"},"change_message_id":"099e9483e3a5e6f986a739fd5584b292c4846145","unresolved":true,"context_lines":[{"line_number":136,"context_line":"- name: Stop apache service"},{"line_number":137,"context_line":"  service:"},{"line_number":138,"context_line":"    name: apache2"},{"line_number":139,"context_line":"    state: stopped"},{"line_number":140,"context_line":""},{"line_number":141,"context_line":"- name: Apache modules"},{"line_number":142,"context_line":"  apache2_module:"}],"source_content_type":"text/x-yaml","patch_set":33,"id":"4842133d_215d45de","line":139,"in_reply_to":"228b3742_d385ed53","updated":"2025-10-13 23:53:33.000000000","message":"Acknowledged","commit_id":"f50cd49aa75aa14c71782b452c71f9ea0d0949e7"},{"author":{"_account_id":4146,"name":"Clark Boylan","email":"cboylan@sapwetik.org","username":"cboylan"},"change_message_id":"b5382cf77b3fde761399853b816cc832ddb64891","unresolved":true,"context_lines":[{"line_number":168,"context_line":"- name: Start apache service"},{"line_number":169,"context_line":"  service:"},{"line_number":170,"context_line":"    name: apache2"},{"line_number":171,"context_line":"    state: started"},{"line_number":172,"context_line":""},{"line_number":173,"context_line":"- name: Run docker compose down"},{"line_number":174,"context_line":"  shell:"}],"source_content_type":"text/x-yaml","patch_set":33,"id":"c06ba446_9fd81115","line":171,"updated":"2024-08-21 21:35:10.000000000","message":"See above.","commit_id":"f50cd49aa75aa14c71782b452c71f9ea0d0949e7"},{"author":{"_account_id":12898,"name":"Tony Breeds","email":"tony@bakeyournoodle.com","username":"tonyb"},"change_message_id":"099e9483e3a5e6f986a739fd5584b292c4846145","unresolved":false,"context_lines":[{"line_number":168,"context_line":"- name: Start apache service"},{"line_number":169,"context_line":"  service:"},{"line_number":170,"context_line":"    name: apache2"},{"line_number":171,"context_line":"    state: started"},{"line_number":172,"context_line":""},{"line_number":173,"context_line":"- name: Run docker compose down"},{"line_number":174,"context_line":"  shell:"}],"source_content_type":"text/x-yaml","patch_set":33,"id":"89b0b720_09f6bd34","line":171,"in_reply_to":"c06ba446_9fd81115","updated":"2025-10-13 23:53:33.000000000","message":"Acknowledged","commit_id":"f50cd49aa75aa14c71782b452c71f9ea0d0949e7"},{"author":{"_account_id":4146,"name":"Clark Boylan","email":"cboylan@sapwetik.org","username":"cboylan"},"change_message_id":"b5382cf77b3fde761399853b816cc832ddb64891","unresolved":true,"context_lines":[{"line_number":174,"context_line":"  shell:"},{"line_number":175,"context_line":"    cmd: \"docker compose down\""},{"line_number":176,"context_line":"    chdir: /etc/mediawiki-compose/"},{"line_number":177,"context_line":"  ignore_errors: True"},{"line_number":178,"context_line":""},{"line_number":179,"context_line":"- name: Start MariaDB Container"},{"line_number":180,"context_line":"  shell:"}],"source_content_type":"text/x-yaml","patch_set":33,"id":"569f38ef_417ac5fb","line":177,"updated":"2024-08-21 21:35:10.000000000","message":"This will have a similar issue with recurring ansible runs. We only want to down the containers when we really need to. In the case of docker-compose if we docker-compose pull then docker-compose up -d it will restart necessary containers. I wonder if we can get away with that with docker compose.","commit_id":"f50cd49aa75aa14c71782b452c71f9ea0d0949e7"},{"author":{"_account_id":12898,"name":"Tony Breeds","email":"tony@bakeyournoodle.com","username":"tonyb"},"change_message_id":"099e9483e3a5e6f986a739fd5584b292c4846145","unresolved":true,"context_lines":[{"line_number":174,"context_line":"  shell:"},{"line_number":175,"context_line":"    cmd: \"docker compose down\""},{"line_number":176,"context_line":"    chdir: /etc/mediawiki-compose/"},{"line_number":177,"context_line":"  ignore_errors: True"},{"line_number":178,"context_line":""},{"line_number":179,"context_line":"- name: Start MariaDB Container"},{"line_number":180,"context_line":"  shell:"}],"source_content_type":"text/x-yaml","patch_set":33,"id":"43698fde_34428642","line":177,"in_reply_to":"569f38ef_417ac5fb","updated":"2025-10-13 23:53:33.000000000","message":"Acknowledged","commit_id":"f50cd49aa75aa14c71782b452c71f9ea0d0949e7"},{"author":{"_account_id":4146,"name":"Clark Boylan","email":"cboylan@sapwetik.org","username":"cboylan"},"change_message_id":"b5382cf77b3fde761399853b816cc832ddb64891","unresolved":true,"context_lines":[{"line_number":188,"context_line":"    delay: 5"},{"line_number":189,"context_line":"    timeout: 60"},{"line_number":190,"context_line":""},{"line_number":191,"context_line":"# FIXME!!! We probably don\u0027t want to do this in production handwavy backup+restore"},{"line_number":192,"context_line":"- name: Run MediaWiki\u0027s installer"},{"line_number":193,"context_line":"  shell:"},{"line_number":194,"context_line":"    cmd: \u0027docker compose run shell php ./maintenance/install.php"}],"source_content_type":"text/x-yaml","patch_set":33,"id":"670c907b_c1da2baf","line":191,"updated":"2024-08-21 21:35:10.000000000","message":"Ya related to the above comments we probably need some way to detect when this is necessary and only go through the service stop, db up, install, service up process when necessary. Otherwise everytime we run ansible we\u0027ll go through all of this creating noticeable outages.","commit_id":"f50cd49aa75aa14c71782b452c71f9ea0d0949e7"},{"author":{"_account_id":12898,"name":"Tony Breeds","email":"tony@bakeyournoodle.com","username":"tonyb"},"change_message_id":"099e9483e3a5e6f986a739fd5584b292c4846145","unresolved":true,"context_lines":[{"line_number":188,"context_line":"    delay: 5"},{"line_number":189,"context_line":"    timeout: 60"},{"line_number":190,"context_line":""},{"line_number":191,"context_line":"# FIXME!!! We probably don\u0027t want to do this in production handwavy backup+restore"},{"line_number":192,"context_line":"- name: Run MediaWiki\u0027s installer"},{"line_number":193,"context_line":"  shell:"},{"line_number":194,"context_line":"    cmd: \u0027docker compose run shell php ./maintenance/install.php"}],"source_content_type":"text/x-yaml","patch_set":33,"id":"fe524aad_63980529","line":191,"in_reply_to":"670c907b_c1da2baf","updated":"2025-10-13 23:53:33.000000000","message":"Acknowledged","commit_id":"f50cd49aa75aa14c71782b452c71f9ea0d0949e7"},{"author":{"_account_id":12898,"name":"Tony Breeds","email":"tony@bakeyournoodle.com","username":"tonyb"},"change_message_id":"c1182d77058a7d0128f1c7490d22fb745c9f7d4e","unresolved":true,"context_lines":[{"line_number":228,"context_line":"  shell:"},{"line_number":229,"context_line":"    cmd: docker image prune -f"},{"line_number":230,"context_line":""},{"line_number":231,"context_line":"# FIXME: Create backup configs that work for both local and remote DBServers"},{"line_number":232,"context_line":"# - name: Create backup streaming config dir"},{"line_number":233,"context_line":"#   file:"},{"line_number":234,"context_line":"#     path: /etc/borg-streams"},{"line_number":235,"context_line":"#     state: directory"},{"line_number":236,"context_line":""},{"line_number":237,"context_line":"# - name: Setup container mariadb backup jobs"},{"line_number":238,"context_line":"#   block:"},{"line_number":239,"context_line":"#     - name: Create mariadb streaming file"},{"line_number":240,"context_line":"#       copy:"},{"line_number":241,"context_line":"#         content: \u003e-"},{"line_number":242,"context_line":"#           docker compose -f /etc/mediawiki-compose/docker-compose.yaml exec -T mariadb"},{"line_number":243,"context_line":"#           bash -c \u0027/usr/bin/mysqldump --all-databases --skip-extended-insert --single-transaction -uroot -p\"$MYSQL_ROOT_PASSWORD\"\u0027"},{"line_number":244,"context_line":"#         dest: /etc/borg-streams/mariadb"}],"source_content_type":"text/x-yaml","patch_set":33,"id":"4de1026e_56d949b2","line":244,"range":{"start_line":231,"start_character":0,"end_line":244,"end_character":41},"updated":"2024-08-21 02:21:51.000000000","message":"I need to do something here in terms of creating a backup.  There is more than just the database that need to be backed up.  Advice on the correct way to include the database and file-system objects in one or more borg streams gratefully accepted.","commit_id":"f50cd49aa75aa14c71782b452c71f9ea0d0949e7"},{"author":{"_account_id":4146,"name":"Clark Boylan","email":"cboylan@sapwetik.org","username":"cboylan"},"change_message_id":"b5382cf77b3fde761399853b816cc832ddb64891","unresolved":true,"context_lines":[{"line_number":228,"context_line":"  shell:"},{"line_number":229,"context_line":"    cmd: docker image prune -f"},{"line_number":230,"context_line":""},{"line_number":231,"context_line":"# FIXME: Create backup configs that work for both local and remote DBServers"},{"line_number":232,"context_line":"# - name: Create backup streaming config dir"},{"line_number":233,"context_line":"#   file:"},{"line_number":234,"context_line":"#     path: /etc/borg-streams"},{"line_number":235,"context_line":"#     state: directory"},{"line_number":236,"context_line":""},{"line_number":237,"context_line":"# - name: Setup container mariadb backup jobs"},{"line_number":238,"context_line":"#   block:"},{"line_number":239,"context_line":"#     - name: Create mariadb streaming file"},{"line_number":240,"context_line":"#       copy:"},{"line_number":241,"context_line":"#         content: \u003e-"},{"line_number":242,"context_line":"#           docker compose -f /etc/mediawiki-compose/docker-compose.yaml exec -T mariadb"},{"line_number":243,"context_line":"#           bash -c \u0027/usr/bin/mysqldump --all-databases --skip-extended-insert --single-transaction -uroot -p\"$MYSQL_ROOT_PASSWORD\"\u0027"},{"line_number":244,"context_line":"#         dest: /etc/borg-streams/mariadb"}],"source_content_type":"text/x-yaml","patch_set":33,"id":"6f7145cc_6fc71e33","line":244,"range":{"start_line":231,"start_character":0,"end_line":244,"end_character":41},"in_reply_to":"4de1026e_56d949b2","updated":"2024-08-21 21:35:10.000000000","message":"Adding the host to the borg backups group (as I mentioned in that file earlier in the change) should be sufficient for backing up the filesystem. We have a default set of exclusions that should be pretty generically applicable and we can add extras to the mediawiki groupvars file if necessary.\n\nThen here we add the specific bits for backing up the DB. What you\u0027ve got here looks about right and appears to be similar to how we backup other databases.","commit_id":"f50cd49aa75aa14c71782b452c71f9ea0d0949e7"},{"author":{"_account_id":12898,"name":"Tony Breeds","email":"tony@bakeyournoodle.com","username":"tonyb"},"change_message_id":"099e9483e3a5e6f986a739fd5584b292c4846145","unresolved":true,"context_lines":[{"line_number":228,"context_line":"  shell:"},{"line_number":229,"context_line":"    cmd: docker image prune -f"},{"line_number":230,"context_line":""},{"line_number":231,"context_line":"# FIXME: Create backup configs that work for both local and remote DBServers"},{"line_number":232,"context_line":"# - name: Create backup streaming config dir"},{"line_number":233,"context_line":"#   file:"},{"line_number":234,"context_line":"#     path: /etc/borg-streams"},{"line_number":235,"context_line":"#     state: directory"},{"line_number":236,"context_line":""},{"line_number":237,"context_line":"# - name: Setup container mariadb backup jobs"},{"line_number":238,"context_line":"#   block:"},{"line_number":239,"context_line":"#     - name: Create mariadb streaming file"},{"line_number":240,"context_line":"#       copy:"},{"line_number":241,"context_line":"#         content: \u003e-"},{"line_number":242,"context_line":"#           docker compose -f /etc/mediawiki-compose/docker-compose.yaml exec -T mariadb"},{"line_number":243,"context_line":"#           bash -c \u0027/usr/bin/mysqldump --all-databases --skip-extended-insert --single-transaction -uroot -p\"$MYSQL_ROOT_PASSWORD\"\u0027"},{"line_number":244,"context_line":"#         dest: /etc/borg-streams/mariadb"}],"source_content_type":"text/x-yaml","patch_set":33,"id":"45d1c7ca_419dfed7","line":244,"range":{"start_line":231,"start_character":0,"end_line":244,"end_character":41},"in_reply_to":"6f7145cc_6fc71e33","updated":"2025-10-13 23:53:33.000000000","message":"Acknowledged","commit_id":"f50cd49aa75aa14c71782b452c71f9ea0d0949e7"}],"playbooks/roles/mediawiki/templates/50-wiki.opendev.org.conf.j2":[{"author":{"_account_id":4146,"name":"Clark Boylan","email":"cboylan@sapwetik.org","username":"cboylan"},"change_message_id":"f636a5319df03f758b2d703b71f6c18027913ef9","unresolved":true,"context_lines":[{"line_number":84,"context_line":"  Alias /wiki /var/www/html/index.php"},{"line_number":85,"context_line":"  Alias /sitemap /srv/mediawiki/sitemap"},{"line_number":86,"context_line":"  Alias /favicon.ico \"/srv/mediawiki/assets/favicon.ico\""},{"line_number":87,"context_line":"  Alias /googlef8a274dc6060079f.html \"/srv/mediawiki/assets/googlef8a274dc6060079f.html\""},{"line_number":88,"context_line":""},{"line_number":89,"context_line":"  # Redirect old /Article_Name urls"},{"line_number":90,"context_line":"  RewriteEngine on"}],"source_content_type":"text/x-jinja2","patch_set":2,"id":"b822c127_d8efd5b6","line":87,"updated":"2024-06-04 22:47:02.000000000","message":"Nit its a bit confusing about whether or not this vhost config file applies to the apache inside the container or outside of it. I think it applies inside of the container so all of these paths are container relative (which is correct for /src/mediawiki paths above for example). Maybe we should rename the source template filename so that it matches what we write to the dest rather tahn use our typical format for external host side configs.","commit_id":"473d8f740a8d4dc6712b856550ee6d83e6015ff2"},{"author":{"_account_id":12898,"name":"Tony Breeds","email":"tony@bakeyournoodle.com","username":"tonyb"},"change_message_id":"4117919b20a194987cfd90c8c25721fc5cbf525f","unresolved":true,"context_lines":[{"line_number":84,"context_line":"  Alias /wiki /var/www/html/index.php"},{"line_number":85,"context_line":"  Alias /sitemap /srv/mediawiki/sitemap"},{"line_number":86,"context_line":"  Alias /favicon.ico \"/srv/mediawiki/assets/favicon.ico\""},{"line_number":87,"context_line":"  Alias /googlef8a274dc6060079f.html \"/srv/mediawiki/assets/googlef8a274dc6060079f.html\""},{"line_number":88,"context_line":""},{"line_number":89,"context_line":"  # Redirect old /Article_Name urls"},{"line_number":90,"context_line":"  RewriteEngine on"}],"source_content_type":"text/x-jinja2","patch_set":2,"id":"232101c6_f77d0147","line":87,"in_reply_to":"b822c127_d8efd5b6","updated":"2024-06-05 15:37:27.000000000","message":"I can for sure take steps to make this less confusing.","commit_id":"473d8f740a8d4dc6712b856550ee6d83e6015ff2"}],"playbooks/roles/mediawiki/templates/container/LocalSettings.php.j2":[{"author":{"_account_id":12898,"name":"Tony Breeds","email":"tony@bakeyournoodle.com","username":"tonyb"},"change_message_id":"c1182d77058a7d0128f1c7490d22fb745c9f7d4e","unresolved":true,"context_lines":[{"line_number":89,"context_line":"$wgEnableUserEmail \u003d true; # UPO"},{"line_number":90,"context_line":"$wgRequirePasswordforEmailChange \u003d false;"},{"line_number":91,"context_line":""},{"line_number":92,"context_line":"$wgEmergencyContact \u003d \"noc@openstack.org\";"},{"line_number":93,"context_line":"$wgPasswordSender \u003d \"noc@openstack.org\";"},{"line_number":94,"context_line":""},{"line_number":95,"context_line":"$wgEnotifUserTalk \u003d true; # UPO"},{"line_number":96,"context_line":"$wgEnotifWatchlist \u003d true; # UPO"}],"source_content_type":"text/x-jinja2","patch_set":33,"id":"586a31da_700e7075","line":93,"range":{"start_line":92,"start_character":0,"end_line":93,"end_character":40},"updated":"2024-08-21 02:21:51.000000000","message":"These are the current values, but are the the ones we want?","commit_id":"f50cd49aa75aa14c71782b452c71f9ea0d0949e7"},{"author":{"_account_id":4146,"name":"Clark Boylan","email":"cboylan@sapwetik.org","username":"cboylan"},"change_message_id":"b5382cf77b3fde761399853b816cc832ddb64891","unresolved":true,"context_lines":[{"line_number":89,"context_line":"$wgEnableUserEmail \u003d true; # UPO"},{"line_number":90,"context_line":"$wgRequirePasswordforEmailChange \u003d false;"},{"line_number":91,"context_line":""},{"line_number":92,"context_line":"$wgEmergencyContact \u003d \"noc@openstack.org\";"},{"line_number":93,"context_line":"$wgPasswordSender \u003d \"noc@openstack.org\";"},{"line_number":94,"context_line":""},{"line_number":95,"context_line":"$wgEnotifUserTalk \u003d true; # UPO"},{"line_number":96,"context_line":"$wgEnotifWatchlist \u003d true; # UPO"}],"source_content_type":"text/x-jinja2","patch_set":33,"id":"cef32454_37e9b156","line":93,"range":{"start_line":92,"start_character":0,"end_line":93,"end_character":40},"in_reply_to":"586a31da_700e7075","updated":"2024-08-21 21:35:10.000000000","message":"For an emergency contact infra-root@openstack.org makes more sense to me. For the second I would set it to something like mw@wiki.opendev.org. Its the addressed used as the source for generic emails from mediawiki.","commit_id":"f50cd49aa75aa14c71782b452c71f9ea0d0949e7"},{"author":{"_account_id":12898,"name":"Tony Breeds","email":"tony@bakeyournoodle.com","username":"tonyb"},"change_message_id":"099e9483e3a5e6f986a739fd5584b292c4846145","unresolved":false,"context_lines":[{"line_number":89,"context_line":"$wgEnableUserEmail \u003d true; # UPO"},{"line_number":90,"context_line":"$wgRequirePasswordforEmailChange \u003d false;"},{"line_number":91,"context_line":""},{"line_number":92,"context_line":"$wgEmergencyContact \u003d \"noc@openstack.org\";"},{"line_number":93,"context_line":"$wgPasswordSender \u003d \"noc@openstack.org\";"},{"line_number":94,"context_line":""},{"line_number":95,"context_line":"$wgEnotifUserTalk \u003d true; # UPO"},{"line_number":96,"context_line":"$wgEnotifWatchlist \u003d true; # UPO"}],"source_content_type":"text/x-jinja2","patch_set":33,"id":"d5a37e36_393933df","line":93,"range":{"start_line":92,"start_character":0,"end_line":93,"end_character":40},"in_reply_to":"cef32454_37e9b156","updated":"2025-10-13 23:53:33.000000000","message":"Done","commit_id":"f50cd49aa75aa14c71782b452c71f9ea0d0949e7"},{"author":{"_account_id":12898,"name":"Tony Breeds","email":"tony@bakeyournoodle.com","username":"tonyb"},"change_message_id":"c1182d77058a7d0128f1c7490d22fb745c9f7d4e","unresolved":true,"context_lines":[{"line_number":123,"context_line":"#$wgParserCacheType \u003d CACHE_ACCEL;"},{"line_number":124,"context_line":"#$wgMessageCacheType \u003d CACHE_ACCEL;"},{"line_number":125,"context_line":"#$wgSessionCacheType \u003d CACHE_ACCEL;"},{"line_number":126,"context_line":"$wgObjectCaches[\u0027memcached-pecl\u0027] \u003d array("},{"line_number":127,"context_line":"        \u0027class\u0027      \u003d\u003e \u0027MemcachedPeclBagOStuff\u0027,"},{"line_number":128,"context_line":"        #\u0027serializer\u0027 \u003d\u003e \u0027igbinary\u0027,"},{"line_number":129,"context_line":"        \u0027servers\u0027    \u003d\u003e array("},{"line_number":130,"context_line":"                \u0027127.0.0.1:11211\u0027,"},{"line_number":131,"context_line":"        )"},{"line_number":132,"context_line":");"},{"line_number":133,"context_line":"$wgMainCacheType \u003d \u0027memcached-pecl\u0027;"},{"line_number":134,"context_line":"$wgParserCacheType \u003d \u0027memcached-pecl\u0027;"},{"line_number":135,"context_line":"$wgMessageCacheType \u003d \u0027memcached-pecl\u0027;"},{"line_number":136,"context_line":"$wgSessionCacheType \u003d \u0027memcached-pecl\u0027;"},{"line_number":137,"context_line":"$wgMemCachedPersistent \u003d false;"},{"line_number":138,"context_line":"$wgUseMemCached \u003d true;"},{"line_number":139,"context_line":"$wgMemCachedTimeout \u003d 250000;"}],"source_content_type":"text/x-jinja2","patch_set":33,"id":"1281a7ea_d55b4d7c","line":136,"range":{"start_line":126,"start_character":0,"end_line":136,"end_character":39},"updated":"2024-08-21 02:21:51.000000000","message":"I can\u0027t actually get this working correctly with 1.28, so I intented to switch these to CACHE_ACCEL which works albeit with less caching.","commit_id":"f50cd49aa75aa14c71782b452c71f9ea0d0949e7"},{"author":{"_account_id":4146,"name":"Clark Boylan","email":"cboylan@sapwetik.org","username":"cboylan"},"change_message_id":"b5382cf77b3fde761399853b816cc832ddb64891","unresolved":true,"context_lines":[{"line_number":123,"context_line":"#$wgParserCacheType \u003d CACHE_ACCEL;"},{"line_number":124,"context_line":"#$wgMessageCacheType \u003d CACHE_ACCEL;"},{"line_number":125,"context_line":"#$wgSessionCacheType \u003d CACHE_ACCEL;"},{"line_number":126,"context_line":"$wgObjectCaches[\u0027memcached-pecl\u0027] \u003d array("},{"line_number":127,"context_line":"        \u0027class\u0027      \u003d\u003e \u0027MemcachedPeclBagOStuff\u0027,"},{"line_number":128,"context_line":"        #\u0027serializer\u0027 \u003d\u003e \u0027igbinary\u0027,"},{"line_number":129,"context_line":"        \u0027servers\u0027    \u003d\u003e array("},{"line_number":130,"context_line":"                \u0027127.0.0.1:11211\u0027,"},{"line_number":131,"context_line":"        )"},{"line_number":132,"context_line":");"},{"line_number":133,"context_line":"$wgMainCacheType \u003d \u0027memcached-pecl\u0027;"},{"line_number":134,"context_line":"$wgParserCacheType \u003d \u0027memcached-pecl\u0027;"},{"line_number":135,"context_line":"$wgMessageCacheType \u003d \u0027memcached-pecl\u0027;"},{"line_number":136,"context_line":"$wgSessionCacheType \u003d \u0027memcached-pecl\u0027;"},{"line_number":137,"context_line":"$wgMemCachedPersistent \u003d false;"},{"line_number":138,"context_line":"$wgUseMemCached \u003d true;"},{"line_number":139,"context_line":"$wgMemCachedTimeout \u003d 250000;"}],"source_content_type":"text/x-jinja2","patch_set":33,"id":"e0d116f4_814d684f","line":136,"range":{"start_line":126,"start_character":0,"end_line":136,"end_character":39},"in_reply_to":"1281a7ea_d55b4d7c","updated":"2024-08-21 21:35:10.000000000","message":"That seems fine as it should be temporary until we get to the later versions.","commit_id":"f50cd49aa75aa14c71782b452c71f9ea0d0949e7"},{"author":{"_account_id":12898,"name":"Tony Breeds","email":"tony@bakeyournoodle.com","username":"tonyb"},"change_message_id":"099e9483e3a5e6f986a739fd5584b292c4846145","unresolved":false,"context_lines":[{"line_number":123,"context_line":"#$wgParserCacheType \u003d CACHE_ACCEL;"},{"line_number":124,"context_line":"#$wgMessageCacheType \u003d CACHE_ACCEL;"},{"line_number":125,"context_line":"#$wgSessionCacheType \u003d CACHE_ACCEL;"},{"line_number":126,"context_line":"$wgObjectCaches[\u0027memcached-pecl\u0027] \u003d array("},{"line_number":127,"context_line":"        \u0027class\u0027      \u003d\u003e \u0027MemcachedPeclBagOStuff\u0027,"},{"line_number":128,"context_line":"        #\u0027serializer\u0027 \u003d\u003e \u0027igbinary\u0027,"},{"line_number":129,"context_line":"        \u0027servers\u0027    \u003d\u003e array("},{"line_number":130,"context_line":"                \u0027127.0.0.1:11211\u0027,"},{"line_number":131,"context_line":"        )"},{"line_number":132,"context_line":");"},{"line_number":133,"context_line":"$wgMainCacheType \u003d \u0027memcached-pecl\u0027;"},{"line_number":134,"context_line":"$wgParserCacheType \u003d \u0027memcached-pecl\u0027;"},{"line_number":135,"context_line":"$wgMessageCacheType \u003d \u0027memcached-pecl\u0027;"},{"line_number":136,"context_line":"$wgSessionCacheType \u003d \u0027memcached-pecl\u0027;"},{"line_number":137,"context_line":"$wgMemCachedPersistent \u003d false;"},{"line_number":138,"context_line":"$wgUseMemCached \u003d true;"},{"line_number":139,"context_line":"$wgMemCachedTimeout \u003d 250000;"}],"source_content_type":"text/x-jinja2","patch_set":33,"id":"917f7c54_0922645a","line":136,"range":{"start_line":126,"start_character":0,"end_line":136,"end_character":39},"in_reply_to":"e0d116f4_814d684f","updated":"2025-10-13 23:53:33.000000000","message":"Done","commit_id":"f50cd49aa75aa14c71782b452c71f9ea0d0949e7"}],"playbooks/roles/mediawiki/templates/container/wiki.opendev.org.conf.j2":[{"author":{"_account_id":12898,"name":"Tony Breeds","email":"tony@bakeyournoodle.com","username":"tonyb"},"change_message_id":"c1182d77058a7d0128f1c7490d22fb745c9f7d4e","unresolved":true,"context_lines":[{"line_number":1,"context_line":"\u003cVirtualHost *:80\u003e"},{"line_number":2,"context_line":"#  ServerAdmin infra-root@opendev.org"},{"line_number":3,"context_line":"#  ServerAdmin noc@openstack.org"},{"line_number":4,"context_line":"#  ServerAdmin webmaster@openstack.org"},{"line_number":5,"context_line":"  ServerAdmin infra-rooxt@openstack.org"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"  # The ServerName directive sets the request scheme, hostname and port that"},{"line_number":8,"context_line":"  # the server uses to identify itself. This is used when creating"}],"source_content_type":"text/x-jinja2","patch_set":33,"id":"fc0bbdb4_fd2a1fb7","line":5,"range":{"start_line":2,"start_character":0,"end_line":5,"end_character":39},"updated":"2024-08-21 02:21:51.000000000","message":"We seem to use all of these addresses I don\u0027t really mind which one we pick/use.\n\n#bikesehedding!","commit_id":"f50cd49aa75aa14c71782b452c71f9ea0d0949e7"},{"author":{"_account_id":12898,"name":"Tony Breeds","email":"tony@bakeyournoodle.com","username":"tonyb"},"change_message_id":"099e9483e3a5e6f986a739fd5584b292c4846145","unresolved":false,"context_lines":[{"line_number":1,"context_line":"\u003cVirtualHost *:80\u003e"},{"line_number":2,"context_line":"#  ServerAdmin infra-root@opendev.org"},{"line_number":3,"context_line":"#  ServerAdmin noc@openstack.org"},{"line_number":4,"context_line":"#  ServerAdmin webmaster@openstack.org"},{"line_number":5,"context_line":"  ServerAdmin infra-rooxt@openstack.org"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"  # The ServerName directive sets the request scheme, hostname and port that"},{"line_number":8,"context_line":"  # the server uses to identify itself. This is used when creating"}],"source_content_type":"text/x-jinja2","patch_set":33,"id":"cf0b69d0_721fbf20","line":5,"range":{"start_line":2,"start_character":0,"end_line":5,"end_character":39},"in_reply_to":"45402bd7_da9de71b","updated":"2025-10-13 23:53:33.000000000","message":"Done","commit_id":"f50cd49aa75aa14c71782b452c71f9ea0d0949e7"},{"author":{"_account_id":4146,"name":"Clark Boylan","email":"cboylan@sapwetik.org","username":"cboylan"},"change_message_id":"b5382cf77b3fde761399853b816cc832ddb64891","unresolved":true,"context_lines":[{"line_number":1,"context_line":"\u003cVirtualHost *:80\u003e"},{"line_number":2,"context_line":"#  ServerAdmin infra-root@opendev.org"},{"line_number":3,"context_line":"#  ServerAdmin noc@openstack.org"},{"line_number":4,"context_line":"#  ServerAdmin webmaster@openstack.org"},{"line_number":5,"context_line":"  ServerAdmin infra-rooxt@openstack.org"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"  # The ServerName directive sets the request scheme, hostname and port that"},{"line_number":8,"context_line":"  # the server uses to identify itself. This is used when creating"}],"source_content_type":"text/x-jinja2","patch_set":33,"id":"45402bd7_da9de71b","line":5,"range":{"start_line":2,"start_character":0,"end_line":5,"end_character":39},"in_reply_to":"fc0bbdb4_fd2a1fb7","updated":"2024-08-21 21:35:10.000000000","message":"I think we can stick with infra-root@openstack.org. Note the one that is uncommented has a stray \u0027x\u0027 in rooxt that will need to be cleaned up.","commit_id":"f50cd49aa75aa14c71782b452c71f9ea0d0949e7"}],"playbooks/roles/mediawiki/templates/host/000-default.conf.j2":[{"author":{"_account_id":12898,"name":"Tony Breeds","email":"tony@bakeyournoodle.com","username":"tonyb"},"change_message_id":"c1182d77058a7d0128f1c7490d22fb745c9f7d4e","unresolved":true,"context_lines":[{"line_number":1,"context_line":"\u003cVirtualHost *:80\u003e"},{"line_number":2,"context_line":"  ServerName {{ mediawiki_canonical_hostname }}"},{"line_number":3,"context_line":"  #ServerAdmin infra-root@opendev.org"},{"line_number":4,"context_line":"  #ServerAdmin noc@openstack.org"},{"line_number":5,"context_line":"  #ServerAdmin webmaster@openstack.org"},{"line_number":6,"context_line":"  ServerAdmin infra-rooxt@openstack.org"},{"line_number":7,"context_line":"  DocumentRoot /var/www"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"  \u003cDirectory /\u003e"}],"source_content_type":"text/x-jinja2","patch_set":33,"id":"fe93378a_d3e700d5","line":6,"range":{"start_line":3,"start_character":0,"end_line":6,"end_character":39},"updated":"2024-08-21 02:21:51.000000000","message":"See comment in previous file","commit_id":"f50cd49aa75aa14c71782b452c71f9ea0d0949e7"},{"author":{"_account_id":12898,"name":"Tony Breeds","email":"tony@bakeyournoodle.com","username":"tonyb"},"change_message_id":"099e9483e3a5e6f986a739fd5584b292c4846145","unresolved":false,"context_lines":[{"line_number":1,"context_line":"\u003cVirtualHost *:80\u003e"},{"line_number":2,"context_line":"  ServerName {{ mediawiki_canonical_hostname }}"},{"line_number":3,"context_line":"  #ServerAdmin infra-root@opendev.org"},{"line_number":4,"context_line":"  #ServerAdmin noc@openstack.org"},{"line_number":5,"context_line":"  #ServerAdmin webmaster@openstack.org"},{"line_number":6,"context_line":"  ServerAdmin infra-rooxt@openstack.org"},{"line_number":7,"context_line":"  DocumentRoot /var/www"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"  \u003cDirectory /\u003e"}],"source_content_type":"text/x-jinja2","patch_set":33,"id":"05a13f28_57f5ee8d","line":6,"range":{"start_line":3,"start_character":0,"end_line":6,"end_character":39},"in_reply_to":"b2775544_1e18502d","updated":"2025-10-13 23:53:33.000000000","message":"Done","commit_id":"f50cd49aa75aa14c71782b452c71f9ea0d0949e7"},{"author":{"_account_id":4146,"name":"Clark Boylan","email":"cboylan@sapwetik.org","username":"cboylan"},"change_message_id":"b5382cf77b3fde761399853b816cc832ddb64891","unresolved":true,"context_lines":[{"line_number":1,"context_line":"\u003cVirtualHost *:80\u003e"},{"line_number":2,"context_line":"  ServerName {{ mediawiki_canonical_hostname }}"},{"line_number":3,"context_line":"  #ServerAdmin infra-root@opendev.org"},{"line_number":4,"context_line":"  #ServerAdmin noc@openstack.org"},{"line_number":5,"context_line":"  #ServerAdmin webmaster@openstack.org"},{"line_number":6,"context_line":"  ServerAdmin infra-rooxt@openstack.org"},{"line_number":7,"context_line":"  DocumentRoot /var/www"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"  \u003cDirectory /\u003e"}],"source_content_type":"text/x-jinja2","patch_set":33,"id":"b2775544_1e18502d","line":6,"range":{"start_line":3,"start_character":0,"end_line":6,"end_character":39},"in_reply_to":"fe93378a_d3e700d5","updated":"2024-08-21 21:35:10.000000000","message":"See my comment in the previous file too :)","commit_id":"f50cd49aa75aa14c71782b452c71f9ea0d0949e7"}],"playbooks/roles/mediawiki/templates/host/cron/wikisitemap.j2":[{"author":{"_account_id":4146,"name":"Clark Boylan","email":"cboylan@sapwetik.org","username":"cboylan"},"change_message_id":"b5382cf77b3fde761399853b816cc832ddb64891","unresolved":true,"context_lines":[{"line_number":4,"context_line":"docker compose run mediawiki php ./maintenance/generateSitemap.php \\"},{"line_number":5,"context_line":"    --fspath /srv/mediawiki/sitemap \\"},{"line_number":6,"context_line":"    --server https://{{ mediawiki_canonical_hostname }} \\"},{"line_number":7,"context_line":"    --urlpath https://{{ mediawiki_canonical_hostname }}/sitemap"}],"source_content_type":"text/x-jinja2","patch_set":33,"id":"e1f3babf_49d133e5","line":7,"updated":"2024-08-21 21:35:10.000000000","message":"Should we redirect the output of this file to a logfile? If so we can also logrotate that file to keep it from growing to infinity and beyond.","commit_id":"f50cd49aa75aa14c71782b452c71f9ea0d0949e7"},{"author":{"_account_id":12898,"name":"Tony Breeds","email":"tony@bakeyournoodle.com","username":"tonyb"},"change_message_id":"099e9483e3a5e6f986a739fd5584b292c4846145","unresolved":true,"context_lines":[{"line_number":4,"context_line":"docker compose run mediawiki php ./maintenance/generateSitemap.php \\"},{"line_number":5,"context_line":"    --fspath /srv/mediawiki/sitemap \\"},{"line_number":6,"context_line":"    --server https://{{ mediawiki_canonical_hostname }} \\"},{"line_number":7,"context_line":"    --urlpath https://{{ mediawiki_canonical_hostname }}/sitemap"}],"source_content_type":"text/x-jinja2","patch_set":33,"id":"34a04844_7bef6445","line":7,"in_reply_to":"e1f3babf_49d133e5","updated":"2025-10-13 23:53:33.000000000","message":"I don\u0027t know that it has any output.  I\u0027ll look at this the next time we deploy/hold a server","commit_id":"f50cd49aa75aa14c71782b452c71f9ea0d0949e7"}],"playbooks/roles/mediawiki/templates/host/docker-compose.yaml.j2":[{"author":{"_account_id":12898,"name":"Tony Breeds","email":"tony@bakeyournoodle.com","username":"tonyb"},"change_message_id":"c1182d77058a7d0128f1c7490d22fb745c9f7d4e","unresolved":true,"context_lines":[{"line_number":15,"context_line":"      driver: syslog"},{"line_number":16,"context_line":"      options:"},{"line_number":17,"context_line":"        tag: \"docker-memcached\""},{"line_number":18,"context_line":"# Currently the production database is hosted in a RAX-Trove instance."},{"line_number":19,"context_line":"# This container will only be used in testing for now"},{"line_number":20,"context_line":"  mariadb:"},{"line_number":21,"context_line":"    image: docker.io/library/mariadb:10.11"},{"line_number":22,"context_line":"    network_mode: host"},{"line_number":23,"context_line":"    restart: always"},{"line_number":24,"context_line":"    environment:"},{"line_number":25,"context_line":"      MYSQL_ROOT_PASSWORD: \"{{ mediawiki_db_password }}\""},{"line_number":26,"context_line":"      MYSQL_DATABASE: \"{{ mediawiki_db_dbname }}\""},{"line_number":27,"context_line":"      MYSQL_USER: \"{{ mediawiki_db_username }}\""},{"line_number":28,"context_line":"      MYSQL_PASSWORD: \"{{ mediawiki_db_password }}\""},{"line_number":29,"context_line":"      MARIADB_AUTO_UPGRADE: 1"},{"line_number":30,"context_line":"    command: ["},{"line_number":31,"context_line":"      \u0027--wait_timeout\u003d28800\u0027,"},{"line_number":32,"context_line":"    ]"},{"line_number":33,"context_line":"    volumes:"},{"line_number":34,"context_line":"      - /var/lib/mediawiki/mariadb:/var/lib/mysql"},{"line_number":35,"context_line":"    logging:"},{"line_number":36,"context_line":"      driver: syslog"},{"line_number":37,"context_line":"      options:"},{"line_number":38,"context_line":"        tag: \"docker-mariadb\""},{"line_number":39,"context_line":"  mediawiki:"},{"line_number":40,"context_line":"    image: docker.io/opendevorg/mediawiki:{{ zuul_test_mediawiki_version | default(\u00271.28\u0027) }}"},{"line_number":41,"context_line":"    depends_on:"}],"source_content_type":"text/x-jinja2","patch_set":33,"id":"e665d4fc_b12aaa10","line":38,"range":{"start_line":18,"start_character":0,"end_line":38,"end_character":29},"updated":"2024-08-21 02:21:51.000000000","message":"Thoughts on when to move the database \"source of truth\" from RAX to a database running locally?\n\nI\u0027m thinking that when we do this we\u0027ll add a (cinder) volume use whatever mount point that is selected as the source for this (docker) volume.","commit_id":"f50cd49aa75aa14c71782b452c71f9ea0d0949e7"},{"author":{"_account_id":4146,"name":"Clark Boylan","email":"cboylan@sapwetik.org","username":"cboylan"},"change_message_id":"b5382cf77b3fde761399853b816cc832ddb64891","unresolved":true,"context_lines":[{"line_number":15,"context_line":"      driver: syslog"},{"line_number":16,"context_line":"      options:"},{"line_number":17,"context_line":"        tag: \"docker-memcached\""},{"line_number":18,"context_line":"# Currently the production database is hosted in a RAX-Trove instance."},{"line_number":19,"context_line":"# This container will only be used in testing for now"},{"line_number":20,"context_line":"  mariadb:"},{"line_number":21,"context_line":"    image: docker.io/library/mariadb:10.11"},{"line_number":22,"context_line":"    network_mode: host"},{"line_number":23,"context_line":"    restart: always"},{"line_number":24,"context_line":"    environment:"},{"line_number":25,"context_line":"      MYSQL_ROOT_PASSWORD: \"{{ mediawiki_db_password }}\""},{"line_number":26,"context_line":"      MYSQL_DATABASE: \"{{ mediawiki_db_dbname }}\""},{"line_number":27,"context_line":"      MYSQL_USER: \"{{ mediawiki_db_username }}\""},{"line_number":28,"context_line":"      MYSQL_PASSWORD: \"{{ mediawiki_db_password }}\""},{"line_number":29,"context_line":"      MARIADB_AUTO_UPGRADE: 1"},{"line_number":30,"context_line":"    command: ["},{"line_number":31,"context_line":"      \u0027--wait_timeout\u003d28800\u0027,"},{"line_number":32,"context_line":"    ]"},{"line_number":33,"context_line":"    volumes:"},{"line_number":34,"context_line":"      - /var/lib/mediawiki/mariadb:/var/lib/mysql"},{"line_number":35,"context_line":"    logging:"},{"line_number":36,"context_line":"      driver: syslog"},{"line_number":37,"context_line":"      options:"},{"line_number":38,"context_line":"        tag: \"docker-mariadb\""},{"line_number":39,"context_line":"  mediawiki:"},{"line_number":40,"context_line":"    image: docker.io/opendevorg/mediawiki:{{ zuul_test_mediawiki_version | default(\u00271.28\u0027) }}"},{"line_number":41,"context_line":"    depends_on:"}],"source_content_type":"text/x-jinja2","patch_set":33,"id":"e6f4b92a_d3110cfc","line":38,"range":{"start_line":18,"start_character":0,"end_line":38,"end_character":29},"in_reply_to":"e665d4fc_b12aaa10","updated":"2024-08-21 21:35:10.000000000","message":"I think we should start the deployment of the server with a cinder volume backing this data. Then when we do the database dump restore we can let mariadb do the data shuffling for us. I think that will simplify things compared to doing filesystem changes during a database restore.\n\nAs for timing of that move I would do it as part of the service cutover and the downtime we\u0027re going to take for that. It reduces the total number of downtimes (though may extend the length of this particular downtime) and ensures we\u0027re left all the old stuff behind as quickly as possible.","commit_id":"f50cd49aa75aa14c71782b452c71f9ea0d0949e7"},{"author":{"_account_id":12898,"name":"Tony Breeds","email":"tony@bakeyournoodle.com","username":"tonyb"},"change_message_id":"0cce7666f77bef6e6bef8907c49a667d04f81b74","unresolved":true,"context_lines":[{"line_number":15,"context_line":"      driver: syslog"},{"line_number":16,"context_line":"      options:"},{"line_number":17,"context_line":"        tag: \"docker-memcached\""},{"line_number":18,"context_line":"# Currently the production database is hosted in a RAX-Trove instance."},{"line_number":19,"context_line":"# This container will only be used in testing for now"},{"line_number":20,"context_line":"  mariadb:"},{"line_number":21,"context_line":"    image: docker.io/library/mariadb:10.11"},{"line_number":22,"context_line":"    network_mode: host"},{"line_number":23,"context_line":"    restart: always"},{"line_number":24,"context_line":"    environment:"},{"line_number":25,"context_line":"      MYSQL_ROOT_PASSWORD: \"{{ mediawiki_db_password }}\""},{"line_number":26,"context_line":"      MYSQL_DATABASE: \"{{ mediawiki_db_dbname }}\""},{"line_number":27,"context_line":"      MYSQL_USER: \"{{ mediawiki_db_username }}\""},{"line_number":28,"context_line":"      MYSQL_PASSWORD: \"{{ mediawiki_db_password }}\""},{"line_number":29,"context_line":"      MARIADB_AUTO_UPGRADE: 1"},{"line_number":30,"context_line":"    command: ["},{"line_number":31,"context_line":"      \u0027--wait_timeout\u003d28800\u0027,"},{"line_number":32,"context_line":"    ]"},{"line_number":33,"context_line":"    volumes:"},{"line_number":34,"context_line":"      - /var/lib/mediawiki/mariadb:/var/lib/mysql"},{"line_number":35,"context_line":"    logging:"},{"line_number":36,"context_line":"      driver: syslog"},{"line_number":37,"context_line":"      options:"},{"line_number":38,"context_line":"        tag: \"docker-mariadb\""},{"line_number":39,"context_line":"  mediawiki:"},{"line_number":40,"context_line":"    image: docker.io/opendevorg/mediawiki:{{ zuul_test_mediawiki_version | default(\u00271.28\u0027) }}"},{"line_number":41,"context_line":"    depends_on:"}],"source_content_type":"text/x-jinja2","patch_set":33,"id":"686a4473_87dd1fd1","line":38,"range":{"start_line":18,"start_character":0,"end_line":38,"end_character":29},"in_reply_to":"e6f4b92a_d3110cfc","updated":"2024-08-22 17:25:46.000000000","message":"Acknowledged","commit_id":"f50cd49aa75aa14c71782b452c71f9ea0d0949e7"},{"author":{"_account_id":4146,"name":"Clark Boylan","email":"cboylan@sapwetik.org","username":"cboylan"},"change_message_id":"b5382cf77b3fde761399853b816cc832ddb64891","unresolved":true,"context_lines":[{"line_number":37,"context_line":"      options:"},{"line_number":38,"context_line":"        tag: \"docker-mariadb\""},{"line_number":39,"context_line":"  mediawiki:"},{"line_number":40,"context_line":"    image: docker.io/opendevorg/mediawiki:{{ zuul_test_mediawiki_version | default(\u00271.28\u0027) }}"},{"line_number":41,"context_line":"    depends_on:"},{"line_number":42,"context_line":"      - elasticsearch"},{"line_number":43,"context_line":"      - memcached"}],"source_content_type":"text/x-jinja2","patch_set":33,"id":"fb422e0a_59123a4e","line":40,"range":{"start_line":40,"start_character":45,"end_line":40,"end_character":72},"updated":"2024-08-21 21:35:10.000000000","message":"When we go to production we probably won\u0027t want to keep using the zuul_test_ prefix here. Maybe just go ahead and make the variable name `mediawiki_version` and have the tests set that as well as production when we get there?","commit_id":"f50cd49aa75aa14c71782b452c71f9ea0d0949e7"},{"author":{"_account_id":12898,"name":"Tony Breeds","email":"tony@bakeyournoodle.com","username":"tonyb"},"change_message_id":"099e9483e3a5e6f986a739fd5584b292c4846145","unresolved":false,"context_lines":[{"line_number":37,"context_line":"      options:"},{"line_number":38,"context_line":"        tag: \"docker-mariadb\""},{"line_number":39,"context_line":"  mediawiki:"},{"line_number":40,"context_line":"    image: docker.io/opendevorg/mediawiki:{{ zuul_test_mediawiki_version | default(\u00271.28\u0027) }}"},{"line_number":41,"context_line":"    depends_on:"},{"line_number":42,"context_line":"      - elasticsearch"},{"line_number":43,"context_line":"      - memcached"}],"source_content_type":"text/x-jinja2","patch_set":33,"id":"a677c208_892a3f6b","line":40,"range":{"start_line":40,"start_character":45,"end_line":40,"end_character":72},"in_reply_to":"e2f206f0_c9cd745a","updated":"2025-10-13 23:53:33.000000000","message":"Done","commit_id":"f50cd49aa75aa14c71782b452c71f9ea0d0949e7"},{"author":{"_account_id":12898,"name":"Tony Breeds","email":"tony@bakeyournoodle.com","username":"tonyb"},"change_message_id":"0cce7666f77bef6e6bef8907c49a667d04f81b74","unresolved":true,"context_lines":[{"line_number":37,"context_line":"      options:"},{"line_number":38,"context_line":"        tag: \"docker-mariadb\""},{"line_number":39,"context_line":"  mediawiki:"},{"line_number":40,"context_line":"    image: docker.io/opendevorg/mediawiki:{{ zuul_test_mediawiki_version | default(\u00271.28\u0027) }}"},{"line_number":41,"context_line":"    depends_on:"},{"line_number":42,"context_line":"      - elasticsearch"},{"line_number":43,"context_line":"      - memcached"}],"source_content_type":"text/x-jinja2","patch_set":33,"id":"e2f206f0_c9cd745a","line":40,"range":{"start_line":40,"start_character":45,"end_line":40,"end_character":72},"in_reply_to":"fb422e0a_59123a4e","updated":"2024-08-22 17:25:46.000000000","message":"Acknowledged","commit_id":"f50cd49aa75aa14c71782b452c71f9ea0d0949e7"}],"playbooks/roles/mediawiki/templates/host/ports.conf.j2":[{"author":{"_account_id":4146,"name":"Clark Boylan","email":"cboylan@sapwetik.org","username":"cboylan"},"change_message_id":"b5382cf77b3fde761399853b816cc832ddb64891","unresolved":true,"context_lines":[{"line_number":2,"context_line":"# have to change the VirtualHost statement in"},{"line_number":3,"context_line":"# /etc/apache2/sites-enabled/000-default.conf"},{"line_number":4,"context_line":""},{"line_number":5,"context_line":"Listen {{ public_v4 }}:80"},{"line_number":6,"context_line":"{% if public_v6 is defined and public_v6|length \u003e 0 %}"},{"line_number":7,"context_line":"Listen {{ public_v6 }}:80"},{"line_number":8,"context_line":"{% endif %}"}],"source_content_type":"text/x-jinja2","patch_set":33,"id":"136cf20d_e79cf78c","line":5,"updated":"2024-08-21 21:35:10.000000000","message":"I guess this is a downside to having the container apache listen on port 80 as well? we have to be very specific about ip addresses. Would it be simpler to have the container apache listen on 8080 then we can be liberal about listening on all interfaces for 80 and 443 here? Or is convincing the container apache to do that more effort overall?","commit_id":"f50cd49aa75aa14c71782b452c71f9ea0d0949e7"},{"author":{"_account_id":12898,"name":"Tony Breeds","email":"tony@bakeyournoodle.com","username":"tonyb"},"change_message_id":"0cce7666f77bef6e6bef8907c49a667d04f81b74","unresolved":true,"context_lines":[{"line_number":2,"context_line":"# have to change the VirtualHost statement in"},{"line_number":3,"context_line":"# /etc/apache2/sites-enabled/000-default.conf"},{"line_number":4,"context_line":""},{"line_number":5,"context_line":"Listen {{ public_v4 }}:80"},{"line_number":6,"context_line":"{% if public_v6 is defined and public_v6|length \u003e 0 %}"},{"line_number":7,"context_line":"Listen {{ public_v6 }}:80"},{"line_number":8,"context_line":"{% endif %}"}],"source_content_type":"text/x-jinja2","patch_set":33,"id":"6ff9cf3b_970ea109","line":5,"in_reply_to":"136cf20d_e79cf78c","updated":"2024-08-22 17:25:46.000000000","message":"That makes sense, I think we can do that but I\u0027ll verify that \u0027EXPOSE\u0027 is essentially ignored with not networking","commit_id":"f50cd49aa75aa14c71782b452c71f9ea0d0949e7"},{"author":{"_account_id":12898,"name":"Tony Breeds","email":"tony@bakeyournoodle.com","username":"tonyb"},"change_message_id":"099e9483e3a5e6f986a739fd5584b292c4846145","unresolved":false,"context_lines":[{"line_number":2,"context_line":"# have to change the VirtualHost statement in"},{"line_number":3,"context_line":"# /etc/apache2/sites-enabled/000-default.conf"},{"line_number":4,"context_line":""},{"line_number":5,"context_line":"Listen {{ public_v4 }}:80"},{"line_number":6,"context_line":"{% if public_v6 is defined and public_v6|length \u003e 0 %}"},{"line_number":7,"context_line":"Listen {{ public_v6 }}:80"},{"line_number":8,"context_line":"{% endif %}"}],"source_content_type":"text/x-jinja2","patch_set":33,"id":"d4127de9_349b0150","line":5,"in_reply_to":"6ff9cf3b_970ea109","updated":"2025-10-13 23:53:33.000000000","message":"Acknowledged","commit_id":"f50cd49aa75aa14c71782b452c71f9ea0d0949e7"}],"playbooks/service-mediawiki.yaml":[{"author":{"_account_id":12898,"name":"Tony Breeds","email":"tony@bakeyournoodle.com","username":"tonyb"},"change_message_id":"c1182d77058a7d0128f1c7490d22fb745c9f7d4e","unresolved":true,"context_lines":[{"line_number":3,"context_line":"  roles:"},{"line_number":4,"context_line":"    - iptables"},{"line_number":5,"context_line":"    - role: install-docker"},{"line_number":6,"context_line":"      with_python_compose: True"},{"line_number":7,"context_line":"    - mediawiki"}],"source_content_type":"text/x-yaml","patch_set":33,"id":"e79115b8_013d3372","line":6,"updated":"2024-08-21 02:21:51.000000000","message":"I don\u0027t think we actually need this line as we\u0027e not using the python docker-compose instead we\u0027re using the docker compose plugin","commit_id":"f50cd49aa75aa14c71782b452c71f9ea0d0949e7"},{"author":{"_account_id":12898,"name":"Tony Breeds","email":"tony@bakeyournoodle.com","username":"tonyb"},"change_message_id":"099e9483e3a5e6f986a739fd5584b292c4846145","unresolved":false,"context_lines":[{"line_number":3,"context_line":"  roles:"},{"line_number":4,"context_line":"    - iptables"},{"line_number":5,"context_line":"    - role: install-docker"},{"line_number":6,"context_line":"      with_python_compose: True"},{"line_number":7,"context_line":"    - mediawiki"}],"source_content_type":"text/x-yaml","patch_set":33,"id":"0aaabfa5_c5d937ac","line":6,"in_reply_to":"7eab1eac_ff173d92","updated":"2025-10-13 23:53:33.000000000","message":"Done","commit_id":"f50cd49aa75aa14c71782b452c71f9ea0d0949e7"},{"author":{"_account_id":4146,"name":"Clark Boylan","email":"cboylan@sapwetik.org","username":"cboylan"},"change_message_id":"b5382cf77b3fde761399853b816cc832ddb64891","unresolved":true,"context_lines":[{"line_number":3,"context_line":"  roles:"},{"line_number":4,"context_line":"    - iptables"},{"line_number":5,"context_line":"    - role: install-docker"},{"line_number":6,"context_line":"      with_python_compose: True"},{"line_number":7,"context_line":"    - mediawiki"}],"source_content_type":"text/x-yaml","patch_set":33,"id":"fecc55ee_700bb608","line":6,"in_reply_to":"e79115b8_013d3372","updated":"2024-08-21 21:35:10.000000000","message":"We could remove it just to avoid confusion if/when we do manual docker-compose/docker compose command execution. Seems like I\u0027d be more likely to run the wrong thing if we keep python tooling installed where we don\u0027t need it.","commit_id":"f50cd49aa75aa14c71782b452c71f9ea0d0949e7"},{"author":{"_account_id":12898,"name":"Tony Breeds","email":"tony@bakeyournoodle.com","username":"tonyb"},"change_message_id":"0cce7666f77bef6e6bef8907c49a667d04f81b74","unresolved":true,"context_lines":[{"line_number":3,"context_line":"  roles:"},{"line_number":4,"context_line":"    - iptables"},{"line_number":5,"context_line":"    - role: install-docker"},{"line_number":6,"context_line":"      with_python_compose: True"},{"line_number":7,"context_line":"    - mediawiki"}],"source_content_type":"text/x-yaml","patch_set":33,"id":"7eab1eac_ff173d92","line":6,"in_reply_to":"fecc55ee_700bb608","updated":"2024-08-22 17:25:46.000000000","message":"Acknowledged","commit_id":"f50cd49aa75aa14c71782b452c71f9ea0d0949e7"}],"playbooks/zuul/templates/group_vars/mediawiki.yaml.j2":[{"author":{"_account_id":12898,"name":"Tony Breeds","email":"tony@bakeyournoodle.com","username":"tonyb"},"change_message_id":"c1182d77058a7d0128f1c7490d22fb745c9f7d4e","unresolved":true,"context_lines":[{"line_number":5,"context_line":"mediawiki_db_dbname: mediawiki"},{"line_number":6,"context_line":"mediawiki_wgGoogleAnalyticsAccount: UA-12345678-9"},{"line_number":7,"context_line":"mediawiki_wgReCaptchaSecretKey: chachai8ja5veegh1va5aicheiMoo9"},{"line_number":8,"context_line":"mediawiki_wgReCaptchaSiteKey: daeh1yoogaegohcohtiNgoo5uuheeJ"},{"line_number":9,"context_line":"mediawiki_wgSecretKey: Yai5eijohdaecoobuaj0lahmeuvaiR"}],"source_content_type":"text/x-jinja2","patch_set":33,"id":"566a7c08_03bab2f8","line":9,"range":{"start_line":8,"start_character":0,"end_line":9,"end_character":53},"updated":"2024-08-21 02:21:51.000000000","message":"These values aren\u0027t at all valid, so recaptcha runnin on the installed (testing) wiki server wont work.  I have valid values that could be added to a zuul secret if it\u0027s worth it?","commit_id":"f50cd49aa75aa14c71782b452c71f9ea0d0949e7"},{"author":{"_account_id":12898,"name":"Tony Breeds","email":"tony@bakeyournoodle.com","username":"tonyb"},"change_message_id":"0cce7666f77bef6e6bef8907c49a667d04f81b74","unresolved":true,"context_lines":[{"line_number":5,"context_line":"mediawiki_db_dbname: mediawiki"},{"line_number":6,"context_line":"mediawiki_wgGoogleAnalyticsAccount: UA-12345678-9"},{"line_number":7,"context_line":"mediawiki_wgReCaptchaSecretKey: chachai8ja5veegh1va5aicheiMoo9"},{"line_number":8,"context_line":"mediawiki_wgReCaptchaSiteKey: daeh1yoogaegohcohtiNgoo5uuheeJ"},{"line_number":9,"context_line":"mediawiki_wgSecretKey: Yai5eijohdaecoobuaj0lahmeuvaiR"}],"source_content_type":"text/x-jinja2","patch_set":33,"id":"6dc8bde8_df24f571","line":9,"range":{"start_line":8,"start_character":0,"end_line":9,"end_character":53},"in_reply_to":"05642e23_e93369fd","updated":"2024-08-22 17:25:46.000000000","message":"Sounds good,  As we\u0027re switching the hostname we will need new credentials issues via the cloud console.  According to [1] it\u0027s free for up to 1 million captchas / month.  Something to consider when planning\n\n\n[1] https://developers.google.com/recaptcha/intro","commit_id":"f50cd49aa75aa14c71782b452c71f9ea0d0949e7"},{"author":{"_account_id":4146,"name":"Clark Boylan","email":"cboylan@sapwetik.org","username":"cboylan"},"change_message_id":"b5382cf77b3fde761399853b816cc832ddb64891","unresolved":true,"context_lines":[{"line_number":5,"context_line":"mediawiki_db_dbname: mediawiki"},{"line_number":6,"context_line":"mediawiki_wgGoogleAnalyticsAccount: UA-12345678-9"},{"line_number":7,"context_line":"mediawiki_wgReCaptchaSecretKey: chachai8ja5veegh1va5aicheiMoo9"},{"line_number":8,"context_line":"mediawiki_wgReCaptchaSiteKey: daeh1yoogaegohcohtiNgoo5uuheeJ"},{"line_number":9,"context_line":"mediawiki_wgSecretKey: Yai5eijohdaecoobuaj0lahmeuvaiR"}],"source_content_type":"text/x-jinja2","patch_set":33,"id":"05642e23_e93369fd","line":9,"range":{"start_line":8,"start_character":0,"end_line":9,"end_character":53},"in_reply_to":"566a7c08_03bab2f8","updated":"2024-08-21 21:35:10.000000000","message":"I think we can avoid doing that if/when we find a need to use captchas properly on test nodes via automated test cases.\n\nFor production I assume we\u0027ll set up a set of credentials with infra-root@openstack.org as the contact or however google wants that to be done?","commit_id":"f50cd49aa75aa14c71782b452c71f9ea0d0949e7"}],"testinfra/test_mediawiki.py":[{"author":{"_account_id":12898,"name":"Tony Breeds","email":"tony@bakeyournoodle.com","username":"tonyb"},"change_message_id":"c1182d77058a7d0128f1c7490d22fb745c9f7d4e","unresolved":true,"context_lines":[],"source_content_type":"","patch_set":33,"id":"e282f61e_c079b10f","updated":"2024-08-21 02:21:51.000000000","message":"Any more test ideas are welcome, this is really just did the containers install and are they listening.","commit_id":"f50cd49aa75aa14c71782b452c71f9ea0d0949e7"},{"author":{"_account_id":12898,"name":"Tony Breeds","email":"tony@bakeyournoodle.com","username":"tonyb"},"change_message_id":"0cce7666f77bef6e6bef8907c49a667d04f81b74","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":33,"id":"b4708fb0_6af76c67","in_reply_to":"5a8b35ab_dc0b7b1a","updated":"2024-08-22 17:25:46.000000000","message":"Acknowledged","commit_id":"f50cd49aa75aa14c71782b452c71f9ea0d0949e7"},{"author":{"_account_id":4146,"name":"Clark Boylan","email":"cboylan@sapwetik.org","username":"cboylan"},"change_message_id":"b5382cf77b3fde761399853b816cc832ddb64891","unresolved":true,"context_lines":[],"source_content_type":"","patch_set":33,"id":"5a8b35ab_dc0b7b1a","in_reply_to":"e282f61e_c079b10f","updated":"2024-08-21 21:35:10.000000000","message":"This is probably a reasonable start. Eventually we might try to automate adding a page, editing a page, and then screen shotting the result and the diff history for that page. However, automating that is definitely going above and beyond especially compared to what we already have. I wouldn\u0027t worry about it for the first iteration.","commit_id":"f50cd49aa75aa14c71782b452c71f9ea0d0949e7"}],"zuul.d/system-config-run.yaml":[{"author":{"_account_id":12898,"name":"Tony Breeds","email":"tony@bakeyournoodle.com","username":"tonyb"},"change_message_id":"479f295c5b4923e889a93a64ea25e48a60c20817","unresolved":false,"context_lines":[{"line_number":805,"context_line":"      - testinfra/test_keycloak.py"},{"line_number":806,"context_line":""},{"line_number":807,"context_line":"- job:"},{"line_number":808,"context_line":"    name: system-config-run-mediawiki"},{"line_number":809,"context_line":"    parent: system-config-run"},{"line_number":810,"context_line":"    description: |"},{"line_number":811,"context_line":"      Run the playbook for mediawiki."}],"source_content_type":"text/x-yaml","patch_set":2,"id":"316d43b3_4a3a78f2","line":808,"updated":"2024-06-04 19:53:52.000000000","message":"Well this would have done more if I\u0027d actually run the job somewhere :/","commit_id":"473d8f740a8d4dc6712b856550ee6d83e6015ff2"},{"author":{"_account_id":4146,"name":"Clark Boylan","email":"cboylan@sapwetik.org","username":"cboylan"},"change_message_id":"b5382cf77b3fde761399853b816cc832ddb64891","unresolved":false,"context_lines":[{"line_number":815,"context_line":"      nodes:"},{"line_number":816,"context_line":"        - \u003c\u003c: *bridge_node_x86"},{"line_number":817,"context_line":"        - name: wiki99.opendev.org"},{"line_number":818,"context_line":"          label: ubuntu-jammy"},{"line_number":819,"context_line":"      groups:"},{"line_number":820,"context_line":"        - \u003c\u003c: *bastion_group"},{"line_number":821,"context_line":"    vars:"}],"source_content_type":"text/x-yaml","patch_set":33,"id":"4dbfe2d3_d3fdd940","line":818,"range":{"start_line":818,"start_character":24,"end_line":818,"end_character":29},"updated":"2024-08-21 21:35:10.000000000","message":"I guess this implies docker compose is working on jammy too. Neat.","commit_id":"f50cd49aa75aa14c71782b452c71f9ea0d0949e7"}]}
