1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77
|
require File.join(File.dirname(__FILE__), '..','..','..', 'puppet/provider/keystone')
require File.join(File.dirname(__FILE__), '..','..','..', 'puppet_x/keystone/composite_namevar')
Puppet::Type.type(:keystone_implied_role).provide(
:openstack,
:parent => Puppet::Provider::Keystone
) do
desc 'Provider for keystone implied roles.'
@credentials = Puppet::Provider::Openstack::CredentialsV3.new
include PuppetX::Keystone::CompositeNamevar::Helpers
def initialize(value={})
super(value)
end
def self.do_not_manage
@do_not_manage
end
def self.do_not_manage=(value)
@do_not_manage = value
end
def create
if self.class.do_not_manage
fail("Not managing Keystone_implied_role[#{@resource[:role]}@#{@resource[:implied_role]}] due to earlier Keystone API failures.")
end
self.class.system_request('implied role', 'create', [@resource[:role], '--implied-role', @resource[:implied_role]])
@property_hash[:ensure] = :present
@property_hash[:role] = @resource[:role]
@property_hash[:implied_role] = @resource[:implied_role]
end
def destroy
if self.class.do_not_manage
fail("Not managing Keystone_implied_role[#{@resource[:role]}@#{@resource[:implied_role]}] due to earlier Keystone API failures.")
end
self.class.system_request('implied role', 'delete', [@resource[:role], '--implied-role', @resource[:implied_role]])
@property_hash.clear
end
def exists?
@property_hash[:ensure] == :present
end
mk_resource_methods
[
:role,
:implied_role,
].each do |attr|
define_method(attr.to_s + "=") do |value|
fail("Property #{attr.to_s} does not support being updated")
end
end
def self.instances
self.do_not_manage = true
list = system_request('implied role', 'list')
reallist = list.collect do |role|
new(
:ensure => :present,
:role => role[:prior_role_name].downcase,
:implied_role => role[:implied_role_name].downcase,
)
end
self.do_not_manage = false
reallist
end
def self.prefetch(resources)
prefetch_composite(resources)
end
end
|