onering-client 0.0.61 → 0.0.62
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.
- data/lib/onering.rb +10 -9
 - data/lib/onering/api.rb +17 -1
 - data/lib/onering/cli/config.rb +55 -0
 - metadata +2 -1
 
    
        data/lib/onering.rb
    CHANGED
    
    | 
         @@ -1,13 +1,14 @@ 
     | 
|
| 
       1 
1 
     | 
    
         
             
            $: << File.expand_path(File.dirname(__FILE__))
         
     | 
| 
       2 
2 
     | 
    
         
             
            require 'onering/util'
         
     | 
| 
       3 
3 
     | 
    
         
             
            require 'onering/api'
         
     | 
| 
       4 
     | 
    
         
            -
            require 'onering/plugins/devices'
         
     | 
| 
       5 
     | 
    
         
            -
            require 'onering/plugins/authentication'
         
     | 
| 
       6 
     | 
    
         
            -
            require 'onering/plugins/automation'
         
     | 
| 
       7 
     | 
    
         
            -
            require 'onering/plugins/reporter'
         
     | 
| 
       8 
4 
     | 
    
         
             
            require 'onering/cli'
         
     | 
| 
       9 
     | 
    
         
            -
             
     | 
| 
       10 
     | 
    
         
            -
            require  
     | 
| 
       11 
     | 
    
         
            -
             
     | 
| 
       12 
     | 
    
         
            -
            require  
     | 
| 
       13 
     | 
    
         
            -
             
     | 
| 
      
 5 
     | 
    
         
            +
             
     | 
| 
      
 6 
     | 
    
         
            +
            # require plugins
         
     | 
| 
      
 7 
     | 
    
         
            +
            Dir[File.join(File.expand_path(File.dirname(__FILE__)),"onering","plugins","*.rb")].each do |i|
         
     | 
| 
      
 8 
     | 
    
         
            +
              require i
         
     | 
| 
      
 9 
     | 
    
         
            +
            end
         
     | 
| 
      
 10 
     | 
    
         
            +
             
     | 
| 
      
 11 
     | 
    
         
            +
            # require cli submodules
         
     | 
| 
      
 12 
     | 
    
         
            +
            Dir[File.join(File.expand_path(File.dirname(__FILE__)),"onering","cli","*.rb")].each do |i|
         
     | 
| 
      
 13 
     | 
    
         
            +
              require i
         
     | 
| 
      
 14 
     | 
    
         
            +
            end
         
     | 
    
        data/lib/onering/api.rb
    CHANGED
    
    | 
         @@ -25,7 +25,12 @@ module Onering 
     | 
|
| 
       25 
25 
     | 
    
         
             
                module Errors
         
     | 
| 
       26 
26 
     | 
    
         
             
                  class Exception < ::Exception; end
         
     | 
| 
       27 
27 
     | 
    
         
             
                  class NotConnected < Exception; end
         
     | 
| 
      
 28 
     | 
    
         
            +
             
     | 
| 
       28 
29 
     | 
    
         
             
                  class ClientError < Exception; end
         
     | 
| 
      
 30 
     | 
    
         
            +
                  class Unauthorized < ClientError; end
         
     | 
| 
      
 31 
     | 
    
         
            +
                  class Forbidden < ClientError; end
         
     | 
| 
      
 32 
     | 
    
         
            +
                  class NotFound < ClientError; end
         
     | 
| 
      
 33 
     | 
    
         
            +
             
     | 
| 
       29 
34 
     | 
    
         
             
                  class ServerError < Exception; end
         
     | 
| 
       30 
35 
     | 
    
         
             
                  class ConnectionTimeout < Exception; end
         
     | 
| 
       31 
36 
     | 
    
         
             
                  class AuthenticationMissing < Exception; end
         
     | 
| 
         @@ -93,7 +98,18 @@ module Onering 
     | 
|
| 
       93 
98 
     | 
    
         
             
                  if rv.code >= 500
         
     | 
| 
       94 
99 
     | 
    
         
             
                    raise Errors::ServerError.new("HTTP #{rv.code} - #{Onering::Util.http_status(rv.code)} #{rv.parsed_response.get('error.message','') rescue ''}")
         
     | 
| 
       95 
100 
     | 
    
         
             
                  elsif rv.code >= 400
         
     | 
| 
       96 
     | 
    
         
            -
                     
     | 
| 
      
 101 
     | 
    
         
            +
                    message = "HTTP #{rv.code} - #{Onering::Util.http_status(rv.code)} #{rv.parsed_response.get('error.message', '') rescue ''}"
         
     | 
| 
      
 102 
     | 
    
         
            +
             
     | 
| 
      
 103 
     | 
    
         
            +
                    case rv.code
         
     | 
| 
      
 104 
     | 
    
         
            +
                    when 401
         
     | 
| 
      
 105 
     | 
    
         
            +
                      raise Errors::Unauthorized.new(message)
         
     | 
| 
      
 106 
     | 
    
         
            +
                    when 403
         
     | 
| 
      
 107 
     | 
    
         
            +
                      raise Errors::Forbidden.new(message)
         
     | 
| 
      
 108 
     | 
    
         
            +
                    when 404
         
     | 
| 
      
 109 
     | 
    
         
            +
                      raise Errors::NotFound.new(message)
         
     | 
| 
      
 110 
     | 
    
         
            +
                    else
         
     | 
| 
      
 111 
     | 
    
         
            +
                      raise Errors::ClientError.new(message)
         
     | 
| 
      
 112 
     | 
    
         
            +
                    end
         
     | 
| 
       97 
113 
     | 
    
         
             
                  else
         
     | 
| 
       98 
114 
     | 
    
         
             
                    rv
         
     | 
| 
       99 
115 
     | 
    
         
             
                  end
         
     | 
| 
         @@ -0,0 +1,55 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            module Onering
         
     | 
| 
      
 2 
     | 
    
         
            +
              module CLI
         
     | 
| 
      
 3 
     | 
    
         
            +
                module Config
         
     | 
| 
      
 4 
     | 
    
         
            +
                  def self.configure(global={})
         
     | 
| 
      
 5 
     | 
    
         
            +
                    Onering::Reporter.setup()
         
     | 
| 
      
 6 
     | 
    
         
            +
                    @api = Onering::CLI.connect(global)
         
     | 
| 
      
 7 
     | 
    
         
            +
             
     | 
| 
      
 8 
     | 
    
         
            +
                    @opts = ::Trollop::options do
         
     | 
| 
      
 9 
     | 
    
         
            +
                      banner <<-EOS
         
     | 
| 
      
 10 
     | 
    
         
            +
            Options:
         
     | 
| 
      
 11 
     | 
    
         
            +
            EOS
         
     | 
| 
      
 12 
     | 
    
         
            +
             
     | 
| 
      
 13 
     | 
    
         
            +
                      opt :id,    "The node ID of the device to operate on", :short => '-i', :type => :string, :default => Onering::Util.fact('hardwareid')
         
     | 
| 
      
 14 
     | 
    
         
            +
             
     | 
| 
      
 15 
     | 
    
         
            +
                    # subcommands
         
     | 
| 
      
 16 
     | 
    
         
            +
                      stop_on %w{get set test}
         
     | 
| 
      
 17 
     | 
    
         
            +
                    end
         
     | 
| 
      
 18 
     | 
    
         
            +
                  end
         
     | 
| 
      
 19 
     | 
    
         
            +
             
     | 
| 
      
 20 
     | 
    
         
            +
                  def self.run(args)
         
     | 
| 
      
 21 
     | 
    
         
            +
                    sc = args.shift
         
     | 
| 
      
 22 
     | 
    
         
            +
             
     | 
| 
      
 23 
     | 
    
         
            +
                    case (sc.downcase.to_sym rescue nil)
         
     | 
| 
      
 24 
     | 
    
         
            +
            # -----------------------------------------------------------------------------
         
     | 
| 
      
 25 
     | 
    
         
            +
                    when :get
         
     | 
| 
      
 26 
     | 
    
         
            +
                      raise "Expected 1 parameter, got #{args.length}" unless args.length >= 1
         
     | 
| 
      
 27 
     | 
    
         
            +
             
     | 
| 
      
 28 
     | 
    
         
            +
                      begin
         
     | 
| 
      
 29 
     | 
    
         
            +
                        rv = @api.request(@opts[:method], "devices/#{@opts[:id]}/config/#{args[0].gsub('.','/')}")
         
     | 
| 
      
 30 
     | 
    
         
            +
                        return (rv.parsed_response rescue rv.response.body)
         
     | 
| 
      
 31 
     | 
    
         
            +
                      rescue Onering::API::Errors::NotFound
         
     | 
| 
      
 32 
     | 
    
         
            +
                        if args[1].nil? and not STDIN.tty?
         
     | 
| 
      
 33 
     | 
    
         
            +
                          args[1] = STDIN.read()
         
     | 
| 
      
 34 
     | 
    
         
            +
                        end
         
     | 
| 
      
 35 
     | 
    
         
            +
             
     | 
| 
      
 36 
     | 
    
         
            +
                        return (MultiJson.load(args[1]) rescue args[1])
         
     | 
| 
      
 37 
     | 
    
         
            +
                      end
         
     | 
| 
      
 38 
     | 
    
         
            +
             
     | 
| 
      
 39 
     | 
    
         
            +
            # -----------------------------------------------------------------------------
         
     | 
| 
      
 40 
     | 
    
         
            +
                    when :set
         
     | 
| 
      
 41 
     | 
    
         
            +
                      raise "Expected 2 parameters, got #{args.length}" unless args.length == 2
         
     | 
| 
      
 42 
     | 
    
         
            +
             
     | 
| 
      
 43 
     | 
    
         
            +
                      return @api.set_field(@opts[:id], "config.#{args[0]}", args[1])
         
     | 
| 
      
 44 
     | 
    
         
            +
             
     | 
| 
      
 45 
     | 
    
         
            +
            # -----------------------------------------------------------------------------
         
     | 
| 
      
 46 
     | 
    
         
            +
                    when :test
         
     | 
| 
      
 47 
     | 
    
         
            +
                      raise "Expected 1 parameter, got #{args.length}" unless args.length >= 1
         
     | 
| 
      
 48 
     | 
    
         
            +
             
     | 
| 
      
 49 
     | 
    
         
            +
                    else
         
     | 
| 
      
 50 
     | 
    
         
            +
                      raise "Unknown subcommand #{sc.inspect}"
         
     | 
| 
      
 51 
     | 
    
         
            +
                    end
         
     | 
| 
      
 52 
     | 
    
         
            +
                  end
         
     | 
| 
      
 53 
     | 
    
         
            +
                end
         
     | 
| 
      
 54 
     | 
    
         
            +
              end
         
     | 
| 
      
 55 
     | 
    
         
            +
            end
         
     | 
    
        metadata
    CHANGED
    
    | 
         @@ -1,7 +1,7 @@ 
     | 
|
| 
       1 
1 
     | 
    
         
             
            --- !ruby/object:Gem::Specification
         
     | 
| 
       2 
2 
     | 
    
         
             
            name: onering-client
         
     | 
| 
       3 
3 
     | 
    
         
             
            version: !ruby/object:Gem::Version
         
     | 
| 
       4 
     | 
    
         
            -
              version: 0.0. 
     | 
| 
      
 4 
     | 
    
         
            +
              version: 0.0.62
         
     | 
| 
       5 
5 
     | 
    
         
             
              prerelease: 
         
     | 
| 
       6 
6 
     | 
    
         
             
            platform: ruby
         
     | 
| 
       7 
7 
     | 
    
         
             
            authors:
         
     | 
| 
         @@ -152,6 +152,7 @@ files: 
     | 
|
| 
       152 
152 
     | 
    
         
             
            - lib/onering/cli.rb
         
     | 
| 
       153 
153 
     | 
    
         
             
            - lib/onering/cli/fact.rb
         
     | 
| 
       154 
154 
     | 
    
         
             
            - lib/onering/cli/call.rb
         
     | 
| 
      
 155 
     | 
    
         
            +
            - lib/onering/cli/config.rb
         
     | 
| 
       155 
156 
     | 
    
         
             
            - lib/onering/cli/devices.rb
         
     | 
| 
       156 
157 
     | 
    
         
             
            - lib/onering/cli/automation.rb
         
     | 
| 
       157 
158 
     | 
    
         
             
            - lib/onering/cli/reporter.rb
         
     |