From bcca7bedc4b74d89e6c40d7b3799c712166b195d Mon Sep 17 00:00:00 2001 From: Dan Bode Date: Tue, 24 Jan 2012 22:00:38 -0800 Subject: [PATCH] Replace optional_commands with commands in providers Optional commands can be used to specify that a command may not exist when provider suitability is determined. This is because it may be installed during the same run where it needs to be used. Previously, an empty default provider was created just to prevent failures when provider suitability was determined. This also required that the provider be explicitly overridden when the type is used. Using optional_commands instead of command reduces the amount of required code. It allows the default providers to be removed as well as the explicit provider attributes. This changed has been implemented for the following types: - nova_manage - nova_network - nova_admin --- lib/puppet/provider/nova_admin/default.rb | 16 ---------------- lib/puppet/provider/nova_admin/nova_manage.rb | 4 +--- lib/puppet/provider/nova_network/default.rb | 16 ---------------- lib/puppet/provider/nova_network/nova_manage.rb | 4 +--- lib/puppet/provider/nova_project/default.rb | 17 ----------------- lib/puppet/provider/nova_project/nova_manage.rb | 4 +--- manifests/manage/network.pp | 1 - manifests/manage/project.pp | 1 - 8 files changed, 3 insertions(+), 60 deletions(-) delete mode 100644 lib/puppet/provider/nova_admin/default.rb delete mode 100644 lib/puppet/provider/nova_network/default.rb delete mode 100644 lib/puppet/provider/nova_project/default.rb diff --git a/lib/puppet/provider/nova_admin/default.rb b/lib/puppet/provider/nova_admin/default.rb deleted file mode 100644 index 2fbb504b5..000000000 --- a/lib/puppet/provider/nova_admin/default.rb +++ /dev/null @@ -1,16 +0,0 @@ -Puppet::Type.type(:nova_admin).provide(:default) do - - desc "This is a default provider that does nothing. This allows us to install nova-manage on the same puppet run where we want to use it." - - def create - return false - end - - def destroy - return false - end - - def exists? - fail('This is just the default provider for nova_admin, all it does is fail') - end -end diff --git a/lib/puppet/provider/nova_admin/nova_manage.rb b/lib/puppet/provider/nova_admin/nova_manage.rb index fdd2bea25..6dd4cb47c 100644 --- a/lib/puppet/provider/nova_admin/nova_manage.rb +++ b/lib/puppet/provider/nova_admin/nova_manage.rb @@ -2,9 +2,7 @@ Puppet::Type.type(:nova_admin).provide(:nova_manage) do desc "Manage nova admin user" - defaultfor :kernel => 'Linux' - - commands :nova_manage => 'nova-manage' + optional_commands :nova_manage => 'nova-manage' def exists? nova_manage("user", "list").match(/^#{resource[:name]}$/) diff --git a/lib/puppet/provider/nova_network/default.rb b/lib/puppet/provider/nova_network/default.rb deleted file mode 100644 index d86c30772..000000000 --- a/lib/puppet/provider/nova_network/default.rb +++ /dev/null @@ -1,16 +0,0 @@ -Puppet::Type.type(:nova_network).provide(:default) do - - desc "This is a default provider that does nothing. This allows us to install nova-manage on the same puppet run where we want to use it." - - def create - return false - end - - def destroy - return false - end - - def exists? - fail('This is just the default provider for nova_admin, all it does is fail') - end -end diff --git a/lib/puppet/provider/nova_network/nova_manage.rb b/lib/puppet/provider/nova_network/nova_manage.rb index ed838536d..e50af1e46 100644 --- a/lib/puppet/provider/nova_network/nova_manage.rb +++ b/lib/puppet/provider/nova_network/nova_manage.rb @@ -2,9 +2,7 @@ Puppet::Type.type(:nova_network).provide(:nova_manage) do desc "Manage nova network" - defaultfor :kernel => 'Linux' - - commands :nova_manage => 'nova-manage' + optional_commands :nova_manage => 'nova-manage' def exists? begin diff --git a/lib/puppet/provider/nova_project/default.rb b/lib/puppet/provider/nova_project/default.rb deleted file mode 100644 index 2747fb98b..000000000 --- a/lib/puppet/provider/nova_project/default.rb +++ /dev/null @@ -1,17 +0,0 @@ -Puppet::Type.type(:nova_project).provide(:default) do - - desc "This is a default provider that does nothing. This allows us to install nova-manage on the same puppet run where we want to use it." - - def create - return false - end - - def destroy - return false - end - - def exists? - fail('This is just the default provider for nova_project, all it does is fail') - end - -end diff --git a/lib/puppet/provider/nova_project/nova_manage.rb b/lib/puppet/provider/nova_project/nova_manage.rb index 42ad1ffaf..31a818f72 100644 --- a/lib/puppet/provider/nova_project/nova_manage.rb +++ b/lib/puppet/provider/nova_project/nova_manage.rb @@ -2,9 +2,7 @@ Puppet::Type.type(:nova_project).provide(:nova_manage) do desc "Manage nova project" - defaultfor :kernel => 'Linux' - - commands :nova_manage => 'nova-manage' + optional_commands :nova_manage => 'nova-manage' def exists? nova_manage("project", "list").match(/^#{resource[:name]}$/) diff --git a/manifests/manage/network.pp b/manifests/manage/network.pp index c6e885f1e..0ff6025e0 100644 --- a/manifests/manage/network.pp +++ b/manifests/manage/network.pp @@ -7,7 +7,6 @@ define nova::manage::network ( $network, $available_ips ) { ensure => present, network => $network, available_ips => $available_ips, - provider => 'nova_manage', notify => Exec["nova-db-sync"], } } diff --git a/manifests/manage/project.pp b/manifests/manage/project.pp index a7890c639..493e99263 100644 --- a/manifests/manage/project.pp +++ b/manifests/manage/project.pp @@ -5,7 +5,6 @@ define nova::manage::project ( $owner ) { nova_project { $name: ensure => present, - provider => 'nova_manage', owner => $owner, notify => Exec["nova-db-sync"], require => Nova::Manage::Admin[$owner],