When ensure => latest, svn didn't update.
svn provider now gets the latest revision from the repo, rather than the checkout Test with revision => <some value> as well now when ensure => latest, only refresh dependent resources if the repo is actually updated Tidied up debug messages
This commit is contained in:
		| @@ -26,6 +26,22 @@ Puppet::Type.type(:vcsrepo).provide(:svn, :parent => Puppet::Provider::Vcsrepo) | ||||
|   def destroy | ||||
|     FileUtils.rm_rf(@resource.value(:path)) | ||||
|   end | ||||
|  | ||||
|   def latest? | ||||
|     at_path do | ||||
|       if self.revision < self.latest then | ||||
|         return false | ||||
|       else | ||||
|         return true | ||||
|       end | ||||
|     end | ||||
|   end | ||||
|  | ||||
|   def latest | ||||
|     at_path do | ||||
|       svn('info', '-r', 'HEAD')[/^Revision:\s+(\d+)/m, 1] | ||||
|     end | ||||
|   end | ||||
|    | ||||
|   def revision | ||||
|     at_path do | ||||
| @@ -59,4 +75,4 @@ Puppet::Type.type(:vcsrepo).provide(:svn, :parent => Puppet::Provider::Vcsrepo) | ||||
|     svnadmin(*args) | ||||
|   end | ||||
|  | ||||
| end | ||||
| end | ||||
| @@ -19,7 +19,25 @@ Puppet::Type.newtype(:vcsrepo) do | ||||
|            over time (eg, some VCS tags and branch names)" | ||||
|    | ||||
|   ensurable do | ||||
|     attr_accessor :latest | ||||
|      | ||||
|     def insync?(is) | ||||
|       @should ||= [] | ||||
|  | ||||
|       case should | ||||
|         when :present | ||||
|           return true unless [:absent, :purged, :held].include?(is) | ||||
|         when :latest | ||||
|           if provider.latest? | ||||
|             return true | ||||
|           else | ||||
|             self.debug "%s repo revision is %s, latest is %s" % | ||||
|                 [@resource.name, provider.revision, provider.latest] | ||||
|             return false | ||||
|            end | ||||
|       end | ||||
|     end      | ||||
|                | ||||
|     newvalue :present do | ||||
|       provider.create | ||||
|     end | ||||
| @@ -37,7 +55,11 @@ Puppet::Type.newtype(:vcsrepo) do | ||||
|         if provider.respond_to?(:update_references) | ||||
|           provider.update_references | ||||
|         end | ||||
|         reference = resource.value(:revision) || provider.revision | ||||
|         if provider.respond_to?(:latest?) | ||||
|             reference = provider.latest || provider.revision | ||||
|         else | ||||
|           reference = resource.value(:revision) || provider.revision | ||||
|         end | ||||
|         notice "Updating to latest '#{reference}' revision" | ||||
|         provider.revision = reference | ||||
|       else | ||||
| @@ -99,4 +121,4 @@ Puppet::Type.newtype(:vcsrepo) do | ||||
|     end | ||||
|   end | ||||
|  | ||||
| end | ||||
| end | ||||
		Reference in New Issue
	
	Block a user
	 mikeknox
					mikeknox