package org.zstack.network.service.virtualrouter.vyos; import org.springframework.beans.factory.annotation.Autowired; import org.zstack.appliancevm.ApplianceVmAsyncHttpCallMsg; import org.zstack.appliancevm.ApplianceVmRefreshFirewallMsg; import org.zstack.appliancevm.ApplianceVmRefreshFirewallReply; import org.zstack.core.CoreGlobalProperty; import org.zstack.header.core.workflow.Flow; import org.zstack.header.core.workflow.FlowChain; import org.zstack.header.exception.CloudRuntimeException; import org.zstack.header.host.HypervisorType; import org.zstack.network.service.virtualrouter.VirtualRouter; import org.zstack.network.service.virtualrouter.VirtualRouterVmVO; import java.util.ArrayList; import java.util.List; /** * Created by xing5 on 2016/10/31. */ public class VyosVm extends VirtualRouter { @Autowired private VyosVmFactory vyosf; public VyosVm(VirtualRouterVmVO vo) { super(vo); } protected List<Flow> createBootstrapFlows(HypervisorType hvType) { List<Flow> flows = new ArrayList<>(); flows.add(apvmf.createBootstrapFlow(hvType)); if (!CoreGlobalProperty.UNIT_TEST_ON) { flows.add(new VyosDeployAgentFlow()); } return flows; } @Override protected List<Flow> getPostCreateFlows() { return vyosf.getPostCreateFlows(); } @Override protected List<Flow> getPostStartFlows() { return vyosf.getPostStartFlows(); } @Override protected List<Flow> getPostStopFlows() { return vyosf.getPostStopFlows(); } @Override protected List<Flow> getPostRebootFlows() { return vyosf.getPostRebootFlows(); } @Override protected List<Flow> getPostDestroyFlows() { return vyosf.getPostDestroyFlows(); } @Override protected List<Flow> getPostMigrateFlows() { return vyosf.getPostMigrateFlows(); } @Override protected FlowChain getReconnectChain() { return vyosf.getReconnectFlowChain(); } @Override protected void handle(final ApplianceVmRefreshFirewallMsg msg) { // vyos doesn't need appliance vm ApplianceVmRefreshFirewallReply reply = new ApplianceVmRefreshFirewallReply(); bus.reply(msg, reply); } @Override protected void handle(final ApplianceVmAsyncHttpCallMsg msg) { // vyos doesn't need appliance vm throw new CloudRuntimeException("should not be called"); } }