| Denis Egorenko | a45a0a0 | 2013-10-01 16:03:39 +0000 | [diff] [blame] | 1 | # lib/savanna | 
 | 2 |  | 
 | 3 | # Dependencies: | 
 | 4 | # ``functions`` file | 
 | 5 | # ``DEST``, ``DATA_DIR``, ``STACK_USER`` must be defined | 
| Denis Egorenko | a45a0a0 | 2013-10-01 16:03:39 +0000 | [diff] [blame] | 6 |  | 
 | 7 | # ``stack.sh`` calls the entry points in this order: | 
 | 8 | # | 
 | 9 | # install_savanna | 
 | 10 | # configure_savanna | 
 | 11 | # start_savanna | 
 | 12 | # stop_savanna | 
| Sergey Lukjanov | de20572 | 2014-02-19 14:00:42 +0400 | [diff] [blame] | 13 | # cleanup_savanna | 
| Denis Egorenko | a45a0a0 | 2013-10-01 16:03:39 +0000 | [diff] [blame] | 14 |  | 
 | 15 | # Save trace setting | 
 | 16 | XTRACE=$(set +o | grep xtrace) | 
 | 17 | set +o xtrace | 
 | 18 |  | 
 | 19 |  | 
 | 20 | # Defaults | 
 | 21 | # -------- | 
 | 22 |  | 
 | 23 | # Set up default repos | 
 | 24 | SAVANNA_REPO=${SAVANNA_REPO:-${GIT_BASE}/openstack/savanna.git} | 
 | 25 | SAVANNA_BRANCH=${SAVANNA_BRANCH:-master} | 
 | 26 |  | 
 | 27 | # Set up default directories | 
 | 28 | SAVANNA_DIR=$DEST/savanna | 
 | 29 | SAVANNA_CONF_DIR=${SAVANNA_CONF_DIR:-/etc/savanna} | 
| Sergey Lukjanov | abb7df1 | 2014-01-28 22:38:06 +0400 | [diff] [blame] | 30 | SAVANNA_CONF_FILE=${SAVANNA_CONF_DIR}/savanna.conf | 
| Denis Egorenko | a45a0a0 | 2013-10-01 16:03:39 +0000 | [diff] [blame] | 31 | SAVANNA_DEBUG=${SAVANNA_DEBUG:-True} | 
 | 32 |  | 
| Sergey Lukjanov | 0c08e7b | 2013-12-04 18:03:25 +0400 | [diff] [blame] | 33 | SAVANNA_SERVICE_HOST=${SAVANNA_SERVICE_HOST:-$SERVICE_HOST} | 
 | 34 | SAVANNA_SERVICE_PORT=${SAVANNA_SERVICE_PORT:-8386} | 
 | 35 | SAVANNA_SERVICE_PROTOCOL=${SAVANNA_SERVICE_PROTOCOL:-$SERVICE_PROTOCOL} | 
 | 36 |  | 
| Sergey Lukjanov | de20572 | 2014-02-19 14:00:42 +0400 | [diff] [blame] | 37 | SAVANNA_AUTH_CACHE_DIR=${SAVANNA_AUTH_CACHE_DIR:-/var/cache/savanna} | 
 | 38 |  | 
| Denis Egorenko | a45a0a0 | 2013-10-01 16:03:39 +0000 | [diff] [blame] | 39 | # Support entry points installation of console scripts | 
 | 40 | if [[ -d $SAVANNA_DIR/bin ]]; then | 
 | 41 |     SAVANNA_BIN_DIR=$SAVANNA_DIR/bin | 
 | 42 | else | 
 | 43 |     SAVANNA_BIN_DIR=$(get_python_exec_prefix) | 
 | 44 | fi | 
 | 45 |  | 
| Dean Troyer | 4237f59 | 2014-01-29 16:22:11 -0600 | [diff] [blame] | 46 | # Tell Tempest this project is present | 
 | 47 | TEMPEST_SERVICES+=,savanna | 
 | 48 |  | 
 | 49 |  | 
| Denis Egorenko | a45a0a0 | 2013-10-01 16:03:39 +0000 | [diff] [blame] | 50 | # Functions | 
 | 51 | # --------- | 
 | 52 |  | 
| Sergey Lukjanov | 0c08e7b | 2013-12-04 18:03:25 +0400 | [diff] [blame] | 53 | # create_savanna_accounts() - Set up common required savanna accounts | 
 | 54 | # | 
 | 55 | # Tenant      User       Roles | 
 | 56 | # ------------------------------ | 
 | 57 | # service     savanna    admin | 
| Ian Wienand | aee18c7 | 2014-02-21 15:35:08 +1100 | [diff] [blame] | 58 | function create_savanna_accounts { | 
| Sergey Lukjanov | 0c08e7b | 2013-12-04 18:03:25 +0400 | [diff] [blame] | 59 |  | 
| Steve Martinelli | 1968542 | 2014-01-24 13:02:26 -0600 | [diff] [blame] | 60 |     SERVICE_TENANT=$(openstack project list | awk "/ $SERVICE_TENANT_NAME / { print \$2 }") | 
 | 61 |     ADMIN_ROLE=$(openstack role list | awk "/ admin / { print \$2 }") | 
| Sergey Lukjanov | 0c08e7b | 2013-12-04 18:03:25 +0400 | [diff] [blame] | 62 |  | 
| Steve Martinelli | 1968542 | 2014-01-24 13:02:26 -0600 | [diff] [blame] | 63 |     SAVANNA_USER=$(openstack user create \ | 
 | 64 |         savanna \ | 
 | 65 |         --password "$SERVICE_PASSWORD" \ | 
 | 66 |         --project $SERVICE_TENANT \ | 
 | 67 |         --email savanna@example.com \ | 
| Sergey Lukjanov | 0c08e7b | 2013-12-04 18:03:25 +0400 | [diff] [blame] | 68 |         | grep " id " | get_field 2) | 
| Steve Martinelli | 1968542 | 2014-01-24 13:02:26 -0600 | [diff] [blame] | 69 |     openstack role add \ | 
 | 70 |         $ADMIN_ROLE \ | 
 | 71 |         --project $SERVICE_TENANT \ | 
 | 72 |         --user $SAVANNA_USER | 
| Sergey Lukjanov | 0c08e7b | 2013-12-04 18:03:25 +0400 | [diff] [blame] | 73 |  | 
 | 74 |     if [[ "$KEYSTONE_CATALOG_BACKEND" = 'sql' ]]; then | 
| Steve Martinelli | 1968542 | 2014-01-24 13:02:26 -0600 | [diff] [blame] | 75 |         SAVANNA_SERVICE=$(openstack service create \ | 
 | 76 |             savanna \ | 
| Sergey Lukjanov | 0c08e7b | 2013-12-04 18:03:25 +0400 | [diff] [blame] | 77 |             --type=data_processing \ | 
 | 78 |             --description="Savanna Data Processing" \ | 
 | 79 |             | grep " id " | get_field 2) | 
| Steve Martinelli | 1968542 | 2014-01-24 13:02:26 -0600 | [diff] [blame] | 80 |         openstack endpoint create \ | 
 | 81 |             $SAVANNA_SERVICE \ | 
| Sergey Lukjanov | 0c08e7b | 2013-12-04 18:03:25 +0400 | [diff] [blame] | 82 |             --region RegionOne \ | 
| Sergey Lukjanov | 0c08e7b | 2013-12-04 18:03:25 +0400 | [diff] [blame] | 83 |             --publicurl "$SAVANNA_SERVICE_PROTOCOL://$SAVANNA_SERVICE_HOST:$SAVANNA_SERVICE_PORT/v1.1/\$(tenant_id)s" \ | 
 | 84 |             --adminurl "$SAVANNA_SERVICE_PROTOCOL://$SAVANNA_SERVICE_HOST:$SAVANNA_SERVICE_PORT/v1.1/\$(tenant_id)s" \ | 
 | 85 |             --internalurl "$SAVANNA_SERVICE_PROTOCOL://$SAVANNA_SERVICE_HOST:$SAVANNA_SERVICE_PORT/v1.1/\$(tenant_id)s" | 
 | 86 |     fi | 
 | 87 | } | 
 | 88 |  | 
| Sergey Lukjanov | de20572 | 2014-02-19 14:00:42 +0400 | [diff] [blame] | 89 | # cleanup_savanna() - Remove residual data files, anything left over from | 
 | 90 | # previous runs that would need to clean up. | 
| Ian Wienand | aee18c7 | 2014-02-21 15:35:08 +1100 | [diff] [blame] | 91 | function cleanup_savanna { | 
| Sergey Lukjanov | de20572 | 2014-02-19 14:00:42 +0400 | [diff] [blame] | 92 |  | 
 | 93 |     # Cleanup auth cache dir | 
 | 94 |     sudo rm -rf $SAVANNA_AUTH_CACHE_DIR | 
 | 95 | } | 
 | 96 |  | 
| Denis Egorenko | a45a0a0 | 2013-10-01 16:03:39 +0000 | [diff] [blame] | 97 | # configure_savanna() - Set config files, create data dirs, etc | 
| Ian Wienand | aee18c7 | 2014-02-21 15:35:08 +1100 | [diff] [blame] | 98 | function configure_savanna { | 
| Denis Egorenko | a45a0a0 | 2013-10-01 16:03:39 +0000 | [diff] [blame] | 99 |  | 
 | 100 |     if [[ ! -d $SAVANNA_CONF_DIR ]]; then | 
 | 101 |         sudo mkdir -p $SAVANNA_CONF_DIR | 
 | 102 |     fi | 
 | 103 |     sudo chown $STACK_USER $SAVANNA_CONF_DIR | 
 | 104 |  | 
 | 105 |     # Copy over savanna configuration file and configure common parameters. | 
| Sergey Lukjanov | abb7df1 | 2014-01-28 22:38:06 +0400 | [diff] [blame] | 106 |     cp $SAVANNA_DIR/etc/savanna/savanna.conf.sample $SAVANNA_CONF_FILE | 
| Denis Egorenko | a45a0a0 | 2013-10-01 16:03:39 +0000 | [diff] [blame] | 107 |  | 
| Sergey Lukjanov | de20572 | 2014-02-19 14:00:42 +0400 | [diff] [blame] | 108 |     # Create auth cache dir | 
 | 109 |     sudo mkdir -p $SAVANNA_AUTH_CACHE_DIR | 
 | 110 |     sudo chown $STACK_USER $SAVANNA_AUTH_CACHE_DIR | 
 | 111 |     rm -rf $SAVANNA_AUTH_CACHE_DIR/* | 
 | 112 |  | 
 | 113 |     # Set obsolete keystone auth configs for backward compatibility | 
 | 114 |     iniset $SAVANNA_CONF_FILE DEFAULT os_auth_host $KEYSTONE_SERVICE_HOST | 
 | 115 |     iniset $SAVANNA_CONF_FILE DEFAULT os_auth_port $KEYSTONE_SERVICE_PORT | 
 | 116 |     iniset $SAVANNA_CONF_FILE DEFAULT os_auth_protocol $KEYSTONE_SERVICE_PROTOCOL | 
| Sergey Lukjanov | abb7df1 | 2014-01-28 22:38:06 +0400 | [diff] [blame] | 117 |     iniset $SAVANNA_CONF_FILE DEFAULT os_admin_password $SERVICE_PASSWORD | 
 | 118 |     iniset $SAVANNA_CONF_FILE DEFAULT os_admin_username savanna | 
 | 119 |     iniset $SAVANNA_CONF_FILE DEFAULT os_admin_tenant_name $SERVICE_TENANT_NAME | 
| Sergey Lukjanov | de20572 | 2014-02-19 14:00:42 +0400 | [diff] [blame] | 120 |  | 
 | 121 |     # Set actual keystone auth configs | 
 | 122 |     iniset $SAVANNA_CONF_FILE keystone_authtoken auth_uri $KEYSTONE_SERVICE_PROTOCOL://$KEYSTONE_SERVICE_HOST:$KEYSTONE_SERVICE_PORT/ | 
 | 123 |     iniset $SAVANNA_CONF_FILE keystone_authtoken admin_tenant_name $SERVICE_TENANT_NAME | 
 | 124 |     iniset $SAVANNA_CONF_FILE keystone_authtoken admin_user savanna | 
 | 125 |     iniset $SAVANNA_CONF_FILE keystone_authtoken admin_password $SERVICE_PASSWORD | 
 | 126 |     iniset $SAVANNA_CONF_FILE keystone_authtoken signing_dir $SAVANNA_AUTH_CACHE_DIR | 
 | 127 |     iniset $SAVANNA_CONF_FILE keystone_authtoken cafile $KEYSTONE_SSL_CA | 
 | 128 |  | 
| Sergey Lukjanov | abb7df1 | 2014-01-28 22:38:06 +0400 | [diff] [blame] | 129 |     iniset $SAVANNA_CONF_FILE DEFAULT debug $SAVANNA_DEBUG | 
| Denis Egorenko | a45a0a0 | 2013-10-01 16:03:39 +0000 | [diff] [blame] | 130 |  | 
| Sergey Lukjanov | abb7df1 | 2014-01-28 22:38:06 +0400 | [diff] [blame] | 131 |     iniset $SAVANNA_CONF_FILE database connection `database_connection_url savanna` | 
| Denis Egorenko | a45a0a0 | 2013-10-01 16:03:39 +0000 | [diff] [blame] | 132 |  | 
 | 133 |     if is_service_enabled neutron; then | 
| Sergey Lukjanov | abb7df1 | 2014-01-28 22:38:06 +0400 | [diff] [blame] | 134 |         iniset $SAVANNA_CONF_FILE DEFAULT use_neutron true | 
 | 135 |         iniset $SAVANNA_CONF_FILE DEFAULT use_floating_ips true | 
| Denis Egorenko | a45a0a0 | 2013-10-01 16:03:39 +0000 | [diff] [blame] | 136 |     fi | 
 | 137 |  | 
| Sergey Lukjanov | 6857dbb | 2014-02-25 11:02:44 +0400 | [diff] [blame] | 138 |     if is_service_enabled heat; then | 
 | 139 |         iniset $SAVANNA_CONF_FILE DEFAULT infrastructure_engine heat | 
 | 140 |     else | 
 | 141 |         iniset $SAVANNA_CONF_FILE DEFAULT infrastructure_engine savanna | 
 | 142 |     fi | 
 | 143 |  | 
| Sergey Lukjanov | abb7df1 | 2014-01-28 22:38:06 +0400 | [diff] [blame] | 144 |     iniset $SAVANNA_CONF_FILE DEFAULT use_syslog $SYSLOG | 
| Sergey Lukjanov | fe42255 | 2014-01-23 14:18:54 +0400 | [diff] [blame] | 145 |  | 
 | 146 |     recreate_database savanna utf8 | 
| Sergey Lukjanov | abb7df1 | 2014-01-28 22:38:06 +0400 | [diff] [blame] | 147 |     $SAVANNA_BIN_DIR/savanna-db-manage --config-file $SAVANNA_CONF_FILE upgrade head | 
| Denis Egorenko | a45a0a0 | 2013-10-01 16:03:39 +0000 | [diff] [blame] | 148 | } | 
 | 149 |  | 
 | 150 | # install_savanna() - Collect source and prepare | 
| Ian Wienand | aee18c7 | 2014-02-21 15:35:08 +1100 | [diff] [blame] | 151 | function install_savanna { | 
| Denis Egorenko | a45a0a0 | 2013-10-01 16:03:39 +0000 | [diff] [blame] | 152 |     git_clone $SAVANNA_REPO $SAVANNA_DIR $SAVANNA_BRANCH | 
 | 153 |     setup_develop $SAVANNA_DIR | 
 | 154 | } | 
 | 155 |  | 
 | 156 | # start_savanna() - Start running processes, including screen | 
| Ian Wienand | aee18c7 | 2014-02-21 15:35:08 +1100 | [diff] [blame] | 157 | function start_savanna { | 
| Sergey Lukjanov | abb7df1 | 2014-01-28 22:38:06 +0400 | [diff] [blame] | 158 |     screen_it savanna "cd $SAVANNA_DIR && $SAVANNA_BIN_DIR/savanna-api --config-file $SAVANNA_CONF_FILE" | 
| Denis Egorenko | a45a0a0 | 2013-10-01 16:03:39 +0000 | [diff] [blame] | 159 | } | 
 | 160 |  | 
 | 161 | # stop_savanna() - Stop running processes | 
| Ian Wienand | aee18c7 | 2014-02-21 15:35:08 +1100 | [diff] [blame] | 162 | function stop_savanna { | 
| Denis Egorenko | a45a0a0 | 2013-10-01 16:03:39 +0000 | [diff] [blame] | 163 |     # Kill the Savanna screen windows | 
 | 164 |     screen -S $SCREEN_NAME -p savanna -X kill | 
 | 165 | } | 
 | 166 |  | 
 | 167 |  | 
 | 168 | # Restore xtrace | 
 | 169 | $XTRACE | 
 | 170 |  | 
 | 171 | # Local variables: | 
 | 172 | # mode: shell-script | 
 | 173 | # End: |