rhc 0.82.18 → 0.83.9

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.
Files changed (3) hide show
  1. data/bin/rhc-ctl-app +6 -3
  2. data/lib/rhc-common.rb +82 -10
  3. metadata +10 -10
@@ -35,7 +35,7 @@ Control an OpenShift express app
35
35
  -a|--app application Application name (alphanumeric) (required)
36
36
  -l|--rhlogin rhlogin Red Hat login (RHN or OpenShift login with OpenShift Express access) (#{rhlogin})
37
37
  -p|--password password RHLogin password (optional, will prompt)
38
- -c|--command command (start|stop|force-stop|restart|reload|status|destroy|tidy|add-alias|remove-alias)
38
+ -c|--command command (start|stop|force-stop|restart|reload|status|destroy|tidy|add-alias|remove-alias|threaddump)
39
39
  -L|--embedded-list List supported embedded cartridges
40
40
  -e|--embed (add|remove|stop|start|restart|status|reload)-$cartridge eg: add-mysql-5.1
41
41
  -b|--bypass Bypass warnings
@@ -123,8 +123,8 @@ unless opt["embed"] or opt["command"]
123
123
  end
124
124
 
125
125
  if opt["command"]
126
- unless opt["command"] =~ /^(start|stop|force-stop|restart|reload|status|destroy|tidy|add-alias|remove-alias)$/
127
- puts "Invalid command '#{opt["command"]}' specified. Valid commands are (start|stop|force-stop|restart|reload|status|destroy|tidy|add-alias|remove-alias)"
126
+ unless opt["command"] =~ /^(start|stop|force-stop|restart|reload|status|destroy|tidy|add-alias|remove-alias|threaddump)$/
127
+ puts "Invalid command '#{opt["command"]}' specified. Valid commands are (start|stop|force-stop|restart|reload|status|destroy|tidy|add-alias|remove-alias|threaddump)"
128
128
  p_usage
129
129
  end
130
130
  elsif opt["embed"]
@@ -144,6 +144,9 @@ if opt['command'] and (opt['alias'] and !(opt['command'] =~ /-alias$/)) || ((opt
144
144
  p_usage
145
145
  end
146
146
 
147
+ if opt["command"] == "threaddump"
148
+ print "NOTE: The threaddump command is only applicable to applications of type jbossas-7.0. The thread dump file will be available via 'rhc-tail-files -f app-name/jbossas-7.0/stdout.log'"
149
+ end
147
150
 
148
151
  password = opt['password']
149
152
  if !password
@@ -26,6 +26,8 @@ require 'getoptlong'
26
26
  require 'json'
27
27
  require 'net/http'
28
28
  require 'net/https'
29
+ #require 'net/ssh'
30
+ require 'open3'
29
31
  require 'parseconfig'
30
32
  require 'resolv'
31
33
  require 'uri'
@@ -38,10 +40,11 @@ module RHC
38
40
  MAX_RETRIES = 7
39
41
  DEFAULT_DELAY = 2
40
42
  API = "1.1.1"
43
+ PATTERN_VERSION=/\A\d+\.\d+\.\d+\z/
41
44
  @mytimeout = 10
42
45
  @mydebug = false
43
- broker_version = "?.?.?"
44
- api_version = "?.?.?"
46
+ @@broker_version = "?.?.?"
47
+ @@api_version = "?.?.?"
45
48
 
46
49
  # reset lines
47
50
  # \r moves the cursor to the beginning of line
@@ -75,11 +78,19 @@ module RHC
75
78
  end
76
79
 
77
80
  def self.update_server_api_v(dict)
78
- if !dict['broker'].nil? && (dict['broker'] =~ /\A\d+\.\d+\.\d+\z/)
79
- broker_version = dict['broker']
81
+ if !dict['broker'].nil? && (dict['broker'] =~ PATTERN_VERSION)
82
+ @@broker_version = dict['broker']
80
83
  end
81
- if !dict['api'].nil? && (dict['api'] =~ /\A\d+\.\d+\.\d+\z/)
82
- api_version = dict['api']
84
+ if !dict['api'].nil? && (dict['api'] =~ PATTERN_VERSION)
85
+ @@api_version = dict['api']
86
+ end
87
+ end
88
+
89
+ def self.check_version
90
+ if @@api_version =~ PATTERN_VERSION
91
+ if API != @@api_version
92
+ puts "\nNOTICE: Client API version (#{API}) does not match the server (#{@@api_version}).\nThough requests may succeed, you should consider updating your client tools.\n\n"
93
+ end
83
94
  end
84
95
  end
85
96
 
@@ -283,8 +294,6 @@ module RHC
283
294
  end
284
295
  exit_code = 1
285
296
  if response.content_type == 'application/json'
286
- print "JSON response:"
287
- $stdout.flush
288
297
  begin
289
298
  json_resp = JSON.parse(response.body)
290
299
  exit_code = print_json_body(json_resp)
@@ -432,6 +441,9 @@ module RHC
432
441
  puts
433
442
  end
434
443
 
444
+ # construct the Git URL
445
+ git_url = "ssh://#{app_uuid}@#{app_name}-#{namespace}.#{rhc_domain}/~/git/#{app_name}.git/"
446
+
435
447
  # If the hostname couldn't be resolved, print out the git URL
436
448
  # and exit cleanly. This will help solve issues where DNS times
437
449
  # out in APAC, etc on resolution.
@@ -473,8 +485,6 @@ WARNING
473
485
  # Pull new repo locally
474
486
  #
475
487
 
476
- git_url = "ssh://#{app_uuid}@#{app_name}-#{namespace}.#{rhc_domain}/~/git/#{app_name}.git/"
477
-
478
488
  unless no_git
479
489
  puts "Pulling new repo down" if @mydebug
480
490
 
@@ -599,6 +609,62 @@ LOOKSGOOD
599
609
  http_post(net_http, url, json_data, password)
600
610
  end
601
611
 
612
+ # Runs rhc-list-ports on server to check available ports
613
+ # :stderr return user-friendly port name, :stdout returns 127.0.0.1:8080 format
614
+ def self.list_ports(rhc_domain, namespace, app_name, app_uuid, debug=true)
615
+
616
+ ip_and_port_simple_regex = /[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\:[0-9]{1,5}/
617
+
618
+ ssh_host = "#{app_name}-#{namespace}.#{rhc_domain}"
619
+
620
+ ssh_cmd = "ssh -t #{app_uuid}@#{ssh_host} 'rhc-list-ports'"
621
+
622
+ hosts_and_ports = []
623
+ hosts_and_ports_descriptions = []
624
+
625
+ puts ssh_cmd if debug
626
+
627
+ Open3.popen3(ssh_cmd) { |stdin, stdout, stderr|
628
+
629
+ stdout.each { |line|
630
+ line = line.chomp
631
+ if ip_and_port_simple_regex.match(line)
632
+ hosts_and_ports << line
633
+ end
634
+ }
635
+
636
+ stderr.each { |line|
637
+ line = line.chomp
638
+ if line.index(ip_and_port_simple_regex)
639
+ hosts_and_ports_descriptions << line
640
+ end
641
+ }
642
+
643
+ }
644
+
645
+ #hosts_and_ports_descriptions = stderr.gets.chomp.split(/\n/)
646
+ #hosts_and_ports = stdout.gets.chomp.split(/\n/)
647
+
648
+ # Net::SSH.start(ssh_host, app_uuid) do |ssh|
649
+
650
+ # ssh.exec!("rhc-list-ports") do |channel, stream, data|
651
+
652
+ # array = data.split(/\n/)
653
+
654
+ # if stream == :stderr
655
+ # hosts_and_ports_descriptions = array
656
+ # elsif stream == :stdout
657
+ # hosts_and_ports = array
658
+ # end
659
+
660
+ # end
661
+
662
+ # end
663
+
664
+ return hosts_and_ports, hosts_and_ports_descriptions
665
+
666
+ end
667
+
602
668
  def self.ctl_app(libra_server, net_http, app_name, rhlogin, password, action, embedded=false, framework=nil, server_alias=nil, print_result=true)
603
669
  data = {:action => action,
604
670
  :app_name => app_name,
@@ -634,6 +700,12 @@ LOOKSGOOD
634
700
 
635
701
  end
636
702
 
703
+ # provide a hook for performing actions before rhc-* commands exit
704
+ at_exit {
705
+ # ensure client tools are up to date
706
+ RHC::check_version
707
+ }
708
+
637
709
  #
638
710
  # Config paths... /etc/openshift/express.conf or $GEM/conf/express.conf -> ~/.openshift/express.conf
639
711
  #
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: 371
4
+ hash: 321
5
5
  prerelease:
6
6
  segments:
7
7
  - 0
8
- - 82
9
- - 18
10
- version: 0.82.18
8
+ - 83
9
+ - 9
10
+ version: 0.83.9
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-12-01 00:00:00 Z
18
+ date: 2011-12-19 00:00:00 Z
19
19
  dependencies:
20
20
  - !ruby/object:Gem::Dependency
21
21
  name: json_pure
@@ -61,13 +61,13 @@ extra_rdoc_files: []
61
61
 
62
62
  files:
63
63
  - lib/rhc-common.rb
64
- - bin/rhc-create-app
65
- - bin/rhc-chk
66
- - bin/rhc-user-info
67
- - bin/rhc-create-domain
68
- - bin/rhc-snapshot
69
64
  - bin/rhc-ctl-app
70
65
  - bin/rhc-tail-files
66
+ - bin/rhc-user-info
67
+ - bin/rhc-snapshot
68
+ - bin/rhc-chk
69
+ - bin/rhc-create-app
70
+ - bin/rhc-create-domain
71
71
  - conf/express.conf
72
72
  - LICENSE
73
73
  - README