Search in sources :

Example 11 with LongPolicy

use of com.vmware.vim25.LongPolicy in project cloudstack by apache.

the class HypervisorHostHelper method isSpecMatch.

public static boolean isSpecMatch(DVPortgroupConfigInfo currentDvPortgroupInfo, DVPortgroupConfigSpec newDvPortGroupSpec) {
    String dvPortGroupName = newDvPortGroupSpec.getName();
    s_logger.debug("Checking if configuration of dvPortGroup [" + dvPortGroupName + "] has changed.");
    boolean specMatches = true;
    DVSTrafficShapingPolicy currentTrafficShapingPolicy;
    currentTrafficShapingPolicy = currentDvPortgroupInfo.getDefaultPortConfig().getInShapingPolicy();
    assert (currentTrafficShapingPolicy != null);
    LongPolicy oldAverageBandwidthPolicy = currentTrafficShapingPolicy.getAverageBandwidth();
    LongPolicy oldBurstSizePolicy = currentTrafficShapingPolicy.getBurstSize();
    LongPolicy oldPeakBandwidthPolicy = currentTrafficShapingPolicy.getPeakBandwidth();
    BoolPolicy oldIsEnabledPolicy = currentTrafficShapingPolicy.getEnabled();
    Long oldAverageBandwidth = null;
    Long oldBurstSize = null;
    Long oldPeakBandwidth = null;
    Boolean oldIsEnabled = null;
    if (oldAverageBandwidthPolicy != null) {
        oldAverageBandwidth = oldAverageBandwidthPolicy.getValue();
    }
    if (oldBurstSizePolicy != null) {
        oldBurstSize = oldBurstSizePolicy.getValue();
    }
    if (oldPeakBandwidthPolicy != null) {
        oldPeakBandwidth = oldPeakBandwidthPolicy.getValue();
    }
    if (oldIsEnabledPolicy != null) {
        oldIsEnabled = oldIsEnabledPolicy.isValue();
    }
    DVSTrafficShapingPolicy newTrafficShapingPolicyInbound = newDvPortGroupSpec.getDefaultPortConfig().getInShapingPolicy();
    LongPolicy newAverageBandwidthPolicy = newTrafficShapingPolicyInbound.getAverageBandwidth();
    LongPolicy newBurstSizePolicy = newTrafficShapingPolicyInbound.getBurstSize();
    LongPolicy newPeakBandwidthPolicy = newTrafficShapingPolicyInbound.getPeakBandwidth();
    BoolPolicy newIsEnabledPolicy = newTrafficShapingPolicyInbound.getEnabled();
    Long newAverageBandwidth = null;
    Long newBurstSize = null;
    Long newPeakBandwidth = null;
    Boolean newIsEnabled = null;
    if (newAverageBandwidthPolicy != null) {
        newAverageBandwidth = newAverageBandwidthPolicy.getValue();
    }
    if (newBurstSizePolicy != null) {
        newBurstSize = newBurstSizePolicy.getValue();
    }
    if (newPeakBandwidthPolicy != null) {
        newPeakBandwidth = newPeakBandwidthPolicy.getValue();
    }
    if (newIsEnabledPolicy != null) {
        newIsEnabled = newIsEnabledPolicy.isValue();
    }
    if (!oldIsEnabled.equals(newIsEnabled)) {
        s_logger.info("Detected change in state of shaping policy (enabled/disabled) [" + newIsEnabled + "]");
        specMatches = false;
    }
    if (oldIsEnabled || newIsEnabled) {
        if (oldAverageBandwidth != null && !oldAverageBandwidth.equals(newAverageBandwidth)) {
            s_logger.info("Average bandwidth setting in new shaping policy doesn't match the existing setting.");
            specMatches = false;
        } else if (oldBurstSize != null && !oldBurstSize.equals(newBurstSize)) {
            s_logger.info("Burst size setting in new shaping policy doesn't match the existing setting.");
            specMatches = false;
        } else if (oldPeakBandwidth != null && !oldPeakBandwidth.equals(newPeakBandwidth)) {
            s_logger.info("Peak bandwidth setting in new shaping policy doesn't match the existing setting.");
            specMatches = false;
        }
    }
    boolean oldAutoExpandSetting = currentDvPortgroupInfo.isAutoExpand();
    boolean autoExpandEnabled = newDvPortGroupSpec.isAutoExpand();
    if (oldAutoExpandSetting != autoExpandEnabled) {
        specMatches = false;
    }
    if (!autoExpandEnabled) {
        // Allow update of number of dvports per dvPortGroup is auto expand is not enabled.
        int oldNumPorts = currentDvPortgroupInfo.getNumPorts();
        int newNumPorts = newDvPortGroupSpec.getNumPorts();
        if (oldNumPorts < newNumPorts) {
            s_logger.info("Need to update the number of dvports for dvPortGroup :[" + dvPortGroupName + "] from existing number of dvports " + oldNumPorts + " to " + newNumPorts);
            specMatches = false;
        } else if (oldNumPorts > newNumPorts) {
            s_logger.warn("Detected that new number of dvports [" + newNumPorts + "] in dvPortGroup [" + dvPortGroupName + "] is less than existing number of dvports [" + oldNumPorts + "]. Attempt to update this dvPortGroup may fail!");
            specMatches = false;
        }
    }
    VmwareDistributedVirtualSwitchVlanIdSpec oldVlanSpec = (VmwareDistributedVirtualSwitchVlanIdSpec) ((VMwareDVSPortSetting) currentDvPortgroupInfo.getDefaultPortConfig()).getVlan();
    VmwareDistributedVirtualSwitchVlanIdSpec newVlanSpec = (VmwareDistributedVirtualSwitchVlanIdSpec) ((VMwareDVSPortSetting) newDvPortGroupSpec.getDefaultPortConfig()).getVlan();
    int oldVlanId = oldVlanSpec.getVlanId();
    int newVlanId = newVlanSpec.getVlanId();
    if (oldVlanId != newVlanId) {
        s_logger.info("Detected that new VLAN [" + newVlanId + "] of dvPortGroup [" + dvPortGroupName + "] is different from current VLAN [" + oldVlanId + "]");
        specMatches = false;
    }
    return specMatches;
}
Also used : LongPolicy(com.vmware.vim25.LongPolicy) DVSTrafficShapingPolicy(com.vmware.vim25.DVSTrafficShapingPolicy) BoolPolicy(com.vmware.vim25.BoolPolicy) VmwareDistributedVirtualSwitchVlanIdSpec(com.vmware.vim25.VmwareDistributedVirtualSwitchVlanIdSpec)

Aggregations

BoolPolicy (com.vmware.vim25.BoolPolicy)10 DVSTrafficShapingPolicy (com.vmware.vim25.DVSTrafficShapingPolicy)10 LongPolicy (com.vmware.vim25.LongPolicy)10 VmwareDistributedVirtualSwitchVlanIdSpec (com.vmware.vim25.VmwareDistributedVirtualSwitchVlanIdSpec)7 VMwareDVSPortSetting (com.vmware.vim25.VMwareDVSPortSetting)6 Test (org.junit.Test)6 VmwareContext (com.cloud.hypervisor.vmware.util.VmwareContext)1 Pair (com.cloud.utils.Pair)1 CloudRuntimeException (com.cloud.utils.exception.CloudRuntimeException)1 DVPortgroupConfigInfo (com.vmware.vim25.DVPortgroupConfigInfo)1 ManagedObjectReference (com.vmware.vim25.ManagedObjectReference)1 URISyntaxException (java.net.URISyntaxException)1