@Override public String call(VipInventory arg) { return arg.getUuid(); } });
@Override public void releaseServicesOnVip(VipInventory vip, final Completion completion) { SimpleQuery<LoadBalancerVO> q = dbf.createQuery(LoadBalancerVO.class); q.add(LoadBalancerVO_.vipUuid, Op.EQ, vip.getUuid()); List<LoadBalancerVO> rules = q.list(); releaseServicesOnVip(rules.iterator(), completion); } }
@Override public void releaseServicesOnVip(VipInventory vip, Completion complete) { SimpleQuery<PortForwardingRuleVO> q = dbf.createQuery(PortForwardingRuleVO.class); q.add(PortForwardingRuleVO_.vipUuid, Op.EQ, vip.getUuid()); List<PortForwardingRuleVO> rules = q.list(); releaseServicesOnVip(rules.iterator(), complete); }
@Override public Result audit(APIMessage msg, APIEvent rsp) { return new Result(rsp.isSuccess() ? ((APICreateVipEvent)rsp).getInventory().getUuid() : "", VipVO.class); } }
@Override public void fail(ErrorCode errorCode) { logger.warn(String.format("failed to release vip[uuid:%s, name:%s, ip:%s] on virtual router vm[uuid:%s], because %s", vip.getUuid(), vip.getName(), vip.getIp(), vrvo.getUuid(), errorCode)); completion.fail(errorCode); } });
@Override public void handle(Map data) { final VirtualRouterVmInventory vr = (VirtualRouterVmInventory) data.get(VirtualRouterConstant.Param.VR.toString()); if (!dbf.isExist(vip.getUuid(), VirtualRouterVipVO.class)) { VirtualRouterVipVO vrvip = new VirtualRouterVipVO(); vrvip.setUuid(vip.getUuid()); vrvip.setVirtualRouterVmUuid(vr.getUuid()); dbf.persist(vrvip); } completion.success(); } }).error(new FlowErrorHandler(completion) {
@Override public VipDeletionMsg call(VipInventory arg) { VipDeletionMsg msg = new VipDeletionMsg(); msg.setVipUuid(arg.getUuid()); bus.makeTargetServiceIdByResourceUuid(msg, VipConstant.SERVICE_ID, msg.getVipUuid()); return msg; } });
@Override public void run(List<MessageReply> replies) { for (MessageReply r : replies) { VipInventory vip = vipinvs.get(replies.indexOf(r)); if (!r.isSuccess()) { logger.warn(String.format("failed to delete vip[uuid:%s, ip: %s, name:%s], %s", vip.getUuid(), vip.getIp(), vip.getName(), r.getError())); completion.fail(r.getError()); return; } } completion.success(); } });
private String getOwnerMac(VirtualRouterVmInventory vr, VipInventory vip) { for (VmNicInventory nic : vr.getVmNics()) { if (nic.getL3NetworkUuid().equals(vip.getL3NetworkUuid())) { return nic.getMac(); } } throw new CloudRuntimeException(String.format("virtual router vm[uuid:%s] has no nic on l3Network[uuid:%s] for vip[uuid:%s, ip:%s]", vr.getUuid(), vip.getL3NetworkUuid(), vip.getUuid(), vip.getIp())); }
@Override public void success() { logger.debug(String.format("successfully released vip[uuid:%s, name:%s, ip:%s] on virtual router vm[uuid:%s]", vip.getUuid(), vip.getName(), vip.getIp(), vrvo.getUuid())); dbf.remove(vrvip); completion.success(); }
@Override public void after(APIEvent evt) { if (evt.isSuccess()) { ntfy("Created").resource(((APICreateVipEvent)evt).getInventory().getUuid(), VipVO.class.getSimpleName()) .messageAndEvent(that, evt).done(); } } };
public void run(final FlowTrigger trigger, final Map data) { final VipInventory v = (VipInventory) data.get(VipConstant.Params.VIP.toString()); final String serviceProviderType = (String) data.get(VipConstant.Params.VIP_SERVICE_PROVIDER_TYPE.toString()); final L3NetworkInventory peerL3 = (L3NetworkInventory) data.get(VipConstant.Params.GUEST_L3NETWORK_VIP_FOR.toString()); boolean needLockVip = data.containsKey(Params.NEED_LOCK_VIP.toString()); ModifyVipAttributesStruct struct = new ModifyVipAttributesStruct(); struct.setUseFor( PortForwardingConstant.PORTFORWARDING_NETWORK_SERVICE_TYPE); Vip vip = new Vip(v.getUuid()); vip.setStruct(struct); vip.acquire(new Completion(trigger) { @Override public void success() { trigger.next(); } @Override public void fail(ErrorCode errorCode) { trigger.fail(errorCode); } }); }
private String getOwnerMac(VirtualRouterVmInventory vr, VipInventory vip) { for (VmNicInventory nic : vr.getVmNics()) { if (nic.getL3NetworkUuid().equals(vip.getL3NetworkUuid())) { return nic.getMac(); } } throw new CloudRuntimeException(String.format("virtual router vm[uuid:%s] has no nic on l3Network[uuid:%s] for vip[uuid:%s, ip:%s]", vr.getUuid(), vip.getL3NetworkUuid(), vip.getUuid(), vip.getIp())); }
@Override public void success() { evt.setInventory(EipInventory.valueOf(finalVo)); logger.debug(String.format("successfully created eip[uuid:%s, name:%s] on vip[uuid:%s, ip:%s]", finalVo.getUuid(), finalVo.getName(), vipInventory.getUuid(), vipInventory.getIp())); bus.publish(evt); }
@Override public void success() { evt.setInventory(EipInventory.valueOf(finalVo)); logger.debug(String.format("successfully created eip[uuid:%s, name:%s] on vip[uuid:%s, ip:%s]", finalVo.getUuid(), finalVo.getName(), vipInventory.getUuid(), vipInventory.getIp())); bus.publish(evt); }
@Override public void run(final FlowTrigger trigger, Map data) { VipInventory v = (VipInventory) data.get(VipConstant.Params.VIP.toString()); ModifyVipAttributesStruct struct = new ModifyVipAttributesStruct(); struct.setUseFor( PortForwardingConstant.PORTFORWARDING_NETWORK_SERVICE_TYPE); Vip vip = new Vip(v.getUuid()); vip.setStruct(struct); vip.release(new Completion(trigger) { @Override public void success() { trigger.next(); } @Override public void fail(ErrorCode errorCode) { trigger.fail(errorCode); } }); } }
@Override public void run(MessageReply reply) { if (!reply.isSuccess()) { completion.fail(reply.getError()); return; } KVMHostAsyncHttpCallReply ar = reply.castReply(); AgentRsp rsp = ar.toResponse(AgentRsp.class); if (!rsp.success) { completion.fail(operr("operation error, because:%s", rsp.error)); return; } for (AfterApplyFlatEipExtensionPoint ext : pluginRgty.getExtensionList(AfterApplyFlatEipExtensionPoint.class)) { ext.AfterApplyFlatEip(asList(struct.getVip().getUuid()), hostUuid); } completion.success(); } });
public static VipTO valueOf(VipInventory inv, String ownerMac) { VipTO to = new VipTO(); to.setIp(inv.getIp()); to.setNetmask(inv.getNetmask()); to.setGateway(inv.getGateway()); to.setOwnerEthernetMac(ownerMac); to.setVipUuid(inv.getUuid()); return to; }
@Override public void handle(Map data) { SimpleQuery<VirtualRouterPortForwardingRuleRefVO> q = dbf.createQuery(VirtualRouterPortForwardingRuleRefVO.class); q.add(VirtualRouterPortForwardingRuleRefVO_.uuid, Op.EQ, struct.getRule().getUuid()); if (!q.isExists()) { // if virtual router is stopped outside zstack (e.g. the host reboot) // database will still have VirtualRouterPortForwardingRuleRefVO for this PF rule. // in this case, don't create the record again VirtualRouterPortForwardingRuleRefVO ref = new VirtualRouterPortForwardingRuleRefVO(); ref.setUuid(struct.getRule().getUuid()); ref.setVirtualRouterVmUuid(vr.getUuid()); ref.setVipUuid(struct.getVip().getUuid()); dbf.persist(ref); } completion.success(); } }).error(new FlowErrorHandler(completion) {