Project

General

Profile

Download (1.52 KB) Statistics
| Branch: | Tag: | Revision:
Puppet::Type.type(:foreman_smartproxy).provide(:rest_v3, :parent => Puppet::Type.type(:foreman_resource).provider(:rest_v3)) do
confine :feature => [:json, :oauth]

def proxy
@proxy ||= begin
r = request(:get, 'api/v2/smart_proxies', :search => %{name="#{resource[:name]}"})
raise Puppet::Error.new("Proxy #{resource[:name]} cannot be retrieved: #{error_message(r)}") unless success?(r)
JSON.load(r.body)['results'][0]
end
end

def id
proxy ? proxy['id'] : nil
end

def exists?
!id.nil?
end

def create
post_data = {:smart_proxy => {:name => resource[:name], :url => resource[:url]}}.to_json
r = request(:post, 'api/v2/smart_proxies', {}, post_data)
raise Puppet::Error.new("Proxy #{resource[:name]} cannot be registered: #{error_message(r)}") unless success?(r)
end

def destroy
r = request(:delete, "api/v2/smart_proxies/#{id}")
raise Puppet::Error.new("Proxy #{resource[:name]} cannot be removed: #{error_message(r)}") unless success?(r)
@proxy = nil
end

def url
proxy ? proxy['url'] : nil
end

def url=(value)
post_data = {:smart_proxy => {:url => value}}.to_json
r = request(:put, "api/v2/smart_proxies/#{id}", {}, post_data)
raise Puppet::Error.new("Proxy #{resource[:name]} cannot be updated: #{error_message(r)}") unless success?(r)
end

def refresh_features!
r = request(:put, "api/v2/smart_proxies/#{id}/refresh")
raise Puppet::Error.new("Proxy #{resource[:name]} cannot be refreshed: #{error_message(r)}") unless success?(r)
end
end
(3-3/3)