52 lines
1.1 KiB
Ruby
52 lines
1.1 KiB
Ruby
require File.join(File.dirname(__FILE__), '..','..','..',
|
|
'puppet/provider/nova')
|
|
|
|
Puppet::Type.type(:nova_security_rule).provide(
|
|
:nova,
|
|
:parent => Puppet::Provider::Nova
|
|
) do
|
|
|
|
desc "Manage nova security rules"
|
|
|
|
commands :nova => 'nova'
|
|
|
|
mk_resource_methods
|
|
|
|
def exists?
|
|
@property_hash[:ensure] == :present
|
|
end
|
|
|
|
def destroy
|
|
args = Array.new
|
|
|
|
args << "#{@resource[:security_group]}"
|
|
args << "#{@resource[:ip_protocol]}"
|
|
args << "#{@resource[:from_port]}"
|
|
args << "#{@resource[:to_port]}"
|
|
if not @resource[:ip_range].nil?
|
|
args << "#{@resource[:ip_range]}"
|
|
else
|
|
args << "#{@resource[:source_group]}"
|
|
end
|
|
|
|
auth_nova("secgroup-delete-rule", args)
|
|
@property_hash[:ensure] = :absent
|
|
end
|
|
|
|
def create
|
|
args = Array.new
|
|
|
|
args << "#{@resource[:security_group]}"
|
|
args << "#{@resource[:ip_protocol]}"
|
|
args << "#{@resource[:from_port]}"
|
|
args << "#{@resource[:to_port]}"
|
|
if not @resource[:ip_range].nil?
|
|
args << "#{@resource[:ip_range]}"
|
|
else
|
|
args << "#{@resource[:source_group]}"
|
|
end
|
|
|
|
result = auth_nova("secgroup-add-rule", args)
|
|
end
|
|
end
|