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.
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>
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
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