summaryrefslogtreecommitdiffstats
path: root/meta-openstack/recipes-devtools/python/python-neutron_git.bb
diff options
context:
space:
mode:
authorMustapha Lansana <Mustapha.Lansana@windriver.com>2014-07-30 21:36:33 -0400
committerBruce Ashfield <bruce.ashfield@windriver.com>2014-09-26 09:09:22 -0400
commitb23d78ca58c54251138a9edabeaab3982e4eebc8 (patch)
tree1f0006966c9a80e29356bbf294140da77a185c30 /meta-openstack/recipes-devtools/python/python-neutron_git.bb
parentd42684ccde8f2dcd1fea0fc1f2ec7df6c89a0ce6 (diff)
downloadmeta-cloud-services-b23d78ca58c54251138a9edabeaab3982e4eebc8.tar.gz
cinder/glance/neutron: support for openstackchef class
Openstackchef enables us to recreate configuration files for services in an openstack installation. It does this by creating template file(s) out of openstack services' configuration file(s) exposed to it. The following services are inheriting the openstack class and then exposing a set of configuration files to the class. The configuration files are assumed to have been installed in the image in the service's WORKDIR and are exposed to openstackchef by assigning them to the variable CHEF_SERVICES_CONF_FILES. For legacy reasons, the string OPENSTACKCHEF_ENABLED is defined in openstackchef class, but it can be overwritten to an empty string in a .bb, .class, .bbapend or local.conf file when openstackchef support is not desired. This enables all of these services to be built without openstackchef support. In addition, it prevents the recipes for these sevices from substituting the placeholders in their configuration files when inheriting openstackchef. However, since services like python-glance and python-cinder install some of their configuration files to the image directory during the substitution, it means that these files at not installed when the substitutions are not required. Therefore, we have taken the liberty to install those missing configuration files before the check for whether or not substitutions should be made, without having any side effect on when the substitutions are required. At build-time, openstackchef makes chef-solo templates out of the registered files. And 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. In making template files out of configuration files, openstackchef makes a simple placeholder/value substitution in the configuration files. However, it provides a mechanism for services inheriting the class to define a special shell callback function which can do more than a simple placeholder/value substitution. This special callback function is exposed to openstackchef by assigning it to the variable CHEF_SERVICES_SPECIAL_FUNC. And the name of the file passed back to the shell callback function as an argument is set to the variable CHEF_SERVICES_FILE_NAME by openstackchef. In this patch set, only python-neutron and python-glance recipe files makes special substitutions. Signed-off-by: Mustapha Lansana <Mustapha.Lansana@windriver.com>
Diffstat (limited to 'meta-openstack/recipes-devtools/python/python-neutron_git.bb')
-rw-r--r--meta-openstack/recipes-devtools/python/python-neutron_git.bb67
1 files changed, 43 insertions, 24 deletions
diff --git a/meta-openstack/recipes-devtools/python/python-neutron_git.bb b/meta-openstack/recipes-devtools/python/python-neutron_git.bb
index 295db97..f961487 100644
--- a/meta-openstack/recipes-devtools/python/python-neutron_git.bb
+++ b/meta-openstack/recipes-devtools/python/python-neutron_git.bb
@@ -25,7 +25,7 @@ PV="2014.2.b3+git${SRCPV}"
25 25
26S = "${WORKDIR}/git" 26S = "${WORKDIR}/git"
27 27
28inherit setuptools update-rc.d identity hosts default_configs 28inherit setuptools update-rc.d identity hosts default_configs openstackchef
29 29
30SERVICECREATE_PACKAGES = "${SRCNAME}-setup" 30SERVICECREATE_PACKAGES = "${SRCNAME}-setup"
31KEYSTONE_HOST="${CONTROLLER_IP}" 31KEYSTONE_HOST="${CONTROLLER_IP}"
@@ -60,11 +60,11 @@ do_install_append() {
60 install -m 600 ${S}/etc/api-paste.ini ${NEUTRON_CONF_DIR}/ 60 install -m 600 ${S}/etc/api-paste.ini ${NEUTRON_CONF_DIR}/
61 install -m 600 ${S}/etc/policy.json ${NEUTRON_CONF_DIR}/ 61 install -m 600 ${S}/etc/policy.json ${NEUTRON_CONF_DIR}/
62 62
63 sed -e "s:%SERVICE_TENANT_NAME%:${SERVICE_TENANT_NAME}:g" \ 63 #sed -e "s:%SERVICE_TENANT_NAME%:${SERVICE_TENANT_NAME}:g" \
64 -i ${NEUTRON_CONF_DIR}/neutron.conf 64 # -i ${NEUTRON_CONF_DIR}/neutron.conf
65 sed -e "s:%SERVICE_USER%:${SRCNAME}:g" -i ${NEUTRON_CONF_DIR}/neutron.conf 65 #sed -e "s:%SERVICE_USER%:${SRCNAME}:g" -i ${NEUTRON_CONF_DIR}/neutron.conf
66 sed -e "s:%SERVICE_PASSWORD%:${SERVICE_PASSWORD}:g" \ 66 #sed -e "s:%SERVICE_PASSWORD%:${SERVICE_PASSWORD}:g" \
67 -i ${NEUTRON_CONF_DIR}/neutron.conf 67 # -i ${NEUTRON_CONF_DIR}/neutron.conf
68 sed -e "s:^# core_plugin.*:core_plugin = neutron.plugins.openvswitch.ovs_neutron_plugin.OVSNeutronPluginV2:g" \ 68 sed -e "s:^# core_plugin.*:core_plugin = neutron.plugins.openvswitch.ovs_neutron_plugin.OVSNeutronPluginV2:g" \
69 -i ${NEUTRON_CONF_DIR}/neutron.conf 69 -i ${NEUTRON_CONF_DIR}/neutron.conf
70 70
@@ -74,15 +74,7 @@ do_install_append() {
74 sed -e "s:^# notify_nova_on_port_data_changes.*:notify_nova_on_port_data_changes = False:g" \ 74 sed -e "s:^# notify_nova_on_port_data_changes.*:notify_nova_on_port_data_changes = False:g" \
75 -i ${NEUTRON_CONF_DIR}/neutron.conf 75 -i ${NEUTRON_CONF_DIR}/neutron.conf
76 76
77 sed -e "s:^# rabbit_host =.*:rabbit_host = ${CONTROLLER_IP}:" -i ${NEUTRON_CONF_DIR}/neutron.conf 77 sed -e "s:^# rabbit_host =.*:rabbit_host = %CONTROLLER_IP%:" -i ${NEUTRON_CONF_DIR}/neutron.conf
78
79 for file in plugins/openvswitch/ovs_neutron_plugin.ini plugins/linuxbridge/linuxbridge_conf.ini
80 do
81 sed -e "s:%DB_USER%:${DB_USER}:g" -i ${NEUTRON_CONF_DIR}/${file}
82 sed -e "s:%DB_PASSWORD%:${DB_PASSWORD}:g" -i ${NEUTRON_CONF_DIR}/${file}
83 sed -e "s:%CONTROLLER_IP%:${CONTROLLER_IP}:g" -i ${NEUTRON_CONF_DIR}/${file}
84 sed -e "s:%CONTROLLER_HOST%:${CONTROLLER_HOST}:g" -i ${NEUTRON_CONF_DIR}/${file}
85 done
86 78
87 PLUGIN=openvswitch 79 PLUGIN=openvswitch
88 ARGS="--config-file=${sysconfdir}/${SRCNAME}/neutron.conf --config-file=${sysconfdir}/${SRCNAME}/plugins/openvswitch/ovs_neutron_plugin.ini" 80 ARGS="--config-file=${sysconfdir}/${SRCNAME}/neutron.conf --config-file=${sysconfdir}/${SRCNAME}/plugins/openvswitch/ovs_neutron_plugin.ini"
@@ -121,15 +113,23 @@ do_install_append() {
121 install -m 0755 ${WORKDIR}/neutron-$AGENT.init.sh ${D}${sysconfdir}/init.d/neutron-$AGENT-agent 113 install -m 0755 ${WORKDIR}/neutron-$AGENT.init.sh ${D}${sysconfdir}/init.d/neutron-$AGENT-agent
122 install -m 600 ${WORKDIR}/${AGENT}_agent.ini ${NEUTRON_CONF_DIR}/ 114 install -m 600 ${WORKDIR}/${AGENT}_agent.ini ${NEUTRON_CONF_DIR}/
123 fi 115 fi
124 sed -e "s:%SERVICE_TENANT_NAME%:${SERVICE_TENANT_NAME}:g" \ 116 if [ -z "${OPENSTACKCHEF_ENABLED}" ]; then
125 -i ${NEUTRON_CONF_DIR}/metadata_agent.ini 117 for file in plugins/openvswitch/ovs_neutron_plugin.ini \
126 sed -e "s:%SERVICE_USER%:${SRCNAME}:g" \ 118 plugins/linuxbridge/linuxbridge_conf.ini neutron.conf metadata_agent.ini; do
127 -i ${NEUTRON_CONF_DIR}/metadata_agent.ini 119 sed -e "s:%SERVICE_TENANT_NAME%:${SERVICE_TENANT_NAME}:g" \
128 sed -e "s:%SERVICE_PASSWORD%:${SERVICE_PASSWORD}:g" \ 120 -i ${NEUTRON_CONF_DIR}/$file
129 -i ${NEUTRON_CONF_DIR}/metadata_agent.ini 121 sed -e "s:%SERVICE_USER%:${SRCNAME}:g" \
130 sed -e "s:%METADATA_SHARED_SECRET%:${METADATA_SHARED_SECRET}:g" \ 122 -i ${NEUTRON_CONF_DIR}/$file
131 -i ${NEUTRON_CONF_DIR}/metadata_agent.ini 123 sed -e "s:%SERVICE_PASSWORD%:${SERVICE_PASSWORD}:g" \
132 124 -i ${NEUTRON_CONF_DIR}/$file
125 sed -e "s:%METADATA_SHARED_SECRET%:${METADATA_SHARED_SECRET}:g" \
126 -i ${NEUTRON_CONF_DIR}/$file
127 sed -e "s:%DB_USER%:${DB_USER}:g" -i ${NEUTRON_CONF_DIR}/$file
128 sed -e "s:%DB_PASSWORD%:${DB_PASSWORD}:g" -i ${NEUTRON_CONF_DIR}/$file
129 sed -e "s:%CONTROLLER_IP%:${CONTROLLER_IP}:g" -i ${NEUTRON_CONF_DIR}/$file
130 sed -e "s:%CONTROLLER_HOST%:${CONTROLLER_HOST}:g" -i ${NEUTRON_CONF_DIR}/$file
131 done
132 fi
133 sed -e "s:^auth_host.*:#auth_host:g" -i ${NEUTRON_CONF_DIR}/neutron.conf 133 sed -e "s:^auth_host.*:#auth_host:g" -i ${NEUTRON_CONF_DIR}/neutron.conf
134 sed -e "s:^auth_port.*:#auth_port:g" -i ${NEUTRON_CONF_DIR}/neutron.conf 134 sed -e "s:^auth_port.*:#auth_port:g" -i ${NEUTRON_CONF_DIR}/neutron.conf
135 sed -e "s:^auth_protocol.*:#auth_protocol:g" -i ${NEUTRON_CONF_DIR}/neutron.conf 135 sed -e "s:^auth_protocol.*:#auth_protocol:g" -i ${NEUTRON_CONF_DIR}/neutron.conf
@@ -157,6 +157,25 @@ pkg_postinst_${SRCNAME}-setup () {
157 --config-file /etc/neutron/plugins/openvswitch/ovs_neutron_plugin.ini upgrade head 157 --config-file /etc/neutron/plugins/openvswitch/ovs_neutron_plugin.ini upgrade head
158} 158}
159 159
160CHEF_SERVICES_CONF_FILES := " \
161 ${sysconfdir}/${SRCNAME}/neutron.conf \
162 ${sysconfdir}/${SRCNAME}/metadata_agent.ini \
163 ${sysconfdir}/${SRCNAME}/plugins/openvswitch/ovs_neutron_plugin.ini \
164 ${sysconfdir}/${SRCNAME}/plugins/linuxbridge/linuxbridge_conf.ini \
165 "
166deploychef_services_special_func(){
167 #This function is a callback function for the deploychef .bbclass
168 #We define this special callback funtion because we are doing
169 #more than a placeholder substitution. The variable CHEF_SERVICES_FILE_NAME
170 #is defined in deploychef_framework.bbclass
171 if [ -n "${CHEF_SERVICES_FILE_NAME}" ]; then
172 sed "s:^# rabbit_host =.*:rabbit_host = %CONTROLLER_IP%:" -i \
173 ${CHEF_SERVICES_FILE_NAME}
174 fi
175}
176
177CHEF_SERVICES_SPECIAL_FUNC := "deploychef_services_special_func"
178
160pkg_postinst_${SRCNAME}-plugin-openvswitch-setup () { 179pkg_postinst_${SRCNAME}-plugin-openvswitch-setup () {
161 if [ "x$D" != "x" ]; then 180 if [ "x$D" != "x" ]; then
162 exit 1 181 exit 1