app42 0.5.3

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 (44) hide show
  1. checksums.yaml +7 -0
  2. data/.gitignore +19 -0
  3. data/Gemfile +4 -0
  4. data/LICENSE.txt +22 -0
  5. data/README.md +119 -0
  6. data/Rakefile +5 -0
  7. data/TODO.txt +36 -0
  8. data/app42.gemspec +41 -0
  9. data/bin/app42 +15 -0
  10. data/lib/app42.rb +23 -0
  11. data/lib/app42/base/constants.rb +33 -0
  12. data/lib/app42/base/help.rb +717 -0
  13. data/lib/app42/base/http_helper.rb +46 -0
  14. data/lib/app42/base/message.rb +35 -0
  15. data/lib/app42/base/shell.rb +39 -0
  16. data/lib/app42/base/util.rb +304 -0
  17. data/lib/app42/client/app42_rest_client.rb +451 -0
  18. data/lib/app42/client/rest_util.rb +66 -0
  19. data/lib/app42/command/app.rb +194 -0
  20. data/lib/app42/command/authorize.rb +29 -0
  21. data/lib/app42/command/base.rb +660 -0
  22. data/lib/app42/command/client.rb +232 -0
  23. data/lib/app42/command/config.rb +185 -0
  24. data/lib/app42/command/info.rb +101 -0
  25. data/lib/app42/command/service.rb +196 -0
  26. data/lib/app42/command/user.rb +140 -0
  27. data/lib/app42/command/user_key.rb +68 -0
  28. data/lib/app42/version.rb +13 -0
  29. data/spec/app42/base/constants_spec.rb +11 -0
  30. data/spec/app42/command/app_spec.rb +103 -0
  31. data/spec/app42/command/base_spec.rb +7 -0
  32. data/spec/app42/command/config_spec.rb +20 -0
  33. data/spec/app42/command/info_spec.rb +27 -0
  34. data/spec/app42/command/service_spec.rb +98 -0
  35. data/spec/app42/command/user_spec.rb +7 -0
  36. data/spec/app42/command/user_token_spec.rb +40 -0
  37. data/spec/app42/version_spec.rb +7 -0
  38. data/spec/app42_spec.rb +2 -0
  39. data/spec/data/info.yml +16 -0
  40. data/spec/data/services.yml +25 -0
  41. data/spec/data/state.yml +16 -0
  42. data/spec/data/user_services.yml +18 -0
  43. data/spec/spec_helper.rb +18 -0
  44. metadata +257 -0
checksums.yaml ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: a5b8f7a110424af73acd4b1847822ae7bfbfe7ed
4
+ data.tar.gz: aaf5f21ad1ce5e6935d8af8bc3a31e1eb79b83e0
5
+ SHA512:
6
+ metadata.gz: df400c060594ecdc8d45be5a691aa713e561f54867daf61066c378ffdab8cc5080c663ffe76637add38335085ae85746bd0454c8f03ef2aff5df789673047ced
7
+ data.tar.gz: 4f1d155bf9b9b876af03124478b5a0a50fa4daa56bc3f6e9d284ff2f294fe367ab1ab4487d9b5ebb0ab2edaf80af8c82ff2b3f018ccf3198e688182a50b04cf4
data/.gitignore ADDED
@@ -0,0 +1,19 @@
1
+ *.gem
2
+ *.rbc
3
+ .bundle
4
+ .config
5
+ .yardoc
6
+ Gemfile.lock
7
+ InstalledFiles
8
+ _yardoc
9
+ coverage
10
+ doc/
11
+ lib/bundler/man
12
+ pkg
13
+ rdoc
14
+ spec/reports
15
+ test/tmp
16
+ test/version_tmp
17
+ tmp
18
+ .idea/
19
+ nbproject/
data/Gemfile ADDED
@@ -0,0 +1,4 @@
1
+ source 'https://rubygems.org'
2
+
3
+ # Specify your gem's dependencies in app42.gemspec
4
+ gemspec
data/LICENSE.txt ADDED
@@ -0,0 +1,22 @@
1
+ Copyright (c) 2013 PravinKShepHertz
2
+
3
+ MIT License
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining
6
+ a copy of this software and associated documentation files (the
7
+ "Software"), to deal in the Software without restriction, including
8
+ without limitation the rights to use, copy, modify, merge, publish,
9
+ distribute, sublicense, and/or sell copies of the Software, and to
10
+ permit persons to whom the Software is furnished to do so, subject to
11
+ the following conditions:
12
+
13
+ The above copyright notice and this permission notice shall be
14
+ included in all copies or substantial portions of the Software.
15
+
16
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
17
+ EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
18
+ MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
19
+ NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
20
+ LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
21
+ OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
22
+ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
data/README.md ADDED
@@ -0,0 +1,119 @@
1
+ # App42
2
+
3
+ Client library and command-line tool to deploy and manage apps on App42PaaS.
4
+
5
+ ## Installation
6
+
7
+ Install app42 like any other ruby gem:
8
+
9
+ ### Linux
10
+ To install the client gem, you must have ruby installed on your system.
11
+
12
+ INSTALL THE NEEDED LIBRARIES
13
+
14
+ $ sudo apt-get install zlib1g zlib1g-dev build-essential openssl libssl-dev libmysqlclient18 libmysqlclient-dev libyaml-dev
15
+
16
+ DOWNLOAD AND INSTALL RUBY 1.9.3
17
+
18
+ $ sudo apt-get update
19
+ $ sudo apt-get install ruby1.9.3
20
+
21
+ INSTALL APP42 CLIENT
22
+
23
+ $ gem install app42-0.5.0.gem
24
+
25
+ Note: app42 require Ruby 1.9.2 or newer.
26
+
27
+ ### Mac OS X
28
+
29
+ To install the client gem, you must have ruby installed on your system.
30
+ You can use MacPort to download and compile everything.
31
+
32
+ Install MacPort http://www.macports.org/
33
+ From a terminal window, install Ruby
34
+
35
+ $ sudo port install ruby19 _nosuffix
36
+ $ sudo port select --set ruby ruby19
37
+ $ alias ruby='/opt/local/bin/ruby1.9'
38
+
39
+ INSTALL APP42 CLIENT
40
+
41
+ $gem install app42-0.5.0.gem
42
+
43
+ Note: app42 require Ruby 1.9.2 or newer.
44
+
45
+ ### Windows
46
+
47
+ To install the client gem, you must have ruby installed on your system.
48
+
49
+ Download and install Ruby Installer(http://rubyinstaller.org/) for Windows and set ruby to your path to access App42 from command prompt.
50
+
51
+ Then got to command prompt from windows Start menu, Open cmd and install App42 client.
52
+
53
+ $ gem install app42-0.5.0.gem
54
+
55
+ Note: app42 require Ruby 1.9.2 or newer.
56
+
57
+ ## Commands
58
+
59
+ Usage: app42 COMMAND [command-specific-options]
60
+
61
+ App42 primary commands:
62
+
63
+ keys # List keys of the current user
64
+ keys:add # Configure API and secret keys on local system
65
+ setup-infra # Create infrastructure
66
+ deploy # Deploy application
67
+ update # Update existing application
68
+ scale # Scale application by number of instance
69
+ descale # Descale application by number of instance
70
+ service-create # Create a new service
71
+ service-delete # Delete a provisioned service
72
+
73
+ App42 additional commands:
74
+
75
+ keys:clear # Clear all API and secret keys from local system
76
+ apps # List deployed applications
77
+ start # Start the application
78
+ stop # Stop the application
79
+ restart # Restart the application
80
+ delete # Delete the application
81
+ info # Show application information
82
+ state # Show the application state
83
+ services # List provisioned services
84
+ app42-services # List the available services
85
+ iaas-providers # List the available IaaS providers
86
+ runtimes # List the supported runtimes
87
+ version # List version
88
+ app42-update # List the App42PaaS client
89
+ help # List help
90
+ COMMAND --help # Display detailed help of specific command
91
+
92
+ ## Usage
93
+
94
+ ### $ app42 keys
95
+
96
+ === Your keys ===
97
+
98
+ API Key = df1dcdb0-958c-0130-9368-3c970e529c4b
99
+
100
+ Secret Key = be9faaf56ff75bacae2ac9712b02c8feb8ffc6bb3381b60e1e9efccccd81086d
101
+
102
+ ### $ app42 apps
103
+
104
+ +-------------------------+------------+-----------------+---------------+---------+-------+
105
+ | === My Apps === |
106
+ +-------------------------+------------+-----------------+---------------+---------+-------+
107
+ | App url | App status | Container count | Iaas provider | Vm type | Name |
108
+ +-------------------------+------------+-----------------+---------------+---------+-------+
109
+ | demo.aws.app42paas.com | STOPPED | 4 | Amazon | Shared | demo |
110
+ | demo1.aws.app42paas.com | RUNNING | 1 | Amazon | Shared | demo1 |
111
+ +-------------------------+------------+-----------------+---------------+---------+-------+
112
+
113
+ ## Contributing
114
+
115
+ 1. Fork it
116
+ 2. Create your feature branch (`git checkout -b my-new-feature`)
117
+ 3. Commit your changes (`git commit -am 'Add some feature'`)
118
+ 4. Push to the branch (`git push origin my-new-feature`)
119
+ 5. Create new Pull Request
data/Rakefile ADDED
@@ -0,0 +1,5 @@
1
+ require "bundler/gem_tasks"
2
+
3
+ require 'rspec/core/rake_task'
4
+ RSpec::Core::RakeTask.new('spec')
5
+ task :default => :spec
data/TODO.txt ADDED
@@ -0,0 +1,36 @@
1
+ - Authenticate user at entry point
2
+ - Authenticate in parent class initializer
3
+
4
+ - Auth methods should be instance
5
+
6
+ - Move all app deploy interactive details to constants OR globe file
7
+
8
+ Code should be enough smart to handle exceptions
9
+ - BadTarget
10
+ - AuthError
11
+ - TargetError
12
+
13
+
14
+
15
+
16
+ - We can store app_url details into local YML
17
+ - Zip_code, should have proper dir(Probably app_name, May user will have multiple apps)
18
+ - Rest multipart, should be dynamic for multiple calls
19
+
20
+ - Need to improve help class
21
+ - Need to improve helpers class, All common methods will move to helper.
22
+ - App update need to work
23
+ - Separate methods for root help and command help
24
+ - Shell command and description should be dynamic(get from pass server)
25
+
26
+ - Remove extarcted app dir from .app42
27
+
28
+ - Exception for invalid argument
29
+
30
+ - Rspec test case for all class and methods
31
+
32
+
33
+ #app_name = 'demo'
34
+ ##source_url = '/home/ubuntu/workspace/Deploycode/sinatra/test.zip'
35
+ ##source_url = '/home/ubuntu/workspace/Deploycode/ruby/demo.zip'
36
+ #source_url = '/home/ubuntu/workspace/Deploycode/java/Calendar.war'
data/app42.gemspec ADDED
@@ -0,0 +1,41 @@
1
+ # coding: utf-8
2
+ lib = File.expand_path('../lib', __FILE__)
3
+ $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
4
+ require 'app42/version'
5
+
6
+ Gem::Specification.new do |spec|
7
+ spec.required_ruby_version = '>= 1.9.2'
8
+ spec.post_install_message = "Thanks for installing!"
9
+ spec.name = "app42"
10
+ spec.version = App42::Version::VERSION::VERSION
11
+ spec.authors = ["ShepHertz"]
12
+ spec.email = ["support@shephertz.com"]
13
+ spec.description = "Client library and command-line tool to deploy and manage apps on App42PaaS."
14
+ spec.summary = "Client library and command-line tool to deploy and manage apps on App42PaaS Server."
15
+ spec.homepage = "http://shephertz.com"
16
+ spec.license = "MIT"
17
+ # FIXME, before release
18
+ # spec.post_install_message = <<-MESSAGE
19
+ # ! Download and install from: http://rubygems.org/
20
+ # ! For API access, see: https://github.com/shephertz/app42.rb
21
+ # MESSAGE
22
+
23
+ spec.files = `git ls-files`.split($/)
24
+ spec.executables = spec.files.grep(%r{^bin/}) { |f| File.basename(f) }
25
+ spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
26
+ spec.require_paths = ["lib"]
27
+
28
+ spec.add_dependency "bundler", "~> 1.3"
29
+ spec.add_dependency "rake"
30
+ spec.add_dependency "highline", "~> 1.6.18"
31
+ spec.add_dependency "paint", "~> 0.8.6"
32
+ spec.add_dependency "rest-client", "~> 1.6.1"
33
+ spec.add_dependency "json_pure", "= 1.6.6"
34
+ spec.add_dependency "ruby-hmac", "= 0.4.0"
35
+ spec.add_dependency "interact", "~> 0.5.2"
36
+ spec.add_dependency "terminal-table", "~> 1.4.2"
37
+ spec.add_dependency "ipaddress"
38
+
39
+ spec.add_development_dependency 'rspec', '~> 2.5'
40
+
41
+ end
data/bin/app42 ADDED
@@ -0,0 +1,15 @@
1
+ #!/usr/bin/env ruby
2
+ # encoding: UTF-8
3
+
4
+ require 'app42'
5
+ require 'app42/command/client'
6
+
7
+ # resolve bin path, ignoring symlinks
8
+ require "pathname"
9
+ bin_file = Pathname.new(__FILE__).realpath
10
+
11
+ # add self to libpath
12
+ $:.unshift File.expand_path("../../lib", bin_file)
13
+
14
+ # start up the app42
15
+ App42::Command::Client.app42(*ARGV)
data/lib/app42.rb ADDED
@@ -0,0 +1,23 @@
1
+ $: << File.dirname(__FILE__)
2
+
3
+ require 'app42/version'
4
+
5
+ command_files = "../app42/{base,client,util}/*.rb"
6
+ Dir[File.expand_path(command_files, __FILE__)].each do |file|
7
+ require file
8
+ end
9
+
10
+ module App42
11
+
12
+ APP42_AGENT = "app42-gem(#{App42::Version::VERSION::VERSION}) (#{RUBY_PLATFORM}) ruby(#{RUBY_VERSION})"
13
+
14
+ def self.user_agent
15
+ @@user_agent ||= APP42_AGENT
16
+ end
17
+
18
+ def self.user_agent=(agent)
19
+ @@user_agent = agent
20
+ end
21
+
22
+
23
+ end
@@ -0,0 +1,33 @@
1
+ module App42
2
+
3
+ # app42 server version
4
+ VERSION = 1.0.to_s
5
+
6
+ # app42 host url
7
+ # FIXME, need to fix before release
8
+ HOST = "http://54.218.127.212:8081/paas/#{VERSION}"
9
+
10
+ # app42 configuration directory
11
+ CONFIG_DIR = "~/.app42".freeze
12
+
13
+ # TODO, need to configure for client log
14
+ LOGS_DIR = "#{CONFIG_DIR}/logs".freeze
15
+ KEYS_FILE = "#{CONFIG_DIR}/app42paas.yml".freeze
16
+
17
+ JSON_MIME_TYPE = "application/json".freeze
18
+ XML_MIME_TYPE = "application/xml".freeze
19
+
20
+ # Error codes
21
+ APP42_HTTP_ERROR_CODES = [ 1500 ]
22
+
23
+ DATABASE_NAME_NOT_ALLOWED = %w(mysql couchdb mongodb postgresql database)
24
+
25
+ # regex for special character
26
+ SPECIAL = "?<>',?[]}{=-)(*&^%$#`~{}@ .+!_/"
27
+ REGEX = /[#{SPECIAL.gsub(/./){|char| "\\#{char}"}}]/
28
+
29
+ # regex for IP Address
30
+ IP_REGEX = /^([0]?\d\d?|1[0-1,3-9]\d|12[0-6,8-9]|2[0-4]d|25[0-5])\.([01]?\d\d?|2[0-4]\d|25[0-5])\.([01]?\d\d?|2[0-4]\d|25[0-5])\.((?!0)|(?!1)|010|(01[0-9]{1,1}&0[1-9]{1,2})|0[0-9]{1,1}[1-9]{1,1}|[2-9]{0,2}|1[0-9]{1,2}|2[0-4]\d|25[0-4])$/
31
+
32
+
33
+ end
@@ -0,0 +1,717 @@
1
+ require 'paint'
2
+
3
+ # list commands and display help
4
+ #
5
+ module App42
6
+ module Base
7
+ class Help
8
+
9
+ #
10
+ # details how to use app42 commands
11
+ #
12
+ def self.how_to
13
+ Paint["Usage: app42 COMMAND [command-specific-options]", :blue]
14
+ end
15
+
16
+ #
17
+ # list available commands or display help for a specific command
18
+ #
19
+ def self.commands
20
+
21
+ print <<-USAGE
22
+
23
+ #{how_to}
24
+
25
+ Key
26
+ keys # List API key and Secret key
27
+ addKeys # Add API key and Secret key
28
+ clearKeys # Clear API key and Secret key
29
+
30
+ Applications
31
+ setupInfra # Setup your deployment and runtime environment i.e. Instance(Memory, CPU) and Technology Stack
32
+ deploy # Deploy the application over your runtime environment
33
+ scale # Scale application by number of instance(s)
34
+ descale # Descale application by number of instance(s)
35
+ start # Start the application
36
+ stop # Stop the application
37
+ restart # Restart the application
38
+ deleteInfra # Delete the Infrastructure environment
39
+ apps # List all the deployed applications with their meta details
40
+ appInfo # Show meta information of the application
41
+ appState # Show current state of the application
42
+ logs # Returns the log file URLs for the application
43
+
44
+ Services
45
+ createService # Creates a new service e.g. MySQL, MongoDB, CouchDB, PostgreSQL etc.
46
+ deleteService # Delete provisioned service
47
+ services # List all the provisioned services with their meta details
48
+ serviceInfo # Show meta information of the provisioned service
49
+ resetServicePassword # Reset password of provisioned service
50
+ bindIP # Bind IP to provisioned service
51
+ unbindIP # Unbind IP from provisioned service
52
+ bindInfo # Show IP bind information related to provisioned service
53
+
54
+ Misc
55
+ supportedServices # List supported services by App42
56
+ iaasProviders # List supported IaaS providers by App42
57
+ runtimes # List supported runtimes by App42
58
+
59
+ Help
60
+ version # Show Ruby client gem version
61
+ help # List available commands and their description
62
+ COMMAND --help # Display detailed help of a specific command
63
+ USAGE
64
+ end
65
+
66
+ def self.keys_help
67
+ print <<-USAGE
68
+ #{how_to}
69
+ app42 api_key:add [KEY] # add a api key for the current user
70
+ app42 secret_key:add [KEY] # add a Secret Key for the current user
71
+ app42 keys:clear # remove all authentication keys from the current user
72
+
73
+ USAGE
74
+
75
+ end
76
+
77
+ # call help methods
78
+ def Help.usage command
79
+ if self.respond_to?(command)
80
+ send command
81
+ elsif self.respond_to?(command.split(':').last)
82
+ send command.split(':').last
83
+ elsif self.respond_to?(command.split('-').join('_'))
84
+ send command.split('-').join('_')
85
+ else
86
+ Paint["Sorry..!!, Help is not available.\n", :red]
87
+ end
88
+
89
+ end
90
+
91
+ class << self
92
+
93
+ def keys
94
+ print <<-DESC
95
+ Usage:
96
+ app42 keys
97
+
98
+ List API key and Secret key
99
+
100
+ Example:
101
+ === API/Secret Key ===
102
+ API Key = <apiKey>
103
+ Secret Key = <secretKey>
104
+ DESC
105
+ end
106
+
107
+ def addKeys
108
+ print <<-DESC
109
+ Usage:
110
+ app42 addKeys
111
+
112
+ Add API key and Secret key
113
+
114
+ Options:
115
+ [--apiKey=API_KEY] # API Key to add.
116
+ [--secretKey=SECRET_KEY] # Secret Key to add.
117
+
118
+ Example:
119
+ $app42 addKeys
120
+ == Enter your App42PaaS keys ==
121
+ Enter API Key:: <apiKey>
122
+ Enter Secret Key:: <secretKey>
123
+ Adding keys...done
124
+ DESC
125
+ end
126
+
127
+ def clearKeys
128
+ print <<-DESC
129
+ Usage:
130
+ app42 clearKeys
131
+
132
+ Clear API key and Secret key from dev system
133
+
134
+ Example:
135
+ app42 clearKeys
136
+ == Local credentials cleared ==
137
+ DESC
138
+ end
139
+
140
+ def setupInfra
141
+ print <<-DESC
142
+ Usage:
143
+ app42 setupInfra
144
+
145
+ Setup the complete runtime environment
146
+
147
+ Example:
148
+ $app42 setupInfra
149
+ 1: Shared
150
+ Select Virtual Machine Type: 1
151
+ 1: Amazon
152
+ Select IaaS Provider: 1
153
+ Application Name: demo
154
+ Checking App Name Availability... OK
155
+ 1: Ruby
156
+ 2: Java
157
+ 3: Php
158
+ 4: Node
159
+ Select Runtime: 2
160
+ 1: Grails 1.3.7
161
+ Select Framework: 1
162
+ 1: Tomcat 6.0.36
163
+ Select Web Server: 1
164
+ 1: 512MB
165
+ 2: 1024MB
166
+ 3: 2048MB
167
+ Memory Limit: 1
168
+ Creating Infrastructure... OK
169
+ Latest Status....|
170
+ Setup Infrastructure successfully done.
171
+
172
+ Default Application Deployed. URL is : demo.aws.app42paas.com
173
+ DESC
174
+
175
+ end
176
+
177
+ def apps
178
+ print <<-DESC
179
+ Usage:
180
+ app42 apps
181
+
182
+ Deploy the application over runtime environment
183
+
184
+ Example:
185
+ $app42 apps
186
+
187
+ +------------------------+------------+-----------------+---------------+---------+------+
188
+ | === My Apps === |
189
+ +------------------------+------------+-----------------+---------------+---------+------+
190
+ | App Url | App Status | Container Count | Iaas Provider | Vm Type | Name |
191
+ +------------------------+------------+-----------------+---------------+---------+------+
192
+ | demo.aws.app42paas.com | RUNNING | 1 | Amazon | Shared | demo |
193
+ +------------------------+------------+-----------------+---------------+---------+------+
194
+ DESC
195
+
196
+ end
197
+
198
+ def deploy
199
+ print <<-DESC
200
+ Usage:
201
+ app42 deploy
202
+
203
+ Deploy application
204
+
205
+ Options:
206
+ [--app APP] # Name of app, you want to update
207
+
208
+ Example:
209
+ $app42 deploy
210
+ Enter App Name: demo
211
+ Would you like to deploy from the current directory? [Yn]: n
212
+ Binary Deployment Path: /home/ubuntu/workspace/Deploycode/ruby
213
+ Deploying Application... OK
214
+ Latest Status....|
215
+ 1 out of 1 Uploaded
216
+ Application deployed successfully.
217
+ DESC
218
+
219
+ end
220
+
221
+ def update
222
+ print <<-DESC
223
+ Usage:
224
+ app42 update
225
+
226
+ Update existing application
227
+
228
+ Options:
229
+ [--app APP] # Name of app, you want to update
230
+
231
+ Example:
232
+ $app42 update
233
+ Enter App Name: demo
234
+ Would you like to deploy from the current directory? [Yn]: n
235
+ Binary Deployment Path: /home/ubuntu/workspace/Deploycode/ruby
236
+ Deploying Application... OK
237
+ Latest Status....|
238
+ 1 out of 1 Uploaded
239
+ Application deployed successfully.
240
+
241
+ DESC
242
+ end
243
+
244
+ def start
245
+ print <<-DESC
246
+ Usage:
247
+ app42 start
248
+
249
+ Start the application
250
+
251
+ Options:
252
+ [--app APP] # Name of app, you want to start
253
+
254
+ Example:
255
+ $app42 start --app demo
256
+ Starting app demo ...Done
257
+ DESC
258
+
259
+ end
260
+
261
+ def stop
262
+ print <<-DESC
263
+ Usage:
264
+ app42 stop
265
+
266
+ Stop the application
267
+
268
+ Options:
269
+ [--app APP] # Name of app, you want to stop
270
+
271
+ Example:
272
+ $app42 stop --app demo
273
+ Stopping app demo ...Done
274
+ DESC
275
+ end
276
+
277
+ def restart
278
+ print <<-DESC
279
+ Usage:
280
+ app42 restart
281
+
282
+ Restart the application
283
+
284
+ Options:
285
+ [--app APP] # Name of app, you want to restart
286
+
287
+ Example:
288
+ $app42 start --app demo
289
+ Restarting app demo ...Done
290
+ DESC
291
+ end
292
+
293
+ def deleteInfra
294
+ print <<-DESC
295
+ Usage:
296
+ app42 deleteInfra
297
+
298
+ Delete the Infrastructure environment
299
+
300
+ Options:
301
+ [--app APP] # Name of app, you want to delete
302
+
303
+ Example:
304
+ $app42 deleteInfra --app demo
305
+ Deleting app demo ...Done
306
+ DESC
307
+ end
308
+
309
+ def descale
310
+ print <<-DESC
311
+ Usage:
312
+ app42 descale
313
+
314
+ Descale application by number of instance(s)
315
+
316
+ Options:
317
+ [--app APP] # Name of app, you want to descale
318
+
319
+ Example:
320
+ $app42 descale --app demo
321
+ Descale by instance(s): 1
322
+ Descaling Application demo by instance 1... OK
323
+ Please wait... It may take few minutes to complete.
324
+
325
+ Latest Status....|
326
+ Descale completed successfully.
327
+ DESC
328
+ end
329
+
330
+ def scale
331
+ print <<-DESC
332
+ Usage:
333
+ app42 scale
334
+
335
+ Scale application by number of instance(s)
336
+
337
+ Options:
338
+ [--app APP] # Name of app, you want to scale
339
+
340
+ Example:
341
+ $app42 scale --app demo
342
+ Scale by instance(s): 1
343
+ Scaling Application demo by instance 1... OK
344
+ Please wait... It may take few minutes to complete.
345
+
346
+ Latest Status....|
347
+ Scale completed successfully.
348
+
349
+
350
+ DESC
351
+ end
352
+
353
+ def appInfo
354
+ print <<-DESC
355
+ Usage:
356
+ app42 appInfo
357
+
358
+ Show the meta information of the application
359
+
360
+ Options:
361
+ [--app APP] # Name of app, you want to info
362
+
363
+ Example:
364
+ $app42 appInfo --app demo
365
+ Application Name: demo
366
+ +------------------------+------------+---------------+------+----------+----------------+--------+
367
+ | === demo Info === |
368
+ +------------------------+------------+---------------+------+----------+----------------+--------+
369
+ | App Url | App Status | Iaas Provider | Name | Runtime | Instance Count | Memory |
370
+ +------------------------+------------+---------------+------+----------+----------------+--------+
371
+ | demo.aws.app42paas.com | RUNNING | Amazon | demo | Ruby 2.0 | 1 | 512 MB |
372
+ +------------------------+------------+---------------+------+----------+----------------+--------+
373
+ DESC
374
+ end
375
+
376
+ def appState
377
+ print <<-DESC
378
+ Usage:
379
+ app42 appState
380
+
381
+ Show current state of the application
382
+
383
+ Options:
384
+ [--app APP] # Name of app
385
+
386
+ Example:
387
+ $app42 appState --app demo
388
+ +--------------------+
389
+ | === demo State === |
390
+ +--------------------+
391
+ | RUNNING |
392
+ +--------------------+
393
+ DESC
394
+ end
395
+
396
+ def logs
397
+ print <<-DESC
398
+ Usage:
399
+ app42 logs
400
+
401
+ Returns the log URLs for the application
402
+
403
+ Example:
404
+ $app42 logs
405
+ Enter App Name: demo
406
+ Please visit below URL(s) to access app logs
407
+
408
+ +----------------------------------------------------------------------------+
409
+ | Log URL(s) |
410
+ +----------------------------------------------------------------------------+
411
+ | demo.aws.app42paas.com/getInstanceLog?id=fi1nyi7bh68nvz0riyqrfup8lkm57qiu |
412
+ | demo.aws.app42paas.com/getInstanceLog?id=v1bta5rg2tsycat31r3pzc28sa7d1bjy |
413
+ +----------------------------------------------------------------------------+
414
+ DESC
415
+ end
416
+
417
+
418
+ def createService
419
+ print <<-DESC
420
+ Usage:
421
+ app42 createService
422
+
423
+ Creates a new service
424
+
425
+ Example:
426
+ $app42 createService
427
+ 1: Mysql
428
+ 2: Mongodb
429
+ Select Service: 1
430
+ Enter Service Name: mysql-demo
431
+ Enter Database Name: demo_dev
432
+ 1: Shared
433
+ Select Virtual Machine Type: 1
434
+ 1: Amazon
435
+ Select IaaS Provider: 1
436
+ 1: 512MB
437
+ 2: 1024MB
438
+ 3: 2048MB
439
+ Memory Limit: 1
440
+ Creating Service... OK
441
+ Latest Status....|
442
+ Service successfully created.
443
+
444
+ +---------------+---------------+---------+---------------+------------------+---------+--------------+----------------------------------+--------------+
445
+ | === mysql-demo Details === |
446
+ +---------------+---------------+---------+---------------+------------------+---------+--------------+----------------------------------+--------------+
447
+ | Database Name | Iaas Provider | Vm Type | Vm Ip | User Name | Vm Port | Service Type | Password | Service Name |
448
+ +---------------+---------------+---------+---------------+------------------+---------+--------------+----------------------------------+--------------+
449
+ | demo_dev | Amazon | Shared | xx.yyy.zzz.aa | xxxxxxxxxxxxxxxx | 45074 | mysql55 | xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx | mysql-demo |
450
+ +---------------+---------------+---------+---------------+------------------+---------+--------------+----------------------------------+--------------+
451
+ DESC
452
+ end
453
+
454
+ def deleteService
455
+ print <<-DESC
456
+ Usage:
457
+ app42 deleteService
458
+
459
+ Delete the provisioned service
460
+
461
+ Options:
462
+ [--service SERVICE] # Name of service
463
+
464
+ Example:
465
+ $app42 deleteService
466
+ 1: mysql-demo
467
+ 2: mysql-test
468
+ Select Service: 1
469
+ Latest Status....-
470
+ 1 out of 1 deleted
471
+ Service mysql-demo successfully deleted.
472
+
473
+ DESC
474
+ end
475
+
476
+ def services
477
+ print <<-DESC
478
+ Usage:
479
+ app42 services
480
+
481
+ List the all provisioned services with their meta details
482
+
483
+ Example:
484
+ $app42 services
485
+ +---------------+---------+----------+--------------+
486
+ | === Service List === |
487
+ +---------------+---------+----------+--------------+
488
+ | Iaas Provider | Vm Type | Name | Service Type |
489
+ +---------------+---------+----------+--------------+
490
+ | Amazon | Shared | demo_dev | mysql55 |
491
+ +---------------+---------+----------+--------------+
492
+ DESC
493
+ end
494
+
495
+ def serviceInfo
496
+ print <<-DESC
497
+ Usage:
498
+ app42 serviceInfo
499
+
500
+ Show the meta information of the provisioned service
501
+
502
+ Options:
503
+ [--service SERVICE] # Name of service
504
+
505
+ Example:
506
+ $app42 serviceInfo
507
+ 1: mysqldemo
508
+ Select Service: 1
509
+
510
+ +---------------+---------------+-----------+---------+------------------+---------+--------------+----------------------------------+--------+--------------+
511
+ | === mysqldemo Details === |
512
+ +---------------+---------------+-----------+---------+------------------+---------+--------------+----------------------------------+--------+--------------+
513
+ | Database Name | Iaas Provider | Vm Ip | State | User Name | Vm Port | Service Type | Password | Memory | Service Name |
514
+ +---------------+---------------+-----------+---------+------------------+---------+--------------+----------------------------------+--------+--------------+
515
+ | demodb | Amazon | 10.0.0.52 | RUNNING | 5hk1tmdmkr16b94f | 52108 | MySQL 5.5.1 | 2otwxwpu8mskmmvwt7bx4r2fzw4ytls0 | 512 MB | mysqldemo |
516
+ +---------------+---------------+-----------+---------+------------------+---------+--------------+----------------------------------+--------+--------------+
517
+ DESC
518
+ end
519
+
520
+ def supportedServices
521
+ print <<-DESC
522
+ Usage:
523
+ app42 supportedServices
524
+
525
+ List the supported services by App42
526
+
527
+ Example:
528
+ $app42 supportedServices
529
+ +--------------+-----------------+
530
+ | === App42 PaaS Services === |
531
+ +--------------+-----------------+
532
+ | Name | Service Version |
533
+ +--------------+-----------------+
534
+ | Mysql | 5.5.1 |
535
+ | Mongodb | 2.4 |
536
+ +--------------+-----------------+
537
+ DESC
538
+ end
539
+
540
+ def runtimes
541
+ print <<-DESC
542
+ Usage:
543
+ app42 runtimes
544
+
545
+ List the supported runtimes
546
+
547
+ Example:
548
+ $app42 runtimes
549
+ +--------------+--------------+
550
+ | === Available Runtimes === |
551
+ +--------------+--------------+
552
+ | Name | Version |
553
+ +--------------+--------------+
554
+ | Ruby | 2.0 |
555
+ | Java | 6.0 |
556
+ | Java | 7.0 |
557
+ | Php | 5.5 |
558
+ +--------------+--------------+
559
+ DESC
560
+ end
561
+
562
+ def iaasProviders
563
+ print <<-DESC
564
+ Usage:
565
+ app42 iaasProviders
566
+
567
+ List the supported IaaS providers by App42
568
+
569
+ Example:
570
+ $app42 iaasProviders
571
+ +-----------------+-----------------+
572
+ | === Available IaaS Providers === |
573
+ +-----------------+-----------------+
574
+ | Name | Zone |
575
+ +-----------------+-----------------+
576
+ | Amazon | US West-2a |
577
+ +-----------------+-----------------+
578
+
579
+ DESC
580
+ end
581
+
582
+
583
+ def app42_update
584
+ print <<-DESC
585
+ Usage:
586
+ app42 app42-update
587
+
588
+ Update App42PaaS client(app42)
589
+ -> Download app42 client, In a terminal, go to the folder where you have downloaded the client and run client update command.
590
+
591
+ Example:
592
+ $app42 app42-update
593
+ Uninstalling current app42 client
594
+ Remove executables:
595
+ app42
596
+
597
+ in addition to the gem? [Yn] y
598
+ Removing app42
599
+ Successfully uninstalled app42-0.5.0
600
+ Installing latest app42 client
601
+ Successfully installed app42-0.5.0
602
+ 1 gem installed
603
+ Installing ri documentation for app42-0.5.0...
604
+ Installing RDoc documentation for app42-0.5.0...
605
+ DESC
606
+ end
607
+
608
+ def resetServicePassword
609
+ print <<-DESC
610
+ Usage:
611
+ resetServicePassword
612
+
613
+ Reset the password of provisioned service
614
+
615
+ Example:
616
+ $resetServicePassword
617
+ Enter Service Name: mysql_demo
618
+ Enter Old Password: 1pc8a09ise98nutrqzouj5ya98vtd08y
619
+ Resetting Password... OK
620
+ Please wait it may takes few minutes.
621
+
622
+ Latest Status....
623
+ Reset Password successful.Your new password is: quzg6bogsu0ak3rwyr0egs8a1ttgc9tt
624
+ DESC
625
+ end
626
+
627
+ def bindIP
628
+ print <<-DESC
629
+ Usage:
630
+ app42 bindIP
631
+
632
+ Bind IP to a service
633
+
634
+ Example:
635
+ $app42 bindIP
636
+ Enter Service Name: mysql_demo
637
+ Please Provide Source IP
638
+ (0.0.0.0, for public access): 0.0.0.0/0
639
+ Please provide the time duration you want to access service(0 for unlimited access[in hours]): 2
640
+ Binding IP to service... OK
641
+ Please wait it may takes few minutes.
642
+
643
+ Latest Status....|
644
+ Bind service successful.
645
+
646
+ +------------------+--------------+---------------+---------+----------------+-----------+------------------+---------+--------------+----------------------------------+--------+--------------+
647
+ | === mysql_demo Details === |
648
+ +------------------+--------------+---------------+---------+----------------+-----------+------------------+---------+--------------+----------------------------------+--------+--------------+
649
+ | Database Name | Os | Iaas Provider | Vm Type | Vm Ip | Source Ip | User Name | Vm Port | Service Type | Password | Memory | Service Name |
650
+ +------------------+--------------+---------------+---------+----------------+-----------+------------------+---------+--------------+----------------------------------+--------+--------------+
651
+ | demo_development | Ubuntu 12.10 | Amazon | Shared | 54.218.127.245 | 0.0.0.0/0 | 4gxu2btjrh7p1ku5 | 20830 | MySQL 5.5.1 | c8f6ynn0p065wzh7i2802pi5nfpfyr58 | 512 MB | mysql_demo |
652
+ +------------------+--------------+---------------+---------+----------------+-----------+------------------+---------+--------------+----------------------------------+--------+--------------+
653
+ DESC
654
+ end
655
+
656
+ def unbindIP
657
+ print <<-DESC
658
+ Usage:
659
+ app42 unbindIP
660
+
661
+ Unbind service from the application
662
+
663
+ Example:
664
+ $app42 unbindIP
665
+ Enter Service Name: mysql_demo
666
+ Please Provide Source IP
667
+ (0.0.0.0, for public access): 0.0.0.0/0
668
+ Unbinding IP to service... OK
669
+ Please wait it may takes few minutes.
670
+
671
+ Latest Status....-
672
+ Unbind service successful.
673
+ DESC
674
+ end
675
+
676
+ def bindInfo
677
+ print <<-DESC
678
+ Usage:
679
+ app42 bindInfo
680
+
681
+ Show IP bind information
682
+
683
+ Example:
684
+ $app42 bindInfo
685
+ 1: mysql_demo
686
+ Select Service: 1
687
+ +------------------+--------------+---------------+---------+----------------+-----------+------------------+---------+--------------+----------------------------------+--------+--------------+
688
+ | === mysql_demo Details === |
689
+ +------------------+--------------+---------------+---------+----------------+-----------+------------------+---------+--------------+----------------------------------+--------+--------------+
690
+ | Database Name | Os | Iaas Provider | Vm Type | Vm Ip | Source Ip | User Name | Vm Port | Service Type | Password | Memory | Service Name |
691
+ +------------------+--------------+---------------+---------+----------------+-----------+------------------+---------+--------------+----------------------------------+--------+--------------+
692
+ | demo_development | Ubuntu 12.10 | Amazon | Shared | 54.218.127.245 | 0.0.0.0/0 | 4gxu2btjrh7p1ku5 | 20830 | MySQL 5.5.1 | c8f6ynn0p065wzh7i2802pi5nfpfyr58 | 512 MB | mysql_demo |
693
+ +------------------+--------------+---------------+---------+----------------+-----------+------------------+---------+--------------+----------------------------------+--------+--------------+
694
+
695
+
696
+ DESC
697
+ end
698
+
699
+ def version
700
+ print <<-DESC
701
+ Usage:
702
+ app42 version
703
+
704
+ Show Ruby client gem version
705
+
706
+ Example:
707
+ $app42 version
708
+ App42 current version: 0.5.3
709
+ DESC
710
+
711
+ end
712
+
713
+ end
714
+
715
+ end
716
+ end
717
+ end