Merge "Make screen_service() useful for more than services"
diff --git a/HACKING.rst b/HACKING.rst
index d69bb49..3b86529 100644
--- a/HACKING.rst
+++ b/HACKING.rst
@@ -10,8 +10,8 @@
Shell script was chosen because it best illustrates the steps used to
set up and interact with OpenStack components.
-DevStack's official repository is located on GitHub at
-https://github.com/openstack-dev/devstack.git. Besides the master branch that
+DevStack's official repository is located on git.openstack.org at
+https://git.openstack.org/openstack-dev/devstack. Besides the master branch that
tracks the OpenStack trunk branches a separate branch is maintained for all
OpenStack releases starting with Diablo (stable/diablo).
diff --git a/MAINTAINERS.rst b/MAINTAINERS.rst
index d754c08..d55135d 100644
--- a/MAINTAINERS.rst
+++ b/MAINTAINERS.rst
@@ -48,7 +48,7 @@
OpenDaylight
~~~~~~~~~~~~
-* Kyle Mestery <kmestery@cisco.com>
+* Kyle Mestery <mestery@mestery.com>
OpenFlow Agent (ofagent)
~~~~~~~~~~~~~~~~~~~~~~~~
diff --git a/doc/source/assets/css/local.css b/doc/source/assets/css/local.css
index 5c703af..c8667c4 100644
--- a/doc/source/assets/css/local.css
+++ b/doc/source/assets/css/local.css
@@ -71,7 +71,7 @@
margin-bottom: 14px;
}
-li#github {
+li#git {
background-position: left -70px !important;
height: 61px;
padding: ;
@@ -119,4 +119,4 @@
.wat {
margin-top: 33px;
-}
\ No newline at end of file
+}
diff --git a/doc/source/assets/images/quickstart.png b/doc/source/assets/images/quickstart.png
index 5400a6f..735617b 100644
--- a/doc/source/assets/images/quickstart.png
+++ b/doc/source/assets/images/quickstart.png
Binary files differ
diff --git a/doc/source/changes.html b/doc/source/changes.html
index 966b0c9..028e1cf 100644
--- a/doc/source/changes.html
+++ b/doc/source/changes.html
@@ -34,7 +34,7 @@
<li><a href="overview.html">Overview</a></li>
<li><a href="changes.html">Changes</a></li>
<li><a href="faq.html">FAQ</a></li>
- <li><a href="http://github.com/openstack-dev/devstack">GitHub</a></li>
+ <li><a href="https://git.openstack.org/cgit/openstack-dev/devstack">git.openstack.org</a></li>
<li><a href="https://review.openstack.org/#/q/status:open+project:openstack-dev/devstack,n,z">Gerrit</a></li>
</ul>
</div>
diff --git a/doc/source/configuration.html b/doc/source/configuration.html
index 044bafc..88d7476 100644
--- a/doc/source/configuration.html
+++ b/doc/source/configuration.html
@@ -34,7 +34,7 @@
<li><a href="overview.html">Overview</a></li>
<li><a href="changes.html">Changes</a></li>
<li><a href="faq.html">FAQ</a></li>
- <li><a href="http://github.com/openstack-dev/devstack">GitHub</a></li>
+ <li><a href="https://git.openstack.org/cgit/openstack-dev/devstack">git.openstack.org</a></li>
<li><a href="https://review.openstack.org/#/q/status:open+project:openstack-dev/devstack,n,z">Gerrit</a></li>
</ul>
</div>
diff --git a/doc/source/contributing.html b/doc/source/contributing.html
index f3d4b5a..9826fc7 100644
--- a/doc/source/contributing.html
+++ b/doc/source/contributing.html
@@ -34,7 +34,7 @@
<li><a href="overview.html">Overview</a></li>
<li><a href="changes.html">Changes</a></li>
<li><a href="faq.html">FAQ</a></li>
- <li><a href="http://github.com/openstack-dev/devstack">GitHub</a></li>
+ <li><a href="https://git.openstack.org/cgit/openstack-dev/devstack">git.openstack.org</a></li>
<li><a href="https://review.openstack.org/#/q/status:open+project:openstack-dev/devstack,n,z">Gerrit</a></li>
</ul>
</div>
@@ -52,7 +52,7 @@
<h3>Things To Know</h3>
<br /><strong>Where Things Are</strong>
- <p>The official DevStack repository is located at <code>git://github.com/openstack-dev/devstack.git</code> and <code>git://git.openstack.org/openstack-dev/devstack.git</code>, both mirrors of the official repo maintained by Gerrit.</p>
+ <p>The official DevStack repository is located at <code>git://git.openstack.org/openstack-dev/devstack.git</code>, replicated from the repo maintained by Gerrit. GitHub also has a mirror at <code>git://github.com/openstack-dev/devstack.git</code>.</p>
<p>The <a href="https://blueprints.launchpad.net/devstack">blueprint</a> and <a href="https://bugs.launchpad.net/devstack">bug trackers</a> are on Launchpad. It should be noted that DevStack generally does not use these as strongly as other projects, but we're trying to change that.</p>
<p>The <a href="https://review.openstack.org/#/q/project:openstack-dev/devstack,n,z">Gerrit review queue</a> is, however, used for all commits except for the text of this website. That should also change in the near future.</p>
diff --git a/doc/source/eucarc.html b/doc/source/eucarc.html
index df52972..1dd8096 100644
--- a/doc/source/eucarc.html
+++ b/doc/source/eucarc.html
@@ -34,7 +34,7 @@
<li><a href="overview.html">Overview</a></li>
<li><a href="changes.html">Changes</a></li>
<li><a href="faq.html">FAQ</a></li>
- <li><a href="http://github.com/openstack-dev/devstack">GitHub</a></li>
+ <li><a href="https://git.openstack.org/cgit/openstack-dev/devstack">git.openstack.org</a></li>
<li><a href="https://review.openstack.org/#/q/status:open+project:openstack-dev/devstack,n,z">Gerrit</a></li>
</ul>
</div>
diff --git a/doc/source/exerciserc.html b/doc/source/exerciserc.html
index 7e4dd54..313b0a1 100644
--- a/doc/source/exerciserc.html
+++ b/doc/source/exerciserc.html
@@ -34,7 +34,7 @@
<li><a href="overview.html">Overview</a></li>
<li><a href="changes.html">Changes</a></li>
<li><a href="faq.html">FAQ</a></li>
- <li><a href="http://github.com/openstack-dev/devstack">GitHub</a></li>
+ <li><a href="https://git.openstack.org/cgit/openstack-dev/devstack">git.openstack.org</a></li>
<li><a href="https://review.openstack.org/#/q/status:open+project:openstack-dev/devstack,n,z">Gerrit</a></li>
</ul>
</div>
diff --git a/doc/source/faq.html b/doc/source/faq.html
index 2c74a66..7cbb9d2 100644
--- a/doc/source/faq.html
+++ b/doc/source/faq.html
@@ -34,7 +34,7 @@
<li><a href="overview.html">Overview</a></li>
<li><a href="changes.html">Changes</a></li>
<li><a href="faq.html">FAQ</a></li>
- <li><a href="http://github.com/openstack-dev/devstack">GitHub</a></li>
+ <li><a href="https://git.openstack.org/cgit/openstack-dev/devstack">git.openstack.org</a></li>
<li><a href="https://review.openstack.org/#/q/status:open+project:openstack-dev/devstack,n,z">Gerrit</a></li>
</ul>
</div>
@@ -73,7 +73,7 @@
<dd>A: DevStack is optimized for documentation & developers. As some of us use <a href="https://github.com/dellcloudedge/crowbar">Crowbar</a> for production deployments, we hope developers documenting how they setup systems for new features supports projects like Crowbar.</dd>
<dt>Q: I'd like to help!</dt>
- <dd>A: That isn't a question, but please do! The source for DevStack is <a href="http://github.com/openstack-dev/devstack">github</a> and bug reports go to <a href="http://bugs.launchpad.net/devstack/">LaunchPad</a>. Contributions follow the usual process as described in the <a href="http://wiki.openstack.org/HowToContribute">OpenStack wiki</a> even though DevStack is not an official OpenStack project. This site is housed in the CloudBuilder's <a href="http://github.com/cloudbuilders/devstack">github</a> in the gh-pages branch.</dd>
+ <dd>A: That isn't a question, but please do! The source for DevStack is at <a href="https://git.openstack.org/cgit/openstack-dev/devstack">git.openstack.org</a> and bug reports go to <a href="http://bugs.launchpad.net/devstack/">LaunchPad</a>. Contributions follow the usual process as described in the <a href="http://wiki.openstack.org/HowToContribute">OpenStack wiki</a> even though DevStack is not an official OpenStack project. This site is housed in the CloudBuilder's <a href="http://github.com/cloudbuilders/devstack">github</a> in the gh-pages branch.</dd>
<dt>Q: Why not use packages?</dt>
<dd>A: Unlike packages, DevStack leaves your cloud ready to develop - checkouts of the code and services running in screen. However, many people are doing the hard work of packaging and recipes for production deployments. We hope this script serves as a way to communicate configuration changes between developers and packagers.</dd>
diff --git a/doc/source/guides/multinode-lab.html b/doc/source/guides/multinode-lab.html
index 62232ef..6a5f98c 100644
--- a/doc/source/guides/multinode-lab.html
+++ b/doc/source/guides/multinode-lab.html
@@ -34,7 +34,7 @@
<li><a href="../overview.html">Overview</a></li>
<li><a href="../changes.html">Changes</a></li>
<li><a href="../faq.html">FAQ</a></li>
- <li><a href="http://github.com/openstack-dev/devstack">GitHub</a></li>
+ <li><a href="https://git.openstack.org/cgit/openstack-dev/devstack">git.openstack.org</a></li>
<li><a href="https://review.openstack.org/#/q/status:open+project:openstack-dev/devstack,n,z">Gerrit</a></li>
</ul>
</div>
@@ -129,8 +129,8 @@
echo "ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQCyYjfgyPazTvGpd8OaAvtU2utL8W6gWC4JdRS1J95GhNNfQd657yO6s1AH5KYQWktcE6FO/xNUC2reEXSGC7ezy+sGO1kj9Limv5vrvNHvF1+wts0Cmyx61D2nQw35/Qz8BvpdJANL7VwP/cFI/p3yhvx2lsnjFE3hN8xRB2LtLUopUSVdBwACOVUmH2G+2BWMJDjVINd2DPqRIA4Zhy09KJ3O1Joabr0XpQL0yt/I9x8BVHdAx6l9U0tMg9dj5+tAjZvMAFfye3PJcYwwsfJoFxC8w/SLtqlFX7Ehw++8RtvomvuipLdmWCy+T9hIkl+gHYE4cS3OIqXH7f49jdJf jesse@spacey.local" > ~/.ssh/authorized_keys</pre>
<h3>Download DevStack</h3>
- <p>Grab the latest version of DevStack from github:</p>
- <pre>git clone https://github.com/openstack-dev/devstack.git
+ <p>Grab the latest version of DevStack:</p>
+ <pre>git clone https://git.openstack.org/openstack-dev/devstack
cd devstack</pre>
<p>Up to this point all of the steps apply to each node in the cluster. From here on
diff --git a/doc/source/guides/pxe-boot.html b/doc/source/guides/pxe-boot.html
index 4dc61a3..d52b25f 100644
--- a/doc/source/guides/pxe-boot.html
+++ b/doc/source/guides/pxe-boot.html
@@ -34,7 +34,7 @@
<li><a href="../overview.html">Overview</a></li>
<li><a href="../changes.html">Changes</a></li>
<li><a href="../faq.html">FAQ</a></li>
- <li><a href="http://github.com/openstack-dev/devstack">GitHub</a></li>
+ <li><a href="https://git.openstack.org/cgit/openstack-dev/devstack">git.openstack.org</a></li>
<li><a href="https://review.openstack.org/#/q/status:open+project:openstack-dev/devstack,n,z">Gerrit</a></li>
</ul>
</div>
diff --git a/doc/source/guides/ramdisk.html b/doc/source/guides/ramdisk.html
index eaef16e..23239e2 100644
--- a/doc/source/guides/ramdisk.html
+++ b/doc/source/guides/ramdisk.html
@@ -34,7 +34,7 @@
<li><a href="../overview.html">Overview</a></li>
<li><a href="../changes.html">Changes</a></li>
<li><a href="../faq.html">FAQ</a></li>
- <li><a href="http://github.com/openstack-dev/devstack">GitHub</a></li>
+ <li><a href="https://git.openstack.org/cgit/openstack-dev/devstack">git.openstack.org</a></li>
<li><a href="https://review.openstack.org/#/q/status:open+project:openstack-dev/devstack,n,z">Gerrit</a></li>
</ul>
</div>
@@ -74,7 +74,7 @@
<h3>Install DevStack</h3>
<p>Grab the latest version of DevStack via https:</p>
<pre>sudo apt-get install git -y
-git clone https://github.com/openstack-dev/devstack.git
+git clone https://git.openstack.org/openstack-dev/devstack
cd devstack</pre>
<h3>Prepare the Boot RAMdisk</h3>
diff --git a/doc/source/guides/single-machine.html b/doc/source/guides/single-machine.html
index 9471972..06cc981 100644
--- a/doc/source/guides/single-machine.html
+++ b/doc/source/guides/single-machine.html
@@ -34,7 +34,7 @@
<li><a href="../overview.html">Overview</a></li>
<li><a href="../changes.html">Changes</a></li>
<li><a href="../faq.html">FAQ</a></li>
- <li><a href="http://github.com/openstack-dev/devstack">GitHub</a></li>
+ <li><a href="https://git.openstack.org/cgit/openstack-dev/devstack">git.openstack.org</a></li>
<li><a href="https://review.openstack.org/#/q/status:open+project:openstack-dev/devstack,n,z">Gerrit</a></li>
</ul>
</div>
@@ -79,7 +79,7 @@
<h3>Download DevStack</h3>
<p>We'll grab the latest version of DevStack via https:</p>
<pre>sudo apt-get install git -y || yum install -y git
-git clone https://github.com/openstack-dev/devstack.git
+git clone https://git.openstack.org/openstack-dev/devstack
cd devstack</pre>
<h3>Run DevStack</h3>
diff --git a/doc/source/guides/single-vm.html b/doc/source/guides/single-vm.html
index 2f1990a..d189319 100644
--- a/doc/source/guides/single-vm.html
+++ b/doc/source/guides/single-vm.html
@@ -34,7 +34,7 @@
<li><a href="../overview.html">Overview</a></li>
<li><a href="../changes.html">Changes</a></li>
<li><a href="../faq.html">FAQ</a></li>
- <li><a href="http://github.com/openstack-dev/devstack">GitHub</a></li>
+ <li><a href="https://git.openstack.org/cgit/openstack-dev/devstack">git.openstack.org</a></li>
<li><a href="https://review.openstack.org/#/q/status:open+project:openstack-dev/devstack,n,z">Gerrit</a></li>
</ul>
</div>
@@ -96,7 +96,7 @@
DEBIAN_FRONTEND=noninteractive sudo apt-get install -qqy git || sudo yum install -qy git
sudo chown stack:stack /home/stack
cd /home/stack
- git clone https://github.com/openstack-dev/devstack.git
+ git clone https://git.openstack.org/openstack-dev/devstack
cd devstack
echo '[[local|localrc]]' > local.conf
echo ADMIN_PASSWORD=password >> local.conf
diff --git a/doc/source/guides/usb-boot.html b/doc/source/guides/usb-boot.html
index 75adc6f..2a05f89 100644
--- a/doc/source/guides/usb-boot.html
+++ b/doc/source/guides/usb-boot.html
@@ -34,7 +34,7 @@
<li><a href="../overview.html">Overview</a></li>
<li><a href="../changes.html">Changes</a></li>
<li><a href="../faq.html">FAQ</a></li>
- <li><a href="http://github.com/openstack-dev/devstack">GitHub</a></li>
+ <li><a href="https://git.openstack.org/cgit/openstack-dev/devstack">git.openstack.org</a></li>
<li><a href="https://review.openstack.org/#/q/status:open+project:openstack-dev/devstack,n,z">Gerrit</a></li>
</ul>
</div>
diff --git a/doc/source/index.html b/doc/source/index.html
index dada57d..5f1efd7 100644
--- a/doc/source/index.html
+++ b/doc/source/index.html
@@ -34,7 +34,7 @@
<li><a href="overview.html">Overview</a></li>
<li><a href="changes.html">Changes</a></li>
<li><a href="faq.html">FAQ</a></li>
- <li><a href="http://github.com/openstack-dev/devstack">GitHub</a></li>
+ <li><a href="https://git.openstack.org/cgit/openstack-dev/devstack">git.openstack.org</a></li>
<li><a href="https://review.openstack.org/#/q/status:open+project:openstack-dev/devstack,n,z">Gerrit</a></li>
</ul>
</div>
@@ -55,9 +55,9 @@
<div class="pull-left">
<ol id="getting_started">
<li id="ubuntu">Setup a fresh supported Linux installation.</li>
- <li id="github">
- Clone devstack from devstack.
- <pre>git clone https://github.com/openstack-dev/devstack.git</pre>
+ <li id="git">
+ Clone devstack from git.openstack.org.
+ <pre>git clone https://git.openstack.org/openstack-dev/devstack</pre>
</li>
<li id="install">
Deploy your OpenStack Cloud
@@ -84,7 +84,7 @@
</li>
<li>
<h3>Download DevStack</h3>
- <pre>git clone https://github.com/openstack-dev/devstack.git</pre>
+ <pre>git clone https://git.openstack.org/openstack-dev/devstack</pre>
<p>The <code>devstack</code> repo contains a script that installs OpenStack and templates for configuration files</p>
</li>
<li>
diff --git a/doc/source/local.conf.html b/doc/source/local.conf.html
index ed53adf..2635ac6 100644
--- a/doc/source/local.conf.html
+++ b/doc/source/local.conf.html
@@ -34,7 +34,7 @@
<li><a href="overview.html">Overview</a></li>
<li><a href="changes.html">Changes</a></li>
<li><a href="faq.html">FAQ</a></li>
- <li><a href="http://github.com/openstack-dev/devstack">GitHub</a></li>
+ <li><a href="https://git.openstack.org/cgit/openstack-dev/devstack">git.openstack.org</a></li>
<li><a href="https://review.openstack.org/#/q/status:open+project:openstack-dev/devstack,n,z">Gerrit</a></li>
</ul>
</div>
diff --git a/doc/source/localrc.html b/doc/source/localrc.html
index 0f669bd..40a2004 100644
--- a/doc/source/localrc.html
+++ b/doc/source/localrc.html
@@ -34,7 +34,7 @@
<li><a href="overview.html">Overview</a></li>
<li><a href="changes.html">Changes</a></li>
<li><a href="faq.html">FAQ</a></li>
- <li><a href="http://github.com/openstack-dev/devstack">GitHub</a></li>
+ <li><a href="https://git.openstack.org/cgit/openstack-dev/devstack">git.openstack.org</a></li>
<li><a href="https://review.openstack.org/#/q/status:open+project:openstack-dev/devstack,n,z">Gerrit</a></li>
</ul>
</div>
diff --git a/doc/source/openrc.html b/doc/source/openrc.html
index da6697f..94b253d 100644
--- a/doc/source/openrc.html
+++ b/doc/source/openrc.html
@@ -34,7 +34,7 @@
<li><a href="overview.html">Overview</a></li>
<li><a href="changes.html">Changes</a></li>
<li><a href="faq.html">FAQ</a></li>
- <li><a href="http://github.com/openstack-dev/devstack">GitHub</a></li>
+ <li><a href="https://git.openstack.org/cgit/openstack-dev/devstack">git.openstack.org</a></li>
<li><a href="https://review.openstack.org/#/q/status:open+project:openstack-dev/devstack,n,z">Gerrit</a></li>
</ul>
</div>
diff --git a/doc/source/overview.html b/doc/source/overview.html
index baee400..9cee052 100644
--- a/doc/source/overview.html
+++ b/doc/source/overview.html
@@ -34,7 +34,7 @@
<li><a href="overview.html">Overview</a></li>
<li><a href="changes.html">Changes</a></li>
<li><a href="faq.html">FAQ</a></li>
- <li><a href="http://github.com/openstack-dev/devstack">GitHub</a></li>
+ <li><a href="https://git.openstack.org/cgit/openstack-dev/devstack">git.openstack.org</a></li>
<li><a href="https://review.openstack.org/#/q/status:open+project:openstack-dev/devstack,n,z">Gerrit</a></li>
</ul>
</div>
diff --git a/doc/source/plugins.html b/doc/source/plugins.html
index 3327128..700a209 100644
--- a/doc/source/plugins.html
+++ b/doc/source/plugins.html
@@ -34,7 +34,7 @@
<li><a href="overview.html">Overview</a></li>
<li><a href="changes.html">Changes</a></li>
<li><a href="faq.html">FAQ</a></li>
- <li><a href="http://github.com/openstack-dev/devstack">GitHub</a></li>
+ <li><a href="https://git.openstack.org/cgit/openstack-dev/devstack">git.openstack.org</a></li>
<li><a href="https://review.openstack.org/#/q/status:open+project:openstack-dev/devstack,n,z">Gerrit</a></li>
</ul>
</div>
diff --git a/doc/source/stackrc.html b/doc/source/stackrc.html
index d83fbc1..2df9d38 100644
--- a/doc/source/stackrc.html
+++ b/doc/source/stackrc.html
@@ -34,7 +34,7 @@
<li><a href="overview.html">Overview</a></li>
<li><a href="changes.html">Changes</a></li>
<li><a href="faq.html">FAQ</a></li>
- <li><a href="http://github.com/openstack-dev/devstack">GitHub</a></li>
+ <li><a href="https://git.openstack.org/cgit/openstack-dev/devstack">git.openstack.org</a></li>
<li><a href="https://review.openstack.org/#/q/status:open+project:openstack-dev/devstack,n,z">Gerrit</a></li>
</ul>
</div>
diff --git a/files/apts/general b/files/apts/general
index c308c46..3fe7863 100644
--- a/files/apts/general
+++ b/files/apts/general
@@ -27,3 +27,4 @@
libyaml-dev
libffi-dev
libssl-dev # for pyOpenSSL
+gettext # used for compiling message catalogs
diff --git a/files/rpms/general b/files/rpms/general
index 7a35961..d4a9fcb 100644
--- a/files/rpms/general
+++ b/files/rpms/general
@@ -26,6 +26,7 @@
which
bc
libyaml-devel
+gettext # used for compiling message catalogs
# [1] : some of installed tools have unversioned dependencies on this,
# but others have versioned (<=0.7). So if a later version (0.7.1)
diff --git a/lib/ceilometer b/lib/ceilometer
index c997de7..9046b9d 100644
--- a/lib/ceilometer
+++ b/lib/ceilometer
@@ -155,6 +155,11 @@
iniset $CEILOMETER_CONF DEFAULT verbose True
iniset $CEILOMETER_CONF DEFAULT debug "$ENABLE_DEBUG_LOG_LEVEL"
+ if [[ -n "$CEILOMETER_COORDINATION_URL" ]]; then
+ iniset $CEILOMETER_CONF coordination backend_url $CEILOMETER_COORDINATION_URL
+ iniset $CEILOMETER_CONF compute workload_partitioning True
+ fi
+
# Install the policy file for the API server
cp $CEILOMETER_DIR/etc/ceilometer/policy.json $CEILOMETER_CONF_DIR
iniset $CEILOMETER_CONF DEFAULT policy_file $CEILOMETER_CONF_DIR/policy.json
@@ -177,7 +182,7 @@
configure_auth_token_middleware $CEILOMETER_CONF ceilometer $CEILOMETER_AUTH_CACHE_DIR
if [ "$CEILOMETER_BACKEND" = 'mysql' ] || [ "$CEILOMETER_BACKEND" = 'postgresql' ] ; then
- iniset $CEILOMETER_CONF database connection `database_connection_url ceilometer`
+ iniset $CEILOMETER_CONF database connection $(database_connection_url ceilometer)
iniset $CEILOMETER_CONF DEFAULT collector_workers $API_WORKERS
else
iniset $CEILOMETER_CONF database connection mongodb://localhost:27017/ceilometer
@@ -242,6 +247,9 @@
git_clone $CEILOMETER_REPO $CEILOMETER_DIR $CEILOMETER_BRANCH
setup_develop $CEILOMETER_DIR
+ if echo $CEILOMETER_COORDINATION_URL | grep -q '^memcached:'; then
+ install_package memcached
+ fi
}
# install_ceilometerclient() - Collect source and prepare
diff --git a/lib/horizon b/lib/horizon
index 755be18..0213948 100644
--- a/lib/horizon
+++ b/lib/horizon
@@ -84,6 +84,14 @@
# configure_horizon() - Set config files, create data dirs, etc
function configure_horizon {
setup_develop $HORIZON_DIR
+
+ # Compile message catalogs.
+ # Horizon is installed as develop mode, so we can compile here.
+ # Message catalog compilation is handled by Django admin script,
+ # so compiling them after the installation avoids Django installation twice.
+ cd $HORIZON_DIR
+ ./run_tests.sh -N --compilemessages
+ cd -
}
# init_horizon() - Initialize databases, etc.
@@ -138,6 +146,13 @@
# install_django_openstack_auth() - Collect source and prepare
function install_django_openstack_auth {
git_clone $HORIZONAUTH_REPO $HORIZONAUTH_DIR $HORIZONAUTH_BRANCH
+
+ # Compile message catalogs before installation
+ _prepare_message_catalog_compilation
+ cd $HORIZONAUTH_DIR
+ python setup.py compile_catalog
+ cd -
+
setup_install $HORIZONAUTH_DIR
}
@@ -160,6 +175,13 @@
stop_apache_server
}
+# NOTE: It can be moved to common functions, but it is only used by compilation
+# of django_openstack_auth catalogs at the moment.
+function _prepare_message_catalog_compilation {
+ local babel_package=$(grep ^Babel $REQUIREMENTS_DIR/global-requirements.txt)
+ pip_install "$babel_package"
+}
+
# Restore xtrace
$XTRACE
diff --git a/lib/neutron b/lib/neutron
index 2253eda..ca9b16c 100644
--- a/lib/neutron
+++ b/lib/neutron
@@ -148,16 +148,31 @@
# If Q_USE_PROVIDERNET_FOR_PUBLIC=True, use a flat provider network
# for external interface of neutron l3-agent. In that case,
# PUBLIC_PHYSICAL_NETWORK specifies provider:physical_network value
-# used for the network. In case of openvswitch agent, you should
-# add the corresponding entry to your OVS_BRIDGE_MAPPINGS.
+# used for the network. In case of ofagent, you should add the
+# corresponding entry to your OFAGENT_PHYSICAL_INTERFACE_MAPPINGS.
+# For openvswitch agent, you should add the corresponding entry to
+# your OVS_BRIDGE_MAPPINGS.
#
-# eg.
+# eg. (ofagent)
+# Q_USE_PROVIDERNET_FOR_PUBLIC=True
+# Q_USE_PUBLIC_VETH=True
+# PUBLIC_PHYSICAL_NETWORK=public
+# OFAGENT_PHYSICAL_INTERFACE_MAPPINGS=public:veth-pub-int
+#
+# eg. (openvswitch agent)
# Q_USE_PROVIDERNET_FOR_PUBLIC=True
# PUBLIC_PHYSICAL_NETWORK=public
# OVS_BRIDGE_MAPPINGS=public:br-ex
Q_USE_PROVIDERNET_FOR_PUBLIC=${Q_USE_PROVIDERNET_FOR_PUBLIC:-False}
PUBLIC_PHYSICAL_NETWORK=${PUBLIC_PHYSICAL_NETWORK:-public}
+# If Q_USE_PUBLIC_VETH=True, create and use a veth pair instead of
+# PUBLIC_BRIDGE. This is intended to be used with
+# Q_USE_PROVIDERNET_FOR_PUBLIC=True.
+Q_USE_PUBLIC_VETH=${Q_USE_PUBLIC_VETH:-False}
+Q_PUBLIC_VETH_EX=${Q_PUBLIC_VETH_EX:-veth-pub-ex}
+Q_PUBLIC_VETH_INT=${Q_PUBLIC_VETH_INT:-veth-pub-int}
+
# The next two variables are configured by plugin
# e.g. _configure_neutron_l3_agent or lib/neutron_plugins/*
#
@@ -543,12 +558,20 @@
if is_service_enabled q-l3; then
# logic is specific to using the l3-agent for l3
if is_neutron_ovs_base_plugin && [[ "$Q_USE_NAMESPACE" = "True" ]]; then
- # Disable in-band as we are going to use local port
- # to communicate with VMs
- sudo ovs-vsctl set Bridge $PUBLIC_BRIDGE other_config:disable-in-band=true
+ local ext_gw_interface
+
+ if [[ "$Q_USE_PUBLIC_VETH" = "True" ]]; then
+ ext_gw_interface=$Q_PUBLIC_VETH_EX
+ else
+ # Disable in-band as we are going to use local port
+ # to communicate with VMs
+ sudo ovs-vsctl set Bridge $PUBLIC_BRIDGE \
+ other_config:disable-in-band=true
+ ext_gw_interface=$PUBLIC_BRIDGE
+ fi
CIDR_LEN=${FLOATING_RANGE#*/}
- sudo ip addr add $EXT_GW_IP/$CIDR_LEN dev $PUBLIC_BRIDGE
- sudo ip link set $PUBLIC_BRIDGE up
+ sudo ip addr add $EXT_GW_IP/$CIDR_LEN dev $ext_gw_interface
+ sudo ip link set $ext_gw_interface up
ROUTER_GW_IP=`neutron port-list -c fixed_ips -c device_owner | grep router_gateway | awk -F '"' '{ print $8; }'`
die_if_not_set $LINENO ROUTER_GW_IP "Failure retrieving ROUTER_GW_IP"
sudo route add -net $FIXED_RANGE gw $ROUTER_GW_IP
diff --git a/lib/neutron_plugins/cisco b/lib/neutron_plugins/cisco
index 1406e37..95e0ab3 100644
--- a/lib/neutron_plugins/cisco
+++ b/lib/neutron_plugins/cisco
@@ -82,6 +82,7 @@
}
function neutron_plugin_configure_debug_command {
+ :
}
function neutron_plugin_configure_dhcp_agent {
@@ -89,6 +90,7 @@
}
function neutron_plugin_configure_l3_agent {
+ :
}
# Configure n1kv plugin
@@ -111,6 +113,7 @@
}
function neutron_plugin_configure_plugin_agent {
+ :
}
function neutron_plugin_configure_service {
diff --git a/lib/neutron_plugins/ofagent_agent b/lib/neutron_plugins/ofagent_agent
index a5a58f4..1c04f2f 100644
--- a/lib/neutron_plugins/ofagent_agent
+++ b/lib/neutron_plugins/ofagent_agent
@@ -77,6 +77,10 @@
if [[ "$OVS_BRIDGE_MAPPINGS" != "" ]]; then
iniset /$Q_PLUGIN_CONF_FILE ovs bridge_mappings $OVS_BRIDGE_MAPPINGS
fi
+ if [[ "$OFAGENT_PHYSICAL_INTERFACE_MAPPINGS" != "" ]]; then
+ iniset /$Q_PLUGIN_CONF_FILE agent physical_interface_mappings \
+ $OFAGENT_PHYSICAL_INTERFACE_MAPPINGS
+ fi
AGENT_BINARY="$NEUTRON_BIN_DIR/neutron-ofagent-agent"
iniset /$Q_PLUGIN_CONF_FILE agent tunnel_types $Q_TUNNEL_TYPES
diff --git a/lib/neutron_plugins/ovs_base b/lib/neutron_plugins/ovs_base
index d913f7c..f0ef194 100644
--- a/lib/neutron_plugins/ovs_base
+++ b/lib/neutron_plugins/ovs_base
@@ -79,11 +79,20 @@
fi
neutron-ovs-cleanup
- # --no-wait causes a race condition if $PUBLIC_BRIDGE is not up when ip addr flush is called
- sudo ovs-vsctl -- --may-exist add-br $PUBLIC_BRIDGE
- sudo ovs-vsctl br-set-external-id $PUBLIC_BRIDGE bridge-id $PUBLIC_BRIDGE
- # ensure no IP is configured on the public bridge
- sudo ip addr flush dev $PUBLIC_BRIDGE
+ if [[ "$Q_USE_PUBLIC_VETH" = "True" ]]; then
+ ip link show $Q_PUBLIC_VETH_INT > /dev/null 2>&1 ||
+ sudo ip link add $Q_PUBLIC_VETH_INT type veth \
+ peer name $Q_PUBLIC_VETH_EX
+ sudo ip link set $Q_PUBLIC_VETH_INT up
+ sudo ip link set $Q_PUBLIC_VETH_EX up
+ sudo ip addr flush dev $Q_PUBLIC_VETH_EX
+ else
+ # --no-wait causes a race condition if $PUBLIC_BRIDGE is not up when ip addr flush is called
+ sudo ovs-vsctl -- --may-exist add-br $PUBLIC_BRIDGE
+ sudo ovs-vsctl br-set-external-id $PUBLIC_BRIDGE bridge-id $PUBLIC_BRIDGE
+ # ensure no IP is configured on the public bridge
+ sudo ip addr flush dev $PUBLIC_BRIDGE
+ fi
}
function _neutron_ovs_base_configure_nova_vif_driver {
diff --git a/lib/opendaylight b/lib/opendaylight
index cc29deb..374de95 100644
--- a/lib/opendaylight
+++ b/lib/opendaylight
@@ -48,10 +48,10 @@
ODL_DIR=$DEST/opendaylight
# The OpenDaylight Package, currently using 'Hydrogen' release
-ODL_PKG=${ODL_PKG:-distributions-virtualization-0.1.1-osgipackage.zip}
+ODL_PKG=${ODL_PKG:-distribution-karaf-0.2.0-Helium.zip}
# The OpenDaylight URL
-ODL_URL=${ODL_URL:-https://nexus.opendaylight.org/content/repositories/opendaylight.release/org/opendaylight/integration/distributions-virtualization/0.1.1}
+ODL_URL=${ODL_URL:-https://nexus.opendaylight.org/content/groups/public/org/opendaylight/integration/distribution-karaf/0.2.0-Helium}
# Default arguments for OpenDaylight. This is typically used to set
# Java memory options.
@@ -59,11 +59,14 @@
ODL_ARGS=${ODL_ARGS:-"-XX:MaxPermSize=384m"}
# How long to pause after ODL starts to let it complete booting
-ODL_BOOT_WAIT=${ODL_BOOT_WAIT:-60}
+ODL_BOOT_WAIT=${ODL_BOOT_WAIT:-20}
# The physical provider network to device mapping
ODL_PROVIDER_MAPPINGS=${ODL_PROVIDER_MAPPINGS:-physnet1:eth1}
+# Enable OpenDaylight l3 forwarding
+ODL_L3=${ODL_L3:-False}
+
# Entry Points
# ------------
@@ -83,11 +86,26 @@
# configure_opendaylight() - Set config files, create data dirs, etc
function configure_opendaylight {
- # Remove simple forwarder
- rm -f $ODL_DIR/opendaylight/plugins/org.opendaylight.controller.samples.simpleforwarding*
+ # Add odl-ovsdb-openstack if it's not already there
+ local ODLOVSDB=$(cat $ODL_DIR/distribution-karaf-0.2.0-Helium/etc/org.apache.karaf.features.cfg | grep featuresBoot= | grep odl)
+ if [ "$ODLOVSDB" == "" ]; then
+ sed -i '/^featuresBoot=/ s/$/,odl-ovsdb-openstack/' $ODL_DIR/distribution-karaf-0.2.0-Helium/etc/org.apache.karaf.features.cfg
+ fi
- # Configure OpenFlow 1.3
- echo "ovsdb.of.version=1.3" >> $ODL_DIR/opendaylight/configuration/config.ini
+ # Configure OpenFlow 1.3 if it's not there
+ local OFLOW13=$(cat $ODL_DIR/distribution-karaf-0.2.0-Helium/etc/custom.properties | grep ^of.version)
+ if [ "$OFLOW13" == "" ]; then
+ echo "ovsdb.of.version=1.3" >> $ODL_DIR/distribution-karaf-0.2.0-Helium/etc/custom.properties
+ fi
+
+ # Configure L3 if the user wants it
+ if [ "${ODL_L3}" == "True" ]; then
+ # Configure L3 FWD if it's not there
+ local L3FWD=$(cat $ODL_DIR/distribution-karaf-0.2.0-Helium/etc/custom.properties | grep ^ovsdb.l3.fwd.enabled)
+ if [ "$L3FWD" == "" ]; then
+ echo "ovsdb.l3.fwd.enabled=yes" >> $ODL_DIR/distribution-karaf-0.2.0-Helium/etc/custom.properties
+ fi
+ fi
}
function configure_ml2_odl {
@@ -138,9 +156,7 @@
# -of13: runs ODL using OpenFlow 1.3 protocol support.
# -virt ovsdb: Runs ODL in "virtualization" mode with OVSDB support
- # NOTE(chdent): Leaving this as screen_it instead of run_process until
- # the right thing for this service is determined.
- screen_it odl-server "cd $ODL_DIR/opendaylight && JAVA_HOME=$JHOME ./run.sh $ODL_ARGS -of13 -virt ovsdb"
+ run_process odl-server "cd $ODL_DIR/distribution-karaf-0.2.0-Helium && JAVA_HOME=$JHOME bin/karaf"
# Sleep a bit to let OpenDaylight finish starting up
sleep $ODL_BOOT_WAIT
diff --git a/lib/tempest b/lib/tempest
index d677c7e..3c37918 100644
--- a/lib/tempest
+++ b/lib/tempest
@@ -64,8 +64,10 @@
# Cinder/Volume variables
TEMPEST_VOLUME_DRIVER=${TEMPEST_VOLUME_DRIVER:-default}
-TEMPEST_VOLUME_VENDOR=${TEMPEST_VOLUME_VENDOR:-"Open Source"}
-TEMPEST_STORAGE_PROTOCOL=${TEMPEST_STORAGE_PROTOCOL:-iSCSI}
+TEMPEST_DEFAULT_VOLUME_VENDOR="Open Source"
+TEMPEST_VOLUME_VENDOR=${TEMPEST_VOLUME_VENDOR:-$TEMPEST_DEFAULT_VOLUME_VENDOR}
+TEMPEST_DEFAULT_STORAGE_PROTOCOL="iSCSI"
+TEMPEST_STORAGE_PROTOCOL=${TEMPEST_STORAGE_PROTOCOL:-$TEMPEST_DEFAULT_STORAGE_PROTOCOL}
# Neutron/Network variables
IPV6_ENABLED=$(trueorfalse True $IPV6_ENABLED)
@@ -369,8 +371,12 @@
iniset $TEMPEST_CONFIG volume backend2_name "LVM_iSCSI_2"
fi
- if [ $TEMPEST_VOLUME_DRIVER != "default" ]; then
+ if [ $TEMPEST_VOLUME_DRIVER != "default" -o \
+ $TEMPEST_VOLUME_VENDOR != $TEMPEST_DEFAULT_VOLUME_VENDOR ]; then
iniset $TEMPEST_CONFIG volume vendor_name "$TEMPEST_VOLUME_VENDOR"
+ fi
+ if [ $TEMPEST_VOLUME_DRIVER != "default" -o \
+ $TEMPEST_STORAGE_PROTOCOL != $TEMPEST_DEFAULT_STORAGE_PROTOCOL ]; then
iniset $TEMPEST_CONFIG volume storage_protocol $TEMPEST_STORAGE_PROTOCOL
fi
diff --git a/run_tests.sh b/run_tests.sh
index b1aef4f..bf90332 100755
--- a/run_tests.sh
+++ b/run_tests.sh
@@ -43,7 +43,7 @@
echo "Running bash8..."
-./tools/bash8.py -v $FILES
+tox -ebashate
pass_fail $? 0 bash8
diff --git a/tools/bash8.py b/tools/bash8.py
deleted file mode 100755
index 3abf87b..0000000
--- a/tools/bash8.py
+++ /dev/null
@@ -1,215 +0,0 @@
-#!/usr/bin/env python
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
-# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
-# License for the specific language governing permissions and limitations
-# under the License.
-
-# bash8 - a pep8 equivalent for bash scripts
-#
-# this program attempts to be an automated style checker for bash scripts
-# to fill the same part of code review that pep8 does in most OpenStack
-# projects. It starts from humble beginnings, and will evolve over time.
-#
-# Currently Supported checks
-#
-# Errors
-# Basic white space errors, for consistent indenting
-# - E001: check that lines do not end with trailing whitespace
-# - E002: ensure that indents are only spaces, and not hard tabs
-# - E003: ensure all indents are a multiple of 4 spaces
-# - E004: file did not end with a newline
-#
-# Structure errors
-#
-# A set of rules that help keep things consistent in control blocks.
-# These are ignored on long lines that have a continuation, because
-# unrolling that is kind of "interesting"
-#
-# - E010: *do* not on the same line as *for*
-# - E011: *then* not on the same line as *if*
-# - E012: heredoc didn't end before EOF
-
-import argparse
-import fileinput
-import re
-import sys
-
-ERRORS = 0
-IGNORE = None
-
-
-def register_ignores(ignores):
- global IGNORE
- if ignores:
- IGNORE = '^(' + '|'.join(ignores.split(',')) + ')'
-
-
-def should_ignore(error):
- return IGNORE and re.search(IGNORE, error)
-
-
-def print_error(error, line,
- filename=None, filelineno=None):
- if not filename:
- filename = fileinput.filename()
- if not filelineno:
- filelineno = fileinput.filelineno()
- global ERRORS
- ERRORS = ERRORS + 1
- print("%s: '%s'" % (error, line.rstrip('\n')))
- print(" - %s: L%s" % (filename, filelineno))
-
-
-def not_continuation(line):
- return not re.search('\\\\$', line)
-
-
-def check_for_do(line):
- if not_continuation(line):
- match = re.match('^\s*(for|while|until)\s', line)
- if match:
- operator = match.group(1).strip()
- if not re.search(';\s*do(\b|$)', line):
- print_error('E010: Do not on same line as %s' % operator,
- line)
-
-
-def check_if_then(line):
- if not_continuation(line):
- if re.search('^\s*if \[', line):
- if not re.search(';\s*then(\b|$)', line):
- print_error('E011: Then non on same line as if', line)
-
-
-def check_no_trailing_whitespace(line):
- if re.search('[ \t]+$', line):
- print_error('E001: Trailing Whitespace', line)
-
-
-def check_indents(line):
- m = re.search('^(?P<indent>[ \t]+)', line)
- if m:
- if re.search('\t', m.group('indent')):
- print_error('E002: Tab indents', line)
- if (len(m.group('indent')) % 4) != 0:
- print_error('E003: Indent not multiple of 4', line)
-
-def check_function_decl(line):
- failed = False
- if line.startswith("function"):
- if not re.search('^function [\w-]* \{$', line):
- failed = True
- else:
- # catch the case without "function", e.g.
- # things like '^foo() {'
- if re.search('^\s*?\(\)\s*?\{', line):
- failed = True
-
- if failed:
- print_error('E020: Function declaration not in format '
- ' "^function name {$"', line)
-
-
-def starts_multiline(line):
- m = re.search("[^<]<<\s*(?P<token>\w+)", line)
- if m:
- return m.group('token')
- else:
- return False
-
-
-def end_of_multiline(line, token):
- if token:
- return re.search("^%s\s*$" % token, line) is not None
- return False
-
-
-def check_files(files, verbose):
- in_multiline = False
- multiline_start = 0
- multiline_line = ""
- logical_line = ""
- token = False
- prev_file = None
- prev_line = ""
- prev_lineno = 0
-
- for line in fileinput.input(files):
- if fileinput.isfirstline():
- # if in_multiline when the new file starts then we didn't
- # find the end of a heredoc in the last file.
- if in_multiline:
- print_error('E012: heredoc did not end before EOF',
- multiline_line,
- filename=prev_file, filelineno=multiline_start)
- in_multiline = False
-
- # last line of a previous file should always end with a
- # newline
- if prev_file and not prev_line.endswith('\n'):
- print_error('E004: file did not end with a newline',
- prev_line,
- filename=prev_file, filelineno=prev_lineno)
-
- prev_file = fileinput.filename()
-
- if verbose:
- print "Running bash8 on %s" % fileinput.filename()
-
- # NOTE(sdague): multiline processing of heredocs is interesting
- if not in_multiline:
- logical_line = line
- token = starts_multiline(line)
- if token:
- in_multiline = True
- multiline_start = fileinput.filelineno()
- multiline_line = line
- continue
- else:
- logical_line = logical_line + line
- if not end_of_multiline(line, token):
- continue
- else:
- in_multiline = False
-
- check_no_trailing_whitespace(logical_line)
- check_indents(logical_line)
- check_for_do(logical_line)
- check_if_then(logical_line)
- check_function_decl(logical_line)
-
- prev_line = logical_line
- prev_lineno = fileinput.filelineno()
-
-def get_options():
- parser = argparse.ArgumentParser(
- description='A bash script style checker')
- parser.add_argument('files', metavar='file', nargs='+',
- help='files to scan for errors')
- parser.add_argument('-i', '--ignore', help='Rules to ignore')
- parser.add_argument('-v', '--verbose', action='store_true', default=False)
- return parser.parse_args()
-
-
-def main():
- opts = get_options()
- register_ignores(opts.ignore)
- check_files(opts.files, opts.verbose)
-
- if ERRORS > 0:
- print("%d bash8 error(s) found" % ERRORS)
- return 1
- else:
- return 0
-
-
-if __name__ == "__main__":
- sys.exit(main())
diff --git a/tools/xen/prepare_guest_template.sh b/tools/xen/prepare_guest_template.sh
index e6a7e02..2d3b898 100755
--- a/tools/xen/prepare_guest_template.sh
+++ b/tools/xen/prepare_guest_template.sh
@@ -93,3 +93,28 @@
# Need to set barrier=0 to avoid a Xen bug
# https://bugs.launchpad.net/ubuntu/+source/linux/+bug/824089
sed -i -e 's/errors=/barrier=0,errors=/' $STAGING_DIR/etc/fstab
+
+# Update ubuntu repositories
+cat > $STAGING_DIR/etc/apt/sources.list << EOF
+deb http://${UBUNTU_INST_HTTP_HOSTNAME}${UBUNTU_INST_HTTP_DIRECTORY} ${UBUNTU_INST_RELEASE} main restricted
+deb-src http://${UBUNTU_INST_HTTP_HOSTNAME}${UBUNTU_INST_HTTP_DIRECTORY} ${UBUNTU_INST_RELEASE} main restricted
+deb http://${UBUNTU_INST_HTTP_HOSTNAME}${UBUNTU_INST_HTTP_DIRECTORY} ${UBUNTU_INST_RELEASE}-updates main restricted
+deb-src http://${UBUNTU_INST_HTTP_HOSTNAME}${UBUNTU_INST_HTTP_DIRECTORY} ${UBUNTU_INST_RELEASE}-updates main restricted
+deb http://${UBUNTU_INST_HTTP_HOSTNAME}${UBUNTU_INST_HTTP_DIRECTORY} ${UBUNTU_INST_RELEASE} universe
+deb-src http://${UBUNTU_INST_HTTP_HOSTNAME}${UBUNTU_INST_HTTP_DIRECTORY} ${UBUNTU_INST_RELEASE} universe
+deb http://${UBUNTU_INST_HTTP_HOSTNAME}${UBUNTU_INST_HTTP_DIRECTORY} ${UBUNTU_INST_RELEASE}-updates universe
+deb-src http://${UBUNTU_INST_HTTP_HOSTNAME}${UBUNTU_INST_HTTP_DIRECTORY} ${UBUNTU_INST_RELEASE}-updates universe
+deb http://${UBUNTU_INST_HTTP_HOSTNAME}${UBUNTU_INST_HTTP_DIRECTORY} ${UBUNTU_INST_RELEASE} multiverse
+deb-src http://${UBUNTU_INST_HTTP_HOSTNAME}${UBUNTU_INST_HTTP_DIRECTORY} ${UBUNTU_INST_RELEASE} multiverse
+deb http://${UBUNTU_INST_HTTP_HOSTNAME}${UBUNTU_INST_HTTP_DIRECTORY} ${UBUNTU_INST_RELEASE}-updates multiverse
+deb-src http://${UBUNTU_INST_HTTP_HOSTNAME}${UBUNTU_INST_HTTP_DIRECTORY} ${UBUNTU_INST_RELEASE}-updates multiverse
+deb http://${UBUNTU_INST_HTTP_HOSTNAME}${UBUNTU_INST_HTTP_DIRECTORY} ${UBUNTU_INST_RELEASE}-backports main restricted universe multiverse
+deb-src http://${UBUNTU_INST_HTTP_HOSTNAME}${UBUNTU_INST_HTTP_DIRECTORY} ${UBUNTU_INST_RELEASE}-backports main restricted universe multiverse
+
+deb http://security.ubuntu.com/ubuntu ${UBUNTU_INST_RELEASE}-security main restricted
+deb-src http://security.ubuntu.com/ubuntu ${UBUNTU_INST_RELEASE}-security main restricted
+deb http://security.ubuntu.com/ubuntu ${UBUNTU_INST_RELEASE}-security universe
+deb-src http://security.ubuntu.com/ubuntu ${UBUNTU_INST_RELEASE}-security universe
+deb http://security.ubuntu.com/ubuntu ${UBUNTU_INST_RELEASE}-security multiverse
+deb-src http://security.ubuntu.com/ubuntu ${UBUNTU_INST_RELEASE}-security multiverse
+EOF