protected void passToBackend(Message msg) { if (self.getServiceProvider() == null) { bus.dealWithUnknownMessage(msg); return; } VipFactory f = vipMgr.getVipFactory(self.getServiceProvider()); VipBaseBackend bkd = f.getVip(getSelf()); bkd.handleBackendSpecificMessage(msg); }
@Override public void fail(ErrorCode errorCode) { logger.warn(String.format("failed to release vip[uuid:%s, name:%s, ip:%s] on service[%s], its garbage collector should" + " handle this", self.getUuid(), self.getName(), self.getIp(), self.getServiceProvider())); completion.fail(errorCode); } });
if (self.getServiceProvider().equals(VirtualRouterConstant.VIRTUAL_ROUTER_PROVIDER_TYPE)) { appVmType = VirtualRouterConstant.VIRTUAL_ROUTER_VM_TYPE; } else if (self.getServiceProvider().equals(VyosConstants.VYOS_ROUTER_PROVIDER_TYPE)) { appVmType = VyosConstants.VYOS_VM_TYPE; } else { throw new CloudRuntimeException(String.format("unknown network service provider type[%s]", self.getServiceProvider())); s.setProviderType(self.getServiceProvider()); s.setOfferingValidator(offering -> { if (!offering.getPublicNetworkUuid().equals(self.getL3NetworkUuid())) {
@Override public void success() { logger.debug(String.format("successfully released vip[uuid:%s, name:%s, ip:%s] on service[%s]", self.getUuid(), self.getName(), self.getIp(), self.getServiceProvider())); VipUseForList useForList = new VipUseForList(self.getUseFor()); self.setUseFor(null); clearPeerL3Network(); self.setServiceProvider(null); dbf.update(self); completion.success(); }
protected void acquireVip(ModifyVipAttributesStruct s, Completion completion) { refresh(); if (!acquireCheckModifyVipAttributeStruct(s)) { /* no need to install vip to backend */ completion.success(); return; } VipFactory f = vipMgr.getVipFactory(self.getServiceProvider()); VipBaseBackend vip = f.getVip(getSelf()); vip.acquireVipOnBackend(new Completion(completion) { @Override public void success() { logger.debug(String.format("successfully acquired vip[uuid:%s, name:%s, ip:%s] on service[%s]", self.getUuid(), self.getName(), self.getIp(), s.getServiceProvider())); VipUseForList useForList = new VipUseForList(self.getUseFor()); useForList.add(s.getUseFor()); VipVO vo = Q.New(VipVO.class).eq(VipVO_.uuid, self.getUuid()).find(); vo.setUseFor(useForList.toString()); dbf.updateAndRefresh(vo); addPeerL3NetworkUuid(s.getPeerL3NetworkUuid()); completion.success(); } @Override public void fail(ErrorCode errorCode) { completion.fail(errorCode); } }); }
protected boolean acquireCheckModifyVipAttributeStruct(ModifyVipAttributesStruct s) { if (s.isUserFor()) { VipUseForList useForList = new VipUseForList(self.getUseFor()); useForList.add(s.getUseFor()); self.setUseFor(useForList.toString()); } if (s.isServiceProvider()) { if (self.getServiceProvider() != null && s.getServiceProvider() != null && !s.getServiceProvider().equals(self.getServiceProvider())) { throw new OperationFailureException(operr("service provider of the vip[uuid:%s, name:%s, ip: %s] has been set to %s", self.getUuid(), self.getName(), self.getIp(), self.getServiceProvider())); } self.setServiceProvider(s.getServiceProvider()); } if (s.isPeerL3NetworkUuid()) { try { if (s.isServiceProvider()) { addPeerL3NetworkUuid(s.getPeerL3NetworkUuid()); } } catch (CloudRuntimeException e) { throw new OperationFailureException(operr(e.getMessage())); } } self = dbf.updateAndRefresh(self); /* snat service is bound the router interface, don't need to bound to backend */ if (s.getUseFor().equals(NetworkServiceType.SNAT.toString())) { return false; } return s.isPeerL3NetworkUuid() && s.isServiceProvider(); }
if (self.getServiceProvider() == null) { logger.debug(String.format("the serviceProvider field is null, the vip[uuid:%s, name:%s, ip:%s] has been released" + " by other service", self.getUuid(), self.getName(), self.getIp())); VipFactory f = vipMgr.getVipFactory(self.getServiceProvider()); VipBaseBackend vip = f.getVip(getSelf()); vip.releaseVipOnBackend(new Completion(completion) {
public static VipInventory valueOf(VipVO vo) { VipInventory inv = new VipInventory(); inv.setName(vo.getName()); inv.setDescription(vo.getDescription()); inv.setCreateDate(vo.getCreateDate()); inv.setGateway(vo.getGateway()); inv.setIp(vo.getIp()); inv.setIpRangeUuid(vo.getIpRangeUuid()); inv.setServiceProvider(vo.getServiceProvider()); inv.setL3NetworkUuid(vo.getL3NetworkUuid()); inv.setLastOpDate(vo.getLastOpDate()); inv.setNetmask(vo.getNetmask()); inv.setPrefixLen(vo.getPrefixLen()); inv.setUseFor(vo.getUseFor()); inv.setUuid(vo.getUuid()); inv.setState(vo.getState().toString()); inv.setUsedIpUuid(vo.getUsedIpUuid()); if (vo.getPeerL3NetworkRefs() != null && !vo.getPeerL3NetworkRefs().isEmpty()) { inv.setPeerL3NetworkUuids(vo.getPeerL3NetworkRefs().stream() .map(ref -> ref.getL3NetworkUuid()) .collect(Collectors.toList())); } return inv; }