Java Code Examples for com.vmware.vim25.ObjectUpdate#getChangeSet()
The following examples show how to use
com.vmware.vim25.ObjectUpdate#getChangeSet() .
You can vote up the ones you like or vote down the ones you don't like,
and go to the original project or source file by following the links above each example. You may check out the related API usage on the sidebar.
Example 1
Source File: WaitForValues.java From vsphere-automation-sdk-java with MIT License | 4 votes |
/** * Handle Updates for a single object. waits till expected values of * properties to check are reached Destroys the ObjectFilter when done. * * @param objmor * MOR of the Object to wait for</param> * @param filterProps * Properties list to filter * @param endWaitProps * Properties list to check for expected values these be * properties of a property in the filter properties list * @param expectedVals * values for properties to end the wait * @return true indicating expected values were met, and false otherwise * @throws RuntimeFaultFaultMsg * @throws InvalidPropertyFaultMsg * @throws InvalidCollectorVersionFaultMsg * */ public Object[] wait(ManagedObjectReference objmor, String[] filterProps, String[] endWaitProps, Object[][] expectedVals) throws InvalidPropertyFaultMsg, RuntimeFaultFaultMsg, InvalidCollectorVersionFaultMsg { // version string is initially null String version = ""; Object[] endVals = new Object[endWaitProps.length]; Object[] filterVals = new Object[filterProps.length]; PropertyFilterSpec spec = propertyFilterSpec(objmor, filterProps); ManagedObjectReference filterSpecRef = vimPort.createFilter( serviceContent.getPropertyCollector(), spec, true); boolean reached = false; UpdateSet updateset = null; List<PropertyFilterUpdate> filtupary = null; List<ObjectUpdate> objupary = null; List<PropertyChange> propchgary = null; while (!reached) { updateset = vimPort.waitForUpdatesEx( serviceContent.getPropertyCollector(), version, new WaitOptions()); if (updateset == null || updateset.getFilterSet() == null) { continue; } version = updateset.getVersion(); // Make this code more general purpose when PropCol changes later. filtupary = updateset.getFilterSet(); for (PropertyFilterUpdate filtup : filtupary) { objupary = filtup.getObjectSet(); for (ObjectUpdate objup : objupary) { // TODO: Handle all "kind"s of updates. if (objup.getKind() == ObjectUpdateKind.MODIFY || objup.getKind() == ObjectUpdateKind.ENTER || objup.getKind() == ObjectUpdateKind.LEAVE) { propchgary = objup.getChangeSet(); for (PropertyChange propchg : propchgary) { updateValues(endWaitProps, endVals, propchg); updateValues(filterProps, filterVals, propchg); } } } } Object expctdval = null; // Check if the expected values have been reached and exit the loop // if done. // Also exit the WaitForUpdates loop if this is the case. for (int chgi = 0; chgi < endVals.length && !reached; chgi++) { for (int vali = 0; vali < expectedVals[chgi].length && !reached; vali++) { expctdval = expectedVals[chgi][vali]; reached = expctdval.equals(endVals[chgi]) || reached; } } } // Destroy the filter when we are done. vimPort.destroyPropertyFilter(filterSpecRef); return filterVals; }
Example 2
Source File: WaitForValues.java From cs-actions with Apache License 2.0 | 4 votes |
/** * Handle Updates for a single object. waits till expected values of * properties to check are reached Destroys the ObjectFilter when done. * * @param objMor MOR of the Object to wait for param * @param filterProps Properties list to filter * @param endWaitProps Properties list to check for expected values these be properties * of a property in the filter properties list * @param expectedValues values for properties to end the wait * @return true indicating expected values were met, and false otherwise * @throws RuntimeFaultFaultMsg * @throws InvalidPropertyFaultMsg * @throws InvalidCollectorVersionFaultMsg */ public Object[] wait(ManagedObjectReference objMor, String[] filterProps, String[] endWaitProps, Object[][] expectedValues) throws InvalidPropertyFaultMsg, RuntimeFaultFaultMsg, InvalidCollectorVersionFaultMsg { String version = Constants.EMPTY; String stateVal = null; Object[] endValues = new Object[endWaitProps.length]; Object[] filterValues = new Object[filterProps.length]; PropertyFilterSpec spec = propertyFilterSpec(objMor, filterProps); ManagedObjectReference filterSpecRef = vimPort.createFilter(serviceContent.getPropertyCollector(), spec, true); boolean reached = false; UpdateSet updateset; while (!reached) { updateset = vimPort.waitForUpdatesEx(serviceContent.getPropertyCollector(), version, new WaitOptions()); int waitForUpdateCounter = 0; if (updateset == null || updateset.getFilterSet() == null) { waitForUpdateCounter++; if (waitForUpdateCounter <= MAX_TRIED_WAIT_FOR_UPDATE_COUNTER) { continue; } break; } version = updateset.getVersion(); for (PropertyFilterUpdate filtup : updateset.getFilterSet()) { for (ObjectUpdate objup : filtup.getObjectSet()) { if (objup.getKind() == ObjectUpdateKind.MODIFY || objup.getKind() == ObjectUpdateKind.ENTER || objup.getKind() == ObjectUpdateKind.LEAVE) { for (PropertyChange propchg : objup.getChangeSet()) { updateValues(endWaitProps, endValues, propchg); updateValues(filterProps, filterValues, propchg); } } } } // Check if the expected values have been reached and exit the loop if done. // Also exit the WaitForUpdates loop if this is the case. for (int chgi = 0; chgi < endValues.length && !reached; chgi++) { for (int vali = 0; vali < expectedValues[chgi].length && !reached; vali++) { Object expctdval = expectedValues[chgi][vali]; if (endValues[chgi].toString().contains(KEY_VALUE_NULL_STRING)) { Element stateElement = (Element) endValues[chgi]; if (stateElement != null && stateElement.getFirstChild() != null) { stateVal = stateElement.getFirstChild().getTextContent(); reached = expctdval.toString().equalsIgnoreCase(stateVal); } } else { expctdval = expectedValues[chgi][vali]; reached = expctdval.equals(endValues[chgi]); stateVal = FILTER_VALUES; } } } } try { vimPort.destroyPropertyFilter(filterSpecRef); } catch (RuntimeFaultFaultMsg e) { throw new RuntimeException(e.getMessage()); } return getObjectState(stateVal, filterValues); }
Example 3
Source File: VMwareUtil.java From cloudstack with Apache License 2.0 | 4 votes |
private static Object[] waitForValues(VMwareConnection connection, ManagedObjectReference morObj, String[] filterProps, String[] endWaitProps, Object[][] expectedVals) throws InvalidPropertyFaultMsg, RuntimeFaultFaultMsg, InvalidCollectorVersionFaultMsg { String version = ""; Object[] endVals = new Object[endWaitProps.length]; Object[] filterVals = new Object[filterProps.length]; PropertyFilterSpec spec = new PropertyFilterSpec(); ObjectSpec oSpec = new ObjectSpec(); oSpec.setObj(morObj); oSpec.setSkip(Boolean.FALSE); spec.getObjectSet().add(oSpec); PropertySpec pSpec = new PropertySpec(); pSpec.getPathSet().addAll(Arrays.asList(filterProps)); pSpec.setType(morObj.getType()); spec.getPropSet().add(pSpec); ManagedObjectReference propertyCollector = connection.getServiceContent().getPropertyCollector(); ManagedObjectReference filterSpecRef = connection.getVimPortType().createFilter(propertyCollector, spec, true); boolean reached = false; UpdateSet updateSet; List<PropertyFilterUpdate> lstPropertyFilterUpdates; List<ObjectUpdate> lstObjectUpdates; List<PropertyChange> lstPropertyChanges; while (!reached) { updateSet = connection.getVimPortType().waitForUpdates(propertyCollector, version); if (updateSet == null || updateSet.getFilterSet() == null) { continue; } version = updateSet.getVersion(); lstPropertyFilterUpdates = updateSet.getFilterSet(); for (PropertyFilterUpdate propertyFilterUpdate : lstPropertyFilterUpdates) { lstObjectUpdates = propertyFilterUpdate.getObjectSet(); for (ObjectUpdate objUpdate : lstObjectUpdates) { if (objUpdate.getKind() == ObjectUpdateKind.MODIFY || objUpdate.getKind() == ObjectUpdateKind.ENTER || objUpdate.getKind() == ObjectUpdateKind.LEAVE) { lstPropertyChanges = objUpdate.getChangeSet(); for (PropertyChange propchg : lstPropertyChanges) { updateValues(endWaitProps, endVals, propchg); updateValues(filterProps, filterVals, propchg); } } } } Object expectedValue; // Check if the expected values have been reached and exit the loop if done. // Also, exit the WaitForUpdates loop if this is the case. for (int chgi = 0; chgi < endVals.length && !reached; chgi++) { for (int vali = 0; vali < expectedVals[chgi].length && !reached; vali++) { expectedValue = expectedVals[chgi][vali]; reached = expectedValue.equals(endVals[chgi]) || reached; } } } // Destroy the filter when we are done. connection.getVimPortType().destroyPropertyFilter(filterSpecRef); return filterVals; }