rhc 0.71.2 → 0.72.29

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/README CHANGED
@@ -1,4 +1,4 @@
1
- Openshift Express (RHC)
1
+ OpenShift Express (RHC)
2
2
  ========
3
3
 
4
4
  Please stop by #openshift on irc.freenode.net if you have any questions or
@@ -13,16 +13,16 @@ DEPENDENCIES: git
13
13
  openssh-clients
14
14
  ruby (1.8.7 or later)
15
15
  rubygems
16
- json gem
16
+ json_pure gem (native json is fine too)
17
17
  parseconfig gem
18
18
 
19
19
  Step 1: Create an rhc domain:
20
20
 
21
- $ ./rhc-create-domain -n desirednamespace -l rhlogin
21
+ $ rhc-create-domain -n desirednamespace -l rhlogin
22
22
 
23
23
  Step 2: Create an rhc application:
24
24
 
25
- $ ./rhc-create-app -l rhlogin -a appname -r /path/to/new/git/repo -t <framework Ex: php-5.3.2>
25
+ $ rhc-create-app -l rhlogin -a appname -r /path/to/new/git/repo -t <framework Ex: php-5.3>
26
26
 
27
27
  Once that's complete, follow the directions printed at the end of running
28
28
  rhc-create-app
@@ -38,4 +38,32 @@ $ edit index.php
38
38
  $ git commit -a -m "what I did"
39
39
  $ git push
40
40
 
41
- Then just reload your web page to see the changes
41
+ Then just reload your web page to see the changes
42
+
43
+ -----------
44
+ OS X Notes:
45
+ -----------
46
+
47
+ git:
48
+ OS X 10.6 comes w/ ssh and ruby, but not with git, unless you have
49
+ Xcode 4.0.x installed (as a developer you should have Xcode anyway).
50
+ Xcode, however, is not free (unless you are a registered Apple
51
+ Developer) and costs around $5 from the Apple App Store.
52
+
53
+ If you do not have Xcode, you can obtain a pre-packaged version
54
+ of git from:
55
+
56
+ http://code.google.com/p/git-osx-installer/
57
+
58
+ Installing git from MacPorts/HomeBrew/Fink/etc requires Xcode.
59
+
60
+ Now obtain the client code, either via 'git clone' as above
61
+ or via the rhc gem.
62
+
63
+ json_pure gem:
64
+ The client tools also make use of JSON as the data set for
65
+ I/O, and therefore needs the json ruby gem. Unless you have
66
+ Xcode installed, you will need to install json_pure, which
67
+ is the 100% ruby version of the JSON gem. If you have Xcode,
68
+ you can elect to install either json_pure or the native
69
+ json gem.
data/Rakefile CHANGED
@@ -10,7 +10,7 @@ task :default => [:package]
10
10
  # Create the gem specification for packaging
11
11
  spec = Gem::Specification.new do |s|
12
12
  s.name = %q{rhc}
13
- s.version = /(Version: )(.*)/.match(File.read("../build/specs/rhc.spec"))[2]
13
+ s.version = /(Version: )(.*)/.match(File.read("client.spec"))[2]
14
14
  s.author = "Red Hat"
15
15
  s.email = %q{openshift@redhat.com}
16
16
  s.summary = %q{OpenShift Express Client Tools}
data/bin/rhc-create-app CHANGED
@@ -24,16 +24,17 @@
24
24
  require 'rhc-common'
25
25
 
26
26
  def p_usage
27
- rhlogin = get_var('default_rhlogin') ? "Default: #{get_var('default_rhlogin')}" : "(required)"
28
- type_keys = RHC::get_supported_cartridge_types(', ')
27
+ libra_server = get_var('libra_server')
28
+ rhlogin = get_var('default_rhlogin') ? "Default: #{get_var('default_rhlogin')}" : "required"
29
+ type_keys = RHC::get_cartridge_list(nil, ', ', libra_server, @http, false)
29
30
  puts <<USAGE
30
31
 
31
32
  Usage: #{$0}
32
- Create an Openshift Express app.
33
+ Create an OpenShift Express app.
33
34
 
34
35
  -a|--app application Application name (alphanumeric - max #{RHC::Maxdlen} chars) (required)
35
36
  -t|--type type Type of app to create (#{type_keys}) (required)
36
- -l|--rhlogin rhlogin RHCloud rhlogin (#{rhlogin})
37
+ -l|--rhlogin rhlogin Red Hat login (RHN or OpenShift login with OpenShift Express access) (#{rhlogin})
37
38
  -p|--password password RHLogin password (optional, will prompt)
38
39
  -r|--repo path Git Repo path (defaults to ./$app_name)
39
40
  -n|--nogit Only create remote space, don't pull it locally
@@ -89,8 +90,9 @@ if !RHC::check_app(opt['app'])
89
90
  p_usage
90
91
  end
91
92
 
92
- type = RHC::get_cartridge(opt['type'])
93
+ type = RHC::get_cartridge_type(opt['type'])
93
94
  if !type
95
+ puts 'Type is required'
94
96
  p_usage
95
97
  end
96
98
 
@@ -103,16 +105,6 @@ if !password
103
105
  password = RHC::get_password
104
106
  end
105
107
 
106
- #
107
- # Get UUID from file
108
- #
109
-
110
- uuid = get_var(opt["rhlogin"])
111
- unless uuid
112
- puts "Could not find UUID for '#{opt["rhlogin"]}' in express.conf. Be sure you have successfully ran rhc-create-domain before running rhc-create-app."
113
- exit 99
114
- end
115
-
116
108
  opt["repo"] = opt["app"] unless opt["repo"]
117
109
 
118
110
  puts "
@@ -165,7 +157,7 @@ end
165
157
  # Create remote application space
166
158
  #
167
159
 
168
- puts "Creating remote application space: " + opt['app']
160
+ puts "Attempting to create remote application space: " + opt['app']
169
161
 
170
162
  data = {:cartridge => opt['type'],
171
163
  :action => 'configure',
@@ -179,7 +171,7 @@ json_data = JSON.generate(data)
179
171
 
180
172
  puts "Contacting https://#{libra_server}"
181
173
 
182
- url = URI.parse("https://#{libra_server}/app/broker/cartridge")
174
+ url = URI.parse("https://#{libra_server}/broker/cartridge")
183
175
  response = RHC::http_post(@http, url, json_data, password)
184
176
 
185
177
  if response.code == '200'
@@ -198,11 +190,10 @@ at_exit do
198
190
  {:cartridge => opt['type'],
199
191
  :action => 'deconfigure',
200
192
  :app_name => opt['app'],
201
- :rhlogin => opt['rhlogin'],
202
- :password => password
193
+ :rhlogin => opt['rhlogin']
203
194
  })
204
195
  puts "Cleaning up application"
205
- url = URI.parse("https://#{libra_server}/app/broker/cartridge")
196
+ url = URI.parse("https://#{libra_server}/broker/cartridge")
206
197
  RHC::http_post(@http, url, json_data, password)
207
198
  end
208
199
  end
@@ -215,7 +206,7 @@ puts "Checking ~/.ssh/config"
215
206
 
216
207
  user_info = RHC::get_user_info(libra_server, opt['rhlogin'], password, @http, debug, false)
217
208
 
218
- my_url = "#{opt['app']}-#{user_info['user_info']['namespace']}.#{user_info['user_info']['rhc_domain']}"
209
+ fqdn = "#{opt['app']}-#{user_info['user_info']['namespace']}.#{user_info['user_info']['rhc_domain']}"
219
210
 
220
211
  found = false
221
212
 
@@ -287,10 +278,10 @@ sleep 15
287
278
  # Now start checking for DNS
288
279
  loop = 0
289
280
  sleep_time = 2
290
- while loop < RHC::Maxretries && !RHC::hostexist?(my_url)
281
+ while loop < RHC::Maxretries && !RHC::hostexist?(fqdn)
291
282
  sleep sleep_time
292
283
  loop+=1
293
- puts " retry # #{loop} - Waiting for DNS: #{my_url}"
284
+ puts " retry # #{loop} - Waiting for DNS: #{fqdn}"
294
285
  sleep_time = RHC::delay(sleep_time)
295
286
  end
296
287
 
@@ -305,7 +296,12 @@ attempt = 0
305
296
  # Pull new repo locally
306
297
  #
307
298
 
308
- git_url = "ssh://#{uuid}@#{opt['app']}-#{user_info['user_info']['namespace']}.#{user_info['user_info']['rhc_domain']}/~/git/#{opt['app']}.git/"
299
+ app_name = opt['app']
300
+ namespace = user_info['user_info']['namespace']
301
+ rhc_domain = user_info['user_info']['rhc_domain']
302
+ app_uuid = user_info['app_info'][app_name]['uuid']
303
+
304
+ git_url = "ssh://#{app_uuid}@#{app_name}-#{namespace}.#{rhc_domain}/~/git/#{app_name}.git/"
309
305
 
310
306
  unless opt['nogit']
311
307
  puts "Pulling new repo down"
@@ -352,11 +348,10 @@ while attempt < RHC::Maxretries
352
348
  page = 'health'
353
349
  if (type == :php)
354
350
  page = 'health_check.php'
355
- end
356
- if (type == :perl)
351
+ elsif (type == :perl)
357
352
  page = 'health_check.pl'
358
353
  end
359
- url = URI.parse("http://#{my_url}/#{page}")
354
+ url = URI.parse("http://#{fqdn}/#{page}")
360
355
  begin
361
356
  response = @http.get_response(url)
362
357
  rescue Exception => e
@@ -367,14 +362,14 @@ while attempt < RHC::Maxretries
367
362
 
368
363
  Success! Your application is now published here:
369
364
 
370
- http://#{my_url}/
365
+ http://#{fqdn}/
371
366
 
372
367
  The remote repository is located here:
373
368
 
374
369
  #{git_url}
375
370
 
376
371
  To make changes to your application, commit to #{opt['repo']}/.
377
- Then run 'git push' to update your Openshift Express space
372
+ Then run 'git push' to update your OpenShift Express space
378
373
 
379
374
  LOOKSGOOD
380
375
  exit 0
@@ -35,8 +35,8 @@ Bind a registered rhcloud user to a domain in rhcloud.
35
35
  NOTE: to change ssh key, please alter your ~/.ssh/libra_id_rsa and
36
36
  ~/.ssh/libra_id_rsa.pub key, then re-run with --alter
37
37
 
38
- -n|--namespace namespace Openshift Express namespace (alphanumeric - max #{RHC::Maxdlen} chars) (required)
39
- -l|--rhlogin rhlogin Red Hat login (required)
38
+ -n|--namespace namespace Namespace for your application(s) (alphanumeric - max #{RHC::Maxdlen} chars) (required)
39
+ -l|--rhlogin rhlogin Red Hat login (RHN or OpenShift login with OpenShift Express access) (required)
40
40
  -p|--password password RHLogin password (optional, will prompt)
41
41
  -a|--alter Alter namespace (will change urls) and/or ssh key
42
42
  -d|--debug Print Debug info
@@ -110,10 +110,6 @@ def add_rhlogin_config(rhlogin, uuid)
110
110
  f.puts("default_rhlogin=#{rhlogin}")
111
111
  f.puts("")
112
112
  end
113
- unless @local_config.get_value(rhlogin)
114
- puts "Adding rhlogin to #{@local_config_path}"
115
- f.puts("#{rhlogin}=#{uuid}")
116
- end
117
113
  f.close
118
114
  end
119
115
 
@@ -123,9 +119,9 @@ end
123
119
  #
124
120
 
125
121
  if File.readable?(libra_kfile)
126
- puts "Openshift Express key found at #{libra_kfile}. Reusing..."
122
+ puts "OpenShift Express key found at #{libra_kfile}. Reusing..."
127
123
  else
128
- puts "Generating Openshift Express ssh key to #{libra_kfile}"
124
+ puts "Generating OpenShift Express ssh key to #{libra_kfile}"
129
125
  # Use system for interaction
130
126
  system("ssh-keygen -t rsa -f '#{libra_kfile}'")
131
127
  end
@@ -138,6 +134,8 @@ data = {'namespace' => opt['namespace'],
138
134
  'ssh' => ssh_key}
139
135
  if (opt['alter'])
140
136
  data['alter'] = "true"
137
+ not_found_message = "A user with rhlogin '#{opt['rhlogin']}' does not have a registered domain. Be sure to run rhc-create-domain without -a|--alter first."
138
+ user_info = RHC::get_user_info(libra_server, opt['rhlogin'], password, @http, debug, true, not_found_message)
141
139
  end
142
140
  if debug
143
141
  data['debug'] = "true"
@@ -145,7 +143,7 @@ end
145
143
  RHC::print_post_data(data, debug)
146
144
  json_data = JSON.generate(data)
147
145
 
148
- url = URI.parse("https://#{libra_server}/app/broker/domain")
146
+ url = URI.parse("https://#{libra_server}/broker/domain")
149
147
  response = RHC::http_post(@http, url, json_data, password)
150
148
 
151
149
  if response.code == '200'
@@ -164,8 +162,40 @@ in #{@local_config_path} which has been created and populated for you.
164
162
 
165
163
  EOF
166
164
  else
167
- puts "Alteration successful. You can use rhc-user-info to view any url changes."
168
- puts
165
+ app_info = user_info['app_info']
166
+ dns_success = true
167
+ if !app_info.empty? && opt['namespace'] != user_info['user_info']['namespace']
168
+ #
169
+ # Confirm that the host(s) exist in DNS
170
+ #
171
+ puts "Now your new domain name(s) are being populated worldwide (this might take a minute)..."
172
+ # Allow DNS to propogate
173
+ sleep 15
174
+ app_info.each_key do |appname|
175
+ fqdn = "#{appname}-#{opt['namespace']}.#{user_info['user_info']['rhc_domain']}"
176
+
177
+ # Now start checking for DNS
178
+ loop = 0
179
+ sleep_time = 2
180
+ while loop < RHC::Maxretries && !RHC::hostexist?(fqdn)
181
+ sleep sleep_time
182
+ loop+=1
183
+ puts " retry # #{loop} - Waiting for DNS: #{fqdn}"
184
+ sleep_time = RHC::delay(sleep_time)
185
+ end
186
+
187
+ if loop >= RHC::Maxretries
188
+ puts "Host could not be found: #{fqdn}"
189
+ dns_success = false
190
+ end
191
+ end
192
+ end
193
+ if dns_success
194
+ puts "Alteration successful. You can use rhc-user-info to view any url changes."
195
+ else
196
+ puts "Alteration successful but at least one of the urls is still updating in DNS. You can use rhc-user-info to view any url changes."
197
+ end
198
+ puts ""
169
199
  end
170
200
  exit 0
171
201
  rescue JSON::ParserError
data/bin/rhc-ctl-app CHANGED
@@ -24,14 +24,14 @@
24
24
  require 'rhc-common'
25
25
 
26
26
  def p_usage
27
- rhlogin = get_var('default_rhlogin') ? "Default: #{get_var('default_rhlogin')}" : "(required)"
27
+ rhlogin = get_var('default_rhlogin') ? "Default: #{get_var('default_rhlogin')}" : "required"
28
28
  puts <<USAGE
29
29
 
30
30
  Usage: #{$0}
31
31
  Control an OpenShift express app
32
32
 
33
33
  -a|--app application Application name (alphanumeric) (required)
34
- -l|--rhlogin rhlogin Red Hat login (#{rhlogin})
34
+ -l|--rhlogin rhlogin Red Hat login (RHN or OpenShift login with OpenShift Express access) (#{rhlogin})
35
35
  -p|--password password RHLogin password (optional, will prompt)
36
36
  -c|--command command (start|stop|restart|reload|status|destroy)
37
37
  -b|--bypass Bypass warnings
@@ -146,7 +146,7 @@ json_data = JSON.generate(data)
146
146
 
147
147
  puts "Contacting https://#{libra_server}"
148
148
 
149
- url = URI.parse("https://#{libra_server}/app/broker/cartridge")
149
+ url = URI.parse("https://#{libra_server}/broker/cartridge")
150
150
  response = RHC::http_post(@http, url, json_data, password)
151
151
 
152
152
  if response.code == '200'
data/bin/rhc-snapshot CHANGED
@@ -27,13 +27,13 @@ require 'rhc-common'
27
27
  # print help
28
28
  #
29
29
  def p_usage
30
- rhlogin = get_var('default_rhlogin') ? "Default: #{get_var('default_rhlogin')}" : "(required)"
30
+ rhlogin = get_var('default_rhlogin') ? "Default: #{get_var('default_rhlogin')}" : "required"
31
31
  puts <<USAGE
32
32
 
33
33
  Usage: #{$0}
34
34
  Pull down application snapshot for a user
35
35
 
36
- -l|--rhlogin rhlogin RHCloud rhlogin (#{rhlogin})
36
+ -l|--rhlogin rhlogin Red Hat login (RHN or OpenShift login with OpenShift Express access) (#{rhlogin})
37
37
  -a|--app Target application to snapshot (required)
38
38
  -s|--save Local path to save tarball (default: ./$APPNAME.tar.gz)
39
39
  -p|--password password RHLogin password (optional, will prompt)
@@ -93,25 +93,28 @@ user_info = RHC::get_user_info(libra_server, opt['rhlogin'], password, @http, de
93
93
  app = opt['app']
94
94
  opt['save'] = "#{opt['app']}.tar.gz" unless opt['save']
95
95
 
96
- begin
97
- framework = user_info['app_info'][app]['framework'].split('-')[0]
98
- rescue NoMethodError
96
+ unless user_info['app_info'][app]
99
97
  puts
100
- puts "Could not find app '#{opt['app']}'. Please run rhc-user-info to get a list"
98
+ puts "Could not find app '#{app}'. Please run rhc-user-info to get a list"
101
99
  puts "of your current running applications"
102
100
  puts
103
101
  exit 101
104
102
  end
105
103
 
104
+ app_uuid = user_info['app_info'][app]['uuid']
105
+ namespace = user_info['user_info']['namespace']
106
+ rhc_domain = user_info['user_info']['rhc_domain']
107
+ ssh_cmd = "ssh #{app_uuid}@#{app}-#{namespace}.#{rhc_domain} 'snapshot #{app}' > #{opt['save']}"
108
+
106
109
  puts "Pulling down a snapshot to #{opt['save']}"
107
110
  puts
108
- puts "ssh #{user_info['user_info']['uuid']}@#{app}-#{user_info['user_info']['namespace']}.#{user_info['user_info']['rhc_domain']} 'snapshot #{framework} #{app}' > #{opt['save']}" if debug
109
- git_pull = `ssh #{user_info['user_info']['uuid']}@#{app}-#{user_info['user_info']['namespace']}.#{user_info['user_info']['rhc_domain']} 'snapshot #{framework} #{app}' > #{opt['save']}`
111
+ puts ssh_cmd if debug
112
+ git_pull = `#{ssh_cmd}`
110
113
  if $?.exitstatus != 0
111
114
  puts
112
115
  puts "Error in trying to save snapshot. You can try to save manually by running:"
113
116
  puts
114
- puts "ssh #{user_info['user_info']['uuid']}@#{app}-#{user_info['user_info']['namespace']}.#{user_info['user_info']['rhc_domain']} 'snapshot #{framework} #{app}' > #{opt['save']}"
117
+ puts ssh_cmd
115
118
  puts
116
119
  exit 254
117
120
  end
data/bin/rhc-tail-files CHANGED
@@ -27,13 +27,13 @@ require 'rhc-common'
27
27
  # print help
28
28
  #
29
29
  def p_usage
30
- rhlogin = get_var('default_rhlogin') ? "Default: #{get_var('default_rhlogin')}" : "(required)"
30
+ rhlogin = get_var('default_rhlogin') ? "Default: #{get_var('default_rhlogin')}" : "required"
31
31
  puts <<USAGE
32
32
 
33
33
  Usage: #{$0}
34
34
  Tail the logs of an application
35
35
 
36
- -l|--rhlogin rhlogin RHCloud rhlogin (#{rhlogin})
36
+ -l|--rhlogin rhlogin Red Hat login (RHN or OpenShift login with OpenShift Express access) (#{rhlogin})
37
37
  -a|--app Target application (required)
38
38
  -f|--files File glob relative to app (default ./logs/*) (optional)
39
39
  -p|--password password RHLogin password (optional, will prompt)
@@ -92,9 +92,7 @@ user_info = RHC::get_user_info(libra_server, opt['rhlogin'], password, @http, de
92
92
 
93
93
  app = opt['app']
94
94
 
95
- begin
96
- framework = user_info['app_info'][app]['framework'].split('-')[0]
97
- rescue NoMethodError
95
+ unless user_info['app_info'][app]
98
96
  puts
99
97
  puts "Could not find app '#{opt['app']}'. Please run rhc-user-info to get a list"
100
98
  puts "of your current running applications"
@@ -103,18 +101,22 @@ rescue NoMethodError
103
101
  end
104
102
 
105
103
  opt['files'] = "logs/*" unless opt['files']
106
- file_glob = "#{framework}/#{opt['app']}/#{opt['files']}"
104
+ file_glob = "#{opt['app']}/#{opt['files']}"
105
+ app_uuid = user_info['app_info'][app]['uuid']
106
+ namespace = user_info['user_info']['namespace']
107
+ rhc_domain = user_info['user_info']['rhc_domain']
108
+ ssh_cmd = "ssh #{app_uuid}@#{app}-#{namespace}.#{rhc_domain} 'tail #{file_glob}'"
107
109
 
108
110
  puts "Attempting to tail files: #{file_glob}"
109
111
  puts "Use ctl + c to stop"
110
112
  puts
111
- puts "ssh #{user_info['user_info']['uuid']}@#{app}-#{user_info['user_info']['namespace']}.#{user_info['user_info']['rhc_domain']} 'tail #{file_glob}'" if debug
112
- system("ssh #{user_info['user_info']['uuid']}@#{app}-#{user_info['user_info']['namespace']}.#{user_info['user_info']['rhc_domain']} 'tail #{file_glob}'")
113
+ puts ssh_cmd if debug
114
+ system(ssh_cmd)
113
115
  if $?.exitstatus != 0 and $?.exitstatus != 255
114
116
  puts
115
117
  puts "Error in trying to tail files. You can tail manually by running:"
116
118
  puts
117
- puts "ssh #{user_info['user_info']['uuid']}@#{app}-#{user_info['user_info']['namespace']}.#{user_info['user_info']['rhc_domain']} 'tail #{file_glob}'`"
119
+ puts ssh_cmd
118
120
  puts
119
121
  exit 254
120
122
  end
data/bin/rhc-user-info CHANGED
@@ -21,27 +21,19 @@
21
21
  # CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
22
22
  # SOFTWARE.
23
23
 
24
- require "rubygems"
25
- require "uri"
26
- require "net/http"
27
- require "net/https"
28
- require "getoptlong"
29
- require "json"
30
- require 'parseconfig'
31
- require 'fileutils'
32
24
  require 'rhc-common'
33
25
 
34
26
  #
35
27
  # print help
36
28
  #
37
29
  def p_usage
38
- rhlogin = get_var('default_rhlogin') ? "Default: #{get_var('default_rhlogin')}" : "(required)"
30
+ rhlogin = get_var('default_rhlogin') ? "Default: #{get_var('default_rhlogin')}" : "required"
39
31
  puts <<USAGE
40
32
 
41
33
  Usage: #{$0}
42
34
  Display information about a user
43
35
 
44
- -l|--rhlogin rhlogin RHCloud rhlogin (#{rhlogin})
36
+ -l|--rhlogin rhlogin Red Hat login (RHN or OpenShift login with OpenShift Express access) (#{rhlogin})
45
37
  -p|--password password RHLogin password (optional, will prompt)
46
38
  -a|--apps List applications for rhlogin
47
39
  -i|--info Show user info
@@ -52,18 +44,6 @@ USAGE
52
44
  exit 255
53
45
  end
54
46
 
55
- def validate_email(email)
56
- if email =~ /([^@]+)@([a-zA-Z0-9\.])+\.([a-zA-Z]{2,3})/
57
- if $1 =~ /[^a-zA-Z0-9\.]/
58
- return false
59
- else
60
- return true
61
- end
62
- else
63
- return false
64
- end
65
- end
66
-
67
47
  begin
68
48
  opts = GetoptLong.new(
69
49
  ["--debug", "-d", GetoptLong::NO_ARGUMENT],
@@ -111,17 +91,6 @@ end
111
91
  opt['apps'] = true if not opt['info'] and not opt['apps']
112
92
  user_info = RHC::get_user_info(libra_server, opt['rhlogin'], password, @http, debug, true)
113
93
 
114
- if user_info['user_info']['uuid'] != get_var(opt["rhlogin"])
115
- puts "!! WARNING !! WARNING !! WARNING !! WARNING !!"
116
- puts
117
- puts "The UUID in your #{@conf_name} file is either missing or incorrect."
118
- puts "Please ensure the below line exists in #{@local_config_path}"
119
- puts
120
- puts "#{opt['rhlogin']}=#{user_info['user_info']['uuid']}"
121
- puts
122
- puts "!! WARNING !! WARNING !! WARNING !! WARNING !!"
123
- end
124
-
125
94
  if opt['info']
126
95
  puts "User Info"
127
96
  puts "========="
@@ -140,7 +109,8 @@ if opt['apps']
140
109
  puts key
141
110
  puts " Framework: #{val['framework']}"
142
111
  puts " Creation: #{val['creation_time']}"
143
- puts " Git URL: ssh://#{user_info['user_info']['uuid']}@#{key}-#{user_info['user_info']['namespace']}.#{user_info['user_info']['rhc_domain']}/~/git/#{key}.git/"
112
+ puts " UUID: #{val['uuid']}"
113
+ puts " Git URL: ssh://#{val['uuid']}@#{key}-#{user_info['user_info']['namespace']}.#{user_info['user_info']['rhc_domain']}/~/git/#{key}.git/"
144
114
  puts " Public URL: http://#{key}-#{user_info['user_info']['namespace']}.#{user_info['user_info']['rhc_domain']}/"
145
115
  puts ""
146
116
  end
data/lib/rhc-common.rb CHANGED
@@ -37,41 +37,53 @@ module RHC
37
37
  Maxretries = 10
38
38
  Defaultdelay = 2
39
39
 
40
- TYPES = {
41
- 'php-5.3.2' => :php,
42
- 'perl-5.10.1' => :perl,
43
- 'rack-1.1.0' => :rack,
44
- 'wsgi-3.2.1' => :wsgi,
45
- 'jbossas-7.0.0' => :jbossas
46
- }
47
-
48
- SUPPORTED_TYPES = {
49
- 'php-5.3.2' => :php,
50
- 'rack-1.1.0' => :rack,
51
- 'wsgi-3.2.1' => :wsgi
52
- }
53
-
54
40
  def self.delay(time, adj=Defaultdelay)
55
41
  (time*=adj).to_int
56
42
  end
57
43
 
58
- def self.get_supported_cartridge_types(sep=', ')
59
- return get_cartridge_types(SUPPORTED_TYPES)
44
+ def self.get_cartridges_tbl(libra_server, net_http, debug=true, print_result=nil)
45
+ puts "Contacting https://#{libra_server} to obtain list of cartridges..."
46
+ puts " (please excuse the delay)"
47
+ data = {'cart_types' => "standalone"}
48
+ if debug
49
+ data['debug'] = "true"
50
+ end
51
+ print_post_data(data, debug)
52
+ json_data = JSON.generate(data)
53
+
54
+ url = URI.parse("https://#{libra_server}/broker/cartlist")
55
+ response = http_post(net_http, url, json_data, "none")
56
+
57
+ unless response.code == '200'
58
+ print_response_err(response, debug)
59
+ return []
60
+ end
61
+ if print_result
62
+ print_response_success(response, debug)
63
+ end
64
+ begin
65
+ json_resp = JSON.parse(response.body)
66
+ carts = (JSON.parse(json_resp['result']))['carts']
67
+ rescue JSON::ParserError
68
+ exit 254
69
+ end
70
+ carts
60
71
  end
61
72
 
62
- def self.get_cartridge_types(types=TYPES, sep=', ')
63
- i = 1
64
- type_keys = ''
65
- types.each_key do |key|
66
- type_keys += key
67
- if i < types.size
68
- type_keys += sep
69
- end
70
- i += 1
73
+ def self.get_cartridge_list(carts, sep, libra_server, net_http, debug=true, print_result=nil)
74
+ carts = get_cartridges_tbl(libra_server, net_http, debug, print_result) if carts.nil?
75
+ carts.join(sep)
76
+ end
77
+
78
+ def self.get_cartridge_type(type)
79
+ if type
80
+ type = type.split('-')[0]
81
+ return type.to_sym
71
82
  end
72
- type_keys
83
+ nil
73
84
  end
74
85
 
86
+
75
87
  # Invalid chars (") ($) (^) (<) (>) (|) (%) (/) (;) (:) (,) (\) (*) (=) (~)
76
88
  def self.check_rhlogin(rhlogin)
77
89
  if rhlogin
@@ -114,19 +126,6 @@ module RHC
114
126
  true
115
127
  end
116
128
 
117
- def self.get_cartridge(type)
118
- if type
119
- if !(RHC::TYPES.has_key?(type))
120
- puts 'type must be ' << get_supported_cartridge_types(' or ')
121
- else
122
- return RHC::TYPES[type]
123
- end
124
- else
125
- puts "Type is required"
126
- end
127
- nil
128
- end
129
-
130
129
  def self.print_post_data(h, debug)
131
130
  if (debug)
132
131
  puts 'DEBUG: Submitting form:'
@@ -144,7 +143,7 @@ module RHC
144
143
  end
145
144
  end
146
145
 
147
- def self.get_user_info(libra_server, rhlogin, password, net_http, debug, print_result)
146
+ def self.get_user_info(libra_server, rhlogin, password, net_http, debug, print_result, not_found_message=nil)
148
147
 
149
148
  puts "Contacting https://#{libra_server}"
150
149
  data = {'rhlogin' => rhlogin}
@@ -154,12 +153,16 @@ module RHC
154
153
  print_post_data(data, debug)
155
154
  json_data = JSON.generate(data)
156
155
 
157
- url = URI.parse("https://#{libra_server}/app/broker/userinfo")
156
+ url = URI.parse("https://#{libra_server}/broker/userinfo")
158
157
  response = http_post(net_http, url, json_data, password)
159
158
 
160
159
  unless response.code == '200'
161
160
  if response.code == '404'
162
- puts "A user with rhlogin '#{rhlogin}' does not have a registered domain. Be sure to run rhc-create-domain before using the other rhc tools."
161
+ if not_found_message
162
+ puts not_found_message
163
+ else
164
+ puts "A user with rhlogin '#{rhlogin}' does not have a registered domain. Be sure to run rhc-create-domain before using the other rhc tools."
165
+ end
163
166
  exit 99
164
167
  elsif response.code == '401'
165
168
  puts "Invalid user credentials"
metadata CHANGED
@@ -1,13 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: rhc
3
3
  version: !ruby/object:Gem::Version
4
- hash: 263
4
+ hash: 261
5
5
  prerelease: false
6
6
  segments:
7
7
  - 0
8
- - 71
9
- - 2
10
- version: 0.71.2
8
+ - 72
9
+ - 29
10
+ version: 0.72.29
11
11
  platform: ruby
12
12
  authors:
13
13
  - Red Hat
@@ -15,7 +15,7 @@ autorequire:
15
15
  bindir: bin
16
16
  cert_chain: []
17
17
 
18
- date: 2011-05-31 00:00:00 -05:00
18
+ date: 2011-06-27 00:00:00 -05:00
19
19
  default_executable:
20
20
  dependencies:
21
21
  - !ruby/object:Gem::Dependency