
- Subscribe to RSS Feed
- Mark as New
- Mark as Read
- Bookmark
- Subscribe
- Printer Friendly Page
- Report Inappropriate Content
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:
- Download the attached .ZIP file below to your computer. *Remember the location of the saved file on your computer.
- Unzip the file on your computer. Should end up with a .WFD file.
- Log in to UCS Director as a user that has "system-admin" privileges.
- Navigate to "Policies-->Orchestration" and click on "Import".
- Click "Browse" and navigate to the location on your computer where the .WFD file resides. Choose the .WFD file and click "Open".
- Click "Upload" and then "OK" once the file upload is completed. Then click "Next".
- Click the "Select" button next to "Import Workflows". Click the "Check All" button to check all checkboxes and then the "Select" button.
- Click "Submit".
- A new folder should appear in "Policies-->Orchestration" that contains the imported workflow. You will now need to update the included tasks with information about the specific environment.
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