puppet-neutron/lib/puppet/provider/neutron_security_group/openstack.rb
Daniel Pawlik 99b3203923 Added neutron security groups and OpenstackClient auth
Creating security group using nova module is deprecated.
This patch will give neutron puppet module adds the ability
to create security groups.

OpenstackClient will allow easier create new Puppet Neutron
provider classes.

Change-Id: I1a900fadce6b4d1c006e43164d380034ea5cef2d
Partial-Bug: #1671474
2017-03-17 11:48:40 +00:00

77 lines
1.9 KiB
Ruby

require File.join(File.dirname(__FILE__), '..','..','..',
'puppet/provider/neutron')
Puppet::Type.type(:neutron_security_group).provide(
:openstack,
:parent => Puppet::Provider::Neutron
) do
desc <<-EOT
Manage Neutron security group
EOT
@credentials = Puppet::Provider::Openstack::CredentialsV3.new
def initialize(value={})
super(value)
end
def create
opts = [@resource[:name]]
(opts << '--id' << @resource[:id]) if @resource[:id]
(opts << '--description' << @resource[:description]) if @resource[:description]
(opts << '--project' << @resource[:project]) if @resource[:project]
(opts << '--project-domain' << @resource[:project_domain]) if @resource[:project_domain]
@property_hash = self.class.request('security group', 'create', opts)
@property_hash[:ensure] = :present
end
def exists?
@property_hash[:ensure] == :present
end
def destroy
self.class.request('security group', 'delete', @property_hash[:id])
end
mk_resource_methods
def id=(value)
fail('id is read only')
end
def description=(value)
fail('description is read only')
end
def project=(value)
fail('project is read only')
end
def project_domain=(value)
fail('project_domain is read only')
end
def self.instances
request('security group', 'list', ['--all']).collect do |attrs|
new(
:ensure => :present,
:name => attrs[:name],
:id => attrs[:id],
:description => attrs[:description],
:project => attrs[:project],
:project_domain => attrs[:project_domain]
)
end
end
def self.prefetch(resources)
sec_groups = instances
resources.keys.each do |name|
if provider = sec_groups.find{ |sg| sg.name == name }
resources[name].provider = provider
end
end
end
end