44 lines
1.2 KiB
Ruby
44 lines
1.2 KiB
Ruby
require File.join(File.dirname(__FILE__), '..','..','..', 'puppet/provider/nova')
|
|
|
|
Puppet::Type.type(:nova_network).provide(:nova, :parent => Puppet::Provider::Nova) do
|
|
|
|
desc "Manage nova network"
|
|
|
|
optional_commands :nova => 'nova'
|
|
|
|
def create
|
|
optional_opts = []
|
|
{
|
|
# this needs to be converted from a project name to an id
|
|
:project => '--project_id',
|
|
:dns1 => '--dns1',
|
|
:dns2 => '--dns2',
|
|
:gateway => '--gateway',
|
|
:bridge => '--bridge',
|
|
:vlan_start => '--vlan-start',
|
|
:allowed_start => '--allowed-start',
|
|
:allowed_end => '--allowed-end',
|
|
}.each do |param, opt|
|
|
if resource[param]
|
|
optional_opts.push(opt).push(resource[param])
|
|
end
|
|
end
|
|
|
|
opts = [resource[:label], "--fixed-range-v4", resource[:name]]
|
|
|
|
auth_nova('network-create', opts + optional_opts)
|
|
end
|
|
|
|
def exists?
|
|
instances = auth_nova('network-list')
|
|
return instances.split('\n')[1..-1].detect do |n|
|
|
n =~ /(\S+)\s+(#{resource[:network]})\s+(\S+)/
|
|
end
|
|
end
|
|
|
|
def destroy
|
|
auth_nova("network-delete", resource[:network])
|
|
end
|
|
|
|
end
|