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 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
- require 'onering/cli/call'
10
- require 'onering/cli/fact'
11
- require 'onering/cli/devices'
12
- require 'onering/cli/automation'
13
- require 'onering/cli/reporter'
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
- raise Errors::ClientError.new("HTTP #{rv.code} - #{Onering::Util.http_status(rv.code)} #{rv.parsed_response.get('error.message', '') rescue ''}")
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.61
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