001/* 002# Licensed Materials - Property of IBM 003# Copyright IBM Corp. 2017 004 */ 005package rest; 006 007import java.util.List; 008 009import com.google.gson.JsonPrimitive; 010import com.ibm.streamsx.rest.InputPort; 011import com.ibm.streamsx.rest.Instance; 012import com.ibm.streamsx.rest.Job; 013import com.ibm.streamsx.rest.Metric; 014import com.ibm.streamsx.rest.Operator; 015import com.ibm.streamsx.rest.OutputPort; 016import com.ibm.streamsx.rest.StreamingAnalyticsService; 017 018/** 019 * Sample code to show how to access a Streaming Analytics Instance through the 020 * REST Api 021 * 022 * <p> 023 * The example connects to the streams instance and gets a list of resources. 024 * The objects printed out include all the fields known in the JSON object per 025 * the REST api however, the classes may not have accessors for all objects. 026 * </p> 027 * 028 * <p> 029 * The following arguments are required for the sample: 030 * <ul> 031 * <li>credentials (as an absolute file path, or JSON string)</li> 032 * <li>serviceName identifying the credentials to use in the file</li> 033 * </ul> 034 * </p> 035 * 036 */ 037public class StreamingAnalyticsConnectionSample { 038 039 public static void main(String[] args) { 040 String credentials = args[0]; 041 String serviceName = args[1]; 042 043 System.out.println(credentials); 044 System.out.println(serviceName); 045 046 try { 047 StreamingAnalyticsService sClient = StreamingAnalyticsService.of( 048 new JsonPrimitive(credentials), 049 serviceName); 050 051 Instance instance = sClient.getInstance(); 052 System.out.println("Instance:" + instance.toString()); 053 054 if (!instance.getStatus().equals("running")) { 055 System.out.println("Instance is not started, please start the instance to retrieve more information"); 056 System.exit(0); 057 } 058 /* Retrieve a list of jobs in the instance */ 059 List<Job> jobs = instance.getJobs(); 060 for (Job job : jobs) { 061 System.out.println("Job: " + job.toString()); 062 /* Retrieve a list of operators for the current job */ 063 List<Operator> operators = job.getOperators(); 064 for (Operator op : operators) { 065 System.out.println("Operator: " + op.toString()); 066 /* Retrieve a list of metrics for the current operator */ 067 List<Metric> metrics = op.getMetrics(); 068 for (Metric m : metrics) { 069 System.out.println("Metric: " + m.toString()); 070 } 071 /* 072 * Retrieve a list of output ports for the current operator 073 */ 074 List<OutputPort> outP = op.getOutputPorts(); 075 for (OutputPort oport : outP) { 076 System.out.println("Output Port: " + oport.toString()); 077 /* Retrieve the metrics for this output port */ 078 for (Metric om : oport.getMetrics()) { 079 System.out.println("Output Port Metric: " + om.toString()); 080 } 081 } 082 /* 083 * Retrieve a list of input ports for the current operator 084 */ 085 List<InputPort> inP = op.getInputPorts(); 086 for (InputPort ip : inP) { 087 System.out.println("Input Port: " + ip.toString()); 088 /* Retrieve the metrics for this input port */ 089 for (Metric im : ip.getMetrics()) { 090 System.out.println("Input Port Metric: " + im.toString()); 091 } 092 } 093 } 094 } 095 096 } catch (Exception e) { 097 e.printStackTrace(); 098 } 099 } 100}