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 2021-05-04 11:55:47 -07:00
parent 8346b9ac6f
commit 4c4e27cb3a
74 changed files with 3507 additions and 31 deletions

View File

@ -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

View File

@ -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 }}"

View File

@ -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 }}"

View File

@ -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"

View File

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

View File

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

View File

@ -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

View File

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

View File

@ -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>.

View File

@ -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.

View File

@ -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.

View File

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

View File

@ -0,0 +1,2 @@
%(member)s has been removed from %(listname)s.

View File

@ -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>

View File

@ -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

View File

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

View File

@ -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>

View File

@ -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>

View File

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

View File

@ -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>

View File

@ -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>

View File

@ -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>

View File

@ -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>

View File

@ -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.

View File

@ -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.

View File

@ -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/

View File

@ -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:

View File

@ -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

View File

@ -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">
<!-- 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" />
i<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>
No messages have been posted to this list yet, so the archives are
currently empty. You can get <a href="%(listinfo)s">more information
about this list</a>.
</p>
<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>