app42 0.5.5 → 0.5.6
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.
- checksums.yaml +4 -4
 - data/README.md +90 -58
 - data/lib/app42/base/constants.rb +0 -1
 - data/lib/app42/base/help.rb +271 -54
 - data/lib/app42/base/message.rb +2 -0
 - data/lib/app42/base/shell.rb +9 -1
 - data/lib/app42/base/util.rb +97 -6
 - data/lib/app42/client/app42_rest_client.rb +0 -8
 - data/lib/app42/command/app.rb +47 -34
 - data/lib/app42/command/authorize.rb +1 -1
 - data/lib/app42/command/base.rb +208 -30
 - data/lib/app42/command/client.rb +23 -2
 - data/lib/app42/command/config.rb +14 -0
 - data/lib/app42/command/info.rb +1 -1
 - data/lib/app42/command/service.rb +23 -2
 - data/lib/app42/command/setup.rb +89 -0
 - data/lib/app42/version.rb +1 -1
 - data/spec/app42/base/constants_spec.rb +1 -1
 - data/spec/app42/command/app_spec.rb +4 -4
 - data/spec/app42/command/info_spec.rb +5 -5
 - data/spec/app42/command/service_spec.rb +4 -4
 - metadata +2 -2
 - data/TODO.txt +0 -36
 
| 
         @@ -0,0 +1,89 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            require 'app42/command/base'
         
     | 
| 
      
 2 
     | 
    
         
            +
            require 'terminal-table'
         
     | 
| 
      
 3 
     | 
    
         
            +
             
     | 
| 
      
 4 
     | 
    
         
            +
            module App42
         
     | 
| 
      
 5 
     | 
    
         
            +
              module Command
         
     | 
| 
      
 6 
     | 
    
         
            +
                class Setup < Base
         
     | 
| 
      
 7 
     | 
    
         
            +
             
     | 
| 
      
 8 
     | 
    
         
            +
                  # Collect all required attributes for new App42 clould setup spawn
         
     | 
| 
      
 9 
     | 
    
         
            +
                  # required inputs are setup_name, vm_type, iaas, setup_type and flavour
         
     | 
| 
      
 10 
     | 
    
         
            +
                  def setup_cloud_api
         
     | 
| 
      
 11 
     | 
    
         
            +
                    setup_name = get_setup_name_and_check_setup_url_availability
         
     | 
| 
      
 12 
     | 
    
         
            +
                    vm_type = get_vm_types
         
     | 
| 
      
 13 
     | 
    
         
            +
                    iaas = get_iaas_providers
         
     | 
| 
      
 14 
     | 
    
         
            +
                    setup_type = get_setup_type
         
     | 
| 
      
 15 
     | 
    
         
            +
                    flavour = get_flavour
         
     | 
| 
      
 16 
     | 
    
         
            +
                    setup_cloud_api_res = App42::Command::Base.new.create_cloud_setup setup_name, iaas, vm_type, setup_type, flavour
         
     | 
| 
      
 17 
     | 
    
         
            +
                    exit! if setup_infra_res
         
     | 
| 
      
 18 
     | 
    
         
            +
                  end
         
     | 
| 
      
 19 
     | 
    
         
            +
             
     | 
| 
      
 20 
     | 
    
         
            +
                  # Delete App42 cloud API setup, return true or error code/message
         
     | 
| 
      
 21 
     | 
    
         
            +
                  def delete_cloud_api
         
     | 
| 
      
 22 
     | 
    
         
            +
                    @options[:name] = get_setup_name if @options[:name].nil?
         
     | 
| 
      
 23 
     | 
    
         
            +
                    response = delete_clouldapi @options[:name] if is_setup_name_exist? @options[:name]
         
     | 
| 
      
 24 
     | 
    
         
            +
                    exit! if response
         
     | 
| 
      
 25 
     | 
    
         
            +
                  end
         
     | 
| 
      
 26 
     | 
    
         
            +
             
     | 
| 
      
 27 
     | 
    
         
            +
                  # return setup type
         
     | 
| 
      
 28 
     | 
    
         
            +
                  def get_setup_type
         
     | 
| 
      
 29 
     | 
    
         
            +
                  	setup_type_hash = {}
         
     | 
| 
      
 30 
     | 
    
         
            +
                    setup_type = App42::Command::Config.new.get_setup_type_fm_server
         
     | 
| 
      
 31 
     | 
    
         
            +
             
     | 
| 
      
 32 
     | 
    
         
            +
                    setup_type['setupTypes'].select {|each_setup_type| setup_type_hash["#{each_setup_type['id']}"] = each_setup_type['name']}
         
     | 
| 
      
 33 
     | 
    
         
            +
                    setup = input "Select Setup Type", setup_type_hash.values, true
         
     | 
| 
      
 34 
     | 
    
         
            +
             
     | 
| 
      
 35 
     | 
    
         
            +
                    setup_type_id = nil
         
     | 
| 
      
 36 
     | 
    
         
            +
                    setup_type_hash.each_pair{|type| setup_type_id = type[0] if type[1] == setup}
         
     | 
| 
      
 37 
     | 
    
         
            +
                    return setup_type_id
         
     | 
| 
      
 38 
     | 
    
         
            +
                  end
         
     | 
| 
      
 39 
     | 
    
         
            +
             
     | 
| 
      
 40 
     | 
    
         
            +
                  # return flavour
         
     | 
| 
      
 41 
     | 
    
         
            +
                  def get_flavour
         
     | 
| 
      
 42 
     | 
    
         
            +
                  	flavour_hash = {}
         
     | 
| 
      
 43 
     | 
    
         
            +
            	      flavour_type = App42::Command::Config.new.get_flavour_type_fm_server
         
     | 
| 
      
 44 
     | 
    
         
            +
                    flavour_type['flavours'].select {|each_flavour| flavour_hash["#{each_flavour['id']}"] = each_flavour['name']}
         
     | 
| 
      
 45 
     | 
    
         
            +
            	      flavour = input "Select Flavour", flavour_hash.values, true
         
     | 
| 
      
 46 
     | 
    
         
            +
             
     | 
| 
      
 47 
     | 
    
         
            +
            	      flavour_id = nil
         
     | 
| 
      
 48 
     | 
    
         
            +
            	      flavour_hash.each_pair{|fl| flavour_id = fl[0] if fl[1] == flavour}
         
     | 
| 
      
 49 
     | 
    
         
            +
            	      return flavour_id
         
     | 
| 
      
 50 
     | 
    
         
            +
                  end
         
     | 
| 
      
 51 
     | 
    
         
            +
             
     | 
| 
      
 52 
     | 
    
         
            +
                  # get details information of App42 cloud setup
         
     | 
| 
      
 53 
     | 
    
         
            +
                  def info
         
     | 
| 
      
 54 
     | 
    
         
            +
                    @options[:name] = get_setup_name if @options[:name].nil?
         
     | 
| 
      
 55 
     | 
    
         
            +
                    query_params = params
         
     | 
| 
      
 56 
     | 
    
         
            +
                    query_params.store('setupName', @options[:name])
         
     | 
| 
      
 57 
     | 
    
         
            +
                    setup_info = build_get_request query_params, 'setup', "#{@options[:name]}"
         
     | 
| 
      
 58 
     | 
    
         
            +
                    rows, rows_header_final, rows_header = [], [], nil
         
     | 
| 
      
 59 
     | 
    
         
            +
                    if setup_info && setup_info['setupInfo']
         
     | 
| 
      
 60 
     | 
    
         
            +
                      rows_header = setup_info['setupInfo'].keys 
         
     | 
| 
      
 61 
     | 
    
         
            +
                      rows << setup_info['setupInfo'].values
         
     | 
| 
      
 62 
     | 
    
         
            +
             
     | 
| 
      
 63 
     | 
    
         
            +
                      rows_header.map { |e| rows_header_final << camel_case_to_whitespace(e) }
         
     | 
| 
      
 64 
     | 
    
         
            +
                      
         
     | 
| 
      
 65 
     | 
    
         
            +
                      table = Terminal::Table.new  :title => Paint["=== #{@options[:name]} Details ===", :green], :headings => rows_header_final, :rows => rows
         
     | 
| 
      
 66 
     | 
    
         
            +
                      puts table
         
     | 
| 
      
 67 
     | 
    
         
            +
                    end
         
     | 
| 
      
 68 
     | 
    
         
            +
                  end
         
     | 
| 
      
 69 
     | 
    
         
            +
             
     | 
| 
      
 70 
     | 
    
         
            +
                  # List all setups
         
     | 
| 
      
 71 
     | 
    
         
            +
                  def setups
         
     | 
| 
      
 72 
     | 
    
         
            +
                    query_params = params
         
     | 
| 
      
 73 
     | 
    
         
            +
                    setups = build_get_request query_params, 'setup', nil
         
     | 
| 
      
 74 
     | 
    
         
            +
                    rows, rows_header_final, rows_header = [], [], nil
         
     | 
| 
      
 75 
     | 
    
         
            +
                    if setups && setups['setups']
         
     | 
| 
      
 76 
     | 
    
         
            +
                      setups['setups'].each do |e|
         
     | 
| 
      
 77 
     | 
    
         
            +
                        rows_header = e.keys 
         
     | 
| 
      
 78 
     | 
    
         
            +
                        rows << e.values
         
     | 
| 
      
 79 
     | 
    
         
            +
                      end
         
     | 
| 
      
 80 
     | 
    
         
            +
             
     | 
| 
      
 81 
     | 
    
         
            +
                      rows_header.map { |e| rows_header_final << camel_case_to_whitespace(e) }
         
     | 
| 
      
 82 
     | 
    
         
            +
             
     | 
| 
      
 83 
     | 
    
         
            +
                      table = Terminal::Table.new  :title => Paint["=== Setups List ===", :green], :headings => rows_header_final, :rows => rows
         
     | 
| 
      
 84 
     | 
    
         
            +
                      puts table
         
     | 
| 
      
 85 
     | 
    
         
            +
                    end
         
     | 
| 
      
 86 
     | 
    
         
            +
                  end
         
     | 
| 
      
 87 
     | 
    
         
            +
               end
         
     | 
| 
      
 88 
     | 
    
         
            +
              end
         
     | 
| 
      
 89 
     | 
    
         
            +
            end
         
     | 
    
        data/lib/app42/version.rb
    CHANGED
    
    
| 
         @@ -59,17 +59,17 @@ describe 'App42::Command' do 
     | 
|
| 
       59 
59 
     | 
    
         
             
                  end	
         
     | 
| 
       60 
60 
     | 
    
         | 
| 
       61 
61 
     | 
    
         
             
                  it 'Should return correct app information json' do
         
     | 
| 
       62 
     | 
    
         
            -
                     
     | 
| 
      
 62 
     | 
    
         
            +
                    response = App42::Command::Base.new.app_information 'info', @app_name
         
     | 
| 
       63 
63 
     | 
    
         
             
                    path = "#{APP_ROOT}/app42/spec/data/info.yml"
         
     | 
| 
       64 
64 
     | 
    
         
             
                    info = YAML.load_file(path)
         
     | 
| 
       65 
     | 
    
         
            -
                     
     | 
| 
      
 65 
     | 
    
         
            +
                    response.should eql info
         
     | 
| 
       66 
66 
     | 
    
         
             
                  end
         
     | 
| 
       67 
67 
     | 
    
         | 
| 
       68 
68 
     | 
    
         
             
                  it 'Should return correct app state json' do
         
     | 
| 
       69 
     | 
    
         
            -
                     
     | 
| 
      
 69 
     | 
    
         
            +
                    response = App42::Command::Base.new.app_information 'state', @app_name
         
     | 
| 
       70 
70 
     | 
    
         
             
                    path = "#{APP_ROOT}/app42/spec/data/state.yml"
         
     | 
| 
       71 
71 
     | 
    
         
             
                    info = YAML.load_file(path)
         
     | 
| 
       72 
     | 
    
         
            -
                     
     | 
| 
      
 72 
     | 
    
         
            +
                    response.should eql info
         
     | 
| 
       73 
73 
     | 
    
         
             
                  end
         
     | 
| 
       74 
74 
     | 
    
         | 
| 
       75 
75 
     | 
    
         
             
                  it 'Should delete app:' do
         
     | 
| 
         @@ -10,18 +10,18 @@ describe 'App42::Command' do 
     | 
|
| 
       10 
10 
     | 
    
         
             
                context("with right app name") do
         
     | 
| 
       11 
11 
     | 
    
         | 
| 
       12 
12 
     | 
    
         
             
              	  it 'Should return correct app information json' do
         
     | 
| 
       13 
     | 
    
         
            -
              	     
     | 
| 
      
 13 
     | 
    
         
            +
              	    response = App42::Command::Base.new.app_information 'info', @app_name
         
     | 
| 
       14 
14 
     | 
    
         
             
              	    path = "#{APP_ROOT}/app42/spec/data/info.yml"
         
     | 
| 
       15 
15 
     | 
    
         
             
              	    info = YAML.load_file(path)
         
     | 
| 
       16 
     | 
    
         
            -
              	     
     | 
| 
      
 16 
     | 
    
         
            +
              	    response.should eql info
         
     | 
| 
       17 
17 
     | 
    
         
             
              	  end
         
     | 
| 
       18 
18 
     | 
    
         | 
| 
       19 
19 
     | 
    
         
             
              	  it 'Should return correct app state json' do
         
     | 
| 
       20 
     | 
    
         
            -
              	     
     | 
| 
      
 20 
     | 
    
         
            +
              	    response = App42::Command::Base.new.app_information 'state', @app_name
         
     | 
| 
       21 
21 
     | 
    
         
             
              	    path = "#{APP_ROOT}/app42/spec/data/state.yml"
         
     | 
| 
       22 
22 
     | 
    
         
             
              	    info = YAML.load_file(path)
         
     | 
| 
       23 
     | 
    
         
            -
              	     
     | 
| 
      
 23 
     | 
    
         
            +
              	    response.should eql info
         
     | 
| 
       24 
24 
     | 
    
         
             
              	  end
         
     | 
| 
       25 
     | 
    
         
            -
             
     | 
| 
      
 25 
     | 
    
         
            +
            	  end
         
     | 
| 
       26 
26 
     | 
    
         
             
              end
         
     | 
| 
       27 
27 
     | 
    
         
             
            end
         
     | 
| 
         @@ -36,7 +36,7 @@ describe 'App42::Command' do 
     | 
|
| 
       36 
36 
     | 
    
         
             
                  end	
         
     | 
| 
       37 
37 
     | 
    
         | 
| 
       38 
38 
     | 
    
         
             
                  it 'Should return correct service information json' do
         
     | 
| 
       39 
     | 
    
         
            -
                     
     | 
| 
      
 39 
     | 
    
         
            +
                    response = App42::Command::Service.new.info
         
     | 
| 
       40 
40 
     | 
    
         
             
                  end
         
     | 
| 
       41 
41 
     | 
    
         | 
| 
       42 
42 
     | 
    
         
             
                  it 'Should reset service password' do
         
     | 
| 
         @@ -73,21 +73,21 @@ describe 'App42::Command' do 
     | 
|
| 
       73 
73 
     | 
    
         
             
                  end   
         
     | 
| 
       74 
74 
     | 
    
         
             
                end
         
     | 
| 
       75 
75 
     | 
    
         | 
| 
       76 
     | 
    
         
            -
                context "Create service, name contain special  
     | 
| 
      
 76 
     | 
    
         
            +
                context "Create service, name contain special character" do
         
     | 
| 
       77 
77 
     | 
    
         
             
                  it "Service name should not contain any special character and it's length should be less than 30." do
         
     | 
| 
       78 
78 
     | 
    
         
             
                    response = App42::Command::Base.new.create_service @service, @service_name_sc ,@database, @vm_type, @iaas, @vmconfig, @os
         
     | 
| 
       79 
79 
     | 
    
         
             
                  end   
         
     | 
| 
       80 
80 
     | 
    
         
             
                end
         
     | 
| 
       81 
81 
     | 
    
         | 
| 
       82 
82 
     | 
    
         
             
                # Unit testing
         
     | 
| 
       83 
     | 
    
         
            -
                it "Should return app42PaaS services  
     | 
| 
      
 83 
     | 
    
         
            +
                it "Should return app42PaaS services json" do
         
     | 
| 
       84 
84 
     | 
    
         
             
                  response = App42::Command::Service.new.get_services
         
     | 
| 
       85 
85 
     | 
    
         
             
                  path = "#{APP_ROOT}/app42/spec/data/services.yml"
         
     | 
| 
       86 
86 
     | 
    
         
             
                  services = YAML.load_file(path)
         
     | 
| 
       87 
87 
     | 
    
         
             
                  response.should eql services   
         
     | 
| 
       88 
88 
     | 
    
         
             
                end
         
     | 
| 
       89 
89 
     | 
    
         | 
| 
       90 
     | 
    
         
            -
                it "Should return user services  
     | 
| 
      
 90 
     | 
    
         
            +
                it "Should return user services json" do
         
     | 
| 
       91 
91 
     | 
    
         
             
                  response = App42::Command::Service.new.get_user_services
         
     | 
| 
       92 
92 
     | 
    
         
             
                  path = "#{APP_ROOT}/app42/spec/data/user_services.yml"
         
     | 
| 
       93 
93 
     | 
    
         
             
                  service = YAML.load_file(path)
         
     | 
    
        metadata
    CHANGED
    
    | 
         @@ -1,7 +1,7 @@ 
     | 
|
| 
       1 
1 
     | 
    
         
             
            --- !ruby/object:Gem::Specification
         
     | 
| 
       2 
2 
     | 
    
         
             
            name: app42
         
     | 
| 
       3 
3 
     | 
    
         
             
            version: !ruby/object:Gem::Version
         
     | 
| 
       4 
     | 
    
         
            -
              version: 0.5. 
     | 
| 
      
 4 
     | 
    
         
            +
              version: 0.5.6
         
     | 
| 
       5 
5 
     | 
    
         
             
            platform: ruby
         
     | 
| 
       6 
6 
     | 
    
         
             
            authors:
         
     | 
| 
       7 
7 
     | 
    
         
             
            - ShepHertz
         
     | 
| 
         @@ -191,7 +191,6 @@ files: 
     | 
|
| 
       191 
191 
     | 
    
         
             
            - LICENSE.txt
         
     | 
| 
       192 
192 
     | 
    
         
             
            - README.md
         
     | 
| 
       193 
193 
     | 
    
         
             
            - Rakefile
         
     | 
| 
       194 
     | 
    
         
            -
            - TODO.txt
         
     | 
| 
       195 
194 
     | 
    
         
             
            - app42.gemspec
         
     | 
| 
       196 
195 
     | 
    
         
             
            - bin/app42
         
     | 
| 
       197 
196 
     | 
    
         
             
            - lib/app42.rb
         
     | 
| 
         @@ -210,6 +209,7 @@ files: 
     | 
|
| 
       210 
209 
     | 
    
         
             
            - lib/app42/command/config.rb
         
     | 
| 
       211 
210 
     | 
    
         
             
            - lib/app42/command/info.rb
         
     | 
| 
       212 
211 
     | 
    
         
             
            - lib/app42/command/service.rb
         
     | 
| 
      
 212 
     | 
    
         
            +
            - lib/app42/command/setup.rb
         
     | 
| 
       213 
213 
     | 
    
         
             
            - lib/app42/command/user.rb
         
     | 
| 
       214 
214 
     | 
    
         
             
            - lib/app42/command/user_key.rb
         
     | 
| 
       215 
215 
     | 
    
         
             
            - lib/app42/version.rb
         
     | 
    
        data/TODO.txt
    DELETED
    
    | 
         @@ -1,36 +0,0 @@ 
     | 
|
| 
       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'
         
     |