Skip to content

Commit 0c3a558

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. - Set object server starting at 6013 instead of 6010 to not conflict with remote ssh x11 forwarding. Change-Id: I890b6953b70283bfa0927fff0cf5e92f3c08455b
1 parent 0d71d1e commit 0c3a558

11 files changed

Lines changed: 64 additions & 35 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: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -181,6 +181,10 @@ function get_packages() {
181181
if [[ ! $file_to_parse =~ ceilometer ]]; then
182182
file_to_parse="${file_to_parse} ceilometer"
183183
fi
184+
elif [[ $service == s-* ]]; then
185+
if [[ ! $file_to_parse =~ swift ]]; then
186+
file_to_parse="${file_to_parse} swift"
187+
fi
184188
elif [[ $service == n-* ]]; then
185189
if [[ ! $file_to_parse =~ nova ]]; then
186190
file_to_parse="${file_to_parse} nova"
@@ -566,6 +570,9 @@ $option = $value
566570
# **ceilometer** returns true if any service enabled start with **ceilometer**
567571
# **glance** returns true if any service enabled start with **g-**
568572
# **quantum** returns true if any service enabled start with **q-**
573+
# **swift** returns true if any service enabled start with **s-**
574+
# For backward compatibility if we have **swift** in ENABLED_SERVICES all the
575+
# **s-** services will be enabled. This will be deprecated in the future.
569576
#
570577
# Uses global ``ENABLED_SERVICES``
571578
# is_service_enabled service [service ...]
@@ -578,6 +585,8 @@ function is_service_enabled() {
578585
[[ ${service} == "ceilometer" && ${ENABLED_SERVICES} =~ "ceilometer-" ]] && return 0
579586
[[ ${service} == "glance" && ${ENABLED_SERVICES} =~ "g-" ]] && return 0
580587
[[ ${service} == "quantum" && ${ENABLED_SERVICES} =~ "q-" ]] && return 0
588+
[[ ${service} == "swift" && ${ENABLED_SERVICES} =~ "s-" ]] && return 0
589+
[[ ${service} == s-* && ${ENABLED_SERVICES} =~ "swift" ]] && return 0
581590
done
582591
return 1
583592
}

‎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: 28 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -56,17 +56,18 @@ 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``
6667
# Port bases used in port number calclution for the service "nodes"
6768
# The specified port number will be used, the additinal ports calculated by
6869
# base_port + node_num * 10
69-
OBJECT_PORT_BASE=6010
70+
OBJECT_PORT_BASE=6013
7071
CONTAINER_PORT_BASE=6011
7172
ACCOUNT_PORT_BASE=6012
7273

@@ -359,19 +360,34 @@ 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)
372386
function stop_swift() {
373387
# screen normally killed by unstack.sh
374-
swift-init --run-dir=${SWIFT_DATA_DIR}/run all stop || true
388+
if type -p swift-init >/dev/null;then
389+
swift-init --run-dir=${SWIFT_DATA_DIR}/run all stop || true
390+
fi
375391
}
376392

377393
# Restore xtrace

‎stack.sh‎

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

428-
if is_service_enabled swift; then
428+
if is_service_enabled s-proxy; then
429429
# If we are using swift3, we can default the s3 port to swift instead
430430
# of nova-objectstore
431431
if is_service_enabled swift3;then
@@ -662,12 +662,12 @@ install_novaclient
662662
git_clone $OPENSTACKCLIENT_REPO $OPENSTACKCLIENT_DIR $OPENSTACKCLIENT_BRANCH
663663

664664
# glance, swift middleware and nova api needs keystone middleware
665-
if is_service_enabled key g-api n-api swift; then
665+
if is_service_enabled key g-api n-api s-proxy; then
666666
# unified auth system (manages accounts/tokens)
667667
install_keystone
668668
fi
669669

670-
if is_service_enabled swift; then
670+
if is_service_enabled s-proxy; then
671671
install_swiftclient
672672
install_swift
673673
if is_service_enabled swift3; then
@@ -724,10 +724,10 @@ echo_summary "Configuring OpenStack projects"
724724
configure_keystoneclient
725725
configure_novaclient
726726
setup_develop $OPENSTACKCLIENT_DIR
727-
if is_service_enabled key g-api n-api swift; then
727+
if is_service_enabled key g-api n-api s-proxy; then
728728
configure_keystone
729729
fi
730-
if is_service_enabled swift; then
730+
if is_service_enabled s-proxy; then
731731
configure_swift
732732
configure_swiftclient
733733
if is_service_enabled swift3; then
@@ -911,7 +911,7 @@ if is_service_enabled g-reg; then
911911
init_glance
912912

913913
# Store the images in swift if enabled.
914-
if is_service_enabled swift; then
914+
if is_service_enabled s-proxy; then
915915
iniset $GLANCE_API_CONF DEFAULT default_store swift
916916
iniset $GLANCE_API_CONF DEFAULT swift_store_auth_address $KEYSTONE_SERVICE_PROTOCOL://$KEYSTONE_SERVICE_HOST:$KEYSTONE_SERVICE_PORT/v2.0/
917917
iniset $GLANCE_API_CONF DEFAULT swift_store_user $SERVICE_TENANT_NAME:glance
@@ -970,7 +970,7 @@ fi
970970
# Storage Service
971971
# ---------------
972972

973-
if is_service_enabled swift; then
973+
if is_service_enabled s-proxy; then
974974
echo_summary "Configuring Swift"
975975
init_swift
976976
fi
@@ -1117,7 +1117,7 @@ fi
11171117
# Only run the services specified in ``ENABLED_SERVICES``
11181118

11191119
# Launch Swift Services
1120-
if is_service_enabled swift; then
1120+
if is_service_enabled s-proxy; then
11211121
echo_summary "Starting Swift"
11221122
start_swift
11231123
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)