jdc 0.2.1 → 0.2.2.pre

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 (151) hide show
  1. data/LICENSE +1277 -24
  2. data/Rakefile +13 -0
  3. data/bin/jdc +12 -2
  4. data/lib/admin/README.md +15 -0
  5. data/lib/admin/curl.rb +60 -0
  6. data/lib/admin/guid.rb +89 -0
  7. data/lib/admin/plugin.rb +6 -0
  8. data/lib/admin/service_auth_token.rb +94 -0
  9. data/lib/admin/service_broker/add.rb +47 -0
  10. data/lib/admin/service_broker/service_brokers.rb +24 -0
  11. data/lib/admin/set_quota.rb +44 -0
  12. data/lib/console/README.md +8 -0
  13. data/lib/console/console.rb +187 -0
  14. data/lib/console/plugin.rb +33 -0
  15. data/lib/jdc.rb +15 -2
  16. data/lib/jdc/cli.rb +556 -0
  17. data/lib/jdc/cli/app/app.rb +43 -0
  18. data/lib/jdc/cli/app/apps.rb +87 -0
  19. data/lib/jdc/cli/app/base.rb +72 -0
  20. data/lib/jdc/cli/app/delete.rb +95 -0
  21. data/lib/jdc/cli/app/deprecated.rb +11 -0
  22. data/lib/jdc/cli/app/env.rb +78 -0
  23. data/lib/jdc/cli/app/events.rb +45 -0
  24. data/lib/jdc/cli/app/files.rb +137 -0
  25. data/lib/jdc/cli/app/health.rb +26 -0
  26. data/lib/jdc/cli/app/instances.rb +53 -0
  27. data/lib/jdc/cli/app/logs.rb +76 -0
  28. data/lib/jdc/cli/app/push.rb +103 -0
  29. data/lib/jdc/cli/app/push/create.rb +108 -0
  30. data/lib/jdc/cli/app/push/interactions.rb +86 -0
  31. data/lib/jdc/cli/app/push/sync.rb +57 -0
  32. data/lib/jdc/cli/app/rename.rb +35 -0
  33. data/lib/jdc/cli/app/restart.rb +31 -0
  34. data/lib/jdc/cli/app/scale.rb +63 -0
  35. data/lib/jdc/cli/app/start.rb +161 -0
  36. data/lib/jdc/cli/app/stats.rb +67 -0
  37. data/lib/jdc/cli/app/stop.rb +27 -0
  38. data/lib/jdc/cli/domain/base.rb +9 -0
  39. data/lib/jdc/cli/domain/domains.rb +40 -0
  40. data/lib/jdc/cli/domain/map.rb +55 -0
  41. data/lib/jdc/cli/domain/unmap.rb +56 -0
  42. data/lib/jdc/cli/help.rb +15 -0
  43. data/lib/jdc/cli/interactive.rb +105 -0
  44. data/lib/jdc/cli/login_requirements.rb +15 -0
  45. data/lib/jdc/cli/organization/base.rb +14 -0
  46. data/lib/jdc/cli/organization/create.rb +37 -0
  47. data/lib/jdc/cli/organization/delete.rb +63 -0
  48. data/lib/jdc/cli/organization/org.rb +45 -0
  49. data/lib/jdc/cli/organization/orgs.rb +30 -0
  50. data/lib/jdc/cli/organization/rename.rb +37 -0
  51. data/lib/jdc/cli/populators/base.rb +16 -0
  52. data/lib/jdc/cli/populators/organization.rb +32 -0
  53. data/lib/jdc/cli/populators/populator_methods.rb +64 -0
  54. data/lib/jdc/cli/populators/space.rb +33 -0
  55. data/lib/jdc/cli/populators/target.rb +13 -0
  56. data/lib/jdc/cli/route/base.rb +9 -0
  57. data/lib/jdc/cli/route/delete.rb +28 -0
  58. data/lib/jdc/cli/route/map.rb +68 -0
  59. data/lib/jdc/cli/route/routes.rb +26 -0
  60. data/lib/jdc/cli/route/unmap.rb +56 -0
  61. data/lib/jdc/cli/service/base.rb +9 -0
  62. data/lib/jdc/cli/service/bind.rb +44 -0
  63. data/lib/jdc/cli/service/create.rb +159 -0
  64. data/lib/jdc/cli/service/delete.rb +83 -0
  65. data/lib/jdc/cli/service/rename.rb +36 -0
  66. data/lib/jdc/cli/service/service.rb +42 -0
  67. data/lib/jdc/cli/service/service_instance_helper.rb +99 -0
  68. data/lib/jdc/cli/service/services.rb +111 -0
  69. data/lib/jdc/cli/service/unbind.rb +37 -0
  70. data/lib/jdc/cli/space/base.rb +29 -0
  71. data/lib/jdc/cli/space/create.rb +67 -0
  72. data/lib/jdc/cli/space/delete.rb +56 -0
  73. data/lib/jdc/cli/space/rename.rb +38 -0
  74. data/lib/jdc/cli/space/space.rb +66 -0
  75. data/lib/jdc/cli/space/spaces.rb +57 -0
  76. data/lib/jdc/cli/space/switch.rb +19 -0
  77. data/lib/jdc/cli/start/base.rb +41 -0
  78. data/lib/jdc/cli/start/colors.rb +13 -0
  79. data/lib/jdc/cli/start/target.rb +50 -0
  80. data/lib/jdc/cli/start/target_prettifier.rb +17 -0
  81. data/lib/jdc/cli/start/targets.rb +16 -0
  82. data/lib/jdc/cli/user/base.rb +30 -0
  83. data/lib/jdc/cli/user/create.rb +52 -0
  84. data/lib/jdc/cli/user/passwd.rb +37 -0
  85. data/lib/jdc/cli/user/register.rb +43 -0
  86. data/lib/jdc/cli/user/users.rb +32 -0
  87. data/lib/jdc/constants.rb +11 -0
  88. data/lib/jdc/errors.rb +19 -0
  89. data/lib/jdc/object_extensions.rb +15 -0
  90. data/lib/jdc/plugin.rb +56 -0
  91. data/lib/jdc/spacing.rb +89 -0
  92. data/lib/jdc/spec_helper.rb +1 -0
  93. data/lib/jdc/test_support.rb +6 -0
  94. data/lib/jdc/version.rb +3 -0
  95. data/lib/manifests/errors.rb +35 -0
  96. data/lib/manifests/loader.rb +31 -0
  97. data/lib/manifests/loader/builder.rb +39 -0
  98. data/lib/manifests/loader/normalizer.rb +145 -0
  99. data/lib/manifests/loader/resolver.rb +79 -0
  100. data/lib/manifests/manifests.rb +344 -0
  101. data/lib/manifests/plugin.rb +140 -0
  102. data/lib/micro/README.md +9 -0
  103. data/lib/micro/errors.rb +4 -0
  104. data/lib/{jdc → micro}/micro.rb +15 -15
  105. data/lib/micro/plugin.rb +197 -0
  106. data/lib/micro/switcher/base.rb +79 -0
  107. data/lib/{jdc/micro → micro}/switcher/darwin.rb +5 -3
  108. data/lib/{jdc/micro → micro}/switcher/dummy.rb +1 -1
  109. data/lib/micro/switcher/linux.rb +16 -0
  110. data/lib/{jdc/micro → micro}/switcher/windows.rb +5 -5
  111. data/lib/{jdc/micro → micro}/vmrun.rb +26 -19
  112. data/lib/tasks/gem_release.rake +42 -0
  113. data/lib/tunnel/README.md +29 -0
  114. data/{config → lib/tunnel/config}/clients.yml +2 -2
  115. data/lib/tunnel/helper-app/Gemfile +10 -0
  116. data/lib/tunnel/helper-app/Gemfile.lock +48 -0
  117. data/{caldecott_helper → lib/tunnel/helper-app}/server.rb +5 -5
  118. data/lib/tunnel/plugin.rb +183 -0
  119. data/lib/tunnel/tunnel.rb +295 -0
  120. metadata +371 -210
  121. data/README.md +0 -102
  122. data/config/micro/paths.yml +0 -22
  123. data/config/micro/refresh_ip.rb +0 -20
  124. data/lib/cli.rb +0 -53
  125. data/lib/cli/commands/admin.rb +0 -58
  126. data/lib/cli/commands/apps.rb +0 -1129
  127. data/lib/cli/commands/base.rb +0 -228
  128. data/lib/cli/commands/manifest.rb +0 -56
  129. data/lib/cli/commands/micro.rb +0 -115
  130. data/lib/cli/commands/misc.rb +0 -126
  131. data/lib/cli/commands/services.rb +0 -178
  132. data/lib/cli/commands/user.rb +0 -14
  133. data/lib/cli/config.rb +0 -173
  134. data/lib/cli/console_helper.rb +0 -170
  135. data/lib/cli/core_ext.rb +0 -122
  136. data/lib/cli/errors.rb +0 -19
  137. data/lib/cli/frameworks.rb +0 -265
  138. data/lib/cli/manifest_helper.rb +0 -300
  139. data/lib/cli/runner.rb +0 -505
  140. data/lib/cli/services_helper.rb +0 -84
  141. data/lib/cli/tunnel_helper.rb +0 -332
  142. data/lib/cli/usage.rb +0 -86
  143. data/lib/cli/version.rb +0 -7
  144. data/lib/cli/zip_util.rb +0 -77
  145. data/lib/jdc/client.rb +0 -457
  146. data/lib/jdc/const.rb +0 -25
  147. data/lib/jdc/micro/switcher/base.rb +0 -97
  148. data/lib/jdc/micro/switcher/linux.rb +0 -16
  149. data/lib/jdc/signature/version.rb +0 -27
  150. data/lib/jdc/signer.rb +0 -13
  151. data/lib/jdc/timer.rb +0 -12
@@ -0,0 +1,295 @@
1
+ require "addressable/uri"
2
+ require "restclient"
3
+ require "uuidtools"
4
+
5
+ require "caldecott-client"
6
+
7
+ class JDCTunnel
8
+ HELPER_NAME = "caldecott"
9
+ HELPER_APP = File.expand_path("../helper-app", __FILE__)
10
+
11
+ # bump this AND the version info reported by HELPER_APP/server.rb
12
+ # this is to keep the helper in sync with any updates here
13
+ HELPER_VERSION = "0.0.4"
14
+
15
+ def initialize(client, service, port = 10000)
16
+ @client = client
17
+ @service = service
18
+ @port = port
19
+ end
20
+
21
+ def open!
22
+ if helper
23
+ auth = helper_auth
24
+
25
+ unless helper_healthy?(auth)
26
+ delete_helper
27
+ auth = create_helper
28
+ end
29
+ else
30
+ auth = create_helper
31
+ end
32
+
33
+ bind_to_helper if @service && !helper_already_binds?
34
+
35
+ info = get_connection_info(auth)
36
+
37
+ start_tunnel(info, auth)
38
+
39
+ info
40
+ end
41
+
42
+ def wait_for_start
43
+ 10.times do |n|
44
+ begin
45
+ TCPSocket.open("localhost", @port).close
46
+ return true
47
+ rescue => e
48
+ sleep 1
49
+ end
50
+ end
51
+
52
+ raise "Could not connect to local tunnel."
53
+ end
54
+
55
+ def wait_for_end
56
+ if @local_tunnel_thread
57
+ @local_tunnel_thread.join
58
+ else
59
+ raise "Tunnel wasn't started!"
60
+ end
61
+ end
62
+
63
+ PORT_RANGE = 10
64
+ def pick_port!(port = @port)
65
+ original = port
66
+
67
+ PORT_RANGE.times do |n|
68
+ begin
69
+ TCPSocket.open("localhost", port)
70
+ port += 1
71
+ rescue
72
+ return @port = port
73
+ end
74
+ end
75
+
76
+ @port = grab_ephemeral_port
77
+ end
78
+
79
+ private
80
+
81
+ def helper
82
+ @helper ||= @client.app_by_name(HELPER_NAME)
83
+ end
84
+
85
+ def create_helper
86
+ auth = UUIDTools::UUID.random_create.to_s
87
+ push_helper(auth)
88
+ start_helper
89
+ auth
90
+ end
91
+
92
+ def helper_auth
93
+ helper.env["CALDECOTT_AUTH"]
94
+ end
95
+
96
+ def helper_healthy?(token)
97
+ return false unless helper.healthy?
98
+
99
+ begin
100
+ response = RestClient.get(
101
+ "#{helper_url}/info",
102
+ "Auth-Token" => token
103
+ )
104
+
105
+ info = JSON.parse(response)
106
+ if info["version"] == HELPER_VERSION
107
+ true
108
+ else
109
+ stop_helper
110
+ false
111
+ end
112
+ rescue RestClient::Exception
113
+ stop_helper
114
+ false
115
+ end
116
+ end
117
+
118
+ def helper_already_binds?
119
+ helper.binds? @service
120
+ end
121
+
122
+ def push_helper(token)
123
+ app = @client.app
124
+ app.name = HELPER_NAME
125
+ app.command = "bundle exec ruby server.rb"
126
+ app.total_instances = 1
127
+ app.memory = 128
128
+ app.env = {"CALDECOTT_AUTH" => token}
129
+
130
+ space = app.space = @client.current_space
131
+ app.create!
132
+
133
+ app.bind(@service) if @service
134
+
135
+ domain = @client.domains.find { |d| d.owning_organization == nil }
136
+
137
+ app.create_route(:domain => domain, :space => space, :host => random_helper_url)
138
+
139
+ begin
140
+ app.upload(HELPER_APP)
141
+ invalidate_tunnel_app_info
142
+ rescue
143
+ app.delete!
144
+ raise
145
+ end
146
+ end
147
+
148
+ def delete_helper
149
+ helper.delete!
150
+ invalidate_tunnel_app_info
151
+ end
152
+
153
+ def stop_helper
154
+ helper.stop!
155
+ invalidate_tunnel_app_info
156
+ end
157
+
158
+ TUNNEL_CHECK_LIMIT = 60
159
+ def start_helper
160
+ helper.start!
161
+
162
+ seconds = 0
163
+ until helper.healthy?
164
+ sleep 1
165
+ seconds += 1
166
+ if seconds == TUNNEL_CHECK_LIMIT
167
+ raise "Helper application failed to start."
168
+ end
169
+ end
170
+
171
+ invalidate_tunnel_app_info
172
+ end
173
+
174
+ def bind_to_helper
175
+ helper.bind(@service)
176
+ helper.restart!
177
+ end
178
+
179
+ def invalidate_tunnel_app_info
180
+ @helper_url = nil
181
+ @helper = nil
182
+ end
183
+
184
+ def helper_url
185
+ return @helper_url if @helper_url
186
+
187
+ tun_url = helper.url
188
+
189
+ ["https", "http"].each do |scheme|
190
+ url = "#{scheme}://#{tun_url}"
191
+ begin
192
+ RestClient.get(url)
193
+
194
+ # https failed
195
+ rescue Errno::ECONNREFUSED
196
+
197
+ # we expect a 404 since this request isn't auth'd
198
+ rescue RestClient::ResourceNotFound
199
+ return @helper_url = url
200
+ end
201
+ end
202
+
203
+ raise "Cannot determine URL for #{tun_url}"
204
+ end
205
+
206
+ def get_connection_info(token)
207
+ response = nil
208
+ 10.times do
209
+ begin
210
+ response =
211
+ RestClient.get(
212
+ helper_url + "/" + safe_path("services", @service.name),
213
+ "Auth-Token" => token)
214
+
215
+ break
216
+ rescue RestClient::Exception => e
217
+ sleep 1
218
+ end
219
+ end
220
+
221
+ unless response
222
+ raise "Remote tunnel helper is unaware of #{@service.name}!"
223
+ end
224
+
225
+ is_v2 = @client.is_a?(JFoundry::V2::Client)
226
+
227
+ info = JSON.parse(response)
228
+ case (is_v2 ? @service.service_plan.service.label : @service.vendor)
229
+ when "rabbitmq"
230
+ uri = Addressable::URI.parse info["url"]
231
+ info["hostname"] = uri.host
232
+ info["port"] = uri.port
233
+ info["vhost"] = uri.path[1..-1]
234
+ info["user"] = uri.user
235
+ info["password"] = uri.password
236
+ info.delete "url"
237
+
238
+ # we use "db" as the "name" for mongo
239
+ # existing "name" is junk
240
+ when "mongodb"
241
+ info["name"] = info["db"]
242
+ info.delete "db"
243
+
244
+ # our "name" is irrelevant for redis
245
+ when "redis"
246
+ info.delete "name"
247
+
248
+ when "filesystem"
249
+ raise "Tunneling is not supported for this type of service"
250
+ end
251
+
252
+ ["hostname", "port", "password"].each do |k|
253
+ raise "Could not determine #{k} for #{@service.name}" if info[k].nil?
254
+ end
255
+
256
+ info
257
+ end
258
+
259
+ def start_tunnel(conn_info, auth)
260
+ @local_tunnel_thread = Thread.new do
261
+ Caldecott::Client.start({
262
+ :local_port => @port,
263
+ :tun_url => helper_url,
264
+ :dst_host => conn_info["hostname"],
265
+ :dst_port => conn_info["port"],
266
+ :log_file => STDOUT,
267
+ :log_level => ENV["JDC_TUNNEL_DEBUG"] || "ERROR",
268
+ :auth_token => auth,
269
+ :quiet => true
270
+ })
271
+ end
272
+
273
+ at_exit { @local_tunnel_thread.kill }
274
+ end
275
+
276
+ def random_helper_url
277
+ random = sprintf("%x", rand(1000000))
278
+ "caldecott-#{random}"
279
+ end
280
+
281
+ def safe_path(*segments)
282
+ segments.flatten.collect { |x|
283
+ URI.encode x.to_s, Regexp.new("[^#{URI::PATTERN::UNRESERVED}]")
284
+ }.join("/")
285
+ end
286
+
287
+ def grab_ephemeral_port
288
+ socket = TCPServer.new("0.0.0.0", 0)
289
+ socket.setsockopt(Socket::SOL_SOCKET, Socket::SO_REUSEADDR, true)
290
+ Socket.do_not_reverse_lookup = true
291
+ socket.addr[1]
292
+ ensure
293
+ socket.close
294
+ end
295
+ end
metadata CHANGED
@@ -1,262 +1,423 @@
1
- --- !ruby/object:Gem::Specification
1
+ --- !ruby/object:Gem::Specification
2
2
  name: jdc
3
- version: !ruby/object:Gem::Version
4
- hash: 21
5
- prerelease:
6
- segments:
7
- - 0
8
- - 2
9
- - 1
10
- version: 0.2.1
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.2.2.pre
5
+ prerelease: 6
11
6
  platform: ruby
12
- authors:
13
- - Jing Dong Cloud
7
+ authors:
8
+ - Jing Dong Foundry Team
9
+ - jae
14
10
  autorequire:
15
11
  bindir: bin
16
12
  cert_chain: []
17
-
18
- date: 2013-08-30 00:00:00 Z
19
- dependencies:
20
- - !ruby/object:Gem::Dependency
21
- name: rake
22
- prerelease: false
23
- requirement: &id001 !ruby/object:Gem::Requirement
13
+ date: 2013-08-30 00:00:00.000000000 Z
14
+ dependencies:
15
+ - !ruby/object:Gem::Dependency
16
+ name: addressable
17
+ requirement: &13161460 !ruby/object:Gem::Requirement
24
18
  none: false
25
- requirements:
26
- - - ">="
27
- - !ruby/object:Gem::Version
28
- hash: 3
29
- segments:
30
- - 0
31
- version: "0"
19
+ requirements:
20
+ - - ~>
21
+ - !ruby/object:Gem::Version
22
+ version: '2.2'
32
23
  type: :runtime
33
- version_requirements: *id001
34
- - !ruby/object:Gem::Dependency
35
- name: addressable
36
24
  prerelease: false
37
- requirement: &id002 !ruby/object:Gem::Requirement
25
+ version_requirements: *13161460
26
+ - !ruby/object:Gem::Dependency
27
+ name: caldecott-client
28
+ requirement: &13160960 !ruby/object:Gem::Requirement
38
29
  none: false
39
- requirements:
30
+ requirements:
40
31
  - - ~>
41
- - !ruby/object:Gem::Version
42
- hash: 11
43
- segments:
44
- - 2
45
- - 2
46
- - 6
47
- version: 2.2.6
32
+ - !ruby/object:Gem::Version
33
+ version: 0.0.2
48
34
  type: :runtime
49
- version_requirements: *id002
50
- - !ruby/object:Gem::Dependency
51
- name: interact
52
35
  prerelease: false
53
- requirement: &id003 !ruby/object:Gem::Requirement
36
+ version_requirements: *13160960
37
+ - !ruby/object:Gem::Dependency
38
+ name: jfoundry
39
+ requirement: &13202480 !ruby/object:Gem::Requirement
54
40
  none: false
55
- requirements:
56
- - - ~>
57
- - !ruby/object:Gem::Version
58
- hash: 15
59
- segments:
60
- - 0
61
- - 4
62
- - 0
63
- version: 0.4.0
41
+ requirements:
42
+ - - =
43
+ - !ruby/object:Gem::Version
44
+ version: 0.1.0
64
45
  type: :runtime
65
- version_requirements: *id003
66
- - !ruby/object:Gem::Dependency
67
- name: json_pure
68
46
  prerelease: false
69
- requirement: &id004 !ruby/object:Gem::Requirement
47
+ version_requirements: *13202480
48
+ - !ruby/object:Gem::Dependency
49
+ name: interact
50
+ requirement: &13202020 !ruby/object:Gem::Requirement
70
51
  none: false
71
- requirements:
72
- - - ">="
73
- - !ruby/object:Gem::Version
74
- hash: 1
75
- segments:
76
- - 1
77
- - 5
78
- - 1
79
- version: 1.5.1
80
- - - <
81
- - !ruby/object:Gem::Version
82
- hash: 11
83
- segments:
84
- - 1
85
- - 7
86
- - 0
87
- version: 1.7.0
52
+ requirements:
53
+ - - ~>
54
+ - !ruby/object:Gem::Version
55
+ version: '0.5'
88
56
  type: :runtime
89
- version_requirements: *id004
90
- - !ruby/object:Gem::Dependency
91
- name: rb-readline
92
57
  prerelease: false
93
- requirement: &id005 !ruby/object:Gem::Requirement
58
+ version_requirements: *13202020
59
+ - !ruby/object:Gem::Dependency
60
+ name: json_pure
61
+ requirement: &13201560 !ruby/object:Gem::Requirement
94
62
  none: false
95
- requirements:
63
+ requirements:
96
64
  - - ~>
97
- - !ruby/object:Gem::Version
98
- hash: 11
99
- segments:
100
- - 0
101
- - 4
102
- - 2
103
- version: 0.4.2
65
+ - !ruby/object:Gem::Version
66
+ version: '1.6'
104
67
  type: :runtime
105
- version_requirements: *id005
106
- - !ruby/object:Gem::Dependency
107
- name: rest-client
108
68
  prerelease: false
109
- requirement: &id006 !ruby/object:Gem::Requirement
69
+ version_requirements: *13201560
70
+ - !ruby/object:Gem::Dependency
71
+ name: mothership
72
+ requirement: &13201080 !ruby/object:Gem::Requirement
110
73
  none: false
111
- requirements:
112
- - - ">="
113
- - !ruby/object:Gem::Version
114
- hash: 13
115
- segments:
116
- - 1
117
- - 6
118
- - 1
119
- version: 1.6.1
74
+ requirements:
75
+ - - ! '>='
76
+ - !ruby/object:Gem::Version
77
+ version: 0.5.1
120
78
  - - <
121
- - !ruby/object:Gem::Version
122
- hash: 11
123
- segments:
124
- - 1
125
- - 7
126
- - 0
127
- version: 1.7.0
79
+ - !ruby/object:Gem::Version
80
+ version: '1.0'
128
81
  type: :runtime
129
- version_requirements: *id006
130
- - !ruby/object:Gem::Dependency
131
- name: rubyzip
132
82
  prerelease: false
133
- requirement: &id007 !ruby/object:Gem::Requirement
83
+ version_requirements: *13201080
84
+ - !ruby/object:Gem::Dependency
85
+ name: multi_json
86
+ requirement: &13200360 !ruby/object:Gem::Requirement
134
87
  none: false
135
- requirements:
88
+ requirements:
136
89
  - - ~>
137
- - !ruby/object:Gem::Version
138
- hash: 51
139
- segments:
140
- - 0
141
- - 9
142
- - 4
143
- version: 0.9.4
90
+ - !ruby/object:Gem::Version
91
+ version: '1.3'
144
92
  type: :runtime
145
- version_requirements: *id007
146
- - !ruby/object:Gem::Dependency
147
- name: terminal-table
148
93
  prerelease: false
149
- requirement: &id008 !ruby/object:Gem::Requirement
94
+ version_requirements: *13200360
95
+ - !ruby/object:Gem::Dependency
96
+ name: rest-client
97
+ requirement: &13199900 !ruby/object:Gem::Requirement
150
98
  none: false
151
- requirements:
99
+ requirements:
152
100
  - - ~>
153
- - !ruby/object:Gem::Version
154
- hash: 3
155
- segments:
156
- - 1
157
- - 4
158
- - 2
159
- version: 1.4.2
101
+ - !ruby/object:Gem::Version
102
+ version: '1.6'
160
103
  type: :runtime
161
- version_requirements: *id008
162
- - !ruby/object:Gem::Dependency
163
- name: uuidtools
164
104
  prerelease: false
165
- requirement: &id009 !ruby/object:Gem::Requirement
105
+ version_requirements: *13199900
106
+ - !ruby/object:Gem::Dependency
107
+ name: uuidtools
108
+ requirement: &13199440 !ruby/object:Gem::Requirement
166
109
  none: false
167
- requirements:
110
+ requirements:
168
111
  - - ~>
169
- - !ruby/object:Gem::Version
170
- hash: 11
171
- segments:
172
- - 2
173
- - 1
174
- - 0
175
- version: 2.1.0
112
+ - !ruby/object:Gem::Version
113
+ version: '2.1'
176
114
  type: :runtime
177
- version_requirements: *id009
178
- description: JDC Client for JingDong Cloud
179
- email: jdc@jd.com
180
- executables:
115
+ prerelease: false
116
+ version_requirements: *13199440
117
+ - !ruby/object:Gem::Dependency
118
+ name: blue-shell
119
+ requirement: &13198980 !ruby/object:Gem::Requirement
120
+ none: false
121
+ requirements:
122
+ - - ! '>='
123
+ - !ruby/object:Gem::Version
124
+ version: 0.2.1
125
+ type: :development
126
+ prerelease: false
127
+ version_requirements: *13198980
128
+ - !ruby/object:Gem::Dependency
129
+ name: factory_girl
130
+ requirement: &13198600 !ruby/object:Gem::Requirement
131
+ none: false
132
+ requirements:
133
+ - - ! '>='
134
+ - !ruby/object:Gem::Version
135
+ version: '0'
136
+ type: :development
137
+ prerelease: false
138
+ version_requirements: *13198600
139
+ - !ruby/object:Gem::Dependency
140
+ name: fakefs
141
+ requirement: &13198060 !ruby/object:Gem::Requirement
142
+ none: false
143
+ requirements:
144
+ - - ~>
145
+ - !ruby/object:Gem::Version
146
+ version: 0.4.2
147
+ type: :development
148
+ prerelease: false
149
+ version_requirements: *13198060
150
+ - !ruby/object:Gem::Dependency
151
+ name: ffaker
152
+ requirement: &13197560 !ruby/object:Gem::Requirement
153
+ none: false
154
+ requirements:
155
+ - - =
156
+ - !ruby/object:Gem::Version
157
+ version: '1.15'
158
+ type: :development
159
+ prerelease: false
160
+ version_requirements: *13197560
161
+ - !ruby/object:Gem::Dependency
162
+ name: gem-release
163
+ requirement: &13197180 !ruby/object:Gem::Requirement
164
+ none: false
165
+ requirements:
166
+ - - ! '>='
167
+ - !ruby/object:Gem::Version
168
+ version: '0'
169
+ type: :development
170
+ prerelease: false
171
+ version_requirements: *13197180
172
+ - !ruby/object:Gem::Dependency
173
+ name: rake
174
+ requirement: &13196640 !ruby/object:Gem::Requirement
175
+ none: false
176
+ requirements:
177
+ - - ~>
178
+ - !ruby/object:Gem::Version
179
+ version: '0.9'
180
+ type: :development
181
+ prerelease: false
182
+ version_requirements: *13196640
183
+ - !ruby/object:Gem::Dependency
184
+ name: rspec
185
+ requirement: &13196140 !ruby/object:Gem::Requirement
186
+ none: false
187
+ requirements:
188
+ - - ~>
189
+ - !ruby/object:Gem::Version
190
+ version: '2.14'
191
+ type: :development
192
+ prerelease: false
193
+ version_requirements: *13196140
194
+ - !ruby/object:Gem::Dependency
195
+ name: rspec-instafail
196
+ requirement: &13195680 !ruby/object:Gem::Requirement
197
+ none: false
198
+ requirements:
199
+ - - ~>
200
+ - !ruby/object:Gem::Version
201
+ version: 0.2.4
202
+ type: :development
203
+ prerelease: false
204
+ version_requirements: *13195680
205
+ - !ruby/object:Gem::Dependency
206
+ name: webmock
207
+ requirement: &13195220 !ruby/object:Gem::Requirement
208
+ none: false
209
+ requirements:
210
+ - - ~>
211
+ - !ruby/object:Gem::Version
212
+ version: '1.9'
213
+ type: :development
214
+ prerelease: false
215
+ version_requirements: *13195220
216
+ - !ruby/object:Gem::Dependency
217
+ name: httpclient
218
+ requirement: &13194760 !ruby/object:Gem::Requirement
219
+ none: false
220
+ requirements:
221
+ - - ~>
222
+ - !ruby/object:Gem::Version
223
+ version: '2.3'
224
+ type: :development
225
+ prerelease: false
226
+ version_requirements: *13194760
227
+ - !ruby/object:Gem::Dependency
228
+ name: yajl-ruby
229
+ requirement: &13194380 !ruby/object:Gem::Requirement
230
+ none: false
231
+ requirements:
232
+ - - ! '>='
233
+ - !ruby/object:Gem::Version
234
+ version: '0'
235
+ type: :development
236
+ prerelease: false
237
+ version_requirements: *13194380
238
+ - !ruby/object:Gem::Dependency
239
+ name: nats
240
+ requirement: &13272460 !ruby/object:Gem::Requirement
241
+ none: false
242
+ requirements:
243
+ - - ! '>='
244
+ - !ruby/object:Gem::Version
245
+ version: '0'
246
+ type: :development
247
+ prerelease: false
248
+ version_requirements: *13272460
249
+ - !ruby/object:Gem::Dependency
250
+ name: typhoeus
251
+ requirement: &13272040 !ruby/object:Gem::Requirement
252
+ none: false
253
+ requirements:
254
+ - - ! '>='
255
+ - !ruby/object:Gem::Version
256
+ version: '0'
257
+ type: :development
258
+ prerelease: false
259
+ version_requirements: *13272040
260
+ - !ruby/object:Gem::Dependency
261
+ name: anchorman
262
+ requirement: &13271620 !ruby/object:Gem::Requirement
263
+ none: false
264
+ requirements:
265
+ - - ! '>='
266
+ - !ruby/object:Gem::Version
267
+ version: '0'
268
+ type: :development
269
+ prerelease: false
270
+ version_requirements: *13271620
271
+ description:
272
+ email:
273
+ - jae@jd.com
274
+ executables:
181
275
  - jdc
182
276
  extensions: []
183
-
184
277
  extra_rdoc_files: []
185
-
186
- files:
187
- - README.md
278
+ files:
188
279
  - LICENSE
189
- - caldecott_helper/server.rb
190
- - bin/jdc
191
- - lib/cli.rb
280
+ - Rakefile
281
+ - lib/admin/curl.rb
282
+ - lib/admin/guid.rb
283
+ - lib/admin/service_broker/add.rb
284
+ - lib/admin/service_broker/service_brokers.rb
285
+ - lib/admin/README.md
286
+ - lib/admin/service_auth_token.rb
287
+ - lib/admin/plugin.rb
288
+ - lib/admin/set_quota.rb
289
+ - lib/manifests/manifests.rb
290
+ - lib/manifests/errors.rb
291
+ - lib/manifests/loader/normalizer.rb
292
+ - lib/manifests/loader/resolver.rb
293
+ - lib/manifests/loader/builder.rb
294
+ - lib/manifests/plugin.rb
295
+ - lib/manifests/loader.rb
296
+ - lib/micro/switcher/dummy.rb
297
+ - lib/micro/switcher/base.rb
298
+ - lib/micro/switcher/linux.rb
299
+ - lib/micro/switcher/darwin.rb
300
+ - lib/micro/switcher/windows.rb
301
+ - lib/micro/vmrun.rb
302
+ - lib/micro/micro.rb
303
+ - lib/micro/errors.rb
304
+ - lib/micro/README.md
305
+ - lib/micro/plugin.rb
192
306
  - lib/jdc.rb
193
- - lib/jdc/micro.rb
194
- - lib/jdc/const.rb
195
- - lib/jdc/signer.rb
196
- - lib/jdc/timer.rb
197
- - lib/jdc/micro/switcher/dummy.rb
198
- - lib/jdc/micro/switcher/darwin.rb
199
- - lib/jdc/micro/switcher/base.rb
200
- - lib/jdc/micro/switcher/linux.rb
201
- - lib/jdc/micro/switcher/windows.rb
202
- - lib/jdc/micro/vmrun.rb
203
- - lib/jdc/signature/version.rb
204
- - lib/jdc/client.rb
205
- - lib/cli/errors.rb
206
- - lib/cli/zip_util.rb
207
- - lib/cli/core_ext.rb
208
- - lib/cli/console_helper.rb
209
- - lib/cli/usage.rb
210
- - lib/cli/commands/services.rb
211
- - lib/cli/commands/micro.rb
212
- - lib/cli/commands/misc.rb
213
- - lib/cli/commands/base.rb
214
- - lib/cli/commands/apps.rb
215
- - lib/cli/commands/manifest.rb
216
- - lib/cli/commands/user.rb
217
- - lib/cli/commands/admin.rb
218
- - lib/cli/frameworks.rb
219
- - lib/cli/version.rb
220
- - lib/cli/runner.rb
221
- - lib/cli/manifest_helper.rb
222
- - lib/cli/services_helper.rb
223
- - lib/cli/config.rb
224
- - lib/cli/tunnel_helper.rb
225
- - config/micro/paths.yml
226
- - config/clients.yml
227
- - config/micro/refresh_ip.rb
228
- homepage: https://github.com/jingdong-app-engine/jdc
229
- licenses:
307
+ - lib/tasks/gem_release.rake
308
+ - lib/tunnel/tunnel.rb
309
+ - lib/tunnel/helper-app/server.rb
310
+ - lib/tunnel/helper-app/Gemfile.lock
311
+ - lib/tunnel/helper-app/Gemfile
312
+ - lib/tunnel/README.md
313
+ - lib/tunnel/plugin.rb
314
+ - lib/tunnel/config/clients.yml
315
+ - lib/jdc/cli/interactive.rb
316
+ - lib/jdc/cli/domain/base.rb
317
+ - lib/jdc/cli/domain/unmap.rb
318
+ - lib/jdc/cli/domain/domains.rb
319
+ - lib/jdc/cli/domain/map.rb
320
+ - lib/jdc/cli/start/targets.rb
321
+ - lib/jdc/cli/start/colors.rb
322
+ - lib/jdc/cli/start/base.rb
323
+ - lib/jdc/cli/start/target_prettifier.rb
324
+ - lib/jdc/cli/start/target.rb
325
+ - lib/jdc/cli/organization/create.rb
326
+ - lib/jdc/cli/organization/orgs.rb
327
+ - lib/jdc/cli/organization/org.rb
328
+ - lib/jdc/cli/organization/delete.rb
329
+ - lib/jdc/cli/organization/base.rb
330
+ - lib/jdc/cli/organization/rename.rb
331
+ - lib/jdc/cli/app/logs.rb
332
+ - lib/jdc/cli/app/push.rb
333
+ - lib/jdc/cli/app/app.rb
334
+ - lib/jdc/cli/app/files.rb
335
+ - lib/jdc/cli/app/push/create.rb
336
+ - lib/jdc/cli/app/push/interactions.rb
337
+ - lib/jdc/cli/app/push/sync.rb
338
+ - lib/jdc/cli/app/restart.rb
339
+ - lib/jdc/cli/app/scale.rb
340
+ - lib/jdc/cli/app/events.rb
341
+ - lib/jdc/cli/app/env.rb
342
+ - lib/jdc/cli/app/stats.rb
343
+ - lib/jdc/cli/app/health.rb
344
+ - lib/jdc/cli/app/start.rb
345
+ - lib/jdc/cli/app/stop.rb
346
+ - lib/jdc/cli/app/apps.rb
347
+ - lib/jdc/cli/app/delete.rb
348
+ - lib/jdc/cli/app/base.rb
349
+ - lib/jdc/cli/app/deprecated.rb
350
+ - lib/jdc/cli/app/instances.rb
351
+ - lib/jdc/cli/app/rename.rb
352
+ - lib/jdc/cli/login_requirements.rb
353
+ - lib/jdc/cli/route/routes.rb
354
+ - lib/jdc/cli/route/delete.rb
355
+ - lib/jdc/cli/route/base.rb
356
+ - lib/jdc/cli/route/unmap.rb
357
+ - lib/jdc/cli/route/map.rb
358
+ - lib/jdc/cli/user/create.rb
359
+ - lib/jdc/cli/user/register.rb
360
+ - lib/jdc/cli/user/users.rb
361
+ - lib/jdc/cli/user/base.rb
362
+ - lib/jdc/cli/user/passwd.rb
363
+ - lib/jdc/cli/help.rb
364
+ - lib/jdc/cli/service/unbind.rb
365
+ - lib/jdc/cli/service/create.rb
366
+ - lib/jdc/cli/service/services.rb
367
+ - lib/jdc/cli/service/service.rb
368
+ - lib/jdc/cli/service/service_instance_helper.rb
369
+ - lib/jdc/cli/service/bind.rb
370
+ - lib/jdc/cli/service/delete.rb
371
+ - lib/jdc/cli/service/base.rb
372
+ - lib/jdc/cli/service/rename.rb
373
+ - lib/jdc/cli/populators/space.rb
374
+ - lib/jdc/cli/populators/base.rb
375
+ - lib/jdc/cli/populators/target.rb
376
+ - lib/jdc/cli/populators/populator_methods.rb
377
+ - lib/jdc/cli/populators/organization.rb
378
+ - lib/jdc/cli/space/create.rb
379
+ - lib/jdc/cli/space/switch.rb
380
+ - lib/jdc/cli/space/spaces.rb
381
+ - lib/jdc/cli/space/space.rb
382
+ - lib/jdc/cli/space/delete.rb
383
+ - lib/jdc/cli/space/base.rb
384
+ - lib/jdc/cli/space/rename.rb
385
+ - lib/jdc/spacing.rb
386
+ - lib/jdc/errors.rb
387
+ - lib/jdc/spec_helper.rb
388
+ - lib/jdc/test_support.rb
389
+ - lib/jdc/object_extensions.rb
390
+ - lib/jdc/constants.rb
391
+ - lib/jdc/plugin.rb
392
+ - lib/jdc/cli.rb
393
+ - lib/jdc/version.rb
394
+ - lib/console/console.rb
395
+ - lib/console/README.md
396
+ - lib/console/plugin.rb
397
+ - bin/jdc
398
+ homepage: https://code.jd.com/jae_m/jdc
399
+ licenses:
230
400
  - Apache 2.0
231
401
  post_install_message:
232
402
  rdoc_options: []
233
-
234
- require_paths:
403
+ require_paths:
235
404
  - lib
236
- required_ruby_version: !ruby/object:Gem::Requirement
405
+ required_ruby_version: !ruby/object:Gem::Requirement
237
406
  none: false
238
- requirements:
239
- - - ">="
240
- - !ruby/object:Gem::Version
241
- hash: 3
242
- segments:
243
- - 0
244
- version: "0"
245
- required_rubygems_version: !ruby/object:Gem::Requirement
407
+ requirements:
408
+ - - ! '>='
409
+ - !ruby/object:Gem::Version
410
+ version: '0'
411
+ required_rubygems_version: !ruby/object:Gem::Requirement
246
412
  none: false
247
- requirements:
248
- - - ">="
249
- - !ruby/object:Gem::Version
250
- hash: 3
251
- segments:
252
- - 0
253
- version: "0"
413
+ requirements:
414
+ - - ! '>'
415
+ - !ruby/object:Gem::Version
416
+ version: 1.3.1
254
417
  requirements: []
255
-
256
- rubyforge_project:
257
- rubygems_version: 1.8.15
418
+ rubyforge_project: jdc
419
+ rubygems_version: 1.8.11
258
420
  signing_key:
259
421
  specification_version: 3
260
- summary: JDC Client for JingDong Cloud
422
+ summary: Friendly command-line interface for Jing Dong Foundry.
261
423
  test_files: []
262
-