openshift 0.60.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/Error codes.txt +15 -0
- data/bin/os +42 -0
- data/bin/os-add-cartridge +190 -0
- data/bin/os-clone-application +175 -0
- data/bin/os-create-application +306 -0
- data/bin/os-create-environment +306 -0
- data/bin/os-delete-application +141 -0
- data/bin/os-delete-environment +140 -0
- data/bin/os-deregister-cloud +124 -0
- data/bin/os-help +108 -0
- data/bin/os-inspect-application +222 -0
- data/bin/os-list-applications +139 -0
- data/bin/os-list-cartridges +182 -0
- data/bin/os-list-clouds +137 -0
- data/bin/os-list-environments +188 -0
- data/bin/os-list-servers +122 -0
- data/bin/os-open-console +162 -0
- data/bin/os-register-cloud +181 -0
- data/bin/os-remove-cartridge +170 -0
- data/bin/os-restart-application +147 -0
- data/bin/os-start-application +147 -0
- data/bin/os-start-environment +144 -0
- data/bin/os-stop-application +147 -0
- data/bin/os-stop-environment +144 -0
- data/bin/os-tail-logs +159 -0
- data/conf/openshift.conf +5 -0
- data/lib/openshift.rb +666 -0
- metadata +192 -0
@@ -0,0 +1,188 @@
|
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
# Copyright 2010 Red Hat, Inc.
|
3
|
+
#
|
4
|
+
# Permission is hereby granted, free of charge, to any person
|
5
|
+
# obtaining a copy of this software and associated documentation files
|
6
|
+
# (the "Software"), to deal in the Software without restriction,
|
7
|
+
# including without limitation the rights to use, copy, modify, merge,
|
8
|
+
# publish, distribute, sublicense, and/or sell copies of the Software,
|
9
|
+
# and to permit persons to whom the Software is furnished to do so,
|
10
|
+
# subject to the following conditions:
|
11
|
+
#
|
12
|
+
# The above copyright notice and this permission notice shall be
|
13
|
+
# included in all copies or substantial portions of the Software.
|
14
|
+
#
|
15
|
+
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
16
|
+
# EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
17
|
+
# MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
|
18
|
+
# NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS
|
19
|
+
# BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
|
20
|
+
# ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
|
21
|
+
# CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
22
|
+
# SOFTWARE.
|
23
|
+
|
24
|
+
require 'openshift'
|
25
|
+
|
26
|
+
def usage
|
27
|
+
puts <<USAGE
|
28
|
+
== Synopsis
|
29
|
+
|
30
|
+
os-list-environments: List all environments.
|
31
|
+
|
32
|
+
== Usage
|
33
|
+
|
34
|
+
os list-environments [options]
|
35
|
+
|
36
|
+
-u|--username
|
37
|
+
Redhat Login (RHN or OpenShift login with OpenShift Express access)
|
38
|
+
|
39
|
+
-p|--password
|
40
|
+
Redhat Password
|
41
|
+
|
42
|
+
-t|--target flex|express
|
43
|
+
The cloud platform to list environments for.
|
44
|
+
|
45
|
+
-h|--help
|
46
|
+
Prints this message
|
47
|
+
USAGE
|
48
|
+
end
|
49
|
+
|
50
|
+
opts = GetoptLong.new(
|
51
|
+
["--username", "-u", GetoptLong::REQUIRED_ARGUMENT],
|
52
|
+
["--password", "-p", GetoptLong::REQUIRED_ARGUMENT],
|
53
|
+
["--target", "-t", GetoptLong::REQUIRED_ARGUMENT],
|
54
|
+
["--help", "-h", GetoptLong::NO_ARGUMENT],
|
55
|
+
["--debug", GetoptLong::NO_ARGUMENT],
|
56
|
+
["--sso", GetoptLong::REQUIRED_ARGUMENT],
|
57
|
+
["--porcelin", GetoptLong::NO_ARGUMENT]
|
58
|
+
)
|
59
|
+
|
60
|
+
args = {}
|
61
|
+
begin
|
62
|
+
opts.each{ |k,v| args[k]=v }
|
63
|
+
rescue GetoptLong::Error => e
|
64
|
+
usage
|
65
|
+
exit -100
|
66
|
+
end
|
67
|
+
|
68
|
+
if args['--help']
|
69
|
+
usage
|
70
|
+
exit
|
71
|
+
end
|
72
|
+
|
73
|
+
@debug = true if args['--debug']
|
74
|
+
@porcelin = true if args['--porcelin']
|
75
|
+
|
76
|
+
args['--target'] = conf('default_target') || 'flex' if args['--target'].nil? or args['--target']==""
|
77
|
+
debug "Target platform #{args['--target']}"
|
78
|
+
|
79
|
+
if args['--target'] == 'flex'
|
80
|
+
flex_server = conf('flex_server')
|
81
|
+
|
82
|
+
cookie = args['--sso']
|
83
|
+
if !cookie
|
84
|
+
username = args['--username'] || conf("username") || Openshift::IO.prompt("Redhat username",[],Openshift::Validation.method(:check_login))
|
85
|
+
password = args['--password'] || Openshift::IO.prompt("Redhat password",nil,nil,true,false)
|
86
|
+
csay("Logging into Openshift Flex as #{username}\n",:message)
|
87
|
+
cookie=Openshift.login(@http,username,password)
|
88
|
+
end
|
89
|
+
|
90
|
+
csay("Contacting Openshift Flex server... ") if not @porcelin
|
91
|
+
uri = URI.parse("#{flex_server}/rest/api")
|
92
|
+
response = Openshift::Rest.get(@http, uri, nil, cookie, nil)
|
93
|
+
case response
|
94
|
+
when Net::HTTPSuccess
|
95
|
+
csay("[OK]",:conf) if not @porcelin
|
96
|
+
else
|
97
|
+
debug "HTTP code: #{response.code}"
|
98
|
+
debug response.body
|
99
|
+
csay("[ERROR]",:error) if not @porcelin
|
100
|
+
csay("Unable to contact Flex server",:error)
|
101
|
+
exit -301
|
102
|
+
end
|
103
|
+
data = JSON.parse(response.body)
|
104
|
+
list_env_url = data['links']['list-clusters']
|
105
|
+
|
106
|
+
csay("Retrieving list of environments... ") if not @porcelin
|
107
|
+
uri = URI.parse("#{flex_server}/rest/#{list_env_url['href']}")
|
108
|
+
response = Openshift::Rest.doHttp(@http, list_env_url['method'], uri, nil, cookie, nil)
|
109
|
+
case response
|
110
|
+
when Net::HTTPSuccess
|
111
|
+
csay("[OK]",:conf) if not @porcelin
|
112
|
+
else
|
113
|
+
debug "HTTP code: #{response.code}"
|
114
|
+
debug response.body
|
115
|
+
csay("[ERROR]",:error) if not @porcelin
|
116
|
+
csay("Unable to retrieve environment list",:error)
|
117
|
+
exit -301
|
118
|
+
end
|
119
|
+
begin
|
120
|
+
data = JSON.parse(response.body)
|
121
|
+
data = data['clusters']
|
122
|
+
data.each{ |c|
|
123
|
+
c['num-nodes'] = c['nodes'].size
|
124
|
+
}
|
125
|
+
if args['--porcelin']
|
126
|
+
print JSON.generate(data)
|
127
|
+
else
|
128
|
+
Openshift::Formatter.table(["Environment Id","Name","Cloud", "DNS", "Load balanced", "Location", "State"],
|
129
|
+
['id','name','cloud-account-name', 'dns', 'loadbalanced','location','cluster-status'],
|
130
|
+
[16,15,20,40,20,15,10],
|
131
|
+
data)
|
132
|
+
end
|
133
|
+
end
|
134
|
+
else
|
135
|
+
sso_data = args['--sso']
|
136
|
+
if !sso_data
|
137
|
+
username = args['--username'] || conf("username") || Openshift::IO.prompt("Redhat username",[],Openshift::Validation.method(:check_login))
|
138
|
+
password = args['--password'] || Openshift::IO.prompt("Redhat password",nil,nil,true,false)
|
139
|
+
sso_data = JSON.generate({"username"=>username, "password"=>password})
|
140
|
+
else
|
141
|
+
sso_data = JSON.parse(sso_data)
|
142
|
+
username = sso_data['username']
|
143
|
+
password = sso_data['password']
|
144
|
+
end
|
145
|
+
|
146
|
+
data = {'rhlogin' => username}
|
147
|
+
data['debug'] = "true"
|
148
|
+
Openshift::Debug.print_post_data(data)
|
149
|
+
json_data = JSON.generate(data)
|
150
|
+
|
151
|
+
url = URI.parse("https://#{libra_server}/app/broker/userinfo")
|
152
|
+
csay("Retrieving list of environments... ") if not @porcelin
|
153
|
+
response = Openshift::Rest.post(net_http, url, {"json_data" => json_data, "password" => password})
|
154
|
+
case response
|
155
|
+
when Net::HTTPSuccess
|
156
|
+
csay("[OK]",:conf) if not @porcelin
|
157
|
+
when Net::HTTPNotFound
|
158
|
+
csay("No Openshift Express environments found for user '#{username}'")
|
159
|
+
csay("Be sure to run os-create-environment before using the other os tools.")
|
160
|
+
exit -200
|
161
|
+
when Net::HTTPUnauthorized
|
162
|
+
csay("Invalid login credentials.")
|
163
|
+
exit -401
|
164
|
+
else
|
165
|
+
debug "HTTP code: #{response.code}"
|
166
|
+
debug response.body
|
167
|
+
csay("[ERROR]",:error) if not @porcelin
|
168
|
+
csay("Unable to retrieve environment list",:error)
|
169
|
+
exit -301
|
170
|
+
end
|
171
|
+
|
172
|
+
begin
|
173
|
+
json_resp = JSON.parse(response.body)
|
174
|
+
user_info = JSON.parse(json_resp['result'].to_s)
|
175
|
+
rescue JSON::ParserError
|
176
|
+
exit -400
|
177
|
+
end
|
178
|
+
|
179
|
+
if @porcelin
|
180
|
+
print user_info
|
181
|
+
else
|
182
|
+
csay("User Info",:message)
|
183
|
+
csay("Namespace: #{user_info['user_info']['namespace']}")
|
184
|
+
csay(" UUID: #{user_info['user_info']['uuid']}")
|
185
|
+
csay(" RHLogin: #{user_info['user_info']['rhlogin']}")
|
186
|
+
csay(" ssh_key: #{user_info['user_info']['ssh_key']}")
|
187
|
+
end
|
188
|
+
end
|
data/bin/os-list-servers
ADDED
@@ -0,0 +1,122 @@
|
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
# Copyright 2010 Red Hat, Inc.
|
3
|
+
#
|
4
|
+
# Permission is hereby granted, free of charge, to any person
|
5
|
+
# obtaining a copy of this software and associated documentation files
|
6
|
+
# (the "Software"), to deal in the Software without restriction,
|
7
|
+
# including without limitation the rights to use, copy, modify, merge,
|
8
|
+
# publish, distribute, sublicense, and/or sell copies of the Software,
|
9
|
+
# and to permit persons to whom the Software is furnished to do so,
|
10
|
+
# subject to the following conditions:
|
11
|
+
#
|
12
|
+
# The above copyright notice and this permission notice shall be
|
13
|
+
# included in all copies or substantial portions of the Software.
|
14
|
+
#
|
15
|
+
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
16
|
+
# EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
17
|
+
# MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
|
18
|
+
# NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS
|
19
|
+
# BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
|
20
|
+
# ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
|
21
|
+
# CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
22
|
+
# SOFTWARE.
|
23
|
+
|
24
|
+
require 'openshift'
|
25
|
+
|
26
|
+
def usage
|
27
|
+
puts <<USAGE
|
28
|
+
== Synopsis
|
29
|
+
|
30
|
+
rhc-list-servers: List all servers on all running environments.
|
31
|
+
|
32
|
+
== Usage
|
33
|
+
|
34
|
+
rhc list-servers [options]
|
35
|
+
|
36
|
+
-u|--username
|
37
|
+
Redhat Login (RHN or OpenShift login with OpenShift Express access)
|
38
|
+
|
39
|
+
-p|--password
|
40
|
+
Redhat Password
|
41
|
+
|
42
|
+
-t|--target flex|express
|
43
|
+
The cloud platform hosting the environments.
|
44
|
+
|
45
|
+
-h|--help
|
46
|
+
Prints this message
|
47
|
+
USAGE
|
48
|
+
end
|
49
|
+
|
50
|
+
opts = GetoptLong.new(
|
51
|
+
["--username", "-u", GetoptLong::REQUIRED_ARGUMENT],
|
52
|
+
["--password", "-p", GetoptLong::REQUIRED_ARGUMENT],
|
53
|
+
["--target", "-t", GetoptLong::REQUIRED_ARGUMENT],
|
54
|
+
["--sso", GetoptLong::REQUIRED_ARGUMENT],
|
55
|
+
["--porcelin", GetoptLong::NO_ARGUMENT],
|
56
|
+
["--debug", GetoptLong::NO_ARGUMENT]
|
57
|
+
)
|
58
|
+
|
59
|
+
args = {}
|
60
|
+
begin
|
61
|
+
opts.each{ |k,v| args[k]=v }
|
62
|
+
rescue GetoptLong::Error => e
|
63
|
+
usage
|
64
|
+
exit -100
|
65
|
+
end
|
66
|
+
|
67
|
+
if args['--help']
|
68
|
+
usage
|
69
|
+
exit
|
70
|
+
end
|
71
|
+
|
72
|
+
@debug = true if args['--debug']
|
73
|
+
@porcelin = true if args['--porcelin']
|
74
|
+
|
75
|
+
args['--target'] = conf('default_target') || 'flex' if args['--target'].nil? or args['--target']==""
|
76
|
+
debug "Target platform #{args['--target']}"
|
77
|
+
|
78
|
+
if args['--target'] == 'flex'
|
79
|
+
flex_server = conf('flex_server')
|
80
|
+
|
81
|
+
cookie = args['--sso']
|
82
|
+
if !cookie
|
83
|
+
username = args['--username'] || conf("username") || Openshift::IO.prompt("Redhat username",[],Openshift::Validation.method(:check_login))
|
84
|
+
password = args['--password'] || Openshift::IO.prompt("Redhat password",nil,nil,true,false)
|
85
|
+
csay("Logging into Openshift Flex as #{username}\n",:message)
|
86
|
+
cookie=Openshift.login(@http,username,password)
|
87
|
+
end
|
88
|
+
|
89
|
+
csay("Retrieving list of environments... ") if not @porcelin
|
90
|
+
uri = URI.parse("#{flex_server}/rest/clusters")
|
91
|
+
response = Openshift::Rest.get(@http, uri, nil, cookie, nil)
|
92
|
+
case response
|
93
|
+
when Net::HTTPSuccess
|
94
|
+
csay("[OK]",:conf) if not @porcelin
|
95
|
+
else
|
96
|
+
debug "HTTP code: #{response.code}"
|
97
|
+
debug response.body
|
98
|
+
csay("[ERROR]",:error) if not @porcelin
|
99
|
+
csay("Unable to retrieve environment list",:error)
|
100
|
+
exit -301
|
101
|
+
end
|
102
|
+
|
103
|
+
data = JSON.parse(response.body)
|
104
|
+
data = data['clusters']
|
105
|
+
|
106
|
+
data.each{ |environment|
|
107
|
+
# if not environment_name or environment["name"].strip == environment_name.strip
|
108
|
+
Openshift::Formatter.table(["Environment Id","Name","Cloud", "DNS", "Load balancer", "Location", "State"],
|
109
|
+
['id','name','cloud-account-name', 'dns', 'load-balancer-address','location','cluster-status'],
|
110
|
+
[16,15,20,40,20,15,10],
|
111
|
+
[environment])
|
112
|
+
debug environment['nodes']
|
113
|
+
csay("Servers",:message)
|
114
|
+
Openshift::Formatter.table(["Name","Node Provider Id","IP Address","Date Created","State"],
|
115
|
+
['name','provider-id', 'ip-address','creation-date','status'],
|
116
|
+
[15,25,20,15,10],
|
117
|
+
environment["nodes"], 1)
|
118
|
+
# end
|
119
|
+
}
|
120
|
+
else
|
121
|
+
csay("This feature is currently not implemented for Openshift Express applications.\n",:red)
|
122
|
+
end
|
data/bin/os-open-console
ADDED
@@ -0,0 +1,162 @@
|
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
# Copyright 2010 Red Hat, Inc.
|
3
|
+
#
|
4
|
+
# Permission is hereby granted, free of charge, to any person
|
5
|
+
# obtaining a copy of this software and associated documentation files
|
6
|
+
# (the "Software"), to deal in the Software without restriction,
|
7
|
+
# including without limitation the rights to use, copy, modify, merge,
|
8
|
+
# publish, distribute, sublicense, and/or sell copies of the Software,
|
9
|
+
# and to permit persons to whom the Software is furnished to do so,
|
10
|
+
# subject to the following conditions:
|
11
|
+
#
|
12
|
+
# The above copyright notice and this permission notice shall be
|
13
|
+
# included in all copies or substantial portions of the Software.
|
14
|
+
#
|
15
|
+
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
16
|
+
# EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
17
|
+
# MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
|
18
|
+
# NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS
|
19
|
+
# BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
|
20
|
+
# ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
|
21
|
+
# CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
22
|
+
# SOFTWARE.
|
23
|
+
|
24
|
+
require 'openshift'
|
25
|
+
|
26
|
+
def usage
|
27
|
+
puts <<USAGE
|
28
|
+
== Synopsis
|
29
|
+
|
30
|
+
os-open-console: Open shell access to an environment.
|
31
|
+
|
32
|
+
== Usage
|
33
|
+
|
34
|
+
os open-console [options] [ENV]
|
35
|
+
|
36
|
+
-u|--username
|
37
|
+
Redhat Login (RHN or OpenShift login with OpenShift Express access)
|
38
|
+
|
39
|
+
-p|--password
|
40
|
+
Redhat Password
|
41
|
+
|
42
|
+
-t|--target flex|express
|
43
|
+
The cloud platform hosting the environments.
|
44
|
+
|
45
|
+
-h|--help
|
46
|
+
Prints this message
|
47
|
+
|
48
|
+
ENV: The name or GUID of the environment to open a shell to.
|
49
|
+
USAGE
|
50
|
+
end
|
51
|
+
|
52
|
+
opts = GetoptLong.new(
|
53
|
+
["--username", "-u", GetoptLong::REQUIRED_ARGUMENT],
|
54
|
+
["--password", "-p", GetoptLong::REQUIRED_ARGUMENT],
|
55
|
+
["--help", "-h", GetoptLong::NO_ARGUMENT],
|
56
|
+
["--target", "-t", GetoptLong::REQUIRED_ARGUMENT],
|
57
|
+
["--debug", GetoptLong::NO_ARGUMENT],
|
58
|
+
["--sso", GetoptLong::REQUIRED_ARGUMENT]
|
59
|
+
)
|
60
|
+
|
61
|
+
args = {}
|
62
|
+
begin
|
63
|
+
opts.each{ |k,v| args[k]=v }
|
64
|
+
rescue GetoptLong::Error => e
|
65
|
+
usage
|
66
|
+
exit -100
|
67
|
+
end
|
68
|
+
|
69
|
+
if args['--help']
|
70
|
+
usage
|
71
|
+
exit
|
72
|
+
end
|
73
|
+
|
74
|
+
@debug = true if args['--debug']
|
75
|
+
args['--target'] = conf('default_target') || 'flex' if args['--target'].nil? or args['--target']==""
|
76
|
+
debug "Target platform #{args['--target']}"
|
77
|
+
|
78
|
+
if args['--target'] == 'flex'
|
79
|
+
flex_server = conf('flex_server')
|
80
|
+
|
81
|
+
cookie = args['--sso']
|
82
|
+
if !cookie
|
83
|
+
username = args['--username'] || conf("username") || Openshift::IO.prompt("Redhat username",[],Openshift::Validation.method(:check_login))
|
84
|
+
password = args['--password'] || Openshift::IO.prompt("Redhat password",nil,nil,true,false)
|
85
|
+
csay("Logging into Openshift Flex as #{username}\n",:message)
|
86
|
+
cookie=Openshift.login(@http,username,password)
|
87
|
+
end
|
88
|
+
|
89
|
+
environment_id = ARGV.shift
|
90
|
+
if not environment_id
|
91
|
+
csay("Environment name or GUID not specified",:error)
|
92
|
+
exit -101
|
93
|
+
end
|
94
|
+
|
95
|
+
begin
|
96
|
+
csay("Retrieving list of environments... ")
|
97
|
+
environments = `os-list-environments --sso "#{cookie}" --porcelin`
|
98
|
+
environments = JSON.parse(environments)
|
99
|
+
csay("[OK]",:conf)
|
100
|
+
rescue Exception => e
|
101
|
+
debug environments
|
102
|
+
debug e.message
|
103
|
+
csay("[ERROR]",:error)
|
104
|
+
csay("Unable to retrieve environment list",:error)
|
105
|
+
exit -400
|
106
|
+
end
|
107
|
+
candidates = environments.find_all{ |c| c["name"]==environment_id or c["id"]==environment_id }
|
108
|
+
|
109
|
+
if candidates.size == 0
|
110
|
+
csay("Unable to find environment identified by #{environment_id}",:error)
|
111
|
+
exit -200
|
112
|
+
end
|
113
|
+
|
114
|
+
if candidates.size > 1
|
115
|
+
csay("Multiple environments are named #{environment_id}. Please provide the environment Id",:error)
|
116
|
+
exit -201
|
117
|
+
end
|
118
|
+
|
119
|
+
environment = candidates[0]
|
120
|
+
if not File.readable?(@libra_kfile)
|
121
|
+
csay("Generating OpenShift Express ssh key to #{@libra_kfile}",:message)
|
122
|
+
debug "Invoking ssh-keygen -t rsa -f '#{@libra_kfile}'"
|
123
|
+
system("ssh-keygen -t rsa -f '#{@libra_kfile}'")
|
124
|
+
end
|
125
|
+
ssh_key = File.open(@libra_kpfile).gets.chomp.split(' ')[1]
|
126
|
+
|
127
|
+
csay("\nRetrieving environment SSH keys... ")
|
128
|
+
uri = URI.parse("https://#{environment['dns']}:4242/security/keys")
|
129
|
+
response = Openshift::Rest.get(@http, uri, nil, nil, {'user' => environment['username'], 'password' => environment['password']})
|
130
|
+
case response
|
131
|
+
when Net::HTTPSuccess
|
132
|
+
csay("[OK]",:conf)
|
133
|
+
else
|
134
|
+
debug "HTTP code: #{response.code}"
|
135
|
+
debug response.body
|
136
|
+
csay("[ERROR]",:error)
|
137
|
+
csay("Unable to retrieve environment ssh-keys. Message: #{data['error']}",:error)
|
138
|
+
exit -301
|
139
|
+
end
|
140
|
+
|
141
|
+
data = nil
|
142
|
+
data = JSON.parse(response.body)
|
143
|
+
keys = data['keys']
|
144
|
+
if not keys.index(ssh_key)
|
145
|
+
csay("\nUploading ssh-key to environment... ")
|
146
|
+
uri = URI.parse("https://#{environment['dns']}:4242/security/keys")
|
147
|
+
response = Openshift::Rest.post(@http, uri, {'type'=>'ssh-rsa','identifier'=>'', 'key'=>ssh_key}, nil, {'user' => environment['username'], 'password' => environment['password']})
|
148
|
+
case response
|
149
|
+
when Net::HTTPSuccess
|
150
|
+
csay("[OK]",:conf)
|
151
|
+
else
|
152
|
+
debug "HTTP code: #{response.code}"
|
153
|
+
debug response.body
|
154
|
+
csay("[ERROR]",:error)
|
155
|
+
csay("Unable to update ssh keys on environment. Please use environment admin password when prompted below",:error)
|
156
|
+
end
|
157
|
+
end
|
158
|
+
|
159
|
+
system( "ssh admin@#{environment['dns']}" )
|
160
|
+
else
|
161
|
+
csay("This feature is currently not implemented for Openshift Express applications.\n",:red)
|
162
|
+
end
|