jdc 0.2.1.pre → 0.2.1

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 +24 -1277
  2. data/README.md +102 -0
  3. data/bin/jdc +2 -12
  4. data/{lib/tunnel/helper-app → caldecott_helper}/server.rb +5 -5
  5. data/{lib/tunnel/config → config}/clients.yml +2 -2
  6. data/config/micro/paths.yml +22 -0
  7. data/config/micro/refresh_ip.rb +20 -0
  8. data/lib/cli/commands/admin.rb +58 -0
  9. data/lib/cli/commands/apps.rb +1129 -0
  10. data/lib/cli/commands/base.rb +228 -0
  11. data/lib/cli/commands/manifest.rb +56 -0
  12. data/lib/cli/commands/micro.rb +115 -0
  13. data/lib/cli/commands/misc.rb +126 -0
  14. data/lib/cli/commands/services.rb +178 -0
  15. data/lib/cli/commands/user.rb +14 -0
  16. data/lib/cli/config.rb +173 -0
  17. data/lib/cli/console_helper.rb +170 -0
  18. data/lib/cli/core_ext.rb +122 -0
  19. data/lib/cli/errors.rb +19 -0
  20. data/lib/cli/frameworks.rb +265 -0
  21. data/lib/cli/manifest_helper.rb +300 -0
  22. data/lib/cli/runner.rb +505 -0
  23. data/lib/cli/services_helper.rb +84 -0
  24. data/lib/cli/tunnel_helper.rb +332 -0
  25. data/lib/cli/usage.rb +86 -0
  26. data/lib/cli/version.rb +7 -0
  27. data/lib/cli/zip_util.rb +77 -0
  28. data/lib/cli.rb +53 -0
  29. data/lib/jdc/client.rb +457 -0
  30. data/lib/jdc/const.rb +25 -0
  31. data/lib/jdc/micro/switcher/base.rb +97 -0
  32. data/lib/{micro → jdc/micro}/switcher/darwin.rb +3 -5
  33. data/lib/{micro → jdc/micro}/switcher/dummy.rb +1 -1
  34. data/lib/jdc/micro/switcher/linux.rb +16 -0
  35. data/lib/{micro → jdc/micro}/switcher/windows.rb +5 -5
  36. data/lib/{micro → jdc/micro}/vmrun.rb +19 -26
  37. data/lib/{micro → jdc}/micro.rb +15 -15
  38. data/lib/jdc/signature/version.rb +27 -0
  39. data/lib/jdc/signer.rb +13 -0
  40. data/lib/jdc/timer.rb +12 -0
  41. data/lib/jdc.rb +2 -15
  42. metadata +210 -360
  43. data/Rakefile +0 -13
  44. data/lib/admin/README.md +0 -15
  45. data/lib/admin/curl.rb +0 -60
  46. data/lib/admin/guid.rb +0 -89
  47. data/lib/admin/plugin.rb +0 -6
  48. data/lib/admin/service_auth_token.rb +0 -94
  49. data/lib/admin/service_broker/add.rb +0 -47
  50. data/lib/admin/service_broker/service_brokers.rb +0 -24
  51. data/lib/admin/set_quota.rb +0 -44
  52. data/lib/console/README.md +0 -8
  53. data/lib/console/console.rb +0 -187
  54. data/lib/console/plugin.rb +0 -33
  55. data/lib/jdc/cli/app/app.rb +0 -43
  56. data/lib/jdc/cli/app/apps.rb +0 -87
  57. data/lib/jdc/cli/app/base.rb +0 -72
  58. data/lib/jdc/cli/app/delete.rb +0 -95
  59. data/lib/jdc/cli/app/deprecated.rb +0 -11
  60. data/lib/jdc/cli/app/env.rb +0 -78
  61. data/lib/jdc/cli/app/events.rb +0 -45
  62. data/lib/jdc/cli/app/files.rb +0 -137
  63. data/lib/jdc/cli/app/health.rb +0 -26
  64. data/lib/jdc/cli/app/instances.rb +0 -53
  65. data/lib/jdc/cli/app/logs.rb +0 -76
  66. data/lib/jdc/cli/app/push/create.rb +0 -108
  67. data/lib/jdc/cli/app/push/interactions.rb +0 -86
  68. data/lib/jdc/cli/app/push/sync.rb +0 -57
  69. data/lib/jdc/cli/app/push.rb +0 -103
  70. data/lib/jdc/cli/app/rename.rb +0 -35
  71. data/lib/jdc/cli/app/restart.rb +0 -31
  72. data/lib/jdc/cli/app/scale.rb +0 -63
  73. data/lib/jdc/cli/app/start.rb +0 -161
  74. data/lib/jdc/cli/app/stats.rb +0 -67
  75. data/lib/jdc/cli/app/stop.rb +0 -27
  76. data/lib/jdc/cli/domain/base.rb +0 -9
  77. data/lib/jdc/cli/domain/domains.rb +0 -40
  78. data/lib/jdc/cli/domain/map.rb +0 -55
  79. data/lib/jdc/cli/domain/unmap.rb +0 -56
  80. data/lib/jdc/cli/help.rb +0 -15
  81. data/lib/jdc/cli/interactive.rb +0 -105
  82. data/lib/jdc/cli/login_requirements.rb +0 -15
  83. data/lib/jdc/cli/organization/base.rb +0 -14
  84. data/lib/jdc/cli/organization/create.rb +0 -37
  85. data/lib/jdc/cli/organization/delete.rb +0 -63
  86. data/lib/jdc/cli/organization/org.rb +0 -45
  87. data/lib/jdc/cli/organization/orgs.rb +0 -30
  88. data/lib/jdc/cli/organization/rename.rb +0 -37
  89. data/lib/jdc/cli/populators/base.rb +0 -16
  90. data/lib/jdc/cli/populators/organization.rb +0 -32
  91. data/lib/jdc/cli/populators/populator_methods.rb +0 -64
  92. data/lib/jdc/cli/populators/space.rb +0 -33
  93. data/lib/jdc/cli/populators/target.rb +0 -13
  94. data/lib/jdc/cli/route/base.rb +0 -9
  95. data/lib/jdc/cli/route/delete.rb +0 -28
  96. data/lib/jdc/cli/route/map.rb +0 -68
  97. data/lib/jdc/cli/route/routes.rb +0 -26
  98. data/lib/jdc/cli/route/unmap.rb +0 -56
  99. data/lib/jdc/cli/service/base.rb +0 -9
  100. data/lib/jdc/cli/service/bind.rb +0 -44
  101. data/lib/jdc/cli/service/create.rb +0 -159
  102. data/lib/jdc/cli/service/delete.rb +0 -83
  103. data/lib/jdc/cli/service/rename.rb +0 -36
  104. data/lib/jdc/cli/service/service.rb +0 -42
  105. data/lib/jdc/cli/service/service_instance_helper.rb +0 -99
  106. data/lib/jdc/cli/service/services.rb +0 -111
  107. data/lib/jdc/cli/service/unbind.rb +0 -37
  108. data/lib/jdc/cli/space/base.rb +0 -29
  109. data/lib/jdc/cli/space/create.rb +0 -67
  110. data/lib/jdc/cli/space/delete.rb +0 -56
  111. data/lib/jdc/cli/space/rename.rb +0 -38
  112. data/lib/jdc/cli/space/space.rb +0 -66
  113. data/lib/jdc/cli/space/spaces.rb +0 -57
  114. data/lib/jdc/cli/space/switch.rb +0 -19
  115. data/lib/jdc/cli/start/base.rb +0 -41
  116. data/lib/jdc/cli/start/colors.rb +0 -13
  117. data/lib/jdc/cli/start/target.rb +0 -50
  118. data/lib/jdc/cli/start/target_prettifier.rb +0 -17
  119. data/lib/jdc/cli/start/targets.rb +0 -16
  120. data/lib/jdc/cli/user/base.rb +0 -30
  121. data/lib/jdc/cli/user/create.rb +0 -52
  122. data/lib/jdc/cli/user/passwd.rb +0 -37
  123. data/lib/jdc/cli/user/register.rb +0 -43
  124. data/lib/jdc/cli/user/users.rb +0 -32
  125. data/lib/jdc/cli.rb +0 -556
  126. data/lib/jdc/constants.rb +0 -11
  127. data/lib/jdc/errors.rb +0 -19
  128. data/lib/jdc/object_extensions.rb +0 -15
  129. data/lib/jdc/plugin.rb +0 -56
  130. data/lib/jdc/spacing.rb +0 -89
  131. data/lib/jdc/spec_helper.rb +0 -1
  132. data/lib/jdc/test_support.rb +0 -6
  133. data/lib/jdc/version.rb +0 -3
  134. data/lib/manifests/errors.rb +0 -35
  135. data/lib/manifests/loader/builder.rb +0 -39
  136. data/lib/manifests/loader/normalizer.rb +0 -145
  137. data/lib/manifests/loader/resolver.rb +0 -79
  138. data/lib/manifests/loader.rb +0 -31
  139. data/lib/manifests/manifests.rb +0 -344
  140. data/lib/manifests/plugin.rb +0 -140
  141. data/lib/micro/README.md +0 -9
  142. data/lib/micro/errors.rb +0 -4
  143. data/lib/micro/plugin.rb +0 -197
  144. data/lib/micro/switcher/base.rb +0 -79
  145. data/lib/micro/switcher/linux.rb +0 -16
  146. data/lib/tasks/gem_release.rake +0 -42
  147. data/lib/tunnel/README.md +0 -29
  148. data/lib/tunnel/helper-app/Gemfile +0 -10
  149. data/lib/tunnel/helper-app/Gemfile.lock +0 -48
  150. data/lib/tunnel/plugin.rb +0 -183
  151. data/lib/tunnel/tunnel.rb +0 -295
data/README.md ADDED
@@ -0,0 +1,102 @@
1
+ #JDC
2
+
3
+ The JingDong Cloud CLI. This is the command line interface to JingDong's Application Platform
4
+
5
+ _Copyright 2013, JingDong. Please see the License file.
6
+
7
+ ##Installation
8
+
9
+ You can install the JDC for Ruby with rubygems
10
+
11
+ $gem install jdc
12
+ $jdc -v
13
+ jdc 0.1.0
14
+
15
+ If you are using Bundler, we recommend that you express a major version dependency:
16
+
17
+ gem 'jdc', '~> 0.1.0'
18
+
19
+ ##Development
20
+
21
+ $git clone https://github.com/jingdong-app-engine/jdc.git
22
+ $cd jdc
23
+ $bundle install
24
+
25
+ ##Basic Configuration
26
+
27
+ You need to provide your JingDong security credentials
28
+
29
+ You can also specify these values via `ENV`:
30
+
31
+ export ACCESS_KEY='...'
32
+ export SECRET_KEY='...'
33
+
34
+ ##Usage
35
+
36
+ Usage: jdc [options] command [<args>] [command_options]
37
+ Try 'jdc help [command]' or 'jdc help options' for more information.
38
+
39
+ Currently available jdc commands are:
40
+
41
+ Getting Started
42
+ target [url] Reports current target or sets a new target
43
+ info System and account information
44
+
45
+ Applications
46
+ user Display current user account information
47
+ apps List deployed applications
48
+
49
+ Application Creation
50
+ push [appname] Create, push, map, and start a new application
51
+ push [appname] --path Push application from specified path
52
+ push [appname] --url Set the url for the application
53
+ push [appname] --instances <N> Set the expected number <N> of instances
54
+ push [appname] --mem M Set the memory reservation for the application
55
+ push [appname] --runtime RUNTIME Set the runtime to use for the application
56
+ push [appname] --debug [MODE] Push application and start in a debug mode
57
+ push [appname] --no-start Do not auto-start the application
58
+
59
+ Application Operations
60
+ start <appname> [--debug [MODE]] Start the application
61
+ stop <appname> Stop the application
62
+ restart <appname> [--debug [MODE]] Restart the application
63
+ delete <appname> Delete the application
64
+
65
+ Application Updates
66
+ update <appname> [--path,--debug [MODE]] Update the application bits
67
+ mem <appname> [memsize] Update the memory reservation for an application
68
+ map <appname> <url> Register the application to the url
69
+ unmap <appname> <url> Unregister the application from the url
70
+ instances <appname> <num|delta> Scale the application instances up or down
71
+
72
+ Application Information
73
+ crashes <appname> List recent application crashes
74
+ crashlogs <appname> Display log information for crashed applications
75
+ logs <appname> [--all] Display log information for the application
76
+ files <appname> [path] [--all] Display directory listing or file download for [path]
77
+ stats <appname> Display resource usage for the application
78
+ instances <appname> List application instances
79
+
80
+ Application Environment
81
+ env <appname> List application environment variables
82
+ env-add <appname> <variable[=]value> Add an environment variable to an application
83
+ env-del <appname> <variable> Delete an environment variable to an application
84
+
85
+ System
86
+ runtimes Display the supported runtimes of the target system
87
+ frameworks Display the recognized frameworks of the target system
88
+
89
+ Misc
90
+ aliases List aliases
91
+ alias <alias[=]command> Create an alias for a command
92
+ unalias <alias> Remove an alias
93
+
94
+ Help
95
+ help [command] Get general help or help on a specific command
96
+ help options Get help on available options
97
+
98
+ ##Simple Story (for Ruby apps)
99
+
100
+ jdc target api.jd-app.com
101
+ jdc push ruby_app
102
+
data/bin/jdc CHANGED
@@ -1,16 +1,6 @@
1
1
  #!/usr/bin/env ruby
2
- # vim: ft=ruby
3
2
 
4
- require "rubygems"
3
+ require File.expand_path('../../lib/cli', __FILE__)
5
4
 
6
- require "jdc"
7
- require "jdc/plugin"
5
+ JDC::Cli::Runner.run(ARGV.dup)
8
6
 
9
- $stdout.sync = true
10
-
11
- JDC::Plugin.load_all
12
- if Gem::Version.new(RUBY_VERSION.dup) < Gem::Version.new("1.9.3")
13
- warn "ERROR: \033[31mRuby version #{RUBY_VERSION} is not supported.\033[0m Please install 1.9.3 or later. (See http://docs.cloudfoundry.com/docs/common/install_ruby.html for more information)"
14
- exit 1
15
- end
16
- JDC::CLI.start(ARGV)
@@ -10,7 +10,7 @@ require 'sinatra'
10
10
  require 'json'
11
11
  require 'eventmachine'
12
12
 
13
- port = ENV['PORT']
13
+ port = ENV['JDC_APP_PORT']
14
14
  port ||= 8081
15
15
 
16
16
  # add vcap specific stuff to Caldecott
@@ -24,19 +24,19 @@ class VcapHttpTunnel < Caldecott::Server::HttpTunnel
24
24
  end
25
25
 
26
26
  get '/services' do
27
- services_env = ENV['VCAP_SERVICES']
27
+ services_env = ENV['JDC_SERVICES']
28
28
  return "no services env" if services_env.nil? or services_env.empty?
29
29
  services_env
30
30
  end
31
31
 
32
32
  get '/services/:service' do |service_name|
33
- services_env = ENV['VCAP_SERVICES']
33
+ services_env = ENV['JDC_SERVICES']
34
34
  not_found if services_env.nil?
35
35
 
36
- services = JSON.parse(services_env).values.flatten(1)
36
+ services = JSON.parse(services_env)
37
37
  service = services.find { |s| s["name"] == service_name }
38
38
  not_found if service.nil?
39
- service["credentials"].to_json
39
+ service["options"].to_json
40
40
  end
41
41
  end
42
42
 
@@ -3,12 +3,12 @@ redis:
3
3
 
4
4
  mysql:
5
5
  mysql: --protocol=TCP --host=${host} --port=${port} --user=${user} --password=${password} ${name}
6
- mysqldump: --protocol=TCP --host=${host} --port=${port} --user=${user} --password=${password} ${name} > ${ask Output file}
6
+ mysqldump: --protocol=TCP --host=${host} --port=${port} --user=${user} --password=${password} ${name} > ${Output file}
7
7
 
8
8
  mongodb:
9
9
  mongo: --host ${host} --port ${port} -u ${user} -p ${password} ${name}
10
10
  mongodump: --host ${host} --port ${port} -u ${user} -p ${password} --db ${name}
11
- mongorestore: --host ${host} --port ${port} -u ${user} -p ${password} --db ${name} ${ask Directory or filename to restore from}
11
+ mongorestore: --host ${host} --port ${port} -u ${user} -p ${password} --db ${name} ${Directory or filename to restore from}
12
12
 
13
13
  postgresql:
14
14
  psql:
@@ -0,0 +1,22 @@
1
+ darwin:
2
+ vmrun:
3
+ - "/Applications/VMware Fusion.app/Contents/Library/"
4
+ - "/Applications/Fusion.app/Contents/Library/"
5
+ vmx:
6
+ - "~/Documents/Virtual Machines.localized/"
7
+ - "~/Documents/Virtual Machines/"
8
+ - "~/Desktop/"
9
+
10
+ linux:
11
+ vmrun:
12
+ - "/usr/bin/"
13
+ vmx:
14
+ - "~/"
15
+
16
+ windows:
17
+ vmrun:
18
+ - "c:\\Program Files (x86)\\"
19
+ - "c:\\Program Files\\"
20
+ vmx:
21
+ - "~\\Documents\\"
22
+ - "~\\Desktop\\"
@@ -0,0 +1,20 @@
1
+ #!/var/vcap/bosh/bin/ruby
2
+ require 'socket'
3
+
4
+ A_ROOT_SERVER = '198.41.0.4'
5
+
6
+ begin
7
+ retries ||= 0
8
+ route ||= A_ROOT_SERVER
9
+ orig, Socket.do_not_reverse_lookup = Socket.do_not_reverse_lookup, true
10
+ ip_address = UDPSocket.open {|s| s.connect(route, 1); s.addr.last }
11
+ rescue Errno::ENETUNREACH
12
+ # happens on boot when dhcp hasn't completed when we get here
13
+ sleep 3
14
+ retries += 1
15
+ retry if retries < 10
16
+ ensure
17
+ Socket.do_not_reverse_lookup = orig
18
+ end
19
+
20
+ File.open("/tmp/ip.txt", 'w') { |file| file.write(ip_address) }
@@ -0,0 +1,58 @@
1
+ module JDC::Cli::Command
2
+
3
+ class Admin < Base
4
+
5
+ def list_users
6
+ users = client.users
7
+ users.sort! {|a, b| a[:email] <=> b[:email] }
8
+ return display JSON.pretty_generate(users || []) if @options[:json]
9
+
10
+ display "\n"
11
+ return display "No Users" if users.nil? || users.empty?
12
+
13
+ users_table = table do |t|
14
+ t.headings = 'Email', 'Admin', 'Apps'
15
+ users.each do |user|
16
+ t << [user[:email], user[:admin], user[:apps].map {|x| x[:name]}.join(', ')]
17
+ end
18
+ end
19
+ display users_table
20
+ end
21
+
22
+ alias :users :list_users
23
+
24
+ def delete_user(user_email)
25
+ # Check to make sure all apps and services are deleted before deleting the user
26
+ # implicit proxying
27
+
28
+ client.proxy_for(user_email)
29
+ @options[:proxy] = user_email
30
+ apps = client.apps
31
+
32
+ if (apps && !apps.empty?)
33
+ unless no_prompt
34
+ proceed = ask(
35
+ "\nDeployed applications and associated services will be DELETED, continue?",
36
+ :default => false
37
+ )
38
+ err "Aborted" unless proceed
39
+ end
40
+ cmd = Apps.new(@options.merge({ :force => true }))
41
+ apps.each { |app| cmd.delete(app[:name]) }
42
+ end
43
+
44
+ services = client.services
45
+ if (services && !services.empty?)
46
+ cmd = Services.new(@options)
47
+ services.each { |s| cmd.delete_service(s[:name])}
48
+ end
49
+
50
+ display 'Deleting User: ', false
51
+ client.proxy = nil
52
+ client.delete_user(user_email)
53
+ display 'OK'.green
54
+ end
55
+
56
+ end
57
+
58
+ end