Merge "Lower default IRONIC_VM_SPECS_RAM"
diff --git a/README.md b/README.md
index f0406c6..7eacebd 100644
--- a/README.md
+++ b/README.md
@@ -133,11 +133,25 @@
# Apache Frontend
-Apache web server is enabled for wsgi services by setting
-`APACHE_ENABLED_SERVICES` in your ``localrc`` section. Remember to
-enable these services at first as above.
+Apache web server can be enabled for wsgi services that support being deployed
+under HTTPD + mod_wsgi. By default, services that recommend running under
+HTTPD + mod_wsgi are deployed under Apache. To use an alternative deployment
+strategy (e.g. eventlet) for services that support an alternative to HTTPD +
+mod_wsgi set ``ENABLE_HTTPD_MOD_WSGI_SERVICES`` to ``False`` in your
+``local.conf``.
- APACHE_ENABLED_SERVICES+=key,swift
+Each service that can be run under HTTPD + mod_wsgi also has an override
+toggle available that can be set in your ``local.conf``.
+
+Keystone is run under HTTPD + mod_wsgi by default.
+
+Example (Keystone):
+
+ KEYSTONE_USE_MOD_WSGI="True"
+
+Example (Swift):
+
+ SWIFT_USE_MOD_WSGI="True"
# Swift
@@ -330,6 +344,25 @@
Q_HOST=$SERVICE_HOST
MATCHMAKER_REDIS_HOST=$SERVICE_HOST
+# Multi-Region Setup
+
+We want to setup two devstack (RegionOne and RegionTwo) with shared keystone
+(same users and services) and horizon.
+Keystone and Horizon will be located in RegionOne.
+Full spec is available at:
+https://wiki.openstack.org/wiki/Heat/Blueprints/Multi_Region_Support_for_Heat.
+
+In RegionOne:
+
+ REGION_NAME=RegionOne
+
+In RegionTwo:
+
+ disable_service horizon
+ KEYSTONE_SERVICE_HOST=<KEYSTONE_IP_ADDRESS_FROM_REGION_ONE>
+ KEYSTONE_AUTH_HOST=<KEYSTONE_IP_ADDRESS_FROM_REGION_ONE>
+ REGION_NAME=RegionTwo
+
# Cells
Cells is a new scaling option with a full spec at:
diff --git a/docs/source/changes.html b/docs/source/changes.html
index e4aef60..966b0c9 100644
--- a/docs/source/changes.html
+++ b/docs/source/changes.html
@@ -47,461 +47,16 @@
<div class='row pull-left'>
<h2>Recent Changes <small>What's been happening?</small></h2>
- <p>This is an incomplete list of recent changes to DevStack. For the complete list see <a href="https://review.openstack.org/#/q/status:merged+project:openstack-dev/devstack,n,z">the DevStack project in Gerrit</a>.</p>
- <dl class='pull-left'>
+ <p>These are the commits to DevStack for the last six months. For the complete list see <a href="https://review.openstack.org/#/q/status:merged+project:openstack-dev/devstack,n,z">the DevStack project in Gerrit</a>.</p>
+
+ <ul class='pull-left'>
<!--
- <dt></dt>
- <dd> <em>Commit <a href="https://review.openstack.org/x">x</a> merged dd_mmm_yyyy</em></dd>
+ This list is generated by:
+ git log --pretty=format:' <li>%s - <em>Commit <a href="https://review.openstack.org/#q,%h,n,z">%h</a> %cd</em></li>' --date=short --since 2014-01-01 | grep -v Merge
-->
- <dt>Install libguestfs with Nova Compute</dt>
- <dd>Add for Ubuntu installations; this eliminates use of NBD. <em>Commit <a href="https://review.openstack.org/70237">70237</a> merged 31 Jan 2014</em></dd>
- <dt>Fix Tempest config settings</dt>
- <dd>Cleans up a number of configuration issues between DevStack and Tempest. <em>Commit <a href="https://review.openstack.org/68532">68532</a> merged 31 Jan 2014</em></dd>
- <dt>Merge Gantt support</dt>
- <dd>Gantt support is added to the repo as a plugin. <em>Commit <a href="https://review.openstack.org/67666">67666</a> merged 31 Jan 2014</em></dd>
- <dt>Set Keystone admin_bind_host</dt>
- <dd>This works around an odd problem with Keystone's use of port 35357 and its use as an ephemeral port. <em>Commit <a href="https://review.openstack.org/57577">57577</a> merged 30 Jan 2014</em></dd>
- <dt>Generate Tempest service list</dt>
- <dd>This eliminates the manual maintenance of the services Tempest checks for. <em>Commit <a href="https://review.openstack.org/70015">70015</a> merged 30 Jan 2014</em></dd>
- <dt>Fix stop_swift()</dt>
- <dd>Kill all swift processes correctly with pkill. <em>Commit <a href="https://review.openstack.org/69440">69440</a> merged 28 Jan 2014</em></dd>
- <dt>Update Cinder cert script to use run_tempest</dt>
- <dd>Update following changes to Tempest's run_tests.sh script. <em>Commit <a href="https://review.openstack.org/66904">66904</a> merged 25 Jan 2014</em></dd>
- <dt>Add missing mongodb client</dt>
- <dd>The mongodb client was skipped on Fedora. <em>Commit <a href="https://review.openstack.org/65147">65147</a> merged 25 Jan 2014</em></dd>
- <dt>Fix reverting local changes in repo</dt>
- <dd>Work around a bug in <code>git diff --quiet</code> used in reverting the repo changes during global requirements handling. <em>Commit <a href="https://review.openstack.org/68546">68546</a> merged 25 Jan 2014</em></dd>
- <dt>Add cirros 3.0 image for Xenserver</dt>
- <dd>Xenserver wants the cirros 3.0 vhd image <em>Commit <a href="https://review.openstack.org/68136">68136</a> merged 25 Jan 2014</em></dd>
- <dt>Tweak upload_image.sh for .vmdk</dt>
- <dd>Relax the vmdk regex for parsing metadata out of the filename. <em>Commit <a href="https://review.openstack.org/68821">68821</a> merged 25 Jan 2014</em></dd>
- <dt>Keystone use common logging</dt>
- <dd>Switch Keystone to use common logging configuration. <em>Commit <a href="https://review.openstack.org/68530">68530</a> merged 25 Jan 2014</em></dd>
- <dt>Do not set bind_host for Heat APIs</dt>
- <dd>Let the Heat API service bind to 0.0.0.0 to be consistent with other DevStack services. <em>Commit <a href="https://review.openstack.org/67683">67683</a> merged 25 Jan 2014</em></dd>
- <dt>Fine tune libvirt logging</dt>
- <dd>Disable client-side log and tune server-side to usable levels. <em>Commit <a href="https://review.openstack.org/68194">68194</a> merged 24 Jan 2014</em></dd>
- <dt>Add check framework for Neutron server/backen integration</dt>
- <dd>Add the framework to verify Neutron controllers and backend service configurations per plugin requirements. <em>Commit <a href="https://review.openstack.org/64754">64754</a> merged 17 Jan 2014</em></dd>
- <dt>Add Marconi to Tempest config</dt>
- <dd>Check if Marconi is enabled in Tempest configuration <em>Commit <a href="https://review.openstack.org/65478">65478</a> merged 13 Jan 2014</em></dd>
- <dt>Enable libvirt logging</dt>
- <dd>Enable server- and client-side logging for libvirt <em>Commit <a href="https://review.openstack.org/65834">65834</a> merged 13 Jan 2014</em></dd>
- <dt>Clean up Heat/Cloud Formation catalog template</dt>
- <dd>The service catalog entries in the template file for orchestration and cloud formation were out of whack. <em>Commit <a href="https://review.openstack.org/65916">65916</a> merged 13 Jan 2014</em></dd>
- <dt>Create Ceilometer service accounts</dt>
- <dd>Create the Ceilometer service accounts in Keystone. <em>Commit <a href="https://review.openstack.org/65678">65678</a> merged 13 Jan 2014</em></dd>
- <dt>Freshen Ubuntu supported eleases</dt>
- <dd>Remove oneiric and quantal support. <em>Commit <a href="https://review.openstack.org/64836">64836</a> merged 13 Jan 2014</em></dd>
- <dt>Strengthen server shutdown</dt>
- <dd>Add screen_stop() to kill server process groups to ensure shutdown of child processes. <em>Commit <a href="https://review.openstack.org/66080">66080</a> merged 13 Jan 2014</em></dd>
- <dt>Support for VMware NSX plugin</dt>
- <dd>This is the Nicira NVP plugin renamed. <em>Commit <a href="https://review.openstack.org/65002">65002</a> merged 13 Jan 2014</em></dd>
- <dt>Remove --tenant_id usage</dt>
- <dd>Remove remaining uses of <code>--tenant_id</code> and replace with <code>--tenant-id</code>. <em>Commit <a href="https://review.openstack.org/65682">65682</a> merged 11 Jan 2014</em></dd>
- <dt>Identity API version configuration for Cinder, Glance and Heat</dt>
- <dd>Use IDENTITY_API_VERISON to configure Cinder, Glance and Heat. <em>Commit <a href="https://review.openstack.org/57620">57620</a> merged 11 Jan 2014</em></dd>
- <dt>Fedora 20 Support</dt>
- <dd>Add support for Fedora 20, remove Fedora 16 and 17 support. <em>Commit <a href="https://review.openstack.org/63647">63647</a> merged 11 Jan 2014</em></dd>
- <dt>Trove service availablility in Tempest</dt>
- <dd>Check if Trove is enabled in Tempest configuration. <em>Commit <a href="https://review.openstack.org/64913">64913</a> merged 11 Jan 2014</em></dd>
-
- <dt>Change libvirtd log level to DEBUG</dt>
- <dd>Keep libvirtd logs in the gate log stash. <em>Commit <a href="https://review.openstack.org/63992">63992</a> merged 02 Jan 2014</em></dd>
- <dt>Fix section start bug in get_meta_section()</dt>
- <dd>get_meta_section() would incorrectly interpret '[[' and ']]' in shell command lines inside local.conf. <em>Commit <a href="https://review.openstack.org/63280">63280</a> merged 21 Dec 2013</em></dd>
- <dt>Use Fedora 20 final release</dt>
- <dd>Set the URL to get the final Fedora 20 release image. <em>Commit <a href="https://review.openstack.org/63200">63200</a> merged 21 Dec 2013</em></dd>
- <dt>Use Ubuntu 'saucy' as XenAPI DomU</dt>
- <dd>Updated the XenAPI DomU to Ubuntu Saucy release. <em>Commit <a href="https://review.openstack.org/60107">60107</a> merged 21 Dec 2013</em></dd>
- <dt>Begin support for RHEL7 Beta</dt>
- <dd>Adjust the sed regex in GetOSVersion() to handle text between the version and codename in RHEL-style release strings. <em>Commit <a href="https://review.openstack.org/62543">62543</a> merged 17 Dec 2013</em></dd>
- <dt>Configure Tempest tests for network extensions</dt>
- <dd>Puts the value of NETWORK_API_EXTENSIONS into tempest.conf. <em>Commit <a href="https://review.openstack.org/62054">62054</a> merged 17 Dec 2013</em></dd>
- <dt>Default floating IP range to /24</dt>
- <dd>Set the default FLOATING_RANGE=172.24.4.0/24 to accomodate parallel testing in Tempest. <em>Commit <a href="https://review.openstack.org/58284">58284</a> merged 17 Dec 2013</em></dd>
- <dt>Support oslo-rootwrap in Cinder</dt>
- <dd>Cinder can use both cinder-rootwrap and oslo-rootwrap for a transitional period. <em>Commit <a href="https://review.openstack.org/62003">62003</a> merged 16 Dec 2013</em></dd>
- <dt>Heat tests can use test image if present</dt>
- <dd>If HEAT_CREATE_TEST_IMAGE is defined and the image named in its value is present Heat will use it rather than invoke diskimage-builder. <em>Commit <a href="https://review.openstack.org/59893">59893</a> merged 15 Dec 2013</em></dd>
- <dt>Fix iniset() pipe ('|') bug</dt>
- <dd>iniset() did not properly handle a value containing a pipe ('|') character. <em>Commit <a href="https://review.openstack.org/60170">60170</a> merged 14 Dec 2013</em></dd>
- <dt>Define Q_L3_ENABLED=True for MidoNet plugin</dt>
- <dd>Q_L3_ENABLED=True for MidoNet plugin. <em>Commit <a href="https://review.openstack.org/56459">56459</a> merged 12 Dec 2013</em></dd>
- <dt>Fix Swift workers for non-proxies</dt>
- <dd>Swift spawned more proxy workers than required in DevStack environments, reduce it to '1'. <em>Commit <a href="https://review.openstack.org/61122">61122</a> merged 12 Dec 2013</em></dd>
- <dt>Add Keystone auth port to Nova config</dt>
- <dd>Set keystone_authtoken:auth_port to KEYSTONE_AUTH_PORT in nova.conf. <em>Commit <a href="https://review.openstack.org/60736">60736</a> merged 12 Dec 2013</em></dd>
- <dt>Increase additional flavor RAM on ppc64</dt>
- <dd>Create the nano and micro flavors with 128MB and 256MB RAM respectively on ppc64. <em>Commit <a href="https://review.openstack.org/60606">60606</a> merged 12 Dec 2013</em></dd>
- <dt>Increase XenAPI DomU memory</dt>
- <dd>Increase XenAPI DomU memory (OSDOMU_MEM_MB) to 4GB by default. <em>Commit <a href="https://review.openstack.org/59792">59792</a> merged 10 Dec 2013</em></dd>
- <dt>Assign unique names to fake nova-computes</dt>
- <dd>Assign each fake nova-compute instance a unique name so the scheduler works properly. <em>Commit <a href="https://review.openstack.org/58700">58700</a> merged 09 Dec 2013</em></dd>
- <dt>Fix whitespace bugs in merge_config_file()</dt>
- <dd>Merge_config_file() did not properly skip lines with only whitespace. <em>Commit <a href="https://review.openstack.org/60112">60112</a> merged 09 Dec 2013</em></dd>
- <dt>Setup Savanna user and endpoints</dt>
- <dd>Create savanna user, and savanna and data_processing endpoints. <em>Commit <a href="https://review.openstack.org/60077">60077</a> merged 09 Dec 2013</em></dd>
- <dt>Display DevStack status at XenAPI DomU login</dt>
- <dd>Add DevStack setup setvice status to /etc/issue so it is displayed at the DomU login. <em>Commit <a href="https://review.openstack.org/48444">48444</a> merged 09 Dec 2013</em></dd>
- <dt>Fix install_get_pip using proxy</dt>
- <dd>install_get_pip did not work properly through an HTTP proxy. <em>Commit <a href="https://review.openstack.org/60242">60242</a> merged 07 Dec 2013</em></dd>
- <dt>Add color logs to Trove</dt>
- <dd>Add the colorized log output to Trove. <em>Commit <a href="https://review.openstack.org/58363">58363</a> merged 06 Dec 2013</em></dd>
- <dt>Update LDAP support</dt>
- <dd>Update DevStack's LDAP support to make the DN configurable. <em>Commit <a href="https://review.openstack.org/58590">58590</a> merged 06 Dec 2013</em></dd>
- <dt>Add Marconi support</dt>
- <dd>Add Marconi support via extras.d plugin. <em>Commit <a href="https://review.openstack.org/47999">47999</a> merged 05 Dec 2013</em></dd>
- <dt>Split Ceilometer collector service</dt>
- <dd>Split Celio collector service into ceilometer-collector and ceilometer-agent-notification. <em>Commit <a href="https://review.openstack.org/58600">58600</a> merged 05 Dec 2013</em></dd>
- <dt>Add 'post-extra' configuration phase</dt>
- <dd>The 'post-extra' configuration phase is processed after the 'extra' plugin phase is executed. <em>Commit <a href="https://review.openstack.org/55583">55583</a> merged 05 Dec 2013</em></dd>
- <dt>Enable user interaction with stack.sh in XenAPI</dt>
- <dd>Multiple changes to how DevStack is configured to run under XenServer. <em>Commit <a href="https://review.openstack.org/48092">48092</a> merged 04 Dec 2013</em></dd>
- <dt>Handle VMDK metadata</dt>
- <dd>upload_image.sh now attempts to get the metadata for a *.vmdk file from *-flat.vmdk. <em>Commit <a href="https://review.openstack.org/58356">58356</a> merged 04 Dec 2013</em></dd>
- <dt>Deploy Keystone with SSL</dt>
- <dd>Configure Keystone to use SSL rather than using the tls-proxy function. <em>Commit <a href="https://review.openstack.org/47076">47076</a> merged 03 Dec 2013</em></dd>
- <dt>change default Git base to git.openstack.org</dt>
- <dd>Pull repos from git.openstack.org where possible. <em>Commit <a href="https://review.openstack.org/56749">56749</a> merged 02 Dec 2013</em></dd>
- <dt>Fix Neutron color log format</dt>
- <dd>Fix Neutron color log format. <em>Commit <a href="https://review.openstack.org/58350">58350</a> merged 01 Dec 2013</em></dd>
- <dt>Truncate PKI token logging</dt>
- <dd>Limit the PKI token logged to 12 characters. <em>Commit <a href="https://review.openstack.org/57526">57526</a> merged 26 Nov 2013</em></dd>
- <dt>Support memchace for Keystone token backend</dt>
- <dd>Use memcache backend with KEYSTONE_TOKEN_BACKEND=memcache. <em>Commit <a href="https://review.openstack.org/56691">56691</a> merged 26 Nov 2013</em></dd>
- <dt>Remove powervm hypervisor support</dt>
- <dd>The powervm arch is EOL, will be replaced in the future. <em>Commit <a href="https://review.openstack.org/57789">57789</a> merged 25 Nov 2013</em></dd>
- <dt>Increase default Swift timeouts</dt>
- <dd>node_timeout and conn_timeout needed to be increased for testing in slow VM environments. <em>Commit <a href="https://review.openstack.org/57514">57514</a> merged 25 Nov 2013</em></dd>
- <dt>Add hacking rules for shell scripts</dt>
- <dd>Record the previously unwritten rules for common formatting. <em>Commit <a href="https://review.openstack.org/55024">55024</a> merged 24 Nov 2013</em></dd>
- <dt>Default to Cinder API v2</dt>
- <dd>Set OS_VOLUME_API_VERSION=2 by default. <em>Commit <a href="https://review.openstack.org/43045">43045</a> merged 22 Nov 2013</em></dd>
- <dt>Drop nodejs dependency</dt>
- <dd>Horizon no longer needs nodejs. <em>Commit <a href="https://review.openstack.org/55255">55255</a> merged 22 Nov 2013</em></dd>
- <dt>Change to use STACK_USER rather than USER</dt>
- <dd>This changes DevStack to use STACK_USER for username references. <em>Commit <a href="https://review.openstack.org/57212">57212</a> merged 22 Nov 2013</em></dd>
- <dt>Enable specifying FLAT_NETWORK_BRIDGE in XenAPI</dt>
- <dd>Set FLAT_NETWORK_BRIDGE for DomU. <em>Commit <a href="https://review.openstack.org/48296">48296</a> merged 22 Nov 2013</em></dd>
- <dt>Add file: URL handling to upload_image.sh</dt>
- <dd>upload_image.sh can now use file: URLs as the image source. <em>Commit <a href="https://review.openstack.org/56721">56721</a> merged 21 Nov 2013</em></dd>
- <dt>Increase Swift backing storage size</dt>
- <dd>Swift now has SWIFT_LOOPBACK_DISK_SIZE_DEFAULT=6G. <em>Commit <a href="https://review.openstack.org/56116">56116</a> merged 13 Nov 2013</em></dd>
- <dt>Fix Horizon config for Apache 2.4</dt>
- <dd>Handle Apache config differences according to Apache version and not distro release. <em>Commit <a href="https://review.openstack.org/54738">54738</a> merged 11 Nov 2013</em></dd>
- <dt>Add FORCE_CONFIG_DRIVE to nova.conf</dt>
- <dd>Add FORCE_CONFIG_DRIVE, default to 'always'. <em>Commit <a href="https://review.openstack.org/54746">54746</a> merged 01 Nov 2013</em></dd>
- <dt>Turn off Nova firewall when using Neutron</dt>
- <dd>Sets firewall_driver when Neutron is enabled. <em>Commit <a href="https://review.openstack.org/54827">54827</a> merged 01 Nov 2013</em></dd>
- <dt>Use nova.conf for auth_token config</dt>
- <dd>Eliminates using api-paste.ini. <em>Commit <a href="https://review.openstack.org/53212">53212</a> merged 01 Nov 2013</em></dd>
- <dt>Use conder.conf for auth_token config</dt>
- <dd>Eliminates using api-paste.ini. <em>Commit <a href="https://review.openstack.org/53213">53213</a> merged 01 Nov 2013</em></dd>
- <dt>Add Cinder support for NFS driver</dt>
- <dd>Set CINDER_DRIVER=nfs. <em>Commit <a href="https://review.openstack.org/53276">53276</a> merged 31 Oct 2013</em></dd>
- <dt>Add Postgres for Ceilometer backend</dt>
- <dd>Set CEILOMETER_BACKEND=postgresql. <em>Commit <a href="https://review.openstack.org/53715">53715</a> merged 31 Oct 2013</em></dd>
- <dt>Add Ubuntu Trusty</dt>
- <dd>Add support for Ubuntu Trusty. <em>Commit <a href="https://review.openstack.org/53965">53965</a> merged 30 Oct 2013</em></dd>
- <dt>Enable Keystone auth in Ironic</dt>
- <dd>Always use Keystone for Ironic auth. <em>Commit <a href="https://review.openstack.org/51845">51845</a> merged 25 Oct 2013</em></dd>
- <dt>Add bash8 tool</dt>
- <dd>Perform basic format tests in CI gate. <em>Commit <a href="https://review.openstack.org/51676">51676</a> merged 23 Oct 2013</em></dd>
- <dt>Add Savanna support</dt>
- <dd>Add Savanna support using the plugin mech. <em>Commit <a href="https://review.openstack.org/50601">50601</a> merged 22 Oct 2013</em></dd>
- <dt>Install Ironic client</dt>
- <dd>Add python-ironicclient repo. <em>Commit <a href="https://review.openstack.org/51853">51853</a> merged 22 Oct 2013</em></dd>
-
- <dt>Fix fixup_stuff.sh for RHEL6</dt>
- <dd>fixup_stuff.sh didn't work properly on RHEL6/Python 2.6 <em>Commit <a href="https://review.openstack.org/52176">52176</a> merged 17 Oct 2013</em></dd>
- <dt>Add more extras.d hooks</dt>
- <dd>Add more hooks to call into extras.d to support adding services without modifying core DevStack scripts. <em>Commit <a href="https://review.openstack.org/51939">51939</a> merged 16 Oct 2013</em></dd>
- <dt>Add run_tests.sh</dt>
- <dd>Add a simple run_tests.sh for running bash8. <em>Commit <a href="https://review.openstack.org/51711">51711</a> merged 15 Oct 2013</em></dd>
- <dt>Add bash8 style checker</dt>
- <dd>Add bash8 to check certain style constraints in shell scripts. <em>Commit <a href="https://review.openstack.org/51676">51676</a> merged 15 Oct 2013</em></dd>
- <dt>Add trove-conductor service</dt>
- <dd>Add trove-conductor service to Trove support <em>Commit <a href="https://review.openstack.org/49237">49237</a> merged 14 Oct 2013</em></dd>
- <dt>Add new local configuration file</dt>
- <dd>Add local.conf support to replace localrc, includes ability to set values in arbitrary config files. <em>Commit <a href="https://review.openstack.org/46768">46768</a> merged 14 Oct 2013</em></dd>
- <dt>Remove 'stack' account creation from stack.sh</dt>
- <dd>This forces stack.sh to not be run as root and provides the account creation as a separate script. <em>Commit <a href="https://review.openstack.org/49798">49798</a> merged 05 Oct 2013</em></dd>
- <dt>Support running Keystone under Apache</dt>
- <dd>Run Keystone under Apache along with Swift and Horizon <em>Commit <a href="https://review.openstack.org/46866">46866</a> merged 26 Sep 2013</em></dd>
- <dt>Increase default Swift storage for Tempest</dt>
- <dd>When Tempest is enabled increase the default Swift storage to 4Gb <em>Commit <a href="https://review.openstack.org/46770">46770</a> merged 18 Sep 2013</em></dd>
- <dt>Keystone mixed backend support</dt>
- <dd>Add support for Keystone to use mixed backend configuration <em>Commit <a href="https://review.openstack.org/44605">44605</a> merged 16 Sep 2013</em></dd>
- <dt>Add Trove support</dt>
- <dd>Add support for Trove service <em>Commit <a href="https://review.openstack.org/38169">38169</a> merged 12 Sep 2013</em></dd>
- <dt>Enable Neutron L3 plugon</dt>
- <dd>Support Neutron's L3 plugin <em>Commit <a href="https://review.openstack.org/20909">20909</a> merged 10 Sep 2013</em></dd>
- <dt>Configure VPNaaS panel in Horizon</dt>
- <dd>If enabled configure VPNaaS panel in Horizon by default <em>Commit <a href="https://review.openstack.org/45751">45751</a> merged 10 Sep 2013</em></dd>
- <dt>Enable multi-threaded Nova API servers</dt>
- <dd>Sets the Nova API servers to use four worker threads by default <em>Commit <a href="https://review.openstack.org/45314">45314</a> merged 09 Sep 2031</em></dd>
- <dt>Handle .vmdk custom properties</dt>
- <dd>Parses property values out of the .vmdk filename and includes them in the glance upload. <em>Commit <a href="https://review.openstack.org/45181">45181</a> merged 09 Sep 2013</em></dd>
- <dt>Use pip 1.4.1</dt>
- <dd>Adds pip option --pre <em>Commit <a href="https://review.openstack.org/45436">45436</a> merged 06 Sep 2031</em></dd>
- <dt>Rename Ceilometer alarm service</dt>
- <dd>Change 'ceilometer-alarm-eval' to 'ceilometer-alarm-singleton' and 'ceilometer-alarm-notifier' <em>Commit <a href="https://review.openstack.org/45214">45214</a> merged 06 Sep 2013</em></dd>
- <dt>Support OpenSwan in Neutron VPNaaS</dt>
- <dd>Neutron VPNaaS changed IPSec to OpenSwan <em>Commit <a href="https://review.openstack.org/42265">42265</a> merged 06 Sep 2013</em></dd>
- <dt>Change Ceilometer backend default to MySQL</dt>
- <dd>Issues with MongoDB 2.4 availability resulted in this change <em>Commit <a href="https://review.openstack.org/43851">43851</a> merged 05 Sep 2013</em></dd>
- <dt>Add Ironic support</dt>
- <dd>Add Ironic as a supported service <em>Commit <a href="https://review.openstack.org/41053">41053</a> merged 03 Sep 2013</em></dd>
- <dt>Add support for Docker hypervisor</dt>
- <dd>Add Docker support and the hypervisor plugin mechanism <em>Commit <a href="https://review.openstack.org/40759">40759</a> merged 30 Aug 2013</em></dd>
-
- <dt>Add support for Heat resource templates</dt>
- <dd>Install Heat resource template files. <em>Commit <a href="https://review.openstack.org/43631">43631</a> merged 29 Aug 2013</em></dd>
- <dt>Support Neutron FWaaS</dt>
- <dd>Add support for OpenStack Networking Firewall (FWaaS). <em>Commit <a href="https://review.openstack.org/37147">37147</a> merged 29 Aug 2013</em></dd>
- <dt>Add new #testonly tag for package prereq files</dt>
- <dd>Add INSTALL_TESTONLY_PACKAGES to enable installing packages marked with #testonly. These packages are required only for running unit tests. <em>Commit <a href="https://review.openstack.org/38127">38127</a> merged 28 Aug 2013</em></dd>
- <dt>Add support for Heat environments</dt>
- <dd>Install Heat global environment config files. <em>Commit <a href="https://review.openstack.org/43387">43387</a> merged 28 Aug 2013</em></dd>
- <dt>Configure bash completion</dt>
- <dd>Configure bash completion for cinder, keystone, neutron, nova and nova-manage. <em>Commit <a href="https://review.openstack.org/41928">41928</a> merged 26 Aug 2013</em></dd>
- <dt>Change horizon Apache config file to horizon.conf</dt>
- <dd>Add .conf to horizon Apache config file to be consistent with Fedora practice. <em>Commit <a href="https://review.openstack.org/40352">40352</a> merged 22 Aug 2013</em></dd>
- <dt>Echo service start failures</dt>
- <dd>Echo service start failures to console so status is obvious in gate logs. <em>Commit <a href="https://review.openstack.org/42427">42427</a> merged 16 Aug 2013</em></dd>
- <dt>Colorize Heat logs</dt>
- <dd>Add Nova-style color support to Heat logging. <em>Commit <a href="https://review.openstack.org/40342">40342</a> merged 16 Aug 2013</em></dd>
- <dt>Add Cinder support to VMware configuration</dt>
- <dd>Configures Cinder to use VMware backend. <em>Commit <a href="https://review.openstack.org/41612">41612</a> merged 15 Aug 2013</em></dd>
- <dt>Default PIP_USE_MIRRORS to False</dt>
- <dd>Pip mirrors no longer used by default, can stil be enabled with PIP_USE_MIRRORS=True. <em>Commit <a href="https://review.openstack.org/40623">40623</a> merged 13 Aug 2013</em></dd>
- <dt>Configure Volume API v2</dt>
- <dd>Configure both SQL and template backends with Volume API v2. <em>Commit <a href="https://review.openstack.org/22489">22489</a> merged 13 Aug 2013</em></dd>
- <dt>Enable Tempest debug logging</dt>
- <dd>Enable Tempest debug logging for the same output verbosity under testr. <em>Commit <a href="https://review.openstack.org/41113">41113</a> merged 12 Aug 2013</em></dd>
- <dt>Configure Cinder for Ceilometer notifications</dt>
- <dd>Enable Cinder to send notifications when Ceilometer is enabled. <em>Commit <a href="https://review.openstack.org/41108">41108</a> merged 12 Aug 2013</em></dd>
- <dt>Support Heat-only configuration</dt>
- <dd>Allows stack.sh to start a standalone Heat installation. <em>Commit <a href="https://review.openstack.org/39602">39602</a> merged 10 Aug 2013</em></dd>
- <dt>Add tools/install_pip.sh</dt>
- <dd>Install pip from source in order to get a current version rather than the out-of-date OS-supplied version <em>Commit <a href="https://review.openstack.org/39827">39827</a> merged 08 Aug 2013</em></dd>
- <dt>Add call trace to error message</dt>
- <dd>Display the bash call stack in die() output. <em>Commit <a href="https://review.openstack.org/39887">39887</a> merged 08 Aug 2013</em></dd>
- <dt>Configure Keystone client in Cinder</dt>
- <dd>Configure auth creds in Cinder to allow queries to Keystone. <em>Commit <a href="https://review.openstack.org/39747">39747</a> merged 07 Aug 2013</em></dd>
- <dt>Update all repos to global requirements</dt>
- <dd>Force update project repos to global requirements before tests. <em>Commit <a href="https://review.openstack.org/35705">35705</a> merged 06 Aug 2013</em></dd>
- <dt>Don't add 'bulk' middleware for Swift</dt>
- <dd>The bulk middleware is already in the sample so don't add it. <em>Commit <a href="https://review.openstack.org/39826">39826</a> merged 06 Aug 2013</em></dd>
- <dt>Enable using Apache as Swift frontend</dt>
- <dd>Refactor apache functions into lib/apache; configure apache2 vhost and wsgi files for Swift proxy, account, container and object server. <em>Commit <a href="https://review.openstack.org/33946">33946</a> merged 02 Aug 2013</em></dd>
- <dt>Launch Ceilometer alarm services</dt>
- <dd>Add ceilometer-alarm-notify and ceilometer-alarm-eval to the Ceilometer services. <em>Commit <a href="https://review.openstack.org/39300">39300</a> merged 01 Aug 2013</em></dd>
- <dt>Fix Tempest logging configuration</dt>
- <dd>Correctly set the tempest output logging to dump all of tempest logs into a tempest.log file. Also fixes logging in the gate no longer print every log message on the console. <em>Commit <a href="https://review.openstack.org/39571">39571</a> merged 31 Jul 2013</em></dd>
- <dt>Install Oslo from source</dt>
- <dd>Install the gradulated Oslo libraries from source into $DEST. <em>Commit <a href="https://review.openstack.org/39450">39450</a> merged 31 Jul 2013</em></dd>
- <dt>Multiple fixes for cell support</dt>
- <dd>Start Nova cell services; skip unsupported exercises; use 'default' security group in exercises. <em>Commit <a href="https://review.openstack.org/38897">38897</a> merged 29 Jul 2013</em></dd>
- <dt>Add MySQL support for Ceilometer</dt>
- <dd>Add MySQL storage support for Ceilometer. <em>Commit <a href="https://review.openstack.org/37413">37413</a> merged 19 Jul 2013</em></dd>
- <dt>Create Compute API v3 endpoint</dt>
- <dd>Configures SQL and templated backends for Compute API v3. The service type is 'computev3'. <em>Commit <a href="https://review.openstack.org/33277">33277</a> merged 18 Jul 2013</em></dd>
- <dt>Add Neutron VPNaaS support</dt>
- <dd>Add Support for OpenStack Networking VPNaaS (IPSec) <em>Commit <a href="https://review.openstack.org/32174">32174</a> merged 15 Jul 2013</em></dd>
- <dt>Configure Swift functional tests</dt>
- <dd>The default Swift configuration now has functional tests properly configured. <em>Commit <a href="https://review.openstack.org/35793">35793</a> merged 12 Jul 2013</em></dd>
- <dt>Enable all Nova notifications</dt>
- <dd>Nova now sends all notification events to Ceilometer. <em>Commit <a href="https://review.openstack.org/35258">35258</a> merged 08 Jul 2013</em></dd>
- <dt>Add IDENTITY_API_VERSION</dt>
- <dd>IDENTITY_API_VERSION defaults to '2.0', enables setting '3' for API v3. <em>Commit <a href="https://review.openstack.org/34884">34884</a> merged 08 Jul 2013</em></dd>
-
- <dt>Rename Qunatum repos to Neutron</dt>
- <dd>Part of the project renaming process. This does not change the process short names ('q-api', 'q-agt', etc) or the variable names starting with <code>Q_</code>. Some Nova and Horizon changes remain to be completed. The change has been applied to stable/grizzly (35860) and stable/folsom (35861). <em>Commit <a href="https://review.openstack.org/35981">35981, 35861, 35860, 35859</a> merged 07 Jul 2013</em></dd>
- <dt>Direct installation of Python prerequisites</dt>
- <dd>Python prereqs are now installed by pip (and not easy_install) directly from each projects <code>requirements.txt</code>. <em>Commit <a href="https://review.openstack.org/35696">35696</a> merged 07 Jul 2013</em></dd>
- <dt>Enable Fedora 19</dt>
- <dd>Fedora 19 is now supported directly. <em>Commit <a href="https://review.openstack.org/35071">35071</a> merged 03 Jul 2013</em></dd>
- <dt>Fix Cinder clones on RHEL 6/CentOS</dt>
- <dd>On RHEL 6/CentOS 6 cloned LVM volumes required more space for metadata storage. <em>Commit <a href="https://review.openstack.org/34640">34640</a> merged 28 Jun 2013</em></dd>
- <dt>Use lower case section names in Quantum</dt>
- <dd>The service code now supports lowercase section names, change DevStack to use them by default. <em>Commit <a href="https://review.openstack.org/34177">34177</a> merged 27 Jun 2013</em></dd>
- <dt>Set default VOLUME_BACKING_FILE to 10Gb</dt>
- <dd>The previous default of 5Gb was not large enough for some Tempest usage requirements. <em>Commit <a href="https://review.openstack.org/33885">33885</a> merged 21 Jun 2013</em></dd>
- <dt>Use service role for service accounts</dt>
- <dd>Use an account with service role assigned rather than a full admin account for swift, heat, ceilometer. Ceilometer was later restored to admin account in <a href="https://review.openstack.org/33838">33838</a>. <em>Commit <a href="https://review.openstack.org/31687">31687</a> merged 16 Jun 2013</em></dd>
- <dt>Enable Nova API v3</dt>
- <dd>Nova disables API v3 by default so explicitly enable it. <em>Commit <a href="https://review.openstack.org/311980">31190</a> merged 31 May 2013</em></dd>
- <dt>Enable Debian support</dt>
- <dd>Allows Devstack to run on Debian as an unsupported OS. <em>Commit <a href="https://review.openstack.org/28215">28215</a> merged 9 May 2013</em></dd>
- <dt>Default SWIFT_DATA_DIR to use $DATA_DIR</dt>
- <dd>Previously SWIFT_DATA_DIR was in $DEST/data. <em>Commit <a href="https://review.openstack.org/27749">27749</a> merged 3 May 2013</em></dd>
- <dt>Set default S3_URL port to 8080</dt>
- <dd>Set port to 8080 if swift3 is enabled, previously was nove objectstore value of 3333. <em>Commit <a href="https://review.openstack.org/27404">27404</a> merged 25 Apr 2013</em></dd>
-
- <dt>Use example settings in horizon repo as local_settings.py</dt>
- <dd>Removes <code>files/horizon_settings.py</code> and copies the same file from the Horizon repo. <em>Commit <a href="https://review.openstack.org/25510">25510</a> merged 28 Mar 2013</em></dd>
- <dt>Add support for iso files as glance images</dt>
- <dd>Add support for iso files as glance images <em>Commit <a href="https://review.openstack.org/25290">25290</a> merged 28 Mar 2013</em></dd>
-
- <dt>Allow processes to run without screen</dt>
- <dd>Add <code>USE_SCREEN=False</code> to <code>localrc</code> to cause all server processes to run without <code>screen</code>. This is expected to be used primarily in the CI tests and should address the failures seen when <code>screen</code> does not start a process. <em>Commit <a href="https://review.openstack.org/23148">23148</a> merged 20 Mar 2013</em></dd>
- <dt>Add clean.sh</dt>
- <dd>This is intended to remove as much of the non-packaged (both OS and pip) remnants of DevStack from the system. It is suitable for changing queue managers and databases as those packages are uninstalled. It does not change the network configuration that Nova performs nor does it even attempt to undo anything that Quantum does. <em>Commit <a href="https://review.openstack.org/24360">24360</a> merged 15 Mar 2013</em></dd>
- <dt>Add support for running a specific set of exercises</dt>
- <dd>Set <code>RUN_EXERCISES</code> to a comma separated list of exercise names to run. <code>SKIP_EXERCISES</code> is ignored in this mode. <em>Commit <a href="https://review.openstack.org/23846">23846</a> merged 15 Mar 2013</em></dd>
- <dt>Deprecate DATABASE_TYPE and use_database</dt>
- <dd>This changes the way that a database is selected back to using only <code>ENABLED_SERVICES</code>. Backward compatibility is maintained until after Grizzly is released. <em>Commit <a href="https://review.openstack.org/22635">22635</a> merged 22 Feb 2013</em></dd>
- <dt>Create tools/install_prereqs.sh</dt>
- <dd>This factors out the installation/upgrade of required OS packages so it can run independently of <code>stack.sh</code>. It also adds a time marker so it does not run again within a set amount of time, default is 2 hours. Remove <code>.prereqs</code> to reset this timeout. <em>Commit <a href="https://review.openstack.org/21397">21397</a> merged 10 Feb 2013</em></dd>
- <dt>Add initial LDAP support</dt>
- <dd>Installs and configures OpenLDAP for Keystone. Select by adding <code>enable_service ldap</code> and <code>KEYSTONE_IDENTITY_BACKEND=ldap</code> to <code>localrc</code>. <em>Commit <a href="https://review.openstack.org/20249">20249</a> merged 07 Feb 2013</em></dd>
- <dt>Add variable to set Keystone token backend</dt>
- <dd>Change the default Keystone token backend from <code>kvs</code> to <code>sql</code>by setting <code>KEYSTONE_TOKEN_BACKEND=sql</code>. <em>Commit <a href="https://review.openstack.org/20739">20739</a> merged 30 Jan 2013</em></dd>
- <dt>Add Sheepdog support in Cinder</dt>
- <dd>This enables using Sheepdog as a Cinder backend storage by setting <code>CINDER_DRIVER=sheepdog</code>. <em>Commit <a href="https://review.openstack.org/19931">19931</a> merged 18 Jan 2013</em></dd>
- <dt>Support SPICE</dt>
- <dd>Adds an 'n-spice' service (off by default) that supports SPICE in the Nova libvirt driver. It also allows running in a SPICE only environment. <em>Commit <a href="https://review.openstack.org/19934">19934</a> merged 18 Jan 2013</em></dd>
-
- <dt>Add a mechanism to automatically load additional projects at the end of <code>stack.sh</code></dt>
- <dd>This differs from loca.sh in that scripts can be dropped into <code>local.d</code> and <code>stack.sh</code> will source them in alphanumeric order. <em>Commit <a href="https://review.openstack.org/19367">19367</a> merged 11 Jan 2013</em></dd>
- <dt>Add support fir <code>baremetal</code> hypervisor</dt>
- <dd>This is the first of a set of commits that enable baremetal support. <em>Commit <a href="https://review.openstack.org/15941">15941</a> merged 28 Dec 2012</em></dd>
- <dt>Add support for OpenSuSE 12.2</dt>
- <dd>This is actually just the commit to remove the need for FORCE=yes, OpenSuSE support has been coming along for a while. <em>Commit <a href="https://review.openstack.org/18479">18479</a> merged 27 Dec 2012</em></dd>
- <dt>Save selected environment variables from <code>stack.sh</code> for later use</dt>
- <dd>Write a set of environment variables to <code>.stackenv</code> so they can be quickly used by other scripts. These are mostly the variables that are derived and not statically set. <code>.stackenv</code> is overwritten on every <code>stack.sh</code> run.<em>Commit <a href="https://review.openstack.org/18094">18094</a> merged 19 Dec 2012</em></dd>
- <dt>Enable Tempest by default</dt>
- <dd>Tempest is now downloaded and configured by default in DevStack. This is to encourage more developers to use it as part of their workflow. Tempest configuration is now handled in <code>lib/tempest</code>; <code>tools/configure_tempest.sh</code> has been removed. <em>Commit <a href="https://review.openstack.org/17808">17808</a> merged 12 Dec 2012</em></dd>
-
- <dt>Add PostgreSQL support</dt>
- <dd>Adds an abstraction layer to database configuration and adds support for PostgreSQL under that. MySQL is still the default. To use add <code>use_database postgresql</code> to <code>localrc</code><em>Commit <a href="https://review.openstack.org/15224">15224</a> merged 05 Nov 2012</em></dd>
- <dt>Add PKI token configuration support</dt>
- <dd>Adds configuration KEYSTONE_TOKEN_FORMAT to select <code>PKI</code> or <code>UUID</code> token format. The default is <code>PKI</code>.<em>Commit <a href="https://review.openstack.org/14895">14895</a> merged 29 Oct 2012</em></dd>
- <dt>Add Ubuntu Raring Ringtail support</dt>
- <dd>Adds raring to the list of supported Ubuntu releases<em>Commit <a href="https://review.openstack.org/14692">14692</a> merged 24 Oct 2012</em></dd>
- <dt>Add support for Quantum Ryu plugin</dt>
- <dd>Ryu plugin lets Quantum link Open vSwitch and Ryu OpenFlow controller<em>Commit <a href="https://review.openstack.org/10117">10117</a> merged 20 Oct 2012</em></dd>
- <dt>Configure and launch HEAT API</dt>
- <dd>Creates a new enpoint using service type 'orchestration'.<em>Commit <a href="https://review.openstack.org/14195">14195</a> merged 10 Oct 2012</em></dd>
- <dt>Fix upload image handling</dt>
- <dd>Detect qcow, raw, vdi, vmdk image formats and sets Glance's disk format accordingly. <em>Commit <a href="https://review.openstack.org/13044">13044</a> merged 24 Sep 2012</em></dd>
-
- <dt>Add non-verbose output mode</dt>
- <dd>Set <code>VERBOSE=False</code> in <code>localrc</code> and see only periodic status messages on the screen. The detailed output continues to be written to the log file if <code>LOGFILE</code> is set. <em>Commit <a href="https://review.openstack.org/12996/">12996</a> merged 17 Sep 2012</em></dt>
-
- <dt>Move data directories out of source repos</dt>
- <dd>Data for Glance (images and cache) and Nova (instances, all state info) have historically been in the source repo. They have been moved to <code>$DEST/data/<project></code> by default. <em>Commit <a hred="https://review.openstack.org/12989/">12989</a> merged 14 Sep 2012</em></dd>
-
- <dt>Change default Keystone backend to SQL</dt>
- <dd>Keystone now uses the SQL backend by default enabling the use of the CRUD API; now <code>keystone service-create ...</code> works. Set <code>KEYSTONE_CATALOG_BACKEND=template</code> to maintain the previous behaviour. <em>Commit <a href="https://review.openstack.org/12746/">12746</a> merged 12 Sep 2012</em></dd>
-
- <dt>Set <code>FLAT_INTERFACE</code> for local-only use</dt>
- <dd>Allow <code>FLAT_INTERFACE</code> to be defined as <code>""</code> to prevent the <code>HOST_IP</code> from being moved to <code>br100</code>. <em>Commit <a href="https://review.openstack.org/12671/">12671</a> merged 09 Sep 2012</em></dd>
-
- <dt>Add support for Quantum L3 agent</dt>
- <dd>Only available with OpenVSwitch plugin. <em>Commit <a href="https://review.openstack.org/11380/">11380</a> merged 08 Sep 2012</em></dd>
-
- <dt>Configure Glance caching</dt>
- <dd>Configure Glance caching and cache management. <em>Commit <a href="https://review.openstack.org/12207/">12207</a> merged 07 Sep 2012</em></dd>
-
- <dt>Add ZeroMQ RPC backend</dt>
- <dd>Support ZeroMQ in addition to RabbitMQ and Qpid. But only one at a time. <em>Commit <a href="https://review.openstack.org/9278/">9278</a> merged 01 Sep 2012</em></dd>
-
- <dt>Add Heat support</dt>
- <dd>Support Heat via the standard <code>ENABLED_SERVICES</code> configuration. <em>Commit <a href="https://review.openstack.org/11266/">11266</a> merged 28 Aug 2012</em></dd>
-
- <dt>Ceilometer is now supported.</dt>
- <dd>There is a description of how to get stared with it at <a href="https://lists.launchpad.net/openstack/msg15940.html">https://lists.launchpad.net/openstack/msg15940.html</a>. <em>Commit <a href="https://review.openstack.org/10363">10363</a> merged 17 Aug 2012</em></dd>
-
- <dt>Colored logs in cinder</dt>
- <dd>Chmouel has brought Vishy's colored log file patch to Cinder. <em>Commit <a href="https://review.openstack.org/10769">10769</a> merged 16 Aug 2012</em></dd>
-
- <dt>Keystone auth middleware from Swift</dt>
- <dd>Swift now uses <code>keystoneauth</code> by default. Commit <a href="https://review.openstack.org/10876">10876</a> merged 16 Aug 2012</dd>
-
- <dt>Add support for <code>NO_PROXY</code></dt>
- <dd>Added support for the standard no_proxy environment variable. <em>Commit <a href="https://review.openstack.org/10264">10264</a> merged 10 Aug 2012</em></dd>
-
- <dt>Use default route to find <code>HOST_IP</code></dt>
- <dd>This changed the login for hunting down the value of <code>HOST_IP</code> to look on the interface that has the default route. <em>Commit <a href="https://review.openstack.org/9291">9291</a> merged 10 Aug 2012</em></dd>
-
- <dt>Enable testing of OpenVZ guests</dt>
- <dd>Allows using OpenVZ virtualization layer. <em>Commit <a href="https://review.openstack.org/10317">10317</a> merged 07 Aug 2012</em></dd>
-
- <dt>Cinder is the default volume service</dt>
- <dd>DevStack is now configured to use Cinder as its volume service by default. <em>Commit <a hred="https://review.openstack.org/9662">9662</a> merged 27 Jul 2012</em></dd>
-
- <dt>Increase size of default volume backing file</dt>
- <dd>The volume backing file is now 5Gb by default. It can still be set using <code>VOLUME_BACKING_FILE_SIZE</code> in <code>localrc</code>. <em>Commit <a href="https://review.openstack.org/9837">9837</a> merged 19 Jul 2012</em></dd>
-
- <dt>Configure pip cache location</dt>
- <dd>Set <code>PIP_DOWNLOAD_CACHE</code> to the location of a root-writable directory to cache downloaded packages. <em>Commit <a href="https://review.openstack.org/9766">9766</a> merged 16 Jul 2012</em></dd>
-
- <dt>Add functions to manipulate <code>ENABLED_SERVICES</code>
- <dd>Now <code>ENABLED_SERVICES</code> can be edited in <code>localrc</code> by using <code>enable_service()</code> and <code>disable_service()</code>. <em>Commit <a href="https://review.openstack.org/9407">9407</a> merged 13 Jul 2012</em></dd>
-
- <dt>Change default Nova virt driver configuration</dt>
- <dd>Change the Nova configuration to use <code>compute_driver</code> rather than <code>connection_type</code>. <em>Commit <a href="https://review.openstack.org/9635">9635</a> merged 13 Jul 2012</em></dd>
-
- <dt>Add support for Keystone PKI</dt>
- <dd>Initializes Keystone's PKI configuration to support delegation and scaling. <em>Commit <a href="https://review.openstack.org/9240">9240</a> merged 13 Jul 2012</em></dd>
-
- <dt>Disable Swift S3 support by default</dt>
- <dd>Swift's S3 API support can be enabled by adding <code>swift3</code> to <code>ENABLED_SERVICES</code>. Commit <a href="https://review.openstack.org/9346">9346</a> merged 12 Jul 2012</em></dd>
-
- <dt>Set libvirt CPU mode</dt>
- <dd>Force <code>libvirt_cpu_move=none</code> to work around some nested virtualization issues. <em>Commit <a href="https://review.openstack.org/9718">9718</a> merged 12 Jul 2012</em></dd>
-
- <dt>Support Nova rootwrap</dt>
- <dd>Add support for Nova rootwrap configuration. <em>Commits <a href="https://review.openstack.org/8842/">8842</a> merged 25 Jun 2012 and <a href="https://review.openstack.org/8750/">8750</a> merged 20 Jun 2012</em></dd>
-
- <dt>Add Cinder support</dt>
- <dd>Cinder can now be enabled by adding <code>c-api,c-sch,c-vol</code> to <code>ENABLED-sERVICES</code>. This also changed a couple of defaults: <code>VOLUME_GROUP</code> is now <code>stack-volumes</code> and <code>VOLUME_BACKING_FILE</code> is now <code>${DEST}/data/${VOLUME_GROUP}-backing-file</code>. <em>Commit <a href="https://review.openstack.org/7042">7042</a> merged 20 Jun 2012</em></dd>
-
- <dt>Set default image for exercises</dt>
- <dd>Set <code>DEFAULT_IMAGE_NAME</code> in <code>stackrc</code> to the cirros images downloaded. This avoids the ambiguous search for an 'ami'. <em>Commit <a href="https://review.openstack.org/7910">7910</a> merged 14 Jun 2012</em></dd>
-
- <dt>Use default Swift config files</dt>
- <dd>Use the configuration files shipped with Swift source rather than carrying files in the DevStack sources. <em>Commit <a href="https://review.openstack.org/8223">8223</a> merged 14 Jun 2012</em></dd>
-
- <dt>Install Swift client</dt>
- <dd>Install the new Swift client when Swift is enabled. <em>Commit <a href="https://review.openstack.org/7663">7663</a> merged 11 Jun 2012</em></dd>
-
- <dt>Use pip to install Python dependencies</dt>
- <dd>Use the dependencies in the <code>*.egg-info/requires.txt</code> and <code>*.egg-info/dependency_links.txt</code> to prevent <code>easy_install</code> from resolving the dependencies. <em>Commit <a href="https://review.openstack.org/8289">8289</a> merged 07 Jun 2012</em></dd>
-
- <dt>Remove support for DevStack pip dependencies</dt>
- <dd>Remove DevStack Python dependency files <code>files/pips/*</code> and handle Python dependencies through <code>tools/pip-requires</code>. <em>Commit <a href="https://review.openstack.org/8263">8263</a> merged 07 Jun 2012</em></dd>
-
- <dt>Update XenServer support</dt>
- <dd>Updates to work with <code>xcp-xapi</code> package on Ubuntu 12.04 and fix a number of other minor install problems. <em>Commits <a href="https://review.openstack.org/7673/">7673</a> and <a href="https://review.openstack.org/7449/">7449</a> merged 01 Jun 2012</em></dd>
-
- <dt>Enable Quantum multi-node</dt>
- <dd>Enable running Quantum agents on multiple nodes. <em>Commit <a href="https://review.openstack.org/7001">7001</a> merged 26 May 2012</em></dd>
-
- <dt>Reinitialize Swift data store</dt>
- <dd>Create a new XFS filesystem on the Swift data store on every <code>stack.sh</code> run. <em>Commit <a href="https://review.openstack.org/7554">7554</a> merged 22 May 2012</em></dd>
-
- <dt>Add support for Qpid</dt>
- <dd>Configure Qpid RPC by replacing <code>rabbit</code> with <code>qpid</code> in <code>ENABLED_SERVICES</code>. <em>Commit <a href="https://review.openstack.org/6501">6501</a> merged 17 May 2012</em></dd>
-
- <dt>Glance uses Swift if enabled</dt>
- <dd>If Swift is enabled Glance will store images there by default. <em>Commit <a href="https://review.openstack.org/7277">7277</a> merged 15 May 2012</em></dd>
-
- <dt>Add Quantum linuxbridge support</dt>
- <dd>Support using linuxbridge in Quantum. <em>Commit <a href="https://review.openstack.org/7300">7300</a> merged 10 May 2012</em></dd>
-
- <dt>Change Nova volume name template</dt>
- <dd>Change Nova's <code>volume_name_template</code> to <code>${VOLUME_NAME_PREFIX}%s</code>. <em>Commit <a href="https://review.openstack.org/7004">7004</a> merged 02 May 2012</em></dd>
-
- <dt>Change MySQL engine default</dt>
- <dd>Use InnoDB engine in MySQL by default. <em>Commit <a href="https://review.openstack.org/6185">6185</a> merged 30 Apr 2012</em></dd>
-
- <dt>Add Glance client</dt>
- <dd>Add new <code>python-glanceclient</code> to override the clinet in the Glance repo. <em>Config <a href="https://review.openstack.org/6533">6533</a> merged 26 Apr 2012</em></dd>
- </dl>
+ <!-- Begin git log %GIT_LOG% -->
+ <!-- End git log -->
+ </ul>
</div>
</section>
diff --git a/docs/source/faq.html b/docs/source/faq.html
index 4867eb4..bfac1dc 100644
--- a/docs/source/faq.html
+++ b/docs/source/faq.html
@@ -18,7 +18,7 @@
body { padding-top: 60px; }
dd { padding: 10px; }
</style>
-
+
<!-- Le javascripts -->
<script src="assets/js/jquery-1.7.1.min.js" type="text/javascript" charset="utf-8"></script>
<script src="assets/js/bootstrap.js" type="text/javascript" charset="utf-8"></script>
@@ -42,7 +42,7 @@
</div>
<div class="container" id="home">
-
+
<section id="faq" class="span12">
<div class='row pull-left'>
@@ -68,16 +68,16 @@
<dt>Q: Why a shell script, why not chef/puppet/...</dt>
<dd>A: The script is meant to be read by humans (as well as ran by computers); it is the primary documentation after all. Using a recipe system requires everyone to agree and understand chef or puppet.</dd>
-
+
<dt>Q: Why not use Crowbar?</dt>
<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 <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>. DevStack is not a core project but a gating project and therefore 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>
-
+
<dt>Q: Why isn't $MY_FAVORITE_DISTRO supported?</dt>
<dd>A: DevStack is meant for developers and those who want to see how OpenStack really works. DevStack is known to run on the distro/release combinations listed in <code>README.md</code>. DevStack is only supported on releases other than those documented in <code>README.md</code> on a best-effort basis.</dd>
@@ -96,7 +96,7 @@
<dl class='pull-left'>
<dt>Q: Can DevStack handle a multi-node installation?</dt>
<dd>A: Indirectly, yes. You run DevStack on each node with the appropriate configuration in <code>local.conf</code>. The primary considerations are turning off the services not required on the secondary nodes, making sure the passwords match and setting the various API URLs to the right place.</dd>
-
+
<dt>Q: How can I document the environment that DevStack is using?</dt>
<dd>A: DevStack includes a script (<code>tools/info.sh</code>) that gathers the versions of the relevant installed apt packages, pip packages and git repos. This is a good way to verify what Python modules are installed.</dd>
diff --git a/extras.d/README.md b/extras.d/README.md
index 1dd17da..7c2e4fe 100644
--- a/extras.d/README.md
+++ b/extras.d/README.md
@@ -22,9 +22,24 @@
stack: called by stack.sh. There are four possible values for
the second arg to distinguish the phase stack.sh is in:
- arg 2: install | post-config | extra | post-extra
+ arg 2: pre-install | install | post-config | extra
unstack: called by unstack.sh
clean: called by clean.sh. Remember, clean.sh also calls unstack.sh
so that work need not be repeated.
+
+The `stack` phase sub-phases are called from `stack.sh` in the following places:
+
+ pre-install - After all system prerequisites have been installed but before any
+ DevStack-specific services are installed (including database and rpc).
+
+ install - After all OpenStack services have been installed and configured
+ but before any OpenStack services have been started. Changes to OpenStack
+ service configurations should be done here.
+
+ post-config - After OpenStack services have been initialized but still before
+ they have been started. (This is probably mis-named, think of it as post-init.)
+
+ extra - After everything is started.
+
diff --git a/files/apts/general b/files/apts/general
index 90529e5..f3cab59 100644
--- a/files/apts/general
+++ b/files/apts/general
@@ -20,6 +20,7 @@
tar
python-cmd2 # dist:precise
python-dev
+python-mock # testonly
python2.7
bc
libyaml-dev
diff --git a/functions-common b/functions-common
index 613a86c..9093952 100644
--- a/functions-common
+++ b/functions-common
@@ -435,7 +435,9 @@
else
DISTRO="sle${os_RELEASE}sp${os_UPDATE}"
fi
- elif [[ "$os_VENDOR" =~ (Red Hat) || "$os_VENDOR" =~ (CentOS) ]]; then
+ elif [[ "$os_VENDOR" =~ (Red Hat) || \
+ "$os_VENDOR" =~ (CentOS) || \
+ "$os_VENDOR" =~ (OracleServer) ]]; then
# Drop the . release as we assume it's compatible
DISTRO="rhel${os_RELEASE::1}"
elif [[ "$os_VENDOR" =~ (XenServer) ]]; then
@@ -463,7 +465,8 @@
GetOSVersion
fi
- [ "$os_VENDOR" = "Fedora" ] || [ "$os_VENDOR" = "Red Hat" ] || [ "$os_VENDOR" = "CentOS" ]
+ [ "$os_VENDOR" = "Fedora" ] || [ "$os_VENDOR" = "Red Hat" ] || \
+ [ "$os_VENDOR" = "CentOS" ] || [ "$os_VENDOR" = "OracleServer" ]
}
@@ -719,6 +722,109 @@
mv ${tmpfile} ${policy_file}
}
+# Gets or creates user
+# Usage: get_or_create_user <username> <password> <project> <email>
+function get_or_create_user {
+ # Gets user id
+ USER_ID=$(
+ # Gets user id
+ openstack user show $1 -f value -c id 2>/dev/null ||
+ # Creates new user
+ openstack user create \
+ $1 \
+ --password "$2" \
+ --project $3 \
+ --email $4 \
+ -f value -c id
+ )
+ echo $USER_ID
+}
+
+# Gets or creates project
+# Usage: get_or_create_project <name>
+function get_or_create_project {
+ # Gets project id
+ PROJECT_ID=$(
+ # Gets project id
+ openstack project show $1 -f value -c id 2>/dev/null ||
+ # Creates new project if not exists
+ openstack project create $1 -f value -c id
+ )
+ echo $PROJECT_ID
+}
+
+# Gets or creates role
+# Usage: get_or_create_role <name>
+function get_or_create_role {
+ ROLE_ID=$(
+ # Gets role id
+ openstack role show $1 -f value -c id 2>/dev/null ||
+ # Creates role if not exists
+ openstack role create $1 -f value -c id
+ )
+ echo $ROLE_ID
+}
+
+# Gets or adds user role
+# Usage: get_or_add_user_role <role> <user> <project>
+function get_or_add_user_role {
+ # Gets user role id
+ USER_ROLE_ID=$(openstack user role list \
+ $2 \
+ --project $3 \
+ --column "ID" \
+ --column "Name" \
+ | grep " $1 " | get_field 1)
+ if [[ -z "$USER_ROLE_ID" ]]; then
+ # Adds role to user
+ USER_ROLE_ID=$(openstack role add \
+ $1 \
+ --user $2 \
+ --project $3 \
+ | grep " id " | get_field 2)
+ fi
+ echo $USER_ROLE_ID
+}
+
+# Gets or creates service
+# Usage: get_or_create_service <name> <type> <description>
+function get_or_create_service {
+ # Gets service id
+ SERVICE_ID=$(
+ # Gets service id
+ openstack service show $1 -f value -c id 2>/dev/null ||
+ # Creates new service if not exists
+ openstack service create \
+ $1 \
+ --type=$2 \
+ --description="$3" \
+ -f value -c id
+ )
+ echo $SERVICE_ID
+}
+
+# Gets or creates endpoint
+# Usage: get_or_create_endpoint <service> <region> <publicurl> <adminurl> <internalurl>
+function get_or_create_endpoint {
+ # Gets endpoint id
+ ENDPOINT_ID=$(openstack endpoint list \
+ --column "ID" \
+ --column "Region" \
+ --column "Service Name" \
+ | grep " $2 " \
+ | grep " $1 " | get_field 1)
+ if [[ -z "$ENDPOINT_ID" ]]; then
+ # Creates new endpoint
+ ENDPOINT_ID=$(openstack endpoint create \
+ $1 \
+ --region $2 \
+ --publicurl $3 \
+ --adminurl $4 \
+ --internalurl $5 \
+ | grep " id " | get_field 2)
+ fi
+ echo $ENDPOINT_ID
+}
# Package Functions
# =================
diff --git a/lib/apache b/lib/apache
index f7255be..f4f82a1 100644
--- a/lib/apache
+++ b/lib/apache
@@ -8,7 +8,6 @@
#
# lib/apache exports the following functions:
#
-# - is_apache_enabled_service
# - install_apache_wsgi
# - config_apache_wsgi
# - apache_site_config_for
@@ -42,23 +41,6 @@
# Functions
# ---------
-
-# is_apache_enabled_service() checks if the service(s) specified as arguments are
-# apache enabled by the user in ``APACHE_ENABLED_SERVICES`` as web front end.
-#
-# Multiple services specified as arguments are ``OR``'ed together; the test
-# is a short-circuit boolean, i.e it returns on the first match.
-#
-# Uses global ``APACHE_ENABLED_SERVICES``
-# APACHE_ENABLED_SERVICES service [service ...]
-function is_apache_enabled_service {
- services=$@
- for service in ${services}; do
- [[ ,${APACHE_ENABLED_SERVICES}, =~ ,${service}, ]] && return 0
- done
- return 1
-}
-
# install_apache_wsgi() - Install Apache server and wsgi module
function install_apache_wsgi {
# Apache installation, because we mark it NOPRIME
@@ -168,7 +150,12 @@
# restart_apache_server
function restart_apache_server {
- restart_service $APACHE_NAME
+ # Apache can be slow to stop, doing an explicit stop, sleep, start helps
+ # to mitigate issues where apache will claim a port it's listening on is
+ # still in use and fail to start.
+ stop_service $APACHE_NAME
+ sleep 3
+ start_service $APACHE_NAME
}
# Restore xtrace
diff --git a/lib/ceilometer b/lib/ceilometer
index 8ce9fb4..1540e3e 100644
--- a/lib/ceilometer
+++ b/lib/ceilometer
@@ -84,35 +84,22 @@
# Ceilometer
if [[ "$ENABLED_SERVICES" =~ "ceilometer-api" ]]; then
- CEILOMETER_USER=$(openstack user create \
- ceilometer \
- --password "$SERVICE_PASSWORD" \
- --project $SERVICE_TENANT \
- --email ceilometer@example.com \
- | grep " id " | get_field 2)
- openstack role add \
- $ADMIN_ROLE \
- --project $SERVICE_TENANT \
- --user $CEILOMETER_USER
+ CEILOMETER_USER=$(get_or_create_user "ceilometer" \
+ "$SERVICE_PASSWORD" $SERVICE_TENANT "ceilometer@example.com")
+ get_or_add_user_role $ADMIN_ROLE $CEILOMETER_USER $SERVICE_TENANT
+
if [[ "$KEYSTONE_CATALOG_BACKEND" = 'sql' ]]; then
- CEILOMETER_SERVICE=$(openstack service create \
- ceilometer \
- --type=metering \
- --description="OpenStack Telemetry Service" \
- | grep " id " | get_field 2)
- openstack endpoint create \
- $CEILOMETER_SERVICE \
- --region RegionOne \
- --publicurl "$CEILOMETER_SERVICE_PROTOCOL://$CEILOMETER_SERVICE_HOST:$CEILOMETER_SERVICE_PORT/" \
- --adminurl "$CEILOMETER_SERVICE_PROTOCOL://$CEILOMETER_SERVICE_HOST:$CEILOMETER_SERVICE_PORT/" \
- --internalurl "$CEILOMETER_SERVICE_PROTOCOL://$CEILOMETER_SERVICE_HOST:$CEILOMETER_SERVICE_PORT/"
+ CEILOMETER_SERVICE=$(get_or_create_service "ceilometer" \
+ "metering" "OpenStack Telemetry Service")
+ get_or_create_endpoint $CEILOMETER_SERVICE \
+ "$REGION_NAME" \
+ "$CEILOMETER_SERVICE_PROTOCOL://$CEILOMETER_SERVICE_HOST:$CEILOMETER_SERVICE_PORT/" \
+ "$CEILOMETER_SERVICE_PROTOCOL://$CEILOMETER_SERVICE_HOST:$CEILOMETER_SERVICE_PORT/" \
+ "$CEILOMETER_SERVICE_PROTOCOL://$CEILOMETER_SERVICE_HOST:$CEILOMETER_SERVICE_PORT/"
fi
if is_service_enabled swift; then
# Ceilometer needs ResellerAdmin role to access swift account stats.
- openstack role add \
- --project $SERVICE_TENANT_NAME \
- --user ceilometer \
- ResellerAdmin
+ get_or_add_user_role "ResellerAdmin" "ceilometer" $SERVICE_TENANT_NAME
fi
fi
}
@@ -166,7 +153,6 @@
iniset $CEILOMETER_CONF service_credentials os_username ceilometer
iniset $CEILOMETER_CONF service_credentials os_password $SERVICE_PASSWORD
iniset $CEILOMETER_CONF service_credentials os_tenant_name $SERVICE_TENANT_NAME
- iniset $CEILOMETER_CONF service_credentials os_auth_url $OS_AUTH_URL
iniset $CEILOMETER_CONF keystone_authtoken identity_uri $KEYSTONE_AUTH_URI
iniset $CEILOMETER_CONF keystone_authtoken admin_user ceilometer
diff --git a/lib/cinder b/lib/cinder
index 6f2d7c6..ce2a5c9 100644
--- a/lib/cinder
+++ b/lib/cinder
@@ -28,6 +28,7 @@
# set up default driver
CINDER_DRIVER=${CINDER_DRIVER:-default}
CINDER_PLUGINS=$TOP_DIR/lib/cinder_plugins
+CINDER_BACKENDS=$TOP_DIR/lib/cinder_backends
# grab plugin config if specified via cinder_driver
if [[ -r $CINDER_PLUGINS/$CINDER_DRIVER ]]; then
@@ -57,9 +58,24 @@
CINDER_BIN_DIR=$(get_python_exec_prefix)
fi
+
+# Maintain this here for backward-compatibility with the old configuration
+# DEPRECATED: Use CINDER_ENABLED_BACKENDS instead
# Support for multi lvm backend configuration (default is no support)
CINDER_MULTI_LVM_BACKEND=$(trueorfalse False $CINDER_MULTI_LVM_BACKEND)
+# Default backends
+# The backend format is type:name where type is one of the supported backend
+# types (lvm, nfs, etc) and name is the identifier used in the Cinder
+# configuration and for the volume type name. Multiple backends are
+# comma-separated.
+if [[ $CINDER_MULTI_LVM_BACKEND == "False" ]]; then
+ CINDER_ENABLED_BACKENDS=${CINDER_ENABLED_BACKENDS:-lvm:lvmdriver-1}
+else
+ CINDER_ENABLED_BACKENDS=${CINDER_ENABLED_BACKENDS:-lvm:lvmdriver-1,lvm:lvmdriver-2}
+fi
+
+
# Should cinder perform secure deletion of volumes?
# Defaults to true, can be set to False to avoid this bug when testing:
# https://bugs.launchpad.net/ubuntu/+source/linux/+bug/1023755
@@ -73,22 +89,22 @@
# https://bugs.launchpad.net/cinder/+bug/1180976
CINDER_PERIODIC_INTERVAL=${CINDER_PERIODIC_INTERVAL:-60}
-# Name of the lvm volume groups to use/create for iscsi volumes
-VOLUME_GROUP=${VOLUME_GROUP:-stack-volumes}
-VOLUME_BACKING_FILE=${VOLUME_BACKING_FILE:-$DATA_DIR/${VOLUME_GROUP}-backing-file}
-VOLUME_BACKING_DEVICE=${VOLUME_BACKING_DEVICE:-}
-
-# VOLUME_GROUP2 is used only if CINDER_MULTI_LVM_BACKEND = True
-VOLUME_GROUP2=${VOLUME_GROUP2:-stack-volumes2}
-VOLUME_BACKING_FILE2=${VOLUME_BACKING_FILE2:-$DATA_DIR/${VOLUME_GROUP2}-backing-file}
-VOLUME_BACKING_DEVICE2=${VOLUME_BACKING_DEVICE2:-}
-
-VOLUME_NAME_PREFIX=${VOLUME_NAME_PREFIX:-volume-}
-
# Tell Tempest this project is present
TEMPEST_SERVICES+=,cinder
+# Source the enabled backends
+if is_service_enabled c-vol && [[ -n "$CINDER_ENABLED_BACKENDS" ]]; then
+ for be in ${CINDER_ENABLED_BACKENDS//,/ }; do
+ BE_TYPE=${be%%:*}
+ BE_NAME=${be##*:}
+ if [[ -r $CINDER_BACKENDS/${BE_TYPE} ]]; then
+ source $CINDER_BACKENDS/${BE_TYPE}
+ fi
+ done
+fi
+
+
# Functions
# ---------
@@ -99,41 +115,6 @@
return 1
}
-# _clean_lvm_lv removes all cinder LVM volumes
-#
-# Usage: _clean_lvm_lv $VOLUME_GROUP $VOLUME_NAME_PREFIX
-function _clean_lvm_lv {
- local vg=$1
- local lv_prefix=$2
-
- # Clean out existing volumes
- for lv in `sudo lvs --noheadings -o lv_name $vg`; do
- # lv_prefix prefixes the LVs we want
- if [[ "${lv#$lv_prefix}" != "$lv" ]]; then
- sudo lvremove -f $vg/$lv
- fi
- done
-}
-
-# _clean_lvm_backing_file() removes the backing file of the
-# volume group used by cinder
-#
-# Usage: _clean_lvm_backing_file() $VOLUME_GROUP
-function _clean_lvm_backing_file {
- local vg=$1
-
- # if there is no logical volume left, it's safe to attempt a cleanup
- # of the backing file
- if [ -z "`sudo lvs --noheadings -o lv_name $vg`" ]; then
- # if the backing physical device is a loop device, it was probably setup by devstack
- if [[ -n "$VG_DEV" ]] && [[ -e "$VG_DEV" ]]; then
- VG_DEV=$(sudo losetup -j $DATA_DIR/${vg}-backing-file | awk -F':' '/backing-file/ { print $1}')
- sudo losetup -d $VG_DEV
- rm -f $DATA_DIR/${vg}-backing-file
- fi
- fi
-}
-
# cleanup_cinder() - Remove residual data files, anything left over from previous
# runs that a clean run would need to clean up
function cleanup_cinder {
@@ -160,23 +141,20 @@
done
fi
- if is_service_enabled cinder; then
- sudo rm -rf $CINDER_STATE_PATH/volumes/*
- fi
-
if is_ubuntu; then
stop_service tgt
else
stop_service tgtd
fi
- # Campsite rule: leave behind a volume group at least as clean as we found it
- _clean_lvm_lv $VOLUME_GROUP $VOLUME_NAME_PREFIX
- _clean_lvm_backing_file $VOLUME_GROUP
-
- if [ "$CINDER_MULTI_LVM_BACKEND" = "True" ]; then
- _clean_lvm_lv $VOLUME_GROUP2 $VOLUME_NAME_PREFIX
- _clean_lvm_backing_file $VOLUME_GROUP2
+ if is_service_enabled c-vol && [[ -n "$CINDER_ENABLED_BACKENDS" ]]; then
+ for be in ${CINDER_ENABLED_BACKENDS//,/ }; do
+ BE_TYPE=${be%%:*}
+ BE_NAME=${be##*:}
+ if type cleanup_cinder_backend_${BE_TYPE} >/dev/null 2>&1; then
+ cleanup_cinder_backend_${BE_TYPE} ${BE_NAME}
+ fi
+ done
fi
}
@@ -243,23 +221,7 @@
iniset $CINDER_CONF DEFAULT auth_strategy keystone
iniset $CINDER_CONF DEFAULT debug $ENABLE_DEBUG_LOG_LEVEL
iniset $CINDER_CONF DEFAULT verbose True
- if [ "$CINDER_MULTI_LVM_BACKEND" = "True" ]; then
- iniset $CINDER_CONF DEFAULT enabled_backends lvmdriver-1,lvmdriver-2
- iniset $CINDER_CONF lvmdriver-1 volume_group $VOLUME_GROUP
- iniset $CINDER_CONF lvmdriver-1 volume_driver cinder.volume.drivers.lvm.LVMISCSIDriver
- iniset $CINDER_CONF lvmdriver-1 volume_backend_name LVM_iSCSI
- iniset $CINDER_CONF lvmdriver-2 volume_group $VOLUME_GROUP2
- iniset $CINDER_CONF lvmdriver-2 volume_driver cinder.volume.drivers.lvm.LVMISCSIDriver
- iniset $CINDER_CONF lvmdriver-2 volume_backend_name LVM_iSCSI_2
- # NOTE(mriedem): Work around Cinder "wishlist" bug 1255593
- if [[ "$CINDER_SECURE_DELETE" == "False" ]]; then
- iniset $CINDER_CONF lvmdriver-1 volume_clear none
- iniset $CINDER_CONF lvmdriver-2 volume_clear none
- fi
- else
- iniset $CINDER_CONF DEFAULT volume_group $VOLUME_GROUP
- iniset $CINDER_CONF DEFAULT volume_name_template ${VOLUME_NAME_PREFIX}%s
- fi
+
iniset $CINDER_CONF DEFAULT my_ip "$CINDER_SERVICE_HOST"
iniset $CINDER_CONF DEFAULT iscsi_helper tgtadm
iniset $CINDER_CONF DEFAULT sql_connection `database_connection_url cinder`
@@ -274,6 +236,26 @@
# supported.
iniset $CINDER_CONF DEFAULT enable_v1_api true
+ if is_service_enabled c-vol && [[ -n "$CINDER_ENABLED_BACKENDS" ]]; then
+ enabled_backends=""
+ default_type=""
+ for be in ${CINDER_ENABLED_BACKENDS//,/ }; do
+ BE_TYPE=${be%%:*}
+ BE_NAME=${be##*:}
+ if type configure_cinder_backend_${BE_TYPE} >/dev/null 2>&1; then
+ configure_cinder_backend_${BE_TYPE} ${BE_NAME}
+ fi
+ if [[ -z "$default_type" ]]; then
+ default_type=$BE_TYPE}
+ fi
+ enabled_backends+=$BE_NAME,
+ done
+ iniset $CINDER_CONF DEFAULT enabled_backends ${enabled_backends%,*}
+ if [[ -n "$default_type" ]]; then
+ iniset $CINDER_CONF DEFAULT default_volume_type ${enabled_backends%,*}
+ fi
+ fi
+
if is_service_enabled swift; then
iniset $CINDER_CONF DEFAULT backup_swift_url "http://$SERVICE_HOST:8080/v1/AUTH_"
fi
@@ -339,39 +321,26 @@
# Cinder
if [[ "$ENABLED_SERVICES" =~ "c-api" ]]; then
- CINDER_USER=$(openstack user create \
- cinder \
- --password "$SERVICE_PASSWORD" \
- --project $SERVICE_TENANT \
- --email cinder@example.com \
- | grep " id " | get_field 2)
- openstack role add \
- $ADMIN_ROLE \
- --project $SERVICE_TENANT \
- --user $CINDER_USER
+
+ CINDER_USER=$(get_or_create_user "cinder" \
+ "$SERVICE_PASSWORD" $SERVICE_TENANT "cinder@example.com")
+ get_or_add_user_role $ADMIN_ROLE $CINDER_USER $SERVICE_TENANT
+
if [[ "$KEYSTONE_CATALOG_BACKEND" = 'sql' ]]; then
- CINDER_SERVICE=$(openstack service create \
- cinder \
- --type=volume \
- --description="Cinder Volume Service" \
- | grep " id " | get_field 2)
- openstack endpoint create \
- $CINDER_SERVICE \
- --region RegionOne \
- --publicurl "$CINDER_SERVICE_PROTOCOL://$CINDER_SERVICE_HOST:$CINDER_SERVICE_PORT/v1/\$(tenant_id)s" \
- --adminurl "$CINDER_SERVICE_PROTOCOL://$CINDER_SERVICE_HOST:$CINDER_SERVICE_PORT/v1/\$(tenant_id)s" \
- --internalurl "$CINDER_SERVICE_PROTOCOL://$CINDER_SERVICE_HOST:$CINDER_SERVICE_PORT/v1/\$(tenant_id)s"
- CINDER_V2_SERVICE=$(openstack service create \
- cinderv2 \
- --type=volumev2 \
- --description="Cinder Volume Service V2" \
- | grep " id " | get_field 2)
- openstack endpoint create \
- $CINDER_V2_SERVICE \
- --region RegionOne \
- --publicurl "$CINDER_SERVICE_PROTOCOL://$CINDER_SERVICE_HOST:$CINDER_SERVICE_PORT/v2/\$(tenant_id)s" \
- --adminurl "$CINDER_SERVICE_PROTOCOL://$CINDER_SERVICE_HOST:$CINDER_SERVICE_PORT/v2/\$(tenant_id)s" \
- --internalurl "$CINDER_SERVICE_PROTOCOL://$CINDER_SERVICE_HOST:$CINDER_SERVICE_PORT/v2/\$(tenant_id)s"
+
+ CINDER_SERVICE=$(get_or_create_service "cinder" \
+ "volume" "Cinder Volume Service")
+ get_or_create_endpoint $CINDER_SERVICE "$REGION_NAME" \
+ "$CINDER_SERVICE_PROTOCOL://$CINDER_SERVICE_HOST:$CINDER_SERVICE_PORT/v1/\$(tenant_id)s" \
+ "$CINDER_SERVICE_PROTOCOL://$CINDER_SERVICE_HOST:$CINDER_SERVICE_PORT/v1/\$(tenant_id)s" \
+ "$CINDER_SERVICE_PROTOCOL://$CINDER_SERVICE_HOST:$CINDER_SERVICE_PORT/v1/\$(tenant_id)s"
+
+ CINDER_V2_SERVICE=$(get_or_create_service "cinderv2" \
+ "volumev2" "Cinder Volume Service V2")
+ get_or_create_endpoint $CINDER_V2_SERVICE "$REGION_NAME" \
+ "$CINDER_SERVICE_PROTOCOL://$CINDER_SERVICE_HOST:$CINDER_SERVICE_PORT/v2/\$(tenant_id)s" \
+ "$CINDER_SERVICE_PROTOCOL://$CINDER_SERVICE_HOST:$CINDER_SERVICE_PORT/v2/\$(tenant_id)s" \
+ "$CINDER_SERVICE_PROTOCOL://$CINDER_SERVICE_HOST:$CINDER_SERVICE_PORT/v2/\$(tenant_id)s"
fi
fi
}
@@ -384,53 +353,6 @@
rm -f $CINDER_AUTH_CACHE_DIR/*
}
-function create_cinder_volume_group {
- # According to the ``CINDER_MULTI_LVM_BACKEND`` value, configure one or two default volumes
- # group called ``stack-volumes`` (and ``stack-volumes2``) for the volume
- # service if it (they) does (do) not yet exist. If you don't wish to use a
- # file backed volume group, create your own volume group called ``stack-volumes``
- # and ``stack-volumes2`` before invoking ``stack.sh``.
- #
- # The two backing files are ``VOLUME_BACKING_FILE_SIZE`` in size, and they are stored in
- # the ``DATA_DIR``.
-
- if ! sudo vgs $VOLUME_GROUP; then
- if [ -z "$VOLUME_BACKING_DEVICE" ]; then
- # Only create if the file doesn't already exists
- [[ -f $VOLUME_BACKING_FILE ]] || truncate -s $VOLUME_BACKING_FILE_SIZE $VOLUME_BACKING_FILE
- DEV=`sudo losetup -f --show $VOLUME_BACKING_FILE`
-
- # Only create if the loopback device doesn't contain $VOLUME_GROUP
- if ! sudo vgs $VOLUME_GROUP; then
- sudo vgcreate $VOLUME_GROUP $DEV
- fi
- else
- sudo vgcreate $VOLUME_GROUP $VOLUME_BACKING_DEVICE
- fi
- fi
- if [ "$CINDER_MULTI_LVM_BACKEND" = "True" ]; then
- #set up the second volume if CINDER_MULTI_LVM_BACKEND is enabled
-
- if ! sudo vgs $VOLUME_GROUP2; then
- if [ -z "$VOLUME_BACKING_DEVICE2" ]; then
- # Only create if the file doesn't already exists
- [[ -f $VOLUME_BACKING_FILE2 ]] || truncate -s $VOLUME_BACKING_FILE_SIZE $VOLUME_BACKING_FILE2
-
- DEV=`sudo losetup -f --show $VOLUME_BACKING_FILE2`
-
- # Only create if the loopback device doesn't contain $VOLUME_GROUP
- if ! sudo vgs $VOLUME_GROUP2; then
- sudo vgcreate $VOLUME_GROUP2 $DEV
- fi
- else
- sudo vgcreate $VOLUME_GROUP2 $VOLUME_BACKING_DEVICE2
- fi
- fi
- fi
-
- mkdir -p $CINDER_STATE_PATH/volumes
-}
-
# init_cinder() - Initialize database and volume group
function init_cinder {
# Force nova volumes off
@@ -444,26 +366,17 @@
$CINDER_BIN_DIR/cinder-manage db sync
fi
- if is_service_enabled c-vol; then
-
- create_cinder_volume_group
-
- if sudo vgs $VOLUME_GROUP; then
- if is_fedora || is_suse; then
- # service is not started by default
- start_service tgtd
+ if is_service_enabled c-vol && [[ -n "$CINDER_ENABLED_BACKENDS" ]]; then
+ for be in ${CINDER_ENABLED_BACKENDS//,/ }; do
+ BE_TYPE=${be%%:*}
+ BE_NAME=${be##*:}
+ if type init_cinder_backend_${BE_TYPE} >/dev/null 2>&1; then
+ init_cinder_backend_${BE_TYPE} ${BE_NAME}
fi
-
- # Remove iscsi targets
- sudo tgtadm --op show --mode target | grep $VOLUME_NAME_PREFIX | grep Target | cut -f3 -d ' ' | sudo xargs -n1 tgt-admin --delete || true
- # Start with a clean volume group
- _clean_lvm_lv $VOLUME_GROUP $VOLUME_NAME_PREFIX
- if [ "$CINDER_MULTI_LVM_BACKEND" = "True" ]; then
- _clean_lvm_lv $VOLUME_GROUP2 $VOLUME_NAME_PREFIX
- fi
- fi
+ done
fi
+ mkdir -p $CINDER_STATE_PATH/volumes
create_cinder_cache_dir
}
@@ -515,6 +428,11 @@
fi
screen_it c-api "cd $CINDER_DIR && $CINDER_BIN_DIR/cinder-api --config-file $CINDER_CONF"
+ echo "Waiting for Cinder API to start..."
+ if ! wait_for_service $SERVICE_TIMEOUT $CINDER_SERVICE_PROTOCOL://$CINDER_SERVICE_HOST:$CINDER_SERVICE_PORT; then
+ die $LINENO "c-api did not start"
+ fi
+
screen_it c-sch "cd $CINDER_DIR && $CINDER_BIN_DIR/cinder-scheduler --config-file $CINDER_CONF"
screen_it c-bak "cd $CINDER_DIR && $CINDER_BIN_DIR/cinder-backup --config-file $CINDER_CONF"
screen_it c-vol "cd $CINDER_DIR && $CINDER_BIN_DIR/cinder-volume --config-file $CINDER_CONF"
@@ -545,6 +463,30 @@
fi
}
+# create_volume_types() - Create Cinder's configured volume types
+function create_volume_types {
+ # Create volume types
+ if is_service_enabled c-api && [[ -n "$CINDER_ENABLED_BACKENDS" ]]; then
+ for be in ${CINDER_ENABLED_BACKENDS//,/ }; do
+ BE_TYPE=${be%%:*}
+ BE_NAME=${be##*:}
+ if type configure_cinder_backend_${BE_TYPE} >/dev/null 2>&1; then
+ # openstack volume type create --property volume_backend_name="${BE_TYPE}" ${BE_NAME}
+ cinder type-create ${BE_NAME} && \
+ cinder type-key ${BE_NAME} set volume_backend_name="${BE_NAME}"
+ fi
+ done
+ fi
+}
+
+# Compatibility for Grenade
+
+function create_cinder_volume_group {
+ # During a transition period Grenade needs to have this function defined
+ # It is effectively a no-op in the Grenade 'target' use case
+ :
+}
+
# Restore xtrace
$XTRACE
diff --git a/lib/cinder_backends/lvm b/lib/cinder_backends/lvm
new file mode 100644
index 0000000..324c323
--- /dev/null
+++ b/lib/cinder_backends/lvm
@@ -0,0 +1,179 @@
+# lib/cinder_backends/lvm
+# Configure the LVM backend
+
+# Enable with:
+#
+# CINDER_ENABLED_BACKENDS+=,lvm:lvmname
+
+# Dependencies:
+#
+# - ``functions`` file
+# - ``cinder`` configurations
+
+# CINDER_CONF
+# DATA_DIR
+
+# clean_cinder_backend_lvm - called from clean_cinder()
+# configure_cinder_backend_lvm - called from configure_cinder()
+# init_cinder_backend_lvm - called from init_cinder()
+
+
+# Save trace setting
+MY_XTRACE=$(set +o | grep xtrace)
+set +o xtrace
+
+
+# Defaults
+# --------
+
+# Name of the lvm volume groups to use/create for iscsi volumes
+# This monkey-motion is for compatibility with icehouse-generation Grenade
+# If ``VOLUME_GROUP`` is set, use it, otherwise we'll build a VG name based
+# on ``VOLUME_GROUP_NAME`` that includes the backend name
+# Grenade doesn't use ``VOLUME_GROUP2`` so it is left out
+VOLUME_GROUP_NAME=${VOLUME_GROUP:-${VOLUME_GROUP_NAME:-stack-volumes}}
+
+# TODO: resurrect backing device...need to know how to set values
+#VOLUME_BACKING_DEVICE=${VOLUME_BACKING_DEVICE:-}
+
+VOLUME_NAME_PREFIX=${VOLUME_NAME_PREFIX:-volume-}
+
+
+# Entry Points
+# ------------
+
+# Compatibility for getting a volume group name from either ``VOLUME_GROUP``
+# or from ``VOLUME_GROUP_NAME`` plus the backend name
+function get_volume_group_name {
+ local be_name=$1
+
+ # Again with the icehouse-generation compatibility
+ local volume_group_name=$VOLUME_GROUP_NAME
+ if [[ -z $VOLUME_GROUP ]]; then
+ volume_group_name+="-$be_name"
+ fi
+ echo $volume_group_name
+}
+
+function cleanup_cinder_backend_lvm {
+ local be_name=$1
+
+ # Again with the icehouse-generation compatibility
+ local volume_group_name=$(get_volume_group_name $be_name)
+
+ # Campsite rule: leave behind a volume group at least as clean as we found it
+ _clean_lvm_lv ${volume_group_name} $VOLUME_NAME_PREFIX
+ _clean_lvm_backing_file ${volume_group_name} $DATA_DIR/${volume_group_name}-backing-file
+}
+
+# configure_cinder_backend_lvm - Set config files, create data dirs, etc
+# configure_cinder_backend_lvm $name
+function configure_cinder_backend_lvm {
+ local be_name=$1
+
+ # Again with the icehouse-generation compatibility
+ local volume_group_name=$(get_volume_group_name $be_name)
+
+ iniset $CINDER_CONF $be_name volume_backend_name $be_name
+ iniset $CINDER_CONF $be_name volume_driver "cinder.volume.drivers.lvm.LVMISCSIDriver"
+ iniset $CINDER_CONF $be_name volume_group $volume_group_name
+
+ if [[ "$CINDER_SECURE_DELETE" == "False" ]]; then
+ iniset $CINDER_CONF $be_name volume_clear none
+ fi
+}
+
+
+function init_cinder_backend_lvm {
+ local be_name=$1
+
+ # Again with the icehouse-generation compatibility
+ local volume_group_name=$(get_volume_group_name $be_name)
+
+ # Start with a clean volume group
+ _create_cinder_volume_group ${volume_group_name} $DATA_DIR/${volume_group_name}-backing-file
+
+ if is_fedora || is_suse; then
+ # service is not started by default
+ start_service tgtd
+ fi
+
+ # Remove iscsi targets
+ sudo tgtadm --op show --mode target | grep $VOLUME_NAME_PREFIX | grep Target | cut -f3 -d ' ' | sudo xargs -n1 tgt-admin --delete || true
+ _clean_lvm_lv ${volume_group_name} $VOLUME_NAME_PREFIX
+}
+
+
+# _clean_lvm_lv removes all cinder LVM volumes
+#
+# Usage: _clean_lvm_lv volume-group-name $VOLUME_NAME_PREFIX
+function _clean_lvm_lv {
+ local vg=$1
+ local lv_prefix=$2
+
+ # Clean out existing volumes
+ for lv in $(sudo lvs --noheadings -o lv_name $vg 2>/dev/null); do
+ # lv_prefix prefixes the LVs we want
+ if [[ "${lv#$lv_prefix}" != "$lv" ]]; then
+ sudo lvremove -f $vg/$lv
+ fi
+ done
+}
+
+# _clean_lvm_backing_file() removes the backing file of the
+# volume group used by cinder
+#
+# Usage: _clean_lvm_backing_file() volume-group-name backing-file-name
+function _clean_lvm_backing_file {
+ local vg=$1
+ local backing_file=$2
+
+ # if there is no logical volume left, it's safe to attempt a cleanup
+ # of the backing file
+ if [[ -z "$(sudo lvs --noheadings -o lv_name $vg 2>/dev/null)" ]]; then
+ # if the backing physical device is a loop device, it was probably setup by devstack
+ VG_DEV=$(sudo losetup -j $backing_file | awk -F':' '/backing-file/ { print $1}')
+ if [[ -n "$VG_DEV" ]] && [[ -e "$VG_DEV" ]]; then
+ sudo losetup -d $VG_DEV
+ rm -f $backing_file
+ fi
+ fi
+}
+
+# _create_cinder_volume_group volume-group-name backing-file-name
+function _create_cinder_volume_group {
+ # According to the ``CINDER_MULTI_LVM_BACKEND`` value, configure one or two default volumes
+ # group called ``stack-volumes`` (and ``stack-volumes2``) for the volume
+ # service if it (they) does (do) not yet exist. If you don't wish to use a
+ # file backed volume group, create your own volume group called ``stack-volumes``
+ # and ``stack-volumes2`` before invoking ``stack.sh``.
+ #
+ # The two backing files are ``VOLUME_BACKING_FILE_SIZE`` in size, and they are stored in
+ # the ``DATA_DIR``.
+
+ local vg_name=$1
+ local backing_file=$2
+
+ if ! sudo vgs $vg_name; then
+ # TODO: fix device handling
+ if [ -z "$VOLUME_BACKING_DEVICE" ]; then
+ # Only create if the file doesn't already exists
+ [[ -f $backing_file ]] || truncate -s $VOLUME_BACKING_FILE_SIZE $backing_file
+ DEV=`sudo losetup -f --show $backing_file`
+
+ # Only create if the loopback device doesn't contain $VOLUME_GROUP
+ if ! sudo vgs $vg_name; then
+ sudo vgcreate $vg_name $DEV
+ fi
+ else
+ sudo vgcreate $vg_name $VOLUME_BACKING_DEVICE
+ fi
+ fi
+}
+
+
+# Restore xtrace
+$MY_XTRACE
+
+# mode: shell-script
+# End:
diff --git a/lib/cinder_backends/nfs b/lib/cinder_backends/nfs
new file mode 100644
index 0000000..7648788
--- /dev/null
+++ b/lib/cinder_backends/nfs
@@ -0,0 +1,43 @@
+# lib/cinder_backends/nfs
+# Configure the nfs backend
+
+# Enable with:
+#
+# CINDER_ENABLED_BACKENDS+=,nfs:<volume-type-name>
+
+# Dependencies:
+#
+# - ``functions`` file
+# - ``cinder`` configurations
+
+# CINDER_CONF
+# CINDER_CONF_DIR
+# CINDER_NFS_SERVERPATH - contents of nfs shares config file
+
+# configure_cinder_backend_nfs - Configure Cinder for NFS backends
+
+# Save trace setting
+NFS_XTRACE=$(set +o | grep xtrace)
+set +o xtrace
+
+
+# Entry Points
+# ------------
+
+# configure_cinder_backend_nfs - Set config files, create data dirs, etc
+function configure_cinder_backend_nfs {
+ local be_name=$1
+ iniset $CINDER_CONF $be_name volume_backend_name $be_name
+ iniset $CINDER_CONF $be_name volume_driver "cinder.volume.drivers.nfs.NfsDriver"
+ iniset $CINDER_CONF $be_name nfs_shares_config "$CINDER_CONF_DIR/nfs-shares-$be_name.conf"
+
+ echo "$CINDER_NFS_SERVERPATH" | tee "$CINDER_CONF_DIR/nfs-shares-$be_name.conf"
+}
+
+
+# Restore xtrace
+$NFS_XTRACE
+
+# Local variables:
+# mode: shell-script
+# End:
diff --git a/lib/databases/postgresql b/lib/databases/postgresql
index b39984c..6e85d6e 100644
--- a/lib/databases/postgresql
+++ b/lib/databases/postgresql
@@ -10,6 +10,9 @@
set +o xtrace
+MAX_DB_CONNECTIONS=${MAX_DB_CONNECTIONS:-200}
+
+
register_database postgresql
@@ -64,6 +67,8 @@
fi
# Listen on all addresses
sudo sed -i "/listen_addresses/s/.*/listen_addresses = '*'/" $PG_CONF
+ # Set max_connections
+ sudo sed -i "/max_connections/s/.*/max_connections = $MAX_DB_CONNECTIONS/" $PG_CONF
# Do password auth from all IPv4 clients
sudo sed -i "/^host/s/all\s\+127.0.0.1\/32\s\+ident/$DATABASE_USER\t0.0.0.0\/0\tpassword/" $PG_HBA
# Do password auth for all IPv6 clients
diff --git a/lib/glance b/lib/glance
index 4eb0ada..475bb48 100644
--- a/lib/glance
+++ b/lib/glance
@@ -164,36 +164,28 @@
function create_glance_accounts {
if is_service_enabled g-api; then
- openstack user create \
- --password "$SERVICE_PASSWORD" \
- --project $SERVICE_TENANT_NAME \
- glance
- openstack role add \
- --project $SERVICE_TENANT_NAME \
- --user glance \
- service
+
+ GLANCE_USER=$(get_or_create_user "glance" \
+ "$SERVICE_PASSWORD" $SERVICE_TENANT_NAME "glance@example.com")
+ get_or_add_user_role service $GLANCE_USER $SERVICE_TENANT_NAME
+
# required for swift access
if is_service_enabled s-proxy; then
- openstack user create \
- --password "$SERVICE_PASSWORD" \
- --project $SERVICE_TENANT_NAME \
- glance-swift
- openstack role add \
- --project $SERVICE_TENANT_NAME \
- --user glance-swift \
- ResellerAdmin
+
+ GLANCE_SWIFT_USER=$(get_or_create_user "glance-swift" \
+ "$SERVICE_PASSWORD" $SERVICE_TENANT_NAME "glance-swift@example.com")
+ get_or_add_user_role "ResellerAdmin" $GLANCE_SWIFT_USER $SERVICE_TENANT_NAME
fi
+
if [[ "$KEYSTONE_CATALOG_BACKEND" = 'sql' ]]; then
- openstack service create \
- --type image \
- --description "Glance Image Service" \
- glance
- openstack endpoint create \
- --region RegionOne \
- --publicurl "http://$GLANCE_HOSTPORT" \
- --adminurl "http://$GLANCE_HOSTPORT" \
- --internalurl "http://$GLANCE_HOSTPORT" \
- glance
+
+ GLANCE_SERVICE=$(get_or_create_service "glance" \
+ "image" "Glance Image Service")
+ get_or_create_endpoint $GLANCE_SERVICE \
+ "$REGION_NAME" \
+ "http://$GLANCE_HOSTPORT" \
+ "http://$GLANCE_HOSTPORT" \
+ "http://$GLANCE_HOSTPORT"
fi
fi
}
diff --git a/lib/heat b/lib/heat
index b8c0359..afed52b 100644
--- a/lib/heat
+++ b/lib/heat
@@ -98,6 +98,8 @@
iniset $HEAT_CONF database connection `database_connection_url heat`
iniset $HEAT_CONF DEFAULT auth_encryption_key `hexdump -n 16 -v -e '/1 "%02x"' /dev/urandom`
+ iniset $HEAT_CONF DEFAULT region_name_for_services "$REGION_NAME"
+
# logging
iniset $HEAT_CONF DEFAULT debug $ENABLE_DEBUG_LOG_LEVEL
iniset $HEAT_CONF DEFAULT use_syslog $SYSLOG
@@ -214,57 +216,44 @@
SERVICE_TENANT=$(openstack project list | awk "/ $SERVICE_TENANT_NAME / { print \$2 }")
ADMIN_ROLE=$(openstack role list | awk "/ admin / { print \$2 }")
- HEAT_USER=$(openstack user create \
- heat \
- --password "$SERVICE_PASSWORD" \
- --project $SERVICE_TENANT \
- --email heat@example.com \
- | grep " id " | get_field 2)
- openstack role add \
- $ADMIN_ROLE \
- --project $SERVICE_TENANT \
- --user $HEAT_USER
+ HEAT_USER=$(get_or_create_user "heat" \
+ "$SERVICE_PASSWORD" $SERVICE_TENANT "heat@example.com")
+ get_or_add_user_role $ADMIN_ROLE $HEAT_USER $SERVICE_TENANT
+
if [[ "$KEYSTONE_CATALOG_BACKEND" = 'sql' ]]; then
- HEAT_SERVICE=$(openstack service create \
- heat \
- --type=orchestration \
- --description="Heat Orchestration Service" \
- | grep " id " | get_field 2)
- openstack endpoint create \
- $HEAT_SERVICE \
- --region RegionOne \
- --publicurl "$SERVICE_PROTOCOL://$HEAT_API_HOST:$HEAT_API_PORT/v1/\$(tenant_id)s" \
- --adminurl "$SERVICE_PROTOCOL://$HEAT_API_HOST:$HEAT_API_PORT/v1/\$(tenant_id)s" \
- --internalurl "$SERVICE_PROTOCOL://$HEAT_API_HOST:$HEAT_API_PORT/v1/\$(tenant_id)s"
- HEAT_CFN_SERVICE=$(openstack service create \
- heat \
- --type=cloudformation \
- --description="Heat CloudFormation Service" \
- | grep " id " | get_field 2)
- openstack endpoint create \
- $HEAT_CFN_SERVICE \
- --region RegionOne \
- --publicurl "$SERVICE_PROTOCOL://$HEAT_API_CFN_HOST:$HEAT_API_CFN_PORT/v1" \
- --adminurl "$SERVICE_PROTOCOL://$HEAT_API_CFN_HOST:$HEAT_API_CFN_PORT/v1" \
- --internalurl "$SERVICE_PROTOCOL://$HEAT_API_CFN_HOST:$HEAT_API_CFN_PORT/v1"
+
+ HEAT_SERVICE=$(get_or_create_service "heat" \
+ "orchestration" "Heat Orchestration Service")
+ get_or_create_endpoint $HEAT_SERVICE \
+ "$REGION_NAME" \
+ "$SERVICE_PROTOCOL://$HEAT_API_HOST:$HEAT_API_PORT/v1/\$(tenant_id)s" \
+ "$SERVICE_PROTOCOL://$HEAT_API_HOST:$HEAT_API_PORT/v1/\$(tenant_id)s" \
+ "$SERVICE_PROTOCOL://$HEAT_API_HOST:$HEAT_API_PORT/v1/\$(tenant_id)s"
+
+ HEAT_CFN_SERVICE=$(get_or_create_service "heat-cfn" \
+ "cloudformation" "Heat CloudFormation Service")
+ get_or_create_endpoint $HEAT_CFN_SERVICE \
+ "$REGION_NAME" \
+ "$SERVICE_PROTOCOL://$HEAT_API_CFN_HOST:$HEAT_API_CFN_PORT/v1" \
+ "$SERVICE_PROTOCOL://$HEAT_API_CFN_HOST:$HEAT_API_CFN_PORT/v1" \
+ "$SERVICE_PROTOCOL://$HEAT_API_CFN_HOST:$HEAT_API_CFN_PORT/v1"
fi
# heat_stack_user role is for users created by Heat
- openstack role create heat_stack_user
+ get_or_create_role "heat_stack_user"
if [[ $HEAT_DEFERRED_AUTH == trusts ]]; then
+
# heat_stack_owner role is given to users who create Heat stacks,
# it's the default role used by heat to delegate to the heat service
# user (for performing deferred operations via trusts), see heat.conf
- HEAT_OWNER_ROLE=$(openstack role create \
- heat_stack_owner \
- | grep " id " | get_field 2)
+ HEAT_OWNER_ROLE=$(get_or_create_role "heat_stack_owner")
# Give the role to the demo and admin users so they can create stacks
# in either of the projects created by devstack
- openstack role add $HEAT_OWNER_ROLE --project demo --user demo
- openstack role add $HEAT_OWNER_ROLE --project demo --user admin
- openstack role add $HEAT_OWNER_ROLE --project admin --user admin
+ get_or_add_user_role $HEAT_OWNER_ROLE demo demo
+ get_or_add_user_role $HEAT_OWNER_ROLE admin demo
+ get_or_add_user_role $HEAT_OWNER_ROLE admin admin
iniset $HEAT_CONF DEFAULT deferred_auth_method trusts
fi
@@ -272,21 +261,27 @@
# Note we have to pass token/endpoint here because the current endpoint and
# version negotiation in OSC means just --os-identity-api-version=3 won't work
KS_ENDPOINT_V3="$KEYSTONE_SERVICE_URI/v3"
- D_ID=$(openstack --os-token $OS_TOKEN --os-url=$KS_ENDPOINT_V3 \
- --os-identity-api-version=3 domain create heat \
- --description "Owns users and projects created by heat" \
- | grep ' id ' | get_field 2)
- iniset $HEAT_CONF DEFAULT stack_user_domain ${D_ID}
- openstack --os-token $OS_TOKEN --os-url=$KS_ENDPOINT_V3 \
- --os-identity-api-version=3 user create --password $SERVICE_PASSWORD \
- --domain $D_ID heat_domain_admin \
- --description "Manages users and projects created by heat"
- openstack --os-token $OS_TOKEN --os-url=$KS_ENDPOINT_V3 \
- --os-identity-api-version=3 role add \
- --user heat_domain_admin --domain ${D_ID} admin
- iniset $HEAT_CONF DEFAULT stack_domain_admin heat_domain_admin
- iniset $HEAT_CONF DEFAULT stack_domain_admin_password $SERVICE_PASSWORD
+ D_ID=$(openstack --os-token $OS_TOKEN --os-url=$KS_ENDPOINT_V3 \
+ --os-identity-api-version=3 domain list | grep ' heat ' | get_field 1)
+
+ if [[ -z "$D_ID" ]]; then
+ D_ID=$(openstack --os-token $OS_TOKEN --os-url=$KS_ENDPOINT_V3 \
+ --os-identity-api-version=3 domain create heat \
+ --description "Owns users and projects created by heat" \
+ | grep ' id ' | get_field 2)
+ iniset $HEAT_CONF DEFAULT stack_user_domain ${D_ID}
+
+ openstack --os-token $OS_TOKEN --os-url=$KS_ENDPOINT_V3 \
+ --os-identity-api-version=3 user create --password $SERVICE_PASSWORD \
+ --domain $D_ID heat_domain_admin \
+ --description "Manages users and projects created by heat"
+ openstack --os-token $OS_TOKEN --os-url=$KS_ENDPOINT_V3 \
+ --os-identity-api-version=3 role add \
+ --user heat_domain_admin --domain ${D_ID} admin
+ iniset $HEAT_CONF DEFAULT stack_domain_admin heat_domain_admin
+ iniset $HEAT_CONF DEFAULT stack_domain_admin_password $SERVICE_PASSWORD
+ fi
fi
}
diff --git a/lib/ironic b/lib/ironic
index 46eae7e..ef136bc 100644
--- a/lib/ironic
+++ b/lib/ironic
@@ -218,28 +218,21 @@
# Ironic
if [[ "$ENABLED_SERVICES" =~ "ir-api" ]]; then
- IRONIC_USER=$(openstack user create \
- ironic \
- --password "$SERVICE_PASSWORD" \
- --project $SERVICE_TENANT \
- --email ironic@example.com \
- | grep " id " | get_field 2)
- openstack role add \
- $ADMIN_ROLE \
- --project $SERVICE_TENANT \
- --user $IRONIC_USER
+ # Get ironic user if exists
+
+ IRONIC_USER=$(get_or_create_user "ironic" \
+ "$SERVICE_PASSWORD" $SERVICE_TENANT "ironic@example.com")
+ get_or_add_user_role $ADMIN_ROLE $IRONIC_USER $SERVICE_TENANT
+
if [[ "$KEYSTONE_CATALOG_BACKEND" = 'sql' ]]; then
- IRONIC_SERVICE=$(openstack service create \
- ironic \
- --type=baremetal \
- --description="Ironic baremetal provisioning service" \
- | grep " id " | get_field 2)
- openstack endpoint create \
- $IRONIC_SERVICE \
- --region RegionOne \
- --publicurl "$IRONIC_SERVICE_PROTOCOL://$IRONIC_HOSTPORT" \
- --adminurl "$IRONIC_SERVICE_PROTOCOL://$IRONIC_HOSTPORT" \
- --internalurl "$IRONIC_SERVICE_PROTOCOL://$IRONIC_HOSTPORT"
+
+ IRONIC_SERVICE=$(get_or_create_service "ironic" \
+ "baremetal" "Ironic baremetal provisioning service")
+ get_or_create_endpoint $IRONIC_SERVICE \
+ "$REGION_NAME" \
+ "$IRONIC_SERVICE_PROTOCOL://$IRONIC_HOSTPORT" \
+ "$IRONIC_SERVICE_PROTOCOL://$IRONIC_HOSTPORT" \
+ "$IRONIC_SERVICE_PROTOCOL://$IRONIC_HOSTPORT"
fi
fi
}
diff --git a/lib/keystone b/lib/keystone
index 8a4683f..4e94bad 100644
--- a/lib/keystone
+++ b/lib/keystone
@@ -46,6 +46,9 @@
# Example of KEYSTONE_EXTENSIONS=oauth1,federation
KEYSTONE_EXTENSIONS=${KEYSTONE_EXTENSIONS:-}
+# Toggle for deploying Keystone under HTTPD + mod_wsgi
+KEYSTONE_USE_MOD_WSGI=${KEYSTONE_USE_MOD_WSGI:-${ENABLE_HTTPD_MOD_WSGI_SERVICES}}
+
# Select the backend for Keystone's service catalog
KEYSTONE_CATALOG_BACKEND=${KEYSTONE_CATALOG_BACKEND:-sql}
KEYSTONE_CATALOG=$KEYSTONE_CONF_DIR/default_catalog.templates
@@ -112,6 +115,7 @@
sudo rm -f $KEYSTONE_WSGI_DIR/*.wsgi
disable_apache_site keystone
sudo rm -f $(apache_site_config_for keystone)
+ restart_apache_server
}
# _config_keystone_apache_wsgi() - Set WSGI config files of Keystone
@@ -189,6 +193,12 @@
iniset $KEYSTONE_CONF assignment driver "keystone.assignment.backends.$KEYSTONE_ASSIGNMENT_BACKEND.Assignment"
fi
+ # Configure rabbitmq credentials
+ if is_service_enabled rabbit; then
+ iniset $KEYSTONE_CONF DEFAULT rabbit_password $RABBIT_PASSWORD
+ iniset $KEYSTONE_CONF DEFAULT rabbit_host $RABBIT_HOST
+ fi
+
# Set the URL advertised in the ``versions`` structure returned by the '/' route
iniset $KEYSTONE_CONF DEFAULT public_endpoint "$KEYSTONE_SERVICE_PROTOCOL://$KEYSTONE_SERVICE_HOST:%(public_port)s/"
iniset $KEYSTONE_CONF DEFAULT admin_endpoint "$KEYSTONE_SERVICE_PROTOCOL://$KEYSTONE_SERVICE_HOST:%(admin_port)s/"
@@ -265,11 +275,11 @@
fi
# Format logging
- if [ "$LOG_COLOR" == "True" ] && [ "$SYSLOG" == "False" ] && ! is_apache_enabled_service key ; then
+ if [ "$LOG_COLOR" == "True" ] && [ "$SYSLOG" == "False" ] && [ "$KEYSTONE_USE_MOD_WSGI" == "False" ] ; then
setup_colorized_logging $KEYSTONE_CONF DEFAULT
fi
- if is_apache_enabled_service key; then
+ if [ "$KEYSTONE_USE_MOD_WSGI" == "True" ]; then
iniset $KEYSTONE_CONF DEFAULT debug "True"
# Eliminate the %(asctime)s.%(msecs)03d from the log format strings
iniset $KEYSTONE_CONF DEFAULT logging_context_format_string "%(process)d %(levelname)s %(name)s [%(request_id)s %(user_identity)s] %(instance)s%(message)s"
@@ -278,6 +288,8 @@
iniset $KEYSTONE_CONF DEFAULT logging_exception_prefix "%(process)d TRACE %(name)s %(instance)s"
_config_keystone_apache_wsgi
fi
+
+ iniset $KEYSTONE_CONF DEFAULT max_token_size 16384
}
function configure_keystone_extensions {
@@ -316,79 +328,55 @@
function create_keystone_accounts {
# admin
- ADMIN_TENANT=$(openstack project create \
- admin \
- | grep " id " | get_field 2)
- ADMIN_USER=$(openstack user create \
- admin \
- --project "$ADMIN_TENANT" \
- --email admin@example.com \
- --password "$ADMIN_PASSWORD" \
- | grep " id " | get_field 2)
- ADMIN_ROLE=$(openstack role create \
- admin \
- | grep " id " | get_field 2)
- openstack role add \
- $ADMIN_ROLE \
- --project $ADMIN_TENANT \
- --user $ADMIN_USER
+ ADMIN_TENANT=$(get_or_create_project "admin")
+ ADMIN_USER=$(get_or_create_user "admin" \
+ "$ADMIN_PASSWORD" "$ADMIN_TENANT" "admin@example.com")
+ ADMIN_ROLE=$(get_or_create_role "admin")
+ get_or_add_user_role $ADMIN_ROLE $ADMIN_USER $ADMIN_TENANT
# Create service project/role
- openstack project create $SERVICE_TENANT_NAME
+ get_or_create_project "$SERVICE_TENANT_NAME"
# Service role, so service users do not have to be admins
- openstack role create service
+ get_or_create_role service
# The ResellerAdmin role is used by Nova and Ceilometer so we need to keep it.
# The admin role in swift allows a user to act as an admin for their tenant,
# but ResellerAdmin is needed for a user to act as any tenant. The name of this
# role is also configurable in swift-proxy.conf
- openstack role create ResellerAdmin
+ get_or_create_role ResellerAdmin
# The Member role is used by Horizon and Swift so we need to keep it:
- MEMBER_ROLE=$(openstack role create \
- Member \
- | grep " id " | get_field 2)
+ MEMBER_ROLE=$(get_or_create_role "Member")
+
# ANOTHER_ROLE demonstrates that an arbitrary role may be created and used
# TODO(sleepsonthefloor): show how this can be used for rbac in the future!
- ANOTHER_ROLE=$(openstack role create \
- anotherrole \
- | grep " id " | get_field 2)
+
+ ANOTHER_ROLE=$(get_or_create_role "anotherrole")
# invisible tenant - admin can't see this one
- INVIS_TENANT=$(openstack project create \
- invisible_to_admin \
- | grep " id " | get_field 2)
+ INVIS_TENANT=$(get_or_create_project "invisible_to_admin")
# demo
- DEMO_TENANT=$(openstack project create \
- demo \
- | grep " id " | get_field 2)
- DEMO_USER=$(openstack user create \
- demo \
- --project $DEMO_TENANT \
- --email demo@example.com \
- --password "$ADMIN_PASSWORD" \
- | grep " id " | get_field 2)
+ DEMO_TENANT=$(get_or_create_project "demo")
+ DEMO_USER=$(get_or_create_user "demo" \
+ "$ADMIN_PASSWORD" "$DEMO_TENANT" "demo@example.com")
- openstack role add --project $DEMO_TENANT --user $DEMO_USER $MEMBER_ROLE
- openstack role add --project $DEMO_TENANT --user $ADMIN_USER $ADMIN_ROLE
- openstack role add --project $DEMO_TENANT --user $DEMO_USER $ANOTHER_ROLE
- openstack role add --project $INVIS_TENANT --user $DEMO_USER $MEMBER_ROLE
+ get_or_add_user_role $MEMBER_ROLE $DEMO_USER $DEMO_TENANT
+ get_or_add_user_role $ADMIN_ROLE $ADMIN_USER $DEMO_TENANT
+ get_or_add_user_role $ANOTHER_ROLE $DEMO_USER $DEMO_TENANT
+ get_or_add_user_role $MEMBER_ROLE $DEMO_USER $INVIS_TENANT
# Keystone
if [[ "$KEYSTONE_CATALOG_BACKEND" = 'sql' ]]; then
- KEYSTONE_SERVICE=$(openstack service create \
- keystone \
- --type identity \
- --description "Keystone Identity Service" \
- | grep " id " | get_field 2)
- openstack endpoint create \
- $KEYSTONE_SERVICE \
- --region RegionOne \
- --publicurl "$KEYSTONE_SERVICE_PROTOCOL://$KEYSTONE_SERVICE_HOST:$KEYSTONE_SERVICE_PORT/v$IDENTITY_API_VERSION" \
- --adminurl "$KEYSTONE_AUTH_PROTOCOL://$KEYSTONE_AUTH_HOST:$KEYSTONE_AUTH_PORT/v$IDENTITY_API_VERSION" \
- --internalurl "$KEYSTONE_SERVICE_PROTOCOL://$KEYSTONE_SERVICE_HOST:$KEYSTONE_SERVICE_PORT/v$IDENTITY_API_VERSION"
+
+ KEYSTONE_SERVICE=$(get_or_create_service "keystone" \
+ "identity" "Keystone Identity Service")
+ get_or_create_endpoint $KEYSTONE_SERVICE \
+ "$REGION_NAME" \
+ "$KEYSTONE_SERVICE_PROTOCOL://$KEYSTONE_SERVICE_HOST:$KEYSTONE_SERVICE_PORT/v$IDENTITY_API_VERSION" \
+ "$KEYSTONE_AUTH_PROTOCOL://$KEYSTONE_AUTH_HOST:$KEYSTONE_AUTH_PORT/v$IDENTITY_API_VERSION" \
+ "$KEYSTONE_SERVICE_PROTOCOL://$KEYSTONE_SERVICE_HOST:$KEYSTONE_SERVICE_PORT/v$IDENTITY_API_VERSION"
fi
}
@@ -464,7 +452,7 @@
fi
git_clone $KEYSTONE_REPO $KEYSTONE_DIR $KEYSTONE_BRANCH
setup_develop $KEYSTONE_DIR
- if is_apache_enabled_service key; then
+ if [ "$KEYSTONE_USE_MOD_WSGI" == "True" ]; then
install_apache_wsgi
fi
}
@@ -477,7 +465,7 @@
service_port=$KEYSTONE_SERVICE_PORT_INT
fi
- if is_apache_enabled_service key; then
+ if [ "$KEYSTONE_USE_MOD_WSGI" == "True" ]; then
restart_apache_server
screen_it key "cd $KEYSTONE_DIR && sudo tail -f /var/log/$APACHE_NAME/keystone"
else
diff --git a/lib/marconi b/lib/marconi
index 20bf0e1..d7822c9 100644
--- a/lib/marconi
+++ b/lib/marconi
@@ -178,29 +178,19 @@
SERVICE_TENANT=$(openstack project list | awk "/ $SERVICE_TENANT_NAME / { print \$2 }")
ADMIN_ROLE=$(openstack role list | awk "/ admin / { print \$2 }")
- MARCONI_USER=$(openstack user create \
- marconi \
- --password "$SERVICE_PASSWORD" \
- --project $SERVICE_TENANT \
- --email marconi@example.com \
- | grep " id " | get_field 2)
- openstack role add \
- $ADMIN_ROLE \
- --project $SERVICE_TENANT \
- --user $MARCONI_USER
+ MARCONI_USER=$(get_or_create_user "marconi" \
+ "$SERVICE_PASSWORD" $SERVICE_TENANT "marconi@example.com")
+ get_or_add_user_role $ADMIN_ROLE $MARCONI_USER $SERVICE_TENANT
if [[ "$KEYSTONE_CATALOG_BACKEND" = 'sql' ]]; then
- MARCONI_SERVICE=$(openstack service create \
- marconi \
- --type=queuing \
- --description="Marconi Service" \
- | grep " id " | get_field 2)
- openstack endpoint create \
- $MARCONI_SERVICE \
- --region RegionOne \
- --publicurl "$MARCONI_SERVICE_PROTOCOL://$MARCONI_SERVICE_HOST:$MARCONI_SERVICE_PORT" \
- --adminurl "$MARCONI_SERVICE_PROTOCOL://$MARCONI_SERVICE_HOST:$MARCONI_SERVICE_PORT" \
- --internalurl "$MARCONI_SERVICE_PROTOCOL://$MARCONI_SERVICE_HOST:$MARCONI_SERVICE_PORT"
+
+ MARCONI_SERVICE=$(get_or_create_service "marconi" \
+ "queuing" "Marconi Service")
+ get_or_create_endpoint $MARCONI_SERVICE \
+ "$REGION_NAME" \
+ "$MARCONI_SERVICE_PROTOCOL://$MARCONI_SERVICE_HOST:$MARCONI_SERVICE_PORT" \
+ "$MARCONI_SERVICE_PROTOCOL://$MARCONI_SERVICE_HOST:$MARCONI_SERVICE_PORT" \
+ "$MARCONI_SERVICE_PROTOCOL://$MARCONI_SERVICE_HOST:$MARCONI_SERVICE_PORT"
fi
}
diff --git a/lib/neutron b/lib/neutron
index 2c6f53b..8b883b1 100644
--- a/lib/neutron
+++ b/lib/neutron
@@ -161,7 +161,7 @@
# If using GRE tunnels for tenant networks, specify the range of
# tunnel IDs from which tenant networks are allocated. Can be
# overriden in ``localrc`` in necesssary.
-TENANT_TUNNEL_RANGES=${TENANT_TUNNEL_RANGE:-1:1000}
+TENANT_TUNNEL_RANGES=${TENANT_TUNNEL_RANGES:-1:1000}
# To use VLANs for tenant networks, set to True in localrc. VLANs
# are supported by the openvswitch and linuxbridge plugins, each
@@ -203,6 +203,13 @@
# Example: ``LB_PHYSICAL_INTERFACE=eth1``
LB_PHYSICAL_INTERFACE=${LB_PHYSICAL_INTERFACE:-}
+# When Neutron tunnels are enabled it is needed to specify the
+# IP address of the end point in the local server. This IP is set
+# by default to the same IP address that the HOST IP.
+# This variable can be used to specify a different end point IP address
+# Example: ``TUNNEL_ENDPOINT_IP=1.1.1.1``
+TUNNEL_ENDPOINT_IP=${TUNNEL_ENDPOINT_IP:-$HOST_IP}
+
# With the openvswitch plugin, set to True in ``localrc`` to enable
# provider GRE tunnels when ``ENABLE_TENANT_TUNNELS`` is False.
#
@@ -296,6 +303,9 @@
if is_service_enabled q-meta; then
_configure_neutron_metadata_agent
fi
+ if is_service_enabled ceilometer; then
+ _configure_neutron_ceilometer_notifications
+ fi
_configure_neutron_debug_command
}
@@ -307,7 +317,7 @@
iniset $NOVA_CONF neutron admin_auth_url "$KEYSTONE_SERVICE_PROTOCOL://$KEYSTONE_SERVICE_HOST:$KEYSTONE_AUTH_PORT/v2.0"
iniset $NOVA_CONF neutron auth_strategy "$Q_AUTH_STRATEGY"
iniset $NOVA_CONF neutron admin_tenant_name "$SERVICE_TENANT_NAME"
- iniset $NOVA_CONF neutron region_name "RegionOne"
+ iniset $NOVA_CONF neutron region_name "$REGION_NAME"
iniset $NOVA_CONF neutron url "http://$Q_HOST:$Q_PORT"
if [[ "$Q_USE_SECGROUP" == "True" ]]; then
@@ -350,28 +360,20 @@
ADMIN_ROLE=$(openstack role list | awk "/ admin / { print \$2 }")
if [[ "$ENABLED_SERVICES" =~ "q-svc" ]]; then
- NEUTRON_USER=$(openstack user create \
- neutron \
- --password "$SERVICE_PASSWORD" \
- --project $SERVICE_TENANT \
- --email neutron@example.com \
- | grep " id " | get_field 2)
- openstack role add \
- $ADMIN_ROLE \
- --project $SERVICE_TENANT \
- --user $NEUTRON_USER
+
+ NEUTRON_USER=$(get_or_create_user "neutron" \
+ "$SERVICE_PASSWORD" $SERVICE_TENANT "neutron@example.com")
+ get_or_add_user_role $ADMIN_ROLE $NEUTRON_USER $SERVICE_TENANT
+
if [[ "$KEYSTONE_CATALOG_BACKEND" = 'sql' ]]; then
- NEUTRON_SERVICE=$(openstack service create \
- neutron \
- --type=network \
- --description="Neutron Service" \
- | grep " id " | get_field 2)
- openstack endpoint create \
- $NEUTRON_SERVICE \
- --region RegionOne \
- --publicurl "http://$SERVICE_HOST:9696/" \
- --adminurl "http://$SERVICE_HOST:9696/" \
- --internalurl "http://$SERVICE_HOST:9696/"
+
+ NEUTRON_SERVICE=$(get_or_create_service "neutron" \
+ "network" "Neutron Service")
+ get_or_create_endpoint $NEUTRON_SERVICE \
+ "$REGION_NAME" \
+ "http://$SERVICE_HOST:9696/" \
+ "http://$SERVICE_HOST:9696/" \
+ "http://$SERVICE_HOST:9696/"
fi
fi
}
@@ -730,6 +732,10 @@
}
+function _configure_neutron_ceilometer_notifications {
+ iniset $NEUTRON_CONF DEFAULT notification_driver neutron.openstack.common.notifier.rpc_notifier
+}
+
function _configure_neutron_lbaas {
neutron_agent_lbaas_configure_common
neutron_agent_lbaas_configure_agent
diff --git a/lib/neutron_plugins/ml2 b/lib/neutron_plugins/ml2
index 9966373..8e131bb 100644
--- a/lib/neutron_plugins/ml2
+++ b/lib/neutron_plugins/ml2
@@ -99,7 +99,7 @@
fi
# Since we enable the tunnel TypeDrivers, also enable a local_ip
- iniset /$Q_PLUGIN_CONF_FILE ovs local_ip $HOST_IP
+ iniset /$Q_PLUGIN_CONF_FILE ovs local_ip $TUNNEL_ENDPOINT_IP
populate_ml2_config /$Q_PLUGIN_CONF_FILE ml2 mechanism_drivers=$Q_ML2_PLUGIN_MECHANISM_DRIVERS
diff --git a/lib/neutron_plugins/ofagent_agent b/lib/neutron_plugins/ofagent_agent
index b8321f3..66283ad 100644
--- a/lib/neutron_plugins/ofagent_agent
+++ b/lib/neutron_plugins/ofagent_agent
@@ -54,7 +54,7 @@
die $LINENO "You are running OVS version $OVS_VERSION. OVS 1.4+ is required for tunneling between multiple hosts."
fi
iniset /$Q_PLUGIN_CONF_FILE ovs enable_tunneling True
- iniset /$Q_PLUGIN_CONF_FILE ovs local_ip $HOST_IP
+ iniset /$Q_PLUGIN_CONF_FILE ovs local_ip $TUNNEL_ENDPOINT_IP
fi
# Setup physical network bridge mappings. Override
diff --git a/lib/neutron_plugins/openvswitch_agent b/lib/neutron_plugins/openvswitch_agent
index fbc013f..5adb0c5 100644
--- a/lib/neutron_plugins/openvswitch_agent
+++ b/lib/neutron_plugins/openvswitch_agent
@@ -48,7 +48,7 @@
die $LINENO "You are running OVS version $OVS_VERSION. OVS 1.4+ is required for tunneling between multiple hosts."
fi
iniset /$Q_PLUGIN_CONF_FILE ovs enable_tunneling True
- iniset /$Q_PLUGIN_CONF_FILE ovs local_ip $HOST_IP
+ iniset /$Q_PLUGIN_CONF_FILE ovs local_ip $TUNNEL_ENDPOINT_IP
fi
# Setup physical network bridge mappings. Override
diff --git a/lib/nova b/lib/nova
index 3d31d68..ebdb6b4 100644
--- a/lib/nova
+++ b/lib/nova
@@ -333,39 +333,28 @@
# Nova
if [[ "$ENABLED_SERVICES" =~ "n-api" ]]; then
- NOVA_USER=$(openstack user create \
- nova \
- --password "$SERVICE_PASSWORD" \
- --project $SERVICE_TENANT \
- --email nova@example.com \
- | grep " id " | get_field 2)
- openstack role add \
- $ADMIN_ROLE \
- --project $SERVICE_TENANT \
- --user $NOVA_USER
+
+ NOVA_USER=$(get_or_create_user "nova" \
+ "$SERVICE_PASSWORD" $SERVICE_TENANT "nova@example.com")
+ get_or_add_user_role $ADMIN_ROLE $NOVA_USER $SERVICE_TENANT
+
if [[ "$KEYSTONE_CATALOG_BACKEND" = 'sql' ]]; then
- NOVA_SERVICE=$(openstack service create \
- nova \
- --type=compute \
- --description="Nova Compute Service" \
- | grep " id " | get_field 2)
- openstack endpoint create \
- $NOVA_SERVICE \
- --region RegionOne \
- --publicurl "$NOVA_SERVICE_PROTOCOL://$NOVA_SERVICE_HOST:$NOVA_SERVICE_PORT/v2/\$(tenant_id)s" \
- --adminurl "$NOVA_SERVICE_PROTOCOL://$NOVA_SERVICE_HOST:$NOVA_SERVICE_PORT/v2/\$(tenant_id)s" \
- --internalurl "$NOVA_SERVICE_PROTOCOL://$NOVA_SERVICE_HOST:$NOVA_SERVICE_PORT/v2/\$(tenant_id)s"
- NOVA_V3_SERVICE=$(openstack service create \
- novav3 \
- --type=computev3 \
- --description="Nova Compute Service V3" \
- | grep " id " | get_field 2)
- openstack endpoint create \
- $NOVA_V3_SERVICE \
- --region RegionOne \
- --publicurl "$NOVA_SERVICE_PROTOCOL://$NOVA_SERVICE_HOST:$NOVA_SERVICE_PORT/v3" \
- --adminurl "$NOVA_SERVICE_PROTOCOL://$NOVA_SERVICE_HOST:$NOVA_SERVICE_PORT/v3" \
- --internalurl "$NOVA_SERVICE_PROTOCOL://$NOVA_SERVICE_HOST:$NOVA_SERVICE_PORT/v3"
+
+ NOVA_SERVICE=$(get_or_create_service "nova" \
+ "compute" "Nova Compute Service")
+ get_or_create_endpoint $NOVA_SERVICE \
+ "$REGION_NAME" \
+ "$NOVA_SERVICE_PROTOCOL://$NOVA_SERVICE_HOST:$NOVA_SERVICE_PORT/v2/\$(tenant_id)s" \
+ "$NOVA_SERVICE_PROTOCOL://$NOVA_SERVICE_HOST:$NOVA_SERVICE_PORT/v2/\$(tenant_id)s" \
+ "$NOVA_SERVICE_PROTOCOL://$NOVA_SERVICE_HOST:$NOVA_SERVICE_PORT/v2/\$(tenant_id)s"
+
+ NOVA_V3_SERVICE=$(get_or_create_service "novav3" \
+ "computev3" "Nova Compute Service V3")
+ get_or_create_endpoint $NOVA_V3_SERVICE \
+ "$REGION_NAME" \
+ "$NOVA_SERVICE_PROTOCOL://$NOVA_SERVICE_HOST:$NOVA_SERVICE_PORT/v3" \
+ "$NOVA_SERVICE_PROTOCOL://$NOVA_SERVICE_HOST:$NOVA_SERVICE_PORT/v3" \
+ "$NOVA_SERVICE_PROTOCOL://$NOVA_SERVICE_HOST:$NOVA_SERVICE_PORT/v3"
fi
fi
@@ -374,40 +363,32 @@
if is_service_enabled swift; then
# Nova needs ResellerAdmin role to download images when accessing
# swift through the s3 api.
- openstack role add \
- --project $SERVICE_TENANT_NAME \
- --user nova \
- ResellerAdmin
+ get_or_add_user_role ResellerAdmin nova $SERVICE_TENANT_NAME
fi
# EC2
if [[ "$KEYSTONE_CATALOG_BACKEND" = "sql" ]]; then
- openstack service create \
- --type ec2 \
- --description "EC2 Compatibility Layer" \
- ec2
- openstack endpoint create \
- --region RegionOne \
- --publicurl "http://$SERVICE_HOST:8773/services/Cloud" \
- --adminurl "http://$SERVICE_HOST:8773/services/Admin" \
- --internalurl "http://$SERVICE_HOST:8773/services/Cloud" \
- ec2
+
+ EC2_SERVICE=$(get_or_create_service "ec2" \
+ "ec2" "EC2 Compatibility Layer")
+ get_or_create_endpoint $EC2_SERVICE \
+ "$REGION_NAME" \
+ "http://$SERVICE_HOST:8773/services/Cloud" \
+ "http://$SERVICE_HOST:8773/services/Admin" \
+ "http://$SERVICE_HOST:8773/services/Cloud"
fi
fi
# S3
if is_service_enabled n-obj swift3; then
if [[ "$KEYSTONE_CATALOG_BACKEND" = 'sql' ]]; then
- openstack service create \
- --type s3 \
- --description "S3" \
- s3
- openstack endpoint create \
- --region RegionOne \
- --publicurl "http://$SERVICE_HOST:$S3_SERVICE_PORT" \
- --adminurl "http://$SERVICE_HOST:$S3_SERVICE_PORT" \
- --internalurl "http://$SERVICE_HOST:$S3_SERVICE_PORT" \
- s3
+
+ S3_SERVICE=$(get_or_create_service "s3" "s3" "S3")
+ get_or_create_endpoint $S3_SERVICE \
+ "$REGION_NAME" \
+ "http://$SERVICE_HOST:$S3_SERVICE_PORT" \
+ "http://$SERVICE_HOST:$S3_SERVICE_PORT" \
+ "http://$SERVICE_HOST:$S3_SERVICE_PORT"
fi
fi
}
diff --git a/lib/nova_plugins/functions-libvirt b/lib/nova_plugins/functions-libvirt
index 18bdf89..6fb5c38 100644
--- a/lib/nova_plugins/functions-libvirt
+++ b/lib/nova_plugins/functions-libvirt
@@ -112,7 +112,15 @@
# Enable server side traces for libvirtd
if [[ "$DEBUG_LIBVIRT" = "True" ]] ; then
- local log_filters="1:libvirt 1:qemu 1:conf 1:security 3:event 3:json 3:file 1:util"
+ if is_ubuntu; then
+ # Unexpectedly binary package builds in ubuntu get fully qualified
+ # source file paths, not relative paths. This screws with the matching
+ # of '1:libvirt' making everything turn on. So use libvirt.c for now.
+ # This will have to be re-visited when Ubuntu ships libvirt >= 1.2.3
+ local log_filters="1:libvirt.c 1:qemu 1:conf 1:security 3:object 3:event 3:json 3:file 1:util"
+ else
+ local log_filters="1:libvirt 1:qemu 1:conf 1:security 3:object 3:event 3:json 3:file 1:util"
+ fi
local log_outputs="1:file:/var/log/libvirt/libvirtd.log"
if ! grep -q "log_filters=\"$log_filters\"" /etc/libvirt/libvirtd.conf; then
echo "log_filters=\"$log_filters\"" | sudo tee -a /etc/libvirt/libvirtd.conf
diff --git a/lib/sahara b/lib/sahara
index 934989b..0cc2fe9 100644
--- a/lib/sahara
+++ b/lib/sahara
@@ -60,29 +60,19 @@
SERVICE_TENANT=$(openstack project list | awk "/ $SERVICE_TENANT_NAME / { print \$2 }")
ADMIN_ROLE=$(openstack role list | awk "/ admin / { print \$2 }")
- SAHARA_USER=$(openstack user create \
- sahara \
- --password "$SERVICE_PASSWORD" \
- --project $SERVICE_TENANT \
- --email sahara@example.com \
- | grep " id " | get_field 2)
- openstack role add \
- $ADMIN_ROLE \
- --project $SERVICE_TENANT \
- --user $SAHARA_USER
+ SAHARA_USER=$(get_or_create_user "sahara" \
+ "$SERVICE_PASSWORD" $SERVICE_TENANT "sahara@example.com")
+ get_or_add_user_role $ADMIN_ROLE $SAHARA_USER $SERVICE_TENANT
if [[ "$KEYSTONE_CATALOG_BACKEND" = 'sql' ]]; then
- SAHARA_SERVICE=$(openstack service create \
- sahara \
- --type=data_processing \
- --description="Sahara Data Processing" \
- | grep " id " | get_field 2)
- openstack endpoint create \
- $SAHARA_SERVICE \
- --region RegionOne \
- --publicurl "$SAHARA_SERVICE_PROTOCOL://$SAHARA_SERVICE_HOST:$SAHARA_SERVICE_PORT/v1.1/\$(tenant_id)s" \
- --adminurl "$SAHARA_SERVICE_PROTOCOL://$SAHARA_SERVICE_HOST:$SAHARA_SERVICE_PORT/v1.1/\$(tenant_id)s" \
- --internalurl "$SAHARA_SERVICE_PROTOCOL://$SAHARA_SERVICE_HOST:$SAHARA_SERVICE_PORT/v1.1/\$(tenant_id)s"
+
+ SAHARA_SERVICE=$(get_or_create_service "sahara" \
+ "data_processing" "Sahara Data Processing")
+ get_or_create_endpoint $SAHARA_SERVICE \
+ "$REGION_NAME" \
+ "$SAHARA_SERVICE_PROTOCOL://$SAHARA_SERVICE_HOST:$SAHARA_SERVICE_PORT/v1.1/\$(tenant_id)s" \
+ "$SAHARA_SERVICE_PROTOCOL://$SAHARA_SERVICE_HOST:$SAHARA_SERVICE_PORT/v1.1/\$(tenant_id)s" \
+ "$SAHARA_SERVICE_PROTOCOL://$SAHARA_SERVICE_HOST:$SAHARA_SERVICE_PORT/v1.1/\$(tenant_id)s"
fi
}
diff --git a/lib/swift b/lib/swift
index ae52292..2b161c3 100644
--- a/lib/swift
+++ b/lib/swift
@@ -118,6 +118,8 @@
# Tell Tempest this project is present
TEMPEST_SERVICES+=,swift
+# Toggle for deploying Keystone under HTTPD + mod_wsgi
+SWIFT_USE_MOD_WSGI=${SWIFT_USE_MOD_WSGI:-False}
# Functions
# ---------
@@ -139,7 +141,7 @@
rm ${SWIFT_DISK_IMAGE}
fi
rm -rf ${SWIFT_DATA_DIR}/run/
- if is_apache_enabled_service swift; then
+ if [ "$SWIFT_USE_MOD_WSGI" == "True" ]; then
_cleanup_swift_apache_wsgi
fi
}
@@ -337,12 +339,12 @@
iniset ${SWIFT_CONFIG_PROXY_SERVER} app:proxy-server node_timeout 120
iniset ${SWIFT_CONFIG_PROXY_SERVER} app:proxy-server conn_timeout 20
- # Skipped due to bug 1294789
- ## Configure Ceilometer
- #if is_service_enabled ceilometer; then
- # iniset ${SWIFT_CONFIG_PROXY_SERVER} filter:ceilometer use "egg:ceilometer#swift"
- # SWIFT_EXTRAS_MIDDLEWARE_LAST="${SWIFT_EXTRAS_MIDDLEWARE_LAST} ceilometer"
- #fi
+ # Configure Ceilometer
+ if is_service_enabled ceilometer; then
+ iniset ${SWIFT_CONFIG_PROXY_SERVER} filter:ceilometer "set log_level" "WARN"
+ iniset ${SWIFT_CONFIG_PROXY_SERVER} filter:ceilometer use "egg:ceilometer#swift"
+ SWIFT_EXTRAS_MIDDLEWARE_LAST="${SWIFT_EXTRAS_MIDDLEWARE_LAST} ceilometer"
+ fi
# Restrict the length of auth tokens in the swift proxy-server logs.
iniset ${SWIFT_CONFIG_PROXY_SERVER} filter:proxy-logging reveal_sensitive_prefix ${SWIFT_LOG_TOKEN_LENGTH}
@@ -470,7 +472,7 @@
sudo killall -HUP rsyslogd
fi
- if is_apache_enabled_service swift; then
+ if [ "$SWIFT_USE_MOD_WSGI" == "True" ]; then
_config_swift_apache_wsgi
fi
}
@@ -547,50 +549,40 @@
SERVICE_TENANT=$(openstack project list | awk "/ $SERVICE_TENANT_NAME / { print \$2 }")
ADMIN_ROLE=$(openstack role list | awk "/ admin / { print \$2 }")
- SWIFT_USER=$(openstack user create \
- swift \
- --password "$SERVICE_PASSWORD" \
- --project $SERVICE_TENANT \
- --email=swift@example.com \
- | grep " id " | get_field 2)
- openstack role add \
- $ADMIN_ROLE \
- --project $SERVICE_TENANT \
- --user $SWIFT_USER
+ SWIFT_USER=$(get_or_create_user "swift" \
+ "$SERVICE_PASSWORD" $SERVICE_TENANT "swift@example.com")
+ get_or_add_user_role $ADMIN_ROLE $SWIFT_USER $SERVICE_TENANT
if [[ "$KEYSTONE_CATALOG_BACKEND" = 'sql' ]]; then
- SWIFT_SERVICE=$(openstack service create \
- swift \
- --type="object-store" \
- --description="Swift Service" \
- | grep " id " | get_field 2)
- openstack endpoint create \
- $SWIFT_SERVICE \
- --region RegionOne \
- --publicurl "http://$SERVICE_HOST:8080/v1/AUTH_\$(tenant_id)s" \
- --adminurl "http://$SERVICE_HOST:8080" \
- --internalurl "http://$SERVICE_HOST:8080/v1/AUTH_\$(tenant_id)s"
+
+ SWIFT_SERVICE=$(get_or_create_service "swift" \
+ "object-store" "Swift Service")
+ get_or_create_endpoint $SWIFT_SERVICE \
+ "$REGION_NAME" \
+ "http://$SERVICE_HOST:8080/v1/AUTH_\$(tenant_id)s" \
+ "http://$SERVICE_HOST:8080" \
+ "http://$SERVICE_HOST:8080/v1/AUTH_\$(tenant_id)s"
fi
- SWIFT_TENANT_TEST1=$(openstack project create swifttenanttest1 | grep " id " | get_field 2)
+ SWIFT_TENANT_TEST1=$(get_or_create_project swifttenanttest1)
die_if_not_set $LINENO SWIFT_TENANT_TEST1 "Failure creating SWIFT_TENANT_TEST1"
- SWIFT_USER_TEST1=$(openstack user create swiftusertest1 --password=$SWIFTUSERTEST1_PASSWORD \
- --project "$SWIFT_TENANT_TEST1" --email=test@example.com | grep " id " | get_field 2)
+ SWIFT_USER_TEST1=$(get_or_create_user swiftusertest1 $SWIFTUSERTEST1_PASSWORD \
+ "$SWIFT_TENANT_TEST1" "test@example.com")
die_if_not_set $LINENO SWIFT_USER_TEST1 "Failure creating SWIFT_USER_TEST1"
- openstack role add --user $SWIFT_USER_TEST1 --project $SWIFT_TENANT_TEST1 $ADMIN_ROLE
+ get_or_add_user_role $ADMIN_ROLE $SWIFT_USER_TEST1 $SWIFT_TENANT_TEST1
- SWIFT_USER_TEST3=$(openstack user create swiftusertest3 --password=$SWIFTUSERTEST3_PASSWORD \
- --project "$SWIFT_TENANT_TEST1" --email=test3@example.com | grep " id " | get_field 2)
+ SWIFT_USER_TEST3=$(get_or_create_user swiftusertest3 $SWIFTUSERTEST3_PASSWORD \
+ "$SWIFT_TENANT_TEST1" "test3@example.com")
die_if_not_set $LINENO SWIFT_USER_TEST3 "Failure creating SWIFT_USER_TEST3"
- openstack role add --user $SWIFT_USER_TEST3 --project $SWIFT_TENANT_TEST1 $ANOTHER_ROLE
+ get_or_add_user_role $ANOTHER_ROLE $SWIFT_USER_TEST3 $SWIFT_TENANT_TEST1
- SWIFT_TENANT_TEST2=$(openstack project create swifttenanttest2 | grep " id " | get_field 2)
+ SWIFT_TENANT_TEST2=$(get_or_create_project swifttenanttest2)
die_if_not_set $LINENO SWIFT_TENANT_TEST2 "Failure creating SWIFT_TENANT_TEST2"
- SWIFT_USER_TEST2=$(openstack user create swiftusertest2 --password=$SWIFTUSERTEST2_PASSWORD \
- --project "$SWIFT_TENANT_TEST2" --email=test2@example.com | grep " id " | get_field 2)
+ SWIFT_USER_TEST2=$(get_or_create_user swiftusertest2 $SWIFTUSERTEST2_PASSWORD \
+ "$SWIFT_TENANT_TEST2" "test2@example.com")
die_if_not_set $LINENO SWIFT_USER_TEST2 "Failure creating SWIFT_USER_TEST2"
- openstack role add --user $SWIFT_USER_TEST2 --project $SWIFT_TENANT_TEST2 $ADMIN_ROLE
+ get_or_add_user_role $ADMIN_ROLE $SWIFT_USER_TEST2 $SWIFT_TENANT_TEST2
}
# init_swift() - Initialize rings
@@ -631,7 +623,7 @@
function install_swift {
git_clone $SWIFT_REPO $SWIFT_DIR $SWIFT_BRANCH
setup_develop $SWIFT_DIR
- if is_apache_enabled_service swift; then
+ if [ "$SWIFT_USE_MOD_WSGI" == "True" ]; then
install_apache_wsgi
fi
}
@@ -655,7 +647,7 @@
start_service rsyncd
fi
- if is_apache_enabled_service swift; then
+ if [ "$SWIFT_USE_MOD_WSGI" == "True" ]; then
restart_apache_server
swift-init --run-dir=${SWIFT_DATA_DIR}/run rest start
screen_it s-proxy "cd $SWIFT_DIR && sudo tail -f /var/log/$APACHE_NAME/proxy-server"
@@ -692,7 +684,7 @@
# stop_swift() - Stop running processes (non-screen)
function stop_swift {
- if is_apache_enabled_service swift; then
+ if [ "$SWIFT_USE_MOD_WSGI" == "True" ]; then
swift-init --run-dir=${SWIFT_DATA_DIR}/run rest stop && return 0
fi
diff --git a/lib/tempest b/lib/tempest
index 1e98bec..59c5bbc 100644
--- a/lib/tempest
+++ b/lib/tempest
@@ -397,16 +397,9 @@
if is_service_enabled tempest; then
# Tempest has some tests that validate various authorization checks
# between two regular users in separate tenants
- openstack project create \
- alt_demo
- openstack user create \
- --project alt_demo \
- --password "$ADMIN_PASSWORD" \
- alt_demo
- openstack role add \
- --project alt_demo \
- --user alt_demo \
- Member
+ get_or_create_project alt_demo
+ get_or_create_user alt_demo "$ADMIN_PASSWORD" alt_demo "alt_demo@example.com"
+ get_or_add_user_role Member alt_demo alt_demo
fi
}
diff --git a/lib/trove b/lib/trove
index 98ab56d..2552745 100644
--- a/lib/trove
+++ b/lib/trove
@@ -81,28 +81,20 @@
SERVICE_ROLE=$(openstack role list | awk "/ admin / { print \$2 }")
if [[ "$ENABLED_SERVICES" =~ "trove" ]]; then
- TROVE_USER=$(openstack user create \
- trove \
- --password "$SERVICE_PASSWORD" \
- --project $SERVICE_TENANT \
- --email trove@example.com \
- | grep " id " | get_field 2)
- openstack role add \
- $SERVICE_ROLE \
- --project $SERVICE_TENANT \
- --user $TROVE_USER
+
+ TROVE_USER=$(get_or_create_user "trove" \
+ "$SERVICE_PASSWORD" $SERVICE_TENANT "trove@example.com")
+ get_or_add_user_role $SERVICE_ROLE $TROVE_USER $SERVICE_TENANT
+
if [[ "$KEYSTONE_CATALOG_BACKEND" = 'sql' ]]; then
- TROVE_SERVICE=$(openstack service create \
- trove \
- --type=database \
- --description="Trove Service" \
- | grep " id " | get_field 2)
- openstack endpoint create \
- $TROVE_SERVICE \
- --region RegionOne \
- --publicurl "http://$SERVICE_HOST:8779/v1.0/\$(tenant_id)s" \
- --adminurl "http://$SERVICE_HOST:8779/v1.0/\$(tenant_id)s" \
- --internalurl "http://$SERVICE_HOST:8779/v1.0/\$(tenant_id)s"
+
+ TROVE_SERVICE=$(get_or_create_service "trove" \
+ "database" "Trove Service")
+ get_or_create_endpoint $TROVE_SERVICE \
+ "$REGION_NAME" \
+ "http://$SERVICE_HOST:8779/v1.0/\$(tenant_id)s" \
+ "http://$SERVICE_HOST:8779/v1.0/\$(tenant_id)s" \
+ "http://$SERVICE_HOST:8779/v1.0/\$(tenant_id)s"
fi
fi
}
diff --git a/openrc b/openrc
index fc066ad..aec8a2a 100644
--- a/openrc
+++ b/openrc
@@ -53,12 +53,16 @@
# easier with this off.
export OS_NO_CACHE=${OS_NO_CACHE:-1}
+# Region
+export OS_REGION_NAME=${REGION_NAME:-RegionOne}
+
# Set api HOST_IP endpoint. SERVICE_HOST may also be used to specify the endpoint,
# which is convenient for some localrc configurations.
HOST_IP=${HOST_IP:-127.0.0.1}
SERVICE_HOST=${SERVICE_HOST:-$HOST_IP}
SERVICE_PROTOCOL=${SERVICE_PROTOCOL:-http}
KEYSTONE_AUTH_PROTOCOL=${KEYSTONE_AUTH_PROTOCOL:-$SERVICE_PROTOCOL}
+KEYSTONE_AUTH_HOST=${KEYSTONE_AUTH_HOST:-$SERVICE_HOST}
# Some exercises call glance directly. On a single-node installation, Glance
# should be listening on HOST_IP. If its running elsewhere, it can be set here
@@ -72,7 +76,7 @@
# the user/tenant has access to - including nova, glance, keystone, swift, ...
# We currently recommend using the 2.0 *identity api*.
#
-export OS_AUTH_URL=$KEYSTONE_AUTH_PROTOCOL://$SERVICE_HOST:5000/v${OS_IDENTITY_API_VERSION}
+export OS_AUTH_URL=$KEYSTONE_AUTH_PROTOCOL://$KEYSTONE_AUTH_HOST:5000/v${OS_IDENTITY_API_VERSION}
# Set the pointer to our CA certificate chain. Harmless if TLS is not used.
export OS_CACERT=${OS_CACERT:-$INT_CA_DIR/ca-chain.pem}
diff --git a/stack.sh b/stack.sh
index e58436d..6d81691 100755
--- a/stack.sh
+++ b/stack.sh
@@ -668,6 +668,18 @@
# Do the ugly hacks for borken packages and distros
$TOP_DIR/tools/fixup_stuff.sh
+
+# Extras Pre-install
+# ------------------
+
+# Phase: pre-install
+if [[ -d $TOP_DIR/extras.d ]]; then
+ for i in $TOP_DIR/extras.d/*.sh; do
+ [[ -r $i ]] && source $i stack pre-install
+ done
+fi
+
+
install_rpc_backend
if is_service_enabled $DATABASE_BACKENDS; then
@@ -729,8 +741,10 @@
setup_develop $OPENSTACKCLIENT_DIR
if is_service_enabled key; then
- install_keystone
- configure_keystone
+ if [ "$KEYSTONE_AUTH_HOST" == "$SERVICE_HOST" ]; then
+ install_keystone
+ configure_keystone
+ fi
fi
if is_service_enabled s-proxy; then
@@ -929,8 +943,11 @@
if is_service_enabled key; then
echo_summary "Starting Keystone"
- init_keystone
- start_keystone
+
+ if [ "$KEYSTONE_AUTH_HOST" == "$SERVICE_HOST" ]; then
+ init_keystone
+ start_keystone
+ fi
# Set up a temporary admin URI for Keystone
SERVICE_ENDPOINT=$KEYSTONE_AUTH_URI/v2.0
@@ -971,6 +988,7 @@
export OS_TENANT_NAME=admin
export OS_USERNAME=admin
export OS_PASSWORD=$ADMIN_PASSWORD
+ export OS_REGION_NAME=$REGION_NAME
fi
@@ -1227,6 +1245,7 @@
if is_service_enabled cinder; then
echo_summary "Starting Cinder"
start_cinder
+ create_volume_types
fi
if is_service_enabled ceilometer; then
echo_summary "Starting Ceilometer"
@@ -1483,6 +1502,19 @@
done
fi
+# TODO(dtroyer): Remove CINDER_MULTI_LVM_BACKEND after stable/juno branch is cut
+if [[ "$CINDER_MULTI_LVM_BACKEND" = "True" ]]; then
+ echo ""
+ echo_summary "WARNING: CINDER_MULTI_LVM_BACKEND is used"
+ echo "You are using CINDER_MULTI_LVM_BACKEND to configure Cinder's multiple LVM backends"
+ echo "Please convert that configuration in local.conf to use CINDER_ENABLED_BACKENDS."
+ echo "CINDER_ENABLED_BACKENDS will be removed early in the 'K' development cycle"
+ echo "
+[[local|localrc]]
+CINDER_ENABLED_BACKENDS=lvm:lvmdriver-1,lvm:lvmdriver-2
+"
+fi
+
# Indicate how long this took to run (bash maintained variable ``SECONDS``)
echo_summary "stack.sh completed in $SECONDS seconds."
diff --git a/stackrc b/stackrc
index 8aa478f..4d3e8fc 100644
--- a/stackrc
+++ b/stackrc
@@ -19,6 +19,9 @@
STACK_USER=$(whoami)
fi
+# Specify region name Region
+REGION_NAME=${REGION_NAME:-RegionOne}
+
# Specify which services to launch. These generally correspond to
# screen tabs. To change the default list, use the ``enable_service`` and
# ``disable_service`` functions in ``local.conf``.
@@ -49,6 +52,12 @@
ENABLED_SERVICES+=,rabbit,tempest,mysql
fi
+# Global toggle for enabling services under mod_wsgi. If this is set to
+# ``True`` all services that use HTTPD + mod_wsgi as the preferred method of
+# deployment, will be deployed under Apache. If this is set to ``False`` all
+# services will rely on the local toggle variable (e.g. ``KEYSTONE_USE_MOD_WSGI``)
+ENABLE_HTTPD_MOD_WSGI_SERVICES=True
+
# Tell Tempest which services are available. The default is set here as
# Tempest falls late in the configuration sequence. This differs from
# ``ENABLED_SERVICES`` in that the project names are used here rather than
@@ -398,8 +407,7 @@
# 10Gb default volume backing file size
VOLUME_BACKING_FILE_SIZE=${VOLUME_BACKING_FILE_SIZE:-10250M}
-# Name of the LVM volume group to use/create for iscsi volumes
-VOLUME_GROUP=${VOLUME_GROUP:-stack-volumes}
+# Prefixes for volume and instance names
VOLUME_NAME_PREFIX=${VOLUME_NAME_PREFIX:-volume-}
INSTANCE_NAME_PREFIX=${INSTANCE_NAME_PREFIX:-instance-}
diff --git a/tools/build_docs.sh b/tools/build_docs.sh
index 77c2f4e..e999eff 100755
--- a/tools/build_docs.sh
+++ b/tools/build_docs.sh
@@ -113,6 +113,15 @@
# Get repo static
cp -pr $FQ_DOCS_SOURCE/* $FQ_HTML_BUILD
+# Insert automated bits
+GLOG=$(mktemp gitlogXXXX)
+git log \
+ --pretty=format:' <li>%s - <em>Commit <a href="https://review.openstack.org/#q,%h,n,z">%h</a> %cd</em></li>' \
+ --date=short \
+ --since '6 months ago' | grep -v Merge >$GLOG
+sed -e $"/%GIT_LOG%/r $GLOG" $FQ_DOCS_SOURCE/changes.html >$FQ_HTML_BUILD/changes.html
+rm -f $GLOG
+
# Build list of scripts to process
FILES=""
for f in $(find . -name .git -prune -o \( -type f -name \*.sh -not -path \*shocco/\* -print \)); do