/
create_ose_env.sh
executable file
·169 lines (128 loc) · 5.26 KB
/
create_ose_env.sh
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
#!/bin/bash
set -e
# Input Checking
if [ "$#" -ne 4 ]; then
echo "Invalid Number of Input Parameters"
echo "args: AppName VersionNumber OSEBrokerUrl OSEDomain"
exit 1
fi
SOURCE_APP_NAME=$1
VERSION_NUMBER=$2
OPENSHIFT_BROKER=$3
OPENSHIFT_DOMAIN=$4
# Cleanse App and Branch names per OpenShift spec
APP_NAME=$(echo ${SOURCE_APP_NAME} | tr -d -c "[:alnum:]")
# Initialize Variables
DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
HEADER_ACCEPT="Accept: application/json"
OPENSHIFT_API=/broker/rest/
OPENSHIFT_USER=cposta
OPENSHIFT_PASSWORD=cposta
# ceposta, dev, qa, prod
OPENSHIFT_DOMAIN=ceposta
OPENSHIFT_CARTRIDGE_FUSE=fuse-6.1.1
# set the app name to include the build versions so we can identify the env
OPENSHIFT_APP_NAME=$(echo ${APP_NAME}${VERSION_NUMBER} | tr -d -c "[:alnum:]")
echo "app name: $OPENSHIFT_APP_NAME"
function cleanup() {
rm -rf ${OPENSHIFT_APP_NAME}
}
trap cleanup 0
# Check to see if application already exists and returns an array of values. Depending on the response, the following is returned
#
# Application Does Not Exist
# RESULT[0] = Status Code 0
#
# Application Does Exist
# RESULT[0] = Status Code 2
# RESULT[1] = Application URL
# RESULT[2] = Git URL of Application
#
# Error Occurred
# RESULT[0] = Status Code 1
# RESULT[1] = Error Message
echo "checking whether this app already exists in this environment"
declare -a CHECK_APP_EXISTS_RESULT=$(python ${DIR}/check_app_exists.py ${OPENSHIFT_BROKER} ${OPENSHIFT_API} ${OPENSHIFT_DOMAIN} ${OPENSHIFT_USER} "${OPENSHIFT_PASSWORD}" "${OPENSHIFT_APP_NAME}" ${OPENSHIFT_CARTRIDGE_FUSE}
)
if [ "${CHECK_APP_EXISTS_RESULT[0]}" == "1" ]
then
echo "An Error Occurred ${CHECK_APP_EXISTS_RESULT[1]}"
exit 1
elif [ "${CHECK_APP_EXISTS_RESULT[0]}" == "2" ]
then
echo "Application Already Exists. Skipping Application Creation"
# Set App URL and Git URL
OPENSHIFT_APP_URL=${CHECK_APP_EXISTS_RESULT[1]}
OPENSHIFT_GIT_URL=${CHECK_APP_EXISTS_RESULT[2]}
elif [ "${CHECK_APP_EXISTS_RESULT[0]}" == "0" ]
then
echo
echo "Creating Application"
echo
# Attempt to create an application and return an array of values. Depending on the response, the following is returned
#
# Application Created Successfully
# RESULT[0] = Status Code 0
# RESULT[1] = Application URL
# RESULT[2] = SSH url
# RESULT[3] = Console User Name
# RESULT[4] = Console Password
# RESULT[5] = ZK URL
# RESULT[6] = ZK Password
#
# Error Occurred
# RESULT[0] = Status Code 1
# RESULT[1] = Error Message
declare -a APP_CREATE_RESULT=$(python ${DIR}/create_new_app.py ${OPENSHIFT_BROKER} ${OPENSHIFT_API} ${OPENSHIFT_DOMAIN} ${OPENSHIFT_USER} "${OPENSHIFT_PASSWORD}" "${OPENSHIFT_APP_NAME}" ${OPENSHIFT_CARTRIDGE_FUSE}
)
CREATE_STATUS=${APP_CREATE_RESULT[0]}
if [ "${CREATE_STATUS}" != "0" ]
then
echo "Application Failed to be Created"
echo "Error: ${APP_CREATE_RESULT[1]}"
exit 1
else
echo "Created application ${APP_CREATE_RESULT[1]} successfully"
fi
FUSE_ROOT_URL=${APP_CREATE_RESULT[1]}
FUSE_GEAR_SSH=${APP_CREATE_RESULT[2]}
FUSE_CONSOLE_USER=${APP_CREATE_RESULT[3]}
FUSE_CONSOLE_PASSWORD=${APP_CREATE_RESULT[4]}
FUSE_ZK_URL=${APP_CREATE_RESULT[5]}
FUSE_ZK_PASSWORD=${APP_CREATE_RESULT[6]}
FUSE_DOMAIN_NAME=$(echo ${FUSE_ZK_URL} | cut -d ':' -f 1)
FUSE_GIT_URL="http://${FUSE_CONSOLE_USER}:${FUSE_CONSOLE_PASSWORD}@${FUSE_DOMAIN_NAME}/git/fabric"
FUSE_MAVEN_UPLOAD_URL="http://${FUSE_CONSOLE_USER}:${FUSE_CONSOLE_PASSWORD}@${FUSE_DOMAIN_NAME}/maven/upload"
echo "Writing Variables to Properties File"
rm -fr ${DIR}/vars
mkdir -p ${DIR}/vars
echo FUSE_ROOT_URL=${FUSE_ROOT_URL} > ${DIR}/vars/openshift_vars_build-${VERSION_NUMBER}
echo FUSE_GEAR_SSH=${FUSE_GEAR_SSH} >> ${DIR}/vars/openshift_vars_build-${VERSION_NUMBER}
echo FUSE_CONSOLE_USER=${FUSE_CONSOLE_USER} >> ${DIR}/vars/openshift_vars_build-${VERSION_NUMBER}
echo FUSE_CONSOLE_PASSWORD=${FUSE_CONSOLE_PASSWORD} >> ${DIR}/vars/openshift_vars_build-${VERSION_NUMBER}
echo FUSE_ZK_URL=${FUSE_ZK_URL} >> ${DIR}/vars/openshift_vars_build-${VERSION_NUMBER}
echo FUSE_ZK_PASSWORD=${FUSE_ZK_PASSWORD} >> ${DIR}/vars/openshift_vars_build-${VERSION_NUMBER}
echo FUSE_DOMAIN_NAME=${FUSE_DOMAIN_NAME} >> ${DIR}/vars/openshift_vars_build-${VERSION_NUMBER}
echo FUSE_GIT_URL=${FUSE_GIT_URL} >> ${DIR}/vars/openshift_vars_build-${VERSION_NUMBER}
echo FUSE_MAVEN_UPLOAD_URL=${FUSE_MAVEN_UPLOAD_URL} >> ${DIR}/vars/openshift_vars_build-${VERSION_NUMBER}
echo "try get fuse ssh url"
#SSH_URL_JSON=$(curl --insecure -X POST --user admin:Jd5bgvF1hXiK --data '{"arguments":["${OPENSHIFT_APP_NAME}",["sshUrl"]],"mbean":"io.fabric8:type=Fabric","operation":"getContainer(java.lang.String,java.util.List)","type":"exec"}' '${FUSE_ROOT_URL}jolokia/exec')
declare -a SSH_URL_RESULT=$(
python ${DIR}/get_container_ssh.py $FUSE_ROOT_URL $OPENSHIFT_APP_NAME $FUSE_CONSOLE_PASSWORD
)
if [ "${SSH_URL_RESULT[0]}" != 0 ]
then
echo "Could not find the container's SSH URL... we should kill the env create and try again"
echo ${SSH_URL_RESULT[1]}
exit 1
else
echo "Found the Fuse SSH Url to use: ${SSH_URL_RESULT[1]}"
fi
FUSE_CONTAINER_SSH=${SSH_URL_RESULT[1]}
echo FUSE_CONTAINER_SSH=${FUSE_CONTAINER_SSH} >> ${DIR}/vars/openshift_vars_build-${VERSION_NUMBER}
# end the entire large if
else
echo "There was major error"
echo "check result: ${CHECK_APP_EXISTS_RESULT[1]}"
echo "create result: ${APP_CREATE_RESULT[1]}"
fi