repositorytools icon indicating copy to clipboard operation
repositorytools copied to clipboard

artifact upload fails when uploaded file's name does not match GAV specified in arguments

Open oskrkal opened this issue 6 years ago • 0 comments

Call to artifact upload fails when name of the file being uploaded does not match version specified in the command's arguments.

When running this command

artifact upload --use-direct-put --artifact my-artifact --version 2.0.8-1.el6.noarch  /tmp/my-artifact-2.0.8-1.noarch.rpm packages-el6 com.mycomp

the artifact is uploaded, but the command fails with this error:

INFO:/usr/local/bin/artifact:Started /usr/local/bin/artifact, with arguments ['upload', '--use-direct-put', '--artifact', 'my-artifact', '--version', '2.0.8-1.el6.noarch', '/tmp/my-artifact-2.0.8-1.noarch.rpm', 'packages-el6', 'com.mycomp']
INFO:repositorytools.lib.repository:-> Uploading my-artifact-2.0.8-1.noarch.rpm
Traceback (most recent call last):
  File "/usr/local/bin/artifact", line 9, in <module>
    load_entry_point('repositorytools==4.2.1', 'console_scripts', 'artifact')()
  File "/opt/repositorytools/lib/python2.7/site-packages/repositorytools/cli/common.py", line 58, in __call__
    self.run(*args)
  File "/opt/repositorytools/lib/python2.7/site-packages/repositorytools/cli/common.py", line 55, in run
    return args_namespace.func(args_namespace)
  File "/opt/repositorytools/lib/python2.7/site-packages/repositorytools/cli/commands/artifact.py", line 94, in upload
    return self.repository.upload_artifacts([artifact], args.repo_id, use_direct_put=args.use_direct_put)
  File "/opt/repositorytools/lib/python2.7/site-packages/repositorytools/lib/repository.py", line 109, in upload_artifacts
    use_direct_put=use_direct_put)
  File "/opt/repositorytools/lib/python2.7/site-packages/repositorytools/lib/repository.py", line 170, in _upload_artifact
    maven_metadata = self._send_json(path)['data']
  File "/opt/repositorytools/lib/python2.7/site-packages/repositorytools/lib/repository.py", line 217, in _send_json
    r = self._send(path, data=data, headers=headers, method=method, params=params)
  File "/opt/repositorytools/lib/python2.7/site-packages/repositorytools/lib/repository.py", line 207, in _send
    r.raise_for_status()
  File "/opt/repositorytools/lib/python2.7/site-packages/requests/models.py", line 935, in raise_for_status
    raise HTTPError(http_error_msg, response=self)
requests.exceptions.HTTPError: 404 Client Error: Not Found for url: https://repository.mycomp.com/service/local/repositories/packages-el6/content/com/mycomp/my-artifact/2.0.8-1.el6.noarch/my-artifact-2.0.8-1.noarch.rpm?describe=maven2

The repository returns HTTP 404, because the URL contains local file name (without el6) and not the file name used on the server. The correct URL should be https://repository.mycomp.com/service/local/repositories/packages-el6/content/com/mycomp/my-artifact/2.0.8-1.el6.noarch/my-artifact-2.0.8-1.el6.noarch.rpm?describe=maven2.

oskrkal avatar Jun 18 '18 11:06 oskrkal