nova.rb 1.2 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344
  1. require File.join(File.dirname(__FILE__), '..','..','..', 'puppet/provider/nova')
  2. Puppet::Type.type(:nova_network).provide(:nova, :parent => Puppet::Provider::Nova) do
  3. desc "Manage nova network"
  4. optional_commands :nova => 'nova'
  5. def create
  6. optional_opts = []
  7. {
  8. # this needs to be converted from a project name to an id
  9. :project => '--project_id',
  10. :dns1 => '--dns1',
  11. :dns2 => '--dns2',
  12. :gateway => '--gateway',
  13. :bridge => '--bridge',
  14. :vlan_start => '--vlan-start',
  15. :allowed_start => '--allowed-start',
  16. :allowed_end => '--allowed-end',
  17. }.each do |param, opt|
  18. if resource[param]
  19. optional_opts.push(opt).push(resource[param])
  20. end
  21. end
  22. opts = [resource[:label], "--fixed-range-v4", resource[:name]]
  23. auth_nova('network-create', opts + optional_opts)
  24. end
  25. def exists?
  26. instances = auth_nova('network-list')
  27. return instances.split('\n')[1..-1].detect do |n|
  28. n =~ /(\S+)\s+(#{resource[:network]})\s+(\S+)/
  29. end
  30. end
  31. def destroy
  32. auth_nova("network-delete", resource[:network])
  33. end
  34. end