2
votes

I have Artifactory pro license, and as the following pages provide, I called rest api.

https://www.jfrog.com/confluence/display/RTF/Artifactory+REST+API#ArtifactoryRESTAPI-CreateRepository

I have verified that all other APIs such as repository listing, account creation and listing works normally, but I have confirmed that the repository creation api does not work with 400 errors.

I wanted to see the error by changing the log level, but there was no information about why there was a 400 error at the trace log level.

Below are related logs:

2018-06-15 10:31:34,028 [http-nio-8081-exec-15] [TRACE] (o.a.a.d.r.DockerV2AuthenticationFilter:84) - DockerV2AuthenticationFilter path: /api/repositories/newrepo

2018-06-15 10:31:34,028 [http-nio-8081-exec-15] [DEBUG] (o.a.w.s.a.AuthenticationFilterUtils:105) - Entering ArtifactorySsoAuthenticationFilter.getRemoteUserName

2018-06-15 10:31:34,028 [http-nio-8081-exec-15] [DEBUG] (o.a.w.s.AccessFilter:299) - Cached key has been found for request: '/artifactory/api/repositories/newrepo' with method: 'PUT'

2018-06-15 10:31:34,028 [http-nio-8081-exec-15] [TRACE] (o.a.s.PasswordDecryptingManager:95) - Received authentication request for org.artifactory.security.props.auth.PropsAuthenticationToken@3dc5bccf: Principal: null; Credentials: [PROTECTED]; Authenticated: false; Details: org.springframework.security.web.authentication.WebAuthenticationDetails@b364: RemoteIpAddress: {IP}; SessionId: null; Not granted any authorities

2018-06-15 10:31:34,029 [http-nio-8081-exec-15] [DEBUG] (o.j.a.c.h.AccessHttpClient:109) - Executing : GET http://localhost:8040/access/api/v1/users/?cd=apiKey_shash%3DGprGDe&exactKeyMatch=false

2018-06-15 10:31:34,035 [http-nio-8081-exec-15] [DEBUG] (o.a.w.s.AccessFilter:305) - Header authentication org.artifactory.security.props.auth.PropsAuthenticationToken@c20ca8df: Principal: admin; Credentials: [PROTECTED]; Authenticated: true; Details: org.springframework.security.web.authentication.WebAuthenticationDetails@b364: RemoteIpAddress: {IP}; SessionId: null; Granted Authorities: admin, user found in cache.

2018-06-15 10:31:34,035 [http-nio-8081-exec-15] [DEBUG] (o.a.w.s.RepoFilter  :100) - Entering request PUT (10.191.128.129) /api/repositories/newrepo.

2018-06-15 10:31:34,038 [http-nio-8081-exec-15] [DEBUG] (o.a.w.s.RepoFilter  :188) - Exiting request PUT (10.191.128.129) /api/repositories/newrepo

Updated

  1. My Artifactory Version: 6.0.2
  2. Reponse Message from Artifactory:

    {
      "errors" : [ {
        "status" : 400,
        "message" : "No valid type of repository found.\n"
      } ]
    }
    
  3. Repository Create JSON Message*:

    {
        "key": "newrepo",
        "rclass: "local",
        "packageType": "docker",
        "dockerApiVersion": "V2",
        "includesPattern": "**/*",
        "excludesPattern": "",
        "repoLayoutRef": "simple-default",
        "description": "",
        "checksumPolicyType": "client-checksums",
        "blackedOut": false,
        "propertySets": ["artifactory"]
    }
    
    • The error in this block is on purpose, and the code highlighting finds it quite nicely, but when this post was originally made, highlighting was not available on SO.
2
Can you share the request you are using to create the repository? what version of Artifactory are you using? what is the error message you are getting from Artifactory? is it possible you already have a repository named 'newrepo'?Dror Bereznitsky
@DrorBereznitsky, Thanks. I updated the question.Hanmin Bang
The error you are getting is a result of sending an invalid repository type. In your case you are passing 'local' as the repository type which is a legit value. However the JSON payload you added the questions has the 'rclass' in an invalid format. This might be reason (assuming it is not a copy&paste mistake)Dror Bereznitsky
In addition to my previous comment, try using 'application/vnd.org.jfrog.artifactory.repositories.LocalRepositoryConfiguration+json' as the Content-Type for the requestDror Bereznitsky
Can you share the exact command you are running? everything seems to be valid and I do not manage to reproduce this error on my machineDror Bereznitsky

2 Answers

1
votes

In your JSON you are missing " after the rclass.

You wrote ' "rclass: ' and it should be ' "rclass": '

Once fixing this the command should work properly. Good luck :)

curl -iuadmin:password -X PUT http://localhost:8081/artifactory/api/repositories/newrepo -H "Content-type:application/vnd.org.jfrog.artifactory.repositories.LocalRepositoryConfiguration+json" -T repo_temp.json 
HTTP/1.1 100 Continue

HTTP/1.1 200 OK
Server: Artifactory/5.11.0
X-Artifactory-Id: bea9f3f68aa06e62:4db81752:1643a9cff9e:-8000
Content-Type: text/plain
Transfer-Encoding: chunked
Date: Tue, 26 Jun 2018 06:57:24 GMT

Successfully created repository 'newrepo' 

repo_temp.json:

{ 
"key": "newrepo", 
"rclass": "local", 
"packageType": "docker", 
"dockerApiVersion": "V2", 
"includesPattern": "**/*", 
"excludesPattern": "", 
"repoLayoutRef": "simple-default", 
"description": "", 
"checksumPolicyType": "client-checksums", 
"blackedOut": false, 
"propertySets": ["artifactory"] 
}
0
votes

This error is (somehow) returned by Artifactory if the content-type header contains the charset, for example: Content-Type: application/json; charset=UTF-8 Try with simply Content-Type: application/json