Ansible mailman configs

This converts our existing puppeted mailman configuration into a set of
ansible roles and a new playbook. We don't try to do anything new and
instead do our best to map from puppet to ansible as closely as
possible. This helps reduce churn and will help us find problems more
quickly if they happen.

Followups will further cleanup the puppetry.

Change-Id: If8cdb1164c9000438d1977d8965a92ca8eebe4df
changes/22/789622/20
Clark Boylan 1 year ago
parent 8346b9ac6f
commit 4c4e27cb3a
  1. 4
      inventory/service/groups.yaml
  2. 15
      inventory/service/host_vars/lists.katacontainers.io.yaml
  3. 262
      inventory/service/host_vars/lists.openstack.org.yaml
  4. 18
      manifests/site.pp
  5. 2
      playbooks/roles/install-ansible/files/inventory_plugins/test-fixtures/results.yaml
  6. 1
      playbooks/roles/mailman-list/README.rst
  7. 35
      playbooks/roles/mailman-list/tasks/main.yaml
  8. 1
      playbooks/roles/mailman-site/README.rst
  9. 60
      playbooks/roles/mailman-site/files/openstack/html-templates-en/admindbdetails.html
  10. 10
      playbooks/roles/mailman-site/files/openstack/html-templates-en/admindbpreamble.html
  11. 14
      playbooks/roles/mailman-site/files/openstack/html-templates-en/admindbsummary.html
  12. 3
      playbooks/roles/mailman-site/files/openstack/html-templates-en/adminsubscribeack.txt
  13. 2
      playbooks/roles/mailman-site/files/openstack/html-templates-en/adminunsubscribeack.txt
  14. 40
      playbooks/roles/mailman-site/files/openstack/html-templates-en/admlogin.html
  15. 15
      playbooks/roles/mailman-site/files/openstack/html-templates-en/approve.txt
  16. 4
      playbooks/roles/mailman-site/files/openstack/html-templates-en/archidxentry.html
  17. 64
      playbooks/roles/mailman-site/files/openstack/html-templates-en/archidxfoot.html
  18. 89
      playbooks/roles/mailman-site/files/openstack/html-templates-en/archidxhead.html
  19. 1
      playbooks/roles/mailman-site/files/openstack/html-templates-en/archlistend.html
  20. 4
      playbooks/roles/mailman-site/files/openstack/html-templates-en/archliststart.html
  21. 130
      playbooks/roles/mailman-site/files/openstack/html-templates-en/archtoc.html
  22. 12
      playbooks/roles/mailman-site/files/openstack/html-templates-en/archtocentry.html
  23. 131
      playbooks/roles/mailman-site/files/openstack/html-templates-en/archtocnombox.html
  24. 168
      playbooks/roles/mailman-site/files/openstack/html-templates-en/article.html
  25. 13
      playbooks/roles/mailman-site/files/openstack/html-templates-en/bounce.txt
  26. 7
      playbooks/roles/mailman-site/files/openstack/html-templates-en/checkdbs.txt
  27. 34
      playbooks/roles/mailman-site/files/openstack/html-templates-en/convert.txt
  28. 19
      playbooks/roles/mailman-site/files/openstack/html-templates-en/cronpass.txt
  29. 25
      playbooks/roles/mailman-site/files/openstack/html-templates-en/disabled.txt
  30. 125
      playbooks/roles/mailman-site/files/openstack/html-templates-en/emptyarchive.html
  31. 28
      playbooks/roles/mailman-site/files/openstack/html-templates-en/headfoot.html
  32. 33
      playbooks/roles/mailman-site/files/openstack/html-templates-en/help.txt
  33. 20
      playbooks/roles/mailman-site/files/openstack/html-templates-en/invite.txt
  34. 254
      playbooks/roles/mailman-site/files/openstack/html-templates-en/listinfo.html
  35. 13
      playbooks/roles/mailman-site/files/openstack/html-templates-en/masthead.txt
  36. 35
      playbooks/roles/mailman-site/files/openstack/html-templates-en/newlist.txt
  37. 8
      playbooks/roles/mailman-site/files/openstack/html-templates-en/nomoretoday.txt
  38. 422
      playbooks/roles/mailman-site/files/openstack/html-templates-en/options.html
  39. 8
      playbooks/roles/mailman-site/files/openstack/html-templates-en/postack.txt
  40. 13
      playbooks/roles/mailman-site/files/openstack/html-templates-en/postauth.txt
  41. 15
      playbooks/roles/mailman-site/files/openstack/html-templates-en/postheld.txt
  42. 44
      playbooks/roles/mailman-site/files/openstack/html-templates-en/private.html
  43. 25
      playbooks/roles/mailman-site/files/openstack/html-templates-en/probe.txt
  44. 13
      playbooks/roles/mailman-site/files/openstack/html-templates-en/refuse.txt
  45. 160
      playbooks/roles/mailman-site/files/openstack/html-templates-en/roster.html
  46. 11
      playbooks/roles/mailman-site/files/openstack/html-templates-en/subauth.txt
  47. 117
      playbooks/roles/mailman-site/files/openstack/html-templates-en/subscribe.html
  48. 33
      playbooks/roles/mailman-site/files/openstack/html-templates-en/subscribeack.txt
  49. 23
      playbooks/roles/mailman-site/files/openstack/html-templates-en/unsub.txt
  50. 11
      playbooks/roles/mailman-site/files/openstack/html-templates-en/unsubauth.txt
  51. 24
      playbooks/roles/mailman-site/files/openstack/html-templates-en/userpass.txt
  52. 22
      playbooks/roles/mailman-site/files/openstack/html-templates-en/verify.txt
  53. 4
      playbooks/roles/mailman-site/handlers/main.yaml
  54. 108
      playbooks/roles/mailman-site/tasks/main.yaml
  55. 116
      playbooks/roles/mailman-site/templates/mailman.init.j2
  56. 62
      playbooks/roles/mailman-site/templates/mailman_multihost.vhost.j2
  57. 153
      playbooks/roles/mailman-site/templates/mm_site_cfg.py.j2
  58. 1
      playbooks/roles/mailman/README.rst
  59. 4
      playbooks/roles/mailman/files/index.html
  60. 9
      playbooks/roles/mailman/files/mk-archives-index
  61. 45
      playbooks/roles/mailman/files/mm_cfg_multihost.py
  62. 2
      playbooks/roles/mailman/files/robots.txt
  63. 9
      playbooks/roles/mailman/handlers/main.yaml
  64. 128
      playbooks/roles/mailman/tasks/main.yaml
  65. 61
      playbooks/roles/mailman/templates/mailman.vhost.j2
  66. 119
      playbooks/roles/mailman/templates/mm_cfg.py.j2
  67. 3
      playbooks/roles/mailman/templates/sites.j2
  68. 5
      playbooks/service-lists.yaml
  69. 1
      playbooks/zuul/run-base.yaml
  70. 2
      playbooks/zuul/templates/host_vars/lists.katacontainers.io.yaml.j2
  71. 3
      playbooks/zuul/templates/host_vars/lists.openstack.org.yaml.j2
  72. 17
      testinfra/test_lists_k_i.py
  73. 29
      testinfra/test_lists_o_o.py
  74. 17
      zuul.d/system-config-run.yaml

@ -138,8 +138,6 @@ groups:
- elasticsearch[0-9]*.open*.org
- ethercalc[0-9]*.open*.org
- health[0-9]*.openstack.org
- lists*.katacontainers.io
- lists*.open*.org
- logstash-worker[0-9]*.open*.org
- logstash[0-9]*.open*.org
- mirror-update[0-9]*.openstack.org
@ -165,8 +163,6 @@ groups:
- elasticsearch[0-9]*.open*.org
- ethercalc[0-9]*.open*.org
- health[0-9]*.openstack.org
- lists*.katacontainers.io
- lists*.open*.org
- lists-dev[0-9]*.open*.org
- logstash-worker[0-9]*.open*.org
- logstash[0-9]*.open*.org

@ -58,3 +58,18 @@ exim_transports:
headers_add = Errors-To: ${return_path}
extra_users:
- jbryce
mailman_multihost: false
mailman_listdomain: 'lists.katacontainers.io'
mailman_lists:
- name: kata-dev
description: 'Kata Containers Development Mailing List (not for usage questions)'
admin: 'jonathan@openstack.org'
password: "{{ mailman_list_password }}"
- name: kata-hypervisor
description: 'Discussion of security and virtualization targeted at container use cases'
admin: 'jonathan@openstack.org'
password: "{{ mailman_list_password }}"
- name: embargo-notice
description: 'Announcements of embargoed notices for the Kata Containers project'
admin: 'jonathan@openstack.org'
password: "{{ mailman_list_password }}"

@ -94,3 +94,265 @@ exim_transports:
headers_remove = Errors-To
max_rcpt = 1
return_path = ${local_part:$return_path}+$local_part=$domain@${domain:$return_path}
mailman_multihost: true
mailman_sites:
- name: airship
listdomain: lists.airshipit.org
install_languages: ['en']
lists:
- name: mailman
description: 'The mailman site list'
admin: 'nobody@openstack.org'
password: "{{ mailman_list_password }}"
- name: airship-announce
description: 'Announcements of Airship releases and other important information.'
admin: 'jonathan@openstack.org'
password: "{{ mailman_list_password }}"
- name: airship-discuss
description: 'Discussion of Airship usage and development.'
admin: 'jonathan@openstack.org'
password: "{{ mailman_list_password }}"
- name: airship-job-failures
description: 'Notification messages for failures from CICD jobs.'
admin: 'roman.gorshunov@att.com'
password: "{{ mailman_list_password }}"
- name: airship-security
description: 'Public Airship security advisories.'
admin: 'andrew.walters@att.com'
password: "{{ mailman_list_password }}"
- name: airship-embargo-notice
description: 'Embargoed security vulnerability announcements for Airship consumers.'
admin: 'andrew.walters@att.com'
password: "{{ mailman_list_password }}"
- name: opendev
listdomain: lists.opendev.org
install_languages: ['en']
lists:
- name: mailman
description: 'The mailman site list'
admin: 'nobody@openstack.org'
password: "{{ mailman_list_password }}"
- name: rust-vmm
description: 'Collaborating on Rust-based virtual machine monitors.'
admin: 'claire@openstack.org'
password: "{{ mailman_list_password }}"
- name: rustyk8s
description: 'Collaborating on Rust-based Kubernetes API.'
admin: 'allison@lohutok.net'
password: "{{ mailman_list_password }}"
- name: nbmp-discuss
description: 'Collaborating on Network Based Media Processing related platform and infrastructure systems usage and development.'
admin: 'ildiko@openstack.org'
password: "{{ mailman_list_password }}"
- name: service-announce
description: 'Announcement list for OpenDev services.'
admin: 'cboylan@sapwetik.org'
password: "{{ mailman_list_password }}"
- name: service-discuss
description: 'Discussion list for OpenDev services.'
admin: 'cboylan@sapwetik.org'
password: "{{ mailman_list_password }}"
- name: service-incident
description: 'Private list for OpenDev incident coordination.'
admin: 'cboylan@sapwetik.org'
password: "{{ mailman_list_password }}"
- name: openinfralabs
description: 'Discussion of the OpenInfra Labs academic and research resource sharing effort'
admin: 'mnaser@vexxhost.com'
password: "{{ mailman_list_password }}"
- name: openstack
listdomain: lists.openstack.org
install_languages: ['de', 'fr', 'it', 'ko', 'ru', 'vi', 'zh_TW']
lists:
- name: mailman
description: 'The mailman site list'
admin: 'nobody@openstack.org'
password: "{{ mailman_list_password }}"
- name: openstack-es
description: 'Lista de correo acerca de OpenStack en español'
admin: 'flavio@redhat.com'
password: "{{ mailman_list_password }}"
- name: openstack-fr
description: 'List of the OpenStack french user group'
admin: 'erwan@erwan.com'
password: "{{ mailman_list_password }}"
- name: openstack-de
description: 'List for German-speaking OpenStack users'
admin: 'christian@berendt.io'
password: "{{ mailman_list_password }}"
- name: openstack-i18n
description: 'List of the OpenStack Internationalization team.'
admin: 'guoyingc@cn.ibm.com'
password: "{{ mailman_list_password }}"
- name: openstack-i18n-de
description: 'List of the German OpenStack Internationalization team.'
admin: 'robert.simai@suse.com'
password: "{{ mailman_list_password }}"
- name: openstack-ir
description: 'OpenStack IRAN Community Discussions in Persian/Farsi'
admin: 'Roozbeh.Shafiee@Gmail.Com'
password: "{{ mailman_list_password }}"
- name: openstack-it
description: 'Discussioni su OpenStack in italiano'
admin: 'stefano@openstack.org'
password: "{{ mailman_list_password }}"
- name: openstack-el
description: 'List of the OpenStack Greek User Group'
admin: 'aparathyras@stackmasters.eu'
password: "{{ mailman_list_password }}"
- name: openstack-travel-committee
description: 'Private discussions for the OpenStack Travel Program Committee for Hong Kong Summit 2013.'
admin: 'communitymngr@openstack.org'
password: "{{ mailman_list_password }}"
- name: openstack-personas
description: 'A group of designers, researchers, developers, writers and users that are creating a set of personas for OpenStack that are intended to help drive development around the needs of our users.'
admin: 'pieter.c.kruithof-jr@hp.com'
password: "{{ mailman_list_password }}"
- name: openstack-vi
description: 'Discussions in Vietnamese - please add Vietnamese translation here'
admin: 'hang.tran@dtt.vn'
password: "{{ mailman_list_password }}"
- name: openstack-tw
description: 'OpenStack Taiwan User Group 臺灣使用者郵件群組)'
admin: 'macjacktw@hotmail.com'
password: "{{ mailman_list_password }}"
- name: openstack-ko
description: 'OpenStack Korea Community Discussions in Korean (오픈스택 한국 커뮤니티 메일링리스트)'
admin: 'ianyrchoi@gmail.com'
password: "{{ mailman_list_password }}"
- name: openstack-ru
description: 'Рассылка для обсуждения OpenStack на русском'
admin: 'ilyaalekseyev@acm.org'
password: "{{ mailman_list_password }}"
- name: openstack-zh
description: 'OpenStack社区中文讨论群组'
admin: 'yeluaiesec@gmail.com'
password: "{{ mailman_list_password }}"
- name: nov-2013-track-chairs
description: 'Coordination of tracks at OpenStack Summit April 2013'
admin: 'claire@openstack.org'
password: "{{ mailman_list_password }}"
- name: openstack-track-chairs
description: 'Coordination of tracks at OpenStack Summits'
admin: 'claire@openstack.org'
password: "{{ mailman_list_password }}"
- name: summitsponsors
description: 'Coordination among OpenStack Summit event sponsors'
admin: 'claire@openstack.org'
password: "{{ mailman_list_password }}"
- name: openstack-sos
description: 'Coordination of activities for Significant Others at Summits'
admin: 'dms@danplanet.com'
password: "{{ mailman_list_password }}"
- name: defcore-committee
description: 'Discussions of the OpenStack Foundation Core Definition Committee'
admin: 'josh@openstack.org'
password: "{{ mailman_list_password }}"
- name: ambassadors
description: 'Private discussions between OpenStack Ambassadors'
admin: 'tom@openstack.org'
password: "{{ mailman_list_password }}"
- name: superuser
description: 'Discussions for Superuser editorial advisors to collaborate, and for readers to be able to contact the editorial team to make suggestions, provide feedback'
admin: 'lauren@openstack.org'
password: "{{ mailman_list_password }}"
- name: admin-cert-wg
description: 'Collaboration workspace for members of the Certified OpenStack Administrator Working Group of the User Commitee/Board.'
admin: 'heidi@openstack.org'
password: "{{ mailman_list_password }}"
- name: openstack-api-consumers
description: 'Discussions around consuming the OpenStack REST APIs and development of API-consuming SDKs and frameworks'
admin: 'mordred@inaugust.com'
password: "{{ mailman_list_password }}"
- name: enterprise-wg
description: 'Collaboration workspace for members of the Win The Enterprise Working Group of the User Commitee/Board.'
admin: 'carol.l.barrett@intel.com'
password: "{{ mailman_list_password }}"
- name: product-wg
description: 'Collaboration workspace for OpenStack-related Product Managers working group.'
admin: 'stefano@openstack.org'
password: "{{ mailman_list_password }}"
- name: tax-affairs
description: 'board committee focused on tax issues.'
admin: 'seanroberts66@gmail.com'
password: "{{ mailman_list_password }}"
- name: third-party-announce
description: 'Announcements for third party CI operators.'
admin: 'anteaya@anteaya.info'
password: "{{ mailman_list_password }}"
- name: foundation-testing-standards
description: 'OpenStack Foundation test standards (for humans, not drivers) working group list.'
admin: 'seanroberts66@gmail.com'
password: "{{ mailman_list_password }}"
- name: analyst-relations
description: 'Coordination of Analyst Relations Working Group.'
admin: 'lauren@openstack.org'
password: "{{ mailman_list_password }}"
- name: app-catalog-admin
description: 'Coordinate admin details for OpenStack Community App Catalog.'
admin: 'doc@aedo.net'
password: "{{ mailman_list_password }}"
- name: openstack-i18n-fr
description: 'List of the OpenStack Internationalization team, french local group.'
admin: 'jftalta@gmail.com'
password: "{{ mailman_list_password }}"
- name: release-job-failures
description: 'Notification messages for failures from release-related build jobs.'
admin: 'doug@doughellmann.com'
password: "{{ mailman_list_password }}"
- name: embargo-notice
description: 'Announcements to stakeholders for embargoed security vulnerabilities.'
admin: 'jeremy@openstack.org'
password: "{{ mailman_list_password }}"
- name: release-announce
description: 'Announcement of official OpenStack releases.'
admin: 'thierry@openstack.org'
password: "{{ mailman_list_password }}"
- name: edge-computing
description: 'Organizing efforts around the edge-computing focus area.'
admin: 'claire@openstack.org'
password: "{{ mailman_list_password }}"
- name: openstack-mentoring
description: 'List to coordinate interactions between mentors and mentees of the OpenStack mentoring program. Also for questions about the mentoring program (i.e. how to get involved, how it works, etc.'
admin: 'amy@demarco.com'
password: "{{ mailman_list_password }}"
- name: openstack-discuss
description: 'Discussion of OpenStack usage and development.'
admin: 'fungi@yuggoth.org'
password: "{{ mailman_list_password }}"
- name: starlingx
listdomain: lists.starlingx.io
install_languages: ['en']
lists:
- name: mailman
description: 'The mailman site list'
admin: 'nobody@openstack.org'
password: "{{ mailman_list_password }}"
- name: starlingx-announce
description: 'Announcements of StarlingX releases and other important information.'
admin: 'jonathan@openstack.org'
password: "{{ mailman_list_password }}"
- name: starlingx-discuss
description: 'Discussion of StarlingX usage and development.'
admin: 'jonathan@openstack.org'
password: "{{ mailman_list_password }}"
- name: zuul
listdomain: lists.zuul-ci.org
install_languages: ['en']
lists:
- name: mailman
description: 'The mailman site list'
admin: 'nobody@openstack.org'
password: "{{ mailman_list_password }}"
- name: zuul-announce
description: 'Announcements of Zuul releases and other important information.'
admin: 'corvus@inaugust.com'
password: "{{ mailman_list_password }}"
- name: zuul-discuss
description: 'Discussion of Zuul usage and development.'
admin: 'corvus@inaugust.com'
password: "{{ mailman_list_password }}"
- name: zuul-jobs-failures
description: 'Gets notifications about zuul-jobs periodic job failures.'
admin: 'ssbarnea@redhat.com'
password: "{{ mailman_list_password }}"

@ -20,24 +20,6 @@ node /^cacti\d+\.open.*\.org$/ {
}
}
# Node-OS: xenial
node /^lists\d*\.open.*\.org$/ {
class { 'openstack_project::server': }
class { 'openstack_project::lists':
listpassword => hiera('listpassword'),
}
}
# Node-OS: xenial
node /^lists\d*\.katacontainers\.io$/ {
class { 'openstack_project::server': }
class { 'openstack_project::kata_lists':
listpassword => hiera('listpassword'),
}
}
# Node-OS: xenial
node /^paste\d*\.open.*\.org$/ {
$group = "paste"

@ -20,8 +20,6 @@ results:
lists.katacontainers.io:
- mailman
- puppet
- puppet4
logstash-worker02.openstack.org:
- logstash-worker

@ -0,0 +1 @@
Role to create a mailman list if it doesn't already exist

@ -0,0 +1,35 @@
# The bulk of this role can likely be replaced with:
# https://github.com/CCI-MOC/moc-ansible-mailman
# Just a note for possible future improvement.
- name: Block for multihost lists
block:
- name: Set mailman site root fact
set_fact:
mm_site_root: "/srv/mailman/{{ mm_site_name }}"
cacheable: no
- name: Check if the site list exists
command: list_lists --bare
environment:
MAILMAN_SITE_DIR: "{{ mm_site_root }}"
register: listlists
- name: Create the site list if it doesn't exist
command: "newlist {% if mailman_test_mode is defined and mailman_test_mode %} -q {% endif %} {{ mm_list_name }} {{ mm_list_admin }} {{ mm_list_password }}"
environment:
MAILMAN_SITE_DIR: "{{ mm_site_root }}"
when:
- ( listlists.stdout_lines | intersect([ mm_list_name ]) | length | int ) == 0
when: mm_site_name != "_default"
- name: Block for normal lists
block:
- name: Check if the list exists
command: list_lists --bare
register: listlists
- name: Create the list if it doesn't exist
command: "newlist {% if mailman_test_mode is defined and mailman_test_mode %} -q {% endif %} {{ mm_list_name }} {{ mm_list_admin }} {{ mm_list_password }}"
when:
- ( listlists.stdout_lines | intersect([ mm_list_name ]) | length | int ) == 0
when: mm_site_name == "_default"
# TODO we accept a description parameter but don't do anything with it

@ -0,0 +1 @@
Role to configure a mailman site in a multihost environment

@ -0,0 +1,60 @@
The administrative requests are displayed in one of two ways, on a <a
href="%(summaryurl)s">summary page</a>, and on a <em>details</em> page.
The summary page contains pending subscription and unsubscription
requests, as well as postings being held for your approval, grouped by
sender email address. The details page contains a more detailed view of
each held message, including the all the message's headers and an
excerpt of the message body.
<p>On all the pages, the following actions are available:
<ul> <li><b>Defer</b> -- Defer your decision until later. No action is
taken now for this pending administrative request, but for held
postings, you can still forward or preserve the message (see below).
<li><b>Approve</b> -- Approve the message, sending it on to the list.
For membership requests, approve the change in membership status.
<li><b>Reject</b> -- Reject the message, sending a rejection notice to
the sender, and discarding the original message. For membership
requests, reject the change in membership status. In either case, you
should add a reason for the rejection in the accompanying text box.
<li><b>Discard</b> -- Throw away the original message, without sending a
rejection notice. For membership requests, this simply discards the
request without notice to the person making the request. This is
usually the action you want to take for known spam. </ul>
<p>For held messages, turn on the <b>Preserve</b> option if you want to
save a copy of the message for the site administrator. This is useful
for abusive messages that you want to discard, but need to keep a record
of for later inspection.
<p>Turn on the <b>Forward to</b> option, and fill in the forwarding
address if you want to forward the message to someone else not on the
list. To edit a held message before it is sent on to the list, you
should forward the message to yourself (or the list owners), and discard
the original message. Then, when the message shows up in your mailbox,
make your edits and resend the message to the list, including an
<tt>Approved:</tt> header with the list password as its value. It is
proper netiquette in this case to include a note in the resent message,
explaining that you have modified the text.
<p>If the sender is a list member who is being moderated, you can
optionally clear their moderation flag. This is useful when your list
is configured to put new members on probation, and you've decided that
this member can be trusted to post to the list without approval.
<p>If the sender is not a list member, you can add the email address to
a <em>sender filter</em>. Sender filters are described on the <a
href="%(filterurl)s">sender filter privacy page</a>, and may be one of
<b>auto-accept</b> (Accepts), <b>auto-hold</b> (Holds),
<b>auto-reject</b> (Rejects), or <b>auto-discard</b> (Discards). This
option will not be available if the address is already on one of the
sender filters.
<p>When you're finished, click on the <em>Submit All Data</em> button at
the top or bottom of the page. This button will submit all selected
actions for all administrative requests that you've made a decision for.
<p><a href="%(summaryurl)s">Return to the summary page</a>.

@ -0,0 +1,10 @@
This page contains a subset of the <em>%(listname)s</em> mailing list
postings that are being held for your approval. It currently shows
%(description)s
<p>For each administrative request, please select the action to take,
clicking on the <b>Submit All Data</b> when finished. More detailed
instructions are available <a href="%(detailsurl)s">here</a>.
<p>You can also <a href="%(summaryurl)s">view a summary</a> of all
pending requests.

@ -0,0 +1,14 @@
This page contains a summary of the current set of administrative
requests requiring your approval for the
<a href="%(adminurl)s"><em>%(listname)s</em> mailing list</a>.
First, you will find the list of pending
subscription and unsubscription requests, if any, followed by any
postings being held for your approval.
<p>For each administrative request, please select the action to take,
clicking on the <b>Submit All Data</b> button when finished.
<a href="%(detailsurl)s">More detailed instructions</a> are also
available.
<p>You can also <a href="%(viewallurl)s">view the details</a> of all
held postings.

@ -0,0 +1,3 @@
%(member)s has been successfully subscribed to %(listname)s.

@ -0,0 +1,40 @@
<html>
<head>
<title>%(listname)s %(who)s Authentication</title>
<script>function sf(){document.f.adminpw.focus();}</script>
</head>
<body bgcolor="#ffffff" onLoad="sf()">
<FORM METHOD=POST ACTION="%(path)s" name="f">
%(message)s
<TABLE WIDTH="100%%" BORDER="0" CELLSPACING="4" CELLPADDING="5">
<TR>
<TD COLSPAN="2" WIDTH="100%%" BGCOLOR="#99CCFF" ALIGN="CENTER">
<B><FONT COLOR="#000000" SIZE="+1">%(listname)s %(who)s
Authentication</FONT></B>
</TD>
</TR>
<tr>
<TD><div ALIGN="Right">List %(who)s Password:</div></TD>
<TD><INPUT TYPE="password" NAME="adminpw" SIZE="30"></TD>
</tr>
<tr>
<td colspan=2 align=middle><INPUT type="SUBMIT"
name="admlogin"
value="Let me in...">
</td>
</tr>
</TABLE>
<p><strong><em>Important:</em></strong> From this point on, you
must have cookies enabled in your browser, otherwise no
administrative changes will take effect.
<p>Session cookies are used in Mailman's
administrative interface so that you don't need to
re-authenticate with every administrative operation. This
cookie will expire automatically when you exit your browser, or
you can explicitly expire the cookie by hitting the
<em>Logout</em> link under <em>Other Administrative
Activities</em> (which you'll see once you successfully log in).
</FORM>
</body>
</html>

@ -0,0 +1,15 @@
Your request to %(requestaddr)s:
%(cmd)s
has been forwarded to the person running the list.
This is probably because you are trying to subscribe to a 'closed'
list.
You will receive email notification of the list owner's decision about
your subscription request.
Any questions about the list owner's policy should be directed to:
%(adminaddr)s

@ -0,0 +1,4 @@
<LI><A HREF="%(filename)s">%(subject)s
</A><A NAME="%(sequence)i">&nbsp;</A>
<I>%(author)s
</I>

@ -0,0 +1,64 @@
</ul>
<p>
<a name="end"><b>Last message date:</b></a>
<i>%(lastdate)s</i><br>
<b>Archived on:</b> <i>%(archivedate)s</i>
<p>
<ul>
<li> <b>Messages sorted by:</b>
%(thread_ref)s
%(subject_ref)s
%(author_ref)s
%(date_ref)s
<li><b><a href="%(listinfo)s">More info on this list...
</a></b></li>
</ul>
<div class="container">
<hr>
<i>This archive was generated by Pipermail %(version)s.</i>
<div id="footer">
<div class="span-4">
<h3>OpenStack</h3>
<ul>
<li><a href="https://www.openstack.org/projects/">Projects</a></li>
<li><a href="https://security.openstack.org/">OpenStack Security</a></li>
<li><a href="https://www.openstack.org/projects/openstack-faq/">Common Questions</a></li>
<li><a href="https://www.openstack.org/blog/">Blog</a></li>
<li><a href="https://www.openstack.org/news/">News</a></li>
</ul>
</div>
<div class="span-4">
<h3>Community</h3>
<ul>
<li><a href="https://www.openstack.org/community/">User Groups</a></li>
<li><a href="https://www.openstack.org/events/">Events</a></li>
<li><a href="https://www.openstack.org/jobs/">Jobs</a></li>
<li><a href="https://www.openstack.org/foundation/companies/">Companies</a></li>
<li><a href="https://docs.opendev.org/opendev/infra-manual/latest/developers.html">Contribute</a></li>
</ul>
</div>
<div class="span-4">
<h3>Documentation</h3>
<ul>
<li><a href="https://docs.openstack.org/">OpenStack Manuals</a></li>
<li><a href="https://www.openstack.org/software/start/">Getting Started</a></li>
<li><a href="https://developer.openstack.org">API Documentation</a></li>
<li><a href="https://wiki.openstack.org/">Wiki</a></li>
</ul>
</div>
<div class="span-4 last">
<h3>Branding &amp; Legal</h3>
<ul>
<li><a href="https://www.openstack.org/brand/">Logos &amp; Guidelines</a></li>
<li><a href="https://www.openstack.org/brand/openstack-trademark-policy/">Trademark Policy</a></li>
<li><a href="https://www.openstack.org/privacy/">Privacy Policy</a></li>
<li><a href="https://wiki.openstack.org/CLA">OpenStack CLA</a></li>
</ul>
</div>
<hr>
</div>
</div>
</div>
</BODY>
</HTML>

@ -0,0 +1,89 @@
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<HTML>
<HEAD>
<title>OpenStack Open Source Cloud Computing Software &raquo; The %(listname)s %(archive)s Archive by %(archtype)s</title>
<META NAME="robots" CONTENT="noindex,follow">
%(encoding)s
<!-- Google Fonts -->
<link href='https://fonts.googleapis.com/css?family=PT+Sans&subset=latin' rel='stylesheet' type='text/css'>
<!-- Framework CSS -->
<link rel="stylesheet" href="https://openstack.org/themes/openstack/css/blueprint/screen.css" type="text/css" media="screen, projection">
<link rel="stylesheet" href="https://openstack.org/themes/openstack/css/blueprint/print.css" type="text/css" media="print">
<!-- IE CSS -->
<!--[if lt IE 8]><link rel="stylesheet" href="https://openstack.org/blueprint/ie.css" type="text/css" media="screen, projection"><![endif]-->
<!-- OpenStack Specific CSS -->
<link rel="stylesheet" href="https://openstack.org/themes/openstack/css/dropdown.css" type="text/css" media="screen, projection, print">
<!-- Page Specific CSS -->
<link rel="stylesheet" href="https://openstack.org/themes/openstack/css/home.css" type="text/css" media="screen, projection, print">
<link rel="stylesheet" type="text/css" href="https://openstack.org/themes/openstack/css/main.css?m=1335457934" />
<script type="text/javascript">
var _gaq = _gaq || [];
_gaq.push(['_setAccount', 'UA-17511903-1']);
_gaq.push(['_setDomainName', '.openstack.org']);
_gaq.push(['_trackPageview']);
(function() {
var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
})();
</script>
</HEAD>
<BODY>
<div class="container">
<div id="header">
<div class="span-5">
<h1 id="logo"><a href="/">Open Stack</a></h1>
</div>
<div class="span-19 last blueLine">
<div id="navigation" class="span-19">
<ul id="Menu1">
<li><a href="https://openstack.org/" title="Go to the Home page" class="link" >Home</a></li>
<li><a href="https://openstack.org/projects/" title="Go to the OpenStack Projects page" class="link">Projects</a></li>
<li><a href="https://openstack.org/user-stories/" title="Go to the User Stories page" class="link">User Stories</a></li>
<li><a href="https://openstack.org/community/" title="Go to the Community page" class="current">Community</a></li>
<li><a href="https://openstack.org/blog/" title="Go to the OpenStack Blog">Blog</a></li>
<li><a href="https://wiki.openstack.org/" title="Go to the OpenStack Wiki">Wiki</a></li>
<li><a href="https://docs.openstack.org/" title="Go to OpenStack Documentation">Documentation</a></li>
</ul>
</div>
</div>
</div>
</div>
<!-- Page Content -->
<div class="container">
<a name="start"></A>
<h1>%(archive)s Archives by %(archtype)s</h1>
<ul>
<li> <b>Messages sorted by:</b>
%(thread_ref)s
%(subject_ref)s
%(author_ref)s
%(date_ref)s
<li><b><a href="%(listinfo)s">More info on this list...
</a></b></li>
</ul>
<p><b>Starting:</b> <i>%(firstdate)s</i><br>
<b>Ending:</b> <i>%(lastdate)s</i><br>
<b>Messages:</b> %(size)s<p>
<ul>

@ -0,0 +1,4 @@
<table border=3>
<tr><td>Archive</td>
<td>View by:</td>
<td>Downloadable version</td></tr>

@ -0,0 +1,130 @@
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<HTML>
<HEAD>
<title>OpenStack Open Source Cloud Computing Software &raquo; The %(listname)s Archives</title>
<META NAME="robots" CONTENT="noindex,follow">
%(meta)s
<!-- Google Fonts -->
<link href='https://fonts.googleapis.com/css?family=PT+Sans&subset=latin' rel='stylesheet' type='text/css'>
<!-- Framework CSS -->
<link rel="stylesheet" href="https://openstack.org/themes/openstack/css/blueprint/screen.css" type="text/css" media="screen, projection">
<link rel="stylesheet" href="https://openstack.org/themes/openstack/css/blueprint/print.css" type="text/css" media="print">
<!-- IE CSS -->
<!--[if lt IE 8]><link rel="stylesheet" href="https://openstack.org/blueprint/ie.css" type="text/css" media="screen, projection"><![endif]-->
<!-- OpenStack Specific CSS -->
<link rel="stylesheet" href="https://openstack.org/themes/openstack/css/dropdown.css" type="text/css" media="screen, projection, print">
<!-- Page Specific CSS -->
<link rel="stylesheet" href="https://openstack.org/themes/openstack/css/home.css" type="text/css" media="screen, projection, print">
<link rel="stylesheet" type="text/css" href="https://openstack.org/themes/openstack/css/main.css?m=1335457934" />
<script type="text/javascript">
var _gaq = _gaq || [];
_gaq.push(['_setAccount', 'UA-17511903-1']);
_gaq.push(['_setDomainName', '.openstack.org']);
_gaq.push(['_trackPageview']);
(function() {
var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
})();
</script>
</HEAD>
<BODY>
<div class="container">
<div id="header">
<div class="span-5">
<h1 id="logo"><a href="/">Open Stack</a></h1>
</div>
<div class="span-19 last blueLine">
<div id="navigation" class="span-19">
<ul id="Menu1">
<li><a href="https://openstack.org/" title="Go to the Home page" class="link" >Home</a></li>
<li><a href="https://openstack.org/projects/" title="Go to the OpenStack Projects page" class="link">Projects</a></li>
<li><a href="https://openstack.org/user-stories/" title="Go to the User Stories page" class="link">User Stories</a></li>
<li><a href="https://openstack.org/community/" title="Go to the Community page" class="current">Community</a></li>
<li><a href="https://openstack.org/blog/" title="Go to the OpenStack Blog">Blog</a></li>
<li><a href="https://wiki.openstack.org/" title="Go to the OpenStack Wiki">Wiki</a></li>
<li><a href="https://docs.openstack.org/" title="Go to OpenStack Documentation">Documentation</a></li>
</ul>
</div>
</div>
</div>
</div>
<!-- Page Content -->
<div class="container">
<h1>The %(listname)s Archives </h1>
<p>
You can get <a href="%(listinfo)s">more information about this list</a>
or you can <a href="%(fullarch)s">download the full raw archive</a>
(%(size)s).
</p>
%(noarchive_msg)s
%(archive_listing_start)s
%(archive_listing)s
%(archive_listing_end)s
<div class="container">
<hr>
<div id="footer">
<div class="span-4">
<h3>OpenStack</h3>
<ul>
<li><a href="https://www.openstack.org/projects/">Projects</a></li>
<li><a href="https://security.openstack.org/">OpenStack Security</a></li>
<li><a href="https://www.openstack.org/projects/openstack-faq/">Common Questions</a></li>
<li><a href="https://www.openstack.org/blog/">Blog</a></li>
<li><a href="https://www.openstack.org/news/">News</a></li>
</ul>
</div>
<div class="span-4">
<h3>Community</h3>
<ul>
<li><a href="https://www.openstack.org/community/">User Groups</a></li>
<li><a href="https://www.openstack.org/events/">Events</a></li>
<li><a href="https://www.openstack.org/jobs/">Jobs</a></li>
<li><a href="https://www.openstack.org/foundation/companies/">Companies</a></li>
<li><a href="https://docs.opendev.org/opendev/infra-manual/latest/developers.html">Contribute</a></li>
</ul>
</div>
<div class="span-4">
<h3>Documentation</h3>
<ul>
<li><a href="https://docs.openstack.org/">OpenStack Manuals</a></li>
<li><a href="https://www.openstack.org/software/start/">Getting Started</a></li>
<li><a href="https://developer.openstack.org">API Documentation</a></li>
<li><a href="https://wiki.openstack.org/">Wiki</a></li>
</ul>
</div>
<div class="span-4 last">
<h3>Branding &amp; Legal</h3>
<ul>
<li><a href="https://www.openstack.org/brand/">Logos &amp; Guidelines</a></li>
<li><a href="https://www.openstack.org/brand/openstack-trademark-policy/">Trademark Policy</a></li>
<li><a href="https://www.openstack.org/privacy/">Privacy Policy</a></li>
<li><a href="https://wiki.openstack.org/CLA">OpenStack CLA</a></li>
</ul>
</div>
<hr>
</div>
</div>
</div>
</BODY>
</HTML>

@ -0,0 +1,12 @@
<tr>
<td>%(archivelabel)s:</td>
<td>
<A href="%(archive)s/thread.html">[ Thread ]</a>
<A href="%(archive)s/subject.html">[ Subject ]</a>
<A href="%(archive)s/author.html">[ Author ]</a>
<A href="%(archive)s/date.html">[ Date ]</a>
</td>
%(textlink)s
</tr>

@ -0,0 +1,131 @@
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<HTML>
<HEAD>
<title>OpenStack Open Source Cloud Computing Software &raquo; The %(listname)s Archives</title>
<META NAME="robots" CONTENT="noindex,follow">
%(meta)s
<!-- Google Fonts -->
<link href='https://fonts.googleapis.com/css?family=PT+Sans&subset=latin' rel='stylesheet' type='text/css'>
<!-- Framework CSS -->
<link rel="stylesheet" href="https://openstack.org/themes/openstack/css/blueprint/screen.css" type="text/css" media="screen, projection">
<link rel="stylesheet" href="https://openstack.org/themes/openstack/css/blueprint/print.css" type="text/css" media="print">
<!-- IE CSS -->
<!--[if lt IE 8]><link rel="stylesheet" href="https://openstack.org/blueprint/ie.css" type="text/css" media="screen, projection"><![endif]-->
<!-- OpenStack Specific CSS -->
<link rel="stylesheet" href="https://openstack.org/themes/openstack/css/dropdown.css" type="text/css" media="screen, projection, print">
<!-- Page Specific CSS -->
<link rel="stylesheet" href="https://openstack.org/themes/openstack/css/home.css" type="text/css" media="screen, projection, print">
<link rel="stylesheet" type="text/css" href="https://openstack.org/themes/openstack/css/main.css?m=1335457934" />
<script type="text/javascript">
var _gaq = _gaq || [];
_gaq.push(['_setAccount', 'UA-17511903-1']);
_gaq.push(['_setDomainName', '.openstack.org']);
_gaq.push(['_trackPageview']);
(function() {
var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
})();
</script>
</HEAD>
<BODY>
<div class="container">
<div id="header">
<div class="span-5">
<h1 id="logo"><a href="/">Open Stack</a></h1>
</div>
<div class="span-19 last blueLine">
<div id="navigation" class="span-19">
<ul id="Menu1">
<li><a href="https://openstack.org/" title="Go to the Home page" class="link" >Home</a></li>
<li><a href="https://openstack.org/projects/" title="Go to the OpenStack Projects page" class="link">Projects</a></li>
<li><a href="https://openstack.org/user-stories/" title="Go to the User Stories page" class="link">User Stories</a></li>
<li><a href="https://openstack.org/community/" title="Go to the Community page" class="current">Community</a></li>
<li><a href="https://openstack.org/blog/" title="Go to the OpenStack Blog">Blog</a></li>
<li><a href="https://wiki.openstack.org/" title="Go to the OpenStack Wiki">Wiki</a></li>
<li><a href="https://docs.openstack.org/" title="Go to OpenStack Documentation">Documentation</a></li>
</ul>
</div>
</div>
</div>
</div>
<!-- Page Content -->
<div class="container">
<h1>The %(listname)s Archives </h1>
<p>
You can get <a href="%(listinfo)s">more information about this list</a>.
</p>
%(noarchive_msg)s
%(archive_listing_start)s
%(archive_listing)s
%(archive_listing_end)s
<div class="container">
<hr>
<div id="footer">
<div class="span-4">
<h3>OpenStack</h3>
<ul>
<li><a href="https://www.openstack.org/projects/">Projects</a></li>
<li><a href="https://security.openstack.org/">OpenStack Security</a></li>
<li><a href="https://www.openstack.org/projects/openstack-faq/">Common Questions</a></li>
<li><a href="https://www.openstack.org/blog/">Blog</a></li>
<li><a href="https://www.openstack.org/news/">News</a></li>
</ul>
</div>
<div class="span-4">
<h3>Community</h3>
<ul>
<li><a href="https://www.openstack.org/community/">User Groups</a></li>
<li><a href="https://www.openstack.org/events/">Events</a></li>
<li><a href="https://www.openstack.org/jobs/">Jobs</a></li>
<li><a href="https://www.openstack.org/foundation/companies/">Companies</a></li>
<li><a href="https://docs.opendev.org/opendev/infra-manual/latest/developers.html">Contribute</a></li>
</ul>
</div>
<div class="span-4">
<h3>Documentation</h3>
<ul>
<li><a href="https://docs.openstack.org/">OpenStack Manuals</a></li>
<li><a href="https://www.openstack.org/software/start/">Getting Started</a></li>
<li><a href="https://developer.openstack.org">API Documentation</a></li>
<li><a href="https://wiki.openstack.org/">Wiki</a></li>
</ul>
</div>
<div class="span-4 last">
<h3>Branding &amp; Legal</h3>
<ul>
<li><a href="https://www.openstack.org/brand/">Logos &amp; Guidelines</a></li>
<li><a href="https://www.openstack.org/brand/openstack-trademark-policy/">Trademark Policy</a></li>
<li><a href="https://www.openstack.org/privacy/">Privacy Policy</a></li>
<li><a href="https://wiki.openstack.org/CLA">OpenStack CLA</a></li>
</ul>
</div>
<hr>
</div>
</div>
</div>
</BODY>
</HTML>

@ -0,0 +1,168 @@
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<HTML>
<HEAD>
<TITLE>OpenStack Open Source Cloud Computing Software &raquo; Message: %(title)s </TITLE>
<LINK REL="Index" HREF="index.html" >
<LINK REL="made" HREF="mailto:%(email_url)s?Subject=%(subject_url)s&In-Reply-To=%(in_reply_to_url)s">
<META NAME="robots" CONTENT="index,nofollow">
<!-- Google Fonts -->
<link href='https://fonts.googleapis.com/css?family=PT+Sans&subset=latin' rel='stylesheet' type='text/css'>
<!-- Framework CSS -->
<link rel="stylesheet" href="https://openstack.org/themes/openstack/css/blueprint/screen.css" type="text/css" media="screen, projection">
<link rel="stylesheet" href="https://openstack.org/themes/openstack/css/blueprint/print.css" type="text/css" media="print">
<!-- IE CSS -->
<!--[if lt IE 8]><link rel="stylesheet" href="https://openstack.org/blueprint/ie.css" type="text/css" media="screen, projection"><![endif]-->
<!-- OpenStack Specific CSS -->
<link rel="stylesheet" href="https://openstack.org/themes/openstack/css/dropdown.css" type="text/css" media="screen, projection, print">
<!-- Page Specific CSS -->
<link rel="stylesheet" href="https://openstack.org/themes/openstack/css/home.css" type="text/css" media="screen, projection, print">
<link rel="stylesheet" type="text/css" href="https://openstack.org/themes/openstack/css/main.css?m=1335457934" />
<script type="text/javascript">
var _gaq = _gaq || [];
_gaq.push(['_setAccount', 'UA-17511903-1']);
_gaq.push(['_setDomainName', '.openstack.org']);
_gaq.push(['_trackPageview']);
(function() {
var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
})();
</script>
<style type="text/css">
pre {
white-space: pre-wrap; /* css-2.1, curent FF, Opera, Safari */
}
</style>
%(encoding)s
%(prev)s
%(next)s
</HEAD>
<BODY>
<div class="container">
<div id="header">
<div class="span-5">
<h1 id="logo"><a href="/">Open Stack</a></h1>
</div>
<div class="span-19 last blueLine">
<div id="navigation" class="span-19">
<ul id="Menu1">
<li><a href="https://openstack.org/" title="Go to the Home page" class="link" >Home</a></li>
<li><a href="https://openstack.org/projects/" title="Go to the OpenStack Projects page" class="link">Projects</a></li>
<li><a href="https://openstack.org/user-stories/" title="Go to the User Stories page" class="link">User Stories</a></li>
<li><a href="https://openstack.org/community/" title="Go to the Community page" class="current">Community</a></li>
<li><a href="https://openstack.org/blog/" title="Go to the OpenStack Blog">Blog</a></li>
<li><a href="https://wiki.openstack.org/" title="Go to the OpenStack Wiki">Wiki</a></li>
<li><a href="https://docs.openstack.org/" title="Go to OpenStack Documentation">Documentation</a></li>
</ul>
</div>
</div>
</div>
</div>
<!-- Page Content -->
<div class="container">
<H1>%(subject_html)s</H1>
<B>%(author_html)s</B>
<A HREF="mailto:%(email_url)s?Subject=%(subject_url)s&In-Reply-To=%(in_reply_to_url)s"
TITLE="%(subject_html)s">%(email_html)s
</A><BR>
<I>%(datestr_html)s</I>
<P><UL>
%(prev_wsubj)s
%(next_wsubj)s
<LI> <B>Messages sorted by:</B>
<a href="date.html#%(sequence)s">[ date ]</a>
<a href="thread.html#%(sequence)s">[ thread ]</a>
<a href="subject.html#%(sequence)s">[ subject ]</a>
<a href="author.html#%(sequence)s">[ author ]</a>
</LI>
</UL>
<HR>
<!--beginarticle-->
%(body)s
<!--endarticle-->
<HR>
<P><UL>
<!--threads-->
%(prev_wsubj)s
%(next_wsubj)s
<LI> <B>Messages sorted by:</B>
<a href="date.html#%(sequence)s">[ date ]</a>
<a href="thread.html#%(sequence)s">[ thread ]</a>
<a href="subject.html#%(sequence)s">[ subject ]</a>
<a href="author.html#%(sequence)s">[ author ]</a>
</LI>
</UL>
<hr>
<a href="%(listurl)s">More information about the %(listname)s
mailing list</a><br>
<div class="container">
<hr>
<div id="footer">
<div class="span-4">
<h3>OpenStack</h3>
<ul>
<li><a href="https://www.openstack.org/projects/">Projects</a></li>
<li><a href="https://security.openstack.org/">OpenStack Security</a></li>
<li><a href="https://www.openstack.org/projects/openstack-faq/">Common Questions</a></li>
<li><a href="https://www.openstack.org/blog/">Blog</a></li>
<li><a href="https://www.openstack.org/news/">News</a></li>
</ul>
</div>
<div class="span-4">
<h3>Community</h3>
<ul>
<li><a href="https://www.openstack.org/community/">User Groups</a></li>
<li><a href="https://www.openstack.org/events/">Events</a></li>
<li><a href="https://www.openstack.org/jobs/">Jobs</a></li>
<li><a href="https://www.openstack.org/foundation/companies/">Companies</a></li>
<li><a href="https://docs.opendev.org/opendev/infra-manual/latest/developers.html">Contribute</a></li>
</ul>
</div>
<div class="span-4">
<h3>Documentation</h3>
<ul>
<li><a href="https://docs.openstack.org/">OpenStack Manuals</a></li>
<li><a href="https://www.openstack.org/software/start/">Getting Started</a></li>
<li><a href="https://developer.openstack.org">API Documentation</a></li>
<li><a href="https://wiki.openstack.org/">Wiki</a></li>
</ul>
</div>
<div class="span-4 last">
<h3>Branding &amp; Legal</h3>
<ul>
<li><a href="https://www.openstack.org/brand/">Logos &amp; Guidelines</a></li>
<li><a href="https://www.openstack.org/brand/openstack-trademark-policy/">Trademark Policy</a></li>
<li><a href="https://www.openstack.org/privacy/">Privacy Policy</a></li>
<li><a href="https://wiki.openstack.org/CLA">OpenStack CLA</a></li>
</ul>
</div>
<hr>
</div>
</div>
</div>
</body></html>

@ -0,0 +1,13 @@
This is a Mailman mailing list bounce action notice:
List: %(listname)s
Member: %(addr)s
Action: Subscription %(negative)s%(did)s.
Reason: Excessive or fatal bounces.
%(but)s
%(reenable)s
The triggering bounce notice is attached below.
Questions?
Contact the Mailman site administrator at %(owneraddr)s.

@ -0,0 +1,7 @@
The %(real_name)s@%(host_name)s mailing list has %(count)d request(s)
waiting for your consideration at:
%(adminDB)s
Please attend to this at your earliest convenience. This notice of
pending requests, if any, will be sent out daily.

@ -0,0 +1,34 @@
The %(listname)s mailing list has just undergone a big change. It is
running on a new mailing list package called "Mailman". This will
hopefully solve a lot of problems that administering this list has
presented.
How does this affect you?
1) Mail intended for the whole list should be sent to: %(listaddr)s.
2) You have been given an arbitrary password to prevent others from
unsubscribing you without your knowledge. It will be mailed to you in
a separate email, which you may have already received. Don't worry if
you forget this password; a reminder will be sent to you via email
every month.
3) If you have World Wide Web access, you can use it any time to
unsubscribe from this list, to switch to and from digest mode, to
check back issues of the list (which will be available after the list
has been getting posts for a day or so), etc. The Web address for
these resources is:
%(listinfo_url)s
4) If you do not have WWW access, you can do these same things via
email. Send mail to %(requestaddr)s with a subject or body containing
just the word "help" (without the quotes). You will receive an
automated reply giving you further directions.
Please address any questions or problems with this new setup to:
%(adminaddr)s.
This message was auto-generated by Mailman %(version)s. For more
information on the Mailman software, visit the Mailman homepage at
http://www.list.org/

@ -0,0 +1,19 @@
This is a reminder, sent out once a month, about your %(hostname)s
mailing list memberships. It includes your subscription info and how
to use it to change it or unsubscribe from a list.
You can visit the URLs to change your membership status or
configuration, including unsubscribing, setting digest-style delivery
or disabling delivery altogether (e.g., for a vacation), and so on.
In addition to the URL interfaces, you can also use email to make such
changes. For more info, send a message to the '-request' address of
the list (for example, %(exreq)s) containing just the word 'help' in
the message body, and an email message will be sent to you with
instructions.
If you have questions, problems, comments, etc, send them to
%(owner)s. Thanks!
Passwords for %(useraddr)s:

@ -0,0 +1,25 @@
Your membership in the mailing list %(listname)s has been disabled
%(reason)s. You will not get any more messages from this
list until you re-enable your membership. You will receive
%(noticesleft)s more reminders like this before your membership in the
list is deleted.
To re-enable your membership, you can simply respond to this message
(leaving the Subject: line intact), or visit the confirmation page at
%(confirmurl)s
You can also visit your membership page at
%(optionsurl)s
On your membership page, you can change various delivery options such
as your email address and whether you get digests or not. As a
reminder, your membership password is
%(password)s
If you have any questions or problems, you can contact the list owner
at
%(owneraddr)s

@ -0,0 +1,125 @@
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<HTML>
<HEAD>
<title>OpenStack Open Source Cloud Computing Software &raquo; The %(listname)s Archives</title>
<META NAME="robots" CONTENT="noindex,follow">