Skip to content

Commit ea4a53d

Browse files
committed
Stop devstack from exploding in paste config changes
Change-Id: I842691479c7c1b46bab627a1f436d9cef3f5148d
1 parent 471de7a commit ea4a53d

File tree

2 files changed

+21
-127
lines changed

2 files changed

+21
-127
lines changed

files/nova-api-paste.ini

Lines changed: 4 additions & 122 deletions
Original file line numberDiff line numberDiff line change
@@ -1,131 +1,13 @@
1-
############
2-
# Metadata #
3-
############
4-
[composite:metadata]
5-
use = egg:Paste#urlmap
6-
/: metaversions
7-
/latest: meta
8-
/2007-01-19: meta
9-
/2007-03-01: meta
10-
/2007-08-29: meta
11-
/2007-10-10: meta
12-
/2007-12-15: meta
13-
/2008-02-01: meta
14-
/2008-09-01: meta
15-
/2009-04-04: meta
16-
17-
[pipeline:metaversions]
18-
pipeline = ec2faultwrap logrequest metaverapp
19-
20-
[pipeline:meta]
21-
pipeline = ec2faultwrap logrequest metaapp
22-
23-
[app:metaverapp]
24-
paste.app_factory = nova.api.metadata.handler:Versions.factory
25-
26-
[app:metaapp]
27-
paste.app_factory = nova.api.metadata.handler:MetadataRequestHandler.factory
28-
29-
#######
30-
# EC2 #
31-
#######
32-
33-
[composite:ec2]
34-
use = egg:Paste#urlmap
35-
/services/Cloud: ec2cloud
36-
/services/Admin: ec2admin
37-
38-
[pipeline:ec2cloud]
39-
pipeline = ec2faultwrap logrequest totoken authtoken keystonecontext cloudrequest authorizer ec2executor
40-
41-
[pipeline:ec2admin]
42-
pipeline = ec2faultwrap logrequest totoken authtoken keystonecontext adminrequest authorizer ec2executor
43-
44-
[pipeline:ec2metadata]
45-
pipeline = ec2faultwrap logrequest ec2md
46-
47-
[pipeline:ec2versions]
48-
pipeline = ec2faultwrap logrequest ec2ver
49-
50-
[filter:ec2faultwrap]
51-
paste.filter_factory = nova.api.ec2:FaultWrapper.factory
52-
53-
[filter:logrequest]
54-
paste.filter_factory = nova.api.ec2:RequestLogging.factory
55-
56-
[filter:ec2lockout]
57-
paste.filter_factory = nova.api.ec2:Lockout.factory
58-
59-
[filter:totoken]
60-
paste.filter_factory = keystone.middleware.ec2_token:EC2Token.factory
61-
62-
[filter:ec2noauth]
63-
paste.filter_factory = nova.api.ec2:NoAuth.factory
64-
65-
[filter:authenticate]
66-
paste.filter_factory = nova.api.ec2:Authenticate.factory
67-
68-
[filter:cloudrequest]
69-
controller = nova.api.ec2.cloud.CloudController
70-
paste.filter_factory = nova.api.ec2:Requestify.factory
71-
72-
[filter:adminrequest]
73-
controller = nova.api.ec2.admin.AdminController
74-
paste.filter_factory = nova.api.ec2:Requestify.factory
75-
76-
[filter:authorizer]
77-
paste.filter_factory = nova.api.ec2:Authorizer.factory
78-
79-
[app:ec2executor]
80-
paste.app_factory = nova.api.ec2:Executor.factory
81-
82-
#############
83-
# Openstack #
84-
#############
85-
86-
[composite:osapi]
87-
use = call:nova.api.openstack.v2.urlmap:urlmap_factory
88-
/: osversions
89-
/v1.1: openstack_api_v2
90-
/v2: openstack_api_v2
91-
92-
[pipeline:openstack_api_v2]
93-
pipeline = faultwrap authtoken keystonecontext ratelimit serialize extensions osapi_app_v2
94-
95-
[filter:faultwrap]
96-
paste.filter_factory = nova.api.openstack.v2:FaultWrapper.factory
97-
98-
[filter:auth]
99-
paste.filter_factory = nova.api.openstack.v2.auth:AuthMiddleware.factory
100-
101-
[filter:noauth]
102-
paste.filter_factory = nova.api.openstack.v2.auth:NoAuthMiddleware.factory
103-
104-
[filter:ratelimit]
105-
paste.filter_factory = nova.api.openstack.v2.limits:RateLimitingMiddleware.factory
106-
107-
[filter:serialize]
108-
paste.filter_factory = nova.api.openstack.wsgi:LazySerializationMiddleware.factory
109-
110-
[filter:extensions]
111-
paste.filter_factory = nova.api.openstack.v2.extensions:ExtensionMiddleware.factory
112-
113-
[app:osapi_app_v2]
114-
paste.app_factory = nova.api.openstack.v2:APIRouter.factory
115-
116-
[pipeline:osversions]
117-
pipeline = faultwrap osversionapp
118-
119-
[app:osversionapp]
120-
paste.app_factory = nova.api.openstack.v2.versions:Versions.factory
121-
1221
##########
123-
# Shared #
2+
# Extras #
1243
##########
1254

1265
[filter:keystonecontext]
1276
paste.filter_factory = keystone.middleware.nova_keystone_context:NovaKeystoneContext.factory
1287

8+
[filter:totoken]
9+
paste.filter_factory = keystone.middleware.ec2_token:EC2Token.factory
10+
12911
[filter:authtoken]
13012
paste.filter_factory = keystone.middleware.auth_token:filter_factory
13113
service_protocol = http

stack.sh

Lines changed: 17 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -777,14 +777,26 @@ fi
777777

778778
# Nova
779779
# ----
780-
781780
if [[ "$ENABLED_SERVICES" =~ "n-api" ]]; then
782781
# We are going to use a sample http middleware configuration based on the
783782
# one from the keystone project to launch nova. This paste config adds
784-
# the configuration required for nova to validate keystone tokens. We add
785-
# our own service token to the configuration.
786-
cp $FILES/nova-api-paste.ini $NOVA_DIR/bin
783+
# the configuration required for nova to validate keystone tokens.
784+
785+
# First we add a some extra data to the default paste config from nova
786+
cat $NOVA_DIR/etc/nova/api-paste.ini $FILES/nova-api-paste.ini > $NOVA_DIR/bin/nova-api-paste.ini
787+
788+
# Then we add our own service token to the configuration
787789
sed -e "s,%SERVICE_TOKEN%,$SERVICE_TOKEN,g" -i $NOVA_DIR/bin/nova-api-paste.ini
790+
791+
# Finally, we change the pipelines in nova to use keystone
792+
function replace_pipeline() {
793+
sed "/\[pipeline:$1\]/,/\[/s/^pipeline = .*/pipeline = $2/" -i $NOVA_DIR/bin/nova-api-paste.ini
794+
}
795+
replace_pipeline "ec2cloud" "ec2faultwrap logrequest totoken authtoken keystonecontext cloudrequest authorizer ec2executor"
796+
replace_pipeline "ec2admin" "ec2faultwrap logrequest totoken authtoken keystonecontext adminrequest authorizer ec2executor"
797+
replace_pipeline "openstack_api_v2" "faultwrap authtoken keystonecontext ratelimit serialize extensions osapi_app_v2"
798+
replace_pipeline "openstack_compute_api_v2" "faultwrap authtoken keystonecontext ratelimit serialize compute_extensions osapi_compute_app_v2"
799+
replace_pipeline "openstack_volume_api_v1" "faultwrap authtoken keystonecontext ratelimit serialize volume_extensions osapi_volume_app_v1"
788800
fi
789801

790802
# Helper to clean iptables rules
@@ -998,7 +1010,7 @@ if [[ "$ENABLED_SERVICES" =~ "swift" ]]; then
9981010
sed "s,%SWIFT_LOGDIR%,${swift_log_dir}," $FILES/swift/rsyslog.conf | sudo \
9991011
tee /etc/rsyslog.d/10-swift.conf
10001012
sudo restart rsyslog
1001-
1013+
10021014
# We create two helper scripts :
10031015
#
10041016
# - swift-remakerings

0 commit comments

Comments
 (0)