rhc 1.7.8 → 1.8.9
Sign up to get free protection for your applications and to get access to all the features.
- data/autocomplete/rhc_bash +3 -3
- data/features/lib/rhc_helper/commandify.rb +1 -1
- data/features/lib/rhc_helper/loggable.rb +2 -2
- data/features/support/before_hooks.rb +19 -4
- data/features/support/env.rb +3 -3
- data/lib/rhc/cartridge_helpers.rb +9 -3
- data/lib/rhc/commands.rb +1 -0
- data/lib/rhc/commands/app.rb +35 -19
- data/lib/rhc/commands/apps.rb +2 -2
- data/lib/rhc/commands/authorization.rb +2 -2
- data/lib/rhc/commands/cartridge.rb +9 -5
- data/lib/rhc/commands/domain.rb +7 -9
- data/lib/rhc/commands/port_forward.rb +6 -5
- data/lib/rhc/commands/tail.rb +5 -3
- data/lib/rhc/context_helper.rb +1 -1
- data/lib/rhc/exceptions.rb +12 -0
- data/lib/rhc/helpers.rb +18 -4
- data/lib/rhc/highline_extensions.rb +11 -4
- data/lib/rhc/rest/application.rb +22 -10
- data/lib/rhc/rest/attributes.rb +5 -0
- data/lib/rhc/rest/cartridge.rb +32 -2
- data/lib/rhc/rest/domain.rb +7 -1
- data/lib/rhc/rest/gear_group.rb +1 -1
- data/lib/rhc/rest/mock.rb +20 -5
- data/lib/rhc/wizard.rb +4 -4
- data/spec/rhc/auth_spec.rb +2 -0
- data/spec/rhc/command_spec.rb +3 -1
- data/spec/rhc/commands/app_spec.rb +19 -1
- data/spec/rhc/commands/apps_spec.rb +2 -2
- data/spec/rhc/commands/domain_spec.rb +5 -5
- data/spec/rhc/commands/port_forward_spec.rb +40 -0
- data/spec/rhc/commands/server_spec.rb +13 -8
- data/spec/rhc/commands/tail_spec.rb +29 -0
- data/spec/rhc/highline_extensions_spec.rb +15 -0
- data/spec/rhc/rest_application_spec.rb +41 -9
- data/spec/rhc/rest_spec.rb +12 -1
- data/spec/rhc/wizard_spec.rb +19 -2
- data/spec/wizard_spec_helper.rb +3 -3
- metadata +347 -342
data/autocomplete/rhc_bash
CHANGED
@@ -174,7 +174,7 @@ _rhc()
|
|
174
174
|
|
175
175
|
"rhc app create")
|
176
176
|
if [[ "$cur" == -* ]]; then
|
177
|
-
opts="--app --dns --enable-jenkins --from-code --gear-size --git --namespace --no-dns --no-git --nogit --repo --scaling --type"
|
177
|
+
opts="--app --dns --enable-jenkins --from-code --gear-size --git --namespace --no-dns --no-git --no-keys --nogit --repo --scaling --type"
|
178
178
|
else
|
179
179
|
opts=""
|
180
180
|
fi
|
@@ -262,7 +262,7 @@ _rhc()
|
|
262
262
|
|
263
263
|
"rhc app-create")
|
264
264
|
if [[ "$cur" == -* ]]; then
|
265
|
-
opts="--app --dns --enable-jenkins --from-code --gear-size --git --namespace --no-dns --no-git --nogit --repo --scaling --type"
|
265
|
+
opts="--app --dns --enable-jenkins --from-code --gear-size --git --namespace --no-dns --no-git --no-keys --nogit --repo --scaling --type"
|
266
266
|
else
|
267
267
|
opts=""
|
268
268
|
fi
|
@@ -614,7 +614,7 @@ _rhc()
|
|
614
614
|
|
615
615
|
"rhc create-app")
|
616
616
|
if [[ "$cur" == -* ]]; then
|
617
|
-
opts="--app --dns --enable-jenkins --from-code --gear-size --git --namespace --no-dns --no-git --nogit --repo --scaling --type"
|
617
|
+
opts="--app --dns --enable-jenkins --from-code --gear-size --git --namespace --no-dns --no-git --no-keys --nogit --repo --scaling --type"
|
618
618
|
else
|
619
619
|
opts=""
|
620
620
|
fi
|
@@ -19,10 +19,10 @@ module RHCHelper
|
|
19
19
|
original_formatter = Logger::Formatter.new
|
20
20
|
@logger.formatter = proc { |severity, datetime, progname, msg|
|
21
21
|
# Filter out any passwords
|
22
|
-
filter_msg = msg.gsub(PASSWORD_REGEX, " -p ***** ")
|
22
|
+
#filter_msg = msg.gsub(PASSWORD_REGEX, " -p ***** ")
|
23
23
|
|
24
24
|
# Format with the original formatter
|
25
|
-
original_formatter.call(severity, datetime, progname,
|
25
|
+
original_formatter.call(severity, datetime, progname, msg)
|
26
26
|
}
|
27
27
|
end
|
28
28
|
|
@@ -1,7 +1,3 @@
|
|
1
|
-
Before('@clean') do
|
2
|
-
clean_applications(true)
|
3
|
-
end
|
4
|
-
|
5
1
|
Before('@sshkey') do
|
6
2
|
Sshkey.remove "key1"
|
7
3
|
Sshkey.remove "key2"
|
@@ -16,12 +12,22 @@ Before('@geared_user_required') do
|
|
16
12
|
$old_username = $username
|
17
13
|
$username = "user_with_multiple_gear_sizes@test.com"
|
18
14
|
$namespace = nil
|
15
|
+
|
16
|
+
if !$cleaned_gears
|
17
|
+
clean_applications($username)
|
18
|
+
$cleaned_gears = true
|
19
|
+
end
|
19
20
|
end
|
20
21
|
|
21
22
|
Before('@certificates_capable_user_required') do
|
22
23
|
$old_username = $username
|
23
24
|
$username = "user_with_certificate_capabilities@test.com"
|
24
25
|
$namespace = nil
|
26
|
+
|
27
|
+
if !$cleaned_certificates
|
28
|
+
clean_applications($username)
|
29
|
+
$cleaned_certificates = true
|
30
|
+
end
|
25
31
|
end
|
26
32
|
|
27
33
|
After do
|
@@ -37,6 +43,15 @@ Before('@cartridge_storage_user_required') do
|
|
37
43
|
$old_username = $username
|
38
44
|
$username = "user_with_extra_storage@test.com"
|
39
45
|
$namespace = nil
|
46
|
+
|
47
|
+
if !$cleaned_storage
|
48
|
+
clean_applications($username)
|
49
|
+
$cleaned_storage = true
|
50
|
+
end
|
51
|
+
end
|
52
|
+
|
53
|
+
Before('@clean') do
|
54
|
+
clean_applications($username, true)
|
40
55
|
end
|
41
56
|
|
42
57
|
Before('@domain_required') do
|
data/features/support/env.rb
CHANGED
@@ -105,9 +105,9 @@ _log " Creating New Namespace: #{$namespace.nil?}"
|
|
105
105
|
_log "--------------------------------------------------------------------------------------------------"
|
106
106
|
_log "\n\n"
|
107
107
|
|
108
|
-
def clean_applications(leave_domain
|
108
|
+
def clean_applications(user=$username,leave_domain=false)
|
109
109
|
return if ENV['NO_CLEAN']
|
110
|
-
users =
|
110
|
+
users = Array(user)
|
111
111
|
|
112
112
|
_log " Cleaning up test applications..."
|
113
113
|
|
@@ -128,8 +128,8 @@ def clean_applications(leave_domain = false)
|
|
128
128
|
app.delete
|
129
129
|
end
|
130
130
|
end
|
131
|
-
domain.delete unless leave_domain
|
132
131
|
end
|
132
|
+
client.domains.each{ |domain| domain.delete } unless leave_domain
|
133
133
|
client.sshkeys.each do |key|
|
134
134
|
_log "\t\tKey: #{key.name}"
|
135
135
|
key.delete
|
@@ -7,6 +7,8 @@ module RHC
|
|
7
7
|
from = opts[:from] || all_cartridges
|
8
8
|
|
9
9
|
cartridge_names.map do |name|
|
10
|
+
next use_cart(RHC::Rest::Cartridge.for_url(name), name) if name =~ %r(\Ahttps?://)i
|
11
|
+
|
10
12
|
name = name.downcase
|
11
13
|
from.find{ |c| c.name.downcase == name } ||
|
12
14
|
begin
|
@@ -33,7 +35,11 @@ module RHC
|
|
33
35
|
end
|
34
36
|
|
35
37
|
def use_cart(cart, for_cartridge_name)
|
36
|
-
|
38
|
+
if cart.custom?
|
39
|
+
info "The cartridge '#{cart.url}' will be downloaded and installed"
|
40
|
+
else
|
41
|
+
info "Using #{cart.name}#{cart.display_name ? " (#{cart.display_name})" : ''} for '#{for_cartridge_name}'"
|
42
|
+
end
|
37
43
|
cart
|
38
44
|
end
|
39
45
|
|
@@ -50,7 +56,7 @@ module RHC
|
|
50
56
|
lambda{ |cart|
|
51
57
|
next cart unless cart.is_a? Array
|
52
58
|
name = cart.instance_variable_get(:@for)
|
53
|
-
matching = cart.select
|
59
|
+
matching = cart.select{ |c| not c.only_in_existing? }
|
54
60
|
if matching.empty?
|
55
61
|
raise RHC::MultipleCartridgesException, "You must select only a single web cartridge. '#{name}' matches web cartridges."
|
56
62
|
elsif matching.size == 1
|
@@ -93,6 +99,6 @@ module RHC
|
|
93
99
|
carts.unshift ['==========', '=========']
|
94
100
|
carts.unshift ['Short Name', 'Full name']
|
95
101
|
say table(carts)
|
96
|
-
end
|
102
|
+
end
|
97
103
|
end
|
98
104
|
end
|
data/lib/rhc/commands.rb
CHANGED
@@ -299,6 +299,7 @@ module RHC
|
|
299
299
|
raise ArgumentError, "Missing required argument '#{arg[:name]}'." unless arg[:optional]
|
300
300
|
break if available.empty?
|
301
301
|
else
|
302
|
+
value = Array(value) if arg[:arg_type] == :list
|
302
303
|
slots[i] = value
|
303
304
|
options.__hash__[option] = value if option
|
304
305
|
end
|
data/lib/rhc/commands/app.rb
CHANGED
@@ -6,7 +6,12 @@ require 'rhc/cartridge_helpers'
|
|
6
6
|
module RHC::Commands
|
7
7
|
class App < Base
|
8
8
|
summary "Commands for creating and managing applications"
|
9
|
-
description
|
9
|
+
description <<-DESC
|
10
|
+
Creates and controls an OpenShift application. To see the list of all
|
11
|
+
applications use the rhc domain show command. Note that delete is not
|
12
|
+
reversible and will stop your application and then remove the application
|
13
|
+
and repo from the remote server. No local changes are made.
|
14
|
+
DESC
|
10
15
|
syntax "<action>"
|
11
16
|
default_action :help
|
12
17
|
suppress_wizard
|
@@ -19,7 +24,11 @@ module RHC::Commands
|
|
19
24
|
scheduled jobs, or continuous integration.
|
20
25
|
|
21
26
|
You can see a list of all valid cartridge types by running
|
22
|
-
'rhc cartridge list'.
|
27
|
+
'rhc cartridge list'. OpenShift also supports downloading cartridges -
|
28
|
+
pass a URL in place of the cartridge name and we'll download
|
29
|
+
and install that cartridge into your app. Keep in mind that
|
30
|
+
these cartridges receive no security updates. Note that not
|
31
|
+
all OpenShift servers allow downloaded cartridges.
|
23
32
|
|
24
33
|
When your application is created, a domain name that is a combination
|
25
34
|
of the name of your app and the namespace of your domain will be
|
@@ -38,7 +47,7 @@ module RHC::Commands
|
|
38
47
|
may be specified to change the gears used.
|
39
48
|
|
40
49
|
DESC
|
41
|
-
syntax "<name> <cartridge> [-n namespace]"
|
50
|
+
syntax "<name> <cartridge> [... <cartridge>] [-n namespace]"
|
42
51
|
option ["-n", "--namespace NAME"], "Namespace for the application"
|
43
52
|
option ["-g", "--gear-size SIZE"], "Gear size controls how much memory and CPU your cartridges can use."
|
44
53
|
option ["-s", "--scaling"], "Enable scaling for the web cartridge."
|
@@ -51,7 +60,6 @@ module RHC::Commands
|
|
51
60
|
option ["--enable-jenkins [NAME]"], "Enable Jenkins builds for this application (will create a Jenkins application if not already available). The default name will be 'jenkins' if not specified."
|
52
61
|
argument :name, "Name for your application", ["-a", "--app NAME"], :optional => true
|
53
62
|
argument :cartridges, "The web framework this application should use", ["-t", "--type CARTRIDGE"], :optional => true, :arg_type => :list
|
54
|
-
#argument :additional_cartridges, "A list of other cartridges such as databases you wish to add. Cartridges can also be added later using 'rhc cartridge add'", [], :arg_type => :list
|
55
63
|
def create(name, cartridges)
|
56
64
|
check_config!
|
57
65
|
|
@@ -69,7 +77,7 @@ module RHC::Commands
|
|
69
77
|
rest_app = nil
|
70
78
|
|
71
79
|
cart_names = cartridges.collect do |c|
|
72
|
-
c.usage_rate? ? "#{c.
|
80
|
+
c.usage_rate? ? "#{c.short_name} (addtl. costs may apply)" : c.short_name
|
73
81
|
end.join(', ')
|
74
82
|
|
75
83
|
paragraph do
|
@@ -88,13 +96,9 @@ module RHC::Commands
|
|
88
96
|
paragraph do
|
89
97
|
say "Creating application '#{name}' ... "
|
90
98
|
|
91
|
-
|
92
99
|
# create the main app
|
93
|
-
rest_app = create_app(name, cartridges
|
94
|
-
options.gear_size, options.scaling, options.from_code)
|
95
|
-
|
100
|
+
rest_app = create_app(name, cartridges, rest_domain, options.gear_size, options.scaling, options.from_code)
|
96
101
|
messages.concat(rest_app.messages)
|
97
|
-
|
98
102
|
success "done"
|
99
103
|
end
|
100
104
|
|
@@ -115,8 +119,8 @@ module RHC::Commands
|
|
115
119
|
warn "not complete"
|
116
120
|
add_issue("Jenkins failed to install - #{e}",
|
117
121
|
"Installing jenkins and jenkins-client",
|
118
|
-
"rhc app
|
119
|
-
"rhc cartridge
|
122
|
+
"rhc create-app jenkins",
|
123
|
+
"rhc add-cartridge jenkins-client -a #{rest_app.name}")
|
120
124
|
end
|
121
125
|
end
|
122
126
|
end
|
@@ -276,7 +280,19 @@ module RHC::Commands
|
|
276
280
|
say "Cartridge #{gg.cartridges.collect { |c| c['name'] }.join(', ')} is #{gear_group_state(gg.gears.map{ |g| g['state'] })}"
|
277
281
|
end
|
278
282
|
elsif options.gears
|
279
|
-
|
283
|
+
gear_info = gear_groups_for_app(app_name).map do |group|
|
284
|
+
group.gears.map do |gear|
|
285
|
+
[
|
286
|
+
gear['id'],
|
287
|
+
gear['state'] == 'started' ? gear['state'] : color(gear['state'], :yellow),
|
288
|
+
group.cartridges.collect{ |c| c['name'] }.join(' '),
|
289
|
+
group.gear_profile,
|
290
|
+
ssh_string(gear['ssh_url'])
|
291
|
+
]
|
292
|
+
end
|
293
|
+
end.flatten(1)
|
294
|
+
|
295
|
+
say table(gear_info, :header => ['ID', 'State', 'Cartridges', 'Size', 'SSH URL'])
|
280
296
|
else
|
281
297
|
app = rest_client.find_application(options.namespace, app_name, :include => :cartridges)
|
282
298
|
display_app(app, app.cartridges)
|
@@ -325,8 +341,8 @@ module RHC::Commands
|
|
325
341
|
def require_one_web_cart
|
326
342
|
lambda{ |carts|
|
327
343
|
match, ambiguous = carts.partition{ |c| not c.is_a?(Array) }
|
328
|
-
selected_web = match.any?
|
329
|
-
possible_web = ambiguous.flatten.any?
|
344
|
+
selected_web = match.any?{ |c| not c.only_in_existing? }
|
345
|
+
possible_web = ambiguous.flatten.any?{ |c| not c.only_in_existing? }
|
330
346
|
if not (selected_web or possible_web)
|
331
347
|
section(:bottom => 1){ list_cartridges(standalone_cartridges) }
|
332
348
|
raise RHC::CartridgeNotFoundException, "Every application needs a web cartridge to handle incoming web requests. Please provide the short name of one of the carts listed above."
|
@@ -363,11 +379,11 @@ module RHC::Commands
|
|
363
379
|
rest_client.find_domain(options.namespace)
|
364
380
|
else
|
365
381
|
if rest_client.domains.empty?
|
366
|
-
raise RHC::Rest::DomainNotFoundException, "No domains found. Please create a domain with 'rhc domain
|
382
|
+
raise RHC::Rest::DomainNotFoundException, "No domains found. Please create a domain with 'rhc create-domain <namespace>' before creating applications." unless interactive?
|
367
383
|
RHC::DomainWizard.new(config, options, rest_client).run
|
368
384
|
end
|
369
385
|
domain = rest_client.domains.first
|
370
|
-
raise RHC::Rest::DomainNotFoundException, "No domains found. Please create a domain with 'rhc domain
|
386
|
+
raise RHC::Rest::DomainNotFoundException, "No domains found. Please create a domain with 'rhc create-domain <namespace>' before creating applications." unless domain
|
371
387
|
options.namespace = domain.id
|
372
388
|
domain
|
373
389
|
end
|
@@ -446,7 +462,7 @@ module RHC::Commands
|
|
446
462
|
warn "not complete"
|
447
463
|
add_issue("Jenkins client failed to install - #{exit_message}",
|
448
464
|
"Install the jenkins client",
|
449
|
-
"rhc cartridge
|
465
|
+
"rhc add-cartridge jenkins-client -a #{rest_app.name}")
|
450
466
|
end
|
451
467
|
end
|
452
468
|
|
@@ -565,7 +581,7 @@ WARNING: Your application was created successfully but had problems during
|
|
565
581
|
If this doesn't work for you, let us know in the forums or in IRC and we'll
|
566
582
|
make sure to get you up and running.
|
567
583
|
|
568
|
-
Forums - https://openshift.
|
584
|
+
Forums - https://www.openshift.com/forums/openshift
|
569
585
|
IRC - #openshift (on Freenode)
|
570
586
|
|
571
587
|
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
|
data/lib/rhc/commands/apps.rb
CHANGED
@@ -7,12 +7,12 @@ module RHC::Commands
|
|
7
7
|
def run
|
8
8
|
domains = rest_client.domains
|
9
9
|
|
10
|
-
info "In order to deploy applications, you must create a domain with 'rhc setup' or 'rhc domain
|
10
|
+
info "In order to deploy applications, you must create a domain with 'rhc setup' or 'rhc create-domain'." and return 1 if domains.empty?
|
11
11
|
|
12
12
|
applications = domains.map{ |d| d.applications(:include => :cartridges) }.flatten.sort
|
13
13
|
|
14
14
|
applications.each{ |a| display_app(a, a.cartridges) }.blank? and
|
15
|
-
info "No applications. Use 'rhc app
|
15
|
+
info "No applications. Use 'rhc create-app'." and
|
16
16
|
return 1
|
17
17
|
|
18
18
|
success "You have #{applications.length} applications"
|
@@ -7,7 +7,7 @@ module RHC::Commands
|
|
7
7
|
can add, edit, or delete authorizations with subcommands.
|
8
8
|
|
9
9
|
An authorization token grants access to the OpenShift REST API with
|
10
|
-
a set of
|
10
|
+
a set of privileges called 'scopes' for a limited time. You can
|
11
11
|
add an optional note to each authorization token to assist you in
|
12
12
|
remembering what is available.
|
13
13
|
DESC
|
@@ -25,7 +25,7 @@ module RHC::Commands
|
|
25
25
|
syntax "--scopes SCOPES [--note NOTE] [--expires-in SECONDS]"
|
26
26
|
description <<-DESC
|
27
27
|
Add an authorization to your account. An authorization token grants
|
28
|
-
access to the OpenShift REST API with a set of
|
28
|
+
access to the OpenShift REST API with a set of privileges called 'scopes'
|
29
29
|
for a limited time. You can add an optional note to each authorization
|
30
30
|
token to assist you in remembering what is available.
|
31
31
|
|
@@ -17,7 +17,11 @@ module RHC::Commands
|
|
17
17
|
(like Jenkins) or provide environment variables.
|
18
18
|
|
19
19
|
Use the 'cartridges' command to see a list of all available cartridges.
|
20
|
-
Add a new cartridge to your application with 'add-cartridge'.
|
20
|
+
Add a new cartridge to your application with 'add-cartridge'. OpenShift
|
21
|
+
also supports downloading cartridges - pass a URL in place of the cartridge
|
22
|
+
name and we'll download and install that cartridge into your app. Keep
|
23
|
+
in mind that these cartridges receive no security updates. Note that
|
24
|
+
not all OpenShift servers allow downloaded cartridges.
|
21
25
|
|
22
26
|
For scalable applications, use the 'cartridge-scale' command on the web
|
23
27
|
cartridge to set the minimum and maximum scale.
|
@@ -42,7 +46,7 @@ module RHC::Commands
|
|
42
46
|
paragraph do
|
43
47
|
name = c.display_name != c.name && "#{color(c.display_name, :cyan)} [#{c.name}]" || c.name
|
44
48
|
tags = c.tags - RHC::Rest::Cartridge::HIDDEN_TAGS
|
45
|
-
say header([name, "(#{c.
|
49
|
+
say header([name, "(#{c.only_in_existing? ? 'addon' : 'web'})"])
|
46
50
|
say c.description
|
47
51
|
paragraph{ say "Tagged with: #{tags.sort.join(', ')}" } if tags.present?
|
48
52
|
paragraph{ say format_usage_message(c) } if c.usage_rate?
|
@@ -52,7 +56,7 @@ module RHC::Commands
|
|
52
56
|
say table(carts.collect do |c|
|
53
57
|
[c.usage_rate? ? "#{c.name} (*)" : c.name,
|
54
58
|
c.display_name,
|
55
|
-
c.
|
59
|
+
c.only_in_existing? ? 'addon' : 'web']
|
56
60
|
end)
|
57
61
|
end
|
58
62
|
|
@@ -71,12 +75,12 @@ module RHC::Commands
|
|
71
75
|
def add(cart_type)
|
72
76
|
cart = check_cartridges(cart_type, :from => not_standalone_cartridges).first
|
73
77
|
|
74
|
-
say "Adding #{cart.
|
78
|
+
say "Adding #{cart.short_name} to application '#{options.app}' ... "
|
75
79
|
|
76
80
|
say format_usage_message(cart) if cart.usage_rate?
|
77
81
|
|
78
82
|
rest_app = rest_client.find_application(options.namespace, options.app, :include => :cartridges)
|
79
|
-
rest_cartridge = rest_app.add_cartridge(cart
|
83
|
+
rest_cartridge = rest_app.add_cartridge(cart)
|
80
84
|
|
81
85
|
success "Success"
|
82
86
|
|
data/lib/rhc/commands/domain.rb
CHANGED
@@ -26,7 +26,7 @@ module RHC::Commands
|
|
26
26
|
|
27
27
|
results do
|
28
28
|
say "Success!"
|
29
|
-
say "You may now create an application using the 'rhc app
|
29
|
+
say "You may now create an application using the 'rhc create-app' command"
|
30
30
|
end
|
31
31
|
|
32
32
|
0
|
@@ -40,14 +40,12 @@ module RHC::Commands
|
|
40
40
|
def update(old_namespace, new_namespace)
|
41
41
|
domain = rest_client.find_domain(old_namespace)
|
42
42
|
|
43
|
-
say "Changing namespace '#{domain.id}' to '#{new_namespace}'..."
|
43
|
+
say "Changing namespace '#{domain.id}' to '#{new_namespace}' ... "
|
44
44
|
|
45
45
|
domain.update(new_namespace)
|
46
46
|
|
47
|
-
|
48
|
-
|
49
|
-
say "You can use 'rhc domain show' to view any url changes. Be sure to update any links including the url in your local git config: <local_git_repo>/.git/config"
|
50
|
-
end
|
47
|
+
success "success"
|
48
|
+
info "Applications in this domain will use the new namespace in their URL."
|
51
49
|
|
52
50
|
0
|
53
51
|
end
|
@@ -56,7 +54,7 @@ module RHC::Commands
|
|
56
54
|
def show
|
57
55
|
domain = rest_client.domains.first
|
58
56
|
|
59
|
-
warn "In order to deploy applications, you must create a domain with 'rhc setup' or 'rhc domain
|
57
|
+
warn "In order to deploy applications, you must create a domain with 'rhc setup' or 'rhc create-domain'." and return 1 unless domain
|
60
58
|
|
61
59
|
applications = domain.applications(:include => :cartridges)
|
62
60
|
|
@@ -68,7 +66,7 @@ module RHC::Commands
|
|
68
66
|
end
|
69
67
|
success "You have #{applications.length} applications in your domain."
|
70
68
|
else
|
71
|
-
success "The domain #{domain.id} exists but has no applications. You can use 'rhc app
|
69
|
+
success "The domain #{domain.id} exists but has no applications. You can use 'rhc create-app' to create a new application."
|
72
70
|
end
|
73
71
|
|
74
72
|
0
|
@@ -94,7 +92,7 @@ module RHC::Commands
|
|
94
92
|
begin
|
95
93
|
domain.destroy
|
96
94
|
rescue RHC::Rest::ClientErrorException #FIXME: I am insufficiently specific
|
97
|
-
raise RHC::Exception.new("
|
95
|
+
raise RHC::Exception.new("Your domain contains applications. Delete applications first.", 128)
|
98
96
|
end
|
99
97
|
|
100
98
|
success "deleted"
|
@@ -72,11 +72,12 @@ module RHC::Commands
|
|
72
72
|
syntax "<application>"
|
73
73
|
option ["-n", "--namespace NAME"], "Namespace of the application you are port forwarding to", :context => :namespace_context, :required => true
|
74
74
|
argument :app, "Application you are port forwarding to (required)", ["-a", "--app NAME"]
|
75
|
+
option ["-g", "--gear ID"], "Gear ID you are port forwarding to (optional)"
|
75
76
|
def run(app)
|
76
77
|
rest_app = rest_client.find_application(options.namespace, app)
|
78
|
+
ssh_uri = URI.parse(options.gear ? rest_app.gear_ssh_url(options.gear) : rest_app.ssh_url)
|
77
79
|
|
78
|
-
ssh_uri
|
79
|
-
say "Using #{rest_app.ssh_url}..." if options.debug
|
80
|
+
say "Using #{ssh_uri}..." if options.debug
|
80
81
|
|
81
82
|
forwarding_specs = []
|
82
83
|
|
@@ -104,7 +105,7 @@ module RHC::Commands
|
|
104
105
|
end
|
105
106
|
end
|
106
107
|
end
|
107
|
-
|
108
|
+
|
108
109
|
if forwarding_specs.length == 0
|
109
110
|
# check if the gears have been stopped
|
110
111
|
ggs = rest_app.gear_groups
|
@@ -115,7 +116,7 @@ module RHC::Commands
|
|
115
116
|
warn "Application #{rest_app.name} is stopped. Please restart the application and try again."
|
116
117
|
return 1
|
117
118
|
else
|
118
|
-
raise RHC::NoPortsToForwardException.new "There are no available ports to forward for this application. Your application may be stopped."
|
119
|
+
raise RHC::NoPortsToForwardException.new "There are no available ports to forward for this application. Your application may be stopped or idled."
|
119
120
|
end
|
120
121
|
end
|
121
122
|
|
@@ -148,7 +149,7 @@ module RHC::Commands
|
|
148
149
|
say table(
|
149
150
|
bound_ports.map do |fs|
|
150
151
|
[fs.service, "#{fs.host_from}:#{fs.port_from}", " => ", "#{fs.remote_host}:#{fs.port_to.to_s}"]
|
151
|
-
end,
|
152
|
+
end,
|
152
153
|
:header => ["Service", "Local", " ", "OpenShift"]
|
153
154
|
)
|
154
155
|
end
|