Greenwave APIs

Greenwave is a web application built using Flask and SQLAlchemy.

It provides a HTTP REST API for applications to use.

HTTP REST API

POST /api/v1.0/decision

Make a decision after evaluating all applicable policies based on test results. The request must be application/json.

Sample request:

POST /api/v1.0/decision HTTP/1.1
Host: localhost:5005
Accept-Encoding: gzip, deflate
Accept: application/json
Connection: keep-alive
User-Agent: HTTPie/0.9.4
Content-Type: application/json
Content-Length: 91

{
    "decision_context": "bodhi_update_push_stable",
    "product_version": "fedora-26",
    "subject": [{"item": "glibc-1.0-1.f26", "type": "koji_build"}]
}

Sample response:

HTTP/1.0 200
Content-Length: 228
Content-Type: application/json
Date: Thu, 16 Mar 2017 17:42:04 GMT
Server: Werkzeug/0.12.1 Python/2.7.13

{
    "policies_satisified": false,
    "summary": "2 of 15 required tests failed",
    "applicable_policies": ["1"],
    "unsatisfied_requirements": [
        {
            'item': {"item": "glibc-1.0-1.f26", "type": "koji_build"},
            'result_id': "123",
            'testcase': 'dist.depcheck',
            'type': 'test-result-failed'
        },
        {
            'item': {"item": "glibc-1.0-1.f26", "type": "koji_build"},
            'result_id': "124",
            'testcase': 'dist.rpmlint',
            'type': 'test-result-missing'
        }
    ]
}
JSON Parameters:
 
  • product_version (string) – The product version string used for querying WaiverDB.
  • decision_context (string) – The decision context string, identified by a free-form string label. It is to be named through coordination between policy author and calling application, for example bodhi_update_push_stable.
  • subject (list) – A list of items about which the caller is requesting a decision used for querying ResultsDB. Each item contains one or more key-value pairs of ‘data’ key in ResultsDB API. For example, [{“type”: “koji_build”, “item”: “xscreensaver-5.37-3.fc27”}].
  • ignore_result (list) – A list of result ids that will be ignored when making the decision.
  • ignore_waiver (list) – A list of waiver ids that will be ignored when making the decision.
Status Codes:
GET /api/v1.0/policies

Returns all currently loaded policies.

Sample response:

HTTP/1.0 200
Content-Length: 228
Content-Type: application/json
Date: Thu, 16 Mar 2017 17:42:04 GMT
Server: Werkzeug/0.12.1 Python/2.7.13

{
    "policies": [
        {
            "id": "taskotron_release_critical_tasks",
            "decision_context": "bodhi_update_push_stable",
            "product_versions": [
                "fedora-26"
            ],
            "rules": [
                {
                    "test_case_name": "dist.abicheck",
                    "rule": "PassingTestCaseRule"
                },
                {
                    "test_case_name": "dist.rpmdeplint",
                    "rule": "PassingTestCaseRule"
                },
                {
                    "test_case_name": "dist.upgradepath",
                    "rule": "PassingTestCaseRule"
                }
            ]
        }
    ]
}
Status Codes:
  • 200 OK – Currently loaded policies are returned.
GET /api/v1.0/version

Returns the current running version.

Sample response:

HTTP/1.0 200
Content-Length: 228
Content-Type: application/json
Date: Thu, 16 Mar 2017 17:42:04 GMT
Server: Werkzeug/0.12.1 Python/2.7.13

{
    'version': '1.2.3'
}
Status Codes:
  • 200 OK – Currently running greenwave software version is returned.