Task Name | XML Parsing exampel |
Description | - Change the user of a running workflow
|
Prerequisites | - Tested on 5.3.1.1
|
Category | Workflow |
Components | vSphere 5.x |
User Inputs | - userid to change to
|
Output | |
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.
Inspired by
Russ Whitear
Phil Robins
Whitney Chiu
The workflow:
The Cloupia Script:
importPackage(org.w3c.dom);
importPackage(javax.xml.parsers);
importPackage(java.io);
importPackage(java.lang);
importPackage(java.util);
var factory = DocumentBuilderFactory.newInstance();
var builder = factory.newDocumentBuilder();
var xmlStringBuilder = new StringBuilder();
xmlStringBuilder.append("<?xml version='1.0'?><Cars><Car Type='System.String'>Opel</Car><Car Type='System.String'>Mercedes</Car><Car Type='System.String'>Porsche</Car></Cars>");
var input = new ByteArrayInputStream( xmlStringBuilder.toString().getBytes('UTF-8') );
var doc = builder.parse(input);
doc.getDocumentElement().normalize();
var nList = doc.getElementsByTagName("Car");
logger.addInfo("Root element :" + doc.getDocumentElement().getNodeName());
logger.addInfo("nList length: " +nList.getLength() );
for (var i = 0; i < nList.getLength(); i++) {
var nNode = nList.item(i);
logger.addInfo("\nCurrent Element : " + nNode.getNodeName());
// logger.addInfo("\nNodeType : " + nNode.getNodeType());
//logger.addInfo("typeof nNode: "+typeof nNode);
var value = nNode.getTextContent();
logger.addInfo("Object: " + value );
}
The workflow run:
Service Request ID: 5512
Aug 06, 2015 20:59:07 UTC Request submitted
Aug 06, 2015 20:59:13 UTC Executing workflow item number 1
Aug 06, 2015 20:59:13 UTC Completed workflow item number 1, with status Completed
Aug 06, 2015 20:59:19 UTC Executing workflow item number 2
Aug 06, 2015 20:59:19 UTC Trigger context executeWorkFlowStep called
Aug 06, 2015 20:59:19 UTC Executing custom action XML_Parsing (ExecuteCloupiaScript)
Aug 06, 2015 20:59:19 UTC Executing custom action XML_Parsing (ExecuteCloupiaScript)
Aug 06, 2015 20:59:22 UTC Executing cloupia script: XML Paring
Aug 06, 2015 20:59:22 UTC Root element :Cars
Aug 06, 2015 20:59:22 UTC nList length: 3
Aug 06, 2015 20:59:22 UTC Current Element : Car
Aug 06, 2015 20:59:22 UTC Object: Opel
Aug 06, 2015 20:59:22 UTC Current Element : Car
Aug 06, 2015 20:59:22 UTC Object: Mercedes
Aug 06, 2015 20:59:22 UTC Current Element : Car
Aug 06, 2015 20:59:22 UTC Object: Porsche
Aug 06, 2015 20:59:22 UTC Completed cloupia script XML Paring
Aug 06, 2015 20:59:22 UTC Task #1 (XML_Parsing (ExecuteCloupiaScript)) completed successfully in 2 seconds
Aug 06, 2015 20:59:22 UTC Input/Output values for Task #1 (XML_Parsing (ExecuteCloupiaScript)):
Aug 06, 2015 20:59:22 UTC [Local Input: Label = XML Paring]
Aug 06, 2015 20:59:22 UTC [Local Input: Script = importPackage(org.w3c.dom); importPackage(javax.xml.parsers); importPackage(java.io); importPackage(java.lang); importPackage(java.util); var factory = DocumentBuilderFactory.newInstance(); var builder = factory.newDocumentBuilder(); var xmlStringBuilder = new StringBuilder(); xmlStringBuilder.append('<?xml version='1.0'?><Cars><Car Type='System.String'>Opel</Car><Car Type='System.String'>Mercedes</Car><Car Type='System.String'>Porsche</Car></Cars>'); var input = new ByteArrayInputStream( xmlStringBuilder.toString().getBytes('UTF-8') ); var doc = builder.parse(input); doc.getDocumentElement().normalize(); var nList = doc.getElementsByTagName('Car'); logger.addInfo('Root element :' + doc.getDocumentElement().getNodeName()); logger.addInfo('nList length: ' +nList.getLength() ); for (var i = 0; i < nList.getLength(); i++) { var nNode = nList.item(i); logger.addInfo('\nCurrent Element : ' + nNode.getNodeName()); // logger.addInfo('\nNodeType : ' +
Aug 06, 2015 20:59:22 UTC [Local Input: Undo Script = ]
Aug 06, 2015 20:59:22 UTC Completed workflow item number 2, with status Completed
Aug 06, 2015 20:59:25 UTC Executing workflow item number 3
Aug 06, 2015 20:59:25 UTC Completed workflow item number 3, with status Completed