The user may query for all of the deployed views. Note that views are a top level resources (they are not sub-resources of a cluster).
GET http://<server>:8080/api/v1/views/ { "href" : "http://<server>:8080/api/v1/views/", "items" : [ { "href" : "http://<server>:8080/api/v1/views/FILES", "ViewInfo" : { "view_name" : "FILES" } }, { "href" : "http://<server>:8080/api/v1/views/HELLO_WORLD", "ViewInfo" : { "view_name" : "HELLO_WORLD" } } ] }
To get a specific view, request it by name. Note that the response shows all of the versions of the view as sub-resources.
GET http://<server>:8080/api/v1/views/FILES/ { "href" : "http://<server>:8080/api/v1/views/FILES/", "ViewInfo" : { "view_name" : "FILES" }, "versions" : [ { "href" : "http://<server>:8080/api/v1/views/FILES/versions/0.1.0", "ViewVersionInfo" : { "version" : "0.1.0", "view_name" : "FILES" } } ] }
The user may request all of the versions of a named view.
GET http://<server>:8080/api/v1/views/FILES/versions/ { "href" : "http://<server>:8080/api/v1/views/FILES/versions/", "items" : [ { "href" : "http://<server>:8080/api/v1/views/FILES/versions/0.1.0", "ViewVersionInfo" : { "version" : "0.1.0", "view_name" : "FILES" } } ] }
A specific version can be requested. Note that all of the instances of the view version are included in the response.
GET http://<server>:8080/api/v1/views/FILES/versions/0.1.0/ { "href" : "http://<server>:8080/api/v1/views/FILES/versions/0.1.0/", "ViewVersionInfo" : { "archive" : "/var/lib/ambari-server/resources/views/work/FILES{0.1.0}", "label" : "Files", "parameters" : [ { "name" : "dataworker.defaultFs", "description" : "FileSystem URI", "required" : true }, { "name" : "dataworker.username", "description" : "The username (defaults to ViewContext username)", "required" : false } ], "version" : "0.1.0", "view_name" : "FILES" }, "instances" : [ { "href" : "http://<server>:8080/api/v1/views/FILES/versions/0.1.0/instances/FILES_1", "ViewInstanceInfo" : { "instance_name" : "FILES_1", "version" : "0.1.0", "view_name" : "FILES" } } ] }
The user may request all of the instances of a view.
GET http://<server>:8080/api/v1/views/FILES/versions/0.1.0/instances/ { "href" : "http://<server>:8080/api/v1/views/FILES/versions/0.1.0/instances/", "items" : [ { "href" : "http://<server>:8080/api/v1/views/FILES/versions/0.1.0/instances/FILES_1", "ViewInstanceInfo" : { "instance_name" : "FILES_1", "version" : "0.1.0", "view_name" : "FILES" } } ] }
A specific view instance may be requested by specifying its name. Note that the instance resources are listed as sub-resources.
GET http://<server>:8080/api/v1/views/FILES/versions/0.1.0/instances/FILES_1 { "href" : "http://<server>:8080/api/v1/views/FILES/versions/0.1.0/instances/FILES_1", "ViewInstanceInfo" : { "context_path" : "/views/FILES/0.1.0/FILES_1", "instance_name" : "FILES_1", "version" : "0.1.0", "view_name" : "FILES", "instance_data" : { }, "properties" : { "dataworker.defaultFs" : "hdfs://<server>:8020" } }, "resources" : [ { "href" : "http://<server>:8080/api/v1/views/FILES/versions/0.1.0/instances/FILES_1/resources/files", "instance_name" : "FILES_1", "name" : "files", "version" : "0.1.0", "view_name" : "FILES" } ] }
New view instances may be created through the API.
POST http://<server>:8080/api/v1/views/FILES/versions/0.1.0/instances/FILES_2
The properties of a view instance may be updated through the API.
PUT http://<server>:8080/api/v1/views/FILES/versions/0.1.0/instances/FILES_2 [{ "ViewInstanceInfo" : { "properties" : { "dataworker.defaultFs" : "hdfs://MyServer:8020" } } }]
A view instances may be deleted through the API.
DELETE http://<server>:8080/api/v1/views/FILES/versions/0.1.0/instances/FILES_2
A view resource may be accessed through the REST API. The href for each view resource can be found in a request for the parent view instance. The resource endpoints and behavior depends on the implementation of the JAX-RS annotated service class specified for the resource element in the view.xml.
GET http://<server>:8080/api/v1/views/FILES/versions/0.1.0/instances/FILES_1/resources/files/fileops/listdir?path=%2F [{"path":"/app-logs","replication":0,"isDirectory":true,"len":0,"owner":"yarn","group":"hadoop","permission":"-rwxrwxrwx","accessTime":0,"modificationTime":1400006792122,"blockSize":0},{"path":"/mapred","replication":0,"isDirectory":true,"len":0,"owner":"mapred","group":"hdfs","permission":"-rwxr-xr-x","accessTime":0,"modificationTime":1400006653817,"blockSize":0},{"path":"/mr-history","replication":0,"isDirectory":true,"len":0,"owner":"hdfs","group":"hdfs","permission":"-rwxr-xr-x","accessTime":0,"modificationTime":1400006653822,"blockSize":0},{"path":"/tmp","replication":0,"isDirectory":true,"len":0,"owner":"hdfs","group":"hdfs","permission":"-rwxrwxrwx","accessTime":0,"modificationTime":1400006720415,"blockSize":0},{"path":"/user","replication":0,"isDirectory":true,"len":0,"owner":"hdfs","group":"hdfs","permission":"-rwxr-xr-x","accessTime":0,"modificationTime":1400006610050,"blockSize":0}]
Any managed resources for a view may also be accessed through the REST API. Note that instances of a managed resource appear as sub-resources of an instance under the plural name specified for the resource in the view.xml. In this example, a list of managed resources named ‘scripts’ is included in the response for the view instance …
GET http://<server>:8080/api/v1/views/PIG/versions/0.1.0/instances/INSTANCE_1 { "href" : "http://<server>:8080/api/v1/views/PIG/versions/0.1.0/instances/INSTANCE_1", "ViewInstanceInfo" : { "context_path" : "/views/PIG/0.1.0/INSTANCE_1", "instance_name" : "INSTANCE_1", "version" : "0.1.0", "view_name" : "PIG", "instance_data" : { }, "properties" : { … } }, "resources" : [ ], "scripts" : [ { "href" : "http://<server>:8080/api/v1/views/PIG/versions/0.1.0/instances/INSTANCE_1/scripts/script1", "id" : "script1", "instance_name" : "INSTANCE_1", "version" : "0.1.0", "view_name" : "PIG" }, { "href" : "http://<server>:8080/api/v1/views/FILES/versions/0.1.0/instances/INSTANCE_1/scripts/script2", "id" : "script2", "instance_name" : "INSTANCE_1", "version" : "0.1.0", "view_name" : "PIG" }, … ] }
To get a single managed resource …
GET http://<server>:8080/api/v1/views/PIG/versions/0.1.0/instances/INSTANCE_1/scripts/script1 { "href" : "http://<server>:8080/api/v1/views/PIG/versions/0.1.0/instances/INSTANCE_1/scripts/script1", "id" : "script1", "pigScript" : "… ", "pythonScript" : "… ", "templetonArguments" : "… ", "dateCreated" : … , "owner" : "… ", "instance_name" : "INSTANCE_1", "version" : "0.1.0", "view_name" : "PIG" }
Because the resource is managed through the Ambari API framework, it may be queried using partial response and query predicates. For example …
GET http://<server>:8080/api/v1/views/PIG/versions/0.1.0/instances/INSTANCE_1/scripts?fields=pythonScript&owner=jsmith