02-17-2015 04:20 AM - edited 03-01-2019 06:33 AM
Task Name | VM Deployment with USER IP input |
Description | |
Prerequisites |
|
Category | Workflow |
Components | vSphere 5.x |
User Inputs |
Instructions for Regular Workflow Use:
The Request:
===========
1) User can enter IP, Mask and Gate way for VM
2) User can enter IP, Mask and Gate way for Backup Network for VM (these are optional fields)
3) Be able to name the VM (Hostname)
4) Be able to supply a comment for the VM
5) User does not select the vCenter network, but the system derives the vCenter network from the Gateway input
6) User does not select the vCenter backup network, but the system derives the vCenter backup network from the IP input
7) User selects Mask from custom LOV (list of values) field
8) User select backup Mask from custom LOV (list of values) field
9) User can select VM Memory from custom LOV (list of values) field
10) User can select VM CPU from custom LOV (list of values) field
11) User can select VM disk size from custom LOV (list of values) field
12) User can select Catalog to deploy from
13) User can select VDC to deploy into
14) Backup network requirement is selected from custom LOV (list of values) field
15) CSV File name and path is selectable
16) User can also place CSV file on UCSD and everything can be read in via CSV file and deploy VM(s) on mass scale
17) Post provisioning workflow input (currently coded for 2 inputs)
New:
The latest addition of the workflow works with the VMWARE distributed switch (Thank you Jordan Glamann):
The Pre-requisites:
The vCenter the Networks are named in the following manner:
Production 192.168.40.0
Production 192.168.41.0
Production 192.168.42.0
Production 192.168.43.0
Production 192.168.44.0
Backup 192.168.70.0
Production 192.168.45.64
Production 192.168.45.128/28
The gateway is at network + 1 (i.e. the 192.168.40.0 GW = 192.168.40.1, 192.168.45.64 GW = 192.168.45.65)
(the calculation in the code is done GW - 1 = Search Network.
Display in UCSD:
The Workflow needs to be set for the environment:
The current User Input (fields can be turned on and off)
All the workflow inputs (if admin value is not set user will be asked that question):
The fields in the red circles need to be adjusted for the new UCSD environment!
Import of file is in need of improvement (I am aware!)
A trick to not see the "select..." in the LOV fields:
1) Location of key for the API calls:
Select Admin
Copy the key:
UCSD Policy setup:
VDC
Same as the VDC template:
The VDC/VDC template details:
The most important is the network Policy setup:
This policy gets overlaid during execution with new IP information. Basically a IP pool of one.
The Service Delivery (system) policy:
The catalog is set up with post provisioning and 2 user inputs:
The resulting e-mail from the workflow and the passed along user inout (right now in admin over ride or in CSV file)
The CSV file setup:
-rw-r--r-- 1 root root 493 Feb 16 17:56 vmDetails2.txt
[root@localhost tmp]# cat vmDetails2.txt
vmName7,Comment7,2,2048,20,VDC_CULPEPER,LinuxApp,192.168.45.74,255.255.255.0,192.168.45.65,0,0.0.0.0,255.255.255.0,127.0.0.1,orf,Workflowinout1,workflowinput2
vmName5,Comment5,2,2048,20,VDC_CULPEPER,LinuxApp,192.168.45.73,255.255.255.0,192.168.45.65,1,192.168.70.104,255.255.255.0,127.0.0.1,orf,Workflowinout1,workflowinput2
vmName6,Comment6,2,2048,20,VDC_CULPEPER,LinuxApp,192.168.45.132,255.255.255.0,192.168.45.129,1,192.168.70.105,255.255.255.0,127.0.0.1,orf,Workflowinout1,workflowinput2
Manual Execution:
The CSV file Execution:
[root@localhost tmp]# cat vmDetails2.txt
vmName8,Comment8,2,2048,20,VDC_CULPEPER,LinuxApp,192.168.45.75,255.255.255.0,192.168.45.65,0,0.0.0.0,255.255.255.0,127.0.0.1,orf,Workflowinout1,workflowinput2
vmName9,Comment9,2,2048,20,VDC_CULPEPER,LinuxApp,192.168.45.76,255.255.255.0,192.168.45.65,1,192.168.70.105,255.255.255.0,127.0.0.1,orf,Workflowinout1,workflowinput2
vmName0,Comment0,2,2048,20,VDC_CULPEPER,LinuxApp,192.168.45.133,255.255.255.0,192.168.45.129,1,192.168.70.106,255.255.255.0,127.0.0.1,orf,Workflowinout1,workflowinput2
[root@localhost tmp]#
There should be 2 version of the workflow for user consumption.
One for manual where the CSV file flag is set to 0.
One for CSV file oration where all fields are dummied out and there is no user interaction.
For this demonstration I just placed a few dummy entries!
Change the Flag:
Enter a few dummy numbers:
There are 4 SR numbers in this example
1 - the Uber workflow
2 - the children (3)
3 - One died du to IP address was already in use.
The user Catalog offering:
The user execution:
(notice the change user - due to network settings a more privileged user is required to run this section of the workflow)
The Code:
Several things to point out in the code.
1) it can read from file
2) it can take user input
3) it uses API calls to UCSD
4) it uses reports to derive items
obtaining the the vCenter Cloud name from the VDC
obtaining the VDC ID from a VDC name (CSV file)
obtaining the VDC Name from the VDC ID (User input)
obtaining the vCenter Network names from a report
5) generic function to call API calls
6) XML parsing
7) taking IP/GW address apart (split) and gluing them back together
8) building names like this: Dallas@vSwitch3@Virtual Machine Portgroup@Production 192.168.45.128/28
9) Looping through report out put and matching (index)
10) Counters
11) Some error checking (yes could be more, I know) (AI)
12) Creating a new VDC (temp) on the fly from the VDC template
13) dealing with the resulting policies (delete / cleanup)
VDC_CULPEPER4264_Network Policy
VDC_CULPEPER4264_Computing Policy
VDC_CULPEPER4264_Storage Policy
VDC_CULPEPER4264_System Policy
14) adding a backup network on the fly to the network policy and deleting it after the deployment
15) the API calls are derived from the REST API Browser (Enable Developer Menu)
16) the report calls are derived from the Meta Report button (Enable Developer Menu)
Also what was helpful was the ability to investigate a few internal functions:
Run Java Script on the fly
Policies -> Orchestration -> Custom Workflow Tasks -> Launch Interpreter
Get Detailed VDC information
===========================================================
UCSD 5.3
========
importPackage(com.cloupia.model.cIM);
importPackage(com.cloupia.service.cIM.inframgr);
var vdc = VDCUtil.getVDC(142);
var vvm = InfraPersistenceUtil.getVMWareVMSummary(1536);
var cat = VDCUtil.getVDCCatalogItem(87);
printObj(vdc);
printObj(vvm);
printObj(cat);
5.4 Fix of printObj (non interpreter)
=============================
importPackage(com.cloupia.model.cIM);
importPackage(com.cloupia.service.cIM.inframgr);
importClass(org.apache.commons.lang3.builder.ReflectionToStringBuilder);
var vvm = InfraPersistenceUtil.getVMWareVMSummary(2);
var allProperties = ReflectionToStringBuilder.toString(vvm);
//logger.addInfo(allProperties); //print all the properties in single line but this will truncate the content based on the String size
var prop = allProperties.split(",");//split the properties using "," and print
for (var i = 0; i < prop.length; i++) {
logger.addInfo(prop[i]);
}
Option #2
The method logger.addInfo() will accept 1024 characters string length only. If the string length is more than 1024 characters , It will truncate the characters at the end. So I print the 1024 characters in a line and remaining characters in the next line.
Sample script to print the properties in a single line
importPackage(com.cloupia.model.cIM);
importPackage(com.cloupia.service.cIM.inframgr);
importPackage(java.util);
importClass(org.apache.commons.lang3.builder.ReflectionToStringBuilder);
/**
* Split text into ‘n’ number of characters.
*
* @Param text the text to be split.
* @Param size the split size.
* @return an array of the split text.
*/
function splitToNChar(text, size) {
var parts = new ArrayList();
var length = text.length();
for (var i = 0; i < length; i += size)
{
parts.add(text.substring(i, Math.min(length, i + size)));
}
// Nashorn way!
var Array = Java.type("java.lang.reflect.Array");
var JString = Java.type("java.lang.String");
// note ".class" property access to get java.lang.Class object
var strArray = Array.newInstance(JString.class, 0);
return parts.toArray(strArray);
}
var vvm = InfraPersistenceUtil.getVMWareVMSummary(2);
var allProperties = ReflectionToStringBuilder.toString(vvm);
var prop = splitToNChar(allProperties,1024);
for (var i = 0; i < prop.length; i++) {
logger.addInfo(prop[i]);
}
The code in the attached workflow:
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);
//
// User Input Parameterts
//
var VDC = "vdc";
var vdc = ctxt.getInput(VDC);
var ID = "ID";
var id = ctxt.getInput(ID);
var PASSWORD = "Password";
var password = ctxt.getInput(PASSWORD);
var KEY = "Key";
var key = ctxt.getInput(KEY);
var UCSDIP = "UCSD_IP";
var ucsdip = ctxt.getInput(UCSDIP);
var CAT = "Catalog";
var cat = ctxt.getInput(CAT);
var VMIP = "VM_IP";
var vmip = ctxt.getInput(VMIP);
var VMMASK = "VM_Mask";
var vmmask = ctxt.getInput(VMMASK);
var VMGW = "VM_GW";
var vmgw = ctxt.getInput(VMGW);
var VMBIP = "VMB_IP";
var vmbip = ctxt.getInput(VMBIP);
var VMBMASK = "VMB_Mask";
var vmbmask = ctxt.getInput(VMBMASK);
var VMBGW = "VMB_GW";
var vmbgw = ctxt.getInput(VMBGW);
var VMOWNER = "VM_Owner";
var vmowner = ctxt.getInput(VMOWNER);
var VMNAME = "VM_Name";
var vmname = ctxt.getInput(VMNAME);
var VMCOMMENT = "VM_Comment";
var vmcomment = ctxt.getInput(VMCOMMENT);
var VMMEMORY = "VM_Memory";
var vmmemory = ctxt.getInput(VMMEMORY);
var VMCPU = "VM_CPU";
var vmcpu = ctxt.getInput(VMCPU);
var WFI1 = "WFI1";
var wfi1 = ctxt.getInput(WFI1);
var WFI2 = "WFI2";
var wfi2 = ctxt.getInput(WFI2);
var CSVFILE = "CSV_FILE";
var csvfile = ctxt.getInput(CSVFILE);
var CloudSelector1 = [ ctxt.getInput("CloudSelector") ];
var quantity = Integer.valueOf( ctxt.getInput("PROVISION_QTY"));
var backupnetwork = Integer.valueOf( ctxt.getInput("BackupNetwork"));
var backupnetworkadaptername = [ ctxt.getInput("BackupNetworkAdapterName") ];
var NetWorkAdapterType1 = [ ctxt.getInput("NetWorkAdapterType") ];
var VDCTemplateNumber = [ ctxt.getInput("VDC_Template") ];
var disksize1 = [ ctxt.getInput("DiskSize1") ];
var csv_file_flag = [ ctxt.getInput("CSV_FILE_FLAG") ];
var delaySecondsBetweenInvocation = 30;
function CatName2ID(P1) {
var networkPolicyReport = ctxt.getAPI().userAPIFilterTabularReport("10","null","CATALOG-T40","Catalog_Name",P1);
logger.addInfo("vdc networkPolicyReport = " + networkPolicyReport);
var policyList = networkPolicyReport.rows;
logger.addInfo("policyList = " + policyList);
if(policyList != null && policyList.size() > 0){
var map = networkPolicyReport.getRow(0);
logger.addInfo("Catalog_ID = " + map.get("Catalog_ID"));
}
return map.get("Catalog_ID");
}
function sleep()
{
var milliseconds = delaySecondsBetweenInvocation * 1000;
Thread.sleep(milliseconds);
}
//
// find the VDC id from the VDC name from this report
//
function VDCName2VDCid(P1) {
var xyz = ctxt.getAPI().userAPIFilterTabularReport("10","null","VDC-T45","vDC_Name",P1);
logger.addInfo("vdc xyz = " + xyz);
var policyList = xyz.rows;
logger.addInfo("policyList = " + policyList);
if(policyList != null && policyList.size() > 0){
var map = xyz.getRow(0);
logger.addInfo("VDC_ID = " + map.get("vDC_ID"));
}
return map.get("vDC_ID");
}
//
// Standard Reporting functions to asertain information from a Report
//
function getReport(reportContext, reportName)
{
var report = null;
try
{
report = ctxt.getAPI().getConfigTableReport(reportContext, reportName);
} catch(e)
{
}
if (report == null)
{
return ctxt.getAPI().getTabularReport(reportName, reportContext);
} else
{
var source = report.getSourceReport();
return ctxt.getAPI().getTabularReport(source, reportContext);
}
}
//
// Standard Reporting functions to asertain information from a Report
//
function getReportView(reportContext, reportName)
{
var report = getReport(reportContext, reportName);
if (report == null)
{
logger.addError("No such report exists for the specified context "+reportName);
return null;
}
return new TableView(report);
}
//
// GENERIC HTTP Function
//
function GenericHTTPFunction(P1, P2){
var ucsdIP = ucsdip;
var ucsdUser = id;
var ucsdPassword = password;
//var apiUri = "/cloupia/api-v2/vdc";
var apiUri = P2;
//XML Body
//
// port group is drived from port group name by IP
//xmlBody = "<cuicOperationRequest><operationType>MODIFY_NETWORK_POLICY</operationType><payload><![CDATA[<ModifyVDCNetworkPolicy><!-- Accepts value from the list: vDC--><vdcId>"+vdc+"</vdcId><!-- Accepts value from the list: vmwareVmPortGroupIdentity--><portgroup>"+PortGroupAssembly+"</portgroup><isDHCP>false</isDHCP> <!-- Set this value only when isDHCP not equals to true --><!-- Accepts value from the list: IPPoolSourceType--><ipAddressSource>1</ipAddressSource> <!-- Set this value only when ipAddressSource not equals to 0 --><staticIpPool>"+vmip+"</staticIpPool> <!-- Set this value only when ipAddressSource not equals to 0 --><subnetMask>"+vmmask+"</subnetMask> <!-- Set this value only when ipAddressSource not equals to 0 --><gateway>"+vmgw+"</gateway> <!-- Set this value only when ipAddressSource not equals to 1 --><!-- Accepts value from the list: VMWareIPPoolPolicy--><staticIPPoolPolicy></staticIPPoolPolicy></ModifyVDCNetworkPolicy>]]></payload></cuicOperationRequest>";
xmlBody = P1;
var httpClient = new HttpClient();
httpClient.getHostConfiguration().setHost(ucsdIP, 80, "http");
httpClient.getParams().setCookiePolicy("default");
httpClient.getParams().setAuthenticationPreemptive(true);
var defaultcreds = new UsernamePasswordCredentials(ucsdUser, ucsdPassword);
httpClient.getState().setCredentials(new AuthScope(ucsdIP, -1, null), defaultcreds);
// Login to WFA.
var httpMethod = new PostMethod(apiUri);
httpMethod.setRequestEntity(new StringRequestEntity(xmlBody));
httpMethod.addRequestHeader("Content-Type", "application/xml");
//httpMethod.addRequestHeader("X-Cloupia-Request-Key", "5CF4C115F0034B189616B2B8EBA0F220");
httpMethod.addRequestHeader("X-Cloupia-Request-Key", key);
httpClient.executeMethod(httpMethod);
// Check that login is successful. If so, continue. Otherwise, fail task after logging
// the error code and response.
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
//
//
// Function to create new VDC from Temple for this execution of VM instance
//
function CloneVDCFromTemplate(){
var ucsdIP = ucsdip;
var ucsdUser = id;
var ucsdPassword = password;
var apiUri = "/cloupia/api-v2/vdc";
//XML Body
//
xmlBody ="<cuicOperationRequest><payload><![CDATA[<VDCConfig><vdcName>"+NewTempVDCName+"</vdcName><vdcDescription></vdcDescription><!-- Accepts value from the list: vDCProfile--><vdcProfileId>"+VDCTemplateNumber+"</vdcProfileId><firstApproverUsername></firstApproverUsername><secondApproverUsername></secondApproverUsername><systemPolicyName></systemPolicyName><networkPolicyName></networkPolicyName><storagePolicyName></storagePolicyName><computingPolicyName></computingPolicyName><groupID>"+groupId+"</groupID></VDCConfig>]]></payload></cuicOperationRequest>";
var httpClient = new HttpClient();
httpClient.getHostConfiguration().setHost(ucsdIP, 80, "http");
httpClient.getParams().setCookiePolicy("default");
httpClient.getParams().setAuthenticationPreemptive(true);
var defaultcreds = new UsernamePasswordCredentials(ucsdUser, ucsdPassword);
httpClient.getState().setCredentials(new AuthScope(ucsdIP, -1, null), defaultcreds);
// Login to WFA.
var httpMethod = new PostMethod(apiUri);
httpMethod.setRequestEntity(new StringRequestEntity(xmlBody));
httpMethod.addRequestHeader("Content-Type", "application/xml");
//httpMethod.addRequestHeader("X-Cloupia-Request-Key", "5CF4C115F0034B189616B2B8EBA0F220");
httpMethod.addRequestHeader("X-Cloupia-Request-Key", key);
httpClient.executeMethod(httpMethod);
// Check that login is successful. If so, continue. Otherwise, fail task after logging
// the error code and response.
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.");
var response = httpMethod.getResponseBodyAsString();
logger.addInfo("Response = "+response);
// All done. Release HTTP connection anyway.
httpMethod.releaseConnection();
//var response = post.getResponseBodyAsString();
//var response = xmlStr;
var is = new ByteArrayInputStream(response.getBytes());
var doc =XMLUtil.parseXMLDocument(is);
var element = XMLUtil.getElementByTagName(doc.getDocumentElement(),"VDC_ID");
logger.addInfo("New VDC Id : "+XMLUtil.getText(element));
NewVDCIDFromCLone = XMLUtil.getText(element);
}
}
//
//
// =========================== Master Deploy================================
//
//
function Master_Deploy()
{
//
// write to Log logger
//
logger.addInfo("----------------------------------------------------------");
var vdc2 = VDCUtil.getVDC(vdc);
var vdcName = vdc2.getVdcName();
var cat2 = VDCUtil.getVDCCatalogItem(cat);
var catName = cat2.getCatalogItemName();
var vdcCloudName = vdc2.getCloudName();
var groupId = vdc2.groupId;
var vdcNetworkPolicyName = vdc2.getNetworkPolicy();
logger.addInfo("--------------------Temp VDC info--------------------------------------");
var vdcTemp = VDCUtil.getVDC(VDCTemplateNumber);
var vdcNameTemp = vdcTemp.getVdcName();
var vdcTempNetworkPolicyName = vdcTemp.getNetworkPolicy();
var vdcTempComputingPolicyName = vdcTemp.getComputingPolicy();
var vdcTempStoragePolicyName = vdcTemp.getStoragePolicy();
var vdcTempPrimaryDeployPolicyName = vdcTemp.getPrimaryDeployPolicy();
logger.addInfo("VDC Template Number = "+VDCTemplateNumber);
logger.addInfo("VDC Template Name = "+vdcNameTemp);
logger.addInfo("VDC Template vdcTempNetworkPolicyName Name = "+vdcTempNetworkPolicyName);
logger.addInfo("VDC Template vdcTempComputingPolicyName Name = "+vdcTempComputingPolicyName);
logger.addInfo("VDC Template vdcTempStoragePolicyName Name = "+vdcTempStoragePolicyName);
logger.addInfo("VDC Template vdcTempPrimaryDeployPolicyName Name = "+vdcTempPrimaryDeployPolicyName);
var NewVDCIDFromCLone = 0;
logger.addInfo("----------------------------------------------------------");
logger.addInfo("My SR ID = "+ctxt.getSrId());
logger.addInfo("VDC = "+vdc);
logger.addInfo("VDC Name = "+vdcName);
logger.addInfo("Catalog = "+cat);
logger.addInfo("Catalog Name = "+catName);
logger.addInfo("vdc Network Policy Name = "+vdcNetworkPolicyName);
logger.addInfo("vdc groupId number = "+groupId);
logger.addInfo("VM IP = "+vmip);
logger.addInfo("NewVDCIDFromCLone = "+NewVDCIDFromCLone);
var mySRID = ctxt.getSrId();
var NewTempVDCName = vdcName + mySRID;
if (vmip == null) {
logger.addError("AI test 1 - IP Not set",+vmip);
ctxt.setFailed("Request failed.");
}
if (vmmask == null) {
logger.addError("AI test 2 - IP Mask Not set",+vmmask);
ctxt.setFailed("Request failed.");
}
if (backupnetwork == 1) {
if (vmgw == null) {
logger.addError("AI test 3 - IP GW Not set",+vmgw);
ctxt.setFailed("Request failed.");
}
if (vmbip == null) {
logger.addError("AI test 4 - IP B Not set",+vmbip);
ctxt.setFailed("Request failed.");
}
if (vmbmask == null) {
logger.addError("AI test 5 - IP B Mask Not set",+vmbmask);
ctxt.setFailed("Request failed.");
}
if (vmbgw == null) {
logger.addError("AI test 6 - IP B GW Not set",+vmbgw);
ctxt.setFailed("Request failed.");
}
}
//
// Decission was made to derive from GW the vCenter network name
// this will allow for networks larger then class c
// thiswill allow for networks selected from example:
// Production 192.168.40.0
// Production 192.168.41.0
// Production 192.168.41.64
// Backup 192.168.70.0
// Even vCenter network names like this should work
// Production 192.68.42.128/25
//
// Swap if split shoud happen on IF vs. GW
//
//var vmipsplit = vmip.split("\\.",4);
var vmipsplit = vmgw.split("\\.",4);
var vmipsplitarray = vmipsplit[0] + "." + vmipsplit[1] + "." + vmipsplit[2];
var forthoctet = vmipsplit[3];
logger.addInfo("4th octet = "+vmipsplit[3]);
var forthoctetint = Integer.valueOf(forthoctet);
logger.addInfo("4th octet forthoctetint = "+forthoctetint);
var forthoctetintminus1 = Integer.valueOf(forthoctet) - 1;
logger.addInfo("4th octet forthoctetintminus1= "+forthoctetintminus1);
//
// Swap if GW - 1 is used for the network calculation
// i.e GW - 192.168.40.65
// vCenter nwtwork is called Production 192.168.40.64
// GW - 1 = 192.168.40.64
//
//var vmipsplitzero = vmipsplitarray + ".0";
var vmipsplitzero = vmipsplitarray + "." + forthoctetintminus1;
logger.addInfo("VM IP Split 0 = "+vmipsplit[0]);
logger.addInfo("VM IP Split 1 = "+vmipsplit[1]);
logger.addInfo("VM IP Split 2 = "+vmipsplit[2]);
logger.addInfo("VM IP Split 3 = "+vmipsplit[3]);
logger.addInfo("VM IP Split Zero= "+vmipsplitzero);
logger.addInfo("VM Mask = "+vmmask);
logger.addInfo("VM GW = "+vmgw);
logger.addInfo("VM Backup IP = "+vmbip);
var vmbipsplit = vmbip.split("\\.",4);
var vmbipsplitarray = vmbipsplit[0] + "." + vmbipsplit[1] + "." + vmbipsplit[2];
var vmbipsplitzero = vmbipsplitarray + ".0";
logger.addInfo("VM Backup IP Split 0 = "+vmbipsplit[0]);
logger.addInfo("VM Backup IP Split 1 = "+vmbipsplit[1]);
logger.addInfo("VM Backup IP Split 2 = "+vmbipsplit[2]);
logger.addInfo("VM Backup IP Split 3 = "+vmbipsplit[3]);
logger.addInfo("VM Backup IP Split Zero= "+vmbipsplitzero);
logger.addInfo("VM Backup Mask = "+vmbmask);
logger.addInfo("VM Backup GW = "+vmbgw);
logger.addInfo("VM Owner = "+vmowner);
logger.addInfo("VM NAME = "+vmname);
logger.addInfo("VM Comment = "+vmcomment);
logger.addInfo("VM Memory = "+vmmemory);
logger.addInfo("VM CPU = "+vmcpu);
logger.addInfo("Work FLow Input 1 = "+wfi1);
logger.addInfo("Work FLow Input 2 = "+wfi2);
logger.addInfo("CSV PATH and File = "+csvfile);
logger.addInfo("Quantity = "+quantity);
logger.addInfo("backupnetwork FLAG = "+backupnetwork);
logger.addInfo("----------------------------------------------------------");
//
// figgure out Port Group Name from given IP
// Port Group Name in vCenter = Production 192.168.40.0
// IP input by user 192.168.40.55
// IP gets 4 the field split off and zero added for the seach in the report
//
var buffer = new StringWriter();
var printer = new PrintWriter(buffer);
// Formatter exists in multiple packages, so it needs fully qualified name
var formatter = new com.cloupia.lib.util.managedreports.Formatter(new File("."), printer);
var reportName = "PER_CLOUD_PORTGROUP_CONFIG_REPORT";
//
// Clound selector needs to be obtained from given VDC
// things to do
//
logger.addInfo("vdcCloudName generated from the VDC input = "+vdcCloudName);
var repContext = util.createContext("cloud", vdcCloudName , null);
var report = getReportView(repContext, reportName);
var count = 0;
var countB = 0;
for (var i=0; i<report.rowCount(); i++)
{
var pgn = report.getColumnValue(i, "Port Group Name");
logger.addInfo("Content in Port Group Column = "+pgn);
logger.addInfo("Looking for this in Port Group name = "+vmipsplitzero);
if (pgn.indexOf(vmipsplitzero) > -1)
{
logger.addInfo("Found in Port Group for Main eth interface");
logger.addInfo("Found in Port Group Column = "+pgn);
logger.addInfo("Found the Port Group name from given IP range = "+vmipsplitzero);
logger.addInfo("Cloud Selector = "+vdcCloudName);
var vswitchName = report.getColumnValue(i, "vSwitch Name");
logger.addInfo("vSwitch Name = "+vswitchName);
var portGroupType = report.getColumnValue(i, "Port Group Type");
logger.addInfo("Port Group Type = "+portGroupType);
var PortGroupAssembly = vdcCloudName + "@" + vswitchName + "@" + portGroupType + "@" + pgn;
logger.addInfo("PortGroupAssembly = "+PortGroupAssembly);
count++;
logger.addInfo("Count = "+count);
}
if (backupnetwork == 1) {
// Looking for the backup interface
if (pgn.indexOf(vmbipsplitzero) > -1)
{
logger.addInfo("Found in Port Group for Backup eth interface");
logger.addInfo("Found in Port Group Column = "+pgn);
logger.addInfo("Found the Port Group name from given IP range = "+vmbipsplitzero);
logger.addInfo("Cloud Selector = "+vdcCloudName);
var vswitchNameB = report.getColumnValue(i, "vSwitch Name");
logger.addInfo("vSwitch Name = "+vswitchName);
var portGroupTypeB = report.getColumnValue(i, "Port Group Type");
logger.addInfo("Port Group Type = "+portGroupType);
var PortGroupAssemblyB = vdcCloudName + "@" + vswitchNameB + "@" + portGroupTypeB + "@" + pgn;
logger.addInfo("PortGroupAssembly = "+PortGroupAssemblyB);
countB++;
logger.addInfo("Count Backup = "+countB);
}
}
}
//}
if (countB == 0 && backupnetwork == 1) {
logger.addInfo("Count Backup = "+countB);
logger.addError("AI test 7 - No back up Network found",+countB);
ctxt.setFailed("Request failed.");
}
if (count == 0 ) {
logger.addInfo("Count = "+count);
logger.addError("AI test 8 - No Network found",+count);
ctxt.setFailed("Request failed.");
}
//
// obtain the network policy number from the network policy name
// The number is needed for the add backup network function
//
var reportName = "PolicyFeature.report.net.drap.config";
var repContext = util.createContext("global_admin", null , null);
var report = getReportView(repContext, reportName);
report = report.filterRowsByColumn("Policy Name", vdcNetworkPolicyName, false);
var vdcNetworkPolicyNameNumber = report.getColumnValue(0, "Policy ID");
logger.addInfo("vdcNetworkPolicyNameNumber = "+vdcNetworkPolicyNameNumber);
formatter.printTable(report);
printer.close();
//
// call the network change function
//
logger.addInfo("-------------------change main network policy---------------------------------------");
var input1 = "<cuicOperationRequest><operationType>MODIFY_NETWORK_POLICY</operationType><payload><![CDATA[<ModifyVDCNetworkPolicy><!-- Accepts value from the list: vDC--><vdcId>"+vdc+"</vdcId><!-- Accepts value from the list: vmwareVmPortGroupIdentity--><portgroup>"+PortGroupAssembly+"</portgroup><isDHCP>false</isDHCP> <!-- Set this value only when isDHCP not equals to true --><!-- Accepts value from the list: IPPoolSourceType--><ipAddressSource>1</ipAddressSource> <!-- Set this value only when ipAddressSource not equals to 0 --><staticIpPool>"+vmip+"</staticIpPool> <!-- Set this value only when ipAddressSource not equals to 0 --><subnetMask>"+vmmask+"</subnetMask> <!-- Set this value only when ipAddressSource not equals to 0 --><gateway>"+vmgw+"</gateway> <!-- Set this value only when ipAddressSource not equals to 1 --><!-- Accepts value from the list: VMWareIPPoolPolicy--><staticIPPoolPolicy></staticIPPoolPolicy></ModifyVDCNetworkPolicy>]]></payload></cuicOperationRequest>";
var ret1 = GenericHTTPFunction(input1, "/cloupia/api-v2/vdc");
logger.addInfo("ret1 = "+ret1);
logger.addInfo("-------------------change main network policy done---------------------------------");
logger.addInfo("Backup network Flag (1 = add network interface) = "+backupnetwork);
if (backupnetwork == 1) {
logger.addInfo("-------------------add backup network policy---------------------------------------");
var input11 = "<cuicOperationRequest><operationType>ADD_NETWORK_TO_NETWORK_POLICY</operationType><payload><![CDATA[<AddNetworkToNetworkPolicyConfig><policyName>"+vdcNetworkPolicyName+";"+vdcNetworkPolicyNameNumber+"</policyName><nicAlias>"+backupnetworkadaptername+"</nicAlias><isMandatory>true</isMandatory><allowToChangePortGroups>false</allowToChangePortGroups><!-- Accepts value from the list: vmwareVmPortGroupIdentity--><virtualNetworkName>"+PortGroupAssemblyB+"</virtualNetworkName><copyFromTemplate>false</copyFromTemplate><!-- Set this value only when copyFromTemplate not equals to true --><adapterType>"+NetWorkAdapterType1+"</adapterType><DHCP>false</DHCP><!-- Set this value only when isDHCP not equals to true --><ipAddressSource>1</ipAddressSource><staticIPPool>"+vmbip+"</staticIPPool><subnetMask>"+vmbmask+"</subnetMask><gatewayIP>"+vmbgw+"</gatewayIP><!-- Accepts value from the list: VMWareIPPoolPolicy--><staticIPPoolPolicy></staticIPPoolPolicy></AddNetworkToNetworkPolicyConfig>]]></payload></cuicOperationRequest>";
var ret11 = GenericHTTPFunction(input11, "/cloupia/api-v2/vdc");
logger.addInfo("ret11 = "+ret11);
logger.addInfo("-------------------add backup network policy done---------------------------------");
}
//
//clone vdc from template
//
logger.addInfo("-------------------Clone VDC from Template---------------------------------------");
logger.addInfo("Before NewVDCIDFromCLone"+NewVDCIDFromCLone);
//CloneVDCFromTemplate();
input10 ="<cuicOperationRequest><payload><![CDATA[<VDCConfig><vdcName>"+NewTempVDCName+"</vdcName><vdcDescription></vdcDescription><!-- Accepts value from the list: vDCProfile--><vdcProfileId>"+VDCTemplateNumber+"</vdcProfileId><firstApproverUsername></firstApproverUsername><secondApproverUsername></secondApproverUsername><systemPolicyName></systemPolicyName><networkPolicyName></networkPolicyName><storagePolicyName></storagePolicyName><computingPolicyName></computingPolicyName><groupID>"+groupId+"</groupID></VDCConfig>]]></payload></cuicOperationRequest>";
var ret10 = GenericHTTPFunction(input10, "/cloupia/api-v2/vdc");
logger.addInfo("ret10 = "+ret10);
var is = new ByteArrayInputStream(ret10.getBytes());
var doc =XMLUtil.parseXMLDocument(is);
var element = XMLUtil.getElementByTagName(doc.getDocumentElement(),"VDC_ID");
logger.addInfo("New VDC Id : "+XMLUtil.getText(element));
NewVDCIDFromCLone = XMLUtil.getText(element);
logger.addInfo("Afger NewVDCIDFromCLone"+NewVDCIDFromCLone);
logger.addInfo("After Function call .....NewVDCIDFromCLone = "+NewVDCIDFromCLone);
logger.addInfo("--------------------Temp VDC info--------------------------------------");
var vdcTempClone = VDCUtil.getVDC(NewVDCIDFromCLone);
var vdcNameTempClone = vdcTempClone.getVdcName();
var vdcTempNetworkPolicyNameClone = vdcTempClone.getNetworkPolicy();
var vdcTempComputingPolicyNameClone = vdcTempClone.getComputingPolicy();
var vdcTempStoragePolicyNameClone = vdcTempClone.getStoragePolicy();
var vdcTempPrimaryDeployPolicyNameClone = vdcTempClone.getPrimaryDeployPolicy();
logger.addInfo("VDC Template Number Clone = "+NewVDCIDFromCLone);
logger.addInfo("VDC Template Name Clone = "+vdcNameTempClone);
logger.addInfo("VDC Template vdcTempNetworkPolicyName Name Clone = "+vdcTempNetworkPolicyNameClone);
logger.addInfo("VDC Template vdcTempComputingPolicyName Name Clone= "+vdcTempComputingPolicyNameClone);
logger.addInfo("VDC Template vdcTempStoragePolicyName Name Clone = "+vdcTempStoragePolicyNameClone);
logger.addInfo("VDC Template vdcTempPrimaryDeployPolicyName Name Clone = "+vdcTempPrimaryDeployPolicyNameClone);
logger.addInfo("-------------------Clone VDC from Template Done---------------------------------------");
//
// Set up the provision VM information
//
var params = new APIProvisionParams();
params.setCatalogName(catName);
logger.addInfo("params cat = "+catName);
//NewVDCIDFromCLone
//params.setVdcName(vdcName);
logger.addInfo("What is my new VDC number = "+NewVDCIDFromCLone);
logger.addInfo("What is my Origional VDC number = "+vdcName);
logger.addInfo("What is my new VDC name = "+vdcNameTempClone);
params.setVdcName(vdcNameTempClone);
logger.addInfo("params vdcNameTempClone = "+vdcNameTempClone);
params.setUserID(vmowner);
logger.addInfo("params vmowner = "+vmowner);
//params.setUserID("admin");
params.setVmName(vmname);
logger.addInfo("params vmname = "+vmname);
params.setComments(vmcomment);
logger.addInfo("params vmcomment = "+vmcomment);
params.setCores(vmcpu);
logger.addInfo("params vmcpu = "+vmcpu);
params.setMemoryMB(vmmemory);
logger.addInfo("params vmmemory = "+vmmemory);
params.setDiskGB(disksize1);
logger.addInfo("params disksize1 = "+disksize1);
//If Post Provision workflow has user inputs then the following code is required to pass user inputs to API.
//If the post provision workflow has only task inputs then skip the below code. It is not required to setPostProvWFUserInputs.
var nv1 = new APINameValue("A1",wfi1);
var nv2 = new APINameValue("A2",wfi2);
logger.addInfo("params wfi1 = "+wfi1);
logger.addInfo("params wfi2 = "+wfi2);
var list = new APINameValueList();
list.addNameValue(nv1);
list.addNameValue(nv2);
//Add this inputs list to provision params.
params.setPostProvWFUserInputs(list);
//
// Call New Service Request provision VM
//
logger.addInfo("-------------------Provsion VM---------------------------------");
var childSrId = ctxt.getAPI().userAPIProvisionRequest(params);
logger.addInfo("childSrId= "+childSrId);
logger.addInfo("-------------------Provsion VM Executing in Child Workflow---------------------------------");
logger.addInfo("-------------------Waiting for Child Workflow to Finish---------------------------------");
var status = ctxt.waitForCompletion(childSrId, 1800000);
logger.addInfo("-------------------Done Waiting for Child Workflow to Finish---------------------------------");
if (status == 0)
{
logger.addInfo("Provisioned SR ID ="+ childSrId+ " successfully.");
var vmID = ctxt.getOutput("VMProvisionEngineConfig_235.PROVISIONED_VM_ID", childSrId);
logger.addInfo("Child VM ID = "+vmID);
} else {
logger.addError("SR ID ="+ childSrId+ " Failed");
}
//
// Sleep for a bit to let the system chatch up
//
logger.addInfo("Sleeping for a bit (30 sec...");
sleep();
logger.addInfo("Sleeping for a bit - Done...");
//
//Move vm to requested VDC
//
logger.addInfo("Move VM........."+vmID);
logger.addInfo("From........."+NewVDCIDFromCLone);
logger.addInfo("To........."+vdc);
var input8 = "<cuicOperationRequest><operationType>MOVE_VMS_TO_VDC</operationType><payload><![CDATA[<AssignVMstoVDC><!-- Accepts value from the list: vmwareAccountName--><accountName>"+vdcCloudName+"</accountName><!-- Accepts value from the list: multiVM--><vmId>"+vmID+"</vmId><!-- Accepts value from the list: vDC--><vdcName>"+vdc+"</vdcName></AssignVMstoVDC>]]></payload></cuicOperationRequest>";
logger.addInfo("Input = "+input8);
var ret8 = GenericHTTPFunction(input8, "/cloupia/api-v2/vmwareVM");
logger.addInfo("ret8 = "+ret8);
logger.addInfo("Clean Up Section.........");
logger.addInfo("About to delete ...VDC Template vdcTempNetworkPolicyName Name Clone = "+vdcTempNetworkPolicyNameClone);
logger.addInfo("About to delete ...VDC Template vdcTempComputingPolicyName Name Clone= "+vdcTempComputingPolicyNameClone);
logger.addInfo("About to delete ...VDC Template vdcTempStoragePolicyName Name Clone = "+vdcTempStoragePolicyNameClone);
logger.addInfo("About to delete ...VDC Template vdcTempPrimaryDeployPolicyName Name Clone = "+vdcTempPrimaryDeployPolicyNameClone);
logger.addInfo("Cloud = "+vdcCloudName);
if (backupnetwork == 1) {
logger.addInfo("-------------------Delete backup network policy---------------------------------------");
var input9 = "<cuicOperationRequest><operationType>REMOVE_NETWORK_FROM_NETWORK_POLICY</operationType><payload><![CDATA[<RemoveNetworkFromNetworkPolicyConfig><policyName>"+vdcNetworkPolicyName+";"+vdcNetworkPolicyNameNumber+"</policyName><nicAlias>"+backupnetworkadaptername+"</nicAlias></RemoveNetworkFromNetworkPolicyConfig>]]></payload></cuicOperationRequest>";
var ret1 = GenericHTTPFunction(input9, "/cloupia/api-v2/vdc");
logger.addInfo("ret1 = "+ret1);
logger.addInfo("-------------------Delete backup network policy done---------------------------------");
}
logger.addInfo("------------------- deleteNewTempVDC---------------------------------");
var input2 = "<cuicOperationRequest><operationType>DELETE_VDC</operationType><payload><![CDATA[<DeleteVDCConfig><vdcID>"+NewVDCIDFromCLone+"</vdcID></DeleteVDCConfig>]]></payload></cuicOperationRequest>";
logger.addInfo("Input = "+input2);
var ret2 = GenericHTTPFunction(input2, "/cloupia/api-v2/vdc");
logger.addInfo("ret2 = "+ret2);
logger.addInfo("------------------- Delete Network Policy---------------------------------");
var input3 = "<cuicOperationRequest><operationType>DELETE_VDC_POLICY</operationType><payload><![CDATA[<DeleteVDCPolicy><accountName>"+vdcCloudName+"</accountName><policyType>Network Policy</policyType><policyNames>"+vdcTempNetworkPolicyNameClone+"</policyNames></DeleteVDCPolicy>]]></payload></cuicOperationRequest>";
logger.addInfo("Input = "+input3);
var ret3 = GenericHTTPFunction(input3, "/cloupia/api-v2/vdc");
logger.addInfo("ret3 = "+ret3);
logger.addInfo("------------------- Delete Storage Policy---------------------------------");
var input4 = "<cuicOperationRequest><operationType>DELETE_VDC_POLICY</operationType><payload><![CDATA[<DeleteVDCPolicy><accountName>"+vdcCloudName+"</accountName><policyType>Storage Policy</policyType><policyNames>"+vdcTempStoragePolicyNameClone+"</policyNames></DeleteVDCPolicy>]]></payload></cuicOperationRequest>";
logger.addInfo("Input = "+input4);
var ret4 = GenericHTTPFunction(input4, "/cloupia/api-v2/vdc");
logger.addInfo("ret4 = "+ret4);
logger.addInfo("------------------- Delete Computing Policy---------------------------------");
var input5 = "<cuicOperationRequest><operationType>DELETE_VDC_POLICY</operationType><payload><![CDATA[<DeleteVDCPolicy><accountName>"+vdcCloudName+"</accountName><policyType>Computing Policy</policyType><policyNames>"+vdcTempComputingPolicyNameClone+"</policyNames></DeleteVDCPolicy>]]></payload></cuicOperationRequest>";
logger.addInfo("Input = "+input5);
var ret5 = GenericHTTPFunction(input5, "/cloupia/api-v2/vdc");
logger.addInfo("ret5 = "+ret5);
logger.addInfo("------------------- Delete Primary Deploy Policy---------------------------------");
var sysPolicy = InfraPersistenceUtil.getPrivateCloudSystemProfile(vdcTempPrimaryDeployPolicyNameClone);
if(sysPolicy != null){
var policyId = sysPolicy.getPolicyId();
InfraPersistenceUtil.deletePrivateCloudSystemProfile(policyId);
logger.addInfo("vdcTempPrimaryDeployPolicyNameClone Policy deleted successfully"+vdcTempPrimaryDeployPolicyNameClone);
}else{
logger.addError("vdcTempPrimaryDeployPolicyNameClone Policy not found : "+vdcTempPrimaryDeployPolicyNameClone);
}
// ==== Master Deploy function
}
//
// ============= Main ===============
//
if (csv_file_flag == 1) {
//
// Read from file
//
//Example:
//vmName1,Comment1,2,2048,20,VDC_CULPEPER2,LinuxApp,192.168.45.67,255.255.255.0,192.168.45.65,0,0.0.0.0,255.255.255.0,127.0.0.1,orf,Workflowinout1,workflowinput2
//vmName2,Comment2,2,2048,20,VDC_CULPEPER2,LinuxApp,192.168.45.68,255.255.255.0,192.168.45.65,1,192.168.70.100,255.255.255.0,127.0.0.1,orf,Workflowinout1,workflowinput2
//vmName3,Comment3,2,2048,20,VDC_CULPEPER2,LinuxApp,192.168.45.130,255.255.255.0,192.168.45.129,1,192.168.70.102,255.255.255.0,127.0.0.1,orf,Workflowinout1,workflowinput2
//
//
var br = new BufferedReader(new FileReader(csvfile));
var tokens;
var vmDetails = new ArrayList();
while(true){
var line = br.readLine();
if(line == null)break;
logger.addInfo(line);
tokens = line.split(",");
if(tokens != null && tokens.length > 16){
vmDetails.add(tokens);
}
}
br.close();
var vmListSize = vmDetails.size();
logger.addInfo("VM Details from file (size)......"+vmListSize);
var details = vmDetails.iterator();
while(details.hasNext()){
var arr = details.next();
logger.addInfo("VM Name : "+arr[0]);
logger.addInfo("VM Comment : "+arr[1]);
logger.addInfo("VM CPUs : "+arr[2]);
logger.addInfo("VM Memory : "+arr[3]);
logger.addInfo("VM Disk Size : "+arr[4]);
logger.addInfo("VM VDC: "+arr[5]);
logger.addInfo("VM Catalog: "+arr[6]);
logger.addInfo("VM IP : "+arr[7]);
logger.addInfo("VM Mask : "+arr[8]);
logger.addInfo("VM Gateway: "+arr[9]);
logger.addInfo("VM Backup Network FLAG: "+arr[10]);
logger.addInfo("VM Backup IP : "+arr[11]);
logger.addInfo("VM Backup Mask : "+arr[12]);
logger.addInfo("VM Backup Gateway: "+arr[13]);
logger.addInfo("VM Owner: "+arr[14]);
logger.addInfo("VM Workflow Input1 : "+arr[15]);
logger.addInfo("VM Workflow Input2 : "+arr[16]);
logger.addInfo("-------------------------------------");
logger.addInfo("Assigning Variables");
vmname = arr[0];
vmcomment = arr[1];
vmcpu = arr[2];
vmmemory = arr[3];
disksize1 = arr[4];
vdc = VDCName2VDCid(arr[5]);
logger.addInfo("vdc : "+vdc);
catname = arr[6];
var cat = CatName2ID(catname);
vmip = arr[7];
vmmask = arr[8];
vmgw = arr[9];
backupnetwork = Integer.valueOf(arr[10]);
vmbip = arr[11];
vmbmask = arr[12];
vmbgw = arr[13];
vmowner = arr[14];
wfi1 = arr[15];
wfi2 = arr[16];
logger.addInfo("------------------Call for Multiple delpoy-------------------");
Master_Deploy();
logger.addInfo("------------------Call for Multiple delpoy - done-------------------");
}
} else {
logger.addInfo("------------------Call for single delpoy-------------------");
Master_Deploy();
logger.addInfo("------------------Call for single delpoy - done-------------------");
}
Sample Log File:
Service Request ID: 4275
Workflow Inputs:
- vdc
- ID
- Password
- Key
- UCSD_IP
- Catalog
- VM_IP
- VM_Mask
- VM_GW
- VM_Owner
- VM_Name
- VM_Comment
- VM_Memory
- VM_CPU
- WFI1
- WFI2
- CSV_FILE
- PROVISION_QTY
- DiskSize1
- BackupNetwork
- VMB_IP
- VMB_GW
- BackupNetworkAdapterName
- NetWorkAdapterType
- VMB_Mask
- VDC_Template
- CSV_FILE_FLAG
Feb 17, 2015 07:26:51 CST Request submitted
Feb 17, 2015 07:26:53 CST Executing workflow item number 1
Feb 17, 2015 07:26:53 CST Completed workflow item number 1, with status Completed
Feb 17, 2015 07:26:59 CST Executing workflow item number 2
Feb 17, 2015 07:26:59 CST Trigger context executeWorkFlowStep called
Feb 17, 2015 07:26:59 CST Executing custom action V1-Super-Mod3-all-functions (custom_Change_User)
Feb 17, 2015 07:26:59 CST Executing custom action V1-Super-Mod3-all-functions (custom_Change_User)
Feb 17, 2015 07:26:59 CST Executing custom script for Change_User
Feb 17, 2015 07:27:02 CST User ID successfully changed to admin
Feb 17, 2015 07:27:02 CST Task #1 (V1-Super-Mod3-all-functions (custom_Change_User)) completed successfully in 3 seconds
Feb 17, 2015 07:27:02 CST Input/Output values for Task #1 (V1-Super-Mod3-all-functions (custom_Change_User)):
Feb 17, 2015 07:27:02 CST [Local Input: User ID = admin]
Feb 17, 2015 07:27:02 CST Completed workflow item number 2, with status Completed
Feb 17, 2015 07:27:05 CST Executing workflow item number 3
Feb 17, 2015 07:27:05 CST Trigger context executeWorkFlowStep called
Feb 17, 2015 07:27:05 CST Executing custom action V1-Super-Mod3-all-functions (ExecuteCloupiaScript)
Feb 17, 2015 07:27:05 CST Executing custom action V1-Super-Mod3-all-functions (ExecuteCloupiaScript)
Feb 17, 2015 07:27:08 CST Executing cloupia script: VM Provision+Post Provision
Feb 17, 2015 07:27:08 CST ------------------Call for single delpoy-------------------
Feb 17, 2015 07:27:08 CST ----------------------------------------------------------
Feb 17, 2015 07:27:08 CST --------------------Temp VDC info--------------------------------------
Feb 17, 2015 07:27:08 CST VDC Template Number = 144
Feb 17, 2015 07:27:08 CST VDC Template Name = Verizon_VDC_Template
Feb 17, 2015 07:27:08 CST VDC Template vdcTempNetworkPolicyName Name = CulpeperNetDummy
Feb 17, 2015 07:27:08 CST VDC Template vdcTempComputingPolicyName Name = Dallas Prod1
Feb 17, 2015 07:27:08 CST VDC Template vdcTempStoragePolicyName Name = DallasProd1
Feb 17, 2015 07:27:08 CST VDC Template vdcTempPrimaryDeployPolicyName Name = LinuxColpeper
Feb 17, 2015 07:27:08 CST ----------------------------------------------------------
Feb 17, 2015 07:27:08 CST My SR ID = 4275
Feb 17, 2015 07:27:08 CST VDC = 142
Feb 17, 2015 07:27:08 CST VDC Name = VDC_CULPEPER
Feb 17, 2015 07:27:08 CST Catalog = 157
Feb 17, 2015 07:27:08 CST Catalog Name = LinuxApp
Feb 17, 2015 07:27:08 CST vdc Network Policy Name = CulpeperNetDummy
Feb 17, 2015 07:27:08 CST vdc groupId number = 2
Feb 17, 2015 07:27:08 CST VM IP = 192.168.41.199
Feb 17, 2015 07:27:08 CST NewVDCIDFromCLone = 0
Feb 17, 2015 07:27:08 CST 4th octet = 1
Feb 17, 2015 07:27:08 CST 4th octet forthoctetint = 1
Feb 17, 2015 07:27:08 CST 4th octet forthoctetintminus1= 0
Feb 17, 2015 07:27:08 CST VM IP Split 0 = 192
Feb 17, 2015 07:27:08 CST VM IP Split 1 = 168
Feb 17, 2015 07:27:08 CST VM IP Split 2 = 41
Feb 17, 2015 07:27:08 CST VM IP Split 3 = 1
Feb 17, 2015 07:27:08 CST VM IP Split Zero= 192.168.41.0
Feb 17, 2015 07:27:08 CST VM Mask = 255.255.255.0
Feb 17, 2015 07:27:08 CST VM GW = 192.168.41.1
Feb 17, 2015 07:27:08 CST VM Backup IP =
Feb 17, 2015 07:27:08 CST VM Backup IP Split 0 =
Feb 17, 2015 07:27:08 CST VM Backup IP Split 1 = undefined
Feb 17, 2015 07:27:08 CST VM Backup IP Split 2 = undefined
Feb 17, 2015 07:27:08 CST VM Backup IP Split 3 = undefined
Feb 17, 2015 07:27:08 CST VM Backup IP Split Zero= .undefined.undefined.0
Feb 17, 2015 07:27:08 CST VM Backup Mask = 255.255.255.0
Feb 17, 2015 07:27:08 CST VM Backup GW = 127.0.0.1
Feb 17, 2015 07:27:08 CST VM Owner = orf
Feb 17, 2015 07:27:08 CST VM NAME = orf_41_199
Feb 17, 2015 07:27:08 CST VM Comment = orf_41_199user
Feb 17, 2015 07:27:08 CST VM Memory = 1024
Feb 17, 2015 07:27:08 CST VM CPU = 1
Feb 17, 2015 07:27:08 CST Work FLow Input 1 = WorkFlowInput1
Feb 17, 2015 07:27:08 CST Work FLow Input 2 = WorkFLowInput2
Feb 17, 2015 07:27:08 CST CSV PATH and File = /tmp/vmDetails2.txt
Feb 17, 2015 07:27:08 CST Quantity = 1
Feb 17, 2015 07:27:08 CST backupnetwork FLAG = 0
Feb 17, 2015 07:27:08 CST ----------------------------------------------------------
Feb 17, 2015 07:27:08 CST vdcCloudName generated from the VDC input = Dallas
Feb 17, 2015 07:27:09 CST Content in Port Group Column = Production 192.168.40.0
Feb 17, 2015 07:27:09 CST Looking for this in Port Group name = 192.168.41.0
Feb 17, 2015 07:27:09 CST Content in Port Group Column = Production 192.168.42.0
Feb 17, 2015 07:27:09 CST Looking for this in Port Group name = 192.168.41.0
Feb 17, 2015 07:27:09 CST Content in Port Group Column = Production 192.168.41.0
Feb 17, 2015 07:27:09 CST Looking for this in Port Group name = 192.168.41.0
Feb 17, 2015 07:27:09 CST Found in Port Group for Main eth interface
Feb 17, 2015 07:27:09 CST Found in Port Group Column = Production 192.168.41.0
Feb 17, 2015 07:27:09 CST Found the Port Group name from given IP range = 192.168.41.0
Feb 17, 2015 07:27:09 CST Cloud Selector = Dallas
Feb 17, 2015 07:27:09 CST vSwitch Name = vSwitch0
Feb 17, 2015 07:27:09 CST Port Group Type = Virtual Machine Portgroup
Feb 17, 2015 07:27:09 CST PortGroupAssembly = Dallas@vSwitch0@Virtual Machine Portgroup@Production 192.168.41.0
Feb 17, 2015 07:27:09 CST Count = 1
Feb 17, 2015 07:27:09 CST Content in Port Group Column = Production 192.168.43.0
Feb 17, 2015 07:27:09 CST Looking for this in Port Group name = 192.168.41.0
Feb 17, 2015 07:27:09 CST Content in Port Group Column = Production 192.168.44.0
Feb 17, 2015 07:27:09 CST Looking for this in Port Group name = 192.168.41.0
Feb 17, 2015 07:27:09 CST Content in Port Group Column = VMProvision
Feb 17, 2015 07:27:09 CST Looking for this in Port Group name = 192.168.41.0
Feb 17, 2015 07:27:09 CST Content in Port Group Column = VM Network
Feb 17, 2015 07:27:09 CST Looking for this in Port Group name = 192.168.41.0
Feb 17, 2015 07:27:09 CST Content in Port Group Column = VMkernel
Feb 17, 2015 07:27:09 CST Looking for this in Port Group name = 192.168.41.0
Feb 17, 2015 07:27:09 CST Content in Port Group Column = Management Network
Feb 17, 2015 07:27:09 CST Looking for this in Port Group name = 192.168.41.0
Feb 17, 2015 07:27:09 CST Content in Port Group Column = Backup 192.168.70.0
Feb 17, 2015 07:27:09 CST Looking for this in Port Group name = 192.168.41.0
Feb 17, 2015 07:27:09 CST Content in Port Group Column = Production 192.168.45.64
Feb 17, 2015 07:27:09 CST Looking for this in Port Group name = 192.168.41.0
Feb 17, 2015 07:27:09 CST Content in Port Group Column = CloupiaNet
Feb 17, 2015 07:27:09 CST Looking for this in Port Group name = 192.168.41.0
Feb 17, 2015 07:27:09 CST Content in Port Group Column = Production 192.168.45.128/28
Feb 17, 2015 07:27:09 CST Looking for this in Port Group name = 192.168.41.0
Feb 17, 2015 07:27:09 CST Content in Port Group Column = VMNetProjectSilver3
Feb 17, 2015 07:27:09 CST Looking for this in Port Group name = 192.168.41.0
Feb 17, 2015 07:27:09 CST Content in Port Group Column = VMNetProjectSilver2
Feb 17, 2015 07:27:09 CST Looking for this in Port Group name = 192.168.41.0
Feb 17, 2015 07:27:09 CST Content in Port Group Column = VMNetProjectSilver1
Feb 17, 2015 07:27:09 CST Looking for this in Port Group name = 192.168.41.0
Feb 17, 2015 07:27:09 CST Content in Port Group Column = VM POD44
Feb 17, 2015 07:27:09 CST Looking for this in Port Group name = 192.168.41.0
Feb 17, 2015 07:27:09 CST Content in Port Group Column = VM POD43
Feb 17, 2015 07:27:09 CST Looking for this in Port Group name = 192.168.41.0
Feb 17, 2015 07:27:09 CST Content in Port Group Column = VM POD42
Feb 17, 2015 07:27:09 CST Looking for this in Port Group name = 192.168.41.0
Feb 17, 2015 07:27:09 CST Content in Port Group Column = VM POD41
Feb 17, 2015 07:27:09 CST Looking for this in Port Group name = 192.168.41.0
Feb 17, 2015 07:27:09 CST Content in Port Group Column = VM POD34
Feb 17, 2015 07:27:09 CST Looking for this in Port Group name = 192.168.41.0
Feb 17, 2015 07:27:09 CST Content in Port Group Column = VM POD33
Feb 17, 2015 07:27:09 CST Looking for this in Port Group name = 192.168.41.0
Feb 17, 2015 07:27:09 CST Content in Port Group Column = VM POD32
Feb 17, 2015 07:27:09 CST Looking for this in Port Group name = 192.168.41.0
Feb 17, 2015 07:27:09 CST Content in Port Group Column = VM POD31
Feb 17, 2015 07:27:09 CST Looking for this in Port Group name = 192.168.41.0
Feb 17, 2015 07:27:09 CST Content in Port Group Column = VM POD24
Feb 17, 2015 07:27:09 CST Looking for this in Port Group name = 192.168.41.0
Feb 17, 2015 07:27:09 CST Content in Port Group Column = VM POD23
Feb 17, 2015 07:27:09 CST Looking for this in Port Group name = 192.168.41.0
Feb 17, 2015 07:27:09 CST Content in Port Group Column = VM POD22
Feb 17, 2015 07:27:09 CST Looking for this in Port Group name = 192.168.41.0
Feb 17, 2015 07:27:09 CST Content in Port Group Column = VM POD21
Feb 17, 2015 07:27:09 CST Looking for this in Port Group name = 192.168.41.0
Feb 17, 2015 07:27:09 CST Content in Port Group Column = VM POD14
Feb 17, 2015 07:27:09 CST Looking for this in Port Group name = 192.168.41.0
Feb 17, 2015 07:27:09 CST Content in Port Group Column = VM POD13
Feb 17, 2015 07:27:09 CST Looking for this in Port Group name = 192.168.41.0
Feb 17, 2015 07:27:09 CST Content in Port Group Column = VM POD12
Feb 17, 2015 07:27:09 CST Looking for this in Port Group name = 192.168.41.0
Feb 17, 2015 07:27:09 CST Content in Port Group Column = VM POD11
Feb 17, 2015 07:27:09 CST Looking for this in Port Group name = 192.168.41.0
Feb 17, 2015 07:27:09 CST Content in Port Group Column = VMTestjeff
Feb 17, 2015 07:27:09 CST Looking for this in Port Group name = 192.168.41.0
Feb 17, 2015 07:27:09 CST Content in Port Group Column = Production 192.168.42.0
Feb 17, 2015 07:27:09 CST Looking for this in Port Group name = 192.168.41.0
Feb 17, 2015 07:27:09 CST Content in Port Group Column = Production 192.168.41.0
Feb 17, 2015 07:27:09 CST Looking for this in Port Group name = 192.168.41.0
Feb 17, 2015 07:27:09 CST Found in Port Group for Main eth interface
Feb 17, 2015 07:27:09 CST Found in Port Group Column = Production 192.168.41.0
Feb 17, 2015 07:27:09 CST Found the Port Group name from given IP range = 192.168.41.0
Feb 17, 2015 07:27:09 CST Cloud Selector = Dallas
Feb 17, 2015 07:27:09 CST vSwitch Name = vSwitch0
Feb 17, 2015 07:27:09 CST Port Group Type = Virtual Machine Portgroup
Feb 17, 2015 07:27:09 CST PortGroupAssembly = Dallas@vSwitch0@Virtual Machine Portgroup@Production 192.168.41.0
Feb 17, 2015 07:27:09 CST Count = 2
Feb 17, 2015 07:27:09 CST Content in Port Group Column = Production 192.168.43.0
Feb 17, 2015 07:27:09 CST Looking for this in Port Group name = 192.168.41.0
Feb 17, 2015 07:27:09 CST Content in Port Group Column = Production 192.168.44.0
Feb 17, 2015 07:27:09 CST Looking for this in Port Group name = 192.168.41.0
Feb 17, 2015 07:27:09 CST Content in Port Group Column = Production 192.168.40.0
Feb 17, 2015 07:27:09 CST Looking for this in Port Group name = 192.168.41.0
Feb 17, 2015 07:27:09 CST Content in Port Group Column = VMProvision
Feb 17, 2015 07:27:09 CST Looking for this in Port Group name = 192.168.41.0
Feb 17, 2015 07:27:09 CST Content in Port Group Column = VM Network
Feb 17, 2015 07:27:09 CST Looking for this in Port Group name = 192.168.41.0
Feb 17, 2015 07:27:09 CST Content in Port Group Column = VMkernel
Feb 17, 2015 07:27:09 CST Looking for this in Port Group name = 192.168.41.0
Feb 17, 2015 07:27:09 CST Content in Port Group Column = Management Network
Feb 17, 2015 07:27:09 CST Looking for this in Port Group name = 192.168.41.0
Feb 17, 2015 07:27:09 CST Content in Port Group Column = Backup 192.168.70.0
Feb 17, 2015 07:27:09 CST Looking for this in Port Group name = 192.168.41.0
Feb 17, 2015 07:27:09 CST Content in Port Group Column = Production 192.168.45.64
Feb 17, 2015 07:27:09 CST Looking for this in Port Group name = 192.168.41.0
Feb 17, 2015 07:27:09 CST Content in Port Group Column = Production 192.168.45.128/28
Feb 17, 2015 07:27:09 CST Looking for this in Port Group name = 192.168.41.0
Feb 17, 2015 07:27:09 CST Content in Port Group Column = VMNetProjectSilver3
Feb 17, 2015 07:27:09 CST Looking for this in Port Group name = 192.168.41.0
Feb 17, 2015 07:27:09 CST Content in Port Group Column = VMNetProjectSilver2
Feb 17, 2015 07:27:09 CST Looking for this in Port Group name = 192.168.41.0
Feb 17, 2015 07:27:09 CST Content in Port Group Column = VMNetProjectSilver1
Feb 17, 2015 07:27:09 CST Looking for this in Port Group name = 192.168.41.0
Feb 17, 2015 07:27:09 CST Content in Port Group Column = VM POD44
Feb 17, 2015 07:27:09 CST Looking for this in Port Group name = 192.168.41.0
Feb 17, 2015 07:27:09 CST Content in Port Group Column = VM POD43
Feb 17, 2015 07:27:09 CST Looking for this in Port Group name = 192.168.41.0
Feb 17, 2015 07:27:09 CST Content in Port Group Column = VM POD42
Feb 17, 2015 07:27:09 CST Looking for this in Port Group name = 192.168.41.0
Feb 17, 2015 07:27:09 CST Content in Port Group Column = VM POD41
Feb 17, 2015 07:27:09 CST Looking for this in Port Group name = 192.168.41.0
Feb 17, 2015 07:27:09 CST Content in Port Group Column = VM POD34
Feb 17, 2015 07:27:09 CST Looking for this in Port Group name = 192.168.41.0
Feb 17, 2015 07:27:09 CST Content in Port Group Column = VM POD33
Feb 17, 2015 07:27:09 CST Looking for this in Port Group name = 192.168.41.0
Feb 17, 2015 07:27:09 CST Content in Port Group Column = VM POD32
Feb 17, 2015 07:27:09 CST Looking for this in Port Group name = 192.168.41.0
Feb 17, 2015 07:27:09 CST Content in Port Group Column = VM POD31
Feb 17, 2015 07:27:09 CST Looking for this in Port Group name = 192.168.41.0
Feb 17, 2015 07:27:09 CST Content in Port Group Column = VM POD24
Feb 17, 2015 07:27:09 CST Looking for this in Port Group name = 192.168.41.0
Feb 17, 2015 07:27:09 CST Content in Port Group Column = VM POD23
Feb 17, 2015 07:27:09 CST Looking for this in Port Group name = 192.168.41.0
Feb 17, 2015 07:27:09 CST Content in Port Group Column = VM POD22
Feb 17, 2015 07:27:09 CST Looking for this in Port Group name = 192.168.41.0
Feb 17, 2015 07:27:09 CST Content in Port Group Column = VM POD21
Feb 17, 2015 07:27:09 CST Looking for this in Port Group name = 192.168.41.0
Feb 17, 2015 07:27:09 CST Content in Port Group Column = VM POD14
Feb 17, 2015 07:27:09 CST Looking for this in Port Group name = 192.168.41.0
Feb 17, 2015 07:27:09 CST Content in Port Group Column = VM POD13
Feb 17, 2015 07:27:09 CST Looking for this in Port Group name = 192.168.41.0
Feb 17, 2015 07:27:09 CST Content in Port Group Column = VM POD12
Feb 17, 2015 07:27:09 CST Looking for this in Port Group name = 192.168.41.0
Feb 17, 2015 07:27:09 CST Content in Port Group Column = VMTestjeff
Feb 17, 2015 07:27:09 CST Looking for this in Port Group name = 192.168.41.0
Feb 17, 2015 07:27:09 CST Content in Port Group Column = VM POD11
Feb 17, 2015 07:27:09 CST Looking for this in Port Group name = 192.168.41.0
Feb 17, 2015 07:27:10 CST Content in Port Group Column = Production 192.168.43.0
Feb 17, 2015 07:27:10 CST Looking for this in Port Group name = 192.168.41.0
Feb 17, 2015 07:27:10 CST Content in Port Group Column = Production 192.168.41.0
Feb 17, 2015 07:27:10 CST Looking for this in Port Group name = 192.168.41.0
Feb 17, 2015 07:27:10 CST Found in Port Group for Main eth interface
Feb 17, 2015 07:27:10 CST Found in Port Group Column = Production 192.168.41.0
Feb 17, 2015 07:27:10 CST Found the Port Group name from given IP range = 192.168.41.0
Feb 17, 2015 07:27:10 CST Cloud Selector = Dallas
Feb 17, 2015 07:27:10 CST vSwitch Name = vSwitch0
Feb 17, 2015 07:27:10 CST Port Group Type = Virtual Machine Portgroup
Feb 17, 2015 07:27:10 CST PortGroupAssembly = Dallas@vSwitch0@Virtual Machine Portgroup@Production 192.168.41.0
Feb 17, 2015 07:27:10 CST Count = 3
Feb 17, 2015 07:27:10 CST Content in Port Group Column = Production 192.168.42.0
Feb 17, 2015 07:27:10 CST Looking for this in Port Group name = 192.168.41.0
Feb 17, 2015 07:27:10 CST Content in Port Group Column = Production 192.168.44.0
Feb 17, 2015 07:27:10 CST Looking for this in Port Group name = 192.168.41.0
Feb 17, 2015 07:27:10 CST Content in Port Group Column = VMProvision
Feb 17, 2015 07:27:10 CST Looking for this in Port Group name = 192.168.41.0
Feb 17, 2015 07:27:10 CST Content in Port Group Column = Production 192.168.40.0
Feb 17, 2015 07:27:10 CST Looking for this in Port Group name = 192.168.41.0
Feb 17, 2015 07:27:10 CST Content in Port Group Column = VM Network
Feb 17, 2015 07:27:10 CST Looking for this in Port Group name = 192.168.41.0
Feb 17, 2015 07:27:10 CST Content in Port Group Column = VMkernel
Feb 17, 2015 07:27:10 CST Looking for this in Port Group name = 192.168.41.0
Feb 17, 2015 07:27:10 CST Content in Port Group Column = Management Network
Feb 17, 2015 07:27:10 CST Looking for this in Port Group name = 192.168.41.0
Feb 17, 2015 07:27:10 CST Content in Port Group Column = Backup 192.168.70.0
Feb 17, 2015 07:27:10 CST Looking for this in Port Group name = 192.168.41.0
Feb 17, 2015 07:27:10 CST Content in Port Group Column = Production 192.168.45.64
Feb 17, 2015 07:27:10 CST Looking for this in Port Group name = 192.168.41.0
Feb 17, 2015 07:27:10 CST Content in Port Group Column = Production 192.168.45.128/28
Feb 17, 2015 07:27:10 CST Looking for this in Port Group name = 192.168.41.0
Feb 17, 2015 07:27:10 CST Content in Port Group Column = VMNetProjectSilver3
Feb 17, 2015 07:27:10 CST Looking for this in Port Group name = 192.168.41.0
Feb 17, 2015 07:27:10 CST Content in Port Group Column = VMNetProjectSilver2
Feb 17, 2015 07:27:10 CST Looking for this in Port Group name = 192.168.41.0
Feb 17, 2015 07:27:10 CST Content in Port Group Column = VMNetProjectSilver1
Feb 17, 2015 07:27:10 CST Looking for this in Port Group name = 192.168.41.0
Feb 17, 2015 07:27:10 CST Content in Port Group Column = VM POD44
Feb 17, 2015 07:27:10 CST Looking for this in Port Group name = 192.168.41.0
Feb 17, 2015 07:27:10 CST Content in Port Group Column = VMPOD43
Feb 17, 2015 07:27:10 CST Looking for this in Port Group name = 192.168.41.0
Feb 17, 2015 07:27:10 CST Content in Port Group Column = VM POD42
Feb 17, 2015 07:27:10 CST Looking for this in Port Group name = 192.168.41.0
Feb 17, 2015 07:27:10 CST Content in Port Group Column = VM POD41
Feb 17, 2015 07:27:10 CST Looking for this in Port Group name = 192.168.41.0
Feb 17, 2015 07:27:10 CST Content in Port Group Column = VM POD34
Feb 17, 2015 07:27:10 CST Looking for this in Port Group name = 192.168.41.0
Feb 17, 2015 07:27:10 CST Content in Port Group Column = VM POD33
Feb 17, 2015 07:27:10 CST Looking for this in Port Group name = 192.168.41.0
Feb 17, 2015 07:27:10 CST Content in Port Group Column = VM POD32
Feb 17, 2015 07:27:10 CST Looking for this in Port Group name = 192.168.41.0
Feb 17, 2015 07:27:10 CST Content in Port Group Column = VM POD31
Feb 17, 2015 07:27:10 CST Looking for this in Port Group name = 192.168.41.0
Feb 17, 2015 07:27:10 CST Content in Port Group Column = VM POD24
Feb 17, 2015 07:27:10 CST Looking for this in Port Group name = 192.168.41.0
Feb 17, 2015 07:27:10 CST Content in Port Group Column = VM POD23
Feb 17, 2015 07:27:10 CST Looking for this in Port Group name = 192.168.41.0
Feb 17, 2015 07:27:10 CST Content in Port Group Column = VM POD22
Feb 17, 2015 07:27:10 CST Looking for this in Port Group name = 192.168.41.0
Feb 17, 2015 07:27:10 CST Content in Port Group Column = VM POD21
Feb 17, 2015 07:27:10 CST Looking for this in Port Group name = 192.168.41.0
Feb 17, 2015 07:27:10 CST Content in Port Group Column = VM POD14
Feb 17, 2015 07:27:10 CST Looking for this in Port Group name = 192.168.41.0
Feb 17, 2015 07:27:10 CST Content in Port Group Column = VM POD13
Feb 17, 2015 07:27:10 CST Looking for this in Port Group name = 192.168.41.0
Feb 17, 2015 07:27:10 CST Content in Port Group Column = VM POD12
Feb 17, 2015 07:27:10 CST Looking for this in Port Group name = 192.168.41.0
Feb 17, 2015 07:27:10 CST Content in Port Group Column = VM POD11
Feb 17, 2015 07:27:10 CST Looking for this in Port Group name = 192.168.41.0
Feb 17, 2015 07:27:10 CST Content in Port Group Column = VMTestjeff
Feb 17, 2015 07:27:10 CST Looking for this in Port Group name = 192.168.41.0
Feb 17, 2015 07:27:10 CST vdcNetworkPolicyNameNumber = 23
Feb 17, 2015 07:27:10 CST -------------------change main network policy---------------------------------------
Feb 17, 2015 07:27:10 CST Request was Succcessful.
Feb 17, 2015 07:27:10 CST Response = <?xml version='1.0' encoding='UTF-8' standalone='yes'?><cuicOperationResponse><Log><Messages>3</Messages><Message><TimeStamp>2015-02-17 07:27:10.495</TimeStamp><Severity>INFO</Severity><Text>Selected Port Group: Dallas@vSwitch0@Virtual Machine Portgroup@Production 192.168.41.0</Text></Message><Message><TimeStamp>2015-02-17 07:27:10.495</TimeStamp><Severity>INFO</Severity><Text>IP Pool Policies: </Text></Message><Message><TimeStamp>2015-02-17 07:27:10.499</TimeStamp><Severity>INFO</Severity><Text>Modified port group in the network policy successfully.</Text></Message></Log><operationStatus>0</operationStatus><response><ModifyVDCNetworkPolicyResponse><VDC_ID>142</VDC_ID></ModifyVDCNetworkPolicyResponse></response><responseMap><entry><key>VDC_ID</key><value>142</value></entry></responseMap></cuicOperationResponse>
Feb 17, 2015 07:27:10 CST ret1 = <?xml version='1.0' encoding='UTF-8' standalone='yes'?><cuicOperationResponse><Log><Messages>3</Messages><Message><TimeStamp>2015-02-17 07:27:10.495</TimeStamp><Severity>INFO</Severity><Text>Selected Port Group: Dallas@vSwitch0@Virtual Machine Portgroup@Production 192.168.41.0</Text></Message><Message><TimeStamp>2015-02-17 07:27:10.495</TimeStamp><Severity>INFO</Severity><Text>IP Pool Policies: </Text></Message><Message><TimeStamp>2015-02-17 07:27:10.499</TimeStamp><Severity>INFO</Severity><Text>Modified port group in the network policy successfully.</Text></Message></Log><operationStatus>0</operationStatus><response><ModifyVDCNetworkPolicyResponse><VDC_ID>142</VDC_ID></ModifyVDCNetworkPolicyResponse></response><responseMap><entry><key>VDC_ID</key><value>142</value></entry></responseMap></cuicOperationResponse>
Feb 17, 2015 07:27:10 CST -------------------change main network policy done---------------------------------
Feb 17, 2015 07:27:10 CST Backup network Flag (1 = add network interface) = 0
Feb 17, 2015 07:27:10 CST -------------------Clone VDC from Template---------------------------------------
Feb 17, 2015 07:27:10 CST Before NewVDCIDFromCLone0
Feb 17, 2015 07:27:10 CST Request was Succcessful.
Feb 17, 2015 07:27:10 CST Response = <?xml version='1.0' encoding='UTF-8' standalone='yes'?><cuicOperationResponse><Log><Messages>4</Messages><Message><TimeStamp>2015-02-17 07:27:10.618</TimeStamp><Severity>INFO</Severity><Text>Cloning The vDC Profile Verizon_VDC_Template</Text></Message><Message><TimeStamp>2015-02-17 07:27:10.732</TimeStamp><Severity>INFO</Severity><Text>The vDC VDC_CULPEPER4275 created successfully with id 201</Text></Message><Message><TimeStamp>2015-02-17 07:27:10.732</TimeStamp><Severity>INFO</Severity><Text>The computation policy host scope list are: 172.17.32.111@Dallas,172.17.32.113@Dallas,172.17.32.112@Dallas</Text></Message><Message><TimeStamp>2015-02-17 07:27:10.732</TimeStamp><Severity>INFO</Severity><Text>The computation policy cluster scope list are: Dallas Cluster1@Dallas</Text></Message></Log><operationStatus>0</operationStatus><response><VDCConfigResponse><VDC_ID>201</VDC_ID><VDC_CLOUD_NAME>Dallas</VDC_CLOUD_NAME><VDC_SYSTEM_POLICY>VDC_CULPEPER4275_System Policy</VDC_SYSTEM_POLICY><VDC_STORAGE_POLICY>
Feb 17, 2015 07:27:10 CST ret10 = <?xml version='1.0' encoding='UTF-8' standalone='yes'?><cuicOperationResponse><Log><Messages>4</Messages><Message><TimeStamp>2015-02-17 07:27:10.618</TimeStamp><Severity>INFO</Severity><Text>Cloning The vDC Profile Verizon_VDC_Template</Text></Message><Message><TimeStamp>2015-02-17 07:27:10.732</TimeStamp><Severity>INFO</Severity><Text>The vDC VDC_CULPEPER4275 created successfully with id 201</Text></Message><Message><TimeStamp>2015-02-17 07:27:10.732</TimeStamp><Severity>INFO</Severity><Text>The computation policy host scope list are: 172.17.32.111@Dallas,172.17.32.113@Dallas,172.17.32.112@Dallas</Text></Message><Message><TimeStamp>2015-02-17 07:27:10.732</TimeStamp><Severity>INFO</Severity><Text>The computation policy cluster scope list are: Dallas Cluster1@Dallas</Text></Message></Log><operationStatus>0</operationStatus><response><VDCConfigResponse><VDC_ID>201</VDC_ID><VDC_CLOUD_NAME>Dallas</VDC_CLOUD_NAME><VDC_SYSTEM_POLICY>VDC_CULPEPER4275_System Policy</VDC_SYSTEM_POLICY><VDC_STORAGE_POLICY>VDC
Feb 17, 2015 07:27:10 CST New VDC Id : 201
Feb 17, 2015 07:27:10 CST Afger NewVDCIDFromCLone201
Feb 17, 2015 07:27:10 CST After Function call .....NewVDCIDFromCLone = 201
Feb 17, 2015 07:27:10 CST --------------------Temp VDC info--------------------------------------
Feb 17, 2015 07:27:10 CST VDC Template Number Clone = 201
Feb 17, 2015 07:27:10 CST VDC Template Name Clone = VDC_CULPEPER4275
Feb 17, 2015 07:27:10 CST VDC Template vdcTempNetworkPolicyName Name Clone = VDC_CULPEPER4275_Network Policy
Feb 17, 2015 07:27:10 CST VDC Template vdcTempComputingPolicyName Name Clone= VDC_CULPEPER4275_Computing Policy
Feb 17, 2015 07:27:10 CST VDC Template vdcTempStoragePolicyName Name Clone = VDC_CULPEPER4275_Storage Policy
Feb 17, 2015 07:27:10 CST VDC Template vdcTempPrimaryDeployPolicyName Name Clone = VDC_CULPEPER4275_System Policy
Feb 17, 2015 07:27:10 CST -------------------Clone VDC from Template Done---------------------------------------
Feb 17, 2015 07:27:10 CST What is my new VDC number = 201
Feb 17, 2015 07:27:10 CST What is my Origional VDC number = VDC_CULPEPER
Feb 17, 2015 07:27:10 CST What is my new VDC name = VDC_CULPEPER4275
Feb 17, 2015 07:27:10 CST -------------------Provsion VM---------------------------------
Feb 17, 2015 07:27:19 CST childSrId= 4276
Feb 17, 2015 07:27:19 CST -------------------Provsion VM Executing in Child Workflow---------------------------------
Feb 17, 2015 07:27:19 CST -------------------Waiting for Child Workflow to Finish---------------------------------
The same workflow as a script module:
The latest addition of the workflow works with the VMWARE distributed switch (Thank you Jordan Glamann):
Hi Orf
Great work! But seriously... we do need to clone a temporary VDC just to get our custom IP configured on a VM? This has to change and become easier..
Regards
Since UCSD is policy driven I am forced to update/create a policy for one IP address.
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: