Favorite View Example

Description

The Favoriate View is a very simple view example. It demonstrates the very basics of how to write and expose a REST service which works with instance parameters and instance data.

Package

All views are packaged as a view archive. The view archive contains the configuration file and various optional components of the view.

#####view.xml

The view.xml file is the only required file for a view archive. The view.xml is the configuration that describes the view and view instances for Ambari. The view.xml for this example defines two required parameters for configuring a view instance: what.is.the.question and i.do.not.know. The view also defines a single resource that exposes a REST service at the /favorite end point.

<view>
  <name>FAVORITE</name>
  <label>Favorite</label>
  <version>1.0.0</version>
  <parameter>
    <name>what.is.the.question</name>
    <description>Ask a question</description>
    <required>true</required>
  </parameter>
  <parameter>
    <name>i.do.not.know</name>
    <description>If you do not know</description>
    <required>true</required>
  </parameter>
  <resource>
    <name>favorite</name>
    <service-class>org.apache.ambari.view.favorite.FavoriteService</service-class>
  </resource>
</view>

Build

The view can be built as a maven project.

cd ambari-views/examples/favorite-view
mvn clean package

The build will produce the view archive.

ambari-views/examples/favorite-view/target/favorite-view-1.0.0.jar

Place the view archive on the Ambari Server and restart to deploy.

cp favorite-view-1.0.0.jar /var/lib/ambari-server/resources/views/
ambari-server restart

Create View Instance

With the view deployed, create an instance of the view to be used by Ambari users.

POST
/api/v1/views/FAVORITE/versions/1.0.0/instances/FAVCOLOR

[ {
  "ViewInstanceInfo" : {
    "label" : "Colors",
    "description" : "Choose your favorite color",
    "properties" : {
      "what.is.the.question" : "What is your favorite color?",
      "i.do.not.know" : "green"
    }
  }
} ]

Access the view service end point:

/api/v1/views/FAVORITE/versions/1.0.0/instances/FAVCOLOR/resources/favorite

To get the favorite color:

GET
/api/v1/views/FAVORITE/versions/1.0.0/instances/FAVCOLOR/resources/favorite/item

To set the favorite color:

POST
/api/v1/views/FAVORITE/versions/1.0.0/instances/FAVCOLOR/resources/favorite/item/blue