Files
puppet-nova/lib/puppet/provider/nova_network/nova_manage.rb
Lars Kellogg-Stedman c40e67f1b5 --vlan is not the same as --vlan_start
the lib/puppet/provider/nova_network/nova_manage.rb provider was using
the --vlan option when it meant --vlan_start.  This caused "network
create" commands with num_networks > 1 to fail with "duplicate vlan"
errors.

Change-Id: Ibdca3b8de72b459eacf8b44b6350b9bc71310c1b
Closes-bug: #1362772
2014-08-28 15:06:19 -04:00

67 lines
1.6 KiB
Ruby

Puppet::Type.type(:nova_network).provide(:nova_manage) do
desc "Manage nova network"
optional_commands :nova_manage => 'nova-manage'
# I need to setup caching and what-not to make this lookup performance not suck
def self.instances
begin
network_list = nova_manage("network", "list")
rescue Exception => e
if e.message =~ /No networks defined/
return []
else
raise(e)
end
end
network_list.split("\n")[1..-1].collect do |net|
if net =~ /^(\S+)\s+(\S+)/
new(:name => $2 )
end
end.compact
end
def create
optional_opts = []
{
# this needs to be converted from a project name to an id
:project => '--project_id',
:dns2 => '--dns2',
:gateway => '--gateway',
:bridge => '--bridge',
:vlan_start => '--vlan_start'
}.each do |param, opt|
if resource[param]
optional_opts.push(opt).push(resource[param])
end
end
nova_manage('network', 'create',
resource[:label],
resource[:name],
resource[:num_networks],
resource[:network_size],
optional_opts
)
end
def exists?
begin
network_list = nova_manage("network", "list")
return network_list.split("\n")[1..-1].detect do |n|
# TODO - this does not take the CIDR into accont. Does it matter?
n =~ /^(\S+)\s+(#{resource[:network].split('/').first})/
end
rescue
return false
end
end
def destroy
nova_manage("network", "delete", resource[:network])
end
end