nova.rb 1.1 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152
  1. require File.join(File.dirname(__FILE__), '..','..','..',
  2. 'puppet/provider/nova')
  3. Puppet::Type.type(:nova_security_rule).provide(
  4. :nova,
  5. :parent => Puppet::Provider::Nova
  6. ) do
  7. desc "Manage nova security rules"
  8. commands :nova => 'nova'
  9. mk_resource_methods
  10. def exists?
  11. @property_hash[:ensure] == :present
  12. end
  13. def destroy
  14. args = Array.new
  15. args << "#{@resource[:security_group]}"
  16. args << "#{@resource[:ip_protocol]}"
  17. args << "#{@resource[:from_port]}"
  18. args << "#{@resource[:to_port]}"
  19. if not @resource[:ip_range].nil?
  20. args << "#{@resource[:ip_range]}"
  21. else
  22. args << "#{@resource[:source_group]}"
  23. end
  24. auth_nova("secgroup-delete-rule", args)
  25. @property_hash[:ensure] = :absent
  26. end
  27. def create
  28. args = Array.new
  29. args << "#{@resource[:security_group]}"
  30. args << "#{@resource[:ip_protocol]}"
  31. args << "#{@resource[:from_port]}"
  32. args << "#{@resource[:to_port]}"
  33. if not @resource[:ip_range].nil?
  34. args << "#{@resource[:ip_range]}"
  35. else
  36. args << "#{@resource[:source_group]}"
  37. end
  38. result = auth_nova("secgroup-add-rule", args)
  39. end
  40. end