Объект домена сборки AQL не возвращает результаты

У меня возникла проблема, из-за которой я не могу получить ни один из запросов, которые я делаю для объекта домена сборки, который нужно вернуть при использовании AQL.

Когда делаю такой локон:

curl -X GET -H "X-JFrog-Art-Api: myArtifactroyKey" -H "Cache-Control: no-cache" "https://MyArtifactoryServer/artifactory/api/build/"

Получаю набор результатов:

{
  "builds": [
    {
      "uri": "/someBuild",
      "lastStarted": "2017-02-15T22:02:49.066+0000"
    },
    {
      "uri": "/someOtherBuild",
      "lastStarted": "2017-02-15T21:45:09.590+0000"
    }, 
      "uri": "/someThirdBuild",
      "lastStarted": "2017-02-15T21:17:38.794+0000"
    }
],
  "uri": "https://myArtifactoryServer/artifactory/api/build"
}

поэтому я знаю, что в моем Artifactory есть сборки

однако, когда я делаю следующий curl, который, как мне кажется, запрашивает все сборки с любым именем, я не получаю результатов

curl -X POST -H "X-JFrog-Art-Api: myArtifactroyKey" -H "Content-Type: application/x-www-form-urlencoded" -H "Cache-Control: no-cache" -d 'builds.find({"name": {"$match":"*"}})' "https://MyArtifactoryServer/artifactory/api/search/aql"

возвращает:

{
  "results": [],
  "range": {
    "start_pos": 0,
    "end_pos": 0,
    "total": 0
  }
}

Я смог получить результаты при использовании items.find(), но мне не повезло с builds.find(). Что-то мне не хватает?

Я намерен создать запрос, который возвращает самую последнюю информацию о сборке конкретной сборки на основе имени, но мне не удалось заставить работать даже самый простой запрос к объекту домена сборки.

Заранее спасибо за помощь.


person bobalink    schedule 15.02.2017    source источник
comment
Я попытался выполнить ваш запрос (изменив ключ API и MyArtifactoryServer), и он сработал как шарм. Можете ли вы проверить request.log в Artifactory и поделиться строкой журнала, связанной с этим запросом? Кроме того, вы используете пользователя с правами администратора? если нет, вы можете попробовать администратора и посмотреть, не изменится ли что-нибудь?   -  person Ariel    schedule 16.02.2017
comment
Обходное решение можно найти в stackoverflow.com/questions/51175439/   -  person Ed Randall    schedule 30.03.2019


Ответы (1)


Ответ может быть связан с разрешениями. Если ключ API, который вы используете, принадлежит пользователю, не являющемуся администратором, это может объяснить ситуацию.
Для запроса домена сборки с помощью AQL требуются разрешения администратора, в то время как API «Все сборки» требует только привилегированного пользователя.

person Dror Bereznitsky    schedule 17.02.2017
comment
Я обнаружил, что приведенный выше запрос будет работать только в том случае, если у пользователя есть права администратора. Я понимаю, что для этого запроса потребуется привилегированный пользователь, но я удивлен, что он требует наивысшего уровня привилегий. Это могло быть правдой? Есть ли другой способ получить ту же информацию без такой мощной настройки привилегий? - person John Cartwright; 22.02.2017
comment
Что касается запроса AQL, это текущая ситуация. Некоторые из доменов AQL ограничены только для доступа администратора. - person Dror Bereznitsky; 22.02.2017
comment
Недостаток в том, что /api/search/aql API не проясняет это, возвращая соответствующий статус ошибки HTTP, когда у пользователя недостаточно прав (здесь будет уместно 403 Forbidden); Странно, что (предположительно более тяжелый) fetch-all /api/build разрешен, а более узкий AQL-запрос - нет; И разочаровывает то, что /api/build сам по себе не поддерживает фильтрацию. - person Ed Randall; 30.03.2019