Class: Puppet::Util::NetworkDevice::Transport::Netscaler
- Inherits:
-
Base
- Object
- Base
- Puppet::Util::NetworkDevice::Transport::Netscaler
- Defined in:
- lib/puppet/util/network_device/transport/netscaler.rb
Instance Attribute Summary collapse
-
#connection ⇒ Object
readonly
Returns the value of attribute connection.
Instance Method Summary collapse
- #call(url = nil, args = {}) ⇒ Object
- #delete(url, args = {}) ⇒ Object
- #failure?(result) ⇒ Boolean
-
#initialize(url, _options = {}) ⇒ Netscaler
constructor
A new instance of Netscaler.
- #post(url, json, args = {}) ⇒ Object
- #put(url, json) ⇒ Object
- #valid_json?(json) ⇒ Boolean
Constructor Details
#initialize(url, _options = {}) ⇒ Netscaler
Returns a new instance of Netscaler.
8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 |
# File 'lib/puppet/util/network_device/transport/netscaler.rb', line 8 def initialize(url, = {}) require 'uri' require 'faraday' require 'puppet/util/network_device/transport/do_not_encoder' @connection = Faraday.new({:url => url, :ssl => { :verify => false }}) do |builder| builder.request :retry, { :max => 10, :interval => 0.05, :interval_randomness => 0.5, :backoff_factor => 2, :exceptions => [ Faraday::Error::TimeoutError, Faraday::ConnectionFailed, Errno::ETIMEDOUT, 'Timeout::Error', ], } builder.adapter :net_http builder..params_encoder = Puppet::Util::NetworkDevice::Transport::DoNotEncoder end end |
Instance Attribute Details
#connection ⇒ Object (readonly)
Returns the value of attribute connection.
6 7 8 |
# File 'lib/puppet/util/network_device/transport/netscaler.rb', line 6 def connection @connection end |
Instance Method Details
#call(url = nil, args = {}) ⇒ Object
30 31 32 33 34 35 36 37 38 39 40 41 42 |
# File 'lib/puppet/util/network_device/transport/netscaler.rb', line 30 def call(url=nil, args={}) url = URI.escape(url) if url result = connection.get("/nitro/v1#{url}", args) type = url.split('/')[1] output = JSON.parse(result.body) if url.split('/')[2] output[url.split('/')[2]] elsif output["#{type}objects"] output["#{type}objects"]['objects'] end rescue JSON::ParserError return nil end |
#delete(url, args = {}) ⇒ Object
82 83 84 85 86 87 88 89 90 91 |
# File 'lib/puppet/util/network_device/transport/netscaler.rb', line 82 def delete(url,args={}) url = URI.escape(url) if url result = connection.delete do |req| # https://github.com/lostisland/faraday/issues/465 #req.options.params_encoder = Puppet::Util::NetworkDevice::Transport::DoNotEncoder req.url "/nitro/v1#{url}", args end failure?(result) return result end |
#failure?(result) ⇒ Boolean
44 45 46 47 48 |
# File 'lib/puppet/util/network_device/transport/netscaler.rb', line 44 def failure?(result) unless result.status == 200 or result.status == 201 fail("REST failure: HTTP status code #{result.status} detected. Body of failure is: #{result.body}") end end |
#post(url, json, args = {}) ⇒ Object
50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 |
# File 'lib/puppet/util/network_device/transport/netscaler.rb', line 50 def post(url, json, args={}) url = URI.escape(url) if url resource_type = url.split('/')[2] if valid_json?(json) result = connection.post do |req| req.url "/nitro/v1#{url}", args req.headers['Content-Type'] = "application/vnd.com.citrix.netscaler.#{resource_type}+json" req.body = json end failure?(result) return result else fail('Invalid JSON detected.') end end |
#put(url, json) ⇒ Object
66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 |
# File 'lib/puppet/util/network_device/transport/netscaler.rb', line 66 def put(url, json) url = URI.escape(url) if url resource_type = url.split('/')[2] if valid_json?(json) result = connection.put do |req| req.url "/nitro/v1#{url}" req.headers['Content-Type'] = "application/vnd.com.citrix.netscaler.#{resource_type}+json" req.body = json end failure?(result) return result else fail('Invalid JSON detected.') end end |
#valid_json?(json) ⇒ Boolean
93 94 95 96 97 98 |
# File 'lib/puppet/util/network_device/transport/netscaler.rb', line 93 def valid_json?(json) JSON.parse(json) return true rescue return false end |