Browse code

support installing clients at released versions

expand the devstack support for libraries from released versions to
support python-* clients and tempest_lib.

Depends-On: I81b0d228e7769758c61e5b0323ecfce8c8886d39

Change-Id: I26fac0ccf8fd4818e24618d56bf04b32306f88f6

Sean Dague authored on 2014/11/01 09:37:45
Showing 15 changed files
... ...
@@ -11,7 +11,6 @@ if is_service_enabled trove; then
11 11
         cleanup_trove
12 12
     elif [[ "$1" == "stack" && "$2" == "post-config" ]]; then
13 13
         echo_summary "Configuring Trove"
14
-        configure_troveclient
15 14
         configure_trove
16 15
 
17 16
         if is_service_enabled key; then
... ...
@@ -1621,6 +1621,7 @@ function use_library_from_git {
1621 1621
     return $enabled
1622 1622
 }
1623 1623
 
1624
+
1624 1625
 # setup a library by name. If we are trying to use the library from
1625 1626
 # git, we'll do a git based install, otherwise we'll punt and the
1626 1627
 # library should be installed by a requirements pull from another
... ...
@@ -35,8 +35,9 @@ set +o xtrace
35 35
 # --------
36 36
 
37 37
 # Set up default directories
38
+GITDIR["ceilometerclient"]=$DEST/python-ceilometerclient
39
+
38 40
 CEILOMETER_DIR=$DEST/ceilometer
39
-CEILOMETERCLIENT_DIR=$DEST/python-ceilometerclient
40 41
 CEILOMETER_CONF_DIR=/etc/ceilometer
41 42
 CEILOMETER_CONF=$CEILOMETER_CONF_DIR/ceilometer.conf
42 43
 CEILOMETER_API_LOG_DIR=/var/log/ceilometer-api
... ...
@@ -254,9 +255,11 @@ function install_ceilometer {
254 254
 
255 255
 # install_ceilometerclient() - Collect source and prepare
256 256
 function install_ceilometerclient {
257
-    git_clone $CEILOMETERCLIENT_REPO $CEILOMETERCLIENT_DIR $CEILOMETERCLIENT_BRANCH
258
-    setup_develop $CEILOMETERCLIENT_DIR
259
-    sudo install -D -m 0644 -o $STACK_USER {$CEILOMETERCLIENT_DIR/tools/,/etc/bash_completion.d/}ceilometer.bash_completion
257
+    if use_library_from_git "ceilometerclient"; then
258
+        git_clone_by_name "ceilometerclient"
259
+        setup_develop "ceilometerclient"
260
+        sudo install -D -m 0644 -o $STACK_USER {$CEILOMETERCLIENT_DIR/tools/,/etc/bash_completion.d/}ceilometer.bash_completion
261
+    fi
260 262
 }
261 263
 
262 264
 # start_ceilometer() - Start running processes, including screen
... ...
@@ -36,8 +36,9 @@ if [[ -r $CINDER_PLUGINS/$CINDER_DRIVER ]]; then
36 36
 fi
37 37
 
38 38
 # set up default directories
39
+GITDIR["cinderclient"]=$DEST/python-cinderclient
40
+
39 41
 CINDER_DIR=$DEST/cinder
40
-CINDERCLIENT_DIR=$DEST/python-cinderclient
41 42
 CINDER_STATE_PATH=${CINDER_STATE_PATH:=$DATA_DIR/cinder}
42 43
 CINDER_AUTH_CACHE_DIR=${CINDER_AUTH_CACHE_DIR:-/var/cache/cinder}
43 44
 
... ...
@@ -402,9 +403,11 @@ function install_cinder {
402 402
 
403 403
 # install_cinderclient() - Collect source and prepare
404 404
 function install_cinderclient {
405
-    git_clone $CINDERCLIENT_REPO $CINDERCLIENT_DIR $CINDERCLIENT_BRANCH
406
-    setup_develop $CINDERCLIENT_DIR
407
-    sudo install -D -m 0644 -o $STACK_USER {$CINDERCLIENT_DIR/tools/,/etc/bash_completion.d/}cinder.bash_completion
405
+    if use_library_from_git "cinderclient"; then
406
+        git_clone_by_name "cinderclient"
407
+        setup_develop "cinderclient"
408
+        sudo install -D -m 0644 -o $STACK_USER {$CINDERCLIENT_DIR/tools/,/etc/bash_completion.d/}cinder.bash_completion
409
+    fi
408 410
 }
409 411
 
410 412
 # apply config.d approach for cinder volumes directory
... ...
@@ -27,9 +27,10 @@ set +o xtrace
27 27
 # --------
28 28
 
29 29
 # Set up default directories
30
+GITDIR["glanceclient"]=$DEST/python-glanceclient
31
+
30 32
 GLANCE_DIR=$DEST/glance
31 33
 GLANCE_STORE_DIR=$DEST/glance_store
32
-GLANCECLIENT_DIR=$DEST/python-glanceclient
33 34
 GLANCE_CACHE_DIR=${GLANCE_CACHE_DIR:=$DATA_DIR/glance/cache}
34 35
 GLANCE_IMAGE_DIR=${GLANCE_IMAGE_DIR:=$DATA_DIR/glance/images}
35 36
 GLANCE_AUTH_CACHE_DIR=${GLANCE_AUTH_CACHE_DIR:-/var/cache/glance}
... ...
@@ -286,8 +287,10 @@ function init_glance {
286 286
 
287 287
 # install_glanceclient() - Collect source and prepare
288 288
 function install_glanceclient {
289
-    git_clone $GLANCECLIENT_REPO $GLANCECLIENT_DIR $GLANCECLIENT_BRANCH
290
-    setup_develop $GLANCECLIENT_DIR
289
+    if use_library_from_git "glanceclient"; then
290
+        git_clone_by_name "glanceclient"
291
+        setup_develop "glanceclient"
292
+    fi
291 293
 }
292 294
 
293 295
 # install_glance() - Collect source and prepare
... ...
@@ -29,8 +29,9 @@ set +o xtrace
29 29
 # --------
30 30
 
31 31
 # set up default directories
32
+GITDIR["heatclient"]=$DEST/python-heatclient
33
+
32 34
 HEAT_DIR=$DEST/heat
33
-HEATCLIENT_DIR=$DEST/python-heatclient
34 35
 HEAT_CFNTOOLS_DIR=$DEST/heat-cfntools
35 36
 HEAT_TEMPLATES_REPO_DIR=$DEST/heat-templates
36 37
 HEAT_AUTH_CACHE_DIR=${HEAT_AUTH_CACHE_DIR:-/var/cache/heat}
... ...
@@ -183,9 +184,11 @@ function create_heat_cache_dir {
183 183
 
184 184
 # install_heatclient() - Collect source and prepare
185 185
 function install_heatclient {
186
-    git_clone $HEATCLIENT_REPO $HEATCLIENT_DIR $HEATCLIENT_BRANCH
187
-    setup_develop $HEATCLIENT_DIR
188
-    sudo install -D -m 0644 -o $STACK_USER {$HEATCLIENT_DIR/tools/,/etc/bash_completion.d/}heat.bash_completion
186
+    if use_library_from_git "heatclient"; then
187
+        git_clone_by_name "heatclient"
188
+        setup_develop "heatclient"
189
+        sudo install -D -m 0644 -o $STACK_USER {$HEATCLIENT_DIR/tools/,/etc/bash_completion.d/}heat.bash_completion
190
+    fi
189 191
 }
190 192
 
191 193
 # install_heat() - Collect source and prepare
... ...
@@ -28,11 +28,12 @@ set +o pipefail
28 28
 # --------
29 29
 
30 30
 # Set up default directories
31
+GITDIR["ironicclient"]=$DEST/python-ironicclient
32
+
31 33
 IRONIC_DIR=$DEST/ironic
32 34
 IRONIC_PYTHON_AGENT_DIR=$DEST/ironic-python-agent
33 35
 IRONIC_DATA_DIR=$DATA_DIR/ironic
34 36
 IRONIC_STATE_PATH=/var/lib/ironic
35
-IRONICCLIENT_DIR=$DEST/python-ironicclient
36 37
 IRONIC_AUTH_CACHE_DIR=${IRONIC_AUTH_CACHE_DIR:-/var/cache/ironic}
37 38
 IRONIC_CONF_DIR=${IRONIC_CONF_DIR:-/etc/ironic}
38 39
 IRONIC_CONF_FILE=$IRONIC_CONF_DIR/ironic.conf
... ...
@@ -150,9 +151,14 @@ function install_ironic {
150 150
 
151 151
 # install_ironicclient() - Collect sources and prepare
152 152
 function install_ironicclient {
153
-    git_clone $IRONICCLIENT_REPO $IRONICCLIENT_DIR $IRONICCLIENT_BRANCH
154
-    setup_develop $IRONICCLIENT_DIR
155
-    sudo install -D -m 0644 -o $STACK_USER {$IRONICCLIENT_DIR/tools/,/etc/bash_completion.d/}ironic.bash_completion
153
+    if use_library_from_git "ironicclient"; then
154
+        git_clone_by_name "ironicclient"
155
+        setup_develop "ironicclient"
156
+        sudo install -D -m 0644 -o $STACK_USER {$IRONICCLIENT_DIR/tools/,/etc/bash_completion.d/}ironic.bash_completion
157
+    else
158
+        # nothing actually "requires" ironicclient, so force instally from pypi
159
+        pip_install python-ironicclient
160
+    fi
156 161
 }
157 162
 
158 163
 # _cleanup_ironic_apache_wsgi() - Remove wsgi files, disable and remove apache vhost file
... ...
@@ -33,6 +33,8 @@ set +o xtrace
33 33
 # --------
34 34
 
35 35
 # Set up default directories
36
+GITDIR["keystoneclient"]=$DEST/python-keystoneclient
37
+
36 38
 KEYSTONE_DIR=$DEST/keystone
37 39
 KEYSTONE_CONF_DIR=${KEYSTONE_CONF_DIR:-/etc/keystone}
38 40
 KEYSTONE_CONF=$KEYSTONE_CONF_DIR/keystone.conf
... ...
@@ -45,7 +47,6 @@ else
45 45
 fi
46 46
 
47 47
 KEYSTONEMIDDLEWARE_DIR=$DEST/keystonemiddleware
48
-KEYSTONECLIENT_DIR=$DEST/python-keystoneclient
49 48
 
50 49
 # Set up additional extensions, such as oauth1, federation
51 50
 # Example of KEYSTONE_EXTENSIONS=oauth1,federation
... ...
@@ -479,9 +480,11 @@ function init_keystone {
479 479
 
480 480
 # install_keystoneclient() - Collect source and prepare
481 481
 function install_keystoneclient {
482
-    git_clone $KEYSTONECLIENT_REPO $KEYSTONECLIENT_DIR $KEYSTONECLIENT_BRANCH
483
-    setup_develop $KEYSTONECLIENT_DIR
484
-    sudo install -D -m 0644 -o $STACK_USER {$KEYSTONECLIENT_DIR/tools/,/etc/bash_completion.d/}keystone.bash_completion
482
+    if use_library_from_git "keystoneclient"; then
483
+        git_clone_by_name "keystoneclient"
484
+        setup_develop "keystoneclient"
485
+        sudo install -D -m 0644 -o $STACK_USER {$KEYSTONECLIENT_DIR/tools/,/etc/bash_completion.d/}keystone.bash_completion
486
+    fi
485 487
 }
486 488
 
487 489
 # install_keystonemiddleware() - Collect source and prepare
... ...
@@ -77,8 +77,10 @@ fi
77 77
 
78 78
 
79 79
 # Set up default directories
80
+GITDIR["neutronclient"]=$DEST/python-neutronclient
81
+
82
+
80 83
 NEUTRON_DIR=$DEST/neutron
81
-NEUTRONCLIENT_DIR=$DEST/python-neutronclient
82 84
 NEUTRON_AUTH_CACHE_DIR=${NEUTRON_AUTH_CACHE_DIR:-/var/cache/neutron}
83 85
 
84 86
 # Support entry points installation of console scripts
... ...
@@ -601,9 +603,11 @@ function install_neutron {
601 601
 
602 602
 # install_neutronclient() - Collect source and prepare
603 603
 function install_neutronclient {
604
-    git_clone $NEUTRONCLIENT_REPO $NEUTRONCLIENT_DIR $NEUTRONCLIENT_BRANCH
605
-    setup_develop $NEUTRONCLIENT_DIR
606
-    sudo install -D -m 0644 -o $STACK_USER {$NEUTRONCLIENT_DIR/tools/,/etc/bash_completion.d/}neutron.bash_completion
604
+    if use_library_from_git "neutronclient"; then
605
+        git_clone_by_name "neutronclient"
606
+        setup_develop "neutronclient"
607
+        sudo install -D -m 0644 -o $STACK_USER {$NEUTRONCLIENT_DIR/tools/,/etc/bash_completion.d/}neutron.bash_completion
608
+    fi
607 609
 }
608 610
 
609 611
 # install_neutron_agent_packages() - Collect source and prepare
... ...
@@ -29,8 +29,10 @@ set +o xtrace
29 29
 # --------
30 30
 
31 31
 # Set up default directories
32
+GITDIR["novaclient"]=$DEST/python-novaclient
33
+
34
+
32 35
 NOVA_DIR=$DEST/nova
33
-NOVACLIENT_DIR=$DEST/python-novaclient
34 36
 NOVA_STATE_PATH=${NOVA_STATE_PATH:=$DATA_DIR/nova}
35 37
 # INSTANCES_PATH is the previous name for this
36 38
 NOVA_INSTANCES_PATH=${NOVA_INSTANCES_PATH:=${INSTANCES_PATH:=$NOVA_STATE_PATH/instances}}
... ...
@@ -637,9 +639,11 @@ function init_nova {
637 637
 
638 638
 # install_novaclient() - Collect source and prepare
639 639
 function install_novaclient {
640
-    git_clone $NOVACLIENT_REPO $NOVACLIENT_DIR $NOVACLIENT_BRANCH
641
-    setup_develop $NOVACLIENT_DIR
642
-    sudo install -D -m 0644 -o $STACK_USER {$NOVACLIENT_DIR/tools/,/etc/bash_completion.d/}nova.bash_completion
640
+    if use_library_from_git "novaclient"; then
641
+        git_clone_by_name "novaclient"
642
+        setup_develop "novaclient"
643
+        sudo install -D -m 0644 -o $STACK_USER {$NOVACLIENT_DIR/tools/,/etc/bash_completion.d/}nova.bash_completion
644
+    fi
643 645
 }
644 646
 
645 647
 # install_nova() - Collect source and prepare
... ...
@@ -34,8 +34,10 @@ if is_ssl_enabled_service "s-proxy" || is_service_enabled tls-proxy; then
34 34
 fi
35 35
 
36 36
 # Set up default directories
37
+GITDIR["swiftclient"]=$DEST/python-swiftclient
38
+
39
+
37 40
 SWIFT_DIR=$DEST/swift
38
-SWIFTCLIENT_DIR=$DEST/python-swiftclient
39 41
 SWIFT_AUTH_CACHE_DIR=${SWIFT_AUTH_CACHE_DIR:-/var/cache/swift}
40 42
 SWIFT_APACHE_WSGI_DIR=${SWIFT_APACHE_WSGI_DIR:-/var/www/swift}
41 43
 SWIFT3_DIR=$DEST/swift3
... ...
@@ -675,8 +677,10 @@ function install_swift {
675 675
 }
676 676
 
677 677
 function install_swiftclient {
678
-    git_clone $SWIFTCLIENT_REPO $SWIFTCLIENT_DIR $SWIFTCLIENT_BRANCH
679
-    setup_develop $SWIFTCLIENT_DIR
678
+    if use_library_from_git "swiftclient"; then
679
+        git_clone_by_name "swiftclient"
680
+        setup_develop "swiftclient"
681
+    fi
680 682
 }
681 683
 
682 684
 # start_swift() - Start running processes, including screen
... ...
@@ -45,11 +45,12 @@ set +o xtrace
45 45
 # --------
46 46
 
47 47
 # Set up default directories
48
+GITDIR["tempest_lib"]=$DEST/tempest-lib
49
+
48 50
 TEMPEST_DIR=$DEST/tempest
49 51
 TEMPEST_CONFIG_DIR=${TEMPEST_CONFIG_DIR:-$TEMPEST_DIR/etc}
50 52
 TEMPEST_CONFIG=$TEMPEST_CONFIG_DIR/tempest.conf
51 53
 TEMPEST_STATE_PATH=${TEMPEST_STATE_PATH:=$DATA_DIR/tempest}
52
-TEMPEST_LIB_DIR=$DEST/tempest-lib
53 54
 
54 55
 NOVA_SOURCE_DIR=$DEST/nova
55 56
 
... ...
@@ -441,8 +442,10 @@ function create_tempest_accounts {
441 441
 
442 442
 # install_tempest_lib() - Collect source, prepare, and install tempest-lib
443 443
 function install_tempest_lib {
444
-    git_clone $TEMPEST_LIB_REPO $TEMPEST_LIB_DIR $TEMPEST_LIB_BRANCH
445
-    setup_develop $TEMPEST_LIB_DIR
444
+    if use_library_from_git "tempest_lib"; then
445
+        git_clone_by_name "tempest_lib"
446
+        setup_develop "tempest_lib"
447
+    fi
446 448
 }
447 449
 
448 450
 # install_tempest() - Collect source and prepare
... ...
@@ -28,8 +28,9 @@ else
28 28
 fi
29 29
 
30 30
 # Set up default configuration
31
+GITDIR["troveclient"]=$DEST/python-troveclient
32
+
31 33
 TROVE_DIR=$DEST/trove
32
-TROVECLIENT_DIR=$DEST/python-troveclient
33 34
 TROVE_CONF_DIR=/etc/trove
34 35
 TROVE_LOCAL_CONF_DIR=$TROVE_DIR/etc/trove
35 36
 TROVE_AUTH_CACHE_DIR=${TROVE_AUTH_CACHE_DIR:-/var/cache/trove}
... ...
@@ -109,10 +110,6 @@ function cleanup_trove {
109 109
     rm -fr $TROVE_CONF_DIR/*
110 110
 }
111 111
 
112
-# configure_troveclient() - Set config files, create data dirs, etc
113
-function configure_troveclient {
114
-    setup_develop $TROVECLIENT_DIR
115
-}
116 112
 
117 113
 # configure_trove() - Set config files, create data dirs, etc
118 114
 function configure_trove {
... ...
@@ -184,7 +181,10 @@ function configure_trove {
184 184
 
185 185
 # install_troveclient() - Collect source and prepare
186 186
 function install_troveclient {
187
-    git_clone $TROVECLIENT_REPO $TROVECLIENT_DIR $TROVECLIENT_BRANCH
187
+    if use_library_from_git "troveclient"; then
188
+        git_clone_by_name "troveclient"
189
+        setup_develop "troveclient"
190
+    fi
188 191
 }
189 192
 
190 193
 # install_trove() - Collect source and prepare
... ...
@@ -585,7 +585,7 @@ if [[ -d $TOP_DIR/extras.d ]]; then
585 585
 fi
586 586
 
587 587
 # Set the destination directories for other OpenStack projects
588
-OPENSTACKCLIENT_DIR=$DEST/python-openstackclient
588
+GITDIR["openstackclient"]=$DEST/python-openstackclient
589 589
 
590 590
 # Interactive Configuration
591 591
 # -------------------------
... ...
@@ -788,8 +788,14 @@ fi
788 788
 # Install middleware
789 789
 install_keystonemiddleware
790 790
 
791
-git_clone $OPENSTACKCLIENT_REPO $OPENSTACKCLIENT_DIR $OPENSTACKCLIENT_BRANCH
792
-setup_develop $OPENSTACKCLIENT_DIR
791
+# install the OpenStack client, needed for most setup commands
792
+if use_library_from_git "openstackclient"; then
793
+    git_clone_by_name "openstackclient"
794
+    setup_develop "openstackclient"
795
+else
796
+    pip_install python-openstackclient
797
+fi
798
+
793 799
 
794 800
 if is_service_enabled key; then
795 801
     if [ "$KEYSTONE_AUTH_HOST" == "$SERVICE_HOST" ]; then
... ...
@@ -199,8 +199,8 @@ TEMPEST_REPO=${TEMPEST_REPO:-${GIT_BASE}/openstack/tempest.git}
199 199
 TEMPEST_BRANCH=${TEMPEST_BRANCH:-master}
200 200
 
201 201
 # TODO(sdague): this should end up as a library component like below
202
-TEMPEST_LIB_REPO=${TEMPEST_LIB_REPO:-${GIT_BASE}/openstack/tempest-lib.git}
203
-TEMPEST_LIB_BRANCH=${TEMPEST_LIB_BRANCH:-master}
202
+GITREPO["tempest_lib"]=${TEMPEST_LIB_REPO:-${GIT_BASE}/openstack/tempest-lib.git}
203
+GITBRANCH["tempest_lib"]=${TEMPEST_LIB_BRANCH:-master}
204 204
 
205 205
 
206 206
 ##############
... ...
@@ -210,48 +210,48 @@ TEMPEST_LIB_BRANCH=${TEMPEST_LIB_BRANCH:-master}
210 210
 ##############
211 211
 
212 212
 # ceilometer client library
213
-CEILOMETERCLIENT_REPO=${CEILOMETERCLIENT_REPO:-${GIT_BASE}/openstack/python-ceilometerclient.git}
214
-CEILOMETERCLIENT_BRANCH=${CEILOMETERCLIENT_BRANCH:-master}
213
+GITREPO["ceilometerclient"]=${CEILOMETERCLIENT_REPO:-${GIT_BASE}/openstack/python-ceilometerclient.git}
214
+GITBRANCH["ceilometerclient"]=${CEILOMETERCLIENT_BRANCH:-master}
215 215
 
216 216
 # volume client
217
-CINDERCLIENT_REPO=${CINDERCLIENT_REPO:-${GIT_BASE}/openstack/python-cinderclient.git}
218
-CINDERCLIENT_BRANCH=${CINDERCLIENT_BRANCH:-master}
217
+GITREPO["cinderclient"]=${CINDERCLIENT_REPO:-${GIT_BASE}/openstack/python-cinderclient.git}
218
+GITBRACH["cinderclient"]=${CINDERCLIENT_BRANCH:-master}
219 219
 
220 220
 # python glance client library
221
-GLANCECLIENT_REPO=${GLANCECLIENT_REPO:-${GIT_BASE}/openstack/python-glanceclient.git}
222
-GLANCECLIENT_BRANCH=${GLANCECLIENT_BRANCH:-master}
221
+GITREPO["glanceclient"]=${GLANCECLIENT_REPO:-${GIT_BASE}/openstack/python-glanceclient.git}
222
+GITBRANCH["glanceclient"]=${GLANCECLIENT_BRANCH:-master}
223 223
 
224 224
 # python heat client library
225
-HEATCLIENT_REPO=${HEATCLIENT_REPO:-${GIT_BASE}/openstack/python-heatclient.git}
226
-HEATCLIENT_BRANCH=${HEATCLIENT_BRANCH:-master}
225
+GITREPO["heatclient"]=${HEATCLIENT_REPO:-${GIT_BASE}/openstack/python-heatclient.git}
226
+GITBRANCH["heatclient"]=${HEATCLIENT_BRANCH:-master}
227 227
 
228 228
 # ironic client
229
-IRONICCLIENT_REPO=${IRONICCLIENT_REPO:-${GIT_BASE}/openstack/python-ironicclient.git}
230
-IRONICCLIENT_BRANCH=${IRONICCLIENT_BRANCH:-master}
229
+GITREPO["ironicclient"]=${IRONICCLIENT_REPO:-${GIT_BASE}/openstack/python-ironicclient.git}
230
+GITBRANCH["ironicclient"]=${IRONICCLIENT_BRANCH:-master}
231 231
 
232 232
 # python keystone client library to nova that horizon uses
233
-KEYSTONECLIENT_REPO=${KEYSTONECLIENT_REPO:-${GIT_BASE}/openstack/python-keystoneclient.git}
234
-KEYSTONECLIENT_BRANCH=${KEYSTONECLIENT_BRANCH:-master}
233
+GITREPO["keystoneclient"]=${KEYSTONECLIENT_REPO:-${GIT_BASE}/openstack/python-keystoneclient.git}
234
+GITBRANCH["keystoneclient"]=${KEYSTONECLIENT_BRANCH:-master}
235 235
 
236 236
 # neutron client
237
-NEUTRONCLIENT_REPO=${NEUTRONCLIENT_REPO:-${GIT_BASE}/openstack/python-neutronclient.git}
238
-NEUTRONCLIENT_BRANCH=${NEUTRONCLIENT_BRANCH:-master}
237
+GITREPO["neutronclient"]=${NEUTRONCLIENT_REPO:-${GIT_BASE}/openstack/python-neutronclient.git}
238
+GITBRANCH["neutronclient"]=${NEUTRONCLIENT_BRANCH:-master}
239 239
 
240 240
 # python client library to nova that horizon (and others) use
241
-NOVACLIENT_REPO=${NOVACLIENT_REPO:-${GIT_BASE}/openstack/python-novaclient.git}
242
-NOVACLIENT_BRANCH=${NOVACLIENT_BRANCH:-master}
241
+GITREPO["novaclient"]=${NOVACLIENT_REPO:-${GIT_BASE}/openstack/python-novaclient.git}
242
+GITBRANCH["novaclient"]=${NOVACLIENT_BRANCH:-master}
243 243
 
244 244
 # python swift client library
245
-SWIFTCLIENT_REPO=${SWIFTCLIENT_REPO:-${GIT_BASE}/openstack/python-swiftclient.git}
246
-SWIFTCLIENT_BRANCH=${SWIFTCLIENT_BRANCH:-master}
245
+GITREPO["swiftclient"]=${SWIFTCLIENT_REPO:-${GIT_BASE}/openstack/python-swiftclient.git}
246
+GITBRANCH["swiftclient"]=${SWIFTCLIENT_BRANCH:-master}
247 247
 
248 248
 # trove client library test
249
-TROVECLIENT_REPO=${TROVECLIENT_REPO:-${GIT_BASE}/openstack/python-troveclient.git}
250
-TROVECLIENT_BRANCH=${TROVECLIENT_BRANCH:-master}
249
+GITREPO["troveclient"]=${TROVECLIENT_REPO:-${GIT_BASE}/openstack/python-troveclient.git}
250
+GITBRANCH["troveclient"]=${TROVECLIENT_BRANCH:-master}
251 251
 
252 252
 # consolidated openstack python client
253
-OPENSTACKCLIENT_REPO=${OPENSTACKCLIENT_REPO:-${GIT_BASE}/openstack/python-openstackclient.git}
254
-OPENSTACKCLIENT_BRANCH=${OPENSTACKCLIENT_BRANCH:-master}
253
+GITREPO["openstackclient"]=${OPENSTACKCLIENT_REPO:-${GIT_BASE}/openstack/python-openstackclient.git}
254
+GITBRANCH["openstackclient"]=${OPENSTACKCLIENT_BRANCH:-master}
255 255
 
256 256
 ###################
257 257
 #