From af6dc9685a027c8da74974782aa8b075986a948e Mon Sep 17 00:00:00 2001 From: Johan Haals Date: Wed, 16 Jul 2014 14:35:14 +0200 Subject: [PATCH 1/3] fix #237 add flag for using the v3 forge api librarian-puppet install --use-v3-api adds support for downloading modules from a custom Puppet forge using the v3 api --- lib/librarian/puppet/cli.rb | 2 ++ lib/librarian/puppet/environment.rb | 3 +++ lib/librarian/puppet/source/forge.rb | 3 ++- 3 files changed, 7 insertions(+), 1 deletion(-) diff --git a/lib/librarian/puppet/cli.rb b/lib/librarian/puppet/cli.rb index fe67ae87..ff195011 100644 --- a/lib/librarian/puppet/cli.rb +++ b/lib/librarian/puppet/cli.rb @@ -44,6 +44,7 @@ def init option "path", :type => :string option "destructive", :type => :boolean, :default => false option "local", :type => :boolean, :default => false + option "use-v3-api", :type => :boolean, :default => false def install unless File.exist?('Puppetfile') @@ -64,6 +65,7 @@ def install environment.config_db.local["path"] = options["path"] end + environment.config_db.local['use-v3-api'] = options['use-v3-api'] ? '1' : nil environment.config_db.local['mode'] = options['local'] ? 'local' : nil resolve! diff --git a/lib/librarian/puppet/environment.rb b/lib/librarian/puppet/environment.rb index 64ec3421..c19927f9 100644 --- a/lib/librarian/puppet/environment.rb +++ b/lib/librarian/puppet/environment.rb @@ -46,6 +46,9 @@ def local? config_db['mode'] == 'local' end + def use_v3_api + config_db['use-v3-api'] + end end end end diff --git a/lib/librarian/puppet/source/forge.rb b/lib/librarian/puppet/source/forge.rb index 59c39266..7553c996 100644 --- a/lib/librarian/puppet/source/forge.rb +++ b/lib/librarian/puppet/source/forge.rb @@ -148,9 +148,10 @@ def manifests(name) def repo(name) @repo ||= {} + unless @repo[name] # if we are using the official Forge then use API v3, otherwise stick to v1 for now - if uri.hostname =~ /\.puppetlabs\.com$/ + if uri.hostname =~ /\.puppetlabs\.com$/ || environment.use_v3_api @repo[name] = RepoV3.new(self, name) else @repo[name] = RepoV1.new(self, name) From 129742f8c7882b77b28ee01be7a527c54489a083 Mon Sep 17 00:00:00 2001 From: Johan Haals Date: Thu, 17 Jul 2014 10:18:11 +0200 Subject: [PATCH 2/3] add --use-v1-api install flag The v1 API is still default but should be changed to false in future versions. Specify --no-use-v1-api to use the new v3 API with a custom Puppet Forge --- lib/librarian/puppet/cli.rb | 4 ++-- lib/librarian/puppet/environment.rb | 4 ++-- lib/librarian/puppet/source/forge.rb | 2 +- 3 files changed, 5 insertions(+), 5 deletions(-) diff --git a/lib/librarian/puppet/cli.rb b/lib/librarian/puppet/cli.rb index ff195011..3ae2987b 100644 --- a/lib/librarian/puppet/cli.rb +++ b/lib/librarian/puppet/cli.rb @@ -44,7 +44,7 @@ def init option "path", :type => :string option "destructive", :type => :boolean, :default => false option "local", :type => :boolean, :default => false - option "use-v3-api", :type => :boolean, :default => false + option "use-v1-api", :type => :boolean, :default => true def install unless File.exist?('Puppetfile') @@ -65,7 +65,7 @@ def install environment.config_db.local["path"] = options["path"] end - environment.config_db.local['use-v3-api'] = options['use-v3-api'] ? '1' : nil + environment.config_db.local['use-v1-api'] = options['use-v1-api'] ? '1' : nil environment.config_db.local['mode'] = options['local'] ? 'local' : nil resolve! diff --git a/lib/librarian/puppet/environment.rb b/lib/librarian/puppet/environment.rb index c19927f9..4b4edff1 100644 --- a/lib/librarian/puppet/environment.rb +++ b/lib/librarian/puppet/environment.rb @@ -46,8 +46,8 @@ def local? config_db['mode'] == 'local' end - def use_v3_api - config_db['use-v3-api'] + def use_v1_api + config_db['use-v1-api'] end end end diff --git a/lib/librarian/puppet/source/forge.rb b/lib/librarian/puppet/source/forge.rb index 7553c996..ca9784bf 100644 --- a/lib/librarian/puppet/source/forge.rb +++ b/lib/librarian/puppet/source/forge.rb @@ -151,7 +151,7 @@ def repo(name) unless @repo[name] # if we are using the official Forge then use API v3, otherwise stick to v1 for now - if uri.hostname =~ /\.puppetlabs\.com$/ || environment.use_v3_api + if uri.hostname =~ /\.puppetlabs\.com$/ || !environment.use_v1_api @repo[name] = RepoV3.new(self, name) else @repo[name] = RepoV1.new(self, name) From d5f3dbf4d066dd498e614a8e93ff893e7135977b Mon Sep 17 00:00:00 2001 From: Johan Haals Date: Thu, 17 Jul 2014 11:25:18 +0200 Subject: [PATCH 3/3] docs on how to specify forge API version --- README.md | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/README.md b/README.md index b7b83df8..6c3d6cc4 100644 --- a/README.md +++ b/README.md @@ -161,6 +161,14 @@ source specified. This command writes the complete resolution into `Puppetfile.lock` and then copies all of the fetched modules into your `modules/` directory, overwriting whatever was there before. +Librarian-puppet support both v1 and v3 of the Puppet Forge API. +Specify a specific API version when installing modules: + + $ librarian-puppet install --use-v1-api # this is default + $ librarian-puppet install --no-use-v1-api # use the v3 API + +Please note that this does not apply for the official Puppet Forge where v3 is used by default. + Get an overview of your `Puppetfile.lock` with: $ librarian-puppet show