civo_cli 0.3.14 → 0.3.15
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/CHANGELOG.md +4 -0
- data/Gemfile.lock +1 -1
- data/lib/ask_service.rb +22 -0
- data/lib/civo_cli/version.rb +1 -1
- data/lib/finder.rb +1 -1
- data/lib/kubernetes.rb +34 -2
- data/lib/kubernetes_applications.rb +28 -3
- metadata +3 -2
    
        checksums.yaml
    CHANGED
    
    | @@ -1,7 +1,7 @@ | |
| 1 1 | 
             
            ---
         | 
| 2 2 | 
             
            SHA256:
         | 
| 3 | 
            -
              metadata.gz:  | 
| 4 | 
            -
              data.tar.gz:  | 
| 3 | 
            +
              metadata.gz: 2aabcc396a2225eb28d5f2f79c73478007b634bb6de5d69f43db7c6f40318f84
         | 
| 4 | 
            +
              data.tar.gz: 7098b73a6754c32efdd137416bebf318867843875cbb5a2c31ba980d37b20488
         | 
| 5 5 | 
             
            SHA512:
         | 
| 6 | 
            -
              metadata.gz:  | 
| 7 | 
            -
              data.tar.gz:  | 
| 6 | 
            +
              metadata.gz: 24d185d2934e3138ae7c0bd4eb50b5c5580f684216bf9c4cb03d7cfc016713e0a3a14314643c97c16b52d9307af4dc4831d0550eb842d9b04ee8a7adca437ded
         | 
| 7 | 
            +
              data.tar.gz: 6a1d5caa05c0792fcc768aadef6c36984aea1faeaacf84748d3e1df4498995162dab7aa8a55049d0e0b60a10246f40610baaa835ad9fc586999ebe5d389dceea
         | 
    
        data/CHANGELOG.md
    CHANGED
    
    | @@ -3,6 +3,10 @@ All notable changes to the Civo CLI will be documented in this file. | |
| 3 3 |  | 
| 4 4 | 
             
            The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
         | 
| 5 5 |  | 
| 6 | 
            +
            ## [0.3.15] - 2019-08-30
         | 
| 7 | 
            +
            ### Add
         | 
| 8 | 
            +
            - Added plan support to the Kubernetes marketplace
         | 
| 9 | 
            +
             | 
| 6 10 | 
             
            ## [0.3.14] - 2019-08-28
         | 
| 7 11 | 
             
            ### Fixed
         | 
| 8 12 | 
             
            - Removed debug level logging for Kubernetes marketplace applications commands
         | 
    
        data/Gemfile.lock
    CHANGED
    
    
    
        data/lib/ask_service.rb
    ADDED
    
    | @@ -0,0 +1,22 @@ | |
| 1 | 
            +
            class AskService
         | 
| 2 | 
            +
              def self.available?
         | 
| 3 | 
            +
                STDIN.tty?
         | 
| 4 | 
            +
              end
         | 
| 5 | 
            +
             | 
| 6 | 
            +
              def self.choose(label, options)
         | 
| 7 | 
            +
                result = options.first
         | 
| 8 | 
            +
                printf "#{label} (#{options.join(", ")}) [#{options.first}]: "
         | 
| 9 | 
            +
                input = STDIN.gets.chomp
         | 
| 10 | 
            +
                result = input unless input.empty?
         | 
| 11 | 
            +
                unless options.include?(result)
         | 
| 12 | 
            +
                  puts "That wasn't one of the available options.".colorize(:red) + " Please try again."
         | 
| 13 | 
            +
                  result = choose(label, options)
         | 
| 14 | 
            +
                end
         | 
| 15 | 
            +
                result
         | 
| 16 | 
            +
              end
         | 
| 17 | 
            +
            end
         | 
| 18 | 
            +
             | 
| 19 | 
            +
            trap "SIGINT" do
         | 
| 20 | 
            +
              puts "Exiting..."
         | 
| 21 | 
            +
              exit 2
         | 
| 22 | 
            +
            end
         | 
    
        data/lib/civo_cli/version.rb
    CHANGED
    
    
    
        data/lib/finder.rb
    CHANGED
    
    
    
        data/lib/kubernetes.rb
    CHANGED
    
    | @@ -55,7 +55,12 @@ module CivoCLI | |
| 55 55 | 
             
                    puts "Installed marketplace applications:"
         | 
| 56 56 | 
             
                    rows = []
         | 
| 57 57 | 
             
                    cluster.installed_applications.each do |application|
         | 
| 58 | 
            -
                       | 
| 58 | 
            +
                      name = application.application
         | 
| 59 | 
            +
                      if application.plan
         | 
| 60 | 
            +
                        name += " #{application.plan}"
         | 
| 61 | 
            +
                      end
         | 
| 62 | 
            +
                      installed = application.installed ? "Yes" : "Not yet"
         | 
| 63 | 
            +
                      rows << [name, application.version, installed, application.category]
         | 
| 59 64 | 
             
                    end
         | 
| 60 65 | 
             
                    puts Terminal::Table.new headings: ['Name', 'Version', 'Installed', 'Category'], rows: rows
         | 
| 61 66 | 
             
                  end
         | 
| @@ -94,6 +99,7 @@ module CivoCLI | |
| 94 99 | 
             
                option :wait, type: :boolean, banner: 'wait until cluster is running'
         | 
| 95 100 | 
             
                option :save, type: :boolean
         | 
| 96 101 | 
             
                option :switch, type: :boolean
         | 
| 102 | 
            +
                option :applications, type: :string
         | 
| 97 103 | 
             
                long_desc <<-LONGDESC
         | 
| 98 104 | 
             
                  Create a new Kubernetes cluster with name (randomly assigned if blank), instance size (default: g2.medium),
         | 
| 99 105 | 
             
                  \x5\x5Optional parameters are as follows:
         | 
| @@ -106,7 +112,33 @@ module CivoCLI | |
| 106 112 | 
             
                LONGDESC
         | 
| 107 113 | 
             
                def create(name = CivoCLI::NameGenerator.create, *args)
         | 
| 108 114 | 
             
                  CivoCLI::Config.set_api_auth
         | 
| 109 | 
            -
             | 
| 115 | 
            +
             | 
| 116 | 
            +
                  applications = []
         | 
| 117 | 
            +
                  options[:applications].split(",").map(&:chomp).each do |name|
         | 
| 118 | 
            +
                    name, plan = name.split(":")
         | 
| 119 | 
            +
                    app = Finder.detect_app(name)
         | 
| 120 | 
            +
                    plans = app.plans&.items
         | 
| 121 | 
            +
             | 
| 122 | 
            +
                    if app && plans.present? && plan.blank?
         | 
| 123 | 
            +
                      if AskService.available?
         | 
| 124 | 
            +
                        plan = AskService.choose("You requested to add #{app.name} but didn't select a plan. Please choose one...", plans.map(&:label))
         | 
| 125 | 
            +
                        if plan.present?
         | 
| 126 | 
            +
                          puts "Thank you, next time you could use \"#{app.name}:#{plan}\" to choose automatically"
         | 
| 127 | 
            +
                        end
         | 
| 128 | 
            +
                      else
         | 
| 129 | 
            +
                        puts "You need to specify a plan".colorize(:red) + " from those available (#{plans.join(", ")} using the syntax \"#{app.name}:plan\""
         | 
| 130 | 
            +
                        exit 1
         | 
| 131 | 
            +
                      end
         | 
| 132 | 
            +
                    end
         | 
| 133 | 
            +
             | 
| 134 | 
            +
                    if plan.present?
         | 
| 135 | 
            +
                      applications << "#{app.name}:#{plan}"
         | 
| 136 | 
            +
                    else
         | 
| 137 | 
            +
                      applications << app.name
         | 
| 138 | 
            +
                    end
         | 
| 139 | 
            +
                  end
         | 
| 140 | 
            +
             | 
| 141 | 
            +
                  @cluster = Civo::Kubernetes.create(name: name, target_nodes_size: options[:size], num_target_nodes: options[:nodes], applications: applications.join(","))
         | 
| 110 142 |  | 
| 111 143 | 
             
                  if options[:wait]
         | 
| 112 144 | 
             
                    timer = CivoCLI::Timer.new
         | 
| @@ -13,9 +13,16 @@ module CivoCLI | |
| 13 13 | 
             
                  else
         | 
| 14 14 | 
             
                    rows = []
         | 
| 15 15 | 
             
                    Civo::Kubernetes.applications.items.each do |app|
         | 
| 16 | 
            -
                       | 
| 16 | 
            +
                      plans = app.plans&.items
         | 
| 17 | 
            +
                      if plans.present?
         | 
| 18 | 
            +
                        plans = plans.map {|p| p.label}.join(", ")
         | 
| 19 | 
            +
                      else
         | 
| 20 | 
            +
                        plans = "Not applicable"
         | 
| 21 | 
            +
                      end
         | 
| 22 | 
            +
             | 
| 23 | 
            +
                      rows << [app.name, app.version, app.category, plans]
         | 
| 17 24 | 
             
                    end
         | 
| 18 | 
            -
                    puts Terminal::Table.new headings: ['Name', 'Version', 'Category'], rows: rows
         | 
| 25 | 
            +
                    puts Terminal::Table.new headings: ['Name', 'Version', 'Category', 'Plans'], rows: rows
         | 
| 19 26 | 
             
                  end
         | 
| 20 27 | 
             
                rescue Flexirest::HTTPForbiddenClientException
         | 
| 21 28 | 
             
                  reject_user_access
         | 
| @@ -49,10 +56,28 @@ module CivoCLI | |
| 49 56 | 
             
                LONGDESC
         | 
| 50 57 | 
             
                def add(name)
         | 
| 51 58 | 
             
                  CivoCLI::Config.set_api_auth
         | 
| 59 | 
            +
                  name, plan = name.split(":")
         | 
| 52 60 | 
             
                  app = Finder.detect_app(name)
         | 
| 53 61 | 
             
                  cluster = Finder.detect_cluster(options[:cluster])
         | 
| 62 | 
            +
                  plans = app.plans&.items
         | 
| 63 | 
            +
             | 
| 64 | 
            +
                  if app && plans.present? && plan.blank?
         | 
| 65 | 
            +
                    if AskService.available?
         | 
| 66 | 
            +
                      plan = AskService.choose("You requested to add #{app.name} but didn't select a plan. Please choose one...", plans.map(&:label))
         | 
| 67 | 
            +
                      if plan.present?
         | 
| 68 | 
            +
                        puts "Thank you, next time you could use \"#{app.name}:#{plan}\" to choose automatically"
         | 
| 69 | 
            +
                      end
         | 
| 70 | 
            +
                    else
         | 
| 71 | 
            +
                      puts "You need to specify a plan".colorize(:red) + " from those available (#{plans.join(", ")} using the syntax \"#{app.name}:plan\""
         | 
| 72 | 
            +
                      exit 1
         | 
| 73 | 
            +
                    end
         | 
| 74 | 
            +
                  end
         | 
| 54 75 |  | 
| 55 | 
            -
                   | 
| 76 | 
            +
                  if plan.present?
         | 
| 77 | 
            +
                    Civo::Kubernetes.update(id: cluster.id, applications: "#{app.name}:#{plan}")
         | 
| 78 | 
            +
                  else
         | 
| 79 | 
            +
                    Civo::Kubernetes.update(id: cluster.id, applications: app.name)
         | 
| 80 | 
            +
                  end
         | 
| 56 81 | 
             
                  puts "Added #{app.name.colorize(:green)} #{app.version} to Kubernetes cluster #{cluster.name.colorize(:green)}"
         | 
| 57 82 | 
             
                rescue Flexirest::HTTPException => e
         | 
| 58 83 | 
             
                  puts e.result.reason.colorize(:red)
         | 
    
        metadata
    CHANGED
    
    | @@ -1,7 +1,7 @@ | |
| 1 1 | 
             
            --- !ruby/object:Gem::Specification
         | 
| 2 2 | 
             
            name: civo_cli
         | 
| 3 3 | 
             
            version: !ruby/object:Gem::Version
         | 
| 4 | 
            -
              version: 0.3. | 
| 4 | 
            +
              version: 0.3.15
         | 
| 5 5 | 
             
            platform: ruby
         | 
| 6 6 | 
             
            authors:
         | 
| 7 7 | 
             
            - Andy Jeffries
         | 
| @@ -10,7 +10,7 @@ authors: | |
| 10 10 | 
             
            autorequire: 
         | 
| 11 11 | 
             
            bindir: exe
         | 
| 12 12 | 
             
            cert_chain: []
         | 
| 13 | 
            -
            date: 2019-08- | 
| 13 | 
            +
            date: 2019-08-30 00:00:00.000000000 Z
         | 
| 14 14 | 
             
            dependencies:
         | 
| 15 15 | 
             
            - !ruby/object:Gem::Dependency
         | 
| 16 16 | 
             
              name: rake
         | 
| @@ -205,6 +205,7 @@ files: | |
| 205 205 | 
             
            - civo_cli.gemspec
         | 
| 206 206 | 
             
            - exe/civo
         | 
| 207 207 | 
             
            - lib/apikey.rb
         | 
| 208 | 
            +
            - lib/ask_service.rb
         | 
| 208 209 | 
             
            - lib/blueprint.rb
         | 
| 209 210 | 
             
            - lib/civo_cli.rb
         | 
| 210 211 | 
             
            - lib/civo_cli/version.rb
         |