package org.zstack.network.service.virtualrouter; import org.zstack.header.core.ReturnValueCompletion; import org.zstack.header.core.workflow.Flow; import org.zstack.header.core.workflow.FlowChain; import org.zstack.header.host.HypervisorType; import org.zstack.header.network.l3.L3NetworkInventory; import org.zstack.header.network.service.NetworkServiceProviderInventory; import org.zstack.header.network.service.NetworkServiceType; import java.util.List; public interface VirtualRouterManager { NetworkServiceProviderInventory getVirtualRouterProvider(); VirtualRouterHypervisorBackend getHypervisorBackend(HypervisorType hypervisorType); String buildUrl(String mgmtNicIp, String subPath); List<String> selectL3NetworksNeedingSpecificNetworkService(List<String> candidate, NetworkServiceType nsType); boolean isL3NetworkNeedingNetworkServiceByVirtualRouter(String l3Uuid, String nsType); void acquireVirtualRouterVm(VirtualRouterStruct struct, ReturnValueCompletion<VirtualRouterVmInventory> completion); VirtualRouterVmInventory getVirtualRouterVm(L3NetworkInventory l3Nw); boolean isVirtualRouterRunningForL3Network(String l3Uuid); long countVirtualRouterRunningForL3Network(String l3Uuid); boolean isVirtualRouterForL3Network(String l3Uuid); List<Flow> getPostCreateFlows(); List<Flow> getPostStartFlows(); List<Flow> getPostRebootFlows(); List<Flow> getPostStopFlows(); List<Flow> getPostMigrateFlows(); List<Flow> getPostDestroyFlows(); FlowChain getReconnectFlowChain(); int getParallelismDegree(String vrUuid); }