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;
}
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;
}
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;
}
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;
}
Aggregations