[openstack-keystone/el6: 14/14] Merge branch 'master' into el6
Alan Pevec
apevec at fedoraproject.org
Thu Mar 1 22:54:14 UTC 2012
commit 80bca8993bf1d657978a006aba47380e3def24ef
Merge: fd1e19a c184bf1
Author: Alan Pevec <apevec at redhat.com>
Date: Thu Mar 1 22:57:50 2012 +0100
Merge branch 'master' into el6
.gitignore | 4 +-
openstack-config-set | 22 ++
openstack-keystone-db-setup | 249 ++++++++++++++++++++
openstack-keystone-docmod.patch | 22 --
openstack-keystone-newdeps.patch | 14 +-
openstack-keystone-nonet.patch | 12 -
openstack-keystone.init | 2 +-
openstack-keystone.spec | 162 +++++++------
....sh-check-file-paths-for-packaged-install.patch | 73 ++++++
sources | 2 +-
10 files changed, 441 insertions(+), 121 deletions(-)
---
diff --cc openstack-keystone-db-setup
index 0000000,4c95a3a..094e012
mode 000000,100755..100755
--- a/openstack-keystone-db-setup
+++ b/openstack-keystone-db-setup
@@@ -1,0 -1,249 +1,249 @@@
+ #!/bin/bash
+ #
+ # Copyright (C) 2011, Red Hat, Inc.
+ # Russell Bryant <rbryant at redhat.com>
+ # Alan Pevec <apevec at redhat.com>
+ #
+ # Licensed under the Apache License, Version 2.0 (the "License"); you may
+ # not use this file except in compliance with the License. You may obtain
+ # a copy of the License at
+ #
+ # http://www.apache.org/licenses/LICENSE-2.0
+ #
+ # Unless required by applicable law or agreed to in writing, software
+ # distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+ # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+ # License for the specific language governing permissions and limitations
+ # under the License.
+ #
+
+ #
+ # Print --help output and exit.
+ #
+
+ # TODO put it in common place for all openstack service
+ # (nova, glance and keystone) to use
+ APP=keystone
+
+ usage() {
+
+ cat << EOF
+ Set up a local MySQL database for use with openstack-$APP.
+ This script will create a '$APP' database that is accessible
+ only on localhost by user '$APP' with password '$APP'.
+ The setup of MySQL with a multi-server OpenStack installation
+ is outside of the scope of this simple helper script.
+
+ Usage: openstack-$APP-db-setup [options]
+ Options:
+ --help | -h
+ Print usage information.
+ --password <pw> | -p <pw>
+ Specify the password for the '$APP' MySQL user that $APP will
+ use to connect to the '$APP' MySQL database. By default,
+ the password '$APP' will be used.
+ --rootpw <pw> | -r <pw>
+ Specify the root MySQL password. If the script installs
+ the MySQL server, it will set the root password to this value
+ instead of prompting for a password. If the MySQL server is
+ already installed, this password will be used to connect to the
+ database instead of having to prompt for it.
+ --yes | -y
+ In cases where the script would normally ask for confirmation
+ before doing something, such as installing mysql-server,
+ just assume yes. This is useful if you want to run the script
+ non-interactively.
+ EOF
+
+ exit 0
+ }
+
+ install_mysql_server() {
+ if [ -z "${ASSUME_YES}" ] ; then
+ yum install mysql-server
+ else
+ yum install -y mysql-server
+ fi
+ }
+
+ start_mysql_server() {
- systemctl start mysqld.service
++ service mysqld start
+ }
+
+ MYSQL_APP_PW_DEFAULT="$APP"
+ MYSQL_APP_PW=${MYSQL_APP_PW_DEFAULT}
+ APP_CONFIG="/etc/$APP/$APP.conf"
+ ASSUME_YES=""
+
+ while [ $# -gt 0 ]
+ do
+ case "$1" in
+ -h|--help)
+ usage
+ ;;
+ -p|--password)
+ shift
+ MYSQL_APP_PW=${1}
+ ;;
+ -r|--rootpw)
+ shift
+ MYSQL_ROOT_PW=${1}
+ ;;
+ -y|--yes)
+ ASSUME_YES="yes"
+ ;;
+ *)
+ # ignore
+ shift
+ ;;
+ esac
+ shift
+ done
+
+
+ # Make sure MySQL is installed.
+
+ NEW_MYSQL_INSTALL=0
+ if ! rpm -q mysql-server > /dev/null
+ then
+ if [ -z "${ASSUME_YES}" ] ; then
+ printf "mysql-server is not installed. Would you like to install it now? (y/n): "
+ read response
+ case "$response" in
+ y|Y)
+ ;;
+ n|N)
+ echo "mysql-server must be installed. Please install it before proceeding."
+ exit 0
+ ;;
+ *)
+ echo "Invalid response."
+ exit 1
+ esac
+ fi
+
+ NEW_MYSQL_INSTALL=1
+ install_mysql_server
+ fi
+
+
+ # Make sure mysqld is running.
+
-if ! systemctl status mysqld.service > /dev/null
++if ! service mysqld status > /dev/null
+ then
+ if [ -z "${ASSUME_YES}" ] ; then
+ printf "mysqld is not running. Would you like to start it now? (y/n): "
+ read response
+ case "$response" in
+ y|Y)
+ ;;
+ n|N)
+ echo "mysqld must be running. Please start it before proceeding."
+ exit 0
+ ;;
+ *)
+ echo "Invalid response."
+ exit 1
+ esac
+ fi
+
+ start_mysql_server
+
+ # If we both installed and started, ensure it starts at boot
+ [ $NEW_MYSQL_INSTALL -eq 1 ] && chkconfig mysqld on
+ fi
+
+
+ # Get MySQL root access.
+
+ if [ $NEW_MYSQL_INSTALL -eq 1 ]
+ then
+ if [ ! "${MYSQL_ROOT_PW+defined}" ] ; then
+ echo "Since this is a fresh installation of MySQL, please set a password for the 'root' mysql user."
+
+ PW_MATCH=0
+ while [ $PW_MATCH -eq 0 ]
+ do
+ printf "Enter new password for 'root' mysql user: "
+ read -s MYSQL_ROOT_PW
+ echo
+ printf "Enter new password again: "
+ read -s PW2
+ echo
+ if [ "${MYSQL_ROOT_PW}" = "${PW2}" ] ; then
+ PW_MATCH=1
+ else
+ echo "Passwords did not match."
+ fi
+ done
+ fi
+
+ echo "UPDATE mysql.user SET password = password('${MYSQL_ROOT_PW}') WHERE user = 'root'; DELETE FROM mysql.user WHERE user = ''; flush privileges;" | mysql -u root
+ if ! [ $? -eq 0 ] ; then
+ echo "Failed to set password for 'root' MySQL user."
+ exit 1
+ fi
+ elif [ ! "${MYSQL_ROOT_PW+defined}" ] ; then
+ printf "Please enter the password for the 'root' MySQL user: "
+ read -s MYSQL_ROOT_PW
+ echo
+ fi
+
+
+ # Sanity check MySQL credentials.
+
+ MYSQL_ROOT_PW_ARG=""
+ if [ "${MYSQL_ROOT_PW+defined}" ]
+ then
+ MYSQL_ROOT_PW_ARG="--password=${MYSQL_ROOT_PW}"
+ fi
+ echo "SELECT 1;" | mysql -u root ${MYSQL_ROOT_PW_ARG} > /dev/null
+ if ! [ $? -eq 0 ]
+ then
+ echo "Failed to connect to the MySQL server. Please check your root user credentials."
+ exit 1
+ fi
+ echo "Verified connectivity to MySQL."
+
+
+ # Now create the db.
+
+ echo "Creating '$APP' database."
+ cat << EOF | mysql -u root ${MYSQL_ROOT_PW_ARG}
+ CREATE DATABASE $APP;
+ CREATE USER '$APP'@'localhost' IDENTIFIED BY '${MYSQL_APP_PW}';
+ CREATE USER '$APP'@'%' IDENTIFIED BY '${MYSQL_APP_PW}';
+ GRANT ALL ON $APP.* TO '$APP'@'localhost';
+ GRANT ALL ON $APP.* TO '$APP'@'%';
+ flush privileges;
+ EOF
+
+
+ # Make sure $APP configuration has the right MySQL password.
+
+ if [ "${MYSQL_APP_PW}" != "${MYSQL_APP_PW_DEFAULT}" ] ; then
+ echo "Updating '$APP' database password in ${APP_CONFIG}"
+ sed -i -e "s/mysql:\/\/$APP:\(.*\)@/mysql:\/\/$APP:${MYSQL_APP_PW}@/" ${APP_CONFIG}
+ fi
+
+
+ # Ask openstack-$APP to sync the db.
+
+ echo "Asking openstack-$APP to sync the databse."
+ if [ "${APP}" = "nova" ]; then
+ nova-manage db sync
+ else
+ # glance and keystone
+ $APP-manage db_sync
+ fi
+
+ # Do a final sanity check on the database.
+
+ echo "SELECT * FROM migrate_version;" | mysql -u $APP --password=${MYSQL_APP_PW} $APP > /dev/null
+ if ! [ $? -eq 0 ]
+ then
+ echo "Final sanity check failed. File a bug report on bugzilla.redhat.com against the openstack-$APP package."
+ exit 1
+ fi
+
+ echo "Complete!"
diff --cc openstack-keystone-newdeps.patch
index 759d380,0000000..e352dc2
mode 100644,000000..100644
--- a/openstack-keystone-newdeps.patch
+++ b/openstack-keystone-newdeps.patch
@@@ -1,32 -1,0 +1,24 @@@
- --- keystone-2011.3.1/keystone/__init__.py.orig 2011-11-25 12:27:19.920880470 +0100
- +++ keystone-2011.3.1/keystone/__init__.py 2011-11-25 12:27:49.801976645 +0100
- @@ -12,6 +12,29 @@
- # See the License for the specific language governing permissions and
- # limitations under the License.
-
++--- keystone-2012.1/keystone/__init__.py.newdeps 2012-02-29 11:16:06.000000000 +0100
+++++ keystone-2012.1/keystone/__init__.py 2012-03-01 22:42:08.546503618 +0100
++@@ -0,0 +1,21 @@
++import sys
++import pkg_resources
++
++# If there is a conflicting non egg module,
++# i.e. an older standard system module installed,
++# then replace it with this requirement
++def replace_dist(requirement):
++ try:
++ return pkg_resources.require(requirement)
++ except pkg_resources.VersionConflict:
++ e = sys.exc_info()[1]
++ dist=e.args[0]
++ req=e.args[1]
++ if dist.key == req.key and not dist.location.endswith('.egg'):
++ del pkg_resources.working_set.by_key[dist.key]
++ # We assume there is no need to adjust sys.path
++ # and the associated pkg_resources.working_set.entries
++ return pkg_resources.require(requirement)
++
++replace_dist("WebOb >= 1.0")
++replace_dist("SQLAlchemy >= 0.6.3")
- +
- +
- import gettext
-
-
diff --cc openstack-keystone.init
index a6f5410,0000000..aff8c1f
mode 100755,000000..100755
--- a/openstack-keystone.init
+++ b/openstack-keystone.init
@@@ -1,94 -1,0 +1,94 @@@
+#!/bin/sh
+#
+# keystone OpenStack Identity Service
+#
+# chkconfig: - 20 80
+# description: keystone works provide apis to \
+# * Authenticate users and provide a token \
+# * Validate tokens
+### END INIT INFO
+
+. /etc/rc.d/init.d/functions
+
+prog=keystone
- exec="/usr/bin/$prog"
++exec="/usr/bin/$prog-all"
+config="/etc/$prog/$prog.conf"
+pidfile="/var/run/$prog/$prog.pid"
+
+[ -e /etc/sysconfig/$prog ] && . /etc/sysconfig/$prog
+
+lockfile=/var/lock/subsys/$prog
+
+start() {
+ [ -x $exec ] || exit 5
+ [ -f $config ] || exit 6
+ echo -n $"Starting $prog: "
+ daemon --user keystone --pidfile $pidfile "$exec --config-file $config &>/dev/null & echo \$! > $pidfile"
+ retval=$?
+ echo
+ [ $retval -eq 0 ] && touch $lockfile
+ return $retval
+}
+
+stop() {
+ echo -n $"Stopping $prog: "
+ killproc -p $pidfile $prog
+ retval=$?
+ echo
+ [ $retval -eq 0 ] && rm -f $lockfile
+ return $retval
+}
+
+restart() {
+ stop
+ start
+}
+
+reload() {
+ restart
+}
+
+force_reload() {
+ restart
+}
+
+rh_status() {
+ status -p $pidfile $prog
+}
+
+rh_status_q() {
+ rh_status >/dev/null 2>&1
+}
+
+
+case "$1" in
+ start)
+ rh_status_q && exit 0
+ $1
+ ;;
+ stop)
+ rh_status_q || exit 0
+ $1
+ ;;
+ restart)
+ $1
+ ;;
+ reload)
+ rh_status_q || exit 7
+ $1
+ ;;
+ force-reload)
+ force_reload
+ ;;
+ status)
+ rh_status
+ ;;
+ condrestart|try-restart)
+ rh_status_q || exit 0
+ restart
+ ;;
+ *)
+ echo $"Usage: $0 {start|stop|status|restart|condrestart|try-restart|reload|force-reload}"
+ exit 2
+esac
+exit $?
diff --cc openstack-keystone.spec
index e9d1a90,40d65e2..40b0e34
--- a/openstack-keystone.spec
+++ b/openstack-keystone.spec
@@@ -14,21 -15,43 +15,46 @@@ Summary: OpenStack Identity Serv
License: ASL 2.0
URL: http://keystone.openstack.org/
- Source0: http://keystone.openstack.org/tarballs/keystone-%{version}%{snaptag}.tar.gz
+ Source0: http://launchpad.net/keystone/%{release_name}/%{release_name}-%{milestone}/+download/keystone-%{version}~%{release_letter}%{milestone}.tar.gz
+ #Source0: http://keystone.openstack.org/tarballs/keystone-%{version}%{snaptag}.tar.gz
Source1: openstack-keystone.logrotate
-Source2: openstack-keystone.service
+Source2: openstack-keystone.init
- Patch0: openstack-keystone-newdeps.patch
- Patch1: openstack-keystone-docmod.patch
- Patch2: openstack-keystone-nonet.patch
+ Source3: openstack-keystone-db-setup
+ Source4: openstack-config-set
-
++# EPEL6: use web1.0 and sqlalchemy0.7
++Patch0: openstack-keystone-newdeps.patch
+ # upstream review: https://review.openstack.org/4658
+ Patch1: sample_data.sh-check-file-paths-for-packaged-install.patch
BuildArch: noarch
BuildRequires: python2-devel
-BuildRequires: python-sphinx >= 1.1.2
+BuildRequires: python-sphinx10
+BuildRequires: python-sqlalchemy0.7
+BuildRequires: python-webob1.0
BuildRequires: python-iniparse
-BuildRequires: systemd-units
+ Requires: python-keystone = %{version}-%{release}
+
-Requires(post): systemd-units
-Requires(preun): systemd-units
-Requires(postun): systemd-units
++Requires(post): chkconfig
++Requires(postun): initscripts
++Requires(preun): chkconfig
++Requires(preun): initscripts
+ Requires(pre): shadow-utils
+
+ %description
+ Keystone is a Python implementation of the OpenStack
+ (http://www.openstack.org) identity service API.
+ This package contains the Keystone daemon.
+
+ %package -n python-keystone
+ Summary: Keystone Python libraries
+ Group: Applications/System
+ # python-keystone added in 2012.1-0.2.e3
+ Conflicts: openstack-keystone < 2012.1-0.2.e3
+
+ Requires: python-crypto
+ Requires: python-dateutil
Requires: python-eventlet
Requires: python-httplib2
Requires: python-ldap
@@@ -37,21 -61,14 +64,15 @@@ Requires: python-migrat
Requires: python-paste
Requires: python-paste-deploy
Requires: python-paste-script
+ Requires: python-prettytable
Requires: python-routes
-Requires: python-sqlalchemy
-Requires: python-webob
+Requires: python-sqlalchemy0.7
- Requires: python-sqlite2
+Requires: python-webob1.0
Requires: python-passlib
+Requires: python-setuptools
+ Requires: MySQL-python
- Requires(post): chkconfig
- Requires(postun): initscripts
- Requires(preun): chkconfig
- Requires(preun): initscripts
- Requires(postun): python-iniparse
- Requires(pre): shadow-utils
-
- %description
+ %description -n python-keystone
Keystone is a Python implementation of the OpenStack
(http://www.openstack.org) identity service API.
@@@ -68,49 -76,52 +80,52 @@@ This package contains the Keystone Pyth
%prep
%setup -q -n keystone-%{version}
+%patch0 -p1 -b .newdeps
- %patch1 -p1 -b .docmod
- %patch2 -p1 -b .nonet
-
- # log_file is ignored, use log_dir instead
- # https://bugs.launchpad.net/keystone/+bug/844959/comments/3
- python -c 'import iniparse
- conf=iniparse.ConfigParser()
- conf.read("etc/keystone.conf")
- if conf.has_option("DEFAULT", "log_file"):
- conf.remove_option("DEFAULT", "log_file")
- conf.set("DEFAULT", "log_dir", "%{_localstatedir}/log/keystone")
- conf.set("keystone.backends.sqlalchemy", "sql_connection", "sqlite:///%{_sharedstatedir}/keystone/keystone.sqlite")
- fp=open("etc/keystone.conf","w")
- conf.write(fp)
- fp.close()'
+ %patch1 -p1
+
+ # change default configuration
+ %{SOURCE4} etc/keystone.conf DEFAULT log_file %{_localstatedir}/log/keystone/keystone.log
+ %{SOURCE4} etc/keystone.conf sql connection mysql://keystone:keystone@localhost/keystone
+ %{SOURCE4} etc/keystone.conf catalog template_file %{_sysconfdir}/keystone/default_catalog.templates
+ %{SOURCE4} etc/keystone.conf identity driver keystone.identity.backends.sql.Identity
+ %{SOURCE4} etc/keystone.conf token driver keystone.token.backends.sql.Token
+ %{SOURCE4} etc/keystone.conf ec2 driver keystone.contrib.ec2.backends.sql.Ec2
find . \( -name .gitignore -o -name .placeholder \) -delete
find keystone -name \*.py -exec sed -i '/\/usr\/bin\/env python/d' {} \;
-
%build
%{__python} setup.py build
- find examples -type f -exec chmod 0664 \{\} \;
%install
- %{__python} setup.py install -O1 --skip-build --root %{buildroot}
+ %{__python} setup.py install --skip-build --root %{buildroot}
+
+ # Delete tests
+ rm -fr %{buildroot}%{python_sitelib}/tests
+ rm -fr %{buildroot}%{python_sitelib}/run_tests.*
- install -p -D -m 644 etc/keystone.conf %{buildroot}%{_sysconfdir}/keystone/keystone.conf
+ install -d -m 755 %{buildroot}%{_sysconfdir}/keystone
+ install -p -D -m 640 etc/keystone.conf %{buildroot}%{_sysconfdir}/keystone/keystone.conf
+ install -p -D -m 640 etc/default_catalog.templates %{buildroot}%{_sysconfdir}/keystone/default_catalog.templates
install -p -D -m 644 %{SOURCE1} %{buildroot}%{_sysconfdir}/logrotate.d/openstack-keystone
+install -p -D -m 755 %{SOURCE2} %{buildroot}%{_initrddir}/openstack-keystone
+ install -p -D -m 644 %{SOURCE2} %{buildroot}%{_unitdir}/openstack-keystone.service
+ # Install database setup helper script.
+ install -p -D -m 755 %{SOURCE3} %{buildroot}%{_bindir}/openstack-keystone-db-setup
+ # Install sample data script.
+ install -p -D -m 755 tools/sample_data.sh %{buildroot}%{_bindir}/openstack-keystone-sample-data
+ # Install configuration helper script.
+ install -p -D -m 755 %{SOURCE4} %{buildroot}%{_bindir}/openstack-config-set
+
install -d -m 755 %{buildroot}%{_sharedstatedir}/keystone
install -d -m 755 %{buildroot}%{_localstatedir}/log/keystone
+install -d -m 755 %{buildroot}%{_localstatedir}/run/keystone
- rm -rf %{buildroot}%{python_sitelib}/tools
- rm -rf %{buildroot}%{python_sitelib}/examples
- rm -rf %{buildroot}%{python_sitelib}/doc
-
# docs generation requires everything to be installed first
export PYTHONPATH="$( pwd ):$PYTHONPATH"
- make SPHINXBUILD=sphinx-1.0-build -C doc
-pushd docs
-make html
-popd
++make SPHINXAPIDOC=echo SPHINXBUILD=sphinx-1.0-build -C docs html
# Fix hidden-file-or-dir warnings
- rm -fr doc/build/html/.doctrees doc/build/html/.buildinfo
+ rm -fr docs/build/html/.doctrees docs/build/html/.buildinfo
%pre
getent group keystone >/dev/null || groupadd -r keystone
@@@ -145,46 -147,69 +160,51 @@@ f
/bin/systemctl daemon-reload >/dev/null 2>&1 || :
if [ $1 -ge 1 ] ; then
# Package upgrade, not uninstall
- # fix conf for LP844959
- python -c 'import iniparse
- conf_file="%{_sysconfdir}/keystone/keystone.conf"
- conf=iniparse.ConfigParser()
- conf.read(conf_file)
- if not conf.has_option("DEFAULT", "log_dir"):
- conf.set("DEFAULT", "log_dir", "%{_localstatedir}/log/keystone")
- fp=open(conf_file,"w")
- conf.write(fp)
- fp.close()'
+%if 0%{?fedora} >= 15
/bin/systemctl try-restart openstack-keystone.service >/dev/null 2>&1 || :
+%else
+ /sbin/service openstack-keystone condrestart >/dev/null 2>&1 || :
+%endif
fi
%files
- %doc README.md
%doc LICENSE
- %doc doc/build/html
- %doc examples
- %{python_sitelib}/*
- %{_bindir}/keystone*
+ %doc README.rst
+ %doc docs/build/html
+ %{_bindir}/keystone-all
+ %{_bindir}/keystone-manage
+ %{_bindir}/openstack-config-set
+ %{_bindir}/openstack-keystone-db-setup
+ %{_bindir}/openstack-keystone-sample-data
-%{_unitdir}/openstack-keystone.service
+%{_initrddir}/openstack-keystone
%dir %{_sysconfdir}/keystone
- %config(noreplace) %{_sysconfdir}/keystone/keystone.conf
+ %config(noreplace) %attr(-, keystone, keystone) %{_sysconfdir}/keystone/keystone.conf
+ %config(noreplace) %attr(-, keystone, keystone) %{_sysconfdir}/keystone/default_catalog.templates
%config(noreplace) %{_sysconfdir}/logrotate.d/openstack-keystone
%dir %attr(-, keystone, keystone) %{_sharedstatedir}/keystone
%dir %attr(-, keystone, keystone) %{_localstatedir}/log/keystone
+%dir %attr(-, keystone, keystone) %{_localstatedir}/run/keystone
+ %files -n python-keystone
+ %defattr(-,root,root,-)
+ %doc LICENSE
+ %{python_sitelib}/keystone
+ %{python_sitelib}/keystone-%{version}-*.egg-info
+
%changelog
+ * Thu Mar 01 2012 Alan Pevec <apevec at redhat.com> 2012.1-0.9.e4
+ - essex-4 milestone
-
-* Sat Feb 25 2012 Alan Pevec <apevec at redhat.com> 2012.1-0.8.e4
+ - change default database to mysql
-
-* Tue Feb 21 2012 Alan Pevec <apevec at redhat.com> 2012.1-0.7.e4
+ - switch all backends to sql
-
-* Mon Feb 20 2012 Alan Pevec <apevec at redhat.com> 2012.1-0.6.e4
-- add missing default_catalog.templates
-
-* Mon Feb 20 2012 Alan Pevec <apevec at redhat.com> 2012.1-0.5.e4
-- pre essex-4 snapshot, for keystone rebase
-
-* Mon Feb 13 2012 Alan Pevec <apevec at redhat.com> 2012.1-0.4.e3
-- fix deps rhbz#787072
-- keystone is not hashing passwords lp#924391
-- Fix "KeyError: 'service-header-mappings'" lp#925872
-
-* Wed Feb 8 2012 Toshio Kuratomi <toshio at fedoraproject.org> - 2012.1-0.3.e3
-- Remove the dep on python-sqlite2 as that's being retired in F17 and keystone
- will work with the sqlite3 module from the stdlib
-
-* Thu Jan 26 2012 Alan Pevec <apevec at redhat.com> 2012.1-0.2.e3
+ - separate library to python-keystone
-- avoid conflict with python-keystoneclient
-
-* Thu Jan 26 2012 Alan Pevec <apevec at redhat.com> 2012.1-0.1.e3
-- essex-3 milestone
+
-* Wed Jan 18 2012 Alan Pevec <apevec at redhat.com> 2012.1-0.e2
-- essex-2 milestone
+* Sun Dec 04 2011 Alan Pevec <apevec at redhat.com> 2011.3.1-4
+- fix initscript for keystone
-* Fri Jan 13 2012 Fedora Release Engineering <rel-eng at lists.fedoraproject.org> - 2011.3.1-3
-- Rebuilt for https://fedoraproject.org/wiki/Fedora_17_Mass_Rebuild
+* Wed Nov 30 2011 Alan Pevec <apevec at redhat.com> 2011.3.1-3
+- Use updated parallel install versions of epel packages (pbrady)
+- Ensure the docs aren't built with the system glance module (pbrady)
+- Ensure we don't access the net when building docs (pbrady)
* Thu Nov 24 2011 Alan Pevec <apevec at redhat.com> 2011.3.1-2
- include LICENSE, update package description from README.md
More information about the scm-commits
mailing list