kindredgroup / puppet-forge-server

Private Puppet forge server supports local files and both v1 and v3 API proxies
69 stars 44 forks source link

module download /v3/files issue #64

Open hsravidatta opened 7 years ago

hsravidatta commented 7 years ago

Hello,

Planned to run the forge server internally without caching/accessing the public forge portal. for testing copied one of the module to module director as given below (/var/forge/modules/puppetlabs/apache-1.11.0.tar.gz

i was able to browse the modules details in the UI when I click on the download module from UI, it gives "internal error" same behavior if I try with puppet module install command.

i have commented the below line in config.ru file as wanted to maintain the purely internal module repo. PuppetForgeServer::Backends::ProxyV3.new('https://forgeapi.puppetlabs.com', cache_dir)

Same behaviour observed both in daemon & non-daemon mode of running puppet forge server

command used to start the puppet forge server:

puppet-forge-server -m /var/forge/modules --log-dir /var/forge/log --cache-basedir /var/forge/cache --pidfile /var/forge/server.pid

any thoughts please?

hickey commented 6 years ago

Did a quick test before responding here, but here is the craziness.

The searching for modules will descent into directories. I created a test directory and then copied an old module (with a new name) into the test directory. Searching for the module did show up--although the metadata was being pulled live from the tar.gz file.

The code that generates the download link is not producing any subdirectory information (I am assuming, have not looked at the code yet). Seems like this should be something easy to fix, but again I have not looked at that bit of code. In fact, I could not select the version of the module I moved from the selection box, so this may need 2 or 3 spots of updating the code.

Also, I have to note that your path is invalid--even by the official Puppet Forge server specs. You should have named your file /var/forge/modules/puppetlabs-apache-1.11.0.tar.gz. If you had done that, then you would have been successful.

While namespacing the modules in the filesystem would be a nice thing to do, it is not really necessary unless you plan on storing tens of thousands of modules.