Tungsten: fix functional issues (#7173)

Co-authored-by: dahn <daan.hoogland@gmail.com>
This commit is contained in:
Wei Zhou 2023-02-13 09:15:28 +01:00 committed by GitHub
parent a3feccf70c
commit 8ef35466de
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
12 changed files with 19 additions and 28 deletions

View File

@ -100,6 +100,9 @@ public interface NetworkOrchestrationService {
ConfigKey<Boolean> RollingRestartEnabled = new ConfigKey<Boolean>("Advanced", Boolean.class, "network.rolling.restart", "true", ConfigKey<Boolean> RollingRestartEnabled = new ConfigKey<Boolean>("Advanced", Boolean.class, "network.rolling.restart", "true",
"Whether to allow or deny rolling restart of network routers.", true); "Whether to allow or deny rolling restart of network routers.", true);
static final ConfigKey<Boolean> TUNGSTEN_ENABLED = new ConfigKey<>(Boolean.class, "tungsten.plugin.enable", "Advanced", "false",
"Indicates whether to enable the Tungsten plugin", false, ConfigKey.Scope.Zone, null);
List<? extends Network> setupNetwork(Account owner, NetworkOffering offering, DeploymentPlan plan, String name, String displayText, boolean isDefault) List<? extends Network> setupNetwork(Account owner, NetworkOffering offering, DeploymentPlan plan, String name, String displayText, boolean isDefault)
throws ConcurrentOperationException; throws ConcurrentOperationException;

View File

@ -42,6 +42,7 @@ import com.cloud.configuration.Config;
import com.cloud.utils.NumbersUtil; import com.cloud.utils.NumbersUtil;
import org.apache.cloudstack.agent.lb.IndirectAgentLB; import org.apache.cloudstack.agent.lb.IndirectAgentLB;
import org.apache.cloudstack.ca.CAManager; import org.apache.cloudstack.ca.CAManager;
import org.apache.cloudstack.engine.orchestration.service.NetworkOrchestrationService;
import org.apache.cloudstack.framework.config.ConfigKey; import org.apache.cloudstack.framework.config.ConfigKey;
import org.apache.cloudstack.framework.config.Configurable; import org.apache.cloudstack.framework.config.Configurable;
import org.apache.cloudstack.framework.config.dao.ConfigurationDao; import org.apache.cloudstack.framework.config.dao.ConfigurationDao;
@ -1783,6 +1784,7 @@ public class AgentManagerImpl extends ManagerBase implements AgentManager, Handl
Map<String, String> params = new HashMap<String, String>(); Map<String, String> params = new HashMap<String, String>();
params.put(Config.RouterAggregationCommandEachTimeout.toString(), _configDao.getValue(Config.RouterAggregationCommandEachTimeout.toString())); params.put(Config.RouterAggregationCommandEachTimeout.toString(), _configDao.getValue(Config.RouterAggregationCommandEachTimeout.toString()));
params.put(Config.MigrateWait.toString(), _configDao.getValue(Config.MigrateWait.toString())); params.put(Config.MigrateWait.toString(), _configDao.getValue(Config.MigrateWait.toString()));
params.put(NetworkOrchestrationService.TUNGSTEN_ENABLED.key(), String.valueOf(NetworkOrchestrationService.TUNGSTEN_ENABLED.valueIn(host.getDataCenterId())));
try { try {
SetHostParamsCommand cmds = new SetHostParamsCommand(params); SetHostParamsCommand cmds = new SetHostParamsCommand(params);

View File

@ -4648,6 +4648,7 @@ public class NetworkOrchestrator extends ManagerBase implements NetworkOrchestra
public ConfigKey<?>[] getConfigKeys() { public ConfigKey<?>[] getConfigKeys() {
return new ConfigKey<?>[]{NetworkGcWait, NetworkGcInterval, NetworkLockTimeout, return new ConfigKey<?>[]{NetworkGcWait, NetworkGcInterval, NetworkLockTimeout,
GuestDomainSuffix, NetworkThrottlingRate, MinVRVersion, GuestDomainSuffix, NetworkThrottlingRate, MinVRVersion,
PromiscuousMode, MacAddressChanges, ForgedTransmits, MacLearning, RollingRestartEnabled}; PromiscuousMode, MacAddressChanges, ForgedTransmits, MacLearning, RollingRestartEnabled,
TUNGSTEN_ENABLED };
} }
} }

View File

@ -50,7 +50,7 @@ import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.ParserConfigurationException; import javax.xml.parsers.ParserConfigurationException;
import org.apache.cloudstack.api.ApiConstants.IoDriverPolicy; import org.apache.cloudstack.api.ApiConstants.IoDriverPolicy;
import org.apache.cloudstack.network.tungsten.service.TungstenService; import org.apache.cloudstack.engine.orchestration.service.NetworkOrchestrationService;
import org.apache.cloudstack.storage.configdrive.ConfigDrive; import org.apache.cloudstack.storage.configdrive.ConfigDrive;
import org.apache.cloudstack.storage.to.PrimaryDataStoreTO; import org.apache.cloudstack.storage.to.PrimaryDataStoreTO;
import org.apache.cloudstack.storage.to.TemplateObjectTO; import org.apache.cloudstack.storage.to.TemplateObjectTO;
@ -462,6 +462,8 @@ public class LibvirtComputingResource extends ServerResourceBase implements Serv
protected LibvirtDomainXMLParser parser = new LibvirtDomainXMLParser(); protected LibvirtDomainXMLParser parser = new LibvirtDomainXMLParser();
private boolean isTungstenEnabled = false;
private static Gson gson = new Gson(); private static Gson gson = new Gson();
/** /**
@ -1396,6 +1398,10 @@ public class LibvirtComputingResource extends ServerResourceBase implements Serv
_migrateWait = intValue; _migrateWait = intValue;
} }
if (params.get(NetworkOrchestrationService.TUNGSTEN_ENABLED.key()) != null) {
isTungstenEnabled = Boolean.parseBoolean(params.get(NetworkOrchestrationService.TUNGSTEN_ENABLED.key()));
}
return true; return true;
} }
@ -1481,8 +1487,8 @@ public class LibvirtComputingResource extends ServerResourceBase implements Serv
defaultVifDriverName = DEFAULT_BRIDGE_VIF_DRIVER_CLASS_NAME; defaultVifDriverName = DEFAULT_BRIDGE_VIF_DRIVER_CLASS_NAME;
} }
} }
tungstenVifDriver = getVifDriverClass(DEFAULT_TUNGSTEN_VIF_DRIVER_CLASS_NAME, params);
_defaultVifDriver = getVifDriverClass(defaultVifDriverName, params); _defaultVifDriver = getVifDriverClass(defaultVifDriverName, params);
tungstenVifDriver = getVifDriverClass(DEFAULT_TUNGSTEN_VIF_DRIVER_CLASS_NAME, params);
// Load any per-traffic-type vif drivers // Load any per-traffic-type vif drivers
for (final Map.Entry<String, Object> entry : params.entrySet()) { for (final Map.Entry<String, Object> entry : params.entrySet()) {
@ -1556,7 +1562,7 @@ public class LibvirtComputingResource extends ServerResourceBase implements Serv
final Set<VifDriver> vifDrivers = new HashSet<VifDriver>(); final Set<VifDriver> vifDrivers = new HashSet<VifDriver>();
vifDrivers.add(_defaultVifDriver); vifDrivers.add(_defaultVifDriver);
if (TungstenService.isTungstenEnabled(Long.parseLong(_dcId))) { if (isTungstenEnabled) {
vifDrivers.add(tungstenVifDriver); vifDrivers.add(tungstenVifDriver);
} }
vifDrivers.addAll(_trafficTypeVifDrivers.values()); vifDrivers.addAll(_trafficTypeVifDrivers.values());

View File

@ -107,7 +107,8 @@ public class VRouterVifDriver extends VifDriverBase {
@Override @Override
public boolean isExistingBridge(String bridgeName) { public boolean isExistingBridge(String bridgeName) {
File f = new File("/sys/devices/virtual/net/" + bridgeName); File f = new File("/sys/devices/virtual/net/" + bridgeName);
return f.exists(); File bridge = new File("/sys/devices/virtual/net/" + bridgeName + "/bridge");
return f.exists() && ! bridge.exists();
} }
@Override @Override

View File

@ -25,7 +25,6 @@ import com.cloud.network.element.TungstenProviderVO;
import com.cloud.network.lb.LoadBalancingRule; import com.cloud.network.lb.LoadBalancingRule;
import com.cloud.vm.VMInstanceVO; import com.cloud.vm.VMInstanceVO;
import org.apache.cloudstack.api.BaseResponse; import org.apache.cloudstack.api.BaseResponse;
import org.apache.cloudstack.framework.config.ConfigKey;
import org.apache.cloudstack.network.tungsten.api.response.TungstenFabricAddressGroupResponse; import org.apache.cloudstack.network.tungsten.api.response.TungstenFabricAddressGroupResponse;
import org.apache.cloudstack.network.tungsten.api.response.TungstenFabricApplicationPolicySetResponse; import org.apache.cloudstack.network.tungsten.api.response.TungstenFabricApplicationPolicySetResponse;
import org.apache.cloudstack.network.tungsten.api.response.TungstenFabricFirewallPolicyResponse; import org.apache.cloudstack.network.tungsten.api.response.TungstenFabricFirewallPolicyResponse;
@ -42,13 +41,6 @@ import java.util.List;
public interface TungstenService { public interface TungstenService {
static final ConfigKey<Boolean> TUNGSTEN_ENABLED = new ConfigKey<Boolean>(Boolean.class, "tungsten.plugin.enable", "Advanced", "false",
"Indicates whether to enable the Tungsten plugin", false, ConfigKey.Scope.Zone, null);
static Boolean isTungstenEnabled(long zoneId) {
return TUNGSTEN_ENABLED.valueIn(zoneId);
}
String getTungstenProjectFqn(Network network); String getTungstenProjectFqn(Network network);
List<TungstenProviderVO> getTungstenProviders(); List<TungstenProviderVO> getTungstenProviders();

View File

@ -115,8 +115,6 @@ import net.juniper.tungsten.api.types.VirtualMachineInterface;
import net.juniper.tungsten.api.types.VirtualNetwork; import net.juniper.tungsten.api.types.VirtualNetwork;
import org.apache.cloudstack.api.BaseResponse; import org.apache.cloudstack.api.BaseResponse;
import org.apache.cloudstack.context.CallContext; import org.apache.cloudstack.context.CallContext;
import org.apache.cloudstack.framework.config.ConfigKey;
import org.apache.cloudstack.framework.config.Configurable;
import org.apache.cloudstack.framework.config.dao.ConfigurationDao; import org.apache.cloudstack.framework.config.dao.ConfigurationDao;
import org.apache.cloudstack.framework.messagebus.MessageBus; import org.apache.cloudstack.framework.messagebus.MessageBus;
import org.apache.cloudstack.network.tungsten.agent.api.AddTungstenNetworkGatewayToLogicalRouterCommand; import org.apache.cloudstack.network.tungsten.agent.api.AddTungstenNetworkGatewayToLogicalRouterCommand;
@ -230,7 +228,7 @@ import java.util.concurrent.TimeUnit;
import javax.inject.Inject; import javax.inject.Inject;
public class TungstenServiceImpl extends ManagerBase implements TungstenService, Configurable { public class TungstenServiceImpl extends ManagerBase implements TungstenService {
private static final Logger s_logger = Logger.getLogger(TungstenServiceImpl.class); private static final Logger s_logger = Logger.getLogger(TungstenServiceImpl.class);
private static final String NETWORK = "network"; private static final String NETWORK = "network";
@ -2540,16 +2538,4 @@ public class TungstenServiceImpl extends ManagerBase implements TungstenService,
} }
return resultList; return resultList;
} }
@Override
public String getConfigComponentName() {
return TungstenServiceImpl.class.getSimpleName();
}
@Override
public ConfigKey<?>[] getConfigKeys() {
return new ConfigKey<?>[] {
TUNGSTEN_ENABLED
};
}
} }

0
scripts/vm/network/tungsten/create_tap_device.sh Normal file → Executable file
View File

0
scripts/vm/network/tungsten/delete_tap_device.sh Normal file → Executable file
View File

0
scripts/vm/network/tungsten/setup_tungsten_vrouter.sh Normal file → Executable file
View File

View File

View File