Browse code

Configure and launch Heat REST API.

This is a REST API in the same style as other OpenStack APIs.

This also creates a new endpoint for the REST API which uses the
serivce type 'orchestration'. The old endpoint now has the service
type 'cloudformation'.

This matches the pattern where the native openstack API gets a
generic service type while the emulated EC2 API gets a specific
type (eg, object-store, s3).

There will be breakage for the time period where only one of this
change and https://review.openstack.org/#/c/14263/ are approved,
since keystone will have the incorrect service type for that period.

Change-Id: I6a0d51a63da8017d375b4c065c4c9079dfca8fe3

Steve Baker authored on 2012/10/10 09:19:10
Showing 3 changed files
... ...
@@ -166,15 +166,25 @@ if [[ "$ENABLED_SERVICES" =~ "heat" ]]; then
166 166
                            --role_id $ADMIN_ROLE
167 167
     if [[ "$KEYSTONE_CATALOG_BACKEND" = 'sql' ]]; then
168 168
         HEAT_CFN_SERVICE=$(get_id keystone service-create \
169
-            --name=heat \
170
-            --type=orchestration \
171
-            --description="Heat Service")
169
+            --name=heat-cfn \
170
+            --type=cloudformation \
171
+            --description="Heat CloudFormation Service")
172 172
         keystone endpoint-create \
173 173
             --region RegionOne \
174 174
             --service_id $HEAT_CFN_SERVICE \
175 175
             --publicurl "http://$SERVICE_HOST:$HEAT_API_CFN_PORT/v1" \
176 176
             --adminurl "http://$SERVICE_HOST:$HEAT_API_CFN_PORT/v1" \
177 177
             --internalurl "http://$SERVICE_HOST:$HEAT_API_CFN_PORT/v1"
178
+        HEAT_SERVICE=$(get_id keystone service-create \
179
+            --name=heat \
180
+            --type=orchestration \
181
+            --description="Heat Service")
182
+        keystone endpoint-create \
183
+            --region RegionOne \
184
+            --service_id $HEAT_SERVICE \
185
+            --publicurl "http://$SERVICE_HOST:$HEAT_API_PORT/v1/\$(tenant_id)s" \
186
+            --adminurl "http://$SERVICE_HOST:$HEAT_API_PORT/v1/\$(tenant_id)s" \
187
+            --internalurl "http://$SERVICE_HOST:$HEAT_API_PORT/v1/\$(tenant_id)s"
178 188
     fi
179 189
 fi
180 190
 
... ...
@@ -51,6 +51,8 @@ function configure_heat() {
51 51
     HEAT_METADATA_PORT=${HEAT_METADATA_PORT:-8002}
52 52
     HEAT_API_CW_HOST=${HEAT_API_CW_HOST:-$SERVICE_HOST}
53 53
     HEAT_API_CW_PORT=${HEAT_API_CW_PORT:-8003}
54
+    HEAT_API_HOST=${HEAT_API_HOST:-$SERVICE_HOST}
55
+    HEAT_API_PORT=${HEAT_API_PORT:-8004}
54 56
 
55 57
     # cloudformation api
56 58
     HEAT_API_CFN_CONF=$HEAT_CONF_DIR/heat-api-cfn.conf
... ...
@@ -81,6 +83,35 @@ function configure_heat() {
81 81
     iniset $HEAT_API_CFN_PASTE_INI filter:ec2authtoken auth_uri $KEYSTONE_SERVICE_PROTOCOL://$KEYSTONE_SERVICE_HOST:$KEYSTONE_SERVICE_PORT/v2.0
82 82
     iniset $HEAT_API_CFN_PASTE_INI filter:ec2authtoken keystone_ec2_uri $KEYSTONE_SERVICE_PROTOCOL://$KEYSTONE_SERVICE_HOST:$KEYSTONE_SERVICE_PORT/v2.0/ec2tokens
83 83
 
84
+    # openstack api
85
+    HEAT_API_CONF=$HEAT_CONF_DIR/heat-api.conf
86
+    cp $HEAT_DIR/etc/heat/heat-api.conf $HEAT_API_CONF
87
+    iniset $HEAT_API_CONF DEFAULT debug True
88
+    inicomment $HEAT_API_CONF DEFAULT log_file
89
+    iniset $HEAT_API_CONF DEFAULT use_syslog $SYSLOG
90
+    iniset $HEAT_API_CONF DEFAULT bind_host $HEAT_API_HOST
91
+    iniset $HEAT_API_CONF DEFAULT bind_port $HEAT_API_PORT
92
+
93
+    if is_service_enabled rabbit; then
94
+        iniset $HEAT_API_CONF DEFAULT rpc_backend heat.openstack.common.rpc.impl_kombu
95
+        iniset $HEAT_API_CONF DEFAULT rabbit_password $RABBIT_PASSWORD
96
+        iniset $HEAT_API_CONF DEFAULT rabbit_host $RABBIT_HOST
97
+    elif is_service_enabled qpid; then
98
+        iniset $HEAT_API_CONF DEFAULT rpc_backend heat.openstack.common.rpc.impl_qpid
99
+    fi
100
+
101
+    HEAT_API_PASTE_INI=$HEAT_CONF_DIR/heat-api-paste.ini
102
+    cp $HEAT_DIR/etc/heat/heat-api-paste.ini $HEAT_API_PASTE_INI
103
+    iniset $HEAT_API_PASTE_INI filter:authtoken auth_host $KEYSTONE_AUTH_HOST
104
+    iniset $HEAT_API_PASTE_INI filter:authtoken auth_port $KEYSTONE_AUTH_PORT
105
+    iniset $HEAT_API_PASTE_INI filter:authtoken auth_protocol $KEYSTONE_AUTH_PROTOCOL
106
+    iniset $HEAT_API_PASTE_INI filter:authtoken auth_uri $KEYSTONE_SERVICE_PROTOCOL://$KEYSTONE_SERVICE_HOST:$KEYSTONE_SERVICE_PORT/v2.0
107
+    iniset $HEAT_API_PASTE_INI filter:authtoken admin_tenant_name $SERVICE_TENANT_NAME
108
+    iniset $HEAT_API_PASTE_INI filter:authtoken admin_user heat
109
+    iniset $HEAT_API_PASTE_INI filter:authtoken admin_password $SERVICE_PASSWORD
110
+    iniset $HEAT_API_PASTE_INI filter:ec2authtoken auth_uri $KEYSTONE_SERVICE_PROTOCOL://$KEYSTONE_SERVICE_HOST:$KEYSTONE_SERVICE_PORT/v2.0
111
+    iniset $HEAT_API_PASTE_INI filter:ec2authtoken keystone_ec2_uri $KEYSTONE_SERVICE_PROTOCOL://$KEYSTONE_SERVICE_HOST:$KEYSTONE_SERVICE_PORT/v2.0/ec2tokens
112
+
84 113
     # engine
85 114
     HEAT_ENGINE_CONF=$HEAT_CONF_DIR/heat-engine.conf
86 115
     cp $HEAT_DIR/etc/heat/heat-engine.conf $HEAT_ENGINE_CONF
... ...
@@ -168,6 +199,7 @@ function install_heat() {
168 168
 # start_heat() - Start running processes, including screen
169 169
 function start_heat() {
170 170
     screen_it h-eng "cd $HEAT_DIR; bin/heat-engine --config-file=$HEAT_CONF_DIR/heat-engine.conf"
171
+    screen_it h-api "cd $HEAT_DIR; bin/heat-api --config-dir=$HEAT_CONF_DIR/heat-api.conf"
171 172
     screen_it h-api-cfn "cd $HEAT_DIR; bin/heat-api-cfn --config-dir=$HEAT_CONF_DIR/heat-api-cfn.conf"
172 173
     screen_it h-api-cw "cd $HEAT_DIR; bin/heat-api-cloudwatch --config-dir=$HEAT_CONF_DIR/heat-api-cloudwatch.conf"
173 174
     screen_it h-meta "cd $HEAT_DIR; bin/heat-metadata --config-dir=$HEAT_CONF_DIR/heat-metadata.conf"
... ...
@@ -1050,6 +1050,7 @@ if is_service_enabled key; then
1050 1050
     SERVICE_TOKEN=$SERVICE_TOKEN SERVICE_ENDPOINT=$SERVICE_ENDPOINT SERVICE_HOST=$SERVICE_HOST \
1051 1051
     S3_SERVICE_PORT=$S3_SERVICE_PORT KEYSTONE_CATALOG_BACKEND=$KEYSTONE_CATALOG_BACKEND \
1052 1052
     DEVSTACK_DIR=$TOP_DIR ENABLED_SERVICES=$ENABLED_SERVICES HEAT_API_CFN_PORT=$HEAT_API_CFN_PORT \
1053
+    HEAT_API_PORT=$HEAT_API_PORT \
1053 1054
         bash -x $FILES/keystone_data.sh
1054 1055
 
1055 1056
     # Set up auth creds now that keystone is bootstrapped