Issue #2382 has been updated by Luke Kanies.

Status changed from Needs design decision to Code Insufficient
Target version set to 0.26.0

Before this can be merged, some more work needs to be done to make sure the 
other package providers still work as expected.
----------------------------------------
Feature #2382: package provider ports: portupgrade does not work
http://projects.reductivelabs.com/issues/2382

Author: Ryan Hutchison
Status: Code Insufficient
Priority: Normal
Assigned to: Ryan Hutchison
Category: package
Target version: 0.26.0
Complexity: Trivial
Affected version: 0.24.8
Keywords: 


In puppet/provider/package/ports.rb the command passes argument -N which 
prevents installed ports from being upgraded.

* Modified type 'packages.rb'.
> * latest now calls install when port is absent and update when port exists, 
> but is not the latest version.
* Modified package provider 'ports.rb'.
> * update now runs portupgrade with -M BATCH=yes instead of calling install.
> * install runs as normal.


Patch:
<pre>
--- puppet/provider/package/ports.rb    2009-07-01 14:22:00.000000000 -0400
+++ puppet-patched/provider/package/ports.rb    2009-07-01 14:25:45.000000000 
-0400
@@ -91,7 +91,13 @@ Puppet::Type.type(:package).provide :por
     end

     def update
-        install()
+        # -M: yes, we're a batch, so don't ask any questions
+        cmd = %w{-M BATCH=yes} << @resource[:name]
+
+        output = portupgrade(*cmd)
+        if output =~ /\*\* No such /
+            raise Puppet::ExecutionFailure, "Could not find package %s" % 
@resource[:name]
+        end
     end
 end

--- puppet/type/package.rb      2009-07-01 14:22:01.000000000 -0400
+++ puppet-patched/type/package.rb      2009-07-01 14:25:22.000000000 -0400
@@ -68,15 +68,20 @@ module Puppet
                 # in the "install" method.  So, check the current state now,
                 # to compare against later.
                 current = self.retrieve
-                begin
-                    provider.update
-                rescue => detail
-                    self.fail "Could not update: %s" % detail
-                end

                 if current == :absent
+                    begin
+                        provider.install
+                    rescue => detail
+                        self.fail "Could not install: %s" % detail
+                    end
                     :package_installed
                 else
+                    begin
+                        provider.update
+                    rescue => detail
+                        self.fail "Could not update: %s" % detail
+                    end
                     :package_changed
                 end
             end
</pre>> 


-- 
You have received this notification because you have either subscribed to it, 
or are involved in it.
To change your notification preferences, please click here: 
http://reductivelabs.com/redmine/my/account

--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups 
"Puppet Bugs" group.
To post to this group, send email to [email protected]
To unsubscribe from this group, send email to 
[email protected]
For more options, visit this group at 
http://groups.google.com/group/puppet-bugs?hl=en
-~----------~----~----~----~------~----~------~--~---

Reply via email to