[meta-virtualization] [mcs][PATCH] chef: remove the use of chef

Mark Asselstine mark.asselstine at windriver.com
Mon Jan 9 07:04:10 PST 2017


The use of chef was never complete, had isses with updating binary
database files and had a cumbersome implementation. Since we are using
Ansible in meta-overc we are dropping the use of chef here and will
look to being at par with meta-overc by using Ansible if/when we get
time to look at runtime configuration in meta-cloud-services.

Signed-off-by: Mark Asselstine <mark.asselstine at windriver.com>
---
 meta-openstack/Documentation/README.openstackchef  | 219 ------
 meta-openstack/classes/openstack-base.bbclass      |   2 +-
 meta-openstack/classes/openstackchef.bbclass       | 115 ---
 meta-openstack/classes/openstackchef_inc.bbclass   | 831 ---------------------
 .../recipes-devtools/python/python-barbican_git.bb |  12 +-
 .../python/python-ceilometer_git.bb                |  26 +-
 .../recipes-devtools/python/python-cinder_git.bb   |  12 +-
 .../recipes-devtools/python/python-glance_git.bb   |  34 +-
 .../recipes-devtools/python/python-heat_git.bb     |  35 +-
 .../recipes-devtools/python/python-horizon_git.bb  |   2 +-
 .../recipes-devtools/python/python-keystone_git.bb |  50 +-
 .../recipes-devtools/python/python-neutron_git.bb  |  28 +-
 .../recipes-devtools/python/python-nova_git.bb     |  56 +-
 .../recipes-devtools/python/python-swift_git.bb    |  51 +-
 .../cloud-init/cloud-init_0.7.6.bb                 |  14 +-
 .../glusterfs/glusterfs_3.4.2.bbappend             |   6 -
 .../rabbitmq/rabbitmq-server_3.2.4.bb              |   2 +-
 .../recipes-support/deploychef/deploychef_0.1.bb   | 100 ---
 .../deploychef/files/deploychef.init               |  26 -
 .../deploychef/files/run-deploychef                |  33 -
 .../deploychef/files/run-openstackchef             |  30 -
 .../postgresql/postgresql_9.%.bbappend             |  26 +-
 22 files changed, 136 insertions(+), 1574 deletions(-)
 delete mode 100644 meta-openstack/Documentation/README.openstackchef
 delete mode 100644 meta-openstack/classes/openstackchef.bbclass
 delete mode 100644 meta-openstack/classes/openstackchef_inc.bbclass
 delete mode 100644 meta-openstack/recipes-extended/glusterfs/glusterfs_3.4.2.bbappend
 delete mode 100644 meta-openstack/recipes-support/deploychef/deploychef_0.1.bb
 delete mode 100644 meta-openstack/recipes-support/deploychef/files/deploychef.init
 delete mode 100644 meta-openstack/recipes-support/deploychef/files/run-deploychef
 delete mode 100644 meta-openstack/recipes-support/deploychef/files/run-openstackchef

diff --git a/meta-openstack/Documentation/README.openstackchef b/meta-openstack/Documentation/README.openstackchef
deleted file mode 100644
index 7ddf23a..0000000
--- a/meta-openstack/Documentation/README.openstackchef
+++ /dev/null
@@ -1,219 +0,0 @@
-openstackchef.bbclass
-=========
-When an openstack image is built for a CONTROLLER, COMPUTE or allinone, 
-there are build-time variables that are hard-coded into the image. 
-These hardcoded variables need to be provided up front at 
-build time and cannot be changed easily at run-time. 
-What this means is that an image built for a specific deployment
-environment cannot be easily deployed to another environment.
-
-Openstackchef class enables openstack related services like, nova, postgresql, 
-neutron, etc to be re-configured at run-time. This means that if all the 
-services of an openstack installation inherits the openstackchef class,
-openstackchef can successfully re-configure an openstack installation. 
-
-For example, at build time, many of the openstack services need to know ahead of
-time, the IP address of the node on which CONTROLLER and COMPUTE will be deployed. 
-Once this IP address is built into the image, it cannot be changed at runtime. 
-In other words, if you build a CONTROLLER image for a machine with IP address 
-of 192.168.7.2, you cannot use that image on a machine with a different IP address.
-
-This is very restrictive, since it does not allow the re-use of CONTROLLER/COMPUTE 
-images.
-
-Openstackchef.bbclass facilitates the reuse of openstack images across multiple
-machines. It does this by providing a mechanism for openstack related services 
-to register all configuration files that have run-time dependent variables like IP 
-address in them.
-
-By inheriting openstackchef, and registering these configuration files
-with openstackchef, the services are no longer tied to a specific
-run-time environment. This is because, openstackchef makes it possible
-for the registered configuration files to be recreated at run-time when
-any of the environment variables changes.
-
-The configuration files are registered with openstackchef by assigning
-them to the variable CHEF_SERVICES_CONF_FILES in the recipe file.
-
-See example below for barbican:
-
-CHEF_SERVICES_CONF_FILES :="\
-    ${sysconfdir}/${SRCNAME}/vassals/barbican-api.ini \
-    ${sysconfdir}/${SRCNAME}/vassals/barbican-admin.ini \
-    "
-Openstackchef makes chef-solo templates out of
-the registered files. At run-time, the deploychef package
-makes a call to chef-solo, which in-turn use the template files
-to recreate the registered configuration files.
-
-Also see additional description in the openstackchef.bbclass header.
-
-In addition to the simple placeholder/value substitution that is 
-done by the openstackchef class when creating the templates, 
-there are times when recipes need to do morethan a simple placeholder 
-substitution. For cases like these, openstackchef provides a mechanism for 
-the recipes to provide a special callback function. Openstackchef class 
-then makes a call to this special callback function to do any additional substitution.
-
-The special shell callback function is registered with openstackchef by 
-assigning it to the variable CHEF_SERVICES_SPECIAL_FUNC.
-
-The python-neutron recipe defines a special function and specifies it
-as shown below.
-
-CHEF_SERVICES_SPECIAL_FUNC := "deploychef_services_special_func"
-
-Whenever the configuration files of any openstack service
-changes, the service usually needs to reload the configuration file. 
-The list of scripts/priority levels responsible for restarting 
-the service when its configuration files change are assumed to 
-be provided by the following variables:
-
-INITSCRIPT_PACKAGES
-INITSCRIPT_NAME_x or INITSCRIPT_NAME
-INITSCRIPT_PARAMS_x or INITSCRIPT_PARAMS
-
-Here is an example of how python-barbican specifies these variables.
-INITSCRIPT_PACKAGES = "${SRCNAME}"
-INITSCRIPT_NAME_${SRCNAME} = "barbican-api"
-INITSCRIPT_PARAMS_${SRCNAME} = "${OS_DEFAULT_INITSCRIPT_PARAMS}"
-
-In addition, there are services that might need to be restarted but does 
-not necessary have a configuration file. These services can also advertise 
-themselves to openstackchef with the above variables.
-
-However, failure to provide appropriate values for the above variables after 
-registering a set of configuration files for an openstack service will
-lead to the service not working properly.
-
-Dependencies
-------------
-This class depends on the deploychef package for run-time implementation of 
-the class. However, the end user does not have to do anything about this 
-dependency, because it's resolved at build time and all deploychef package
-files are automatically included on the rootfs of resulting image.
-Openstackchef class creates the template files used by the deploychef package 
-to reconfigure an openstack node.
-
-Deploychef executes chefsolo at run-time to recreate
-the configuration files for openstack services from template files
-created by openstackchef.bbclass at build time.
-Chefsolo in turn uses the attributes and templates files to overwrite
-the configuration files for services like neutron, nova, swift, etc..
-that had registered their configuration files with openstackchef class
-at build time.
-
-The base directory for the deploychef package is /opt/deploychef.
-There are many files that goes into the re-configuration of an 
-openstack deployment, however, two are worth mentioning.
-
-1 . Default variables in openstack and the values they hold can be found in: 
-
-/opt/deploychef/cookbooks/openstack/attributes/default.rb
-
-2. A shell script file that should be executed to reconfigure the stack 
-on CONTROLLER, COMPUTE or allinone nodes.
-
-/opt/deploychef/run-deploychef
-
-The script file above should be executed when any of the run-time environment
-variables found at /opt/deploychef/cookbooks/openstack/attributes/default.rb
-is changed. 
-
-Run-time
--------
-Allinone: An allinone node boots-up with openstack re-configured and all services
-accessible either through the command-line or through horizon.
-
-CONTROLLER & COMPUTE:
-Both CONTROLLER and COMPUTE nodes boots-up with their respective IP address  
-updated using the IP address on the interface of the machine on which they run.
-
-For the CONTROLLER, you should be able to access horizon at this point. However,
-both the CONTROLLER and COMPUTE are not aware of each other at this point.
-
-For them to be made aware of each other, we need to inform the COMPUTE node of 
-the location of the CONTROLLER node, similarly, we need to inform the CONTROLLER
-node about the location of the COMPUTE node. 
-
-In order to accomplish this on each node, edit IP address field in the file
-
-/opt/deploychef/cookbooks/openstack/attributes/default.rb
-
-On the CONTROLLER node, change COMPUTE's IP address to the IP address 
-of the machine on which you have openstack COMPUTE deployed.
-
-Assuming COMPUTE's IP address was set to "192.168.7.4" at build-time and the
-current IP address of the machine on which you have COMPUTE deployed is
-"128.224.149.164". Then the line 
-
-default["COMPUTE_IP"] = "192.168.7.4"
-
-should be changed to
-
-default["COMPUTE_IP"] = "128.224.149.164"
-
-
-Now cd into the base directory of deploychef and execute the script
-'run-deploychef'.
-
-cd /opt/deploychef
-./run-deploychef
-
-Note: It's important that you 'cd' into /opt/deploychef when running
-run-deploychef script, because this script makes a call to chefsolo which 
-references files from /opt/depoychef base directory.
-
-Wait for the script to finish executing and you are shown the prompt.
-
-In a similar vein, repeat the above process on the COMPUTE node, but this 
-time, it's the CONTROLLER's IP address you will be changing. Leave the COMPUTE's 
-IP address as is.
-Assuming CONTROLLER's IP address was set to "192.168.7.2" at build-time and the
-current IP address of the machine on which you have CONTROLLER deployed is
-"128.224.149.162". Then the line 
-
-default["CONTROLLER_IP"] = "192.168.7.2"
-
-should be changed to
-
-default["CONTROLLER_IP"] = "128.224.149.162"
-
-
-Again 'cd' into the base directory of deploychef and execut the script
-'run-deploychef'.
-
-cd /opt/deploychef
-./run-deploychef
-
-
-At this point, both COMPUTE and CONTROLLER have been configured and should be 
-communicating with one another.
-
-Maintenance
------------
-This class is maintained by Wind River Systems, Inc.
-Contact <support at windriver.com> or your support representative for more
-information on submitting changes.
-
-
-Building with openstack.bbclass
--------------------------
-This class should be inherited by recipe/class files of openstack services in order 
-for the functionality described above to work. 
-If any component of openstack is left out, that component will
-not work correctly when the stack is reconfigured at run-time, and as a result,
-the openstack deployment will not work.
-
-
-License
--------
-Copyright (C) 2014 Wind River Systems, Inc.
-
-The right to copy, distribute or otherwise make use of this software may
-be licensed only pursuant to the terms of an applicable Wind River license
-agreement.  No license to Wind River intellectual properly rights is granted
-herein.  All rights not licensed by Wind River are reserved by Wind River.
-
-Source code included in tree is under the LICENSE
-stated in class file (.bbclass file) unless other stated.
diff --git a/meta-openstack/classes/openstack-base.bbclass b/meta-openstack/classes/openstack-base.bbclass
index 718aa1c..05dfdf1 100644
--- a/meta-openstack/classes/openstack-base.bbclass
+++ b/meta-openstack/classes/openstack-base.bbclass
@@ -1,4 +1,4 @@
-inherit hosts openstackchef
+inherit hosts
 
 ROOTFS_POSTPROCESS_COMMAND += "openstack_configure_hosts ; "
 
diff --git a/meta-openstack/classes/openstackchef.bbclass b/meta-openstack/classes/openstackchef.bbclass
deleted file mode 100644
index c2e4a40..0000000
--- a/meta-openstack/classes/openstackchef.bbclass
+++ /dev/null
@@ -1,115 +0,0 @@
-# openstackchef.bbclass
-# Copyright (c) 2014 Wind River Systems, Inc.
-# 
-# Permission is hereby granted, free of charge, to any person obtaining a copy
-# of this software and associated documentation files (the "Software"), to
-# deal
-# in the Software without restriction, including without limitation the rights
-# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-# copies of the Software, and to permit persons to whom the Software is
-# furnished to do so, subject to the following conditions:
-# 
-# The above copyright notice and this permission notice shall be included in
-# all copies or substantial portions of the Software.
-#
-# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
-# FROM,
-# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-# THE SOFTWARE.
-# 
-#
-# This class provides a framework for openstack services like python-neutron
-# or python-nova to register their configuration files so that they can be
-# recreated at run-time by chef-solo. Inheriting 
-# this class involves exposing configuration files from which this class
-# creates chef-solo templates. These template files are later used by chef-solo 
-# to  recreate the configuration files.
-#
-# For the templates files to be created, the recipes are expected 
-# to define the following variables variables:
-# 
-# SRCNAME: 
-# This is the name of the package, neutron for example for the package
-# python-neutron. It's appended to the names of template files and also
-# used in the creation of package based temporary files. A default value 
-# of ${BPN} is assigned to this variable when it's not defined by recipes
-# inheriting class.
-# 
-# CHEF_SERVICES_CONF_FILES
-#
-# This variable provides the list of configuration files 
-# exposed to this class by the recipes inheriting the class. 
-# These files are expected to be in the image( ${D}) directory, though ${D} 
-# directory is excluded from the file name. Definition of this variable
-# by recipe files is optional.
-# eg. 
-# CHEF_SERVICES_CONF_FILES="\
-#   ${sysconfdir}/chef/neutron/plugins/linuxbridge/linuxbridge_conf.ini.rb \
-#   ${sysconfdir}/chef/neutron/neutron.conf
-#   "
-#
-#INITSCRIPT_PACKAGES
-#This variable provides a mechanism for recipes inheriting this class
-#to provide a list of services to start/stop when their configuration files
-#are recreated on disk.
-#This variable is assumed to be provided by all recipes that register a set
-#of configuration files with this class. Failing to do so will lead to
-#service not reloading the newly created configuration file(s) at run-time.
-#
-# 
-#INITSCRIPT_NAME_x or INITSCRIPT_NAME
-#This variable is also assumed to be set by recipes inheriting this class. 
-#It specifies the names of the services to start/stop as specified above. 
-#Like the variable immediately above, failure to provide this variable will
-#lead to mis-configuration of the service at run-time.
-#
-#
-#INITSCRIPT_PARAMS_x or INITSCRIPT_PARAMS
-#Like the last two variable above, this variable is also assumed to be set
-#by recipes inheriting this class. It is used to extract the run-level
-#priority of the INITSCRIPT_NAME variable(s). Unlike, the previous two 
-#variables, a default run-level is assigned to the script when this variable
-#defaults to the string 'default' 
-#
-#
-# CHEF_SERVICES_SPECIAL_FUNC
-# This variable is optional, and is the name of a shell callback function. 
-# Unlike the placeholder/value substitution which this class does,
-# there are times when recipes need to do more than a simple placeholder/
-# value substitution. This is made possible with the use of the callback
-# function.
-# The callback function should be defined by the recipe(s) inheriting
-# this class. When this variable is defined, this class will call the 
-# callback function and pass it the name of the file to manipulate
-# in the form of the variable CHEF_SERVICES_FILE_NAME. This variable 
-# is then accessed in the callback function in the recipe file as
-# ${CHEF_SERVICES_FILE_NAME}
-#
-inherit hosts openstackchef_inc
-
-#Call this function after the do_install function have executed in 
-#recipes inheriting this class, this ensures that we get configuration
-#files that have been moved to the images directory
-addtask deploychef_install before do_package after do_install
-python do_deploychef_install() { 
-    if deploychef_not_rootfs_class(d) and \
-        deploychef_openstackchef_enabled(d):
-        #copy configuration files from packages inheriting class
-        template_files_tuple = deploychef_copy_conf_files(d)
-        #convert configuration files into templates for chefsolo
-        deploychef_make_templates( d, template_files_tuple)
-        #Generate a list of startup/shutdown services
-        deploychef_make_startup_shutdown_list(d)
-}
-
-#Use of ROOTFS_POSTPROCESS_COMMAND enables us to hook into the post 
-#rootfs creation process and influence the work of openstack_configure_hosts.
-#However, to ensure that our function deploychef_rootfs_postprocess_commands 
-#is called after openstack_configure_hosts and not before it,
-#we add it in front of our callback function here.
-ROOTFS_POSTPROCESS_COMMAND += "openstack_configure_hosts ; deploychef_rootfs_postprocess_commands ; "
-
diff --git a/meta-openstack/classes/openstackchef_inc.bbclass b/meta-openstack/classes/openstackchef_inc.bbclass
deleted file mode 100644
index 91adb41..0000000
--- a/meta-openstack/classes/openstackchef_inc.bbclass
+++ /dev/null
@@ -1,831 +0,0 @@
-# openstackchef_inc.bbclass
-# Copyright (c) 2014 Wind River Systems, Inc.
-#
-# Permission is hereby granted, free of charge, to any person obtaining a copy
-# of this software and associated documentation files (the "Software"), to
-# deal
-# in the Software without restriction, including without limitation the rights
-# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-# copies of the Software, and to permit persons to whom the Software is
-# furnished to do so, subject to the following conditions:
-#
-# The above copyright notice and this permission notice shall be included in
-# all copies or substantial portions of the Software.
-#
-# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-# FITNESS FOR A PARTICULAR PURPOSE AND NONE INFRINGEMENT. IN NO EVENT SHALL THE
-# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
-# FROM,
-# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-# THE SOFTWARE.
-#
-#
-#This class is a helper class for openstackchef.bbclass and should not be be
-#inherited on it's own. It implements the functionalities used in 
-#openstackchef.bbclass
-CHEFPN = "openstackchef"
-#This variable is here to support legacy use of recipes that inherit this
-#class. By default these recipes will be built without openstackchef support.
-#Set this variable to 'yes' in your local.conf or similar to enable
-#support for OPENSTACKCHEF.
-OPENSTACKCHEF_ENABLED ?=''
-#This variable is defined in most of the openstack services, however,
-#it defaults to bare package name for packages that do not define it.
-SRCNAME ?= "${BPN}"
-#This is the base directory of where deploychef's templates files
-#reside in the classes that inherit it.
-CHEF_TEMPLATE_BASE="${D}${sysconfdir}/${CHEFPN}"
-CHEF_PACKAGE_BASE="${WORKDIR}/package${sysconfdir}/${CHEFPN}"
-CHEF_IMAGE_BASE="${D}${sysconfdir}"
-CHEF_ROOTFS_BASE="${sysconfdir}/${CHEFPN}"
-#These are the prefixs and suffixs to create chefsolo-like placeholders
-ERB_PREFIX = "<%=node[:"
-ERB_SUFFIX = "]%>"
-#These prefix and suffix are used to create our default values
-ERB_DEFAULT_PREFIX="default["
-ERB_DEFAULT_SUFFIX="]"
-#Chefsolo template file extension
-TEMPLATE_EXTENSION='.erb'
-#Build deploychef package since this class has run-time and buil-time dependency 
-#on it
-DEPENDS_${PN} += "${@bb.utils.contains('DISTRO_FEATURES', 'chef', 'deploychef', '', d)}"
-RDEPENDS_${PN} += "${@bb.utils.contains('DISTRO_FEATURES', 'chef', 'deploychef', '', d)}"
-CHEF_VERSION = '1'
-#For classes that define a special substitution function, this variable is 
-#set by this class and specifies the file named passed back to these function
-#for any special substitution.
-CHEF_SERVICES_FILE_NAME ?=''
-
-#These are hard coded in the recipes files where they are used. 
-ADMIN_TENANT_NAME ?= 'admin'
-DEMO_USER ?= 'demo'
-#This is dafault value used by update-rc.d script at runtime when
-#build-time update-rd.d class specifies INITSCRIPT_PARAMS as 'defaults' 
-CHEF_INITSCRIPT_PARAMS='defaults 20 10'
-
-def deploychef_services_default_sub_dict(d):
-    """Provides our placeholder/value substitution dictionary for global use
-    
-    This function returns as dictionary containing the default substitution pattern
-    as follows:
-    :<key>: Name of placeholder variable
-    :<value>: A tuple consisting  of the place holder variable followed 
-    by its default value
-    """
-    sub_dict={}
-    #neutron
-    sub_dict['SERVICE_TENANT_NAME'] = ('%SERVICE_TENANT_NAME%' ,
-    '${SERVICE_TENANT_NAME}') 
-    sub_dict['SERVICE_PASSWORD'] = ('%SERVICE_PASSWORD%' , '${SERVICE_PASSWORD}')
-
-    sub_dict['DB_USER'] = ('%DB_USER%', '${DB_USER}')
-    sub_dict['DB_PASSWORD'] = ('%DB_PASSWORD%' , '${DB_PASSWORD}')
-    sub_dict['CONTROLLER_IP'] = ('%CONTROLLER_IP%', '${CONTROLLER_IP}')
-    sub_dict['CONTROLLER_HOST'] = ('%CONTROLLER_HOST%', '${CONTROLLER_HOST}')
-    #nova
-    sub_dict['COMPUTE_IP'] = ('%COMPUTE_IP%', '${COMPUTE_IP}')
-    sub_dict['COMPUTE_HOST'] = ('%COMPUTE_HOST%', '${COMPUTE_HOST}')
-    sub_dict['LIBVIRT_IMAGES_TYPE'] = ('%LIBVIRT_IMAGES_TYPE%' , '${LIBVIRT_IMAGES_TYPE}')
-    sub_dict['OS_PASSWORD'] = ('%OS_PASSWORD%' , '${ADMIN_PASSWORD}')
-    sub_dict['SERVICE_TOKEN'] = ('%SERVICE_TOKEN%' , '${SERVICE_TOKEN}')
-    #swfit
-    sub_dict['ADMIN_TENANT_NAME'] = ('%ADMIN_TENANT_NAME%' , '${ADMIN_TENANT_NAME}')
-    sub_dict['ADMIN_USER'] = ('%ADMIN_USER%' , '${ADMIN_TENANT_NAME}')
-    sub_dict['ADMIN_PASSWORD'] = ('%ADMIN_PASSWORD%' , '${ADMIN_PASSWORD}')
-    sub_dict['DEMO_USER'] = ('%DEMO_USER%' , '${DEMO_USER}')
-    sub_dict['DEMO_PASSWORD'] = ('%DEMO_PASSWORD%' , '${ADMIN_PASSWORD}')
-    #ceilometer
-    sub_dict['CEILOMETER_SECRET'] = ('%CEILOMETER_SECRET%' , '${CEILOMETER_SECRET}')
-
-    #keystone
-    sub_dict['TOKEN_FORMAT'] = ('%TOKEN_FORMAT%' , '${TOKEN_FORMAT}')
-    sub_dict['METADATA_SHARED_SECRET'] = ('%METADATA_SHARED_SECRET%' , '${METADATA_SHARED_SECRET}')
-    #cinder
-    sub_dict['CINDER_BACKUP_BACKEND_DRIVER'] = ('%CINDER_BACKUP_BACKEND_DRIVER%' , '${CINDER_BACKUP_BACKEND_DRIVER}')
-    #cloud-init
-    sub_dict['MANAGE_HOSTS'] = ('%MANAGE_HOSTS%' , '${MANAGE_HOSTS}')
-    sub_dict['HOSTNAME'] = ('%HOSTNAME%' , '${MY_HOST}')
-    #postgresql
-    sub_dict['DB_DATADIR'] = ('%DB_DATADIR%' , '${DB_DATADIR}')
-    #glance
-    sub_dict['GLANCE_DEFAULT_STORE'] = ('%GLANCE_DEFAULT_STORE%' , '${GLANCE_DEFAULT_STORE}')
-    
-    #barbican
-    sub_dict['BARBICAN_MAX_PACKET_SIZE'] = ('%BARBICAN_MAX_PACKET_SIZE%' , '${BARBICAN_MAX_PACKET_SIZE}')
-    #ceph
-    sub_dict['PUBLIC_IP'] = ('%PUBLIC_IP%' , '${CONTROLLER_IP}')
-    sub_dict['PRIVATE_IP'] = ('%PRIVATE_IP%' , '${MY_IP}')
-    sub_dict['PUBLIC_DOMAIN'] = ('%PUBLIC_DOMAIN%' , '${PUBLIC_DOMAIN}')
-    sub_dict['HOST_NAME'] = ('%HOST_NAME%' , '${MY_HOST}')
-    sub_dict['CEPH_BACKING_FILE_SIZE'] = ('%CEPH_BACKING_FILE_SIZE%' , '${CEPH_BACKING_FILE_SIZE}')
-
-    #Most of the services have SERVICE_USER define but the values are different
-    service_user = d.getVar('SRCNAME', True)
-    if service_user:
-        service_user = service_user.upper() + '_SERVICE_USER'
-        sub_dict[service_user] = ('%SERVICE_USER%' , '${SRCNAME}')
-    return sub_dict
-
-#This variable is the default sets of substitutions common to most of the
-#services in an openstack installation. It means this package is not completely
-#agnostic but at the same time it gives us the added advantage of not repeating 
-#ourselves in the recipe/class files that inherits this class.
-CHEF_SERVICES_DEFAULT_CONF_SUBS := "${@deploychef_services_default_sub_dict(d)}"
-
-
-def deploychef_not_rootfs_class(d):
-    """Filter out rootfs related classes
-
-    This function is used to help us selectively executes the creation of template 
-    files and daemon start/stop list. It allows us to executes certain functions 
-    when the recipe inheriting this class is related to rootfs creation.
-    """
-    pkg = d.getVar('PN', True) or d.getVar('BPN', True)
-    #Skip test if recipe/class calling this class is related to rootfs image
-    #creation.
-    if 'image-' in pkg:
-        return False
-    else:
-        return True
-
-def deploychef_openstackchef_enabled(d):
-    """Find out if openstackchef class usage is enabled
-
-    The variable OPENSTACKCHEF_ENABLED is use to support legacy functionality
-    by recipes inheriting this class. Assinging it an empty string disables 
-    the functionality of this class for that recipe file. 
-    This function helps us detect when this variable is set to an empty string.
-    """
-    chef = d.getVar('OPENSTACKCHEF_ENABLED', True) 
-    #Skip test if recipe/class calling this class is related to rootfs image
-    #creation.
-    if chef != '' :
-        return True
-    else:
-        return False
-
-def deploychef_make_startup_shutdown_list(d):
-    """Create list of services to start/stop and save them to file
-
-    This function uses the update-rc.d environment variables defined
-    in the recipes/classes inheriting this class to create the 
-    startup and shutdown services list as defined in the file. 
-    This is important because, when we are replacing the configuration 
-    files for the services, the services needs to be shutdown and 
-    restarted after their configuration files are edited.
-    Therefore, the following variables must be defined by classes inheriting 
-    this class.
-
-    INITSCRIPT_PACKAGES: A list of init scripts
-    INITSCRIPT_PARAMS_x: The default start/stop priority for the above scripts
-    """
-
-    import os
-    if d.getVar('INITSCRIPT_PACKAGES') or d.getVar('INITSCRIPT_NAME'):
-        #script_list = d.getVar('INITSCRIPT_PACKAGES', 1)
-        script_list = d.getVar('INITSCRIPT_PACKAGES', True) or \ 
-         d.getVar('INITSCRIPT_NAME', True)  #Some package do not define INITSCRIPT_PACKAGES
-        msg="list of start/stop services: %s" % str(script_list)
-        bb.debug(2, msg)
-        base_dir = d.getVar('CHEF_TEMPLATE_BASE', 1 )
-        if not os.path.exists(base_dir):
-            os.mkdir(base_dir)
-        startup_file = os.path.join(base_dir, d.getVar('SRCNAME', True) +'-startup-list')
-        shutdown_file = os.path.join(base_dir, d.getVar('SRCNAME', True) +'-shutdown-list')
-        msg ="Startup and shutdown files %s %s saved to %s" % \
-        ( startup_file, shutdown_file, base_dir)
-        bb.note(msg)
-        try:
-            hStartup = open(startup_file, 'w')
-            hShutdown = open(shutdown_file, 'w')
-            for script_name in script_list.split():
-                #Retrieve the default params for update-rc.d for this script
-                #INITSCRIPT_PARAMS_nova-api="defaults 30 10"
-                init_script_name ="INITSCRIPT_NAME_%s" % script_name
-                init_script_name = d.getVar(init_script_name, True) or \
-                d.getVar('INITSCRIPT_NAME', True)
-
-                script_params ="INITSCRIPT_PARAMS_%s" % script_name
-                script_params = d.getVar(script_params, True) or \
-                d.getVar('INITSCRIPT_PARAMS', True)
-                #If only defaults is provided as parameter, then use our default  priority
-                if not script_params  or len(script_params.split()) < 3: 
-                    script_params = d.getVar('CHEF_INITSCRIPT_PARAMS', True)
-                if init_script_name: 
-                    #eg. start 20 5 3 2 . stop 80 0 1 6 .
-                    startup_priority = shutdown_priority = ''
-                    if script_params.find('stop') > 0:
-                        start, stop = script_params.split('stop')
-                        start = start.split()
-                        stop = stop.split()
-                        startup_priority = start[1]
-                        shutdown_priority = stop[0]
-                    elif script_params.find('stop') == 0:
-                        start, stop = script_params.split('start')
-                        start = start.split()
-                        stop = stop.split()
-                        startup_priority = start[0]
-                        shutdown_priority = stop[1]
-                    else:
-                        #"defaults 20 10" 
-                        defaults = script_params.split()
-                        startup_priority = defaults[1]
-                        shutdown_priority = defaults[2]
-                    #Arrange the script's startup/shutdown format as in rc.x
-                    startup_string = "%s%s%s%s" %  ('S', startup_priority, init_script_name, os.linesep)
-                    shutdown_string = "%s%s%s%s" % ('K', shutdown_priority, init_script_name, os.linesep)
-                    hStartup.write(startup_string)
-                    hShutdown.write(shutdown_string)
-                    msg = "%s %s registered for startup and shutdown in" % \
-                    (startup_string, shutdown_string)
-                    bb.debug(2 , msg)
-                else:
-                    msg = "The variables INITSCRIPT_PARAMS_%s or INITSCRIPT_PARAMS \ 
-                    are not set in %s, startup/shutdown list not created for %s: %s" \
-                    % (script_name, d.getVar('FILE', True), d.getVar('SRCNAME', True), script_params)
-                    raise bb.build.FuncFailed(msg)
-            hStartup.close()
-            hShutdown.close()
-        except IOError as e:
-            bb.error("Error opening startup/shutdown files %s %s,  %s %s" % \
-            (startup_file, shutdown_file, d.getVar('FILE'), e))
-    else:
-        msg = "The variable INITSCRIPT_PACKAGES is not set in %s,  \
-        startup/shutdown script will not be made for %s package" % \
-        (d.getVar('FILE', True), d.getVar('SRCNAME', True))
-        bb.build.FuncFailed(msg)
-
-def deploychef_make_substitutions(d, sub_dict, attr_filename, sed_filename):
-    """Make placeholder/value substitution in a file
-    
-    This function makes placeholder substitution into the file named 
-    sed_filename and appends the default value for those substitution into
-    the file named attr_filename.
-    The substitution is based on sets of placeholder/value pair in the 
-    dictionary called sub_dict.
-    :sub_dict: name, placeholder and value dictionary
-    :attr_filename: chef-solo attributes file name
-    :sed_filename: configuration or template file
-    """
-    if attr_filename and sed_filename:
-        if type(sub_dict) is dict:
-            import os
-            import re
-            sHandle = open(sed_filename, 'r+')
-            lines_in_conf_file = sHandle.read()
-            #We only want to append to the list of defines needed by this class
-            hFile= open(attr_filename,'a+')
-            lines_in_file= hFile.read()
-            for key in sub_dict.keys():
-                placeholder , replacement = sub_dict[key]
-                #Filter by placeholder so that our attribute file only include
-                #defines for class being built 
-                if re.search(placeholder,lines_in_conf_file):
-                    #Make the substitution to create a template file out of
-                    #the configuration file or just replace placeholder in
-                    #configuration file
-                    if d.getVar('TEMPLATE_EXTENSION', True) in sed_filename:
-                        #Format the default attributes as expected by chefsolo
-                        #for template file.
-                        attr_string = d.getVar('ERB_DEFAULT_PREFIX', True)
-                        attr_string += r'"' + key
-                        attr_string += r'"' + d.getVar('ERB_DEFAULT_SUFFIX', True)
-                        attr_string +=' = ' + r'"' + replacement + r'"'
-                        #Only write default values that do not yet exist in file
-                        #if key not in lines_in_file:
-                        if not re.search(key,lines_in_file):
-                            hFile.write("%s%s" % (attr_string, os.linesep))
-                        #Replace the placeholders in the current file, with
-                        #new_replacement
-                        new_replacement = d.getVar('ERB_PREFIX') + key
-                        new_replacement += d.getVar('ERB_SUFFIX')
-                        lines_in_conf_file = re.sub(placeholder, new_replacement, lines_in_conf_file)
-            #Write template file to disk
-            sHandle.seek(0)
-            sHandle.truncate()
-            sHandle.write(lines_in_conf_file)
-            sHandle.close()
-            
-            hFile.close()
-            if False:
-                msg = "Cannot read/write to attributes file %s as expected:%s"\
-                % (attr_filename, d.getVar('FILE'))
-                bb.build.FuncFailed(msg)
-        else:
-            msg = "The substitution dictionary variable sub_dict is not set  %s as expected "\
-            % d.getVar('FILE')
-            bb.error(msg)
-    else:
-        msg = "Null file names passsed to function %s %s "\
-        % (d.getVar('FUNC'), d.getVar('FILE'))
-        bb.error(msg)
-
-
-
-def deploychef_make_templates( d, conf_tuple=tuple()):
-    """Create a template file out of a configuration file
-
-    Using substitution placeholders and values in the substitution
-    dictionary declared as CHEF_SERVICES_DEFAULT_CONF_SUBS, this function
-    makes the substitution for all placeholders. If the file is a ruby template file, 
-    it replaces the placeholders with a chefsolo expression; 
-    thereby creating a chefsolo template file.
-    
-    :conf_tuple: List of configuration files
-    """
-
-    if len(conf_tuple):
-        import os, ast
-        base_dir = d.getVar('CHEF_TEMPLATE_BASE', 1 )
-        attr_file = os.path.join(base_dir, d.getVar('SRCNAME', True) + '-attributes.rb')
-        msg ="Default attributes saved to %s" % attr_file
-        if os.path.exists(attr_file):
-            os.remove(attr_file)
-        bb.note(msg)
-        try:
-            for file_name in conf_tuple:
-                #If a special substitution function is defined for class 
-                #inheriting this class, set the file name expected by special
-                #function before calling the function 
-                special_func_name = d.getVar('CHEF_SERVICES_SPECIAL_FUNC')
-                if special_func_name:
-                    bb.data.setVar('CHEF_SERVICES_FILE_NAME', file_name,\
-                    d)
-                    bb.build.exec_func(special_func_name, d)
-                
-                #Make the necessary susbstitutions using the default
-                #substitutiin dictionary
-                sub_dict = d.getVar('CHEF_SERVICES_DEFAULT_CONF_SUBS', 1)
-                msg = "The variable %s is not set in %s as a dictionary as expected "\
-                % ('CHEF_SERVICES_DEFAULT_CONF_SUBS', d.getVar('FILE'))
-                if sub_dict:
-                    #Safely retrieve our python data structure
-                    sub_dict = ast.literal_eval(sub_dict)
-                    if type(sub_dict) is dict:
-                        deploychef_make_substitutions(d, sub_dict, attr_file, file_name)
-                    else:
-                        raise bb.build.FuncFailed(msg)
-                else:
-                    raise bb.build.FuncFailed(msg)
-                #Make the necessary susbstitutions using auxilliary dictionary
-                #if provided by inheriting class
-                sub_dict = d.getVar('CHEF_SERVICES_CONF_SUBS', 1)
-                if sub_dict:
-                    sub_dict = ast.literal_eval(sub_dict)
-                    msg = "The variable %s is not set in %s as a dictionary as expected "\
-                    % ('CHEF_SERVICES_CONF_SUB', d.getVar('FILE'))
-                    if type(sub_dict) is dict:
-                        pass
-                        deploychef_make_substitutions(d, sub_dict, attr_file, file_name)
-                    else:
-                        bb.build.FuncFailed(msg)
-        except IOError as e:
-            bb.error("Could not write to attribute file %s: in %s,  %s" % \
-            (attr_file, d.getVar('FILE'), e))
-
-def deploychef_copy_single_conf_file(d, dst_base, conf_file):
-    """Create a chef-solo template from an openstack configuration file
-
-    This function copies a single configuration file (conf_file)
-    to destination directory (dst_dir) and return a tuple that contains
-    both the absolute path of the conf_file and the template files it was
-    copied as.
-    """
-    if conf_file: 
-        import shutil
-        import os
-        #Create the absolute path to configuration file since it's with relative
-        #to image directory
-        image_base = d.getVar('D', True)
-        if conf_file.startswith(os.sep):
-            conf_file=conf_file[1:]
-        abs_conf_path = os.path.join(image_base, conf_file)
-        
-        if os.path.exists(abs_conf_path):
-            dst_base = os.path.join(dst_base, os.path.dirname(conf_file))
-            #make room for the template file about to be created
-            if not os.path.exists(dst_base):
-                os.makedirs(dst_base)
-
-            abs_template_file = os.path.basename(conf_file) + \
-            d.getVar('TEMPLATE_EXTENSION', True) + '.' + d.getVar('SRCNAME', True)
-            abs_template_file = os.path.join(dst_base, abs_template_file)
-            #Copy conf file as template file
-            shutil.copy(abs_conf_path, abs_template_file)
-            msg = "\nConf file: %s\n Copied to: %s \n"\
-            % (abs_conf_path, abs_template_file)
-            bb.debug(2, msg)
-            return (abs_conf_path, abs_template_file)
-        else:
-            msg = "Configuration file: %s in %s does not \
-            exist" % (abs_conf_path, d.getVar('FILE'))
-            raise bb.build.FuncFailed(msg)
-    else:
-        msg = "The specified configuration file destined for %s in %s is an empty string\n" \
-        % (dst_base, d.getVar('FILE'))
-        raise bb.build.FuncFailed(msg)
-
-
-    
-def deploychef_copy_conf_files(d): 
-    """Copy openstack services' configuration files to be used as chef-solo templates
-
-    Copy the configuration file(s) for the services under 
-    ${D}${sysconfdir}/${CHEFPN}/<conf_file>. 
-    The file(s) is/are assumed to be located in the images directory; ${D}<conf_file>
-    And evaluate all necessary substitution in the configuration file.
-    """
-    abs_template_list = list()
-    abs_conf_list = list()
-
-    #Retrieve our string of configuration files
-    conf_files = d.getVar('CHEF_SERVICES_CONF_FILES', True )
-    #The template files that will be made from the configuration files will be
-    #copied with reference to this base directory.
-    dst_base = d.getVar('CHEF_TEMPLATE_BASE', True ) 
-    if conf_files and len(conf_files.strip()):
-        conf_files = conf_files.split()
-        if len(conf_files) != 1:
-            for conf_file in conf_files:
-                abs_conf_path, abs_template_path = deploychef_copy_single_conf_file(d, \
-                dst_base, conf_file)
-                if abs_template_path:
-                    #Save the absolute path to the template file 
-                    abs_template_list.append(abs_template_path)
-                if abs_conf_path:
-                    #Save the absolute path to the configuration file
-                    abs_conf_list.append(abs_conf_path)
-        else:
-            abs_conf_path, abs_template_path = deploychef_copy_single_conf_file(d,\
-            dst_base, conf_files[0])
-            if abs_template_path:
-                #Save the absolute path to the template file 
-                abs_template_list.append(abs_template_path)
-            if abs_conf_path:
-                #Save the absolute path to the template file 
-                abs_conf_list.append(abs_conf_path)
-        #Since the recipes no longer do the substitution in the
-        #configuration files, let us do it for the configuration files
-        deploychef_make_templates(d, tuple(abs_conf_list))
-    else:
-        msg = "The variable CHEF_SERVICES_CONF_FILES is not set"
-        msg += " in %s as a list of files as expected" % d.getVar('FILE', True) 
-        #raise bb.build.FuncFailed(msg)
-        #No longer a requirement that all recipes inheriting this 
-        #class must have a set of configuration files.
-        bb.debug(2,msg)
-    return tuple(abs_template_list)
-
-def deploychef_postinst_substitutions(d, sub_dict, postinst):
-    """Make value substitution in openstack services' postinstall scripts
-
-    This function makes all necessary substitution in the 'setup' related postinsts 
-    functions pgk_postinst_${PN}-setup. The substitution is base on entries in a 
-    dictionary sub_dict. In addition it also updates the list of defined constansts 
-    based on the values specified in dictionary or as specified by the recipe's 
-    callback function.
-    
-    :sub_dict: name, placeholder and value substitution dictionary
-    :postinst: content of an openstack service's postinstall script
-
-    """
-    if postinst:
-        if type(sub_dict) is dict:
-            import re
-            base_dir = d.getVar('CHEF_PACKAGE_BASE', True)
-            attr_filename = os.path.join(base_dir, d.getVar('SRCNAME', True) + '-attributes.rb')
-            if os.path.exists(attr_filename):
-                hFile= open(attr_filename,'a+')
-                lines_in_file= hFile.read()
-                for key in sub_dict.keys():
-                    placeholder , replacement = sub_dict[key]
-                    if replacement and ( re.search(placeholder, postinst) or \
-                        re.search(replacement, postinst)):
-                        #If there is any remaining placeholder in the current string
-                        #replace it.
-                        new_replacement = d.getVar('ERB_PREFIX') + key
-                        new_replacement += d.getVar('ERB_SUFFIX')
-                        
-                        updated_postinst = re.sub(placeholder, new_replacement, postinst)
-                        #If the placeholder has been substituted, look for the
-                        #substitution and replace it with our template value
-                        updated_postinst = re.sub(replacement, new_replacement, updated_postinst)
-                        #Update our attributes file with the updated replacement
-                        #string
-                        attr_string = d.getVar('ERB_DEFAULT_PREFIX', True)
-                        attr_string += r'"' + key
-                        attr_string += r'"' + d.getVar('ERB_DEFAULT_SUFFIX', True)
-                        attr_string +=' = ' + r'"' + replacement + r'"'
-                        #Only write default values that do not yet exist in file
-                        #if key not in lines_in_file:
-                        if not re.search(key,lines_in_file):
-                            hFile.write("%s%s" % (attr_string, os.linesep))
-
-                        postinst_msg= "placeholder %s \n replacement %s \n updated_postinst :\n  %s \n" % \
-                        (placeholder, replacement, updated_postinst)
-                        bb.debug(2, postinst_msg)
-                        postinst = updated_postinst
-                hFile.close()
-        else:
-            msg = "The substitution dictionary variable sub_dict is not set  %s as expected "\
-            % d.getVar('FILE')
-            bb.build.FuncFailed(msg)
-    else:
-        msg = "Null string passsed to function %s %s "\
-        % (d.getVar('FUNC'), d.getVar('FILE'))
-        bb.build.FuncFailed(msg)
-    return postinst
-
-def deploychef_update_package_postinsts(d):
-    """Make placeholder/value substitution in openstack postinstall scripts
-
-    This function searches all the 'setup' related post-install scripts for 
-    references to placeholders of interest; such as %CONTROLLER_IP%.
-    It replaces any such reference when it does find one with a placeholder
-    (<%=node[:CONTROLLER_IP]%>); that essentially converts the post-install 
-    script to a chefsolo template.
-    """
-    def update_postinst_package(pkg):
-        bb.debug(1, 'Updating placeholders in postinst for pkg_postinst_%s scripts' % pkg)
-        
-        ldata = bb.data.createCopy(d)
-        overrides = ldata.getVar("OVERRIDES", True)
-        
-        msg = "%s The override variable is %s" % (pkg, overrides)
-        bb.note(msg)
-        ldata.setVar("OVERRIDES", "%s:%s" % (pkg, overrides))
-        
-        bb.data.update_data(ldata)
-        postinst = ldata.getVar('pkg_postinst', True)
-        if postinst:
-            #Make the necessary substitutions using the default
-            #substitution dictionary
-            overrides = d.getVar("OVERRIDES", True)
-            msg = "%s The override variable is %s :\n %s " % (pkg, overrides, postinst)
-            bb.note(msg)
-            sub_dict = d.getVar('CHEF_SERVICES_DEFAULT_CONF_SUBS', 1)
-            msg = "The variable %s is not set in %s as a dictionary as expected "\
-            % ('CHEF_SERVICES_DEFAULT_CONF_SUBS', d.getVar('FILE'))
-            if sub_dict:
-                import ast
-                #Safely retrieve our python data structure
-                sub_dict = ast.literal_eval(sub_dict)
-                if type(sub_dict) is dict:
-                    import re
-                    updated_postinst = deploychef_postinst_substitutions(d, sub_dict, postinst)
-                    #Replace the placeholders in postinst script if any
-                    d.setVar('pkg_postinst_%s' % pkg, updated_postinst)
-                else:
-                    raise bb.build.FuncFailed(msg)
-            else:
-                raise bb.build.FuncFailed(msg)
-        else:
-            msg= "pkg_postinst_%s does not exist for %s\n" % (pkg, str(ldata))
-            bb.note(msg)
-            bb.build.FuncFailed(msg)
-        
-    packages = (d.getVar('PACKAGES', True) or "").split()
-    if packages != []:
-        for  pkg in packages:
-            if pkg.endswith('setup'):
-                update_postinst_package(pkg)
-    
-python populate_packages_append() {
-
-    deploychef_update_package_postinsts(d)
-}
-
-def deploychef_add_file_to_FILES_PN(d, conf_file=None):
-    """Add all directories under a file name to FILES_${PN} variable
-
-    This function appends the name of the template file to the FILES_${PN}/${BPN}
-    bitbake variable to avoid QA warning about files built but not 
-    added to rootfs. $CHEF_TEMPLATE_BASE/conf_file. Note that conf_file
-    is relative to the root filesystem as in /etc/neutron/neutron.conf
-    The template file will be located in /etc/${CHEFPN}/etc/neutron/neutron.conf.rb
-    Thefore, we need to make sure that all directories above the
-    template file are added to FILES_${PN} variable.
-    
-    :conf_file: a chef-solo template file
-    """
-    import re
-    import os
-    #Perform an override so that we can update FILES_${PN} variables
-    ldata = bb.data.createCopy(d)
-    overrides = ldata.getVar("OVERRIDES", True)
-    pkg = d.getVar('PN', True) or d.getVar('BPN', True)
-    files = d.getVar('FILES_%s' % pkg, True)
-    pkg_files = "FILES_%s" %  pkg    
-    ldata.setVar("OVERRIDES", "%s:%s" % (pkg_files, overrides))
-    bb.data.update_data(ldata)
-
-    dest_base = d.getVar('CHEF_TEMPLATE_BASE', True)
-    pkg_imagedir = d.getVar('CHEF_ROOTFS_BASE', True)
-    #Add the packages image base directory if it does not already exist
-    if re.search(pkg_imagedir, files) == None:
-        #All the directory and all files in it
-        files = "%s %s" % ( files, pkg_imagedir)
-        files = "%s %s%s*" % ( files, pkg_imagedir, os.sep )
-        d.setVar('FILES_%s' % pkg, files)
-        msg= "Updated FILES_%s: %s for base images dir" % (pkg, d.getVar('FILES_%s' % pkg, files))
-        bb.debug(2,msg)
-    #All the files and all sub directory leading up to the package image base directory
-    if conf_file:
-        rel_basedir = os.path.dirname(conf_file)
-        if rel_basedir.startswith(os.sep):
-            rel_basedir = rel_basedir[1:]
-        rel_basedir = os.path.join(pkg_imagedir, rel_basedir)
-        if re.search(rel_basedir, files) == None:
-            files = "%s %s" % ( files, rel_basedir)
-            files = "%s %s%s*" % ( files, rel_basedir, os.sep )
-            while rel_basedir.count(os.sep) > 4:
-                #Must be above /etc/chef/etc/ 
-                rel_basedir_list = rel_basedir.split(os.sep)
-                rel_basedir = os.sep.join(rel_basedir_list[:-1])
-                if re.search(rel_basedir, files) == None:
-                    #All the directory and files in it
-                    files = "%s %s" % ( files, rel_basedir)
-                    files = "%s  %s%s*" % ( files, rel_basedir, os.sep )
-                    bb.note(files)
-            bb.debug(2, files)
-            d.setVar('FILES_%s' % pkg, files)
-            msg= "Updated FILES_%s: %s " % (pkg, d.getVar('FILES_%s' % pkg, files))
-            bb.debug(2,msg)
-
-def deploychef_update_FILES_PN_variable(d):
-    """Indicate that the created chef-solo templates should be packaged
-    
-    This function ensures that all the templates files which are based off
-    of configuration files exposed to this class are packaged up when they
-    are copied from the images directory to the various packages folders
-    This avoids the QA warning such as: 
-    WARNING: For recipe python-neutron, the following files/directories were installed 
-    but not shipped in any package:
-    """
-    conf_files = d.getVar('CHEF_SERVICES_CONF_FILES', True )
-    if conf_files and len(conf_files.strip()):
-        import shutil
-        import os
-        for conf_file in conf_files.split():
-            deploychef_add_file_to_FILES_PN(d, conf_file)
-    else:
-        #Add the directory containing the start/stop scripts
-        deploychef_add_file_to_FILES_PN(d)
-
-
-python populate_packages_prepend() {
-
-    deploychef_update_FILES_PN_variable(d)
-}
-
-#The sets of functions below are for post rootfs processing. Preparing files
-#for chefsolo is a two stage process. First we must create the required files
-#in the package's image directory; and this is mostly done by the functions
-#above. 
-#And then we aggregate the files from their respective package directories
-#and put them together for the deploychef package in the expected
-#location.
-CHEF_ROOT_DIR="${IMAGE_ROOTFS}/${sysconfdir}/${CHEFPN}"
-CHEF_CONF_DIR="${CHEF_ROOT_DIR}/${sysconfdir}"
-INITD_DIR="${IMAGE_ROOTFS}/${sysconfdir}/init.d"
-POSTINSTS_DIR="${IMAGE_ROOTFS}/${sysconfdir}/rpm-postinsts"
-DEPLOYCHEF_DIR="${IMAGE_ROOTFS}/opt/deploychef"
-DEPLOYCHEF_TEMPLATES_DIR="${DEPLOYCHEF_DIR}/cookbooks/openstack/templates/default"
-ATTRIBUTES_DIR="${DEPLOYCHEF_DIR}/cookbooks/openstack/attributes"
-ATTRIBUTES_FILE="${ATTRIBUTES_DIR}/default.rb"
-
-deploychef_copy_host_files() {
-   #The /etc/hosts & /etc/hostname files are written during the rootfs
-   #post process, therefore the only way of making templates out of them 
-   #is to hook into the rootfs post process command.
-    if [ -f "${IMAGE_ROOTFS}/${sysconfdir}/hosts" ]; then
-        #Convert etc/hosts to chefsolo template
-        cp ${IMAGE_ROOTFS}/${sysconfdir}/hosts ${IMAGE_ROOTFS}/${sysconfdir}/${CHEFPN}/${sysconfdir}/hosts.erb
-        sed -e "s,${CONTROLLER_IP},${ERB_PREFIX}CONTROLLER_IP${ERB_SUFFIX},g" -i \
-        ${IMAGE_ROOTFS}/${sysconfdir}/${CHEFPN}/${sysconfdir}/hosts.erb
-        sed -e "s,${CONTROLLER_HOST},${ERB_PREFIX}CONTROLLER_HOST${ERB_SUFFIX},g" -i \
-        ${IMAGE_ROOTFS}/${sysconfdir}/${CHEFPN}/${sysconfdir}/hosts.erb
-        
-        sed -e "s,${COMPUTE_IP},${ERB_PREFIX}COMPUTE_IP${ERB_SUFFIX},g" -i \
-        ${IMAGE_ROOTFS}/${sysconfdir}/${CHEFPN}/${sysconfdir}/hosts.erb
-        sed -e "s,${COMPUTE_HOST},${ERB_PREFIX}COMPUTE_HOST${ERB_SUFFIX},g" -i \
-        ${IMAGE_ROOTFS}/${sysconfdir}/${CHEFPN}/${sysconfdir}/hosts.erb
-        #Create an attribute file for /etc/hosts 
-        attr_string="${ERB_DEFAULT_PREFIX}\"COMPUTE_IP\"${ERB_DEFAULT_SUFFIX} = \"${COMPUTE_IP}\""
-        echo "$attr_string" > ${IMAGE_ROOTFS}/${sysconfdir}/${CHEFPN}/hosts-attributes.rb
-        attr_string="${ERB_DEFAULT_PREFIX}\"COMPUTE_HOST\"${ERB_DEFAULT_SUFFIX} = \"${COMPUTE_HOST}\""
-        echo "$attr_string" >> ${IMAGE_ROOTFS}/${sysconfdir}/${CHEFPN}/hosts-attributes.rb
-        attr_string="${ERB_DEFAULT_PREFIX}\"CONTROLLER_IP\"${ERB_DEFAULT_SUFFIX} = \"${CONTROLLER_IP}\""
-        echo "$attr_string" >> ${IMAGE_ROOTFS}/${sysconfdir}/${CHEFPN}/hosts-attributes.rb
-        attr_string="${ERB_DEFAULT_PREFIX}\"CONTROLLER_HOST\"${ERB_DEFAULT_SUFFIX} = \"${CONTROLLER_HOST}\""
-        echo "$attr_string" >> ${IMAGE_ROOTFS}/${sysconfdir}/${CHEFPN}/hosts-attributes.rb
-    fi
-
-    if [ -f "${IMAGE_ROOTFS}/${sysconfdir}/hostname" ]; then
-        #Convert etc/hostname to chefsolo template
-        cp ${IMAGE_ROOTFS}/${sysconfdir}/hostname ${IMAGE_ROOTFS}/${sysconfdir}/${CHEFPN}/${sysconfdir}/hostname.erb
-        sed -e "s,${MY_HOST},${ERB_PREFIX}HOSTNAME${ERB_SUFFIX},g" -i \
-        ${IMAGE_ROOTFS}/${sysconfdir}/${CHEFPN}/${sysconfdir}/hostname.erb
-        #Create an attribute file for /etc/hostname 
-        attr_string="${ERB_DEFAULT_PREFIX}\"HOSTNAME\"${ERB_DEFAULT_SUFFIX} = \"${MY_HOST}\""
-        echo "$attr_string" > ${IMAGE_ROOTFS}/${sysconfdir}/${CHEFPN}/hostname-attributes.rb
-    fi
-}
-
-
-combine_services_daemons(){
-    if [ -n $1 ]; then
-        file_suffix=$1
-        rm -f ${DEPLOYCHEF_DIR}/$file_suffix
-        #combine the list of shutdown/startup scripts
-        find "${CHEF_ROOT_DIR}/" -name "*$file_suffix" 2> /dev/null | while read fname; do 
-            service_cont=$(cat $fname)
-            for line in $service_cont; do 
-                service=$(echo $line | awk -F"[SK][0-9]+" '{print $2}')
-                if [ -e ${INITD_DIR}/$service ]; then
-                    echo $line >> ${DEPLOYCHEF_DIR}/$file_suffix
-                fi
-            done
-        done
-    fi
-}
-
-#This function combines the attributes of all the sevices into
-#a default.rb attributes file.
-combine_services_attributes(){
-    file_suffix='attributes.rb'
-    mkdir -p ${ATTRIBUTES_DIR}; rm -f ${ATTRIBUTES_FILE} 2>/dev/null
-    #combine the list of shutdown/starup scripts
-    find "${CHEF_ROOT_DIR}/" -name "*$file_suffix" 2> /dev/null | \
-    while read fname; do
-        cat $fname | while read line_in_file; do
-        index=$(echo  $line_in_file | awk -F'"' '{print $2}')
-        #Only append attributes that are not in the default.rb attributes file
-        if [ ! `grep -l $index ${ATTRIBUTES_FILE}` ]; then
-            echo $line_in_file >> ${ATTRIBUTES_FILE}
-        fi
-    done
-    done
-}
-
-#This function copies the templates to deploychef directory from
-#within the packages directories
-copy_templates_in_place(){
-    #copy rpm-postinsts and config templates into templates directory
-    mkdir -p ${DEPLOYCHEF_TEMPLATES_DIR}
-    #First copy all our configuration template files
-    if [ -d ${CHEF_CONF_DIR} ]; then
-        cp -rf ${CHEF_CONF_DIR} ${DEPLOYCHEF_TEMPLATES_DIR}
-    fi
-    #Now copy the rpm-postinsts files into cookbooks/templates/default/etc/
-    if [ -d ${POSTINSTS_DIR} ]; then
-        cp -rf ${POSTINSTS_DIR} ${DEPLOYCHEF_TEMPLATES_DIR}/${sysconfdir}
-        #Move the files to base of the templates directory, where chef-solo 
-        #expects them
-        cp -f ${POSTINSTS_DIR}/* ${DEPLOYCHEF_TEMPLATES_DIR}/.
-    fi
-    
-}
-
-filter_node_dependent_templates(){
-    if [ -d ${DEPLOYCHEF_TEMPLATES_DIR} ]; then
-        find "${DEPLOYCHEF_TEMPLATES_DIR}/" -name "*.erb*" 2> /dev/null | \
-        while read fname; do
-            config_file=$(echo  $fname | awk -F'/default' '{print $2}' | awk \
-                -F'.erb' '{print $1}')
-            #If the base configuration file does not exist on this node
-            #remove it.
-            if [ ! -f ${IMAGE_ROOTFS}$config_file ]; then
-                rm -f "$fname"
-            else
-                #Move the file to the default template directory where
-                #chefsolo expect them 
-                cp "$fname"  "${DEPLOYCHEF_TEMPLATES_DIR}"
-            fi
-        done
-    fi
-}
-
-#This function is our post rootfs hook, it enables
-#us to do what we wish to do during rootfs creation process.
-deploychef_rootfs_postprocess_commands() {
-   
-    if [ -n "${OPENSTACKCHEF_ENABLED}" ]; then
-        deploychef_copy_host_files
-        combine_services_daemons 'shutdown-list'
-        combine_services_daemons 'startup-list'
-        combine_services_attributes
-        copy_templates_in_place
-        filter_node_dependent_templates
-    else
-        #Let us delete the deploychef init script that runs
-        #chef-solo at boot-up from rootfs
-        rm -f ${INITD_DIR}/deploychef 2> /dev/null
-    fi
-    #We nolonger have need for /etc/${CHEFPN} directory on rootfs
-    #Not even at run-time
-    rm -rf "${CHEF_ROOT_DIR}" 
-}
-
diff --git a/meta-openstack/recipes-devtools/python/python-barbican_git.bb b/meta-openstack/recipes-devtools/python/python-barbican_git.bb
index c3b2896..0b3d768 100644
--- a/meta-openstack/recipes-devtools/python/python-barbican_git.bb
+++ b/meta-openstack/recipes-devtools/python/python-barbican_git.bb
@@ -19,7 +19,7 @@ SRCREV = "e6f05febbe18a86e4e6b05acc5f4868fa3beb291"
 PV = "2015.1.0+git${SRCPV}"
 S = "${WORKDIR}/git"
 
-inherit update-rc.d setuptools identity hosts useradd default_configs openstackchef monitor
+inherit update-rc.d setuptools identity hosts useradd default_configs monitor
 
 SERVICECREATE_PACKAGES = "${SRCNAME}-setup"
 KEYSTONE_HOST="${CONTROLLER_IP}"
@@ -48,10 +48,8 @@ do_install_append() {
     cp -r ${TEMPLATE_CONF_DIR}/* ${BARBICAN_CONF_DIR}
 
     install -d ${D}${localstatedir}/lib/barbican
-    if [ -z "${OPENSTACKCHEF_ENABLED}" ]; then
-        sed -e "s:%BARBICAN_MAX_PACKET_SIZE%:${BARBICAN_MAX_PACKET_SIZE}:g" -i ${BARBICAN_CONF_DIR}/vassals/barbican-api.ini
-        sed -e "s:%BARBICAN_MAX_PACKET_SIZE%:${BARBICAN_MAX_PACKET_SIZE}:g" -i ${BARBICAN_CONF_DIR}/vassals/barbican-admin.ini
-    fi
+    sed -e "s:%BARBICAN_MAX_PACKET_SIZE%:${BARBICAN_MAX_PACKET_SIZE}:g" -i ${BARBICAN_CONF_DIR}/vassals/barbican-api.ini
+    sed -e "s:%BARBICAN_MAX_PACKET_SIZE%:${BARBICAN_MAX_PACKET_SIZE}:g" -i ${BARBICAN_CONF_DIR}/vassals/barbican-admin.ini
     if ${@bb.utils.contains('DISTRO_FEATURES', 'sysvinit', 'true', 'false', d)}; then
         install -d ${D}${sysconfdir}/init.d
 
@@ -68,10 +66,6 @@ do_install_append() {
         -i ${D}/${PYTHON_SITEPACKAGES_DIR}/${SRCNAME}/tests/api/test_resources_policy.py
 }
 
-CHEF_SERVICES_CONF_FILES :="\
-    ${sysconfdir}/${SRCNAME}/vassals/barbican-api.ini \
-    ${sysconfdir}/${SRCNAME}/vassals/barbican-admin.ini \
-    "
 USERADD_PACKAGES = "${PN}"
 GROUPADD_PARAM_${PN} = "--system barbican"
 USERADD_PARAM_${PN}  = "--system --home /var/lib/barbican -g barbican \
diff --git a/meta-openstack/recipes-devtools/python/python-ceilometer_git.bb b/meta-openstack/recipes-devtools/python/python-ceilometer_git.bb
index 0d6e2d3..5645626 100644
--- a/meta-openstack/recipes-devtools/python/python-ceilometer_git.bb
+++ b/meta-openstack/recipes-devtools/python/python-ceilometer_git.bb
@@ -63,21 +63,20 @@ do_install_append() {
     install -m 600 ${TEMPLATE_CONF_DIR}/*.yaml ${CEILOMETER_CONF_DIR}
 
     install -m 600 ${TEMPLATE_CONF_DIR}/api_paste.ini ${CEILOMETER_CONF_DIR}
-    if [ -z "${OPENSTACKCHEF_ENABLED}" ]; then
-        sed -e "s:%CEILOMETER_SECRET%:${CEILOMETER_SECRET}:g" -i ${CEILOMETER_CONF_DIR}/ceilometer.conf
+    sed -e "s:%CEILOMETER_SECRET%:${CEILOMETER_SECRET}:g" -i ${CEILOMETER_CONF_DIR}/ceilometer.conf
 
-        sed -e "s:%DB_USER%:${DB_USER}:g" -i ${CEILOMETER_CONF_DIR}/ceilometer.conf
-        sed -e "s:%DB_PASSWORD%:${DB_PASSWORD}:g" -i ${CEILOMETER_CONF_DIR}/ceilometer.conf
+    sed -e "s:%DB_USER%:${DB_USER}:g" -i ${CEILOMETER_CONF_DIR}/ceilometer.conf
+    sed -e "s:%DB_PASSWORD%:${DB_PASSWORD}:g" -i ${CEILOMETER_CONF_DIR}/ceilometer.conf
 
-        sed -e "s:%CONTROLLER_IP%:${CONTROLLER_IP}:g" -i ${CEILOMETER_CONF_DIR}/ceilometer.conf
-        sed -e "s:%CONTROLLER_HOST%:${CONTROLLER_HOST}:g" -i ${CEILOMETER_CONF_DIR}/ceilometer.conf
+    sed -e "s:%CONTROLLER_IP%:${CONTROLLER_IP}:g" -i ${CEILOMETER_CONF_DIR}/ceilometer.conf
+    sed -e "s:%CONTROLLER_HOST%:${CONTROLLER_HOST}:g" -i ${CEILOMETER_CONF_DIR}/ceilometer.conf
 
-        sed -e "s:%COMPUTE_IP%:${COMPUTE_IP}:g" -i ${CEILOMETER_CONF_DIR}/ceilometer.conf
-        sed -e "s:%COMPUTE_HOST%:${COMPUTE_HOST}:g" -i ${CEILOMETER_CONF_DIR}/ceilometer.conf
+    sed -e "s:%COMPUTE_IP%:${COMPUTE_IP}:g" -i ${CEILOMETER_CONF_DIR}/ceilometer.conf
+    sed -e "s:%COMPUTE_HOST%:${COMPUTE_HOST}:g" -i ${CEILOMETER_CONF_DIR}/ceilometer.conf
+
+    sed -e "s:%ADMIN_PASSWORD%:${ADMIN_PASSWORD}:g" -i ${CEILOMETER_CONF_DIR}/ceilometer.conf
+    sed -e "s:%SERVICE_TENANT_NAME%:${SERVICE_TENANT_NAME}:g" -i ${CEILOMETER_CONF_DIR}/ceilometer.conf
 
-        sed -e "s:%ADMIN_PASSWORD%:${ADMIN_PASSWORD}:g" -i ${CEILOMETER_CONF_DIR}/ceilometer.conf
-        sed -e "s:%SERVICE_TENANT_NAME%:${SERVICE_TENANT_NAME}:g" -i ${CEILOMETER_CONF_DIR}/ceilometer.conf
-    fi
     if ${@bb.utils.contains('DISTRO_FEATURES', 'sysvinit', 'true', 'false', d)}; then
         install -d ${D}${sysconfdir}/init.d
 
@@ -108,9 +107,6 @@ do_install_append() {
     fi 
 }
 
-CHEF_SERVICES_CONF_FILES :="\
-    ${sysconfdir}/${SRCNAME}/ceilometer.conf \
-    "
 pkg_postinst_${SRCNAME}-setup () {
     if [ "x$D" != "x" ]; then
         exit 1
@@ -128,7 +124,7 @@ pkg_postinst_${SRCNAME}-setup () {
     ceilometer-dbsync
 }
 
-inherit setuptools identity hosts update-rc.d default_configs openstackchef monitor
+inherit setuptools identity hosts update-rc.d default_configs monitor
 
 PACKAGES += " ${SRCNAME}-tests"
 PACKAGES += "${SRCNAME}-setup ${SRCNAME}-common ${SRCNAME}-api"
diff --git a/meta-openstack/recipes-devtools/python/python-cinder_git.bb b/meta-openstack/recipes-devtools/python/python-cinder_git.bb
index 91098c4..e70a3aa 100644
--- a/meta-openstack/recipes-devtools/python/python-cinder_git.bb
+++ b/meta-openstack/recipes-devtools/python/python-cinder_git.bb
@@ -24,7 +24,7 @@ SRCREV = "61026d4e4f2a58dd84ffb2e4e40ab99860b9316a"
 PV = "7.0.0+git${SRCPV}"
 S = "${WORKDIR}/git"
 
-inherit setuptools update-rc.d identity default_configs hosts openstackchef monitor
+inherit setuptools update-rc.d identity default_configs hosts monitor
 
 CINDER_BACKUP_BACKEND_DRIVER ?= "cinder.backup.drivers.swift"
 
@@ -77,8 +77,7 @@ do_install_append() {
 
     install -d ${D}${localstatedir}/log/${SRCNAME}
     
-    if [ -z "${OPENSTACKCHEF_ENABLED}" ]; then
-        for file in api-paste.ini cinder.conf; do
+    for file in api-paste.ini cinder.conf; do
         sed -e "s:%SERVICE_TENANT_NAME%:${SERVICE_TENANT_NAME}:g" \
             -i ${CINDER_CONF_DIR}/$file
         sed -e "s:%SERVICE_USER%:${SRCNAME}:g" -i ${CINDER_CONF_DIR}/$file
@@ -89,8 +88,7 @@ do_install_append() {
         sed -e "s:%DB_PASSWORD%:${DB_PASSWORD}:g" -i ${CINDER_CONF_DIR}/$file
         sed -e "s:%CINDER_BACKUP_BACKEND_DRIVER%:${CINDER_BACKUP_BACKEND_DRIVER}:g" \
         -i ${CINDER_CONF_DIR}/$file
-        done
-    fi
+    done
 
     if ${@bb.utils.contains('DISTRO_FEATURES', 'sysvinit', 'true', 'false', d)}; then
         install -d ${D}${sysconfdir}/init.d
@@ -125,10 +123,6 @@ do_install_append() {
     sed -e "s:%IS_DEFAULT%:${is_default}:g" -i ${D}/etc/cinder/drivers/glusterfs_setup.sh
 }
 
-CHEF_SERVICES_CONF_FILES :="\
-    ${sysconfdir}/${SRCNAME}/cinder.conf \
-    ${sysconfdir}/${SRCNAME}/api-paste.ini \
-    "
 pkg_postinst_${SRCNAME}-setup () {
     if [ "x$D" != "x" ]; then
         exit 1
diff --git a/meta-openstack/recipes-devtools/python/python-glance_git.bb b/meta-openstack/recipes-devtools/python/python-glance_git.bb
index bce373d..27c33b9 100644
--- a/meta-openstack/recipes-devtools/python/python-glance_git.bb
+++ b/meta-openstack/recipes-devtools/python/python-glance_git.bb
@@ -18,7 +18,7 @@ PV = "11.0.0+git${SRCPV}"
 
 S = "${WORKDIR}/git"
 
-inherit setuptools update-rc.d identity default_configs hosts openstackchef monitor
+inherit setuptools update-rc.d identity default_configs hosts monitor
 
 GLANCE_DEFAULT_STORE ?= "file"
 GLANCE_KNOWN_STORES ?= "glance.store.rbd.Store,\
@@ -97,20 +97,18 @@ do_install_append() {
 
     install -d ${D}${localstatedir}/log/${SRCNAME}
 
-    if [ -z "${OPENSTACKCHEF_ENABLED}" ]; then
-        for file in api registry cache
-        do
-            sed -e "s:%SERVICE_TENANT_NAME%:${SERVICE_TENANT_NAME}:g" \
-                -i ${GLANCE_CONF_DIR}/glance-$file.conf
-            sed -e "s:%SERVICE_USER%:${SRCNAME}:g" -i ${GLANCE_CONF_DIR}/glance-$file.conf
-            sed -e "s:%SERVICE_PASSWORD%:${SERVICE_PASSWORD}:g" \
-                -i ${GLANCE_CONF_DIR}/glance-$file.conf
-            sed -e "s:%DB_PASSWORD%:${DB_PASSWORD}:g" \
-                -i ${GLANCE_CONF_DIR}/glance-$file.conf
-            sed -e "s:%DB_USER%:${DB_USER}:g" \
-                -i ${GLANCE_CONF_DIR}/glance-$file.conf
-        done
-    fi
+    for file in api registry cache
+    do
+	sed -e "s:%SERVICE_TENANT_NAME%:${SERVICE_TENANT_NAME}:g" \
+	    -i ${GLANCE_CONF_DIR}/glance-$file.conf
+	sed -e "s:%SERVICE_USER%:${SRCNAME}:g" -i ${GLANCE_CONF_DIR}/glance-$file.conf
+	sed -e "s:%SERVICE_PASSWORD%:${SERVICE_PASSWORD}:g" \
+	    -i ${GLANCE_CONF_DIR}/glance-$file.conf
+	sed -e "s:%DB_PASSWORD%:${DB_PASSWORD}:g" \
+	    -i ${GLANCE_CONF_DIR}/glance-$file.conf
+	sed -e "s:%DB_USER%:${DB_USER}:g" \
+	    -i ${GLANCE_CONF_DIR}/glance-$file.conf
+    done
 
     if ${@bb.utils.contains('DISTRO_FEATURES', 'sysvinit', 'true', 'false', d)}; then
         install -d ${D}${sysconfdir}/init.d
@@ -123,12 +121,6 @@ do_install_append() {
     cp run_tests.sh ${GLANCE_CONF_DIR}
 }
 
-CHEF_SERVICES_CONF_FILES := "\
-    ${sysconfdir}/${SRCNAME}/glance-api.conf \
-    ${sysconfdir}/${SRCNAME}/glance-cache.conf \
-    ${sysconfdir}/${SRCNAME}/glance-registry.conf \
-    "
-
 pkg_postinst_${SRCNAME}-setup () {
     if [ "x$D" != "x" ]; then
         exit 1
diff --git a/meta-openstack/recipes-devtools/python/python-heat_git.bb b/meta-openstack/recipes-devtools/python/python-heat_git.bb
index 75d5ba6..6da768f 100644
--- a/meta-openstack/recipes-devtools/python/python-heat_git.bb
+++ b/meta-openstack/recipes-devtools/python/python-heat_git.bb
@@ -70,25 +70,24 @@ do_install_append() {
     install -d ${HEAT_CONF_DIR}/environment.d
     install -m 600 ${TEMPLATE_CONF_DIR}/environment.d/* ${HEAT_CONF_DIR}/environment.d
     install -m 664 ${TEMPLATE_CONF_DIR}/api-paste.ini ${HEAT_CONF_DIR}
-    if [ -z "${OPENSTACKCHEF_ENABLED}" ]; then
-        sed -e "s:%SERVICE_TENANT_NAME%:${SERVICE_TENANT_NAME}:g" \
-            -i ${HEAT_CONF_DIR}/api-paste.ini
-        sed -e "s:%SERVICE_USER%:${SRCNAME}:g" -i ${HEAT_CONF_DIR}/api-paste.ini
-        sed -e "s:%SERVICE_PASSWORD%:${SERVICE_PASSWORD}:g" -i ${HEAT_CONF_DIR}/api-paste.ini
-        sed -e "s:%CONTROLLER_IP%:${CONTROLLER_IP}:g" -i ${HEAT_CONF_DIR}/api-paste.ini
+    sed -e "s:%SERVICE_TENANT_NAME%:${SERVICE_TENANT_NAME}:g" \
+	-i ${HEAT_CONF_DIR}/api-paste.ini
+    sed -e "s:%SERVICE_USER%:${SRCNAME}:g" -i ${HEAT_CONF_DIR}/api-paste.ini
+    sed -e "s:%SERVICE_PASSWORD%:${SERVICE_PASSWORD}:g" -i ${HEAT_CONF_DIR}/api-paste.ini
+    sed -e "s:%CONTROLLER_IP%:${CONTROLLER_IP}:g" -i ${HEAT_CONF_DIR}/api-paste.ini
 
-        sed -e "s:%DB_USER%:${DB_USER}:g" -i ${HEAT_CONF_DIR}/heat.conf
-        sed -e "s:%DB_PASSWORD%:${DB_PASSWORD}:g" -i ${HEAT_CONF_DIR}/heat.conf
+    sed -e "s:%DB_USER%:${DB_USER}:g" -i ${HEAT_CONF_DIR}/heat.conf
+    sed -e "s:%DB_PASSWORD%:${DB_PASSWORD}:g" -i ${HEAT_CONF_DIR}/heat.conf
 
-        sed -e "s:%CONTROLLER_IP%:${CONTROLLER_IP}:g" -i ${HEAT_CONF_DIR}/heat.conf
-        sed -e "s:%CONTROLLER_HOST%:${CONTROLLER_HOST}:g" -i ${HEAT_CONF_DIR}/heat.conf
+    sed -e "s:%CONTROLLER_IP%:${CONTROLLER_IP}:g" -i ${HEAT_CONF_DIR}/heat.conf
+    sed -e "s:%CONTROLLER_HOST%:${CONTROLLER_HOST}:g" -i ${HEAT_CONF_DIR}/heat.conf
 
-        sed -e "s:%COMPUTE_IP%:${COMPUTE_IP}:g" -i ${HEAT_CONF_DIR}/heat.conf
-        sed -e "s:%COMPUTE_HOST%:${COMPUTE_HOST}:g" -i ${HEAT_CONF_DIR}/heat.conf
+    sed -e "s:%COMPUTE_IP%:${COMPUTE_IP}:g" -i ${HEAT_CONF_DIR}/heat.conf
+    sed -e "s:%COMPUTE_HOST%:${COMPUTE_HOST}:g" -i ${HEAT_CONF_DIR}/heat.conf
+
+    sed -e "s:%ADMIN_PASSWORD%:${ADMIN_PASSWORD}:g" -i ${HEAT_CONF_DIR}/heat.conf
+    sed -e "s:%SERVICE_TENANT_NAME%:${SERVICE_TENANT_NAME}:g" -i ${HEAT_CONF_DIR}/heat.conf
 
-        sed -e "s:%ADMIN_PASSWORD%:${ADMIN_PASSWORD}:g" -i ${HEAT_CONF_DIR}/heat.conf
-        sed -e "s:%SERVICE_TENANT_NAME%:${SERVICE_TENANT_NAME}:g" -i ${HEAT_CONF_DIR}/heat.conf
-    fi
     if ${@bb.utils.contains('DISTRO_FEATURES', 'sysvinit', 'true', 'false', d)}; then
         install -d ${D}${sysconfdir}/init.d
 
@@ -107,10 +106,6 @@ do_install_append() {
     fi
 }
 
-CHEF_SERVICES_CONF_FILES :="\
-    ${sysconfdir}/${SRCNAME}/heat.conf \
-    ${sysconfdir}/${SRCNAME}/api-paste.ini \
-   "
 pkg_postinst_${SRCNAME}-setup () {
     if [ "x$D" != "x" ]; then
         exit 1
@@ -128,7 +123,7 @@ pkg_postinst_${SRCNAME}-setup () {
     heat-manage db_sync
 }
 
-inherit setuptools identity hosts update-rc.d default_configs openstackchef monitor
+inherit setuptools identity hosts update-rc.d default_configs monitor
 
 PACKAGES += "${SRCNAME}-tests ${SRCNAME}-templates ${SRCNAME}-common ${SRCNAME}-api ${SRCNAME}-api-cfn ${SRCNAME}-engine"
 PACKAGES += "${SRCNAME}-setup"
diff --git a/meta-openstack/recipes-devtools/python/python-horizon_git.bb b/meta-openstack/recipes-devtools/python/python-horizon_git.bb
index 01ce598..5a23930 100644
--- a/meta-openstack/recipes-devtools/python/python-horizon_git.bb
+++ b/meta-openstack/recipes-devtools/python/python-horizon_git.bb
@@ -84,7 +84,7 @@ SRCREV = "593f0b78eea8efbb6d833d66acc7ab4dc852159b"
 PV = "8.0.0+git${SRCPV}"
 S = "${WORKDIR}/git"
 
-inherit setuptools update-rc.d python-dir default_configs openstackchef monitor
+inherit setuptools update-rc.d python-dir default_configs monitor
 
 # no longer required. kept as reference.
 # do_install[dirs] += "${D}/usr/share/bin"
diff --git a/meta-openstack/recipes-devtools/python/python-keystone_git.bb b/meta-openstack/recipes-devtools/python/python-keystone_git.bb
index e79a6a4..49aa530 100644
--- a/meta-openstack/recipes-devtools/python/python-keystone_git.bb
+++ b/meta-openstack/recipes-devtools/python/python-keystone_git.bb
@@ -24,7 +24,7 @@ PV = "8.0.0+git${SRCPV}"
 
 S = "${WORKDIR}/git"
 
-inherit setuptools update-rc.d identity hosts default_configs openstackchef monitor
+inherit setuptools update-rc.d identity hosts default_configs monitor
 
 SERVICE_TOKEN = "password"
 TOKEN_FORMAT ?= "PKI"
@@ -114,28 +114,26 @@ do_install_append() {
         admin_endpoint = http://%CONTROLLER_IP%:8081/keystone/admin/ " \
         -i ${KEYSTONE_CONF_DIR}/keystone.conf
     
-    if [ -z "${OPENSTACKCHEF_ENABLED}" ]; then
-        sed -e "s:%SERVICE_TOKEN%:${SERVICE_TOKEN}:g" \
-            -i ${KEYSTONE_CONF_DIR}/keystone.conf
-        sed -e "s:%DB_USER%:${DB_USER}:g" -i ${KEYSTONE_CONF_DIR}/keystone.conf
-        sed -e "s:%DB_PASSWORD%:${DB_PASSWORD}:g" \
-            -i ${KEYSTONE_CONF_DIR}/keystone.conf
-
-        sed -e "s:%CONTROLLER_IP%:${CONTROLLER_IP}:g" \
-            -i ${KEYSTONE_CONF_DIR}/keystone.conf
-        sed -e "s:%CONTROLLER_IP%:${CONTROLLER_IP}:g" \
-            -i ${KEYSTONE_CONF_DIR}/identity.sh
-
-        sed -e "s:%TOKEN_FORMAT%:${TOKEN_FORMAT}:g" \
-            -i ${KEYSTONE_CONF_DIR}/keystone.conf
-        
-        sed -e "s/%ADMIN_PASSWORD%/${ADMIN_PASSWORD}/g" \
-            -i ${D}${sysconfdir}/init.d/keystone
-        sed -e "s/%SERVICE_PASSWORD%/${SERVICE_PASSWORD}/g" \
-            -i ${D}${sysconfdir}/init.d/keystone
-        sed -e "s/%SERVICE_TENANT_NAME%/${SERVICE_TENANT_NAME}/g" \
-            -i ${D}${sysconfdir}/init.d/keystone
-    fi    
+    sed -e "s:%SERVICE_TOKEN%:${SERVICE_TOKEN}:g" \
+	-i ${KEYSTONE_CONF_DIR}/keystone.conf
+    sed -e "s:%DB_USER%:${DB_USER}:g" -i ${KEYSTONE_CONF_DIR}/keystone.conf
+    sed -e "s:%DB_PASSWORD%:${DB_PASSWORD}:g" \
+	-i ${KEYSTONE_CONF_DIR}/keystone.conf
+
+    sed -e "s:%CONTROLLER_IP%:${CONTROLLER_IP}:g" \
+	-i ${KEYSTONE_CONF_DIR}/keystone.conf
+    sed -e "s:%CONTROLLER_IP%:${CONTROLLER_IP}:g" \
+	-i ${KEYSTONE_CONF_DIR}/identity.sh
+
+    sed -e "s:%TOKEN_FORMAT%:${TOKEN_FORMAT}:g" \
+	-i ${KEYSTONE_CONF_DIR}/keystone.conf
+
+    sed -e "s/%ADMIN_PASSWORD%/${ADMIN_PASSWORD}/g" \
+	-i ${D}${sysconfdir}/init.d/keystone
+    sed -e "s/%SERVICE_PASSWORD%/${SERVICE_PASSWORD}/g" \
+	-i ${D}${sysconfdir}/init.d/keystone
+    sed -e "s/%SERVICE_TENANT_NAME%/${SERVICE_TENANT_NAME}/g" \
+	-i ${D}${sysconfdir}/init.d/keystone
     
     install -d ${KEYSTONE_PACKAGE_DIR}/tests/tmp
 
@@ -189,12 +187,6 @@ role_tree_dn = ou=Roles,${LDAP_DN} \
     fi
 }
 
-CHEF_SERVICES_CONF_FILES := "\
-    ${sysconfdir}/${SRCNAME}/keystone.conf \
-    ${sysconfdir}/${SRCNAME}/identity.sh \
-    ${sysconfdir}/init.d/keystone \
-    "
-
 pkg_postinst_${SRCNAME}-setup () {
     # python-keystone postinst start
     if [ "x$D" != "x" ]; then
diff --git a/meta-openstack/recipes-devtools/python/python-neutron_git.bb b/meta-openstack/recipes-devtools/python/python-neutron_git.bb
index f651a8f..51c2ac4 100644
--- a/meta-openstack/recipes-devtools/python/python-neutron_git.bb
+++ b/meta-openstack/recipes-devtools/python/python-neutron_git.bb
@@ -24,7 +24,7 @@ PV = "7.0.0+git${SRCPV}"
 
 S = "${WORKDIR}/git"
 
-inherit setuptools update-rc.d identity hosts default_configs openstackchef monitor
+inherit setuptools update-rc.d identity hosts default_configs monitor
 
 SERVICECREATE_PACKAGES = "${SRCNAME}-setup"
 KEYSTONE_HOST="${CONTROLLER_IP}"
@@ -117,8 +117,8 @@ do_install_append() {
         install -m 0755 ${WORKDIR}/neutron-$AGENT.init.sh ${D}${sysconfdir}/init.d/neutron-$AGENT-agent
         install -m 600 ${WORKDIR}/${AGENT}_agent.ini ${NEUTRON_CONF_DIR}/
     fi
-    if [ -z "${OPENSTACKCHEF_ENABLED}" ]; then
-        for file in plugins/ml2/ml2_conf.ini neutron.conf metadata_agent.ini; do
+
+    for file in plugins/ml2/ml2_conf.ini neutron.conf metadata_agent.ini; do
         sed -e "s:%SERVICE_TENANT_NAME%:${SERVICE_TENANT_NAME}:g" -i ${NEUTRON_CONF_DIR}/$file
         sed -e "s:%SERVICE_USER%:${SRCNAME}:g" -i ${NEUTRON_CONF_DIR}/$file
         sed -e "s:%SERVICE_PASSWORD%:${SERVICE_PASSWORD}:g" -i ${NEUTRON_CONF_DIR}/$file
@@ -127,8 +127,8 @@ do_install_append() {
         sed -e "s:%DB_PASSWORD%:${DB_PASSWORD}:g" -i ${NEUTRON_CONF_DIR}/$file
         sed -e "s:%CONTROLLER_IP%:${CONTROLLER_IP}:g" -i ${NEUTRON_CONF_DIR}/$file
         sed -e "s:%CONTROLLER_HOST%:${CONTROLLER_HOST}:g" -i ${NEUTRON_CONF_DIR}/$file
-        done
-    fi
+    done
+
     sed -e "s:^auth_host.*:#auth_host:g" -i ${NEUTRON_CONF_DIR}/neutron.conf
     sed -e "s:^auth_port.*:#auth_port:g" -i ${NEUTRON_CONF_DIR}/neutron.conf
     sed -e "s:^auth_protocol.*:#auth_protocol:g" -i ${NEUTRON_CONF_DIR}/neutron.conf
@@ -154,24 +154,6 @@ pkg_postinst_${SRCNAME}-setup () {
                            --config-file /etc/neutron/plugins/ml2/ml2_conf.ini upgrade head
 }
 
-CHEF_SERVICES_CONF_FILES := " \
-    ${sysconfdir}/${SRCNAME}/neutron.conf \
-    ${sysconfdir}/${SRCNAME}/metadata_agent.ini \
-    ${sysconfdir}/${SRCNAME}/plugins/ml2/ml2_conf.ini \
-    "
-deploychef_services_special_func(){
-    #This function is a callback function for the deploychef .bbclass
-    #We define this special callback funtion because we are doing 
-    #more than a placeholder substitution. The variable CHEF_SERVICES_FILE_NAME
-    #is defined in deploychef_framework.bbclass
-    if [ -n "${CHEF_SERVICES_FILE_NAME}" ]; then
-        sed "s:^# rabbit_host =.*:rabbit_host = %CONTROLLER_IP%:" -i \
-        ${CHEF_SERVICES_FILE_NAME}
-    fi
-}
-
-CHEF_SERVICES_SPECIAL_FUNC := "deploychef_services_special_func"
-
 pkg_postinst_${SRCNAME}-plugin-openvswitch-setup () {
     if [ "x$D" != "x" ]; then
         exit 1
diff --git a/meta-openstack/recipes-devtools/python/python-nova_git.bb b/meta-openstack/recipes-devtools/python/python-nova_git.bb
index 7e0e861..c1f4de1 100644
--- a/meta-openstack/recipes-devtools/python/python-nova_git.bb
+++ b/meta-openstack/recipes-devtools/python/python-nova_git.bb
@@ -30,7 +30,7 @@ PV = "12.0.0+git${SRCPV}"
 
 S = "${WORKDIR}/git"
 
-inherit update-rc.d setuptools identity hosts useradd default_configs openstackchef monitor
+inherit update-rc.d setuptools identity hosts useradd default_configs monitor
 
 LIBVIRT_IMAGES_TYPE ?= "default"
 
@@ -103,38 +103,38 @@ do_install_append() {
     install -o nova -m 664 ${WORKDIR}/nova.conf               ${NOVA_CONF_DIR}/nova.conf
     install -o nova -m 664 ${TEMPLATE_CONF_DIR}/api-paste.ini ${NOVA_CONF_DIR}
     install -o nova -m 664 ${WORKDIR}/openrc                  ${NOVA_CONF_DIR}
-    if [ -z "${OPENSTACKCHEF_ENABLED}" ]; then
-        # Configuration options
-        sed -e "s:%SERVICE_TENANT_NAME%:${SERVICE_TENANT_NAME}:g" \
-            -i ${NOVA_CONF_DIR}/api-paste.ini
-        sed -e "s:%SERVICE_USER%:${SRCNAME}:g" -i ${NOVA_CONF_DIR}/api-paste.ini
-        sed -e "s:%SERVICE_PASSWORD%:${SERVICE_PASSWORD}:g" \
-            -i ${NOVA_CONF_DIR}/api-paste.ini
-        sed -e "s:%CONTROLLER_IP%:${CONTROLLER_IP}:g" -i ${NOVA_CONF_DIR}/api-paste.ini
 
-        sed -e "s:%DB_USER%:${DB_USER}:g" -i ${NOVA_CONF_DIR}/nova.conf
-        sed -e "s:%DB_PASSWORD%:${DB_PASSWORD}:g" -i ${NOVA_CONF_DIR}/nova.conf
+    # Configuration options
+    sed -e "s:%SERVICE_TENANT_NAME%:${SERVICE_TENANT_NAME}:g" \
+	-i ${NOVA_CONF_DIR}/api-paste.ini
+    sed -e "s:%SERVICE_USER%:${SRCNAME}:g" -i ${NOVA_CONF_DIR}/api-paste.ini
+    sed -e "s:%SERVICE_PASSWORD%:${SERVICE_PASSWORD}:g" \
+	-i ${NOVA_CONF_DIR}/api-paste.ini
+    sed -e "s:%CONTROLLER_IP%:${CONTROLLER_IP}:g" -i ${NOVA_CONF_DIR}/api-paste.ini
 
-        sed -e "s:%METADATA_SHARED_SECRET%:${METADATA_SHARED_SECRET}:g" -i ${NOVA_CONF_DIR}/nova.conf
+    sed -e "s:%DB_USER%:${DB_USER}:g" -i ${NOVA_CONF_DIR}/nova.conf
+    sed -e "s:%DB_PASSWORD%:${DB_PASSWORD}:g" -i ${NOVA_CONF_DIR}/nova.conf
 
-        sed -e "s:%CONTROLLER_IP%:${CONTROLLER_IP}:g" -i ${NOVA_CONF_DIR}/nova.conf
-        sed -e "s:%CONTROLLER_HOST%:${CONTROLLER_HOST}:g" -i ${NOVA_CONF_DIR}/nova.conf
+    sed -e "s:%METADATA_SHARED_SECRET%:${METADATA_SHARED_SECRET}:g" -i ${NOVA_CONF_DIR}/nova.conf
 
-        sed -e "s:%COMPUTE_IP%:${COMPUTE_IP}:g" -i ${NOVA_CONF_DIR}/nova.conf
-        sed -e "s:%COMPUTE_HOST%:${COMPUTE_HOST}:g" -i ${NOVA_CONF_DIR}/nova.conf
+    sed -e "s:%CONTROLLER_IP%:${CONTROLLER_IP}:g" -i ${NOVA_CONF_DIR}/nova.conf
+    sed -e "s:%CONTROLLER_HOST%:${CONTROLLER_HOST}:g" -i ${NOVA_CONF_DIR}/nova.conf
 
-        sed -e "s:%SERVICE_TENANT_NAME%:${SERVICE_TENANT_NAME}:g" -i ${NOVA_CONF_DIR}/nova.conf
-        sed -e "s:%SERVICE_USER%:${SRCNAME}:g" -i ${NOVA_CONF_DIR}/nova.conf
-        sed -e "s:%SERVICE_PASSWORD%:${SERVICE_PASSWORD}:g" -i ${NOVA_CONF_DIR}/nova.conf
+    sed -e "s:%COMPUTE_IP%:${COMPUTE_IP}:g" -i ${NOVA_CONF_DIR}/nova.conf
+    sed -e "s:%COMPUTE_HOST%:${COMPUTE_HOST}:g" -i ${NOVA_CONF_DIR}/nova.conf
 
-        sed -e "s:%LIBVIRT_IMAGES_TYPE%:${LIBVIRT_IMAGES_TYPE}:g" -i ${NOVA_CONF_DIR}/nova.conf
+    sed -e "s:%SERVICE_TENANT_NAME%:${SERVICE_TENANT_NAME}:g" -i ${NOVA_CONF_DIR}/nova.conf
+    sed -e "s:%SERVICE_USER%:${SRCNAME}:g" -i ${NOVA_CONF_DIR}/nova.conf
+    sed -e "s:%SERVICE_PASSWORD%:${SERVICE_PASSWORD}:g" -i ${NOVA_CONF_DIR}/nova.conf
 
-        sed -e "s:%OS_PASSWORD%:${ADMIN_PASSWORD}:g" -i ${NOVA_CONF_DIR}/openrc
-        sed -e "s:%SERVICE_TOKEN%:${SERVICE_TOKEN}:g" -i ${NOVA_CONF_DIR}/openrc
+    sed -e "s:%LIBVIRT_IMAGES_TYPE%:${LIBVIRT_IMAGES_TYPE}:g" -i ${NOVA_CONF_DIR}/nova.conf
+
+    sed -e "s:%OS_PASSWORD%:${ADMIN_PASSWORD}:g" -i ${NOVA_CONF_DIR}/openrc
+    sed -e "s:%SERVICE_TOKEN%:${SERVICE_TOKEN}:g" -i ${NOVA_CONF_DIR}/openrc
+
+    sed -e "s:%CONTROLLER_IP%:${CONTROLLER_IP}:g" -i ${NOVA_CONF_DIR}/openrc
+    sed -e "s:%CONTROLLER_HOST%:${CONTROLLER_HOST}:g" -i ${NOVA_CONF_DIR}/openrc
 
-        sed -e "s:%CONTROLLER_IP%:${CONTROLLER_IP}:g" -i ${NOVA_CONF_DIR}/openrc
-        sed -e "s:%CONTROLLER_HOST%:${CONTROLLER_HOST}:g" -i ${NOVA_CONF_DIR}/openrc
-    fi
     install -o nova -d ${NOVA_CONF_DIR}/instances
 
     if ${@bb.utils.contains('DISTRO_FEATURES', 'sysvinit', 'true', 'false', d)}; then
@@ -159,12 +159,6 @@ do_install_append() {
     cp -r "${S}/plugins" "${D}/${PYTHON_SITEPACKAGES_DIR}/nova"
 }
 
-CHEF_SERVICES_CONF_FILES := "\
-    ${sysconfdir}/${SRCNAME}/nova.conf \
-    ${sysconfdir}/${SRCNAME}/api-paste.ini \
-    ${sysconfdir}/${SRCNAME}/openrc \
-    "
-
 pkg_postinst_${SRCNAME}-setup () {
     if [ "x$D" != "x" ]; then
         exit 1
diff --git a/meta-openstack/recipes-devtools/python/python-swift_git.bb b/meta-openstack/recipes-devtools/python/python-swift_git.bb
index 7862251..8552ea7 100644
--- a/meta-openstack/recipes-devtools/python/python-swift_git.bb
+++ b/meta-openstack/recipes-devtools/python/python-swift_git.bb
@@ -20,7 +20,7 @@ SRCREV="4ca08cc395e686265574366497a6869e94eebcb2"
 PV="2.2.2+git${SRCPV}"
 S = "${WORKDIR}/git"
 
-inherit setuptools python-dir update-rc.d hosts identity openstackchef
+inherit setuptools python-dir update-rc.d hosts identity
 
 # The size of the backing file (in Gigabytes) of loopback devices
 # which are used for setting up Swift storage devices.  The value
@@ -82,39 +82,32 @@ do_install_append() {
     sed 's/^# swift_dir =.*/swift_dir = \/etc\/swift/' -i ${SWIFT_CONF_DIR}/object-server.conf
     sed 's/^# devices =.*/devices = \/etc\/swift\/node/' -i ${SWIFT_CONF_DIR}/object-server.conf
     sed 's/^# mount_check =.*/mount_check = false/' -i ${SWIFT_CONF_DIR}/object-server.conf
-    if [ -z "${OPENSTACKCHEF_ENABLED}" ]; then
-        sed "s/%SERVICE_TENANT_NAME%/${SERVICE_TENANT_NAME}/g" -i ${SWIFT_CONF_DIR}/proxy-server.conf
-        sed "s/%SERVICE_USER%/${SRCNAME}/g" -i ${SWIFT_CONF_DIR}/proxy-server.conf
-        sed "s/%SERVICE_PASSWORD%/${SERVICE_PASSWORD}/g" -i ${SWIFT_CONF_DIR}/proxy-server.conf
-
-        sed "s/%SERVICE_TENANT_NAME%/${SERVICE_TENANT_NAME}/g" -i ${SWIFT_CONF_DIR}/dispersion.conf
-        sed "s/%SERVICE_USER%/${SRCNAME}/g" -i ${SWIFT_CONF_DIR}/dispersion.conf
-        sed "s/%SERVICE_PASSWORD%/${SERVICE_PASSWORD}/g" -i ${SWIFT_CONF_DIR}/dispersion.conf
-
-        sed "s/%ADMIN_TENANT_NAME%/admin/g" -i ${SWIFT_CONF_DIR}/test.conf
-        sed "s/%ADMIN_USER%/admin/g" -i ${SWIFT_CONF_DIR}/test.conf
-        sed "s/%ADMIN_PASSWORD%/${ADMIN_PASSWORD}/g" -i ${SWIFT_CONF_DIR}/test.conf
-        sed "s/%SERVICE_TENANT_NAME%/${SERVICE_TENANT_NAME}/g" -i ${SWIFT_CONF_DIR}/test.conf
-        sed "s/%SERVICE_USER%/${SRCNAME}/g" -i ${SWIFT_CONF_DIR}/test.conf
-        sed "s/%SERVICE_PASSWORD%/${SERVICE_PASSWORD}/g" -i ${SWIFT_CONF_DIR}/test.conf
-        sed "s/%DEMO_USER%/demo/g" -i ${SWIFT_CONF_DIR}/test.conf
-        sed "s/%DEMO_PASSWORD%/${ADMIN_PASSWORD}/g" -i ${SWIFT_CONF_DIR}/test.conf
-
-        sed "s/%SWIFT_BACKING_FILE_SIZE%/${SWIFT_BACKING_FILE_SIZE}/g" -i ${D}${sysconfdir}/init.d/swift
-        sed "s/%CONTROLLER_IP%/${CONTROLLER_IP}/g" -i ${D}${sysconfdir}/init.d/swift
-    fi
+
+    sed "s/%SERVICE_TENANT_NAME%/${SERVICE_TENANT_NAME}/g" -i ${SWIFT_CONF_DIR}/proxy-server.conf
+    sed "s/%SERVICE_USER%/${SRCNAME}/g" -i ${SWIFT_CONF_DIR}/proxy-server.conf
+    sed "s/%SERVICE_PASSWORD%/${SERVICE_PASSWORD}/g" -i ${SWIFT_CONF_DIR}/proxy-server.conf
+
+    sed "s/%SERVICE_TENANT_NAME%/${SERVICE_TENANT_NAME}/g" -i ${SWIFT_CONF_DIR}/dispersion.conf
+    sed "s/%SERVICE_USER%/${SRCNAME}/g" -i ${SWIFT_CONF_DIR}/dispersion.conf
+    sed "s/%SERVICE_PASSWORD%/${SERVICE_PASSWORD}/g" -i ${SWIFT_CONF_DIR}/dispersion.conf
+
+    sed "s/%ADMIN_TENANT_NAME%/admin/g" -i ${SWIFT_CONF_DIR}/test.conf
+    sed "s/%ADMIN_USER%/admin/g" -i ${SWIFT_CONF_DIR}/test.conf
+    sed "s/%ADMIN_PASSWORD%/${ADMIN_PASSWORD}/g" -i ${SWIFT_CONF_DIR}/test.conf
+    sed "s/%SERVICE_TENANT_NAME%/${SERVICE_TENANT_NAME}/g" -i ${SWIFT_CONF_DIR}/test.conf
+    sed "s/%SERVICE_USER%/${SRCNAME}/g" -i ${SWIFT_CONF_DIR}/test.conf
+    sed "s/%SERVICE_PASSWORD%/${SERVICE_PASSWORD}/g" -i ${SWIFT_CONF_DIR}/test.conf
+    sed "s/%DEMO_USER%/demo/g" -i ${SWIFT_CONF_DIR}/test.conf
+    sed "s/%DEMO_PASSWORD%/${ADMIN_PASSWORD}/g" -i ${SWIFT_CONF_DIR}/test.conf
+
+    sed "s/%SWIFT_BACKING_FILE_SIZE%/${SWIFT_BACKING_FILE_SIZE}/g" -i ${D}${sysconfdir}/init.d/swift
+    sed "s/%CONTROLLER_IP%/${CONTROLLER_IP}/g" -i ${D}${sysconfdir}/init.d/swift
+
     cp -r test ${D}/${PYTHON_SITEPACKAGES_DIR}/${SRCNAME}/
     grep -rl '^from test' ${D}/${PYTHON_SITEPACKAGES_DIR}/${SRCNAME}/test | xargs sed 's/^from test/from swift\.test/g' -i
 
 }
 
-CHEF_SERVICES_CONF_FILES := " \
-    ${sysconfdir}/${SRCNAME}/test.conf \
-    ${sysconfdir}/${SRCNAME}/dispersion.conf \
-    ${sysconfdir}/${SRCNAME}/proxy-server.conf \
-    ${sysconfdir}/init.d/swift \
-    "
-
 pkg_postinst_${SRCNAME}-setup () {
     if [ "x$D" != "x" ]; then
         exit 1
diff --git a/meta-openstack/recipes-extended/cloud-init/cloud-init_0.7.6.bb b/meta-openstack/recipes-extended/cloud-init/cloud-init_0.7.6.bb
index 01ee924..c6b3529 100644
--- a/meta-openstack/recipes-extended/cloud-init/cloud-init_0.7.6.bb
+++ b/meta-openstack/recipes-extended/cloud-init/cloud-init_0.7.6.bb
@@ -28,19 +28,15 @@ do_install_prepend() {
 
 do_install_append() {
     install -m 0755 ${WORKDIR}/cloud.cfg ${D}${sysconfdir}/cloud/cloud.cfg
-    if [ -z "${OPENSTACKCHEF_ENABLED}" ]; then
-        sed -e "s:%MANAGE_HOSTS%:${MANAGE_HOSTS}:g" -i ${D}${sysconfdir}/cloud/cloud.cfg
-        sed -e "s:%HOSTNAME%:${HOSTNAME}:g" -i ${D}${sysconfdir}/cloud/cloud.cfg
-    fi
+
+    sed -e "s:%MANAGE_HOSTS%:${MANAGE_HOSTS}:g" -i ${D}${sysconfdir}/cloud/cloud.cfg
+    sed -e "s:%HOSTNAME%:${HOSTNAME}:g" -i ${D}${sysconfdir}/cloud/cloud.cfg
+
     ln -s ${libdir}/${BPN}/uncloud-init ${D}${sysconfdir}/cloud/uncloud-init
     ln -s ${libdir}/${BPN}/write-ssh-key-fingerprints ${D}${sysconfdir}/cloud/write-ssh-key-fingerprints
 }
 
-inherit setuptools update-rc.d openstackchef
-
-CHEF_SERVICES_CONF_FILES := " \
-    ${sysconfdir}/cloud/cloud.cfg \
-    "
+inherit setuptools update-rc.d
 
 PACKAGES += "${PN}-systemd"
 
diff --git a/meta-openstack/recipes-extended/glusterfs/glusterfs_3.4.2.bbappend b/meta-openstack/recipes-extended/glusterfs/glusterfs_3.4.2.bbappend
deleted file mode 100644
index b52d27a..0000000
--- a/meta-openstack/recipes-extended/glusterfs/glusterfs_3.4.2.bbappend
+++ /dev/null
@@ -1,6 +0,0 @@
-#
-# Copyright (C) 2013 Wind River Systems, Inc.
-#
-inherit openstackchef
-
-
diff --git a/meta-openstack/recipes-extended/rabbitmq/rabbitmq-server_3.2.4.bb b/meta-openstack/recipes-extended/rabbitmq/rabbitmq-server_3.2.4.bb
index 6ac3e59..101d098 100644
--- a/meta-openstack/recipes-extended/rabbitmq/rabbitmq-server_3.2.4.bb
+++ b/meta-openstack/recipes-extended/rabbitmq/rabbitmq-server_3.2.4.bb
@@ -46,7 +46,7 @@ do_install() {
     mv ${D}/plugins ${RABBIT_LIB_DIR}/plugins
 }
 
-inherit useradd update-rc.d openstackchef
+inherit useradd update-rc.d
 
 USERADD_PACKAGES = "${PN}"
 GROUPADD_PARAM_${PN} = "--system rabbitmq"
diff --git a/meta-openstack/recipes-support/deploychef/deploychef_0.1.bb b/meta-openstack/recipes-support/deploychef/deploychef_0.1.bb
deleted file mode 100644
index 6237538..0000000
--- a/meta-openstack/recipes-support/deploychef/deploychef_0.1.bb
+++ /dev/null
@@ -1,100 +0,0 @@
-#
-# Copyright (C) 2014 Wind River Systems, Inc.
-#
-SUMMARY = "For the provisioning of OpenStack nodes"
-DESCRIPTION = "There are a number of variables that are baked into Openstack \
-at build time, for example the ip address of a compute or controller node. \
-This means that when a new compute or controller node boots up, it will \
-have an ip address that differs from its currently assigned ip address \
-This package facilitates the recreation of openstack script and \ 
-configuration files, as well as their placement in the appropriate directories on \
-the files system on a compute/controller/allinone node at runtime"
-
-LICENSE = "MIT"
-LIC_FILES_CHKSUM = "file://${COREBASE}/LICENSE;md5=4d92cd373abda3937c2bc47fbc49d690 \
-                    file://${COREBASE}/meta/COPYING.MIT;md5=3da9cfbcb788c80a0384361b4de20420"
-
-PR = "r1"
-
-
-RDEPENDS_${PN} = "chef"
-SRC_URI = "\
-    file://deploychef.init  \
-    file://attributes.json  \
-    file://config.rb \
-    file://default_recipe.rb \
-    file://run-openstackchef \
-    file://run-postinsts \
-    file://run-deploychef \
-    file://service-shutdown \
-    file://deploychef-inc \
-    "
-inherit update-rc.d identity hosts default_configs
-
-S = "${WORKDIR}"
-#Since this package does not need to be ran for each boot-up
-#There is no need for an init scrpt so install it in /opt/${BPN}
-DEPLOYCHEF_ROOT_DIR ?= "/opt/${BPN}"
-POSTINSTS_DIR ?= "rpm-postinsts"
-
-#Provide a mechanism for these strings to be over-written if necessary
-COOKBOOK_DIR = "${DEPLOYCHEF_ROOT_DIR}/cookbooks/"
-ATTRIBUTE_DIR = "${DEPLOYCHEF_ROOT_DIR}/cookbooks/openstack/attributes/"
-RECIPE_DIR = "${DEPLOYCHEF_ROOT_DIR}/cookbooks/openstack/recipes/"
-
-FILES_${PN} += " \
-    ${DEPLOYCHEF_ROOT_DIR}/* \
-    ${DEPLOYCHEF_ROOT_DIR}/conf-templates/* \
-    ${DEPLOYCHEF_ROOT_DIR}/cookbooks/* \
-    ${DEPLOYCHEF_ROOT_DIR}/cookbooks/openstack/recipes/* \
-    ${DEPLOYCHEF_ROOT_DIR}/cookbooks/openstack/templates/* \
-    ${DEPLOYCHEF_ROOT_DIR}/cookbooks/openstack/templates/default \
-    ${DEPLOYCHEF_ROOT_DIR}/cookbooks/openstack/attributes \
-    ${DEPLOYCHEF_ROOT_DIR}/cookbooks/openstack/attributes/* \
-    "
-#Read the module config files and make them into
-#chef-solo templates
-do_install() {
-    if ${@bb.utils.contains('DISTRO_FEATURES', 'sysvinit', 'true', 'false', d)}; then
-        #This script will make templates out of postinst script before they
-        #have a chance to run
-        install -d ${D}${sysconfdir}/init.d
-        install -m 0755 ${S}/${BPN}.init ${D}${sysconfdir}/init.d/${BPN}
-
-        install -d ${D}/${DEPLOYCHEF_ROOT_DIR}
-        #Copy the template configuration scripts to image directory
-        install -m 0644 ${S}/config.rb ${D}/${DEPLOYCHEF_ROOT_DIR}/config.rb
-        install -m 0644 ${S}/attributes.json ${D}/${DEPLOYCHEF_ROOT_DIR}/attributes.json
-        install -m 0755 ${S}/run-postinsts ${D}/${DEPLOYCHEF_ROOT_DIR}/run-postinsts
-        install -m 0755 ${S}/run-openstackchef ${D}/${DEPLOYCHEF_ROOT_DIR}/run-openstackchef
-        install -m 0755 ${S}/run-deploychef  ${D}/${DEPLOYCHEF_ROOT_DIR}/run-deploychef
-        install -m 0755 ${S}/service-shutdown  ${D}/${DEPLOYCHEF_ROOT_DIR}/service-shutdown
-        install -m 0644 ${S}/deploychef-inc  ${D}/${DEPLOYCHEF_ROOT_DIR}/deploychef-inc
-        #Copy the chefsolo recipe file to chefsolo recipe folder
-        install -d ${D}/${RECIPE_DIR}
-        install -m 0644 ${S}/default_recipe.rb  ${D}/${RECIPE_DIR}/default.rb
-    fi
-}
-
-do_install_append() {
-
-    #Replace all required placeholders
-    for file in "${D}/${DEPLOYCHEF_ROOT_DIR}/run-deploychef \ 
-        ${D}/${DEPLOYCHEF_ROOT_DIR}/service-shutdown \
-        ${D}/${DEPLOYCHEF_ROOT_DIR}/deploychef-inc \
-        ${D}/${DEPLOYCHEF_ROOT_DIR}/run-postinsts \
-        ${D}/${DEPLOYCHEF_ROOT_DIR}/run-openstackchef \
-        ${D}/${RECIPE_DIR}/default.rb \
-        ${D}/${sysconfdir}/init.d/${BPN} "; do
-
-        sed -i s:%SYSCONFDIR%:${sysconfdir}:g $file
-        sed -i s:%POSTINSTS_DIR%:${POSTINSTS_DIR}:g $file
-        sed -i s:%PACKAGE_NAME%:${BPN}:g $file
-        sed -i s:%DEPLOYCHEF_ROOT_DIR%:${DEPLOYCHEF_ROOT_DIR}:g $file
-    done
-}
-
-INITSCRIPT_PACKAGES = "${BPN}"
-INITSCRIPT_NAME_${BPN} = "${BPN}"
-INITSCRIPT_PARAMS = "start 96 S ."
-
diff --git a/meta-openstack/recipes-support/deploychef/files/deploychef.init b/meta-openstack/recipes-support/deploychef/files/deploychef.init
deleted file mode 100644
index 22f318b..0000000
--- a/meta-openstack/recipes-support/deploychef/files/deploychef.init
+++ /dev/null
@@ -1,26 +0,0 @@
-#!/bin/bash
-#After this script executes, it runs the 'run-openstackchef' script found in
-#/opt/deploychef/ directory. After that, all the 
-#configuration files that were registered with openstackchef class are
-#created using run-time environment variables and default values
-# found in /opt/deploychef/cookbooks/openstack/attributes/default.rb
-deploychef_root=%DEPLOYCHEF_ROOT_DIR%
-LOG_DIR=/var/log/%PACKAGE_NAME%
-LOG_FILE=$LOG_DIR/%PACKAGE_NAME%.log
-script_file=$deploychef_root/run-openstackchef
-chefsolo_success_file="%SYSCONFDIR%/chefsolo.ran"
-if [ ! -f $chefsolo_success_file ]; then
-    if [ -f $script_file ] ; then
-        mkdir -p $LOG_DIR
-        #Remove deploy init script if present
-        rm -f /etc/init.d/deploy 2>/dev/null
-        cd $deploychef_root
-        . $(basename $script_file)
-        if [ $? = 0 ]; then
-            echo "Deploychef successfully created chefsolo configuration files" \
-            > $LOG_FILE
-        else
-            echo "deploychef ERROR: $i failed." > $LOG_FILE 
-        fi
-    fi
-fi
diff --git a/meta-openstack/recipes-support/deploychef/files/run-deploychef b/meta-openstack/recipes-support/deploychef/files/run-deploychef
deleted file mode 100644
index 4fd41d8..0000000
--- a/meta-openstack/recipes-support/deploychef/files/run-deploychef
+++ /dev/null
@@ -1,33 +0,0 @@
-#!/bin/bash
-# run-deploychef
-#
-# Copyright (c) 2014 Wind River Systems, Inc.
-#
-# Permission is hereby granted, free of charge, to any person obtaining a copy
-# of this software and associated documentation files (the "Software"), to deal
-# in the Software without restriction, including without limitation the rights
-# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-# copies of the Software, and to permit persons to whom the Software is
-# furnished to do so, subject to the following conditions:
-#
-# The above copyright notice and this permission notice shall be included in
-# all copies or substantial portions of the Software.
-
-# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-# THE SOFTWARE.
-#
-#
-# This file is the main script file that reconfigures the stack when any of 
-# the attributes variables change at run-time.
-#
-#Shutdown all registered services
-. ./service-shutdown
-#Re-generate configuration files from template files
-. ./run-openstackchef
-#Run post-install script and then start services
-. ./run-postinsts
diff --git a/meta-openstack/recipes-support/deploychef/files/run-openstackchef b/meta-openstack/recipes-support/deploychef/files/run-openstackchef
deleted file mode 100644
index 18e6a68..0000000
--- a/meta-openstack/recipes-support/deploychef/files/run-openstackchef
+++ /dev/null
@@ -1,30 +0,0 @@
-#!/bin/bash
-# run-openstackchef
-#
-# Copyright (c) 2014 Wind River Systems, Inc.
-#
-# Permission is hereby granted, free of charge, to any person obtaining a copy
-# of this software and associated documentation files (the "Software"), to deal
-# in the Software without restriction, including without limitation the rights
-# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-# copies of the Software, and to permit persons to whom the Software is
-# furnished to do so, subject to the following conditions:
-#
-# The above copyright notice and this permission notice shall be included in
-# all copies or substantial portions of the Software.
-
-# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-# THE SOFTWARE.
-#
-#
-# This script just runs chefsolo to generate our configuration files
-#
-#
-#Use chefsolo to generate configuration files/scripts base on 
-#templates if templates/default
-chef-solo -f -c config.rb  -j attributes.json
diff --git a/meta-openstack/recipes-support/postgresql/postgresql_9.%.bbappend b/meta-openstack/recipes-support/postgresql/postgresql_9.%.bbappend
index 42ceaf8..22dae71 100644
--- a/meta-openstack/recipes-support/postgresql/postgresql_9.%.bbappend
+++ b/meta-openstack/recipes-support/postgresql/postgresql_9.%.bbappend
@@ -3,7 +3,7 @@ FILESEXTRAPATHS_prepend := "${THISDIR}/${PN}:"
 SRC_URI += "file://postgresql \
             file://postgresql-init"
 
-inherit useradd update-rc.d identity hosts openstackchef
+inherit useradd update-rc.d identity hosts
 
 PACKAGECONFIG[libxml] = "--with-libxml CFLAGS=-I${STAGING_INCDIR}/libxml2,--without-libxml,libxml2,libxml2"
 
@@ -16,25 +16,19 @@ do_install_append() {
     install -d ${D}${sysconfdir}/init.d/
     install -m 0755 ${WORKDIR}/postgresql ${INIT_D_DEST_DIR}/postgresql
     install -m 0755 ${WORKDIR}/postgresql-init ${INIT_D_DEST_DIR}/postgresql-init
-    if [ -z "${OPENSTACKCHEF_ENABLED}" ]; then
-        sed -e "s:%DB_DATADIR%:${DB_DATADIR}:g" -i ${INIT_D_DEST_DIR}/postgresql
-        sed -e "s:%DB_DATADIR%:${DB_DATADIR}:g" -i ${INIT_D_DEST_DIR}/postgresql-init
 
-        sed -e "s:%DB_USER%:${DB_USER}:g" -i ${INIT_D_DEST_DIR}/postgresql-init
-        sed -e "s:%DB_PASSWORD%:${DB_PASSWORD}:g" -i ${INIT_D_DEST_DIR}/postgresql-init
+    sed -e "s:%DB_DATADIR%:${DB_DATADIR}:g" -i ${INIT_D_DEST_DIR}/postgresql
+    sed -e "s:%DB_DATADIR%:${DB_DATADIR}:g" -i ${INIT_D_DEST_DIR}/postgresql-init
 
-        sed -e "s:%CONTROLLER_IP%:${CONTROLLER_IP}:g" -i ${INIT_D_DEST_DIR}/postgresql-init
-        sed -e "s:%CONTROLLER_HOST%:${CONTROLLER_HOST}:g" -i ${INIT_D_DEST_DIR}/postgresql-init
+    sed -e "s:%DB_USER%:${DB_USER}:g" -i ${INIT_D_DEST_DIR}/postgresql-init
+    sed -e "s:%DB_PASSWORD%:${DB_PASSWORD}:g" -i ${INIT_D_DEST_DIR}/postgresql-init
 
-        sed -e "s:%COMPUTE_IP%:${COMPUTE_IP}:g" -i ${INIT_D_DEST_DIR}/postgresql-init
-        sed -e "s:%COMPUTE_HOST%:${COMPUTE_HOST}:g" -i ${INIT_D_DEST_DIR}/postgresql-init
-    fi
-}
+    sed -e "s:%CONTROLLER_IP%:${CONTROLLER_IP}:g" -i ${INIT_D_DEST_DIR}/postgresql-init
+    sed -e "s:%CONTROLLER_HOST%:${CONTROLLER_HOST}:g" -i ${INIT_D_DEST_DIR}/postgresql-init
 
-CHEF_SERVICES_CONF_FILES := "\
-    ${sysconfdir}/init.d/postgresql \
-    ${sysconfdir}/init.d/postgresql-init \
-    "
+    sed -e "s:%COMPUTE_IP%:${COMPUTE_IP}:g" -i ${INIT_D_DEST_DIR}/postgresql-init
+    sed -e "s:%COMPUTE_HOST%:${COMPUTE_HOST}:g" -i ${INIT_D_DEST_DIR}/postgresql-init
+}
 
 RDEPENDS_${PN} += "postgresql-timezone eglibc-utils update-rc.d"
 USERADD_PACKAGES = "${PN}"
-- 
2.7.4



More information about the meta-virtualization mailing list