Browse code

Move trove into in-tree plugin

Once the trove code is copied into the trove repo and it is used
as a devstack-plugin, we can remove trove-specific code from
devstack.

Change-Id: I8f9f1a015edb7ec1033e2eaf0b29ab15d89384ce
Depends-On: I3506dec0e6097f9c2e9267110fdfb768faa23c85

James E. Blair authored on 2015/03/25 08:32:03
Showing 8 changed files
... ...
@@ -75,12 +75,6 @@ SUSE
75 75
 Tempest
76 76
 ~~~~~~~
77 77
 
78
-Trove
79
-~~~~~
80
-
81
-* Nikhil Manchanda <SlickNik@gmail.com>
82
-* Michael Basnight <mbasnight@gmail.com>
83
-
84 78
 Xen
85 79
 ~~~
86 80
 * Bob Ball <bob.ball@citrix.com>
... ...
@@ -51,7 +51,6 @@ source $TOP_DIR/lib/ceilometer
51 51
 source $TOP_DIR/lib/heat
52 52
 source $TOP_DIR/lib/neutron-legacy
53 53
 source $TOP_DIR/lib/ironic
54
-source $TOP_DIR/lib/trove
55 54
 
56 55
 
57 56
 # Extras Source
... ...
@@ -173,7 +173,6 @@ Scripts
173 173
 * `lib/swift <lib/swift.html>`__
174 174
 * `lib/tempest <lib/tempest.html>`__
175 175
 * `lib/tls <lib/tls.html>`__
176
-* `lib/trove <lib/trove.html>`__
177 176
 * `lib/zaqar <lib/zaqar.html>`__
178 177
 * `unstack.sh <unstack.sh.html>`__
179 178
 * `clean.sh <clean.sh.html>`__
... ...
@@ -182,7 +181,6 @@ Scripts
182 182
 * `extras.d/50-ironic.sh <extras.d/50-ironic.sh.html>`__
183 183
 * `extras.d/60-ceph.sh <extras.d/60-ceph.sh.html>`__
184 184
 * `extras.d/70-sahara.sh <extras.d/70-sahara.sh.html>`__
185
-* `extras.d/70-trove.sh <extras.d/70-trove.sh.html>`__
186 185
 * `extras.d/70-tuskar.sh <extras.d/70-tuskar.sh.html>`__
187 186
 * `extras.d/70-zaqar.sh <extras.d/70-zaqar.sh.html>`__
188 187
 * `extras.d/80-tempest.sh <extras.d/80-tempest.sh.html>`__
... ...
@@ -242,6 +240,5 @@ Exercises
242 242
 * `exercises/sahara.sh <exercises/sahara.sh.html>`__
243 243
 * `exercises/sec\_groups.sh <exercises/sec_groups.sh.html>`__
244 244
 * `exercises/swift.sh <exercises/swift.sh.html>`__
245
-* `exercises/trove.sh <exercises/trove.sh.html>`__
246 245
 * `exercises/volumes.sh <exercises/volumes.sh.html>`__
247 246
 * `exercises/zaqar.sh <exercises/zaqar.sh.html>`__
248 247
deleted file mode 100644
... ...
@@ -1,32 +0,0 @@
1
-# trove.sh - Devstack extras script to install Trove
2
-
3
-if is_service_enabled trove; then
4
-    if [[ "$1" == "source" ]]; then
5
-        # Initial source
6
-        source $TOP_DIR/lib/trove
7
-    elif [[ "$1" == "stack" && "$2" == "install" ]]; then
8
-        echo_summary "Installing Trove"
9
-        install_trove
10
-        install_troveclient
11
-        cleanup_trove
12
-    elif [[ "$1" == "stack" && "$2" == "post-config" ]]; then
13
-        echo_summary "Configuring Trove"
14
-        configure_trove
15
-
16
-        if is_service_enabled key; then
17
-            create_trove_accounts
18
-        fi
19
-
20
-    elif [[ "$1" == "stack" && "$2" == "extra" ]]; then
21
-        # Initialize trove
22
-        init_trove
23
-
24
-        # Start the trove API and trove taskmgr components
25
-        echo_summary "Starting Trove"
26
-        start_trove
27
-    fi
28
-
29
-    if [[ "$1" == "unstack" ]]; then
30
-        stop_trove
31
-    fi
32
-fi
33 1
deleted file mode 100644
... ...
@@ -1,252 +0,0 @@
1
-#!/bin/bash
2
-#
3
-# lib/trove
4
-# Functions to control the configuration and operation of the **Trove** service
5
-
6
-# Dependencies:
7
-# ``functions`` file
8
-# ``DEST``, ``STACK_USER`` must be defined
9
-# ``SERVICE_{HOST|PROTOCOL|TOKEN}`` must be defined
10
-
11
-# ``stack.sh`` calls the entry points in this order:
12
-#
13
-# install_trove
14
-# configure_trove
15
-# init_trove
16
-# start_trove
17
-# stop_trove
18
-# cleanup_trove
19
-
20
-# Save trace setting
21
-XTRACE=$(set +o | grep xtrace)
22
-set +o xtrace
23
-
24
-
25
-# Defaults
26
-# --------
27
-if is_service_enabled neutron; then
28
-    TROVE_HOST_GATEWAY=${PUBLIC_NETWORK_GATEWAY:-172.24.4.1}
29
-else
30
-    TROVE_HOST_GATEWAY=${NETWORK_GATEWAY:-10.0.0.1}
31
-fi
32
-
33
-# Set up default configuration
34
-GITDIR["python-troveclient"]=$DEST/python-troveclient
35
-
36
-TROVE_DIR=$DEST/trove
37
-TROVE_CONF_DIR=${TROVE_CONF_DIR:-/etc/trove}
38
-TROVE_CONF=${TROVE_CONF:-$TROVE_CONF_DIR/trove.conf}
39
-TROVE_TASKMANAGER_CONF=${TROVE_TASKMANAGER_CONF:-$TROVE_CONF_DIR/trove-taskmanager.conf}
40
-TROVE_CONDUCTOR_CONF=${TROVE_CONDUCTOR_CONF:-$TROVE_CONF_DIR/trove-conductor.conf}
41
-TROVE_GUESTAGENT_CONF=${TROVE_GUESTAGENT_CONF:-$TROVE_CONF_DIR/trove-guestagent.conf}
42
-TROVE_API_PASTE_INI=${TROVE_API_PASTE_INI:-$TROVE_CONF_DIR/api-paste.ini}
43
-
44
-TROVE_LOCAL_CONF_DIR=$TROVE_DIR/etc/trove
45
-TROVE_LOCAL_API_PASTE_INI=$TROVE_LOCAL_CONF_DIR/api-paste.ini
46
-TROVE_AUTH_CACHE_DIR=${TROVE_AUTH_CACHE_DIR:-/var/cache/trove}
47
-TROVE_DATASTORE_TYPE=${TROVE_DATASTORE_TYPE:-"mysql"}
48
-TROVE_DATASTORE_VERSION=${TROVE_DATASTORE_VERSION:-"5.6"}
49
-TROVE_DATASTORE_PACKAGE=${TROVE_DATASTORE_PACKAGE:-"mysql-server-5.6"}
50
-
51
-# Support entry points installation of console scripts
52
-if [[ -d $TROVE_DIR/bin ]]; then
53
-    TROVE_BIN_DIR=$TROVE_DIR/bin
54
-else
55
-    TROVE_BIN_DIR=$(get_python_exec_prefix)
56
-fi
57
-TROVE_MANAGE=$TROVE_BIN_DIR/trove-manage
58
-
59
-# Tell Tempest this project is present
60
-TEMPEST_SERVICES+=,trove
61
-
62
-
63
-# Functions
64
-# ---------
65
-
66
-# Test if any Trove services are enabled
67
-# is_trove_enabled
68
-function is_trove_enabled {
69
-    [[ ,${ENABLED_SERVICES} =~ ,"tr-" ]] && return 0
70
-    return 1
71
-}
72
-
73
-# setup_trove_logging() - Adds logging configuration to conf files
74
-function setup_trove_logging {
75
-    local CONF=$1
76
-    iniset $CONF DEFAULT debug $ENABLE_DEBUG_LOG_LEVEL
77
-    iniset $CONF DEFAULT use_syslog $SYSLOG
78
-    if [ "$LOG_COLOR" == "True" ] && [ "$SYSLOG" == "False" ]; then
79
-        # Add color to logging output
80
-        setup_colorized_logging $CONF DEFAULT tenant user
81
-    fi
82
-}
83
-
84
-# create_trove_accounts() - Set up common required Trove accounts
85
-
86
-# Tenant               User       Roles
87
-# ------------------------------------------------------------------
88
-# service              trove     admin        # if enabled
89
-
90
-function create_trove_accounts {
91
-    if [[ "$ENABLED_SERVICES" =~ "trove" ]]; then
92
-
93
-        create_service_user "trove"
94
-
95
-        if [[ "$KEYSTONE_CATALOG_BACKEND" = 'sql' ]]; then
96
-
97
-            local trove_service=$(get_or_create_service "trove" \
98
-                "database" "Trove Service")
99
-            get_or_create_endpoint $trove_service \
100
-                "$REGION_NAME" \
101
-                "http://$SERVICE_HOST:8779/v1.0/\$(tenant_id)s" \
102
-                "http://$SERVICE_HOST:8779/v1.0/\$(tenant_id)s" \
103
-                "http://$SERVICE_HOST:8779/v1.0/\$(tenant_id)s"
104
-        fi
105
-    fi
106
-}
107
-
108
-# stack.sh entry points
109
-# ---------------------
110
-
111
-# cleanup_trove() - Remove residual data files, anything left over from previous
112
-# runs that a clean run would need to clean up
113
-function cleanup_trove {
114
-    #Clean up dirs
115
-    rm -fr $TROVE_AUTH_CACHE_DIR/*
116
-    rm -fr $TROVE_CONF_DIR/*
117
-}
118
-
119
-# configure_trove() - Set config files, create data dirs, etc
120
-function configure_trove {
121
-    setup_develop $TROVE_DIR
122
-
123
-    # Create the trove conf dir and cache dirs if they don't exist
124
-    sudo install -d -o $STACK_USER ${TROVE_CONF_DIR} ${TROVE_AUTH_CACHE_DIR}
125
-
126
-    # Copy api-paste file over to the trove conf dir
127
-    cp $TROVE_LOCAL_API_PASTE_INI $TROVE_API_PASTE_INI
128
-
129
-    # (Re)create trove conf files
130
-    rm -f $TROVE_CONF
131
-    rm -f $TROVE_TASKMANAGER_CONF
132
-    rm -f $TROVE_CONDUCTOR_CONF
133
-
134
-    iniset $TROVE_CONF DEFAULT rabbit_userid $RABBIT_USERID
135
-    iniset $TROVE_CONF DEFAULT rabbit_password $RABBIT_PASSWORD
136
-    iniset $TROVE_CONF database connection `database_connection_url trove`
137
-    iniset $TROVE_CONF DEFAULT default_datastore $TROVE_DATASTORE_TYPE
138
-    setup_trove_logging $TROVE_CONF
139
-    iniset $TROVE_CONF DEFAULT trove_api_workers "$API_WORKERS"
140
-
141
-    configure_auth_token_middleware $TROVE_CONF trove $TROVE_AUTH_CACHE_DIR
142
-
143
-    # (Re)create trove taskmanager conf file if needed
144
-    if is_service_enabled tr-tmgr; then
145
-        TROVE_AUTH_ENDPOINT=$KEYSTONE_AUTH_URI/v$IDENTITY_API_VERSION
146
-
147
-        iniset $TROVE_TASKMANAGER_CONF DEFAULT rabbit_userid $RABBIT_USERID
148
-        iniset $TROVE_TASKMANAGER_CONF DEFAULT rabbit_password $RABBIT_PASSWORD
149
-        iniset $TROVE_TASKMANAGER_CONF database connection `database_connection_url trove`
150
-        iniset $TROVE_TASKMANAGER_CONF DEFAULT taskmanager_manager trove.taskmanager.manager.Manager
151
-        iniset $TROVE_TASKMANAGER_CONF DEFAULT nova_proxy_admin_user radmin
152
-        iniset $TROVE_TASKMANAGER_CONF DEFAULT nova_proxy_admin_tenant_name trove
153
-        iniset $TROVE_TASKMANAGER_CONF DEFAULT nova_proxy_admin_pass $RADMIN_USER_PASS
154
-        iniset $TROVE_TASKMANAGER_CONF DEFAULT trove_auth_url $TROVE_AUTH_ENDPOINT
155
-        setup_trove_logging $TROVE_TASKMANAGER_CONF
156
-    fi
157
-
158
-    # (Re)create trove conductor conf file if needed
159
-    if is_service_enabled tr-cond; then
160
-        iniset $TROVE_CONDUCTOR_CONF DEFAULT rabbit_userid $RABBIT_USERID
161
-        iniset $TROVE_CONDUCTOR_CONF DEFAULT rabbit_password $RABBIT_PASSWORD
162
-        iniset $TROVE_CONDUCTOR_CONF database connection `database_connection_url trove`
163
-        iniset $TROVE_CONDUCTOR_CONF DEFAULT nova_proxy_admin_user radmin
164
-        iniset $TROVE_CONDUCTOR_CONF DEFAULT nova_proxy_admin_tenant_name trove
165
-        iniset $TROVE_CONDUCTOR_CONF DEFAULT nova_proxy_admin_pass $RADMIN_USER_PASS
166
-        iniset $TROVE_CONDUCTOR_CONF DEFAULT trove_auth_url $TROVE_AUTH_ENDPOINT
167
-        iniset $TROVE_CONDUCTOR_CONF DEFAULT control_exchange trove
168
-        setup_trove_logging $TROVE_CONDUCTOR_CONF
169
-    fi
170
-
171
-    # Set up Guest Agent conf
172
-    iniset $TROVE_GUESTAGENT_CONF DEFAULT rabbit_userid $RABBIT_USERID
173
-    iniset $TROVE_GUESTAGENT_CONF DEFAULT rabbit_host $TROVE_HOST_GATEWAY
174
-    iniset $TROVE_GUESTAGENT_CONF DEFAULT rabbit_password $RABBIT_PASSWORD
175
-    iniset $TROVE_GUESTAGENT_CONF DEFAULT nova_proxy_admin_user radmin
176
-    iniset $TROVE_GUESTAGENT_CONF DEFAULT nova_proxy_admin_tenant_name trove
177
-    iniset $TROVE_GUESTAGENT_CONF DEFAULT nova_proxy_admin_pass $RADMIN_USER_PASS
178
-    iniset $TROVE_GUESTAGENT_CONF DEFAULT trove_auth_url $TROVE_AUTH_ENDPOINT
179
-    iniset $TROVE_GUESTAGENT_CONF DEFAULT control_exchange trove
180
-    iniset $TROVE_GUESTAGENT_CONF DEFAULT ignore_users os_admin
181
-    iniset $TROVE_GUESTAGENT_CONF DEFAULT log_dir /var/log/trove/
182
-    iniset $TROVE_GUESTAGENT_CONF DEFAULT log_file trove-guestagent.log
183
-    setup_trove_logging $TROVE_GUESTAGENT_CONF
184
-}
185
-
186
-# install_troveclient() - Collect source and prepare
187
-function install_troveclient {
188
-    if use_library_from_git "python-troveclient"; then
189
-        git_clone_by_name "python-troveclient"
190
-        setup_dev_lib "python-troveclient"
191
-    fi
192
-}
193
-
194
-# install_trove() - Collect source and prepare
195
-function install_trove {
196
-    git_clone $TROVE_REPO $TROVE_DIR $TROVE_BRANCH
197
-}
198
-
199
-# init_trove() - Initializes Trove Database as a Service
200
-function init_trove {
201
-    # (Re)Create trove db
202
-    recreate_database trove
203
-
204
-    # Initialize the trove database
205
-    $TROVE_MANAGE db_sync
206
-
207
-    # If no guest image is specified, skip remaining setup
208
-    [ -z "$TROVE_GUEST_IMAGE_URL" ] && return 0
209
-
210
-    # Find the glance id for the trove guest image
211
-    # The image is uploaded by stack.sh -- see $IMAGE_URLS handling
212
-    GUEST_IMAGE_NAME=$(basename "$TROVE_GUEST_IMAGE_URL")
213
-    GUEST_IMAGE_NAME=${GUEST_IMAGE_NAME%.*}
214
-    TROVE_GUEST_IMAGE_ID=$(openstack --os-token $TOKEN --os-url $GLANCE_SERVICE_PROTOCOL://$GLANCE_HOSTPORT image list | grep "${GUEST_IMAGE_NAME}" | get_field 1)
215
-    if [ -z "$TROVE_GUEST_IMAGE_ID" ]; then
216
-        # If no glance id is found, skip remaining setup
217
-        echo "Datastore ${TROVE_DATASTORE_TYPE} will not be created: guest image ${GUEST_IMAGE_NAME} not found."
218
-        return 1
219
-    fi
220
-
221
-    # Now that we have the guest image id, initialize appropriate datastores / datastore versions
222
-    $TROVE_MANAGE datastore_update "$TROVE_DATASTORE_TYPE" ""
223
-    $TROVE_MANAGE datastore_version_update "$TROVE_DATASTORE_TYPE" "$TROVE_DATASTORE_VERSION" "$TROVE_DATASTORE_TYPE" \
224
-        "$TROVE_GUEST_IMAGE_ID" "$TROVE_DATASTORE_PACKAGE" 1
225
-    $TROVE_MANAGE datastore_version_update "$TROVE_DATASTORE_TYPE" "inactive_version" "inactive_manager" "$TROVE_GUEST_IMAGE_ID" "" 0
226
-    $TROVE_MANAGE datastore_update "$TROVE_DATASTORE_TYPE" "$TROVE_DATASTORE_VERSION"
227
-    $TROVE_MANAGE datastore_update "Inactive_Datastore" ""
228
-}
229
-
230
-# start_trove() - Start running processes, including screen
231
-function start_trove {
232
-    run_process tr-api "$TROVE_BIN_DIR/trove-api --config-file=$TROVE_CONF --debug"
233
-    run_process tr-tmgr "$TROVE_BIN_DIR/trove-taskmanager --config-file=$TROVE_TASKMANAGER_CONF --debug"
234
-    run_process tr-cond "$TROVE_BIN_DIR/trove-conductor --config-file=$TROVE_CONDUCTOR_CONF --debug"
235
-}
236
-
237
-# stop_trove() - Stop running processes
238
-function stop_trove {
239
-    # Kill the trove screen windows
240
-    local serv
241
-    for serv in tr-api tr-tmgr tr-cond; do
242
-        stop_process $serv
243
-    done
244
-}
245
-
246
-# Restore xtrace
247
-$XTRACE
248
-
249
-# Tell emacs to use shell-script-mode
250
-## Local variables:
251
-## mode: shell-script
252
-## End:
... ...
@@ -231,11 +231,6 @@ SAHARA_BRANCH=${SAHARA_BRANCH:-master}
231 231
 SWIFT_REPO=${SWIFT_REPO:-${GIT_BASE}/openstack/swift.git}
232 232
 SWIFT_BRANCH=${SWIFT_BRANCH:-master}
233 233
 
234
-# trove service
235
-TROVE_REPO=${TROVE_REPO:-${GIT_BASE}/openstack/trove.git}
236
-TROVE_BRANCH=${TROVE_BRANCH:-master}
237
-
238
-
239 234
 ##############
240 235
 #
241 236
 #  Testing Components
... ...
@@ -301,10 +296,6 @@ GITBRANCH["python-saharaclient"]=${SAHARACLIENT_BRANCH:-master}
301 301
 GITREPO["python-swiftclient"]=${SWIFTCLIENT_REPO:-${GIT_BASE}/openstack/python-swiftclient.git}
302 302
 GITBRANCH["python-swiftclient"]=${SWIFTCLIENT_BRANCH:-master}
303 303
 
304
-# trove client library test
305
-GITREPO["python-troveclient"]=${TROVECLIENT_REPO:-${GIT_BASE}/openstack/python-troveclient.git}
306
-GITBRANCH["python-troveclient"]=${TROVECLIENT_BRANCH:-master}
307
-
308 304
 # consolidated openstack python client
309 305
 GITREPO["python-openstackclient"]=${OPENSTACKCLIENT_REPO:-${GIT_BASE}/openstack/python-openstackclient.git}
310 306
 GITBRANCH["python-openstackclient"]=${OPENSTACKCLIENT_BRANCH:-master}
... ...
@@ -577,16 +568,15 @@ case "$VIRT_DRIVER" in
577 577
         IMAGE_URLS=${IMAGE_URLS:-"http://download.cirros-cloud.net/${CIRROS_VERSION}/cirros-${CIRROS_VERSION}-${CIRROS_ARCH}-uec.tar.gz"};;
578 578
 esac
579 579
 
580
-# Trove needs a custom image for its work
581
-if [[ "$ENABLED_SERVICES" =~ 'tr-api' ]]; then
582
-    case "$VIRT_DRIVER" in
583
-        libvirt|ironic|xenapi)
584
-            TROVE_GUEST_IMAGE_URL=${TROVE_GUEST_IMAGE_URL:-"http://tarballs.openstack.org/trove/images/ubuntu/mysql.qcow2"}
585
-            IMAGE_URLS+=",${TROVE_GUEST_IMAGE_URL}"
586
-            ;;
587
-        *)
588
-            ;;
589
-    esac
580
+# Staging Area for New Images, have them here for at least 24hrs for nodepool
581
+# to cache them otherwise the failure rates in the gate are too high
582
+PRECACHE_IMAGES=$(trueorfalse False PRECACHE_IMAGES)
583
+if [[ "$PRECACHE_IMAGES" == "True" ]]; then
584
+
585
+    IMAGE_URL="http://tarballs.openstack.org/trove/images/ubuntu/mysql.qcow2"
586
+    if ! [[ "$IMAGE_URLS"  =~ "$IMAGE_URL" ]]; then
587
+        IMAGE_URLS+=",$IMAGE_URL"
588
+    fi
590 589
 fi
591 590
 
592 591
 # 10Gb default volume backing file size
... ...
@@ -29,7 +29,7 @@ for i in $TOP/lib/*; do
29 29
     fi
30 30
 done
31 31
 
32
-ALL_LIBS="python-novaclient oslo.config pbr oslo.context python-troveclient"
32
+ALL_LIBS="python-novaclient oslo.config pbr oslo.context"
33 33
 ALL_LIBS+=" python-keystoneclient taskflow oslo.middleware pycadf"
34 34
 ALL_LIBS+=" python-glanceclient python-ironicclient tempest-lib"
35 35
 ALL_LIBS+=" oslo.messaging oslo.log cliff python-heatclient stevedore"
... ...
@@ -173,10 +173,6 @@ if is_service_enabled neutron; then
173 173
     cleanup_neutron
174 174
 fi
175 175
 
176
-if is_service_enabled trove; then
177
-    cleanup_trove
178
-fi
179
-
180 176
 if is_service_enabled dstat; then
181 177
     stop_dstat
182 178
 fi