Search in sources :

Example 1 with FloatingIpPoolModel

use of org.apache.cloudstack.network.contrail.model.FloatingIpPoolModel in project cloudstack by apache.

the class ServerDBSyncImpl method equalFloatingIp.

public Boolean equalFloatingIp(IPAddressVO db, FloatingIp vnc, StringBuffer syncLogMsg) throws IOException {
    syncLogMsg.append("fip# DB: " + db.getAddress().addr() + "; VNC: " + vnc.getAddress() + "; action: equal" + "\n");
    VirtualNetworkModel vnModel = _manager.lookupPublicNetworkModel();
    assert vnModel != null : "public network vn model is null";
    FloatingIpPoolModel fipPoolModel = vnModel.getFipPoolModel();
    if (fipPoolModel == null) {
        fipPoolModel = new FloatingIpPoolModel();
        fipPoolModel.addToVirtualNetwork(vnModel);
        fipPoolModel.build(_manager.getModelController());
        try {
            fipPoolModel.update(_manager.getModelController());
            vnModel.setFipPoolModel(fipPoolModel);
        } catch (Exception ex) {
            s_logger.warn("floating-ip-pool create: ", ex);
            return false;
        }
    }
    FloatingIpModel current = fipPoolModel.getFloatingIpModel(db.getUuid());
    if (current == null) {
        s_logger.debug("add model " + db.getAddress().addr());
        FloatingIpModel fipModel = new FloatingIpModel(db.getUuid());
        fipModel.addToFloatingIpPool(fipPoolModel);
        fipModel.build(_manager.getModelController(), PublicIp.createFromAddrAndVlan(db, _vlanDao.findById(db.getVlanId())));
        try {
            fipModel.update(_manager.getModelController());
        } catch (Exception ex) {
            s_logger.warn("floating-ip create: ", ex);
            return false;
        }
    }
    return true;
}
Also used : FloatingIpPoolModel(org.apache.cloudstack.network.contrail.model.FloatingIpPoolModel) FloatingIpModel(org.apache.cloudstack.network.contrail.model.FloatingIpModel) InternalErrorException(com.cloud.exception.InternalErrorException) IOException(java.io.IOException) VirtualNetworkModel(org.apache.cloudstack.network.contrail.model.VirtualNetworkModel)

Example 2 with FloatingIpPoolModel

use of org.apache.cloudstack.network.contrail.model.FloatingIpPoolModel in project cloudstack by apache.

the class ContrailManagerImpl method createFloatingIp.

@Override
public boolean createFloatingIp(PublicIpAddress ip) {
    VirtualNetworkModel vnModel = lookupPublicNetworkModel();
    assert vnModel != null : "public network vn model is null";
    FloatingIpPoolModel fipPoolModel = vnModel.getFipPoolModel();
    /* create only, no updates */
    if (fipPoolModel == null) {
        fipPoolModel = new FloatingIpPoolModel();
        fipPoolModel.addToVirtualNetwork(vnModel);
        fipPoolModel.build(getModelController());
        try {
            fipPoolModel.update(getModelController());
            vnModel.setFipPoolModel(fipPoolModel);
        } catch (Exception ex) {
            s_logger.warn("floating-ip-pool create: ", ex);
            return false;
        }
    }
    FloatingIpModel fipModel = fipPoolModel.getFloatingIpModel(ip.getUuid());
    /* create only, no updates*/
    if (fipModel == null) {
        fipModel = new FloatingIpModel(ip.getUuid());
        fipModel.addToFloatingIpPool(fipPoolModel);
        fipModel.build(getModelController(), ip);
        try {
            fipModel.update(getModelController());
        } catch (Exception ex) {
            s_logger.warn("floating-ip create: ", ex);
            return false;
        }
    }
    return true;
}
Also used : FloatingIpPoolModel(org.apache.cloudstack.network.contrail.model.FloatingIpPoolModel) FloatingIpModel(org.apache.cloudstack.network.contrail.model.FloatingIpModel) ConfigurationException(javax.naming.ConfigurationException) IOException(java.io.IOException) VirtualNetworkModel(org.apache.cloudstack.network.contrail.model.VirtualNetworkModel)

Example 3 with FloatingIpPoolModel

use of org.apache.cloudstack.network.contrail.model.FloatingIpPoolModel in project cloudstack by apache.

the class ContrailManagerImpl method deleteFloatingIp.

@Override
public boolean deleteFloatingIp(PublicIpAddress ip) {
    VirtualNetworkModel vnModel = lookupPublicNetworkModel();
    assert vnModel != null : "public network model is null";
    FloatingIpPoolModel fipPoolModel = vnModel.getFipPoolModel();
    FloatingIpModel fipModel = fipPoolModel.getFloatingIpModel(ip.getUuid());
    if (fipModel != null) {
        try {
            fipModel.destroy(getModelController());
        } catch (IOException ex) {
            s_logger.warn("floating ip delete", ex);
            return false;
        }
        fipPoolModel.removeSuccessor(fipModel);
        if (!fipPoolModel.hasDescendents()) {
            try {
                fipPoolModel.delete(getModelController());
                vnModel.setFipPoolModel(null);
            } catch (IOException e) {
                return false;
            }
        }
    }
    return true;
}
Also used : FloatingIpPoolModel(org.apache.cloudstack.network.contrail.model.FloatingIpPoolModel) FloatingIpModel(org.apache.cloudstack.network.contrail.model.FloatingIpModel) IOException(java.io.IOException) VirtualNetworkModel(org.apache.cloudstack.network.contrail.model.VirtualNetworkModel)

Example 4 with FloatingIpPoolModel

use of org.apache.cloudstack.network.contrail.model.FloatingIpPoolModel in project cloudstack by apache.

the class ServerDBSyncImpl method equalVirtualNetwork.

public Boolean equalVirtualNetwork(NetworkVO dbn, VirtualNetwork vnet, StringBuffer syncLogMesg) {
    syncLogMesg.append("VN# DB: " + _manager.getCanonicalName(dbn) + "; VNC: " + vnet.getName() + "; action: equal\n");
    VirtualNetworkModel current = _manager.getDatabase().lookupVirtualNetwork(vnet.getUuid(), _manager.getCanonicalName(dbn), dbn.getTrafficType());
    VirtualNetworkModel vnModel = new VirtualNetworkModel(dbn, vnet.getUuid(), _manager.getCanonicalName(dbn), dbn.getTrafficType());
    if (dbn.getTrafficType() == TrafficType.Guest && dbn.getNetworkACLId() != null) {
        NetworkACLVO acl = _networkACLDao.findById(dbn.getNetworkACLId());
        NetworkPolicyModel policyModel = _manager.getDatabase().lookupNetworkPolicy(acl.getUuid());
        if (policyModel == null) {
            s_logger.error("Network(" + dbn.getName() + ") has ACL but policy model not created: " + acl.getUuid() + ", name: " + acl.getName());
        } else {
            vnModel.addToNetworkPolicy(policyModel);
        }
    }
    vnModel.build(_manager.getModelController(), dbn);
    if (_rwMode) {
        if (current != null) {
            FloatingIpPoolModel fipPoolModel = current.getFipPoolModel();
            if (fipPoolModel != null) {
                vnModel.setFipPoolModel(fipPoolModel);
                fipPoolModel.addToVirtualNetwork(vnModel);
            }
            _manager.getDatabase().getVirtualNetworks().remove(current);
        }
        s_logger.debug("add model " + vnModel.getName());
        _manager.getDatabase().getVirtualNetworks().add(vnModel);
        try {
            if (!vnModel.verify(_manager.getModelController())) {
                vnModel.update(_manager.getModelController());
            }
        } catch (Exception ex) {
            s_logger.warn("update virtual-network", ex);
        }
        if (current != null) {
            NetworkPolicyModel oldPolicyModel = current.getNetworkPolicyModel();
            if (oldPolicyModel != vnModel.getNetworkPolicyModel()) {
                /*
                     * if no other VNs are associated with the old policy,
                     * we could delete it from the Contrail VNC
                     */
                if (oldPolicyModel != null && !oldPolicyModel.hasDescendents()) {
                    try {
                        oldPolicyModel.delete(_manager.getModelController());
                        _manager.getDatabase().getNetworkPolicys().remove(oldPolicyModel);
                    } catch (IOException e) {
                        e.printStackTrace();
                    }
                }
            }
        }
    } else {
        //compare
        if (current != null && current.compare(_manager.getModelController(), vnModel) == false) {
            syncLogMesg.append("VN# DB: " + _manager.getCanonicalName(dbn) + "; VNC: " + vnet.getName() + "; attributes differ\n");
            return false;
        }
    }
    return true;
}
Also used : NetworkACLVO(com.cloud.network.vpc.NetworkACLVO) FloatingIpPoolModel(org.apache.cloudstack.network.contrail.model.FloatingIpPoolModel) NetworkPolicyModel(org.apache.cloudstack.network.contrail.model.NetworkPolicyModel) IOException(java.io.IOException) InternalErrorException(com.cloud.exception.InternalErrorException) IOException(java.io.IOException) VirtualNetworkModel(org.apache.cloudstack.network.contrail.model.VirtualNetworkModel)

Aggregations

IOException (java.io.IOException)4 FloatingIpPoolModel (org.apache.cloudstack.network.contrail.model.FloatingIpPoolModel)4 VirtualNetworkModel (org.apache.cloudstack.network.contrail.model.VirtualNetworkModel)4 FloatingIpModel (org.apache.cloudstack.network.contrail.model.FloatingIpModel)3 InternalErrorException (com.cloud.exception.InternalErrorException)2 NetworkACLVO (com.cloud.network.vpc.NetworkACLVO)1 ConfigurationException (javax.naming.ConfigurationException)1 NetworkPolicyModel (org.apache.cloudstack.network.contrail.model.NetworkPolicyModel)1