Browse code

Use install(1) where possible

This eliminated a number of sudo calls by doing the copy/chown/chmod in
a single step and sets a common pattern.

Change-Id: I9c8f48854d5bc443cc187df0948c28b82c4d2838

Dean Troyer authored on 2015/03/17 03:52:19
Showing 13 changed files
... ...
@@ -163,11 +163,7 @@ function _config_ceilometer_apache_wsgi {
163 163
 
164 164
 # configure_ceilometer() - Set config files, create data dirs, etc
165 165
 function configure_ceilometer {
166
-    [ ! -d $CEILOMETER_CONF_DIR ] && sudo mkdir -m 755 -p $CEILOMETER_CONF_DIR
167
-    sudo chown $STACK_USER $CEILOMETER_CONF_DIR
168
-
169
-    [ ! -d $CEILOMETER_API_LOG_DIR ] &&  sudo mkdir -m 755 -p $CEILOMETER_API_LOG_DIR
170
-    sudo chown $STACK_USER $CEILOMETER_API_LOG_DIR
166
+    sudo install -d -o $STACK_USER -m 755 $CEILOMETER_CONF_DIR $CEILOMETER_API_LOG_DIR
171 167
 
172 168
     iniset_rpc_backend ceilometer $CEILOMETER_CONF DEFAULT
173 169
 
... ...
@@ -267,8 +263,7 @@ function configure_mongodb {
267 267
 # init_ceilometer() - Initialize etc.
268 268
 function init_ceilometer {
269 269
     # Create cache dir
270
-    sudo mkdir -p $CEILOMETER_AUTH_CACHE_DIR
271
-    sudo chown $STACK_USER $CEILOMETER_AUTH_CACHE_DIR
270
+    sudo install -d -o $STACK_USER $CEILOMETER_AUTH_CACHE_DIR
272 271
     rm -f $CEILOMETER_AUTH_CACHE_DIR/*
273 272
 
274 273
     if is_service_enabled mysql postgresql; then
... ...
@@ -174,16 +174,15 @@ function configure_cinder_rootwrap {
174 174
     if [[ -d $CINDER_CONF_DIR/rootwrap.d ]]; then
175 175
         sudo rm -rf $CINDER_CONF_DIR/rootwrap.d
176 176
     fi
177
+
177 178
     # Deploy filters to /etc/cinder/rootwrap.d
178
-    sudo mkdir -m 755 $CINDER_CONF_DIR/rootwrap.d
179
-    sudo cp $CINDER_DIR/etc/cinder/rootwrap.d/*.filters $CINDER_CONF_DIR/rootwrap.d
180
-    sudo chown -R root:root $CINDER_CONF_DIR/rootwrap.d
181
-    sudo chmod 644 $CINDER_CONF_DIR/rootwrap.d/*
179
+    sudo install -d -o root -g root -m 755 $CINDER_CONF_DIR/rootwrap.d
180
+    sudo install -o root -g root -m 644 $CINDER_DIR/etc/cinder/rootwrap.d/*.filters $CINDER_CONF_DIR/rootwrap.d
181
+
182 182
     # Set up rootwrap.conf, pointing to /etc/cinder/rootwrap.d
183
-    sudo cp $CINDER_DIR/etc/cinder/rootwrap.conf $CINDER_CONF_DIR/
183
+    sudo install -o root -g root -m 644 $CINDER_DIR/etc/cinder/rootwrap.conf $CINDER_CONF_DIR
184 184
     sudo sed -e "s:^filters_path=.*$:filters_path=$CINDER_CONF_DIR/rootwrap.d:" -i $CINDER_CONF_DIR/rootwrap.conf
185
-    sudo chown root:root $CINDER_CONF_DIR/rootwrap.conf
186
-    sudo chmod 0644 $CINDER_CONF_DIR/rootwrap.conf
185
+
187 186
     # Specify rootwrap.conf as first parameter to rootwrap
188 187
     ROOTWRAP_CSUDOER_CMD="$cinder_rootwrap $CINDER_CONF_DIR/rootwrap.conf *"
189 188
 
... ...
@@ -197,10 +196,7 @@ function configure_cinder_rootwrap {
197 197
 
198 198
 # configure_cinder() - Set config files, create data dirs, etc
199 199
 function configure_cinder {
200
-    if [[ ! -d $CINDER_CONF_DIR ]]; then
201
-        sudo mkdir -p $CINDER_CONF_DIR
202
-    fi
203
-    sudo chown $STACK_USER $CINDER_CONF_DIR
200
+    sudo install -d -o $STACK_USER -m 755 $CINDER_CONF_DIR
204 201
 
205 202
     cp -p $CINDER_DIR/etc/cinder/policy.json $CINDER_CONF_DIR
206 203
 
... ...
@@ -351,8 +347,7 @@ function create_cinder_accounts {
351 351
 # create_cinder_cache_dir() - Part of the init_cinder() process
352 352
 function create_cinder_cache_dir {
353 353
     # Create cache dir
354
-    sudo mkdir -p $CINDER_AUTH_CACHE_DIR
355
-    sudo chown $STACK_USER $CINDER_AUTH_CACHE_DIR
354
+    sudo install -d -o $STACK_USER $CINDER_AUTH_CACHE_DIR
356 355
     rm -f $CINDER_AUTH_CACHE_DIR/*
357 356
 }
358 357
 
... ...
@@ -90,15 +90,7 @@ function cleanup_glance {
90 90
 
91 91
 # configure_glance() - Set config files, create data dirs, etc
92 92
 function configure_glance {
93
-    if [[ ! -d $GLANCE_CONF_DIR ]]; then
94
-        sudo mkdir -p $GLANCE_CONF_DIR
95
-    fi
96
-    sudo chown $STACK_USER $GLANCE_CONF_DIR
97
-
98
-    if [[ ! -d $GLANCE_METADEF_DIR ]]; then
99
-        sudo mkdir -p $GLANCE_METADEF_DIR
100
-    fi
101
-    sudo chown $STACK_USER $GLANCE_METADEF_DIR
93
+    sudo install -d -o $STACK_USER $GLANCE_CONF_DIR $GLANCE_METADEF_DIR
102 94
 
103 95
     # Copy over our glance configurations and update them
104 96
     cp $GLANCE_DIR/etc/glance-registry.conf $GLANCE_REGISTRY_CONF
... ...
@@ -263,12 +255,8 @@ function create_glance_accounts {
263 263
 # create_glance_cache_dir() - Part of the init_glance() process
264 264
 function create_glance_cache_dir {
265 265
     # Create cache dir
266
-    sudo mkdir -p $GLANCE_AUTH_CACHE_DIR/api
267
-    sudo chown $STACK_USER $GLANCE_AUTH_CACHE_DIR/api
268
-    rm -f $GLANCE_AUTH_CACHE_DIR/api/*
269
-    sudo mkdir -p $GLANCE_AUTH_CACHE_DIR/registry
270
-    sudo chown $STACK_USER $GLANCE_AUTH_CACHE_DIR/registry
271
-    rm -f $GLANCE_AUTH_CACHE_DIR/registry/*
266
+    sudo install -d -o $STACK_USER $GLANCE_AUTH_CACHE_DIR/api $GLANCE_AUTH_CACHE_DIR/registry
267
+    rm -f $GLANCE_AUTH_CACHE_DIR/api/* $GLANCE_AUTH_CACHE_DIR/registry/*
272 268
 }
273 269
 
274 270
 # init_glance() - Initialize databases, etc.
... ...
@@ -85,10 +85,7 @@ function configure_heat {
85 85
         setup_develop $HEAT_DIR/contrib/heat_keystoneclient_v2
86 86
     fi
87 87
 
88
-    if [[ ! -d $HEAT_CONF_DIR ]]; then
89
-        sudo mkdir -p $HEAT_CONF_DIR
90
-    fi
91
-    sudo chown $STACK_USER $HEAT_CONF_DIR
88
+    sudo install -d -o $STACK_USER $HEAT_CONF_DIR
92 89
     # remove old config files
93 90
     rm -f $HEAT_CONF_DIR/heat-*.conf
94 91
 
... ...
@@ -172,15 +169,11 @@ function configure_heat {
172 172
         iniset $HEAT_CONF DEFAULT enable_stack_abandon true
173 173
     fi
174 174
 
175
-    # heat environment
176
-    sudo mkdir -p $HEAT_ENV_DIR
177
-    sudo chown $STACK_USER $HEAT_ENV_DIR
175
+    sudo install -d -o $STACK_USER $HEAT_ENV_DIR $HEAT_TEMPLATES_DIR
176
+
178 177
     # copy the default environment
179 178
     cp $HEAT_DIR/etc/heat/environment.d/* $HEAT_ENV_DIR/
180 179
 
181
-    # heat template resources.
182
-    sudo mkdir -p $HEAT_TEMPLATES_DIR
183
-    sudo chown $STACK_USER $HEAT_TEMPLATES_DIR
184 180
     # copy the default templates
185 181
     cp $HEAT_DIR/etc/heat/templates/* $HEAT_TEMPLATES_DIR/
186 182
 
... ...
@@ -199,8 +192,7 @@ function init_heat {
199 199
 # create_heat_cache_dir() - Part of the init_heat() process
200 200
 function create_heat_cache_dir {
201 201
     # Create cache dirs
202
-    sudo mkdir -p $HEAT_AUTH_CACHE_DIR
203
-    sudo chown $STACK_USER $HEAT_AUTH_CACHE_DIR
202
+    sudo install -d -o $STACK_USER $HEAT_AUTH_CACHE_DIR
204 203
 }
205 204
 
206 205
 # install_heatclient() - Collect source and prepare
... ...
@@ -233,22 +233,14 @@ function cleanup_ironic {
233 233
 # configure_ironic_dirs() - Create all directories required by Ironic and
234 234
 # associated services.
235 235
 function configure_ironic_dirs {
236
-    if [[ ! -d $IRONIC_CONF_DIR ]]; then
237
-        sudo mkdir -p $IRONIC_CONF_DIR
238
-    fi
236
+    sudo install -d -o $STACK_USER $IRONIC_CONF_DIR $STACK_USER $IRONIC_DATA_DIR \
237
+        $IRONIC_STATE_PATH $IRONIC_TFTPBOOT_DIR $IRONIC_TFTPBOOT_DIR/pxelinux.cfg
238
+    sudo chown -R $STACK_USER:$LIBVIRT_GROUP $IRONIC_TFTPBOOT_DIR
239 239
 
240 240
     if [[ "$IRONIC_IPXE_ENABLED" == "True" ]] ; then
241
-        sudo mkdir -p $IRONIC_HTTP_DIR
242
-        sudo chown -R $STACK_USER:$LIBVIRT_GROUP $IRONIC_HTTP_DIR
241
+        sudo install -d -o $STACK_USER -g $LIBVIRT_GROUP $IRONIC_HTTP_DIR
243 242
     fi
244 243
 
245
-    sudo mkdir -p $IRONIC_DATA_DIR
246
-    sudo mkdir -p $IRONIC_STATE_PATH
247
-    sudo mkdir -p $IRONIC_TFTPBOOT_DIR
248
-    sudo chown -R $STACK_USER $IRONIC_DATA_DIR $IRONIC_STATE_PATH
249
-    sudo chown -R $STACK_USER:$LIBVIRT_GROUP $IRONIC_TFTPBOOT_DIR
250
-    mkdir -p $IRONIC_TFTPBOOT_DIR/pxelinux.cfg
251
-
252 244
     if [ ! -f $IRONIC_PXE_BOOT_IMAGE ]; then
253 245
         die $LINENO "PXE boot file $IRONIC_PXE_BOOT_IMAGE not found."
254 246
     fi
... ...
@@ -267,7 +259,6 @@ function configure_ironic_dirs {
267 267
 # configure_ironic() - Set config files, create data dirs, etc
268 268
 function configure_ironic {
269 269
     configure_ironic_dirs
270
-    sudo chown $STACK_USER $IRONIC_CONF_DIR
271 270
 
272 271
     # Copy over ironic configuration file and configure common parameters.
273 272
     cp $IRONIC_DIR/etc/ironic/ironic.conf.sample $IRONIC_CONF_FILE
... ...
@@ -175,14 +175,10 @@ function _config_keystone_apache_wsgi {
175 175
 
176 176
 # configure_keystone() - Set config files, create data dirs, etc
177 177
 function configure_keystone {
178
-    if [[ ! -d $KEYSTONE_CONF_DIR ]]; then
179
-        sudo mkdir -p $KEYSTONE_CONF_DIR
180
-    fi
181
-    sudo chown $STACK_USER $KEYSTONE_CONF_DIR
178
+    sudo install -d -o $STACK_USER $KEYSTONE_CONF_DIR
182 179
 
183 180
     if [[ "$KEYSTONE_CONF_DIR" != "$KEYSTONE_DIR/etc" ]]; then
184
-        cp -p $KEYSTONE_DIR/etc/keystone.conf.sample $KEYSTONE_CONF
185
-        chmod 600 $KEYSTONE_CONF
181
+        install -m 600 $KEYSTONE_DIR/etc/keystone.conf.sample $KEYSTONE_CONF
186 182
         cp -p $KEYSTONE_DIR/etc/policy.json $KEYSTONE_CONF_DIR
187 183
         if [[ -f "$KEYSTONE_DIR/etc/keystone-paste.ini" ]]; then
188 184
             cp -p "$KEYSTONE_DIR/etc/keystone-paste.ini" "$KEYSTONE_PASTE_INI"
... ...
@@ -490,8 +486,7 @@ function init_keystone {
490 490
         $KEYSTONE_DIR/bin/keystone-manage pki_setup
491 491
 
492 492
         # Create cache dir
493
-        sudo mkdir -p $KEYSTONE_AUTH_CACHE_DIR
494
-        sudo chown $STACK_USER $KEYSTONE_AUTH_CACHE_DIR
493
+        sudo install -d -o $STACK_USER $KEYSTONE_AUTH_CACHE_DIR
495 494
         rm -f $KEYSTONE_AUTH_CACHE_DIR/*
496 495
     fi
497 496
 }
... ...
@@ -495,8 +495,7 @@ function create_nova_conf_neutron {
495 495
 # create_neutron_cache_dir() - Part of the _neutron_setup_keystone() process
496 496
 function create_neutron_cache_dir {
497 497
     # Create cache dir
498
-    sudo mkdir -p $NEUTRON_AUTH_CACHE_DIR
499
-    sudo chown $STACK_USER $NEUTRON_AUTH_CACHE_DIR
498
+    sudo install -d -o $STACK_USER $NEUTRON_AUTH_CACHE_DIR
500 499
     rm -f $NEUTRON_AUTH_CACHE_DIR/*
501 500
 }
502 501
 
... ...
@@ -800,10 +799,7 @@ function cleanup_neutron {
800 800
 
801 801
 function _create_neutron_conf_dir {
802 802
     # Put config files in ``NEUTRON_CONF_DIR`` for everyone to find
803
-    if [[ ! -d $NEUTRON_CONF_DIR ]]; then
804
-        sudo mkdir -p $NEUTRON_CONF_DIR
805
-    fi
806
-    sudo chown $STACK_USER $NEUTRON_CONF_DIR
803
+    sudo install -d -o $STACK_USER $NEUTRON_CONF_DIR
807 804
 }
808 805
 
809 806
 # _configure_neutron_common()
... ...
@@ -1075,10 +1071,8 @@ function _neutron_service_plugin_class_add {
1075 1075
 # _neutron_deploy_rootwrap_filters() - deploy rootwrap filters to $Q_CONF_ROOTWRAP_D (owned by root).
1076 1076
 function _neutron_deploy_rootwrap_filters {
1077 1077
     local srcdir=$1
1078
-    mkdir -p -m 755 $Q_CONF_ROOTWRAP_D
1079
-    sudo cp -pr $srcdir/etc/neutron/rootwrap.d/* $Q_CONF_ROOTWRAP_D/
1080
-    sudo chown -R root:root $Q_CONF_ROOTWRAP_D
1081
-    sudo chmod 644 $Q_CONF_ROOTWRAP_D/*
1078
+    sudo install -d -o root -m 755 $Q_CONF_ROOTWRAP_D
1079
+    sudo install -o root -m 644 $srcdir/etc/neutron/rootwrap.d/* $Q_CONF_ROOTWRAP_D/
1082 1080
 }
1083 1081
 
1084 1082
 # _neutron_setup_rootwrap() - configure Neutron's rootwrap
... ...
@@ -1097,13 +1091,11 @@ function _neutron_setup_rootwrap {
1097 1097
     # Set up ``rootwrap.conf``, pointing to ``$NEUTRON_CONF_DIR/rootwrap.d``
1098 1098
     # location moved in newer versions, prefer new location
1099 1099
     if test -r $NEUTRON_DIR/etc/neutron/rootwrap.conf; then
1100
-        sudo cp -p $NEUTRON_DIR/etc/neutron/rootwrap.conf $Q_RR_CONF_FILE
1100
+        sudo install -o root -g root -m 644 $NEUTRON_DIR/etc/neutron/rootwrap.conf $Q_RR_CONF_FILE
1101 1101
     else
1102
-        sudo cp -p $NEUTRON_DIR/etc/rootwrap.conf $Q_RR_CONF_FILE
1102
+        sudo install -o root -g root -m 644 $NEUTRON_DIR/etc/rootwrap.conf $Q_RR_CONF_FILE
1103 1103
     fi
1104 1104
     sudo sed -e "s:^filters_path=.*$:filters_path=$Q_CONF_ROOTWRAP_D:" -i $Q_RR_CONF_FILE
1105
-    sudo chown root:root $Q_RR_CONF_FILE
1106
-    sudo chmod 0644 $Q_RR_CONF_FILE
1107 1105
     # Specify ``rootwrap.conf`` as first parameter to neutron-rootwrap
1108 1106
     ROOTWRAP_SUDOER_CMD="$NEUTRON_ROOTWRAP $Q_RR_CONF_FILE *"
1109 1107
 
... ...
@@ -232,16 +232,15 @@ function configure_nova_rootwrap {
232 232
     if [[ -d $NOVA_CONF_DIR/rootwrap.d ]]; then
233 233
         sudo rm -rf $NOVA_CONF_DIR/rootwrap.d
234 234
     fi
235
+
235 236
     # Deploy filters to /etc/nova/rootwrap.d
236
-    sudo mkdir -m 755 $NOVA_CONF_DIR/rootwrap.d
237
-    sudo cp $NOVA_DIR/etc/nova/rootwrap.d/*.filters $NOVA_CONF_DIR/rootwrap.d
238
-    sudo chown -R root:root $NOVA_CONF_DIR/rootwrap.d
239
-    sudo chmod 644 $NOVA_CONF_DIR/rootwrap.d/*
237
+    sudo install -d -o root -g root -m 755 $NOVA_CONF_DIR/rootwrap.d
238
+    sudo install -o root -g root -m 644  $NOVA_DIR/etc/nova/rootwrap.d/*.filters $NOVA_CONF_DIR/rootwrap.d
239
+
240 240
     # Set up rootwrap.conf, pointing to /etc/nova/rootwrap.d
241
-    sudo cp $NOVA_DIR/etc/nova/rootwrap.conf $NOVA_CONF_DIR/
241
+    sudo install -o root -g root -m 644 $NOVA_DIR/etc/nova/rootwrap.conf $NOVA_CONF_DIR
242 242
     sudo sed -e "s:^filters_path=.*$:filters_path=$NOVA_CONF_DIR/rootwrap.d:" -i $NOVA_CONF_DIR/rootwrap.conf
243
-    sudo chown root:root $NOVA_CONF_DIR/rootwrap.conf
244
-    sudo chmod 0644 $NOVA_CONF_DIR/rootwrap.conf
243
+
245 244
     # Specify rootwrap.conf as first parameter to nova-rootwrap
246 245
     local rootwrap_sudoer_cmd="$NOVA_ROOTWRAP $NOVA_CONF_DIR/rootwrap.conf *"
247 246
 
... ...
@@ -256,10 +255,7 @@ function configure_nova_rootwrap {
256 256
 # configure_nova() - Set config files, create data dirs, etc
257 257
 function configure_nova {
258 258
     # Put config files in ``/etc/nova`` for everyone to find
259
-    if [[ ! -d $NOVA_CONF_DIR ]]; then
260
-        sudo mkdir -p $NOVA_CONF_DIR
261
-    fi
262
-    sudo chown $STACK_USER $NOVA_CONF_DIR
259
+    sudo install -d -o $STACK_USER $NOVA_CONF_DIR
263 260
 
264 261
     cp -p $NOVA_DIR/etc/nova/policy.json $NOVA_CONF_DIR
265 262
 
... ...
@@ -318,8 +314,7 @@ function configure_nova {
318 318
         # ----------------
319 319
 
320 320
         # Nova stores each instance in its own directory.
321
-        sudo mkdir -p $NOVA_INSTANCES_PATH
322
-        sudo chown -R $STACK_USER $NOVA_INSTANCES_PATH
321
+        sudo install -d -o $STACK_USER $NOVA_INSTANCES_PATH
323 322
 
324 323
         # You can specify a different disk to be mounted and used for backing the
325 324
         # virtual machines.  If there is a partition labeled nova-instances we
... ...
@@ -603,8 +598,7 @@ function init_nova_cells {
603 603
 # create_nova_cache_dir() - Part of the init_nova() process
604 604
 function create_nova_cache_dir {
605 605
     # Create cache dir
606
-    sudo mkdir -p $NOVA_AUTH_CACHE_DIR
607
-    sudo chown $STACK_USER $NOVA_AUTH_CACHE_DIR
606
+    sudo install -d -o $STACK_USER $NOVA_AUTH_CACHE_DIR
608 607
     rm -f $NOVA_AUTH_CACHE_DIR/*
609 608
 }
610 609
 
... ...
@@ -621,8 +615,7 @@ function create_nova_conf_nova_network {
621 621
 # create_nova_keys_dir() - Part of the init_nova() process
622 622
 function create_nova_keys_dir {
623 623
     # Create keys dir
624
-    sudo mkdir -p ${NOVA_STATE_PATH}/keys
625
-    sudo chown -R $STACK_USER ${NOVA_STATE_PATH}
624
+    sudo install -d -o $STACK_USER ${NOVA_STATE_PATH} ${NOVA_STATE_PATH}/keys
626 625
 }
627 626
 
628 627
 # init_nova() - Initialize databases, etc.
... ...
@@ -101,11 +101,7 @@ function cleanup_sahara {
101 101
 
102 102
 # configure_sahara() - Set config files, create data dirs, etc
103 103
 function configure_sahara {
104
-
105
-    if [[ ! -d $SAHARA_CONF_DIR ]]; then
106
-        sudo mkdir -p $SAHARA_CONF_DIR
107
-    fi
108
-    sudo chown $STACK_USER $SAHARA_CONF_DIR
104
+    sudo install -d -o $STACK_USER $SAHARA_CONF_DIR
109 105
 
110 106
     if [[ -f $SAHARA_DIR/etc/sahara/policy.json ]]; then
111 107
         cp -p $SAHARA_DIR/etc/sahara/policy.json $SAHARA_CONF_DIR
... ...
@@ -115,9 +111,7 @@ function configure_sahara {
115 115
     cp $SAHARA_DIR/etc/sahara/sahara.conf.sample $SAHARA_CONF_FILE
116 116
 
117 117
     # Create auth cache dir
118
-    sudo mkdir -p $SAHARA_AUTH_CACHE_DIR
119
-    sudo chown $STACK_USER $SAHARA_AUTH_CACHE_DIR
120
-    sudo chmod 700 $SAHARA_AUTH_CACHE_DIR
118
+    sudo install -d -o $STACK_USER -m 700 $SAHARA_AUTH_CACHE_DIR
121 119
     rm -rf $SAHARA_AUTH_CACHE_DIR/*
122 120
 
123 121
     configure_auth_token_middleware $SAHARA_CONF_FILE sahara $SAHARA_AUTH_CACHE_DIR
... ...
@@ -306,8 +306,8 @@ function configure_swift {
306 306
     # Make sure to kill all swift processes first
307 307
     swift-init --run-dir=${SWIFT_DATA_DIR}/run all stop || true
308 308
 
309
-    sudo mkdir -p ${SWIFT_CONF_DIR}/{object,container,account}-server
310
-    sudo chown -R ${STACK_USER}: ${SWIFT_CONF_DIR}
309
+    sudo install -d -o ${STACK_USER} ${SWIFT_CONF_DIR}
310
+    sudo install -d -o ${STACK_USER} ${SWIFT_CONF_DIR}/{object,container,account}-server
311 311
 
312 312
     if [[ "$SWIFT_CONF_DIR" != "/etc/swift" ]]; then
313 313
         # Some swift tools are hard-coded to use ``/etc/swift`` and are apparently not going to be fixed.
... ...
@@ -534,8 +534,7 @@ function create_swift_disk {
534 534
     # changing the permissions so we can run it as our user.
535 535
 
536 536
     local user_group=$(id -g ${STACK_USER})
537
-    sudo mkdir -p ${SWIFT_DATA_DIR}/{drives,cache,run,logs}
538
-    sudo chown -R ${STACK_USER}:${user_group} ${SWIFT_DATA_DIR}
537
+    sudo install -d -o ${STACK_USER} -g ${user_group} ${SWIFT_DATA_DIR}/{drives,cache,run,logs}
539 538
 
540 539
     # Create a loopback disk and format it to XFS.
541 540
     if [[ -e ${SWIFT_DISK_IMAGE} ]]; then
... ...
@@ -675,8 +674,7 @@ function init_swift {
675 675
     } && popd >/dev/null
676 676
 
677 677
     # Create cache dir
678
-    sudo mkdir -p $SWIFT_AUTH_CACHE_DIR
679
-    sudo chown $STACK_USER $SWIFT_AUTH_CACHE_DIR
678
+    sudo install -d -o ${STACK_USER} $SWIFT_AUTH_CACHE_DIR
680 679
     rm -f $SWIFT_AUTH_CACHE_DIR/*
681 680
 }
682 681
 
... ...
@@ -170,12 +170,8 @@ function configure_tempest {
170 170
 
171 171
     # Create tempest.conf from tempest.conf.sample
172 172
     # copy every time, because the image UUIDS are going to change
173
-    if [[ ! -d $TEMPEST_CONFIG_DIR ]]; then
174
-        sudo mkdir -p $TEMPEST_CONFIG_DIR
175
-    fi
176
-    sudo chown $STACK_USER $TEMPEST_CONFIG_DIR
177
-    cp $TEMPEST_DIR/etc/tempest.conf.sample $TEMPEST_CONFIG
178
-    chmod 644 $TEMPEST_CONFIG
173
+    sudo install -d -o $STACK_USER $TEMPEST_CONFIG_DIR
174
+    install -m 644 $TEMPEST_DIR/etc/tempest.conf.sample $TEMPEST_CONFIG
179 175
 
180 176
     password=${ADMIN_PASSWORD:-secrete}
181 177
 
... ...
@@ -121,10 +121,7 @@ function configure_trove {
121 121
     setup_develop $TROVE_DIR
122 122
 
123 123
     # Create the trove conf dir and cache dirs if they don't exist
124
-    sudo mkdir -p ${TROVE_CONF_DIR}
125
-    sudo mkdir -p ${TROVE_AUTH_CACHE_DIR}
126
-    sudo chown -R $STACK_USER: ${TROVE_CONF_DIR}
127
-    sudo chown -R $STACK_USER: ${TROVE_AUTH_CACHE_DIR}
124
+    sudo install -d -o $STACK_USER ${TROVE_CONF_DIR} ${TROVE_AUTH_CACHE_DIR}
128 125
 
129 126
     # Copy api-paste file over to the trove conf dir
130 127
     cp $TROVE_LOCAL_API_PASTE_INI $TROVE_API_PASTE_INI
... ...
@@ -105,8 +105,7 @@ function configure_zaqarclient {
105 105
 function configure_zaqar {
106 106
     setup_develop $ZAQAR_DIR
107 107
 
108
-    [ ! -d $ZAQAR_CONF_DIR ] && sudo mkdir -m 755 -p $ZAQAR_CONF_DIR
109
-    sudo chown $USER $ZAQAR_CONF_DIR
108
+    sudo install -d -o $STACK_USER -m 755 $ZAQAR_CONF_DIR
110 109
 
111 110
     iniset $ZAQAR_CONF DEFAULT debug True
112 111
     iniset $ZAQAR_CONF DEFAULT verbose True
... ...
@@ -168,8 +167,7 @@ function configure_mongodb {
168 168
 # init_zaqar() - Initialize etc.
169 169
 function init_zaqar {
170 170
     # Create cache dir
171
-    sudo mkdir -p $ZAQAR_AUTH_CACHE_DIR
172
-    sudo chown $STACK_USER $ZAQAR_AUTH_CACHE_DIR
171
+    sudo install -d -o $STACK_USER $ZAQAR_AUTH_CACHE_DIR
173 172
     rm -f $ZAQAR_AUTH_CACHE_DIR/*
174 173
 }
175 174