jdc 0.2.1 → 0.2.2.pre

Sign up to get free protection for your applications and to get access to all the features.
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
-