diff options
Diffstat (limited to 'docs/sections/apis/dcaecdap.rst')
-rw-r--r-- | docs/sections/apis/dcaecdap.rst | 662 |
1 files changed, 662 insertions, 0 deletions
diff --git a/docs/sections/apis/dcaecdap.rst b/docs/sections/apis/dcaecdap.rst new file mode 100644 index 00000000..16dc2cf4 --- /dev/null +++ b/docs/sections/apis/dcaecdap.rst @@ -0,0 +1,662 @@ +=============== +CDAP Broker API +=============== + +:Date: 2017-10-09 + +.. contents:: + :depth: 3 +.. + +Overview +======== + +Version information +------------------- + +*Version* : 4.0.10 + +Paths +===== + +GET / +----- + +Description +~~~~~~~~~~~ + +shows some information about this service + +Responses +~~~~~~~~~ + ++---------+--------------------------------------------+-------------------+ +| HTTP | Description | Schema | +| Code | | | ++=========+============================================+===================+ +| **200** | successful response | `info <#_info>`__ | ++---------+--------------------------------------------+-------------------+ + +GET /application +---------------- + +Description +~~~~~~~~~~~ + +get all applications registered with this broker + +Responses +~~~~~~~~~ + ++---------+-------------------------------------------+---------------+ +| HTTP | Description | Schema | +| Code | | | ++=========+===========================================+===============+ +| **200** | successful response | `appname <#_a | +| | | ppname>`__ | +| | | (array) | ++---------+-------------------------------------------+---------------+ + +PUT /application/{appname} +-------------------------- + +Description +~~~~~~~~~~~ + +(This is a hacky way of supporting "oneOf" because Swagger does not +support oneOf https://github.com/OAI/OpenAPI-Specification/issues/333. +This is the same endpoint as PUT /application/appname, except the PUT +body is different.) + +Register a hydrator app for service and configuration discovery. This +will light up a metrics and health endpoint for this app. ``appname`` is +assumed to also be the key in consul. + +Parameters +~~~~~~~~~~ + ++----------+---------------+---------------------------------+------------------+ +| Type | Name | Description | Schema | ++==========+===============+=================================+==================+ +| **Path** | | **appname** | Name of the application. | string (text) | +| | | *required* | | | ++----------+---------------+---------------------------------+------------------+ +| **Body** | | **putbody** | required put body | `hydratorappput | +| | | *required* | | <#_hydratorapppu | +| | | | t>`__ | ++----------+---------------+---------------------------------+------------------+ + +Responses +~~~~~~~~~ + ++---------+----------------------------------------------------+---------------+ +| HTTP | Description | Schema | +| Code | | | ++=========+====================================================+===============+ +| **200** | Successful response | `application | +| | | <#_applicatio | +| | | n>`__ | ++---------+----------------------------------------------------+---------------+ +| **400** | put was performed but the appname was already | No Content | +| | registered with the broker, or Invalid PUT body | | ++---------+----------------------------------------------------+---------------+ + +Consumes +~~~~~~~~ + +- ``application/json`` + +Produces +~~~~~~~~ + +- ``application/json`` + +POST /application/delete +------------------------ + +Description +~~~~~~~~~~~ + +endpoint to delete multiple applications at once. Returns an array of +status codes, where statuscode[i] = response returned from +DELETE(application/i) + +Parameters +~~~~~~~~~~ + ++----------+----------------+------------------------------+------------------+ +| Type | Name | Description | Schema | ++==========+================+==============================+==================+ +| **Body** | | **postbody** | required post body | `multideleteput | +| | | *required* | | <#_multideletepu | +| | | | t>`__ | ++----------+----------------+------------------------------+------------------+ + +Responses +~~~~~~~~~ + ++---------+----------------------------------------------+-------------------+ +| HTTP | Description | Schema | +| Code | | | ++=========+==============================================+===================+ +| **200** | successful response | `returncode | +| | | <#_returncode>`__ | +| | | (array) | ++---------+----------------------------------------------+-------------------+ + +GET /application/{appname} +-------------------------- + +Description +~~~~~~~~~~~ + +Returns the representation of the application resource, including the +links for healthcheck and metrics. + +Parameters +~~~~~~~~~~ + ++----------+---------------+--------------------------------+------------------+ +| Type | Name | Description | Schema | ++==========+===============+================================+==================+ +| **Path** | | **appname** | Name of the application. | string (text) | +| | | *required* | | | ++----------+---------------+--------------------------------+------------------+ + +Responses +~~~~~~~~~ + ++---------+----------------------------------------------------+---------------+ +| HTTP | Description | Schema | +| Code | | | ++=========+====================================================+===============+ +| **200** | Successful response | `application | +| | | <#_applicatio | +| | | n>`__ | ++---------+----------------------------------------------------+---------------+ +| **404** | no app with name 'appname' registered with this | No Content | +| | broker. | | ++---------+----------------------------------------------------+---------------+ + +PUT /application/{appname} +-------------------------- + +Description +~~~~~~~~~~~ + +Register an app for service and configuration discovery. This will light +up a metrics and health endpoint for this app. ``appname`` is assumed to +also be the key in consul. + +Parameters +~~~~~~~~~~ + ++----------+---------------+--------------------------------+------------------+ +| Type | Name | Description | Schema | ++==========+===============+================================+==================+ +| **Path** | | **appname** | Name of the application. | string (text) | +| | | *required* | | | ++----------+---------------+--------------------------------+------------------+ +| **Body** | | **putbody** | required put body | `appput <#_apppu | +| | | *required* | | t>`__ | ++----------+---------------+--------------------------------+------------------+ + +Responses +~~~~~~~~~ + ++---------+--------------------------------------------------+---------------+ +| HTTP | Description | Schema | +| Code | | | ++=========+==================================================+===============+ +| **200** | Successful response | `Application | +| | | <#_applicatio | +| | | n>`__ | ++---------+--------------------------------------------------+---------------+ +| **400** | put was performed but the appname was already | No Content | +| | registered with the broker, or Invalid PUT body | | ++---------+--------------------------------------------------+---------------+ + +Consumes +~~~~~~~~ + +- ``application/json`` + +Produces +~~~~~~~~ + +- ``application/json`` + +DELETE /application/{appname} +----------------------------- + +Description +~~~~~~~~~~~ + +Remove an app for service and configuration discovery. This will remove +the metrics and health endpoints for this app. + +Parameters +~~~~~~~~~~ + ++----------+---------------+--------------------------------+------------------+ +| Type | Name | Description | Schema | ++==========+===============+================================+==================+ +| **Path** | | **appname** | Name of the application. | string (text) | +| | | *required* | | | ++----------+---------------+--------------------------------+------------------+ + +Responses +~~~~~~~~~ + ++---------+----------------------------------------------------+----------------+ +| HTTP | Description | Schema | +| Code | | | ++=========+====================================================+================+ +| **200** | Successful response | No Content | ++---------+----------------------------------------------------+----------------+ +| **404** | no app with name 'appname' registered with this | No Content | +| | broker. | | ++---------+----------------------------------------------------+----------------+ + +GET /application/{appname}/healthcheck +-------------------------------------- + +Description +~~~~~~~~~~~ + +Perform a healthcheck on the running app appname. + +Parameters +~~~~~~~~~~ + ++----------+---------------+--------------------------------+------------------+ +| Type | Name | Description | Schema | ++==========+===============+================================+==================+ +| **Path** | | **appname** | Name of the application to get | string (text) | +| | | *required* | the healthcheck for. | | ++----------+---------------+--------------------------------+------------------+ + +Responses +~~~~~~~~~ + ++---------+----------------------------------------------------+----------------+ +| HTTP | Description | Schema | +| Code | | | ++=========+====================================================+================+ +| **200** | Successful response, healthcheck pass | No Content | ++---------+----------------------------------------------------+----------------+ +| **404** | no app with name 'appname' registered with this | No Content | +| | broker, or the healthcheck has failed (though I | | +| | would like to disambiguiate from the first case, | | +| | CDAP returns a 404 for this). | | ++---------+----------------------------------------------------+----------------+ + +GET /application/{appname}/metrics +---------------------------------- + +Description +~~~~~~~~~~~ + +Get live (real-time) app specific metrics for the running app appname. +Metrics are customized per each app by the component developer + +Parameters +~~~~~~~~~~ + ++----------+---------------+--------------------------------+------------------+ +| Type | Name | Description | Schema | ++==========+===============+================================+==================+ +| **Path** | | **appname** | Name of the application to get | string (text) | +| | | *required* | metrics for. | | ++----------+---------------+--------------------------------+------------------+ + +Responses +~~~~~~~~~ + ++---------+----------------------------------------------------+----------------+ +| HTTP | Description | Schema | +| Code | | | ++=========+====================================================+================+ +| **200** | Successful response | `MetricsObject | +| | | <#_metricsobje | +| | | ct>`__ | ++---------+----------------------------------------------------+----------------+ +| **404** | no app with name 'appname' registered with this | No Content | +| | broker. | | ++---------+----------------------------------------------------+----------------+ + +PUT /application/{appname}/reconfigure +-------------------------------------- + +Description +~~~~~~~~~~~ + +Reconfigures the application. + +Parameters +~~~~~~~~~~ + ++----------+---------------+----------------------------+--------------------+ +| Type | Name | Description | Schema | ++==========+===============+============================+====================+ +| **Path** | | **appname** | Name of the application. | string (text) | +| | | *required* | | | ++----------+---------------+----------------------------+--------------------+ +| **Body** | | **putbody** | required put body | `reconfigput | +| | | *required* | | <#_reconfigput>`__ | ++----------+---------------+----------------------------+--------------------+ + +Responses +~~~~~~~~~ + ++---------+----------------------------------------------------+----------------+ +| HTTP | Description | Schema | +| Code | | | ++=========+====================================================+================+ +| **200** | Successful response | No Content | ++---------+----------------------------------------------------+----------------+ +| **400** | Bad request. Can happen with 1) {appname} is not | No Content | +| | registered with the broker, 2) the required PUT | | +| | body is wrong, or 3) the smart interface was | | +| | chosen and none of the config keys match anything | | +| | in app\_config or app\_preferences | | ++---------+----------------------------------------------------+----------------+ + +Definitions +=========== + +Application +----------- + ++---------------------+---------------------------------------------+------------------+ +| Name | Description | Schema | ++=====================+=============================================+==================+ +| | **appname** | application name | string | +| | *optional* | | | ++---------------------+---------------------------------------------+------------------+ +| | **connectionurl** | input URL that you can POST data into (URL | string | +| | *optional* | of the CDAP stream) | | ++---------------------+---------------------------------------------+------------------+ +| | **healthcheckurl**| fully qualified url to perform healthcheck | string | +| | *optional* | | | ++---------------------+---------------------------------------------+------------------+ +| | **metricsurl** | fully qualified url to get metrics from | string | +| | *optional* | | | ++---------------------+---------------------------------------------+------------------+ +| | **service | a list of HTTP services exposed by this | `service\_method | +| endpoints** | CDAP application | <#_service_metho | +| | *optional* | | d>`__ | +| | | (array) | ++---------------------+---------------------------------------------+------------------+ +| | **url** | fully qualified url of the resource | string | +| | *optional* | | | ++---------------------+---------------------------------------------+------------------+ + +MetricsObject +------------- + +key,value object where the key is 'appmetrics' and the value is an app +dependent json and specified by the component developer + ++--------------------------------+-------------------------------------------+ +| Name | Schema | ++================================+===========================================+ +| | **appmetrics** | object | +| | *optional* | | ++--------------------------------+-------------------------------------------+ + +appname +------- + +an application name + +*Type* : string + +appput +------ + ++-------------------------------+---------------------------------------------+--------------------+ +| Name | Description | Schema | ++===============================+=============================================+====================+ +| | **app\_config** | the application config JSON | object | +| | *optional* | | | ++-------------------------------+---------------------------------------------+--------------------+ +| | **app\_preferences** | the application preferences JSON | object | +| | *optional* | | | ++-------------------------------+---------------------------------------------+--------------------+ +| | **artifact\_name** | the name of the CDAP artifact to be added | string | +| | *optional* | | | ++-------------------------------+---------------------------------------------+--------------------+ +| | **cdap\_application\_type** | denotes whether this is a program-flowlet | enum | +| | *optional* | style application or a hydrator pipeline. | (program-flowlet | +| | For program-flowlet style apps, this value | ) | +| | must be "program-flowlet" | | ++-------------------------------+---------------------------------------------+--------------------+ +| | **jar\_url** | the URL that the JAR you’re deploying | string | +| | *optional* | resides | | ++-------------------------------+---------------------------------------------+--------------------+ +| | **namespace** | the cdap namespace this is deployed into | string | +| | *optional* | | | ++-------------------------------+---------------------------------------------+--------------------+ +| | **program\_preferences** | | `programpref | +| | *optional* | | <#_programpref>`__ | +| | | (array) | ++-------------------------------+---------------------------------------------+--------------------+ +| | **programs** | | `programs | +| | *optional* | | <#_programs>`__ | +| | | (array) | ++-------------------------------+---------------------------------------------+--------------------+ +| | **services** | | `service\_endpoint | +| | *optional* | | <#_service_endpoin | +| | | t>`__ (array) | ++-------------------------------+---------------------------------------------+--------------------+ +| | **streamname** | name of the CDAP stream to ingest data into | string | +| | *optional* | this app. Should come from the developer | | +| | and Tosca model. | | ++-------------------------------+---------------------------------------------+--------------------+ + +hydratorappput +-------------- + ++-----------------------------------+---------------------------------------------+---------------+ +| Name | Description | Schema | ++===================================+=============================================+===============+ +| | **cdap\_application\_TYPE** | denotes whether this is a program-flowlet | enum | +| | style application or a hydrator pipeline. | (hydrator-pip | +| | *required* | For hydrator, this value must be | eline) | +| | "hydrator-pipeline" | | ++-----------------------------------+---------------------------------------------+---------------+ +| | **dependencies** | represents a list of dependencies to be | `hydratordep | +| | *optional* | loaded for this pipeline. Not required. | <#_hydratorde | +| | | p>`__ (array) | ++-----------------------------------+---------------------------------------------+---------------+ +| | **namespace** | the cdap namespace this is deployed into | string | +| | *required* | | | ++-----------------------------------+---------------------------------------------+---------------+ +| | **pipeline\_config\_json\_url** | the URL of the config.json for this | string | +| | *required* | pipeline | | ++-----------------------------------+---------------------------------------------+---------------+ +| | **streamname** | name of the CDAP stream to ingest data into | string | +| | *required* | this app. Should come from the developer | | +| | and Tosca model. | | ++-----------------------------------+---------------------------------------------+---------------+ + +hydratordep +----------- + +represents a hydrator pipeline dependency. An equivalent to the +following CURLs are formed with the below four params shown in CAPS:: + + curl -v -w"\\n" -X POST + http://cdapurl:11015/v3/namespaces/setelsewhere/artifacts/ARTIFACT_NAME + -H "Artifact-Extends:ARTIFACT\_EXTENDS\_HEADER" -H + “Artifact-Version:ARTIFACT\_VERSION\_HEADER” –data-binary @(DOWNLOADED + FROM ARTIFACT\_URL)","curl -v -w"\\n" -X PUT + http://cdapurl:11015/v3/namespaces/setelsewhere/artifacts/ARTIFACT_NAME/versions/ARTIFACT_VERSION_HEADER/properties + -d (DOWNLOADED FROM UI\_PROPERTIES\_URL)" + ++---------------------------------+---------------------------------------------+----------+ +| Name | Description | Schema | ++=================================+=============================================+==========+ +| | **artifact\_extends\_header** | the value of the header that gets passed in | string | +| | *required* | for artifact-extends, e.g., | | +| | "Artifact-Extends:system:cdap-data-pipeline | | +| | [4.0.1,5.0.0)" | | ++---------------------------------+---------------------------------------------+----------+ +| | **artifact\_name** | the name of the artifact | string | +| | *required* | | | ++---------------------------------+---------------------------------------------+----------+ +| | **artifact\_url** | the URL of the artifact JAR | string | +| | *required* | | | ++---------------------------------+---------------------------------------------+----------+ +| | **artifact\_version\_header** | the value of the header that gets passed in | string | +| | *required* | for artifact-version, e.g., | | +| | "Artifact-Version:1.0.0-SNAPSHOT" | | ++---------------------------------+---------------------------------------------+----------+ +| | **ui\_properties\_url** | the URL of the properties.json if the | string | +| | *optional* | custom artifact has UI properties. This is | | +| | optional. | | ++---------------------------------+---------------------------------------------+----------+ + +info +---- + +some broker information + ++------------------+---------------------------------------------+-----------+ +| Name | Description | Schema | ++==================+=============================================+===========+ +| | **broker API | the API version of this running broker | string | +| version** | | | +| | *optional* | | | ++------------------+---------------------------------------------+-----------+ +| | **cdap GUI | The GUI port of the CDAP cluster this | integer | +| port** | broker is managing. Mostly to help users of | | +| | *optional* | this API check their application in cdap. | | +| | Note, will return UNKNOWN\_CDAP\_VERSION if | | +| | it cannot be determined. | | ++------------------+---------------------------------------------+-----------+ +| | **cdap | the version of the CDAP cluster this broker | string | +| cluster | is managing. Note, will return | | +| version** | UKNOWN\_CDAP\_VERSION if it cannot be | | +| | *optional* | determined. | | ++------------------+---------------------------------------------+-----------+ +| | **managed cdap | the url of the CDAP cluster API this broker | string | +| url** | is managing | | +| | *optional* | | | ++------------------+---------------------------------------------+-----------+ +| | **number | | integer | +| of applications | | | +| registered** | | | +| | *optional* | | | ++------------------+---------------------------------------------+-----------+ +| | **uptime (s)** | | integer | +| | *optional* | | | ++------------------+---------------------------------------------+-----------+ + +multideleteput +-------------- + ++--------------------------------+----------------------------------+ +| Name | Schema | ++================================+==================================+ +| | **appnames** | `appname <#_appname>`__ (array) | +| | *optional* | | ++--------------------------------+----------------------------------+ + +programpref +----------- + +the list of programs in this CDAP app + ++--------------+---------------------------------------------+----------+ +| Name | Description | Schema | ++==============+=============================================+==========+ +| | **program\ | the name of the program | string | +| _id** | | | +| | *optional* | | | ++--------------+---------------------------------------------+----------+ +| | **program_ | the preference JSON to set for this program | object | +| \pref** | | | +| | *optional* | | | ++--------------+---------------------------------------------+----------+ +| | **program\ | must be one of flows, mapreduce, schedules, | string | +| _type** | spark, workflows, workers, or services | | +| | *optional* | | | ++--------------+---------------------------------------------+----------+ + +programs +-------- + +the list of programs in this CDAP app + ++--------------+---------------------------------------------+-----------+ +| Name | Description | Schema | ++==============+=============================================+===========+ +| | **program\ | the name of the program | string | +| _id** | | | +| | *optional* | | | ++--------------+---------------------------------------------+-----------+ +| | **program\ | must be one of flows, mapreduce, schedules, | string | +| _type** | spark, workflows, workers, or services | | +| | *optional* | | | ++--------------+---------------------------------------------+-----------+ + +reconfigput +----------- + ++-----------------------------+-----------------------------+------------------+ +| Name | Description | Schema | ++=============================+=============================+==================+ +| | **config** | the config JSON | object | +| | *required* | | | ++-----------------------------+-----------------------------+------------------+ +| | **reconfiguration\_type** | the type of reconfiguration | enum | +| | *required* | | (program-flowlet | +| | | -app-config, | +| | | program-flowlet- | +| | | app-preferences, | +| | | program-flowlet- | +| | | smart) | ++-----------------------------+-----------------------------+------------------+ + +returncode +---------- + +an httpreturncode + +*Type* : integer + +service\_endpoint +----------------- + +descirbes a service endpoint, including the service name, the method +name, and the method type (GET, PUT, etc, most of the time will be GET) + ++--------------------------+-----------------------------------------+---------+ +| Name | Description | Schema | ++==========================+=========================================+=========+ +| | **endpoint\_method** | GET, POST, PUT, etc | string | +| | *optional* | | | ++--------------------------+-----------------------------------------+---------+ +| | **service\ _endpoint** | the name of the endpoint on the service | string | +| | *optional* | | | ++--------------------------+-----------------------------------------+---------+ +| | **service\_name** | the name of the service | string | +| | *optional* | | | ++--------------------------+-----------------------------------------+---------+ + +service\_method +--------------- + +a URL and HTTP method exposed via a CDAP service + ++--------------+---------------------------------------------+----------+ +| Name | Description | Schema | ++==============+=============================================+==========+ +| | **method** | HTTP method you can perform on the URL, | string | +| | *optional* | e.g., GET, PUT, etc | | ++--------------+---------------------------------------------+----------+ +| | **url** | the fully qualified URL in CDAP for this | string | +| | *optional* | | | ++--------------+---------------------------------------------+----------+ |