vmc 0.4.0.beta.8 → 0.4.0.beta.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.
- data/{vmc-ng/LICENSE → LICENSE} +0 -0
- data/{vmc-ng/Rakefile → Rakefile} +0 -0
- data/bin/vmc +10 -11
- data/{vmc-ng/lib → lib}/vmc/cli/app.rb +106 -58
- data/{vmc-ng/lib → lib}/vmc/cli/better_help.rb +0 -0
- data/{vmc-ng/lib → lib}/vmc/cli/command.rb +14 -0
- data/{vmc-ng/lib → lib}/vmc/cli/dots.rb +0 -0
- data/{vmc-ng/lib → lib}/vmc/cli/service.rb +0 -0
- data/{vmc-ng/lib → lib}/vmc/cli/user.rb +0 -0
- data/{vmc-ng/lib → lib}/vmc/cli.rb +88 -2
- data/{vmc-ng/lib → lib}/vmc/constants.rb +0 -0
- data/{vmc-ng/lib → lib}/vmc/detect.rb +0 -0
- data/{vmc-ng/lib → lib}/vmc/errors.rb +0 -0
- data/{vmc-ng/lib → lib}/vmc/plugin.rb +0 -0
- data/lib/vmc/version.rb +3 -0
- data/{vmc-ng/lib → lib}/vmc.rb +0 -0
- metadata +41 -273
- data/vmc/LICENSE +0 -24
- data/vmc/README.md +0 -102
- data/vmc/Rakefile +0 -101
- data/vmc/bin/vmc +0 -6
- data/vmc/caldecott_helper/Gemfile +0 -10
- data/vmc/caldecott_helper/Gemfile.lock +0 -48
- data/vmc/caldecott_helper/server.rb +0 -43
- data/vmc/config/clients.yml +0 -17
- data/vmc/config/micro/offline.conf +0 -2
- data/vmc/config/micro/paths.yml +0 -22
- data/vmc/config/micro/refresh_ip.rb +0 -20
- data/vmc/lib/cli/commands/admin.rb +0 -80
- data/vmc/lib/cli/commands/apps.rb +0 -1126
- data/vmc/lib/cli/commands/base.rb +0 -227
- data/vmc/lib/cli/commands/manifest.rb +0 -56
- data/vmc/lib/cli/commands/micro.rb +0 -115
- data/vmc/lib/cli/commands/misc.rb +0 -129
- data/vmc/lib/cli/commands/services.rb +0 -180
- data/vmc/lib/cli/commands/user.rb +0 -65
- data/vmc/lib/cli/config.rb +0 -173
- data/vmc/lib/cli/console_helper.rb +0 -160
- data/vmc/lib/cli/core_ext.rb +0 -122
- data/vmc/lib/cli/errors.rb +0 -19
- data/vmc/lib/cli/frameworks.rb +0 -265
- data/vmc/lib/cli/manifest_helper.rb +0 -302
- data/vmc/lib/cli/runner.rb +0 -531
- data/vmc/lib/cli/services_helper.rb +0 -84
- data/vmc/lib/cli/tunnel_helper.rb +0 -332
- data/vmc/lib/cli/usage.rb +0 -115
- data/vmc/lib/cli/version.rb +0 -7
- data/vmc/lib/cli/zip_util.rb +0 -77
- data/vmc/lib/cli.rb +0 -47
- data/vmc/lib/vmc/client.rb +0 -471
- data/vmc/lib/vmc/const.rb +0 -22
- data/vmc/lib/vmc/micro/switcher/base.rb +0 -97
- data/vmc/lib/vmc/micro/switcher/darwin.rb +0 -19
- data/vmc/lib/vmc/micro/switcher/dummy.rb +0 -15
- data/vmc/lib/vmc/micro/switcher/linux.rb +0 -16
- data/vmc/lib/vmc/micro/switcher/windows.rb +0 -31
- data/vmc/lib/vmc/micro/vmrun.rb +0 -158
- data/vmc/lib/vmc/micro.rb +0 -56
- data/vmc/lib/vmc.rb +0 -3
- data/vmc-ng/bin/vmc +0 -14
- data/vmc-ng/lib/vmc/version.rb +0 -3
data/{vmc-ng/LICENSE → LICENSE}
RENAMED
File without changes
|
File without changes
|
data/bin/vmc
CHANGED
@@ -1,15 +1,14 @@
|
|
1
1
|
#!/usr/bin/env ruby
|
2
|
+
# vim: ft=ruby
|
2
3
|
|
3
|
-
|
4
|
-
|
4
|
+
require "rubygems"
|
5
|
+
require "thor"
|
5
6
|
|
6
|
-
|
7
|
-
|
8
|
-
$LOAD_PATH.unshift "#{vmc_ng}/lib"
|
9
|
-
"#{vmc_ng}/bin/vmc"
|
10
|
-
else
|
11
|
-
"#{vmc}/bin/vmc"
|
12
|
-
end
|
7
|
+
require "vmc"
|
8
|
+
require "vmc/plugin"
|
13
9
|
|
14
|
-
|
15
|
-
|
10
|
+
VMC::Plugin.load_all
|
11
|
+
|
12
|
+
$exit_status = 0
|
13
|
+
VMC::CLI.start(ARGV)
|
14
|
+
exit($exit_status)
|
@@ -37,8 +37,8 @@ module VMC
|
|
37
37
|
group :apps, :manage
|
38
38
|
flag(:name) { ask("Name") }
|
39
39
|
flag(:path)
|
40
|
-
flag(:url) { |
|
41
|
-
ask("URL", :default =>
|
40
|
+
flag(:url) { |default|
|
41
|
+
ask("URL", :default => default)
|
42
42
|
}
|
43
43
|
flag(:memory) { |framework, runtime|
|
44
44
|
ask("Memory Limit",
|
@@ -60,6 +60,9 @@ module VMC
|
|
60
60
|
flag(:runtime) { |choices|
|
61
61
|
ask("Runtime", :choices => choices)
|
62
62
|
}
|
63
|
+
flag(:command) {
|
64
|
+
ask("Startup command")
|
65
|
+
}
|
63
66
|
flag(:start, :default => true)
|
64
67
|
flag(:restart, :default => true)
|
65
68
|
flag(:create_services, :type => :boolean) {
|
@@ -87,9 +90,6 @@ module VMC
|
|
87
90
|
|
88
91
|
app.total_instances = input(:instances)
|
89
92
|
|
90
|
-
domain = client.target.sub(/^https?:\/\/api\.(.+)\/?/, '\1')
|
91
|
-
app.urls = [input(:url, name, domain)]
|
92
|
-
|
93
93
|
if detected.empty?
|
94
94
|
framework = input(:framework, frameworks.keys.sort, nil)
|
95
95
|
else
|
@@ -108,6 +108,19 @@ module VMC
|
|
108
108
|
app.framework = framework
|
109
109
|
app.runtime = runtime
|
110
110
|
|
111
|
+
if framework == "standalone"
|
112
|
+
app.command = input(:command)
|
113
|
+
|
114
|
+
if (url = input(:url, "none")) != "none"
|
115
|
+
app.urls = [url]
|
116
|
+
else
|
117
|
+
app.urls = []
|
118
|
+
end
|
119
|
+
else
|
120
|
+
domain = client.target.sub(/^https?:\/\/api\.(.+)\/?/, '\1')
|
121
|
+
app.urls = [input(:url, "#{name}.#{domain}")]
|
122
|
+
end
|
123
|
+
|
111
124
|
app.memory = megabytes(input(:memory, framework, runtime))
|
112
125
|
|
113
126
|
bindings = []
|
@@ -179,7 +192,7 @@ module VMC
|
|
179
192
|
desc "start APPS...", "Start an application"
|
180
193
|
group :apps, :manage
|
181
194
|
flag :name
|
182
|
-
flag :debug_mode
|
195
|
+
flag :debug_mode, :aliases => "-d"
|
183
196
|
def start(*names)
|
184
197
|
if name = passed_value(:name)
|
185
198
|
names = [name]
|
@@ -195,7 +208,7 @@ module VMC
|
|
195
208
|
switch_mode(app, input(:debug_mode))
|
196
209
|
|
197
210
|
with_progress("Starting #{c(name, :name)}") do |s|
|
198
|
-
if app.
|
211
|
+
if app.started?
|
199
212
|
s.skip do
|
200
213
|
err "Already started."
|
201
214
|
end
|
@@ -247,7 +260,7 @@ module VMC
|
|
247
260
|
desc "restart APPS...", "Stop and start an application"
|
248
261
|
group :apps, :manage
|
249
262
|
flag :name
|
250
|
-
flag :debug_mode
|
263
|
+
flag :debug_mode, :aliases => "-d"
|
251
264
|
def restart(*names)
|
252
265
|
stop(*names)
|
253
266
|
start(*names)
|
@@ -262,36 +275,52 @@ module VMC
|
|
262
275
|
flag(:name) { |names|
|
263
276
|
ask("Delete which application?", :choices => names)
|
264
277
|
}
|
278
|
+
flag(:orphaned, :aliases => "-o", :type => :boolean,
|
279
|
+
:desc => "Delete orphaned instances")
|
265
280
|
flag(:all, :default => false)
|
266
281
|
def delete(*names)
|
267
282
|
if input(:all)
|
268
283
|
return unless input(:really, "ALL APPS", :bad)
|
269
284
|
|
270
|
-
|
271
|
-
|
285
|
+
apps = client.apps
|
286
|
+
|
287
|
+
orphaned = find_orphaned_services(apps)
|
288
|
+
|
289
|
+
apps.each do |a|
|
290
|
+
with_progress("Deleting #{c(a.name, :name)}") do
|
291
|
+
a.delete!
|
292
|
+
end
|
272
293
|
end
|
273
294
|
|
295
|
+
delete_orphaned_services(orphaned)
|
296
|
+
|
274
297
|
return
|
275
298
|
end
|
276
299
|
|
300
|
+
apps = client.apps
|
301
|
+
|
277
302
|
if names.empty?
|
278
|
-
apps = client.apps
|
279
303
|
fail "No applications." if apps.empty?
|
280
304
|
|
281
305
|
names = [input(:name, apps.collect(&:name).sort)]
|
282
306
|
end
|
283
307
|
|
284
|
-
names.
|
285
|
-
|
308
|
+
to_delete = names.collect { |n| apps.find { |a| a.name == n } }
|
309
|
+
orphaned = find_orphaned_services(to_delete)
|
310
|
+
|
311
|
+
to_delete.each do |app|
|
312
|
+
really = input(:really, app.name, :name)
|
286
313
|
|
287
314
|
forget(:really)
|
288
315
|
|
289
316
|
next unless really
|
290
317
|
|
291
|
-
with_progress("Deleting #{c(name, :name)}") do
|
292
|
-
|
318
|
+
with_progress("Deleting #{c(app.name, :name)}") do
|
319
|
+
app.delete!
|
293
320
|
end
|
294
321
|
end
|
322
|
+
|
323
|
+
delete_orphaned_services(orphaned)
|
295
324
|
end
|
296
325
|
|
297
326
|
desc "instances APPS...", "List an app's instances"
|
@@ -323,6 +352,7 @@ module VMC
|
|
323
352
|
|
324
353
|
desc "scale APP", "Update the instances/memory limit for an application"
|
325
354
|
group :apps, :info, :hidden => true
|
355
|
+
flag :name
|
326
356
|
flag(:instances, :type => :numeric) { |default|
|
327
357
|
ask("Instances", :default => default)
|
328
358
|
}
|
@@ -331,7 +361,9 @@ module VMC
|
|
331
361
|
:default => human_size(default * 1024 * 1024, 0),
|
332
362
|
:choices => MEM_CHOICES)
|
333
363
|
}
|
334
|
-
def scale(name)
|
364
|
+
def scale(name = nil)
|
365
|
+
name ||= input(:name)
|
366
|
+
|
335
367
|
app = client.app(name)
|
336
368
|
|
337
369
|
instances = passed_value(:instances)
|
@@ -351,9 +383,12 @@ module VMC
|
|
351
383
|
|
352
384
|
desc "logs APP", "Print out an app's logs"
|
353
385
|
group :apps, :info, :hidden => true
|
386
|
+
flag :name
|
354
387
|
flag(:instance, :type => :numeric, :default => 0)
|
355
388
|
flag(:all, :default => false)
|
356
|
-
def logs(name)
|
389
|
+
def logs(name = nil)
|
390
|
+
name ||= input(:name)
|
391
|
+
|
357
392
|
app = client.app(name)
|
358
393
|
fail "Unknown application." unless app.exists?
|
359
394
|
|
@@ -397,7 +432,10 @@ module VMC
|
|
397
432
|
|
398
433
|
desc "file APP [PATH]", "Print out an app's file contents"
|
399
434
|
group :apps, :info, :hidden => true
|
400
|
-
|
435
|
+
flag :name
|
436
|
+
def file(name = nil, path = "/")
|
437
|
+
name ||= input(:name)
|
438
|
+
|
401
439
|
file =
|
402
440
|
with_progress("Getting file contents") do
|
403
441
|
client.app(name).file(*path.split("/"))
|
@@ -410,16 +448,18 @@ module VMC
|
|
410
448
|
|
411
449
|
desc "files APP [PATH]", "Examine an app's files"
|
412
450
|
group :apps, :info, :hidden => true
|
413
|
-
|
451
|
+
flag :name
|
452
|
+
def files(name = nil, path = "/")
|
453
|
+
name ||= input(:name)
|
454
|
+
|
414
455
|
files =
|
415
456
|
with_progress("Getting file listing") do
|
416
457
|
client.app(name).files(*path.split("/"))
|
417
458
|
end
|
418
459
|
|
419
460
|
puts "" unless simple_output?
|
420
|
-
|
421
461
|
files.each do |file|
|
422
|
-
puts file
|
462
|
+
puts file.join("/")
|
423
463
|
end
|
424
464
|
end
|
425
465
|
|
@@ -450,17 +490,26 @@ module VMC
|
|
450
490
|
|
451
491
|
desc "stats APP", "Display application instance status"
|
452
492
|
group :apps, :info, :hidden => true
|
453
|
-
|
493
|
+
flag :name
|
494
|
+
def stats(name = nil)
|
495
|
+
name ||= input(:name)
|
496
|
+
|
454
497
|
stats =
|
455
498
|
with_progress("Getting stats") do
|
456
499
|
client.app(name).stats
|
457
500
|
end
|
458
501
|
|
459
502
|
stats.sort_by { |k, _| k }.each do |idx, info|
|
503
|
+
puts ""
|
504
|
+
|
505
|
+
if info["state"] == "DOWN"
|
506
|
+
puts "Instance #{c("\##{idx}", :instance)} is down."
|
507
|
+
next
|
508
|
+
end
|
509
|
+
|
460
510
|
stats = info["stats"]
|
461
511
|
usage = stats["usage"]
|
462
|
-
puts ""
|
463
|
-
puts "instance #{c("#" + idx, :name)}:"
|
512
|
+
puts "instance #{c("\##{idx}", :instance)}:"
|
464
513
|
print " cpu: #{percentage(usage["cpu"])} of"
|
465
514
|
puts " #{b(stats["cores"])} cores"
|
466
515
|
puts " memory: #{usage(usage["mem"] * 1024, stats["mem_quota"])}"
|
@@ -585,13 +634,14 @@ module VMC
|
|
585
634
|
# set app debug mode, ensuring it's valid, and shutting it down
|
586
635
|
def switch_mode(app, mode)
|
587
636
|
mode = nil if mode == "none"
|
637
|
+
mode = "run" if mode == "debug_mode" # no value given
|
588
638
|
|
589
639
|
return false if app.debug_mode == mode
|
590
640
|
|
591
641
|
if mode.nil?
|
592
642
|
with_progress("Removing debug mode") do
|
593
643
|
app.debug_mode = nil
|
594
|
-
app.stop! if app.
|
644
|
+
app.stop! if app.started?
|
595
645
|
end
|
596
646
|
|
597
647
|
return true
|
@@ -602,13 +652,9 @@ module VMC
|
|
602
652
|
modes = runtimes[app.runtime]["debug_modes"] || []
|
603
653
|
if modes.include?(mode)
|
604
654
|
app.debug_mode = mode
|
605
|
-
app.stop! if app.
|
606
|
-
true
|
655
|
+
app.stop! if app.started?
|
607
656
|
else
|
608
|
-
|
609
|
-
err "Unknown mode '#{mode}'; available: #{modes.inspect}"
|
610
|
-
false
|
611
|
-
end
|
657
|
+
fail "Unknown mode '#{mode}'; available: #{modes.join ", "}"
|
612
658
|
end
|
613
659
|
end
|
614
660
|
end
|
@@ -666,45 +712,47 @@ module VMC
|
|
666
712
|
end
|
667
713
|
end
|
668
714
|
|
669
|
-
def
|
670
|
-
|
671
|
-
|
672
|
-
return
|
673
|
-
end
|
674
|
-
|
675
|
-
puts ""
|
715
|
+
def display_instance(i)
|
716
|
+
print "instance #{c("\##{i.index}", :instance)}: "
|
717
|
+
puts "#{b(c(i.state.downcase, state_color(i.state)))} "
|
676
718
|
|
677
|
-
|
719
|
+
puts " started: #{c(i.since.strftime("%F %r"), :cyan)}"
|
678
720
|
|
679
|
-
|
721
|
+
if d = i.debugger
|
722
|
+
puts " debugger: port #{b(d[:port])} at #{b(d[:ip])}"
|
723
|
+
end
|
680
724
|
|
681
|
-
|
682
|
-
|
725
|
+
if c = i.console
|
726
|
+
puts " console: port #{b(c[:port])} at #{b(c[:ip])}"
|
683
727
|
end
|
728
|
+
end
|
684
729
|
|
685
|
-
|
730
|
+
def find_orphaned_services(apps)
|
731
|
+
orphaned = []
|
686
732
|
|
687
|
-
|
688
|
-
|
733
|
+
apps.each do |a|
|
734
|
+
a.services.each do |s|
|
735
|
+
if apps.none? { |x| x != a && x.services.include?(s) }
|
736
|
+
orphaned << s
|
737
|
+
end
|
738
|
+
end
|
689
739
|
end
|
690
740
|
|
691
|
-
|
692
|
-
puts " services: #{a.services.collect { |s| b(s) }.join(", ")}"
|
693
|
-
end
|
741
|
+
orphaned
|
694
742
|
end
|
695
743
|
|
696
|
-
def
|
697
|
-
|
698
|
-
puts "#{b(c(i.state.downcase, state_color(i.state)))} "
|
699
|
-
|
700
|
-
puts " started: #{c(i.since.strftime("%F %r"), :cyan)}"
|
744
|
+
def delete_orphaned_services(names)
|
745
|
+
return if names.empty?
|
701
746
|
|
702
|
-
|
703
|
-
puts " debugger: port #{b(d["port"])} at #{b(d["ip"])}"
|
704
|
-
end
|
747
|
+
puts "" unless simple_output?
|
705
748
|
|
706
|
-
|
707
|
-
|
749
|
+
names.select { |s|
|
750
|
+
input(:orphaned) ||
|
751
|
+
ask("Delete orphaned service #{c(s, :name)}?", :default => false)
|
752
|
+
}.each do |s|
|
753
|
+
with_progress("Deleting service #{c(s, :name)}") do
|
754
|
+
client.service(s).delete!
|
755
|
+
end
|
708
756
|
end
|
709
757
|
end
|
710
758
|
end
|
File without changes
|
@@ -10,6 +10,8 @@ require "vmc/cli/dots"
|
|
10
10
|
require "vmc/cli/better_help"
|
11
11
|
|
12
12
|
|
13
|
+
$vmc_asked_auth = false
|
14
|
+
|
13
15
|
module VMC
|
14
16
|
module Interactive
|
15
17
|
include ::Interactive::Rewindable
|
@@ -362,6 +364,18 @@ module VMC
|
|
362
364
|
rescue UserError => e
|
363
365
|
err e.message
|
364
366
|
rescue CFoundry::Denied => e
|
367
|
+
if !$vmc_asked_auth && e.error_code == 200
|
368
|
+
$vmc_asked_auth = true
|
369
|
+
|
370
|
+
puts ""
|
371
|
+
puts c("Not authenticated! Try logging in:", :warning)
|
372
|
+
|
373
|
+
VMC::CLI.start(["login"])
|
374
|
+
@client = nil
|
375
|
+
|
376
|
+
retry
|
377
|
+
end
|
378
|
+
|
365
379
|
err "Denied: #{e.description}"
|
366
380
|
rescue Exception => e
|
367
381
|
msg = e.class.name
|
File without changes
|
File without changes
|
File without changes
|
@@ -233,6 +233,10 @@ module VMC
|
|
233
233
|
|
234
234
|
desc "apps", "List your applications"
|
235
235
|
group :apps
|
236
|
+
flag :name, :desc => "Filter by name regexp"
|
237
|
+
flag :runtime, :desc => "Filter by runtime regexp"
|
238
|
+
flag :framework, :desc => "Filter by framework regexp"
|
239
|
+
flag :url, :desc => "Filter by url regexp"
|
236
240
|
def apps
|
237
241
|
apps =
|
238
242
|
with_progress("Getting applications") do
|
@@ -246,12 +250,17 @@ module VMC
|
|
246
250
|
end
|
247
251
|
|
248
252
|
apps.each.with_index do |a, num|
|
249
|
-
display_app(a)
|
253
|
+
display_app(a) if app_matches(a)
|
250
254
|
end
|
251
255
|
end
|
252
256
|
|
253
257
|
desc "services", "List your services"
|
254
258
|
group :services
|
259
|
+
flag :name, :desc => "Filter by name regexp"
|
260
|
+
flag :app, :desc => "Filter by bound application regexp"
|
261
|
+
flag :type, :desc => "Filter by service type regexp"
|
262
|
+
flag :vendor, :desc => "Filter by service vendor regexp"
|
263
|
+
flag :tier, :desc => "Filter by service tier regexp"
|
255
264
|
def services
|
256
265
|
services =
|
257
266
|
with_progress("Getting services") do
|
@@ -264,8 +273,15 @@ module VMC
|
|
264
273
|
puts "No services."
|
265
274
|
end
|
266
275
|
|
276
|
+
if app = options[:app]
|
277
|
+
apps = client.apps
|
278
|
+
services.reject! do |s|
|
279
|
+
apps.none? { |a| a.services.include? s.name }
|
280
|
+
end
|
281
|
+
end
|
282
|
+
|
267
283
|
services.each do |s|
|
268
|
-
display_service(s)
|
284
|
+
display_service(s) if service_matches(s)
|
269
285
|
end
|
270
286
|
end
|
271
287
|
|
@@ -313,6 +329,76 @@ module VMC
|
|
313
329
|
|
314
330
|
private
|
315
331
|
|
332
|
+
def app_matches(a)
|
333
|
+
if name = options[:name]
|
334
|
+
return false if a.name !~ /#{name}/
|
335
|
+
end
|
336
|
+
|
337
|
+
if runtime = options[:runtime]
|
338
|
+
return false if a.runtime !~ /#{runtime}/
|
339
|
+
end
|
340
|
+
|
341
|
+
if framework = options[:framework]
|
342
|
+
return false if a.framework !~ /#{framework}/
|
343
|
+
end
|
344
|
+
|
345
|
+
if url = options[:url]
|
346
|
+
return false if a.urls.none? { |u| u =~ /#{url}/ }
|
347
|
+
end
|
348
|
+
|
349
|
+
true
|
350
|
+
end
|
351
|
+
|
352
|
+
IS_UTF8 = !!(ENV["LC_ALL"] || ENV["LC_CTYPE"] || ENV["LANG"])["UTF-8"]
|
353
|
+
|
354
|
+
def display_app(a)
|
355
|
+
if simple_output?
|
356
|
+
puts a.name
|
357
|
+
return
|
358
|
+
end
|
359
|
+
|
360
|
+
puts ""
|
361
|
+
|
362
|
+
status = app_status(a)
|
363
|
+
|
364
|
+
puts "#{c(a.name, :name)}: #{status}"
|
365
|
+
|
366
|
+
puts " platform: #{b(a.framework)} on #{b(a.runtime)}"
|
367
|
+
|
368
|
+
print " usage: #{b(human_size(a.memory * 1024 * 1024, 0))}"
|
369
|
+
print " #{c(IS_UTF8 ? "\xc3\x97" : "x", :dim)} #{b(a.total_instances)}"
|
370
|
+
print " instance#{a.total_instances == 1 ? "" : "s"}"
|
371
|
+
puts ""
|
372
|
+
|
373
|
+
unless a.urls.empty?
|
374
|
+
puts " urls: #{a.urls.collect { |u| b(u) }.join(", ")}"
|
375
|
+
end
|
376
|
+
|
377
|
+
unless a.services.empty?
|
378
|
+
puts " services: #{a.services.collect { |s| b(s) }.join(", ")}"
|
379
|
+
end
|
380
|
+
end
|
381
|
+
|
382
|
+
def service_matches(s)
|
383
|
+
if name = options[:name]
|
384
|
+
return false if s.name !~ /#{name}/
|
385
|
+
end
|
386
|
+
|
387
|
+
if type = options[:type]
|
388
|
+
return false if s.type !~ /#{type}/
|
389
|
+
end
|
390
|
+
|
391
|
+
if vendor = options[:vendor]
|
392
|
+
return false if s.vendor !~ /#{vendor}/
|
393
|
+
end
|
394
|
+
|
395
|
+
if tier = options[:tier]
|
396
|
+
return false if s.tier !~ /#{tier}/
|
397
|
+
end
|
398
|
+
|
399
|
+
true
|
400
|
+
end
|
401
|
+
|
316
402
|
def display_service(s)
|
317
403
|
if simple_output?
|
318
404
|
puts s.name
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
data/lib/vmc/version.rb
ADDED
data/{vmc-ng/lib → lib}/vmc.rb
RENAMED
File without changes
|