Skip to content

Commit 5a5cbf7

Browse files
author
Chmouel Boudjnah
committed
Enable swift by default.
- Set by default SWIFT_REPLICAS to 1 since this is the most common use case when using it in devstack. - If we have swift_replicas to 1 launch the object container account and proxy servers in foreground in screen. - Allow any s- services if we have just 'swift' in service enabled instead of having to specify all s- services to enable swift. This will be removed in the future. Change-Id: I496f79e14f99bd7e9f2c7deee12a4b6e935c3a5b
1 parent c9bda20 commit 5a5cbf7

11 files changed

Lines changed: 56 additions & 33 deletions

File tree

README.md

Lines changed: 8 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -85,19 +85,21 @@ Example (Qpid):
8585

8686
# Swift
8787

88-
Swift is not installed by default, you can enable easily by adding this to your `localrc`:
88+
Swift is enabled by default configured with only one replica to avoid being IO/memory intensive on a small vm. When running with only one replica the account, container and object services will run directly in screen. The others services like replicator, updaters or auditor runs in background.
8989

90-
enable_service swift
90+
If you would like to disable Swift you can add this to your `localrc` :
91+
92+
disable_service s-proxy s-object s-container s-account
9193

9294
If you want a minimal Swift install with only Swift and Keystone you can have this instead in your `localrc`:
9395

9496
disable_all_services
95-
enable_service key mysql swift
97+
enable_service key mysql s-proxy s-object s-container s-account
98+
99+
If you only want to do some testing of a real normal swift cluster with multiple replicas you can do so by customizing the variable `SWIFT_REPLICAS` in your `localrc` (usually to 3).
96100

97-
If you use Swift with Keystone, Swift will authenticate against it. You will need to make sure to use the Keystone URL to auth against.
101+
# Swift S3
98102

99103
If you are enabling `swift3` in `ENABLED_SERVICES` devstack will install the swift3 middleware emulation. Swift will be configured to act as a S3 endpoint for Keystone so effectively replacing the `nova-objectstore`.
100104

101105
Only Swift proxy server is launched in the screen session all other services are started in background and managed by `swift-init` tool.
102-
103-
By default Swift will configure 3 replicas (and one spare) which could be IO intensive on a small vm, if you only want to do some quick testing of the API you can choose to only have one replica by customizing the variable `SWIFT_REPLICAS` in your `localrc`.

exercises/client-args.sh

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -136,7 +136,7 @@ fi
136136
# Swift client
137137
# ------------
138138

139-
if [[ "$ENABLED_SERVICES" =~ "swift" ]]; then
139+
if [[ "$ENABLED_SERVICES" =~ "swift" || "$ENABLED_SERVICES" =~ "s-proxy" ]]; then
140140
if [[ "$SKIP_EXERCISES" =~ "swift" ]] ; then
141141
STATUS_SWIFT="Skipped"
142142
else

exercises/client-env.sh

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -144,7 +144,8 @@ fi
144144
# Swift client
145145
# ------------
146146

147-
if [[ "$ENABLED_SERVICES" =~ "swift" ]]; then
147+
148+
if [[ "$ENABLED_SERVICES" =~ "swift" || "$ENABLED_SERVICES" =~ "s-proxy" ]]; then
148149
if [[ "$SKIP_EXERCISES" =~ "swift" ]] ; then
149150
STATUS_SWIFT="Skipped"
150151
else

exercises/swift.sh

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -35,7 +35,7 @@ source $TOP_DIR/exerciserc
3535

3636
# If swift is not enabled we exit with exitcode 55 which mean
3737
# exercise is skipped.
38-
is_service_enabled swift || exit 55
38+
is_service_enabled s-proxy || exit 55
3939

4040
# Container name
4141
CONTAINER=ex-swift

files/keystone_data.sh

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -52,7 +52,7 @@ RESELLER_ROLE=$(get_id keystone role-create --name=ResellerAdmin)
5252
# Services
5353
# --------
5454

55-
if [[ "$ENABLED_SERVICES" =~ "n-api" ]] && [[ "$ENABLED_SERVICES" =~ "swift" ]]; then
55+
if [[ "$ENABLED_SERVICES" =~ "n-api" ]] && [[ "$ENABLED_SERVICES" =~ "s-proxy" || "$ENABLED_SERVICES" =~ "swift" ]]; then
5656
NOVA_USER=$(keystone user-list | awk "/ nova / { print \$2 }")
5757
# Nova needs ResellerAdmin role to download images when accessing
5858
# swift through the s3 api.
@@ -123,7 +123,8 @@ if [[ "$ENABLED_SERVICES" =~ "g-api" ]]; then
123123
fi
124124

125125
# Swift
126-
if [[ "$ENABLED_SERVICES" =~ "swift" ]]; then
126+
127+
if [[ "$ENABLED_SERVICES" =~ "swift" || "$ENABLED_SERVICES" =~ "s-proxy" ]]; then
127128
SWIFT_USER=$(get_id keystone user-create \
128129
--name=swift \
129130
--pass="$SERVICE_PASSWORD" \
@@ -190,7 +191,7 @@ if [[ "$ENABLED_SERVICES" =~ "n-api" ]]; then
190191
fi
191192

192193
# S3
193-
if [[ "$ENABLED_SERVICES" =~ "n-obj" || "$ENABLED_SERVICES" =~ "swift" ]]; then
194+
if [[ "$ENABLED_SERVICES" =~ "n-obj" || "$ENABLED_SERVICES" =~ "swift3" ]]; then
194195
if [[ "$KEYSTONE_CATALOG_BACKEND" = 'sql' ]]; then
195196
S3_SERVICE=$(get_id keystone service-create \
196197
--name=s3 \

functions

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -562,6 +562,9 @@ $option = $value
562562
# **ceilometer** returns true if any service enabled start with **ceilometer**
563563
# **glance** returns true if any service enabled start with **g-**
564564
# **quantum** returns true if any service enabled start with **q-**
565+
# **swift** returns true if any service enabled start with **s-**
566+
# For backward compatibility if we have **swift** in ENABLED_SERVICES all the
567+
# **s-** services will be enabled. This will be deprecated in the future.
565568
#
566569
# Uses global ``ENABLED_SERVICES``
567570
# is_service_enabled service [service ...]
@@ -574,6 +577,8 @@ function is_service_enabled() {
574577
[[ ${service} == "ceilometer" && ${ENABLED_SERVICES} =~ "ceilometer-" ]] && return 0
575578
[[ ${service} == "glance" && ${ENABLED_SERVICES} =~ "g-" ]] && return 0
576579
[[ ${service} == "quantum" && ${ENABLED_SERVICES} =~ "q-" ]] && return 0
580+
[[ ${service} == "swift" && ${ENABLED_SERVICES} =~ "s-" ]] && return 0
581+
[[ ${service} == s-* && ${ENABLED_SERVICES} =~ "swift" ]] && return 0
577582
done
578583
return 1
579584
}

lib/keystone

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -146,7 +146,7 @@ function configure_keystone() {
146146
cp -p $FILES/default_catalog.templates $KEYSTONE_CATALOG
147147

148148
# Add swift endpoints to service catalog if swift is enabled
149-
if is_service_enabled swift; then
149+
if is_service_enabled s-proxy; then
150150
echo "catalog.RegionOne.object_store.publicURL = http://%SERVICE_HOST%:8080/v1/AUTH_\$(tenant_id)s" >> $KEYSTONE_CATALOG
151151
echo "catalog.RegionOne.object_store.adminURL = http://%SERVICE_HOST%:8080/" >> $KEYSTONE_CATALOG
152152
echo "catalog.RegionOne.object_store.internalURL = http://%SERVICE_HOST%:8080/v1/AUTH_\$(tenant_id)s" >> $KEYSTONE_CATALOG

lib/swift

Lines changed: 24 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -56,10 +56,11 @@ SWIFT_LOOPBACK_DISK_SIZE=${SWIFT_LOOPBACK_DISK_SIZE:-1000000}
5656
SWIFT_PARTITION_POWER_SIZE=${SWIFT_PARTITION_POWER_SIZE:-9}
5757

5858
# Set ``SWIFT_REPLICAS`` to configure how many replicas are to be
59-
# configured for your Swift cluster. By default the three replicas would need a
60-
# bit of IO and Memory on a VM you may want to lower that to 1 if you want to do
61-
# only some quick testing.
62-
SWIFT_REPLICAS=${SWIFT_REPLICAS:-3}
59+
# configured for your Swift cluster. By default we are configuring
60+
# only one replica since this is way less CPU and memory intensive. If
61+
# you are planning to test swift replication you may want to set this
62+
# up to 3.
63+
SWIFT_REPLICAS=${SWIFT_REPLICAS:-1}
6364
SWIFT_REPLICAS_SEQ=$(seq ${SWIFT_REPLICAS})
6465

6566
# Set ``OBJECT_PORT_BASE``, ``CONTAINER_PORT_BASE``, ``ACCOUNT_PORT_BASE``
@@ -359,13 +360,26 @@ function start_swift() {
359360
sudo systemctl start xinetd.service
360361
fi
361362

362-
# First spawn all the swift services then kill the
363-
# proxy service so we can run it in foreground in screen.
364-
# ``swift-init ... {stop|restart}`` exits with '1' if no servers are running,
365-
# ignore it just in case
363+
# By default with only one replica we are launching the proxy,
364+
# container, account and object server in screen in foreground and
365+
# other services in background. If we have SWIFT_REPLICAS set to something
366+
# greater than one we first spawn all the swift services then kill the proxy
367+
# service so we can run it in foreground in screen. ``swift-init ...
368+
# {stop|restart}`` exits with '1' if no servers are running, ignore it just
369+
# in case
366370
swift-init --run-dir=${SWIFT_DATA_DIR}/run all restart || true
367-
swift-init --run-dir=${SWIFT_DATA_DIR}/run proxy stop || true
368-
screen_it swift "cd $SWIFT_DIR && $SWIFT_DIR/bin/swift-proxy-server ${SWIFT_CONFIG_DIR}/proxy-server.conf -v"
371+
if [[ ${SWIFT_REPLICAS} == 1 ]];then
372+
todo="object container account"
373+
fi
374+
for type in proxy ${todo};do
375+
swift-init --run-dir=${SWIFT_DATA_DIR}/run ${type} stop || true
376+
done
377+
screen_it s-proxy "cd $SWIFT_DIR && $SWIFT_DIR/bin/swift-proxy-server ${SWIFT_CONFIG_DIR}/proxy-server.conf -v"
378+
if [[ ${SWIFT_REPLICAS} == 1 ]];then
379+
for type in object container account;do
380+
screen_it s-${type} "cd $SWIFT_DIR && $SWIFT_DIR/bin/swift-${type}-server ${SWIFT_CONFIG_DIR}/${type}-server/1.conf -v"
381+
done
382+
fi
369383
}
370384

371385
# stop_swift() - Stop running processes (non-screen)

stack.sh

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -433,7 +433,7 @@ if is_service_enabled rabbit; then
433433
read_password RABBIT_PASSWORD "ENTER A PASSWORD TO USE FOR RABBIT."
434434
fi
435435

436-
if is_service_enabled swift; then
436+
if is_service_enabled s-proxy; then
437437
# If we are using swift3, we can default the s3 port to swift instead
438438
# of nova-objectstore
439439
if is_service_enabled swift3;then
@@ -670,12 +670,12 @@ install_novaclient
670670
git_clone $OPENSTACKCLIENT_REPO $OPENSTACKCLIENT_DIR $OPENSTACKCLIENT_BRANCH
671671

672672
# glance, swift middleware and nova api needs keystone middleware
673-
if is_service_enabled key g-api n-api swift; then
673+
if is_service_enabled key g-api n-api s-proxy; then
674674
# unified auth system (manages accounts/tokens)
675675
install_keystone
676676
fi
677677

678-
if is_service_enabled swift; then
678+
if is_service_enabled s-proxy; then
679679
install_swiftclient
680680
install_swift
681681
if is_service_enabled swift3; then
@@ -732,10 +732,10 @@ echo_summary "Configuring OpenStack projects"
732732
configure_keystoneclient
733733
configure_novaclient
734734
setup_develop $OPENSTACKCLIENT_DIR
735-
if is_service_enabled key g-api n-api swift; then
735+
if is_service_enabled key g-api n-api s-proxy; then
736736
configure_keystone
737737
fi
738-
if is_service_enabled swift; then
738+
if is_service_enabled s-proxy; then
739739
configure_swift
740740
configure_swiftclient
741741
if is_service_enabled swift3; then
@@ -919,7 +919,7 @@ if is_service_enabled g-reg; then
919919
init_glance
920920

921921
# Store the images in swift if enabled.
922-
if is_service_enabled swift; then
922+
if is_service_enabled s-proxy; then
923923
iniset $GLANCE_API_CONF DEFAULT default_store swift
924924
iniset $GLANCE_API_CONF DEFAULT swift_store_auth_address $KEYSTONE_SERVICE_PROTOCOL://$KEYSTONE_SERVICE_HOST:$KEYSTONE_SERVICE_PORT/v2.0/
925925
iniset $GLANCE_API_CONF DEFAULT swift_store_user $SERVICE_TENANT_NAME:glance
@@ -978,7 +978,7 @@ fi
978978
# Storage Service
979979
# ---------------
980980

981-
if is_service_enabled swift; then
981+
if is_service_enabled s-proxy; then
982982
echo_summary "Configuring Swift"
983983
init_swift
984984
fi
@@ -1125,7 +1125,7 @@ fi
11251125
# Only run the services specified in ``ENABLED_SERVICES``
11261126

11271127
# Launch Swift Services
1128-
if is_service_enabled swift; then
1128+
if is_service_enabled s-proxy; then
11291129
echo_summary "Starting Swift"
11301130
start_swift
11311131
fi

stackrc

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@ fi
2121
# ``disable_service`` functions in ``localrc``.
2222
# For example, to enable Swift add this to ``localrc``:
2323
# enable_service swift
24-
ENABLED_SERVICES=g-api,g-reg,key,n-api,n-crt,n-obj,n-cpu,n-net,n-cond,cinder,c-sch,c-api,c-vol,n-sch,n-novnc,n-xvnc,n-cauth,horizon,rabbit,tempest,mysql
24+
ENABLED_SERVICES=g-api,g-reg,key,n-api,n-crt,n-obj,n-cpu,n-net,n-cond,cinder,c-sch,c-api,c-vol,n-sch,n-novnc,n-xvnc,n-cauth,s-proxy,s-account,s-object,s-container,horizon,rabbit,tempest,mysql
2525

2626
# Set the default Nova APIs to enable
2727
NOVA_ENABLED_APIS=ec2,osapi_compute,metadata

0 commit comments

Comments
 (0)