Search in sources :

Example 76 with InternalErrorException

use of com.cloud.exception.InternalErrorException in project cloudstack by apache.

the class FloatingIpModel method update.

@Override
public void update(ModelController controller) throws InternalErrorException, IOException {
    assert _initialized;
    ApiConnector api = controller.getApiAccessor();
    ContrailManager manager = controller.getManager();
    FloatingIp fip = _fip;
    if (_fip == null) {
        _fip = fip = (FloatingIp) controller.getApiAccessor().findById(FloatingIp.class, _uuid);
        if (fip == null) {
            fip = new FloatingIp();
            fip.setUuid(_uuid);
            fip.setAddress(_addr);
            fip.setName(_name);
            fip.setParent(_fipPoolModel.getFloatingIpPool());
        }
    }
    IPAddressVO ipAddrVO = controller.getIPAddressDao().findById(_id);
    assert ipAddrVO != null : "can not find address object in db";
    Long vmId = ipAddrVO.getAssociatedWithVmId();
    Long networkId = ipAddrVO.getAssociatedWithNetworkId();
    if (vmId == null || networkId == null) {
        s_logger.debug("Floating ip is not yet associated to either vm or network");
        return;
    }
    NicVO nic = controller.getNicDao().findByNtwkIdAndInstanceId(networkId, vmId);
    assert nic != null : "can not find nic for the given network and vm in db";
    VMInstanceVO vm = controller.getVmDao().findById(vmId);
    assert vm != null : "can not find vm in db";
    VirtualMachineModel vmModel = manager.getDatabase().lookupVirtualMachine(vm.getUuid());
    assert vmModel != null : "can not find vm model";
    VMInterfaceModel vmiModel = vmModel.getVMInterface(nic.getUuid());
    assert vmiModel != null && vmiModel.getVMInterface() != null : "can not find virtual machine interface";
    fip.setVirtualMachineInterface(vmiModel.getVMInterface());
    if (_fip == null) {
        try {
            api.create(fip);
        } catch (Exception ex) {
            s_logger.debug("floating ip create", ex);
            throw new CloudRuntimeException("Failed to create floating ip", ex);
        }
        _fip = fip;
    } else {
        try {
            api.update(fip);
        } catch (IOException ex) {
            s_logger.warn("floating ip update", ex);
            throw new CloudRuntimeException("Unable to update floating ip object", ex);
        }
    }
    addToVMInterface(vmiModel);
    for (ModelObject successor : successors()) {
        successor.update(controller);
    }
}
Also used : ApiConnector(net.juniper.contrail.api.ApiConnector) ContrailManager(org.apache.cloudstack.network.contrail.management.ContrailManager) VMInstanceVO(com.cloud.vm.VMInstanceVO) IOException(java.io.IOException) FloatingIp(net.juniper.contrail.api.types.FloatingIp) CloudRuntimeException(com.cloud.utils.exception.CloudRuntimeException) InternalErrorException(com.cloud.exception.InternalErrorException) IOException(java.io.IOException) CloudRuntimeException(com.cloud.utils.exception.CloudRuntimeException) IPAddressVO(com.cloud.network.dao.IPAddressVO) NicVO(com.cloud.vm.NicVO)

Example 77 with InternalErrorException

use of com.cloud.exception.InternalErrorException in project cloudstack by apache.

the class VMInterfaceModel method update.

@Override
public void update(ModelController controller) throws InternalErrorException, IOException {
    if (!_netActive || !_nicActive) {
        s_logger.debug("vm interface update, _netActive: " + _netActive + ", _nicActive: " + _nicActive);
        delete(controller);
        return;
    }
    if (_vmModel == null) {
        throw new InternalErrorException("virtual-machine not set on VMI: " + _uuid);
    }
    if (_vnModel == null) {
        throw new InternalErrorException("virtual-network not set on VMI: " + _uuid);
    }
    ContrailManager manager = controller.getManager();
    ApiConnector api = controller.getApiAccessor();
    VirtualMachineInterface vmi = (VirtualMachineInterface) api.findById(VirtualMachineInterface.class, _uuid);
    boolean create = false;
    if (vmi == null) {
        create = true;
        vmi = new VirtualMachineInterface();
        vmi.setParent(_vmModel.getVirtualMachine());
        vmi.setName(manager.getVifNameByVmName(_vmModel.getInstanceName(), _deviceId));
        vmi.setUuid(_uuid);
        vmi.setVirtualNetwork(_vnModel.getVirtualNetwork());
    } else {
        // Do not try to update VMI to routing-instance references. These are managed by schema-transformer.
        vmi.clearRoutingInstance();
    }
    _vmi = vmi;
    if (_macAddress != null) {
        MacAddressesType mac = new MacAddressesType();
        mac.addMacAddress(_macAddress);
        vmi.setMacAddresses(mac);
    }
    if (_serviceTag != null) {
        vmi.setProperties(new VirtualMachineInterfacePropertiesType(_serviceTag, null));
    }
    if (create) {
        if (!api.create(vmi)) {
            throw new InternalErrorException("Unable to create virtual-machine-interface " + _uuid);
        }
    } else {
        if (!api.update(vmi)) {
            throw new InternalErrorException("Unable to update virtual-machine-interface " + _uuid);
        }
    }
    api.read(vmi);
    int ipCount = 0;
    for (ModelObject successor : successors()) {
        if (successor.getClass() == InstanceIpModel.class) {
            ipCount++;
        }
        successor.update(controller);
    }
    // delete the object.
    if (ipCount == 0) {
        s_logger.warn("virtual-machine-interface " + _uuid + " has no instance-ip");
    }
}
Also used : VirtualMachineInterface(net.juniper.contrail.api.types.VirtualMachineInterface) ApiConnector(net.juniper.contrail.api.ApiConnector) MacAddressesType(net.juniper.contrail.api.types.MacAddressesType) ContrailManager(org.apache.cloudstack.network.contrail.management.ContrailManager) InternalErrorException(com.cloud.exception.InternalErrorException) VirtualMachineInterfacePropertiesType(net.juniper.contrail.api.types.VirtualMachineInterfacePropertiesType)

Example 78 with InternalErrorException

use of com.cloud.exception.InternalErrorException in project cloudstack by apache.

the class FloatingIpPoolModel method update.

@Override
public void update(ModelController controller) throws InternalErrorException, IOException {
    assert _vnModel != null : "vn model is not set";
    ApiConnector api = controller.getApiAccessor();
    ContrailManager manager = controller.getManager();
    FloatingIpPool fipPool = _fipPool;
    if (fipPool == null) {
        String fipPoolName = manager.getDefaultPublicNetworkFQN() + ":PublicIpPool";
        _fipPool = fipPool = (FloatingIpPool) controller.getApiAccessor().findByFQN(FloatingIpPool.class, fipPoolName);
        if (fipPool == null) {
            fipPool = new FloatingIpPool();
            fipPool.setName(_name);
            fipPool.setParent(_vnModel.getVirtualNetwork());
        }
    }
    if (_fipPool == null) {
        try {
            api.create(fipPool);
        } catch (Exception ex) {
            s_logger.debug("floating ip pool create", ex);
            throw new CloudRuntimeException("Failed to create floating ip pool", ex);
        }
        _fipPool = fipPool;
    } else {
        try {
            api.update(fipPool);
        } catch (IOException ex) {
            s_logger.warn("floating ip pool update", ex);
            throw new CloudRuntimeException("Unable to update floating ip ppol object", ex);
        }
    }
    for (ModelObject successor : successors()) {
        successor.update(controller);
    }
}
Also used : FloatingIpPool(net.juniper.contrail.api.types.FloatingIpPool) CloudRuntimeException(com.cloud.utils.exception.CloudRuntimeException) ApiConnector(net.juniper.contrail.api.ApiConnector) ContrailManager(org.apache.cloudstack.network.contrail.management.ContrailManager) IOException(java.io.IOException) CloudRuntimeException(com.cloud.utils.exception.CloudRuntimeException) InternalErrorException(com.cloud.exception.InternalErrorException) IOException(java.io.IOException)

Example 79 with InternalErrorException

use of com.cloud.exception.InternalErrorException in project cloudstack by apache.

the class InstanceIpModel method update.

@Override
public void update(ModelController controller) throws InternalErrorException, IOException {
    assert _vmiModel != null;
    ApiConnector api = controller.getApiAccessor();
    VirtualNetworkModel vnModel = _vmiModel.getVirtualNetworkModel();
    assert vnModel != null;
    VirtualMachineInterface vmi = _vmiModel.getVMInterface();
    VirtualNetwork vnet = vnModel.getVirtualNetwork();
    if (vnet == null) {
        vnet = (VirtualNetwork) api.findById(VirtualNetwork.class, _vmiModel.getNetworkUuid());
    }
    String ipid = api.findByName(InstanceIp.class, null, _name);
    if (ipid == null) {
        InstanceIp ip_obj = new InstanceIp();
        ip_obj.setName(_name);
        ip_obj.setVirtualNetwork(vnet);
        if (_ipAddress != null) {
            ip_obj.setAddress(_ipAddress);
        }
        ip_obj.setVirtualMachineInterface(vmi);
        if (!api.create(ip_obj)) {
            throw new InternalErrorException("Unable to create instance-ip " + _name);
        }
        api.read(ip_obj);
        _uuid = ip_obj.getUuid();
        if (_ipAddress == null) {
            if (!api.read(ip_obj)) {
                throw new InternalErrorException("Unable to read instance-ip " + _name);
            }
        }
        _ipAddress = ip_obj.getAddress();
    } else {
        // Ensure that the instance-ip has the correct value and is pointing at the VMI.
        InstanceIp ip_obj = (InstanceIp) api.findById(InstanceIp.class, ipid);
        if (ip_obj == null) {
            throw new InternalErrorException("Unable to read instance-ip " + _name);
        }
        boolean update = false;
        String ipnet_id = ObjectReference.getReferenceListUuid(ip_obj.getVirtualNetwork());
        if (ipnet_id == null || !ipnet_id.equals(_vmiModel.getNetworkUuid())) {
            ip_obj.setVirtualNetwork(vnet);
            update = true;
        }
        if (_ipAddress != null && !ip_obj.getAddress().equals(_ipAddress)) {
            ip_obj.setAddress(_ipAddress);
            update = true;
        }
        String vmi_id = ObjectReference.getReferenceListUuid(ip_obj.getVirtualMachineInterface());
        if (vmi_id == null || !vmi_id.equals(_vmiModel.getUuid())) {
            if (vmi != null) {
                ip_obj.setVirtualMachineInterface(vmi);
                update = true;
            }
        }
        if (update && !api.update(ip_obj)) {
            throw new InternalErrorException("Unable to update instance-ip: " + ip_obj.getName());
        }
        api.read(ip_obj);
        _uuid = ip_obj.getUuid();
        _ipAddress = ip_obj.getAddress();
    }
}
Also used : VirtualNetwork(net.juniper.contrail.api.types.VirtualNetwork) VirtualMachineInterface(net.juniper.contrail.api.types.VirtualMachineInterface) ApiConnector(net.juniper.contrail.api.ApiConnector) InstanceIp(net.juniper.contrail.api.types.InstanceIp) InternalErrorException(com.cloud.exception.InternalErrorException)

Example 80 with InternalErrorException

use of com.cloud.exception.InternalErrorException in project cloudstack by apache.

the class NetworkPolicyModel method update.

@Override
public void update(ModelController controller) throws InternalErrorException, IOException {
    ApiConnector api = controller.getApiAccessor();
    if (_project == null) {
        s_logger.debug("Project is null for the policy: " + _name);
        throw new IOException("Project is null for the policy: " + _name);
    }
    NetworkPolicy policy = _policy;
    if (policy == null) {
        try {
            String policyId = api.findByName(NetworkPolicy.class, _project, _name);
            if (policyId != null) {
                policy = _policy = (NetworkPolicy) api.findById(NetworkPolicy.class, policyId);
            }
            if (policy == null) {
                policy = new NetworkPolicy();
                policy.setUuid(_uuid);
                policy.setName(_name);
                policy.setParent(_project);
            }
        } catch (IOException ex) {
            s_logger.warn("network-policy read", ex);
            return;
        }
    }
    policy.setEntries(_policyMap);
    if (_policy == null) {
        try {
            api.create(policy);
        } catch (Exception ex) {
            s_logger.debug("network policy create", ex);
            throw new CloudRuntimeException("Failed to create network policy", ex);
        }
        _policy = policy;
    } else {
        try {
            api.update(policy);
        } catch (IOException ex) {
            s_logger.warn("network policy update", ex);
            throw new CloudRuntimeException("Unable to update network policy", ex);
        }
    }
    for (ModelObject successor : successors()) {
        successor.update(controller);
    }
}
Also used : NetworkPolicy(net.juniper.contrail.api.types.NetworkPolicy) CloudRuntimeException(com.cloud.utils.exception.CloudRuntimeException) ApiConnector(net.juniper.contrail.api.ApiConnector) IOException(java.io.IOException) InternalErrorException(com.cloud.exception.InternalErrorException) IOException(java.io.IOException) CloudRuntimeException(com.cloud.utils.exception.CloudRuntimeException)

Aggregations

InternalErrorException (com.cloud.exception.InternalErrorException)86 IOException (java.io.IOException)28 LibvirtException (org.libvirt.LibvirtException)27 CloudRuntimeException (com.cloud.utils.exception.CloudRuntimeException)25 Connect (org.libvirt.Connect)23 URISyntaxException (java.net.URISyntaxException)21 ConfigurationException (javax.naming.ConfigurationException)21 Answer (com.cloud.agent.api.Answer)17 AttachAnswer (org.apache.cloudstack.storage.command.AttachAnswer)16 NicTO (com.cloud.agent.api.to.NicTO)15 URI (java.net.URI)15 KVMStoragePoolManager (com.cloud.hypervisor.kvm.storage.KVMStoragePoolManager)14 Script (com.cloud.utils.script.Script)14 Test (org.junit.Test)14 CheckRouterAnswer (com.cloud.agent.api.CheckRouterAnswer)12 LibvirtRequestWrapper (com.cloud.hypervisor.kvm.resource.wrapper.LibvirtRequestWrapper)12 LibvirtUtilitiesHelper (com.cloud.hypervisor.kvm.resource.wrapper.LibvirtUtilitiesHelper)12 PrimaryDataStoreTO (org.apache.cloudstack.storage.to.PrimaryDataStoreTO)12 Processor (com.cloud.storage.template.Processor)11 TemplateLocation (com.cloud.storage.template.TemplateLocation)11