vmc 0.4.0.beta.6 → 0.4.0.beta.7

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 (61) hide show
  1. data/bin/vmc +11 -10
  2. data/{LICENSE → vmc-ng/LICENSE} +0 -0
  3. data/{Rakefile → vmc-ng/Rakefile} +0 -0
  4. data/vmc-ng/bin/vmc +14 -0
  5. data/{lib → vmc-ng/lib}/vmc.rb +0 -0
  6. data/{lib → vmc-ng/lib}/vmc/cli.rb +0 -0
  7. data/{lib → vmc-ng/lib}/vmc/cli/app.rb +2 -2
  8. data/{lib → vmc-ng/lib}/vmc/cli/better_help.rb +0 -0
  9. data/{lib → vmc-ng/lib}/vmc/cli/command.rb +2 -2
  10. data/{lib → vmc-ng/lib}/vmc/cli/dots.rb +3 -1
  11. data/{lib → vmc-ng/lib}/vmc/cli/service.rb +0 -0
  12. data/{lib → vmc-ng/lib}/vmc/cli/user.rb +0 -0
  13. data/{lib → vmc-ng/lib}/vmc/constants.rb +0 -0
  14. data/{lib → vmc-ng/lib}/vmc/detect.rb +0 -0
  15. data/{lib → vmc-ng/lib}/vmc/errors.rb +0 -0
  16. data/{lib → vmc-ng/lib}/vmc/plugin.rb +0 -0
  17. data/vmc-ng/lib/vmc/version.rb +3 -0
  18. data/vmc/LICENSE +24 -0
  19. data/vmc/README.md +102 -0
  20. data/vmc/Rakefile +101 -0
  21. data/vmc/bin/vmc +6 -0
  22. data/vmc/caldecott_helper/Gemfile +10 -0
  23. data/vmc/caldecott_helper/Gemfile.lock +48 -0
  24. data/vmc/caldecott_helper/server.rb +43 -0
  25. data/vmc/config/clients.yml +17 -0
  26. data/vmc/config/micro/offline.conf +2 -0
  27. data/vmc/config/micro/paths.yml +22 -0
  28. data/vmc/config/micro/refresh_ip.rb +20 -0
  29. data/vmc/lib/cli.rb +47 -0
  30. data/vmc/lib/cli/commands/admin.rb +80 -0
  31. data/vmc/lib/cli/commands/apps.rb +1126 -0
  32. data/vmc/lib/cli/commands/base.rb +227 -0
  33. data/vmc/lib/cli/commands/manifest.rb +56 -0
  34. data/vmc/lib/cli/commands/micro.rb +115 -0
  35. data/vmc/lib/cli/commands/misc.rb +129 -0
  36. data/vmc/lib/cli/commands/services.rb +180 -0
  37. data/vmc/lib/cli/commands/user.rb +65 -0
  38. data/vmc/lib/cli/config.rb +173 -0
  39. data/vmc/lib/cli/console_helper.rb +160 -0
  40. data/vmc/lib/cli/core_ext.rb +122 -0
  41. data/vmc/lib/cli/errors.rb +19 -0
  42. data/vmc/lib/cli/frameworks.rb +265 -0
  43. data/vmc/lib/cli/manifest_helper.rb +302 -0
  44. data/vmc/lib/cli/runner.rb +531 -0
  45. data/vmc/lib/cli/services_helper.rb +84 -0
  46. data/vmc/lib/cli/tunnel_helper.rb +332 -0
  47. data/vmc/lib/cli/usage.rb +115 -0
  48. data/vmc/lib/cli/version.rb +7 -0
  49. data/vmc/lib/cli/zip_util.rb +77 -0
  50. data/vmc/lib/vmc.rb +3 -0
  51. data/vmc/lib/vmc/client.rb +471 -0
  52. data/vmc/lib/vmc/const.rb +22 -0
  53. data/vmc/lib/vmc/micro.rb +56 -0
  54. data/vmc/lib/vmc/micro/switcher/base.rb +97 -0
  55. data/vmc/lib/vmc/micro/switcher/darwin.rb +19 -0
  56. data/vmc/lib/vmc/micro/switcher/dummy.rb +15 -0
  57. data/vmc/lib/vmc/micro/switcher/linux.rb +16 -0
  58. data/vmc/lib/vmc/micro/switcher/windows.rb +31 -0
  59. data/vmc/lib/vmc/micro/vmrun.rb +158 -0
  60. metadata +266 -34
  61. data/lib/vmc/version.rb +0 -3
@@ -0,0 +1,22 @@
1
+ module VMC
2
+
3
+ # This is the internal VMC version number, and is not necessarily
4
+ # the same as the RubyGem version (VMC::Cli::VERSION).
5
+ VERSION = '0.3.2'
6
+
7
+ # Targets
8
+ DEFAULT_TARGET = 'https://api.cloudfoundry.com'
9
+ DEFAULT_LOCAL_TARGET = 'http://api.vcap.me'
10
+
11
+ # General Paths
12
+ INFO_PATH = 'info'
13
+ GLOBAL_SERVICES_PATH = ['info', 'services']
14
+ GLOBAL_RUNTIMES_PATH = ['info', 'runtimes']
15
+ RESOURCES_PATH = 'resources'
16
+
17
+ # User specific paths
18
+ APPS_PATH = 'apps'
19
+ SERVICES_PATH = 'services'
20
+ USERS_PATH = 'users'
21
+
22
+ end
@@ -0,0 +1,56 @@
1
+ require 'find'
2
+
3
+ module VMC::Micro
4
+ def config_file(file)
5
+ File.join(File.dirname(__FILE__), '..', '..', 'config', 'micro', file)
6
+ end
7
+
8
+ def escape_path(path)
9
+ path = File.expand_path(path)
10
+ if RUBY_PLATFORM =~ /mingw|mswin32|cygwin/
11
+ if path.include?(' ')
12
+ return '"' + path + '"'
13
+ else
14
+ return path
15
+ end
16
+ else
17
+ return path.gsub(' ', '\ ')
18
+ end
19
+ end
20
+
21
+ def locate_file(file, directory, search_paths)
22
+ search_paths.each do |path|
23
+ expanded_path = File.expand_path(path)
24
+ if File.exists?(expanded_path)
25
+ Find.find(expanded_path) do |current|
26
+ if File.directory?(current) && current.include?(directory)
27
+ full_path = File.join(current, file)
28
+ return self.escape_path(full_path) if File.exists?(full_path)
29
+ end
30
+ end
31
+ end
32
+ end
33
+
34
+ false
35
+ end
36
+
37
+ def run_command(command, args=nil)
38
+ # TODO switch to using posix-spawn instead
39
+ result = %x{#{command} #{args} 2>&1}
40
+ unless $?.exitstatus == 0
41
+ if block_given?
42
+ yield
43
+ else
44
+ raise "failed to execute #{command} #{args}:\n#{result}"
45
+ end
46
+ else
47
+ result.split(/\n/)
48
+ end
49
+ end
50
+
51
+ module_function :config_file
52
+ module_function :escape_path
53
+ module_function :locate_file
54
+ module_function :run_command
55
+
56
+ end
@@ -0,0 +1,97 @@
1
+ require 'interact'
2
+
3
+ module VMC::Micro::Switcher
4
+ class Base
5
+ include Interactive
6
+
7
+ def initialize(config)
8
+ @config = config
9
+
10
+ @vmrun = VMC::Micro::VMrun.new(config)
11
+ unless @vmrun.running?
12
+ if ask("Micro Cloud Foundry VM is not running. Do you want to start it?", :choices => ['y', 'n']) == 'y'
13
+ display "Starting Micro Cloud Foundry VM: ", false
14
+ @vmrun.start
15
+ say "done".green
16
+ else
17
+ err "Micro Cloud Foundry VM needs to be running."
18
+ end
19
+ end
20
+
21
+ err "Micro Cloud Foundry VM initial setup needs to be completed before using 'vmc micro'" unless @vmrun.ready?
22
+ end
23
+
24
+ def offline
25
+ unless @vmrun.offline?
26
+ # save online connection type so we can restore it later
27
+ @config['online_connection_type'] = @vmrun.connection_type
28
+
29
+ if (@config['online_connection_type'] != 'nat')
30
+ if ask("Reconfigure Micro Cloud Foundry VM network to nat mode and reboot?", :choices => ['y', 'n']) == 'y'
31
+ display "Rebooting Micro Cloud Foundry VM: ", false
32
+ @vmrun.connection_type = 'nat'
33
+ @vmrun.reset
34
+ say "done".green
35
+ else
36
+ err "Aborted"
37
+ end
38
+ end
39
+
40
+ display "Setting Micro Cloud Foundry VM to offline mode: ", false
41
+ @vmrun.offline!
42
+ say "done".green
43
+ display "Setting host DNS server: ", false
44
+
45
+ @config['domain'] = @vmrun.domain
46
+ @config['ip'] = @vmrun.ip
47
+ set_nameserver(@config['domain'], @config['ip'])
48
+ say "done".green
49
+ else
50
+ say "Micro Cloud Foundry VM already in offline mode".yellow
51
+ end
52
+ end
53
+
54
+ def online
55
+ if @vmrun.offline?
56
+ current_connection_type = @vmrun.connection_type
57
+ @config['online_connection_type'] ||= current_connection_type
58
+
59
+ if (@config['online_connection_type'] != current_connection_type)
60
+ # TODO handle missing connection type in saved config
61
+ question = "Reconfigure Micro Cloud Foundry VM network to #{@config['online_connection_type']} mode and reboot?"
62
+ if ask(question, :choices => ['y', 'n']) == 'y'
63
+ display "Rebooting Micro Cloud Foundry VM: ", false
64
+ @vmrun.connection_type = @config['online_connection_type']
65
+ @vmrun.reset
66
+ say "done".green
67
+ else
68
+ err "Aborted"
69
+ end
70
+ end
71
+
72
+ display "Unsetting host DNS server: ", false
73
+ # TODO handle missing domain and ip in saved config (look at the VM)
74
+ @config['domain'] ||= @vmrun.domain
75
+ @config['ip'] ||= @vmrun.ip
76
+ unset_nameserver(@config['domain'], @config['ip'])
77
+ say "done".green
78
+
79
+ display "Setting Micro Cloud Foundry VM to online mode: ", false
80
+ @vmrun.online!
81
+ say "done".green
82
+ else
83
+ say "Micro Cloud Foundry already in online mode".yellow
84
+ end
85
+ end
86
+
87
+ def status
88
+ mode = @vmrun.offline? ? 'offline' : 'online'
89
+ say "Micro Cloud Foundry VM currently in #{mode.green} mode"
90
+ # should the VMX path be unescaped?
91
+ say "VMX Path: #{@vmrun.vmx}"
92
+ say "Domain: #{@vmrun.domain.green}"
93
+ say "IP Address: #{@vmrun.ip.green}"
94
+ end
95
+ end
96
+
97
+ end
@@ -0,0 +1,19 @@
1
+ module VMC::Micro::Switcher
2
+
3
+ class Darwin < Base
4
+ def adminrun(command)
5
+ VMC::Micro.run_command("osascript", "-e 'do shell script \"#{command}\" with administrator privileges'")
6
+ end
7
+
8
+ def set_nameserver(domain, ip)
9
+ File.open("/tmp/#{domain}", 'w') { |file| file.write("nameserver #{ip}") }
10
+ adminrun("mkdir -p /etc/resolver;mv /tmp/#{domain} /etc/resolver/")
11
+ end
12
+
13
+ def unset_nameserver(domain, ip)
14
+ err "domain missing" unless domain
15
+ adminrun("rm -f /etc/resolver/#{domain}")
16
+ end
17
+ end
18
+
19
+ end
@@ -0,0 +1,15 @@
1
+ # only used for testing
2
+ module VMC::Micro::Switcher
3
+
4
+ class Dummy < Base
5
+ def adminrun(command)
6
+ end
7
+
8
+ def set_nameserver(domain, ip)
9
+ end
10
+
11
+ def unset_nameserver(domain, ip)
12
+ end
13
+ end
14
+
15
+ end
@@ -0,0 +1,16 @@
1
+ module VMC::Micro::Switcher
2
+
3
+ class Linux < Base
4
+ def set_nameserver(domain, ip)
5
+ VMC::Micro.run_command("sudo", "sed -i'.backup' '1 i nameserver #{ip}' /etc/resolv.conf")
6
+ # lock resolv.conf so Network Manager doesn't clear out the file when offline
7
+ VMC::Micro.run_command("sudo", "chattr +i /etc/resolv.conf")
8
+ end
9
+
10
+ def unset_nameserver(domain, ip)
11
+ VMC::Micro.run_command("sudo", "chattr -i /etc/resolv.conf")
12
+ VMC::Micro.run_command("sudo", "sed -i'.backup' '/#{ip}/d' /etc/resolv.conf")
13
+ end
14
+ end
15
+
16
+ end
@@ -0,0 +1,31 @@
1
+ module VMC::Micro::Switcher
2
+
3
+ class Windows < Base
4
+ def version?
5
+ VMC::Micro.run_command("cmd", "/c ver").to_s.scan(/\d+\.\d+/).first.to_f
6
+ end
7
+
8
+ def adminrun(command, args=nil)
9
+ if version? > 5.2
10
+ require 'win32ole'
11
+ shell = WIN32OLE.new("Shell.Application")
12
+ shell.ShellExecute(command, args, nil, "runas", 0)
13
+ else
14
+ # on older version this will try to run the command, and if you don't have
15
+ # admin privilges it will tell you so and exit
16
+ VMC::Micro.run_command(command, args)
17
+ end
18
+ end
19
+
20
+ # TODO better method to figure out the interface name is to get the NAT ip and find the
21
+ # interface with the correct subnet
22
+ def set_nameserver(domain, ip)
23
+ adminrun("netsh", "interface ip set dns \"VMware Network Adapter VMnet8\" static #{ip}")
24
+ end
25
+
26
+ def unset_nameserver(domain, ip)
27
+ adminrun("netsh", "interface ip set dns \"VMware Network Adapter VMnet8\" static none")
28
+ end
29
+ end
30
+
31
+ end
@@ -0,0 +1,158 @@
1
+ module VMC::Micro
2
+ class VMrun
3
+ attr_reader :vmx, :vmrun
4
+
5
+ def initialize(config)
6
+ @platform = config['platform']
7
+ @user = 'root' # must use root as we muck around with system settings
8
+ @password = config['password']
9
+ @vmrun = config['vmrun']
10
+ @vmx = config['vmx']
11
+
12
+ # TODO honor TMPDIR
13
+ if @platform == :windows
14
+ @temp_dir = ENV['temp']
15
+ else
16
+ @temp_dir = '/tmp'
17
+ end
18
+ end
19
+
20
+ def connection_type
21
+ read_variable('ethernet0.connectionType')
22
+ end
23
+
24
+ def connection_type=(type)
25
+ write_variable("ethernet0.connectionType", type)
26
+ end
27
+
28
+ def nat?
29
+ connection_type == "nat"
30
+ end
31
+
32
+ def bridged?
33
+ connection_type == "bridged"
34
+ end
35
+
36
+ def domain
37
+ # switch to Dir.mktmpdir
38
+ state_config = VMC::Micro.escape_path(File.join(@temp_dir, 'state.yml'))
39
+ run('CopyFileFromGuestToHost', "/var/vcap/bosh/state.yml #{state_config}")
40
+ bosh_config = YAML.load_file(state_config)
41
+ bosh_config['properties']['domain']
42
+ end
43
+
44
+ def ip
45
+ # switch to Dir.mktmpdir
46
+ path = VMC::Micro.escape_path(VMC::Micro.config_file('refresh_ip.rb'))
47
+ ip_file = VMC::Micro.escape_path(File.join(@temp_dir, 'ip.txt'))
48
+ run('CopyFileFromHostToGuest', "#{path} /tmp/refresh_ip.rb")
49
+ run('runProgramInGuest', '/tmp/refresh_ip.rb')
50
+ run('CopyFileFromGuestToHost', "/tmp/ip.txt #{ip_file}")
51
+ File.open(ip_file, 'r') { |file| file.read }
52
+ end
53
+
54
+ def list
55
+ vms = run("list")
56
+ vms.delete_if { |line| line =~ /^Total/ }
57
+ vms.map { |line| VMC::Micro.escape_path(File.expand_path(line)) }
58
+ end
59
+
60
+ def offline?
61
+ command = "-gu #{@user} -gp #{@password} runProgramInGuest"
62
+ args = '/usr/bin/test -e /var/vcap/micro/offline'
63
+ # why not use run_command?
64
+ result = %x{#{@vmrun} #{command} #{@vmx} #{args}}
65
+
66
+ if result.include?('Guest program exited with non-zero exit code: 1')
67
+ return false
68
+ elsif $?.exitstatus == 0
69
+ return true
70
+ else
71
+ raise "failed to execute vmrun:\n#{result}"
72
+ end
73
+ end
74
+
75
+ def offline!
76
+ path = VMC::Micro.escape_path(VMC::Micro.config_file('offline.conf'))
77
+ run('CopyFileFromHostToGuest', "#{path} /etc/dnsmasq.d/offline.conf")
78
+ run('runProgramInGuest', '/usr/bin/touch /var/vcap/micro/offline')
79
+ restart_dnsmasq
80
+ end
81
+
82
+ def online!
83
+ run('runProgramInGuest', '/bin/rm -f /etc/dnsmasq.d/offline.conf')
84
+ run('runProgramInGuest', '/bin/rm -f /var/vcap/micro/offline')
85
+ restart_dnsmasq
86
+ end
87
+
88
+ # check to see if the micro cloud has been configured
89
+ # uses default password to check
90
+ def ready?
91
+ command = "-gu root -gp 'ca$hc0w' runProgramInGuest"
92
+ args = '/usr/bin/test -e /var/vcap/micro/micro.json'
93
+ result = %x{#{@vmrun} #{command} #{@vmx} #{args}}
94
+
95
+ if result.include?('Invalid user name or password for the guest OS') || $?.exitstatus == 0
96
+ return true
97
+ elsif $?.exitstatus == 1
98
+ return false
99
+ else
100
+ raise "failed to execute vmrun:\n#{result}"
101
+ end
102
+ end
103
+
104
+ def read_variable(var)
105
+ # TODO deal with non-ok return
106
+ run("readVariable", "runtimeConfig #{var}").first
107
+ end
108
+
109
+ def write_variable(var, value)
110
+ run('writeVariable', "runtimeConfig #{var} #{value}")
111
+ end
112
+
113
+ def reset
114
+ run('reset', 'soft')
115
+ end
116
+
117
+ def restart_dnsmasq
118
+ # restart command doesn't always work, start and stop seems to be more reliable
119
+ run('runProgramInGuest', '/etc/init.d/dnsmasq stop')
120
+ run('runProgramInGuest', '/etc/init.d/dnsmasq start')
121
+ end
122
+
123
+ def run(command, args=nil)
124
+ if command.include?('Guest')
125
+ command = "-gu #{@user} -gp #{@password} #{command}"
126
+ end
127
+ VMC::Micro.run_command(@vmrun, "#{command} #{@vmx} #{args}")
128
+ end
129
+
130
+ def running?
131
+ vms = list
132
+ if @platform == :windows
133
+ vms.map! { |x| x.downcase }
134
+ vms.include?(@vmx.downcase)
135
+ else
136
+ vms.include?(@vmx)
137
+ end
138
+ end
139
+
140
+ def start
141
+ run('start') unless running?
142
+ end
143
+
144
+ def stop
145
+ run('stop') if running?
146
+ end
147
+
148
+ def self.locate(platform)
149
+ paths = YAML.load_file(VMC::Micro.config_file('paths.yml'))
150
+ vmrun_paths = paths[platform.to_s]['vmrun']
151
+ vmrun_exe = @platform == :windows ? 'vmrun.exe' : 'vmrun'
152
+ vmrun = VMC::Micro.locate_file(vmrun_exe, "VMware", vmrun_paths)
153
+ err "Unable to locate vmrun, please supply --vmrun option" unless vmrun
154
+ vmrun
155
+ end
156
+ end
157
+
158
+ end
metadata CHANGED
@@ -1,28 +1,218 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: vmc
3
3
  version: !ruby/object:Gem::Version
4
- hash: 62196463
4
+ hash: 62196461
5
5
  prerelease: 6
6
6
  segments:
7
7
  - 0
8
8
  - 4
9
9
  - 0
10
10
  - beta
11
- - 6
12
- version: 0.4.0.beta.6
11
+ - 7
12
+ version: 0.4.0.beta.7
13
13
  platform: ruby
14
14
  authors:
15
- - Alex Suraci
15
+ - VMware
16
16
  autorequire:
17
17
  bindir: bin
18
18
  cert_chain: []
19
19
 
20
- date: 2012-06-06 00:00:00 Z
20
+ date: 2012-06-08 00:00:00 Z
21
21
  dependencies:
22
22
  - !ruby/object:Gem::Dependency
23
23
  name: json_pure
24
24
  prerelease: false
25
25
  requirement: &id001 !ruby/object:Gem::Requirement
26
+ none: false
27
+ requirements:
28
+ - - <
29
+ - !ruby/object:Gem::Version
30
+ hash: 11
31
+ segments:
32
+ - 1
33
+ - 7
34
+ - 0
35
+ version: 1.7.0
36
+ - - ">="
37
+ - !ruby/object:Gem::Version
38
+ hash: 1
39
+ segments:
40
+ - 1
41
+ - 5
42
+ - 1
43
+ version: 1.5.1
44
+ type: :runtime
45
+ version_requirements: *id001
46
+ - !ruby/object:Gem::Dependency
47
+ name: rubyzip
48
+ prerelease: false
49
+ requirement: &id002 !ruby/object:Gem::Requirement
50
+ none: false
51
+ requirements:
52
+ - - ~>
53
+ - !ruby/object:Gem::Version
54
+ hash: 51
55
+ segments:
56
+ - 0
57
+ - 9
58
+ - 4
59
+ version: 0.9.4
60
+ type: :runtime
61
+ version_requirements: *id002
62
+ - !ruby/object:Gem::Dependency
63
+ name: rest-client
64
+ prerelease: false
65
+ requirement: &id003 !ruby/object:Gem::Requirement
66
+ none: false
67
+ requirements:
68
+ - - <
69
+ - !ruby/object:Gem::Version
70
+ hash: 11
71
+ segments:
72
+ - 1
73
+ - 7
74
+ - 0
75
+ version: 1.7.0
76
+ - - ">="
77
+ - !ruby/object:Gem::Version
78
+ hash: 13
79
+ segments:
80
+ - 1
81
+ - 6
82
+ - 1
83
+ version: 1.6.1
84
+ type: :runtime
85
+ version_requirements: *id003
86
+ - !ruby/object:Gem::Dependency
87
+ name: terminal-table
88
+ prerelease: false
89
+ requirement: &id004 !ruby/object:Gem::Requirement
90
+ none: false
91
+ requirements:
92
+ - - ~>
93
+ - !ruby/object:Gem::Version
94
+ hash: 3
95
+ segments:
96
+ - 1
97
+ - 4
98
+ - 2
99
+ version: 1.4.2
100
+ type: :runtime
101
+ version_requirements: *id004
102
+ - !ruby/object:Gem::Dependency
103
+ name: interact
104
+ prerelease: false
105
+ requirement: &id005 !ruby/object:Gem::Requirement
106
+ none: false
107
+ requirements:
108
+ - - ~>
109
+ - !ruby/object:Gem::Version
110
+ hash: 15
111
+ segments:
112
+ - 0
113
+ - 4
114
+ - 0
115
+ version: 0.4.0
116
+ type: :runtime
117
+ version_requirements: *id005
118
+ - !ruby/object:Gem::Dependency
119
+ name: addressable
120
+ prerelease: false
121
+ requirement: &id006 !ruby/object:Gem::Requirement
122
+ none: false
123
+ requirements:
124
+ - - ~>
125
+ - !ruby/object:Gem::Version
126
+ hash: 11
127
+ segments:
128
+ - 2
129
+ - 2
130
+ - 6
131
+ version: 2.2.6
132
+ type: :runtime
133
+ version_requirements: *id006
134
+ - !ruby/object:Gem::Dependency
135
+ name: uuidtools
136
+ prerelease: false
137
+ requirement: &id007 !ruby/object:Gem::Requirement
138
+ none: false
139
+ requirements:
140
+ - - ~>
141
+ - !ruby/object:Gem::Version
142
+ hash: 11
143
+ segments:
144
+ - 2
145
+ - 1
146
+ - 0
147
+ version: 2.1.0
148
+ type: :runtime
149
+ version_requirements: *id007
150
+ - !ruby/object:Gem::Dependency
151
+ name: rb-readline
152
+ prerelease: false
153
+ requirement: &id008 !ruby/object:Gem::Requirement
154
+ none: false
155
+ requirements:
156
+ - - ~>
157
+ - !ruby/object:Gem::Version
158
+ hash: 11
159
+ segments:
160
+ - 0
161
+ - 4
162
+ - 2
163
+ version: 0.4.2
164
+ type: :runtime
165
+ version_requirements: *id008
166
+ - !ruby/object:Gem::Dependency
167
+ name: rake
168
+ prerelease: false
169
+ requirement: &id009 !ruby/object:Gem::Requirement
170
+ none: false
171
+ requirements:
172
+ - - ">="
173
+ - !ruby/object:Gem::Version
174
+ hash: 3
175
+ segments:
176
+ - 0
177
+ version: "0"
178
+ type: :runtime
179
+ version_requirements: *id009
180
+ - !ruby/object:Gem::Dependency
181
+ name: rspec
182
+ prerelease: false
183
+ requirement: &id010 !ruby/object:Gem::Requirement
184
+ none: false
185
+ requirements:
186
+ - - ~>
187
+ - !ruby/object:Gem::Version
188
+ hash: 27
189
+ segments:
190
+ - 1
191
+ - 3
192
+ - 0
193
+ version: 1.3.0
194
+ type: :runtime
195
+ version_requirements: *id010
196
+ - !ruby/object:Gem::Dependency
197
+ name: webmock
198
+ prerelease: false
199
+ requirement: &id011 !ruby/object:Gem::Requirement
200
+ none: false
201
+ requirements:
202
+ - - ~>
203
+ - !ruby/object:Gem::Version
204
+ hash: 3
205
+ segments:
206
+ - 1
207
+ - 5
208
+ - 0
209
+ version: 1.5.0
210
+ type: :runtime
211
+ version_requirements: *id011
212
+ - !ruby/object:Gem::Dependency
213
+ name: json_pure
214
+ prerelease: false
215
+ requirement: &id012 !ruby/object:Gem::Requirement
26
216
  none: false
27
217
  requirements:
28
218
  - - ~>
@@ -34,11 +224,11 @@ dependencies:
34
224
  - 5
35
225
  version: 1.6.5
36
226
  type: :runtime
37
- version_requirements: *id001
227
+ version_requirements: *id012
38
228
  - !ruby/object:Gem::Dependency
39
229
  name: interact
40
230
  prerelease: false
41
- requirement: &id002 !ruby/object:Gem::Requirement
231
+ requirement: &id013 !ruby/object:Gem::Requirement
42
232
  none: false
43
233
  requirements:
44
234
  - - ~>
@@ -50,11 +240,11 @@ dependencies:
50
240
  - 1
51
241
  version: 0.4.1
52
242
  type: :runtime
53
- version_requirements: *id002
243
+ version_requirements: *id013
54
244
  - !ruby/object:Gem::Dependency
55
245
  name: cfoundry
56
246
  prerelease: false
57
- requirement: &id003 !ruby/object:Gem::Requirement
247
+ requirement: &id014 !ruby/object:Gem::Requirement
58
248
  none: false
59
249
  requirements:
60
250
  - - ~>
@@ -66,11 +256,11 @@ dependencies:
66
256
  - 0
67
257
  version: 0.2.0
68
258
  type: :runtime
69
- version_requirements: *id003
259
+ version_requirements: *id014
70
260
  - !ruby/object:Gem::Dependency
71
261
  name: thor
72
262
  prerelease: false
73
- requirement: &id004 !ruby/object:Gem::Requirement
263
+ requirement: &id015 !ruby/object:Gem::Requirement
74
264
  none: false
75
265
  requirements:
76
266
  - - ~>
@@ -82,11 +272,11 @@ dependencies:
82
272
  - 6
83
273
  version: 0.14.6
84
274
  type: :runtime
85
- version_requirements: *id004
275
+ version_requirements: *id015
86
276
  - !ruby/object:Gem::Dependency
87
277
  name: manifests-vmc-plugin
88
278
  prerelease: false
89
- requirement: &id005 !ruby/object:Gem::Requirement
279
+ requirement: &id016 !ruby/object:Gem::Requirement
90
280
  none: false
91
281
  requirements:
92
282
  - - ~>
@@ -98,10 +288,9 @@ dependencies:
98
288
  - 0
99
289
  version: 0.2.0
100
290
  type: :runtime
101
- version_requirements: *id005
291
+ version_requirements: *id016
102
292
  description:
103
- email:
104
- - asuraci@vmware.com
293
+ email: support@vmware.com
105
294
  executables:
106
295
  - vmc
107
296
  extensions: []
@@ -109,23 +298,66 @@ extensions: []
109
298
  extra_rdoc_files: []
110
299
 
111
300
  files:
112
- - LICENSE
113
- - Rakefile
114
- - lib/vmc/cli/app.rb
115
- - lib/vmc/cli/better_help.rb
116
- - lib/vmc/cli/command.rb
117
- - lib/vmc/cli/dots.rb
118
- - lib/vmc/cli/service.rb
119
- - lib/vmc/cli/user.rb
120
- - lib/vmc/cli.rb
121
- - lib/vmc/constants.rb
122
- - lib/vmc/detect.rb
123
- - lib/vmc/errors.rb
124
- - lib/vmc/plugin.rb
125
- - lib/vmc/version.rb
126
- - lib/vmc.rb
301
+ - vmc/LICENSE
302
+ - vmc/README.md
303
+ - vmc/Rakefile
304
+ - vmc/config/clients.yml
305
+ - vmc/config/micro/offline.conf
306
+ - vmc/config/micro/paths.yml
307
+ - vmc/config/micro/refresh_ip.rb
308
+ - vmc/lib/cli/commands/admin.rb
309
+ - vmc/lib/cli/commands/apps.rb
310
+ - vmc/lib/cli/commands/base.rb
311
+ - vmc/lib/cli/commands/manifest.rb
312
+ - vmc/lib/cli/commands/micro.rb
313
+ - vmc/lib/cli/commands/misc.rb
314
+ - vmc/lib/cli/commands/services.rb
315
+ - vmc/lib/cli/commands/user.rb
316
+ - vmc/lib/cli/config.rb
317
+ - vmc/lib/cli/console_helper.rb
318
+ - vmc/lib/cli/core_ext.rb
319
+ - vmc/lib/cli/errors.rb
320
+ - vmc/lib/cli/frameworks.rb
321
+ - vmc/lib/cli/manifest_helper.rb
322
+ - vmc/lib/cli/runner.rb
323
+ - vmc/lib/cli/services_helper.rb
324
+ - vmc/lib/cli/tunnel_helper.rb
325
+ - vmc/lib/cli/usage.rb
326
+ - vmc/lib/cli/version.rb
327
+ - vmc/lib/cli/zip_util.rb
328
+ - vmc/lib/cli.rb
329
+ - vmc/lib/vmc/client.rb
330
+ - vmc/lib/vmc/const.rb
331
+ - vmc/lib/vmc/micro/switcher/base.rb
332
+ - vmc/lib/vmc/micro/switcher/darwin.rb
333
+ - vmc/lib/vmc/micro/switcher/dummy.rb
334
+ - vmc/lib/vmc/micro/switcher/linux.rb
335
+ - vmc/lib/vmc/micro/switcher/windows.rb
336
+ - vmc/lib/vmc/micro/vmrun.rb
337
+ - vmc/lib/vmc/micro.rb
338
+ - vmc/lib/vmc.rb
339
+ - vmc/caldecott_helper/Gemfile
340
+ - vmc/caldecott_helper/Gemfile.lock
341
+ - vmc/caldecott_helper/server.rb
342
+ - vmc/bin/vmc
343
+ - vmc-ng/LICENSE
344
+ - vmc-ng/Rakefile
345
+ - vmc-ng/lib/vmc/cli/app.rb
346
+ - vmc-ng/lib/vmc/cli/better_help.rb
347
+ - vmc-ng/lib/vmc/cli/command.rb
348
+ - vmc-ng/lib/vmc/cli/dots.rb
349
+ - vmc-ng/lib/vmc/cli/service.rb
350
+ - vmc-ng/lib/vmc/cli/user.rb
351
+ - vmc-ng/lib/vmc/cli.rb
352
+ - vmc-ng/lib/vmc/constants.rb
353
+ - vmc-ng/lib/vmc/detect.rb
354
+ - vmc-ng/lib/vmc/errors.rb
355
+ - vmc-ng/lib/vmc/plugin.rb
356
+ - vmc-ng/lib/vmc/version.rb
357
+ - vmc-ng/lib/vmc.rb
358
+ - vmc-ng/bin/vmc
127
359
  - bin/vmc
128
- homepage: http://cloudfoundry.com/
360
+ homepage: http://vmware.com
129
361
  licenses: []
130
362
 
131
363
  post_install_message:
@@ -155,10 +387,10 @@ required_rubygems_version: !ruby/object:Gem::Requirement
155
387
  version: 1.3.1
156
388
  requirements: []
157
389
 
158
- rubyforge_project: vmc
390
+ rubyforge_project:
159
391
  rubygems_version: 1.8.23
160
392
  signing_key:
161
393
  specification_version: 3
162
- summary: Friendly command-line interface for Cloud Foundry.
394
+ summary: Client library and CLI that provides access to the VMware Cloud Application Platform.
163
395
  test_files: []
164
396