-heat (2014.1~rc1-0ubuntu1~cloud0) precise-icehouse; urgency=medium
+heat (2014.1.1-0ubuntu1) trusty; urgency=medium
+
+ * Resynchronize with stable/icehouse (27557c9) (LP: #1328134):
+ - [368b6d3] Avoid redundant polling of DB for metadata
+ - [0f92683] Fix failed to delete the NovaFloatingIPAssociation resource
+ - [930cb3c] Fix status reason in events for deployment signals
+ - [4b9ff4f] Truncate status_reason to column length
+ - [3c560c6] Catch NotFound for keystone delete operations
+ - [e63baf6] Using correct attribute of exception
+ - [08154b0] Allow NotFound to be created without args
+ - [857ca78] Updated from global requirements
+ - [03dd894] Don't dynamically create provider types in the global env
+ - [937ac5a] Ignore nova limits set to '-1'
+ - [27557c9] Don't pass enable_snat by default in Router
+ * d/p/fix-requirements.patch: Drop minimum version of six to align to Ubuntu
+ 14.04 version.
+
+ -- Corey Bryant <corey.bryant@canonical.com> Mon, 09 Jun 2014 15:09:49 -0400
+
+heat (2014.1-0ubuntu1) trusty; urgency=medium
- * New update for the Ubuntu Cloud Archive.
+ [ Chuck Short ]
+ * New upstream release. (LP: #1299055)
+ * debian/heat-common.postinst: Create directory before changing
+ permissions. (LP: #1267557)
+
+ [ Corey Bryant ]
+ * New upstream release (LP: #1299055).
+
+ -- Chuck Short <zulcss@ubuntu.com> Thu, 17 Apr 2014 07:27:41 -0400
+
+heat (2014.1~rc2-0ubuntu3) trusty; urgency=medium
+
+ * debian/heat-common.postinst: Fix failing autopkg test.
+
+ -- Chuck Short <zulcss@ubuntu.com> Mon, 14 Apr 2014 13:36:05 -0400
+
+heat (2014.1~rc2-0ubuntu2) trusty; urgency=medium
+
+ * Fix up packaging based on Ubuntu Security Team review (LP: #1267557):
+ - debian/control: Drop python-sendfile since it is no longer
+ needed.
+ - debian/heat-common.install: Correct permissions of /etc/heat.
+ - debian/patches/sudoers_patch.patch: Change the directory location
+ for the sudoers so that it users the standard /etc/sudoers.d
+ directory.
+
+ -- Chuck Short <zulcss@ubuntu.com> Fri, 11 Apr 2014 15:25:44 -0400
+
+heat (2014.1~rc2-0ubuntu1) trusty; urgency=medium
+
+ * New upstream release candidate (LP: #1299055).
+ * debian/patches/fix-requirements.patch: Don't install
+ python-qpid since we use python-kombu by default (LP: #1296912).
- -- Openstack Ubuntu Testing Bot <openstack-testing-bot@ubuntu.com> Tue, 01 Apr 2014 00:10:11 -0400
+ -- Chuck Short <zulcss@ubuntu.com> Thu, 10 Apr 2014 08:51:46 -0400
heat (2014.1~rc1-0ubuntu1) trusty; urgency=medium
python-paramiko,
python-paste,
python-pastedeploy,
- python-qpid,
python-routes,
- python-sendfile,
python-setuptools,
python-six,
python-sphinx,
python-paste,
python-pastedeploy,
python-routes,
- python-sendfile,
python-setuptools,
python-six,
python-sqlalchemy (>= 0.7.8),
--shell /bin/false heat
fi
chown -R heat:adm /var/log/heat
- chmod 0750 /var/log/heat
mkdir -p /etc/heat
+ chmod 0750 /var/log/heat /etc/heat
mkdir -p /var/lib/heat
chown heat:heat -R /var/lib/heat /etc/heat
fi
--- /dev/null
+Description: Don't install python-qpid, and set min version of six.
+Author: Corey Bryant <corey.bryant@canonical.com>
+Forwarded: not needed.
+Index: heat/requirements.txt
+===================================================================
+--- heat.orig/requirements.txt 2014-06-13 10:13:46.164556068 -0400
++++ heat/requirements.txt 2014-06-13 11:40:08.456398077 -0400
+@@ -8,7 +8,7 @@
+ argparse
+ lxml>=2.3
+ netaddr>=0.7.6
+-six>=1.6.0
++six>=1.5.2
+ sqlalchemy-migrate>=0.8.2,!=0.8.4
+ python-novaclient>=2.17.0
+ PasteDeploy>=1.5.0
+@@ -27,4 +27,3 @@
+ paramiko>=1.9.0
+ Babel>=1.3
+ oslo.config>=1.2.0
+-qpid-python
default-sqlite.patch
+fix-requirements.patch
+sudoers_patch.patch
--- /dev/null
+Description: Change sudoers directory to be sudoers.d
+Author: Chuck Short <zulcss@ubuntu.com>
+Forwarded: Not needed.
+diff -Naurp heat-2014.1.rc2.orig/heat/engine/resources/nova_utils.py heat-2014.1.rc2/heat/engine/resources/nova_utils.py
+--- heat-2014.1.rc2.orig/heat/engine/resources/nova_utils.py 2014-04-10 03:27:34.000000000 -0400
++++ heat-2014.1.rc2/heat/engine/resources/nova_utils.py 2014-04-11 15:33:08.870985000 -0400
+@@ -198,8 +198,8 @@ def build_userdata(resource, userdata=No
+ #
+ # See bug https://bugs.launchpad.net/heat/+bug/1257410
+ boothook_custom_user = r"""useradd -m %s
+-echo -e '%s\tALL=(ALL)\tNOPASSWD: ALL' >> /etc/sudoers
+-""" % (instance_user, instance_user)
++echo -e '%s\tALL=(ALL)\tNOPASSWD: ALL' >> /etc/sudoers.d/heat-instance-%s
++""" % (instance_user, instance_user, instance_user)
+ else:
+ config_custom_user = ''
+ boothook_custom_user = ''
-From 738b1a510df9bad9910176c3756fc308f383f199 Mon Sep 17 00:00:00 2001
+From 7937cfc74c4178da51d0a33d8d01268340898c35 Mon Sep 17 00:00:00 2001
From: Jeff Peeler <jpeeler@redhat.com>
Date: Wed, 8 May 2013 12:27:35 -0400
-Subject: [PATCH 1/3] Switch to using M2Crypto
+Subject: [PATCH] Switch to using M2Crypto
This patch uses M2Crypto instead of PyCrypto to perform encryption
and decryption of user authentication information.
---
- heat/common/crypt.py | 32 ++++++++++++++------------------
- requirements.txt | 2 +-
+ heat/common/crypt.py | 32 ++++++++++++++------------------
+ requirements.txt | 2 +-
2 files changed, 15 insertions(+), 19 deletions(-)
diff --git a/heat/common/crypt.py b/heat/common/crypt.py
+ res = cipher.update(auth[16:]) + cipher.final()
return res
diff --git a/requirements.txt b/requirements.txt
-index 8b41238..541dbdd 100644
+index 4b6298d..e2e6933 100644
--- a/requirements.txt
+++ b/requirements.txt
@@ -1,5 +1,5 @@
eventlet>=0.13.0
greenlet>=0.3.2
httplib2>=0.7.5
---
-1.7.9.5
-
-From dc7a36234ac6f7bbb219b7bfeeed11c69a133cd3 Mon Sep 17 00:00:00 2001
+From a41d602a988d53f469ee5bc6e6269e08557248a1 Mon Sep 17 00:00:00 2001
From: Jeff Peeler <jpeeler@redhat.com>
Date: Mon, 14 Oct 2013 14:30:34 -0400
-Subject: [PATCH 2/3] remove pbr runtime dependency
+Subject: [PATCH] remove pbr runtime dependency
---
- heat/version.py | 12 ++++++++++--
+ heat/version.py | 12 ++++++++++--
1 file changed, 10 insertions(+), 2 deletions(-)
diff --git a/heat/version.py b/heat/version.py
+ return self.release
+
+version_info = VersionInfo()
---
-1.7.9.5
-
--- /dev/null
+From 1e3c89b9c233545616b13089b88bbb299bb5a693 Mon Sep 17 00:00:00 2001
+From: Jeff Peeler <jpeeler@redhat.com>
+Date: Fri, 13 Jun 2014 09:51:30 -0400
+Subject: [PATCH] Add heat-keystone-setup-domain script
+
+Resolves: rhbz#1104709
+---
+ bin/heat-keystone-setup-domain | 113 +++++++++++++++++++++++++++++++++++++++++
+ setup.cfg | 1 +
+ 2 files changed, 114 insertions(+)
+ create mode 100644 bin/heat-keystone-setup-domain
+
+diff --git a/bin/heat-keystone-setup-domain b/bin/heat-keystone-setup-domain
+new file mode 100644
+index 0000000..f5737e9
+--- /dev/null
++++ b/bin/heat-keystone-setup-domain
+@@ -0,0 +1,113 @@
++#!/usr/bin/env python
++#
++# Licensed under the Apache License, Version 2.0 (the "License"); you may
++# not use this file except in compliance with the License. You may obtain
++# a copy of the License at
++#
++# http://www.apache.org/licenses/LICENSE-2.0
++#
++# Unless required by applicable law or agreed to in writing, software
++# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
++# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
++# License for the specific language governing permissions and limitations
++# under the License.
++
++import logging
++import os
++import sys
++
++import keystoneclient.exceptions as kc_exception
++from keystoneclient.v3 import client
++from oslo.config import cfg
++
++logger = logging.getLogger(__name__)
++
++DEBUG = False
++USERNAME = os.environ.get('OS_USERNAME', None)
++PASSWORD = os.environ.get('OS_PASSWORD', None)
++AUTH_URL = os.environ.get('OS_AUTH_URL', '').replace('v2.0', 'v3')
++
++opts = [
++ cfg.StrOpt('stack-user-domain-name',
++ default="heat",
++ help="Name of domain to create for stack users."),
++ cfg.StrOpt('stack-domain-admin',
++ default="heat_stack_admin",
++ help="Keystone username with roles sufficient to manage users"
++ " and projects in the stack-user-domain"),
++ cfg.StrOpt('stack-domain-admin-password',
++ help="Password to set for stack-domain-admin"),
++]
++for opt in opts:
++ cfg.CONF.register_opt(opt, cli=True)
++cfg.CONF(sys.argv[1:], project='heat', prog='heat-keystone-setup-domain')
++
++HEAT_DOMAIN_NAME = os.environ.get(
++ 'HEAT_DOMAIN', cfg.CONF.stack_user_domain_name)
++HEAT_DOMAIN_ADMIN = os.environ.get('HEAT_DOMAIN_ADMIN',
++ cfg.CONF.stack_domain_admin)
++HEAT_DOMAIN_PASSWORD = os.environ.get('HEAT_DOMAIN_PASSWORD',
++ cfg.CONF.stack_domain_admin_password)
++HEAT_DOMAIN_DESCRIPTION = 'Contains users and projects created by heat'
++
++logger.debug("USERNAME=%s" % USERNAME)
++logger.debug("PASSWORD=%s" % PASSWORD)
++logger.debug("AUTH_URL=%s" % AUTH_URL)
++
++
++def main():
++ log_lvl = logging.DEBUG if DEBUG else logging.INFO
++ logging.basicConfig(
++ format="%(levelname)s (%(module)s:%(lineno)d) %(message)s",
++ level=log_lvl)
++
++ c = client.Client(debug=DEBUG,
++ username=USERNAME,
++ password=PASSWORD,
++ auth_url=AUTH_URL,
++ endpoint=AUTH_URL)
++ c.authenticate()
++
++ # Create the heat domain
++ logger.info("Creating domain %s" % HEAT_DOMAIN_NAME)
++ try:
++ heat_domain = c.domains.create(name=HEAT_DOMAIN_NAME,
++ description=HEAT_DOMAIN_DESCRIPTION)
++ except kc_exception.Conflict:
++ logger.warning("Domain %s already exists" % HEAT_DOMAIN_NAME)
++ heat_domain = c.domains.list(name=HEAT_DOMAIN_NAME)[0]
++ if heat_domain.name != HEAT_DOMAIN_NAME:
++ logger.error("Unexpected filtered list response, please upgrade "
++ "keystoneclient to >= 0.5")
++ sys.exit(1)
++
++ # Create heat domain admin user
++ if not HEAT_DOMAIN_PASSWORD:
++ logger.error("Must export HEAT_DOMAIN_PASSWORD or use"
++ " --stack-domain-admin-password")
++ sys.exit(1)
++
++ try:
++ domain_admin = c.users.create(name=HEAT_DOMAIN_ADMIN,
++ password=HEAT_DOMAIN_PASSWORD,
++ domain=heat_domain,
++ description="Heat domain admin")
++ except kc_exception.Conflict:
++ logger.warning("User %s already exists" % HEAT_DOMAIN_ADMIN)
++ domain_admin = c.users.list(name=HEAT_DOMAIN_ADMIN)[0]
++
++ # Make the user a domain admin
++ roles_list = c.roles.list()
++ # FIXME(shardy): seems filtering roles by name currently doesn't work
++ admin_role = [r for r in roles_list
++ if r.name == 'admin'][0]
++ c.roles.grant(role=admin_role, user=domain_admin, domain=heat_domain)
++
++ print("\nPlease update your heat.conf with the following in [DEFAULT]\n")
++ print("stack_user_domain=%s" % heat_domain.id)
++ print("stack_domain_admin=%s" % HEAT_DOMAIN_ADMIN)
++ print("stack_domain_admin_password=%s" % HEAT_DOMAIN_PASSWORD)
++
++
++if __name__ == "__main__":
++ main()
+diff --git a/setup.cfg b/setup.cfg
+index 8cf6f86..fe6b108 100644
+--- a/setup.cfg
++++ b/setup.cfg
+@@ -29,6 +29,7 @@ scripts =
+ bin/heat-db-setup
+ bin/heat-engine
+ bin/heat-keystone-setup
++ bin/heat-keystone-setup-domain
+ bin/heat-manage
+
+ [global]
+++ /dev/null
-From d2f32dcb8afb749985ad649d00167d834047274f Mon Sep 17 00:00:00 2001
-From: Jeff Peeler <jpeeler@redhat.com>
-Date: Tue, 2 Apr 2013 18:08:48 -0400
-Subject: [PATCH 3/3] Adjust to handle parallel installed packages
-
----
- heat/__init__.py | 33 +++++++++++++++++++++++++++++++++
- 1 file changed, 33 insertions(+)
-
-diff --git a/heat/__init__.py b/heat/__init__.py
-index 2e9772b..3bc3ac8 100644
---- a/heat/__init__.py
-+++ b/heat/__init__.py
-@@ -18,3 +18,36 @@ from heat.openstack.common import gettextutils
-
-
- gettextutils.install('heat')
-+
-+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
-+ try:
-+ return pkg_resources.require(requirement)
-+ except pkg_resources.DistributionNotFound:
-+ print 'Not found, skipping', requirement
-+ return {}
-+
-+replace_dist("WebOb >= 1.0")
-+replace_dist("SQLAlchemy >= 0.6.3")
-+replace_dist("Routes >= 1.12.3")
-+replace_dist("PasteDeploy >= 1.5")
-+# This hack is needed because replace_dist() results in
-+# the standard paste module path being at the start of __path__.
-+# TODO: See can we get pkg_resources to do the right thing directly
-+import paste
-+paste.__path__.insert(0, paste.__path__.pop(-1))
---
-1.7.9.5
-
+++ /dev/null
-From ea29122acb62e3c8a9ff9f5f92ed3d0e8899bce7 Mon Sep 17 00:00:00 2001
-From: Dmitry Burmistrov <dburmistrov@mirantis.com>
-Date: Thu, 3 Apr 2014 22:21:25 +0400
-Subject: [PATCH] Revert Use oslo.sphinx
-
----
- doc/source/conf.py | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-diff --git a/doc/source/conf.py b/doc/source/conf.py
-index 7b436c8..d659327 100644
---- a/doc/source/conf.py
-+++ b/doc/source/conf.py
-@@ -205,7 +205,7 @@ extensions = ['sphinx.ext.autodoc',
- 'sphinx.ext.pngmath',
- 'sphinx.ext.viewcode',
- 'sphinx.ext.doctest',
-- 'oslosphinx',
-+ 'oslo.sphinx',
- 'ext.resources']
-
- todo_include_todos = True
---
-1.7.9.5
-
db_backend = heat.db.sqlalchemy.api
log_dir = /var/log/heat
rpc_backend = heat.openstack.common.rpc.impl_qpid
+use_stderr = False
[keystone_authtoken]
admin_tenant_name = %SERVICE_TENANT_NAME%
%global release_name icehouse
-%global release_letter b
+%global release_letter rc
%global milestone 2
-%global full_release heat-%{version}.%{release_letter}%{milestone}
-#%global full_release heat-%{version}
+%global full_release heat-%{version}
%global with_doc %{!?_without_doc:1}%{?_without_doc:0}
-%global with_doc 0
Name: openstack-heat
Summary: OpenStack Orchestration (heat)
-Version: 2014.1
-Release: 0.5.%{release_letter}%{milestone}%{?dist}
+Version: 2014.1.1
+Release: 2.1%{?dist}
License: ASL 2.0
Group: System Environment/Base
URL: http://www.openstack.org
-Source0: https://launchpad.net/heat/%{release_name}/%{release_name}-%{milestone}/+download/%{full_release}.tar.gz
+Source0: https://launchpad.net/heat/%{release_name}/%{version}/+download/heat-%{version}.tar.gz
Obsoletes: heat < 7-9
Provides: heat
Source20: heat-dist.conf
#
-# patches_base=2014.1.b2
+# patches_base=2014.1.1+1
#
Patch0001: 0001-Switch-to-using-M2Crypto.patch
Patch0002: 0002-remove-pbr-runtime-dependency.patch
-Patch0003: 0003-Adjust-to-handle-parallel-installed-packages.patch
-Patch0004: 0004-Revert-Use-oslo.sphinx.patch
+Patch0003: 0003-Add-heat-keystone-setup-domain-script.patch
BuildArch: noarch
BuildRequires: git
BuildRequires: PyYAML
BuildRequires: m2crypto
BuildRequires: python-paramiko
-BuildRequires: python-sphinx10
+BuildRequires: python-sphinx >= 1.1.2
# These are required to build due to the requirements check added
-BuildRequires: python-paste-deploy1.5
-BuildRequires: python-routes1.12
-BuildRequires: python-sqlalchemy0.7
-BuildRequires: python-webob1.2
+BuildRequires: python-paste-deploy >= 1.5.0
+BuildRequires: python-routes >= 1.12
+BuildRequires: python-sqlalchemy >= 0.7.8
+BuildRequires: python-webob >= 1.2.3
BuildRequires: python-pbr
BuildRequires: python-d2to1
%patch0001 -p1
%patch0002 -p1
%patch0003 -p1
-%patch0004 -p1
sed -i s/REDHATHEATVERSION/%{version}/ heat/version.py
sed -i s/REDHATHEATRELEASE/%{release}/ heat/version.py
+# make doc build compatible with python-oslo-sphinx RPM
+sed -i 's/oslosphinx/oslo.sphinx/' doc/source/conf.py
+
# Remove the requirements file so that pbr hooks don't add it
# to distutils requires_dist config
rm -rf {test-,}requirements.txt tools/{pip,test}-requires
+# Remove tests in contrib
+find contrib -name tests -type d | xargs rm -r
# Programmatically update defaults in sample config
# which is installed at /etc/heat/heat.conf
%if 0%{?with_doc}
export PYTHONPATH="$( pwd ):$PYTHONPATH"
pushd doc
-sphinx-1.0-build -b html -d build/doctrees source build/html
-sphinx-1.0-build -b man -d build/doctrees source build/man
+sphinx-build -b html -d build/doctrees source build/html
+sphinx-build -b man -d build/doctrees source build/man
mkdir -p %{buildroot}%{_mandir}/man1
install -p -D -m 644 build/man/*.1 %{buildroot}%{_mandir}/man1/
%doc LICENSE
%{_bindir}/heat-manage
%{_bindir}/heat-keystone-setup
+%{_bindir}/heat-keystone-setup-domain
%{python_sitelib}/heat*
%attr(-, root, heat) %{_datadir}/heat/heat-dist.conf
%attr(-, root, heat) %{_datadir}/heat/api-paste-dist.ini
%changelog
+* Fri Jun 13 2014 Jeff Peeler <jpeeler@redhat.com> - 2014.1.1-2.1
+- added heat-keystone-setup-domain script
+
+* Tue Jun 10 2014 Jeff Peeler <jpeeler@redhat.com> - 2014.1.1-2.0
+- updated to 2014.1.1
+- removed patch to build against python-oslo-sphinx and put change in spec
+
+* Mon May 5 2014 Jeff Peeler <jpeeler@redhat.com> - 2014.1-1.1
+- Drop parallel packages
+
+* Tue Apr 22 2014 Jeff Peeler <jpeeler@redhat.com> - 2014.1-1.0
+- update to icehouse final
+
+* Mon Apr 14 2014 Jeff Peeler <jpeeler@redhat.com> - 2014.1-0.5.rc2
+- update to icehouse-rc2
+
+* Mon Apr 7 2014 Jeff Peeler <jpeeler@redhat.com> - 2014.1-0.5.rc1
+- update to icehouse-rc1
+
+* Thu Mar 6 2014 Jeff Peeler <jpeeler@redhat.com> - 2014.1-0.5.b3
+- update to icehouse-3
+
* Tue Feb 4 2014 Jeff Peeler <jpeeler@redhat.com> - 2014.1-0.5.b2
- fix heat-manage (rhbz 1060904)