03-28-2017 05:49 AM - edited 03-01-2019 06:46 AM
Task Name | Get SR ID details |
Description | |
Prerequisites |
|
Category | Workflow |
Components | vSphere 5.x |
User Inputs |
Instructions for Regular Workflow Use:
The workflow:
The Workflow run:
Picture when the SR ID in question is failed (Over all workflow runs in 19 sec):
The API call from the RESTAPI tab:
Option #1 to get the SR ID details:
//app/api/rest?formatType=json&opName=userAPIGetServiceRequestDetails&opData={param0:1000}
var srid = ctxt.getInput("sr_id");
logger.addInfo("---1---");
var x = ctxt.getAPI().userAPIGetServiceRequestDetails(srid).getStatus();
logger.addInfo("Status: " + x);
logger.addInfo("---2---");
ctxt.setTaskStatusMessage("SR ID " + srid + " is " + x);
This code runs in about 1 sec:
The code that was previous in used in many posting on this site runs 10 seconds even when a SR ID is complete:
Typical old code segment:
for (var i=0; i<childSrIdArray.length; i++)
{
var childSrId = childSrIdArray[i];
var status = ctxt.waitForCompletion(childSrId, 1800000);
if (status == 0)
{
logger.addInfo("Provisioned SR ID ="+ childSrId+ " successfully.");
} else {
logger.addError("SR ID ="+ childSrId+ " failed");
}
}
Input / Output for the last two tasks:
Code for this task:
importPackage(com.cloupia.model.cIM);
importPackage(java.util);
importPackage(java.lang);
importPackage(java.io);
importPackage(com.cloupia.lib.util);
importPackage(com.cloupia.model.cIM);
importPackage(com.cloupia.service.cIM.inframgr);
importPackage(org.apache.commons.httpclient);
importPackage(org.apache.commons.httpclient.cookie);
importPackage(org.apache.commons.httpclient.methods);
importPackage(org.apache.commons.httpclient.auth);
importPackage(com.cloupia.model.cEvent.notify);
importPackage(com.cloupia.lib.util.mail);
importPackage(com.cloupia.fw.objstore);
importPackage(com.cloupia.lib.util.managedreports);
//
// GENERIC HTTP Function
//
function GenericHTTPFunction(P1, P2){
var ucsdIP = input.UCSDip;
var ucsdUser = input.UCSDuser;
var ucsdPassword = input.UCSDpassword;
var ucsdPort = input.UCSDport;
var Https = input.UCSDhttps;
var key = input.UCSDkey;
//var apiUri = "/cloupia/api-v2/vdc";
//var apiUri = "/cloupia/api-v2/hyperVDeploymentPolicy";
var apiUri = P1;
var xmlBody = P2;
//xmlBody = "1";
var url = apiUri + "/" + xmlBody;
logger.addInfo(" URL : " + url);
var httpClient = new HttpClient();
//httpClient.getHostConfiguration().setHost(ucsdIP, input.UCSDport, input.https);
httpClient.getHostConfiguration().setHost(ucsdIP, ucsdPort, Https);
httpClient.getParams().setCookiePolicy("default");
httpClient.getParams().setAuthenticationPreemptive(true);
var defaultcreds = new UsernamePasswordCredentials(ucsdUser, ucsdPassword);
httpClient.getState().setCredentials(new AuthScope(ucsdIP, -1, null), defaultcreds);
var httpMethod = new PostMethod(apiUri);
//var httpMethod = new GetMethod (apiUri);
//var httpMethod = new GetMethod (url);
httpMethod.setRequestEntity(new StringRequestEntity(xmlBody));
httpMethod.addRequestHeader("Content-Type", "application/xml");
httpMethod.addRequestHeader("X-Cloupia-Request-Key", key);
httpClient.executeMethod(httpMethod);
var statuscode = httpMethod.getStatusCode();
if (statuscode != 201 && statuscode != 200)
{
logger.addError("Request failed. HTTP response code: "+statuscode);
logger.addError("Response = "+httpMethod.getResponseBodyAsString());
httpMethod.releaseConnection();
// Set this task as failed.
ctxt.setFailed("Request failed.");
} else {
logger.addInfo("Request was Succcessful.");
logger.addInfo("Response = "+httpMethod.getResponseBodyAsString());
var x2 = httpMethod.getResponseBodyAsString();
// All done. Release HTTP connection anyway.
httpMethod.releaseConnection();
return x2;
}
}
//
// generic http call end
//
output.APIResult = GenericHTTPFunction(input.APIuri, input.APIuriItem);
Code for this task:
loadLibrary("JSON-JS-Module/JSON-JS-ModuleLibrary");
var i1 = input.input1;
//var opName = "userAPIGetVMSummary";
function showObject(obj) {
var result = "";
for (var p in obj) {
if( obj.hasOwnProperty(p) ) {
logger.addInfo("Objact name: " + p + " Object value: " + obj[p] );
}
}
return result;
}
logger.addInfo("The input: " + i1);
var resultObj = JSON2.parse(i1);
//
// The data that is being parsed in this example looks like this:
//{ 'serviceResult':{'rows':[{'Overview_VM_ID':1...
//
// If something different is parsed then the following items need
// to be changed in the code below
//
// serviceResult
// rows
// ****
//
// ****
if(resultObj.serviceResult == null){
logger.addError(responseObj.serviceError);
ctxt.setFailed();
ctxt.exit();
}
var jsonInString = JSON2.stringify(resultObj);
logger.addInfo(jsonInString);
logger.addInfo("Show all object(s)");
// ****
//showObject(resultObj.serviceResult.rows[0]);
showObject(resultObj.serviceResult);
// other ways of getting information
// ****
//Mar 27, 2017 21:36:15 UTC {'serviceResult':{'requestId':524,'requestType':7,'initiatingUser':'admin','groupName':null,'requestTime':1490634256008,'comments':'','provisionQuantity':1,'provisionCatalog':null,'provisionVDCName':null,'provisionDurationHours':0,'status':'Complete','isChild':false,'parentRequestId':0,'isArchived':false,'workflowName':'HTTPS_get_VM_Details_userAPIGetVMSummary','containerName':'','tenantIdentity':'','rollbackStatus':''},'serviceError':null,'serviceName':'InfraMgr','opName':'userAPIGetServiceRequestDetails'}
logger.addInfo(resultObj.serviceResult.initiatingUser);
logger.addInfo(resultObj.serviceResult.workflowName);
logger.addInfo(resultObj.serviceResult.status);
logger.addInfo(resultObj.serviceResult.requestId);
//logger.addInfo(resultObj.serviceResult.requestId.Overview_Hostname);
//logger.addInfo(resultObj.serviceResult.requestId.Overview_Image_ID);
//
// Sample output
//
output.JSONout = resultObj.status
//
//@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
//
importPackage(java.util);
importPackage(java.lang);
importPackage(com.cloupia.lib.util);
importPackage(com.cloupia.service.cIM.inframgr);
importPackage(com.google.gson);
var msg = i1;
var gson = new Gson();
var json = gson.toJson(msg);
logger.addInfo('orig msg = '+i1);
logger.addInfo("typeof i1: " + typeof i1 );
var parser = new JsonParser();
var jsonTree = parser.parse(msg).getAsJsonObject();
var serviceResult = jsonTree.get("serviceResult").getAsJsonObject();
logger.addInfo("serviceResult - JSON Object: " + serviceResult.isJsonObject());
logger.addInfo("requestId: " + serviceResult.get("requestId"));
logger.addInfo("initiatingUser: " + serviceResult.get("initiatingUser"));
logger.addInfo("workflowName: " + serviceResult.get("workflowName"));
logger.addInfo("status: " + serviceResult.get("status"));
The Log:
Service Request ID: 544
-------------------------------------Workflow Inputs:
--Admin Inputs--
--User Inputs--
sr_id : 524
Mar 28, 2017 12:29:41 UTC Request submitted
Mar 28, 2017 12:29:42 UTC Executing workflow item number 1
Mar 28, 2017 12:29:42 UTC Completed workflow item number 1, with status Completed
Mar 28, 2017 12:29:45 UTC Executing workflow item number 2
Mar 28, 2017 12:29:45 UTC Trigger context executeWorkFlowStep called
Mar 28, 2017 12:29:45 UTC Executing custom action HTTPS_get_SR_Details (ExecuteCloupiaScript)
Mar 28, 2017 12:29:45 UTC Executing custom action HTTPS_get_SR_Details (ExecuteCloupiaScript)
Mar 28, 2017 12:29:45 UTC Executing cloupia script: Lable_userAPIGetServiceRequestDetails
Mar 28, 2017 12:29:45 UTC ---1---
Mar 28, 2017 12:29:45 UTC Status: Complete
Mar 28, 2017 12:29:45 UTC ---2---
Mar 28, 2017 12:29:45 UTC Completed cloupia script Lable_userAPIGetServiceRequestDetails
Mar 28, 2017 12:29:45 UTC Task #2 (HTTPS_get_SR_Details (ExecuteCloupiaScript)) completed successfully in 0 seconds
Mar 28, 2017 12:29:45 UTC Input/Output values for Task #2 (HTTPS_get_SR_Details (ExecuteCloupiaScript)):
Mar 28, 2017 12:29:45 UTC [Local Input: Label = Lable_userAPIGetServiceRequestDetails]
Mar 28, 2017 12:29:45 UTC [Local Input: Script = ///app/api/rest?formatType=json&opName=userAPIGetServiceRequestDetails&opData={param0:1000} var srid = ctxt.getInput('sr_id'); logger.addInfo('---1---'); var x = ctxt.getAPI().userAPIGetServiceRequestDetails(srid).getStatus(); logger.addInfo('Status: ' + x); logger.addInfo('---2---'); ctxt.setTaskStatusMessage('SR ID ' + srid + ' is ' + x); ]
Mar 28, 2017 12:29:45 UTC [Local Input: Undo Script = ]
Mar 28, 2017 12:29:45 UTC Completed workflow item number 2, with status Completed
Mar 28, 2017 12:29:48 UTC Executing workflow item number 3
Mar 28, 2017 12:29:48 UTC Trigger context executeWorkFlowStep called
Mar 28, 2017 12:29:48 UTC Executing custom action HTTPS_get_SR_Details (custom_Post_HTTPS_API_v1)
Mar 28, 2017 12:29:48 UTC Executing custom action HTTPS_get_SR_Details (custom_Post_HTTPS_API_v1)
Mar 28, 2017 12:29:48 UTC Executing custom script for Post_HTTPS_API_v1
Mar 28, 2017 12:29:48 UTC URL : /app/api/rest?formatType=json&opName=userAPIGetServiceRequestDetails&opData={param0:524}/
Mar 28, 2017 12:29:48 UTC Request was Succcessful.
Mar 28, 2017 12:29:48 UTC Response = { 'serviceResult':{'requestId':524,'requestType':7,'initiatingUser':'admin','groupName':null,'requestTime':1490634256008,'comments':'','provisionQuantity':1,'provisionCatalog':null,'provisionVDCName':null,'provisionDurationHours':0,'status':'Complete','isChild':false,'parentRequestId':0,'isArchived':false,'workflowName':'HTTPS_get_VM_Details_userAPIGetVMSummary','containerName':'','tenantIdentity':'','rollbackStatus':''}, 'serviceError':null, 'serviceName':'InfraMgr', 'opName':'userAPIGetServiceRequestDetails' }
Mar 28, 2017 12:29:48 UTC Processing output: APIResult
Mar 28, 2017 12:29:49 UTC Task #3 (HTTPS_get_SR_Details (custom_Post_HTTPS_API_v1)) completed successfully in 0 seconds
Mar 28, 2017 12:29:49 UTC Input/Output values for Task #3 (HTTPS_get_SR_Details (custom_Post_HTTPS_API_v1)):
Mar 28, 2017 12:29:49 UTC [Local Input: UCSDip = 172.17.32.80]
Mar 28, 2017 12:29:49 UTC [Local Input: UCSDport = 8443]
Mar 28, 2017 12:29:49 UTC [Local Input: UCSDkey = D644E837A3984730B33E5641AB1436C2]
Mar 28, 2017 12:29:49 UTC [Template Input:APIuri = /app/api/rest?formatType=json&opName=userAPIGetServiceRequestDetails&opData={param0:${sr_id}}]
Mar 28, 2017 12:29:49 UTC [Resolved Template Input: APIuri = /app/api/rest?formatType=json&opName=userAPIGetServiceRequestDetails&opData={param0:524}]
Mar 28, 2017 12:29:49 UTC [Local Input: APIuri = /app/api/rest?formatType=json&opName=userAPIGetServiceRequestDetails&opData={param0:524}]
Mar 28, 2017 12:29:49 UTC [Local Input: UCSDuser = admin]
Mar 28, 2017 12:29:49 UTC [Local Input: UCSDpassword = **masked-value**]
Mar 28, 2017 12:29:49 UTC [Local Input: UCSDhttps = https]
Mar 28, 2017 12:29:49 UTC [Local Input: APIuriItem = ]
Mar 28, 2017 12:29:49 UTC [Output: APIResult = { 'serviceResult':{'requestId':524,'requestType':7,'initiatingUser':'admin','groupName':null,'requestTime':1490634256008,'comments':'','provisionQuantity':1,'provisionCatalog':null,'provisionVDCName':null,'provisionDurationHours':0,'status':'Complete','isChild':false,'parentRequestId':0,'isArchived':false,'workflowName':'HTTPS_get_VM_Details_userAPIGetVMSummary','containerName':'','tenantIdentity':'','rollbackStatus':''}, 'serviceError':null, 'serviceName':'InfraMgr', 'opName':'userAPIGetServiceRequestDetails' }]
Mar 28, 2017 12:29:49 UTC Completed workflow item number 3, with status Completed
Mar 28, 2017 12:29:54 UTC Executing workflow item number 4
Mar 28, 2017 12:29:54 UTC Trigger context executeWorkFlowStep called
Mar 28, 2017 12:29:54 UTC Executing custom action HTTPS_get_SR_Details (custom_JSON_Parse_v1_serviceResult_requestId)
Mar 28, 2017 12:29:54 UTC Executing custom action HTTPS_get_SR_Details (custom_JSON_Parse_v1_serviceResult_requestId)
Mar 28, 2017 12:29:54 UTC Executing custom script for JSON_Parse_v1_serviceResult_requestId
Mar 28, 2017 12:29:54 UTC The input: { 'serviceResult':{'requestId':524,'requestType':7,'initiatingUser':'admin','groupName':null,'requestTime':1490634256008,'comments':'','provisionQuantity':1,'provisionCatalog':null,'provisionVDCName':null,'provisionDurationHours':0,'status':'Complete','isChild':false,'parentRequestId':0,'isArchived':false,'workflowName':'HTTPS_get_VM_Details_userAPIGetVMSummary','containerName':'','tenantIdentity':'','rollbackStatus':''}, 'serviceError':null, 'serviceName':'InfraMgr', 'opName':'userAPIGetServiceRequestDetails' }
Mar 28, 2017 12:29:54 UTC {'serviceResult':{'requestId':524,'requestType':7,'initiatingUser':'admin','groupName':null,'requestTime':1490634256008,'comments':'','provisionQuantity':1,'provisionCatalog':null,'provisionVDCName':null,'provisionDurationHours':0,'status':'Complete','isChild':false,'parentRequestId':0,'isArchived':false,'workflowName':'HTTPS_get_VM_Details_userAPIGetVMSummary','containerName':'','tenantIdentity':'','rollbackStatus':''},'serviceError':null,'serviceName':'InfraMgr','opName':'userAPIGetServiceRequestDetails'}
Mar 28, 2017 12:29:54 UTC Show all object(s)
Mar 28, 2017 12:29:54 UTC Objact name: requestId Object value: 524
Mar 28, 2017 12:29:54 UTC Objact name: requestType Object value: 7
Mar 28, 2017 12:29:54 UTC Objact name: initiatingUser Object value: admin
Mar 28, 2017 12:29:54 UTC Objact name: groupName Object value: null
Mar 28, 2017 12:29:54 UTC Objact name: requestTime Object value: 1490634256008
Mar 28, 2017 12:29:54 UTC Objact name: comments Object value:
Mar 28, 2017 12:29:54 UTC Objact name: provisionQuantity Object value: 1
Mar 28, 2017 12:29:54 UTC Objact name: provisionCatalog Object value: null
Mar 28, 2017 12:29:54 UTC Objact name: provisionVDCName Object value: null
Mar 28, 2017 12:29:54 UTC Objact name: provisionDurationHours Object value: 0
Mar 28, 2017 12:29:54 UTC Objact name: status Object value: Complete
Mar 28, 2017 12:29:54 UTC Objact name: isChild Object value: false
Mar 28, 2017 12:29:54 UTC Objact name: parentRequestId Object value: 0
Mar 28, 2017 12:29:54 UTC Objact name: isArchived Object value: false
Mar 28, 2017 12:29:54 UTC Objact name: workflowName Object value: HTTPS_get_VM_Details_userAPIGetVMSummary
Mar 28, 2017 12:29:54 UTC Objact name: containerName Object value:
Mar 28, 2017 12:29:54 UTC Objact name: tenantIdentity Object value:
Mar 28, 2017 12:29:54 UTC Objact name: rollbackStatus Object value:
Mar 28, 2017 12:29:54 UTC admin
Mar 28, 2017 12:29:54 UTC HTTPS_get_VM_Details_userAPIGetVMSummary
Mar 28, 2017 12:29:54 UTC Complete
Mar 28, 2017 12:29:54 UTC 524
Mar 28, 2017 12:29:54 UTC orig msg = { 'serviceResult':{'requestId':524,'requestType':7,'initiatingUser':'admin','groupName':null,'requestTime':1490634256008,'comments':'','provisionQuantity':1,'provisionCatalog':null,'provisionVDCName':null,'provisionDurationHours':0,'status':'Complete','isChild':false,'parentRequestId':0,'isArchived':false,'workflowName':'HTTPS_get_VM_Details_userAPIGetVMSummary','containerName':'','tenantIdentity':'','rollbackStatus':''}, 'serviceError':null, 'serviceName':'InfraMgr', 'opName':'userAPIGetServiceRequestDetails' }
Mar 28, 2017 12:29:54 UTC typeof i1: string
Mar 28, 2017 12:29:54 UTC serviceResult - JSON Object: true
Mar 28, 2017 12:29:54 UTC requestId: 524
Mar 28, 2017 12:29:54 UTC initiatingUser: 'admin'
Mar 28, 2017 12:29:54 UTC workflowName: 'HTTPS_get_VM_Details_userAPIGetVMSummary'
Mar 28, 2017 12:29:54 UTC status: 'Complete'
Mar 28, 2017 12:29:54 UTC Processing output: JSONout
Mar 28, 2017 12:29:55 UTC Task #4 (HTTPS_get_SR_Details (custom_JSON_Parse_v1_serviceResult_requestId)) completed successfully in 0 seconds
Mar 28, 2017 12:29:55 UTC Input/Output values for Task #4 (HTTPS_get_SR_Details (custom_JSON_Parse_v1_serviceResult_requestId)):
Mar 28, 2017 12:29:55 UTC [Mapped Input: input1 = { 'serviceResult':{'requestId':524,'requestType':7,'initiatingUser':'admin','groupName':null,'requestTime':1490634256008,'comments':'','provisionQuantity':1,'provisionCatalog':null,'provisionVDCName':null,'provisionDurationHours':0,'status':'Complete','isChild':false,'parentRequestId':0,'isArchived':false,'workflowName':'HTTPS_get_VM_Details_userAPIGetVMSummary','containerName':'','tenantIdentity':'','rollbackStatus':''}, 'serviceError':null, 'serviceName':'InfraMgr', 'opName':'userAPIGetServiceRequestDetails' }]
Mar 28, 2017 12:29:55 UTC [Output: JSONout = undefined]
Mar 28, 2017 12:29:55 UTC Completed workflow item number 4, with status Completed
Mar 28, 2017 12:30:00 UTC Executing workflow item number 5
Mar 28, 2017 12:30:00 UTC Completed workflow item number 5, with status Completed
Find answers to your questions by entering keywords or phrases in the Search bar above. New here? Use these resources to familiarize yourself with the community: