diff --git a/engine/api/src/main/java/org/apache/cloudstack/engine/orchestration/service/NetworkOrchestrationService.java b/engine/api/src/main/java/org/apache/cloudstack/engine/orchestration/service/NetworkOrchestrationService.java index bf58c72c133d..6d7c540613b4 100644 --- a/engine/api/src/main/java/org/apache/cloudstack/engine/orchestration/service/NetworkOrchestrationService.java +++ b/engine/api/src/main/java/org/apache/cloudstack/engine/orchestration/service/NetworkOrchestrationService.java @@ -100,6 +100,9 @@ public interface NetworkOrchestrationService { ConfigKey RollingRestartEnabled = new ConfigKey("Advanced", Boolean.class, "network.rolling.restart", "true", "Whether to allow or deny rolling restart of network routers.", true); + static final ConfigKey TUNGSTEN_ENABLED = new ConfigKey<>(Boolean.class, "tungsten.plugin.enable", "Advanced", "false", + "Indicates whether to enable the Tungsten plugin", false, ConfigKey.Scope.Zone, null); + List setupNetwork(Account owner, NetworkOffering offering, DeploymentPlan plan, String name, String displayText, boolean isDefault) throws ConcurrentOperationException; diff --git a/engine/orchestration/src/main/java/com/cloud/agent/manager/AgentManagerImpl.java b/engine/orchestration/src/main/java/com/cloud/agent/manager/AgentManagerImpl.java index 8e910c55cabe..b74c11cf1384 100644 --- a/engine/orchestration/src/main/java/com/cloud/agent/manager/AgentManagerImpl.java +++ b/engine/orchestration/src/main/java/com/cloud/agent/manager/AgentManagerImpl.java @@ -42,6 +42,7 @@ import com.cloud.utils.NumbersUtil; import org.apache.cloudstack.agent.lb.IndirectAgentLB; 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.Configurable; import org.apache.cloudstack.framework.config.dao.ConfigurationDao; @@ -1783,6 +1784,7 @@ public void processConnect(final Host host, final StartupCommand cmd, final bool Map params = new HashMap(); params.put(Config.RouterAggregationCommandEachTimeout.toString(), _configDao.getValue(Config.RouterAggregationCommandEachTimeout.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 { SetHostParamsCommand cmds = new SetHostParamsCommand(params); diff --git a/engine/orchestration/src/main/java/org/apache/cloudstack/engine/orchestration/NetworkOrchestrator.java b/engine/orchestration/src/main/java/org/apache/cloudstack/engine/orchestration/NetworkOrchestrator.java index 1a3edb59a07a..577b0915ddec 100644 --- a/engine/orchestration/src/main/java/org/apache/cloudstack/engine/orchestration/NetworkOrchestrator.java +++ b/engine/orchestration/src/main/java/org/apache/cloudstack/engine/orchestration/NetworkOrchestrator.java @@ -4648,6 +4648,7 @@ public String getConfigComponentName() { public ConfigKey[] getConfigKeys() { return new ConfigKey[]{NetworkGcWait, NetworkGcInterval, NetworkLockTimeout, GuestDomainSuffix, NetworkThrottlingRate, MinVRVersion, - PromiscuousMode, MacAddressChanges, ForgedTransmits, MacLearning, RollingRestartEnabled}; + PromiscuousMode, MacAddressChanges, ForgedTransmits, MacLearning, RollingRestartEnabled, + TUNGSTEN_ENABLED }; } } diff --git a/plugins/hypervisors/kvm/src/main/java/com/cloud/hypervisor/kvm/resource/LibvirtComputingResource.java b/plugins/hypervisors/kvm/src/main/java/com/cloud/hypervisor/kvm/resource/LibvirtComputingResource.java index a24a0464b0ee..b5260b37965c 100644 --- a/plugins/hypervisors/kvm/src/main/java/com/cloud/hypervisor/kvm/resource/LibvirtComputingResource.java +++ b/plugins/hypervisors/kvm/src/main/java/com/cloud/hypervisor/kvm/resource/LibvirtComputingResource.java @@ -50,7 +50,7 @@ import javax.xml.parsers.ParserConfigurationException; 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.to.PrimaryDataStoreTO; import org.apache.cloudstack.storage.to.TemplateObjectTO; @@ -462,6 +462,8 @@ public class LibvirtComputingResource extends ServerResourceBase implements Serv protected LibvirtDomainXMLParser parser = new LibvirtDomainXMLParser(); + private boolean isTungstenEnabled = false; + private static Gson gson = new Gson(); /** @@ -1396,6 +1398,10 @@ public boolean configureHostParams(final Map params) { _migrateWait = intValue; } + if (params.get(NetworkOrchestrationService.TUNGSTEN_ENABLED.key()) != null) { + isTungstenEnabled = Boolean.parseBoolean(params.get(NetworkOrchestrationService.TUNGSTEN_ENABLED.key())); + } + return true; } @@ -1481,8 +1487,8 @@ protected void configureVifDrivers(final Map params) throws Conf defaultVifDriverName = DEFAULT_BRIDGE_VIF_DRIVER_CLASS_NAME; } } - tungstenVifDriver = getVifDriverClass(DEFAULT_TUNGSTEN_VIF_DRIVER_CLASS_NAME, params); _defaultVifDriver = getVifDriverClass(defaultVifDriverName, params); + tungstenVifDriver = getVifDriverClass(DEFAULT_TUNGSTEN_VIF_DRIVER_CLASS_NAME, params); // Load any per-traffic-type vif drivers for (final Map.Entry entry : params.entrySet()) { @@ -1556,7 +1562,7 @@ public List getAllVifDrivers() { final Set vifDrivers = new HashSet(); vifDrivers.add(_defaultVifDriver); - if (TungstenService.isTungstenEnabled(Long.parseLong(_dcId))) { + if (isTungstenEnabled) { vifDrivers.add(tungstenVifDriver); } vifDrivers.addAll(_trafficTypeVifDrivers.values()); diff --git a/plugins/hypervisors/kvm/src/main/java/com/cloud/hypervisor/kvm/resource/VRouterVifDriver.java b/plugins/hypervisors/kvm/src/main/java/com/cloud/hypervisor/kvm/resource/VRouterVifDriver.java index 5876602bc641..e6d9801e22c9 100644 --- a/plugins/hypervisors/kvm/src/main/java/com/cloud/hypervisor/kvm/resource/VRouterVifDriver.java +++ b/plugins/hypervisors/kvm/src/main/java/com/cloud/hypervisor/kvm/resource/VRouterVifDriver.java @@ -107,7 +107,8 @@ public void createControlNetwork(final String privBrName) { @Override public boolean isExistingBridge(String 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 diff --git a/plugins/network-elements/tungsten/src/main/java/org/apache/cloudstack/network/tungsten/service/TungstenService.java b/plugins/network-elements/tungsten/src/main/java/org/apache/cloudstack/network/tungsten/service/TungstenService.java index 5f6b02b72149..25c405bf97c4 100644 --- a/plugins/network-elements/tungsten/src/main/java/org/apache/cloudstack/network/tungsten/service/TungstenService.java +++ b/plugins/network-elements/tungsten/src/main/java/org/apache/cloudstack/network/tungsten/service/TungstenService.java @@ -25,7 +25,6 @@ import com.cloud.network.lb.LoadBalancingRule; import com.cloud.vm.VMInstanceVO; 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.TungstenFabricApplicationPolicySetResponse; import org.apache.cloudstack.network.tungsten.api.response.TungstenFabricFirewallPolicyResponse; @@ -42,13 +41,6 @@ public interface TungstenService { - static final ConfigKey TUNGSTEN_ENABLED = new ConfigKey(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); List getTungstenProviders(); diff --git a/plugins/network-elements/tungsten/src/main/java/org/apache/cloudstack/network/tungsten/service/TungstenServiceImpl.java b/plugins/network-elements/tungsten/src/main/java/org/apache/cloudstack/network/tungsten/service/TungstenServiceImpl.java index f54aaba1d77b..ad20a98984f7 100644 --- a/plugins/network-elements/tungsten/src/main/java/org/apache/cloudstack/network/tungsten/service/TungstenServiceImpl.java +++ b/plugins/network-elements/tungsten/src/main/java/org/apache/cloudstack/network/tungsten/service/TungstenServiceImpl.java @@ -115,8 +115,6 @@ import net.juniper.tungsten.api.types.VirtualNetwork; import org.apache.cloudstack.api.BaseResponse; 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.messagebus.MessageBus; import org.apache.cloudstack.network.tungsten.agent.api.AddTungstenNetworkGatewayToLogicalRouterCommand; @@ -230,7 +228,7 @@ 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 String NETWORK = "network"; @@ -2540,16 +2538,4 @@ private List filterByName(List apiObject } return resultList; } - - @Override - public String getConfigComponentName() { - return TungstenServiceImpl.class.getSimpleName(); - } - - @Override - public ConfigKey[] getConfigKeys() { - return new ConfigKey[] { - TUNGSTEN_ENABLED - }; - } } diff --git a/scripts/vm/network/tungsten/create_tap_device.sh b/scripts/vm/network/tungsten/create_tap_device.sh old mode 100644 new mode 100755 diff --git a/scripts/vm/network/tungsten/delete_tap_device.sh b/scripts/vm/network/tungsten/delete_tap_device.sh old mode 100644 new mode 100755 diff --git a/scripts/vm/network/tungsten/setup_tungsten_vrouter.sh b/scripts/vm/network/tungsten/setup_tungsten_vrouter.sh old mode 100644 new mode 100755 diff --git a/scripts/vm/network/tungsten/update_tungsten_loadbalancer_ssl.sh b/scripts/vm/network/tungsten/update_tungsten_loadbalancer_ssl.sh old mode 100644 new mode 100755 diff --git a/scripts/vm/network/tungsten/update_tungsten_loadbalancer_stats.sh b/scripts/vm/network/tungsten/update_tungsten_loadbalancer_stats.sh old mode 100644 new mode 100755 diff --git a/tools/apidoc/gen_toc.py b/tools/apidoc/gen_toc.py index 9624169db5c9..1352800c2bf7 100644 --- a/tools/apidoc/gen_toc.py +++ b/tools/apidoc/gen_toc.py @@ -87,11 +87,8 @@ 'OpenDaylight': 'Network', 'createServiceInstance': 'Network', 'addGloboDnsHost': 'Network', - 'createTungstenFabricController': 'Tungsten', 'createTungstenFabricProvider': 'Tungsten', - 'deleteTungstenFabricProvider': 'Tungsten', 'listTungstenFabricProviders': 'Tungsten', - 'getTungstenFabricProviders': 'Tungsten', 'configTungstenFabricService': 'Tungsten', 'createTungstenFabricPublicNetwork': 'Tungsten', 'synchronizeTungstenFabricData': 'Tungsten', @@ -119,46 +116,21 @@ 'createTungstenFabricFirewallRule': 'Tungsten', 'createTungstenFabricServiceGroup': 'Tungsten', 'createTungstenFabricAddressGroup': 'Tungsten', - 'createTungstenFabricInterfaceRouteTable': 'Tungsten', - 'createTungstenFabricNetworkRouteTable': 'Tungsten', 'createTungstenFabricLogicalRouter': 'Tungsten', - 'createTungstenFabricRoutingPolicy': 'Tungsten', - 'addTungstenFabricFirewallPolicy': 'Tungsten', - 'addTungstenFabricFirewallRule': 'Tungsten', - 'addTungstenFabricRouteTableToInterface': 'Tungsten', - 'addTungstenFabricRouteTableToNetwork': 'Tungsten', - 'addTungstenFabricInterfaceStaticRoute': 'Tungsten', - 'addTungstenFabricNetworkStaticRoute': 'Tungsten', 'addTungstenFabricNetworkGatewayToLogicalRouter': 'Tungsten', - 'addTungstenFabricRoutingPolicyTerm': 'Tungsten', 'listTungstenFabricApplicationPolicySet': 'Tungsten', 'listTungstenFabricFirewallPolicy': 'Tungsten', 'listTungstenFabricFirewallRule': 'Tungsten', 'listTungstenFabricServiceGroup': 'Tungsten', 'listTungstenFabricAddressGroup': 'Tungsten', - 'listTungstenFabricInterfaceRouteTable': 'Tungsten', - 'listTungstenFabricNetworkRouteTable': 'Tungsten', - 'listTungstenFabricInterfaceStaticRoute': 'Tungsten', - 'listTungstenFabricNetworkStaticRoute': 'Tungsten', 'listTungstenFabricLogicalRouter': 'Tungsten', - 'listTungstenFabricRoutingPolicy': 'Tungsten', 'deleteTungstenFabricApplicationPolicySet': 'Tungsten', 'deleteTungstenFabricFirewallPolicy': 'Tungsten', 'deleteTungstenFabricFirewallRule': 'Tungsten', 'deleteTungstenFabricAddressGroup': 'Tungsten', 'deleteTungstenFabricServiceGroup': 'Tungsten', 'deleteTungstenFabricLogicalRouter': 'Tungsten', - 'removeTungstenFabricFirewallPolicy': 'Tungsten', - 'removeTungstenFabricFirewallRule': 'Tungsten', - 'removeTungstenFabricInterfaceRouteTable': 'Tungsten', - 'removeTungstenFabricNetworkRouteTable': 'Tungsten', - 'removeTungstenFabricInterfaceStaticRoute': 'Tungsten', - 'removeTungstenFabricNetworkStaticRoute': 'Tungsten', - 'removeTungstenFabricRouteTableFromInterface': 'Tungsten', - 'removeTungstenFabricRouteTableFromNetwork': 'Tungsten', 'removeTungstenFabricNetworkGatewayFromLogicalRouter': 'Tungsten', - 'removeTungstenFabricRoutingPolicy': 'Tungsten', - 'removeTungstenFabricRoutingPolicyTerm': 'Tungsten', 'updateTungstenFabricLBHealthMonitor': 'Tungsten', 'listTungstenFabricLBHealthMonitor': 'Tungsten', 'Vpn': 'VPN', diff --git a/ui/public/locales/en.json b/ui/public/locales/en.json index 9177bdde0067..4969f2839000 100644 --- a/ui/public/locales/en.json +++ b/ui/public/locales/en.json @@ -68,10 +68,12 @@ "label.action.delete.domain": "Delete domain", "label.action.delete.egress.firewall": "Delete egress firewall rule", "label.action.delete.firewall": "Delete firewall rule", +"label.action.delete.interface.static.route": "Remove Tungsten Fabric interface static route", "label.action.delete.ip.range": "Delete IP range", "label.action.delete.iso": "Delete ISO", "label.action.delete.load.balancer": "Delete load balancer rule", "label.action.delete.network": "Delete network", +"label.action.delete.network.static.route": "Remove Tungsten Fabric network static route", "label.action.delete.network.permission": "Delete network permission", "label.action.delete.node": "Delete node", "label.action.delete.physical.network": "Delete physical network", @@ -83,6 +85,7 @@ "label.action.delete.snapshot": "Delete snapshot", "label.action.delete.system.service.offering": "Delete system service offering", "label.action.delete.template": "Delete template", +"label.action.delete.tungsten.router.table": "Remove Tungsten Fabric route table from network", "label.action.delete.user": "Delete user", "label.action.delete.volume": "Delete volume", "label.action.delete.zone": "Delete zone", @@ -118,6 +121,7 @@ "label.action.force.reconnect": "Force reconnect", "label.action.generate.keys": "Generate keys", "label.action.get.diagnostics": "Get diagnostics data", +"label.action.health.monitor": "Health monitor", "label.action.image.store.read.only": "Make image store read-only", "label.action.image.store.read.write": "Make image store read-write", "label.action.import.export.instances": "Import-Export instances", @@ -143,6 +147,10 @@ "label.action.release.ip": "Release IP", "label.action.release.reserved.ip": "Release reserved IP", "label.action.remove.host": "Remove host", +"label.action.remove.logical.router": "Remove Logical Router", +"label.action.remove.network.policy": "Remove Network Policy", +"label.action.remove.router.table.from.interface": "Remove Tungsten Fabric route table from interface", +"label.action.remove.tungsten.routing.policy": "Remove Tungsten-Fabric routing policy from network", "label.action.remove.nic": "Remove NIC", "label.action.reserve.ip": "Reserve Public IP", "label.action.reset.network.permissions": "Reset network permissions", @@ -167,6 +175,7 @@ "label.action.unmanage.virtualmachine": "Unmanage VM", "label.action.update.offering.access": "Update offering access", "label.action.update.resource.count": "Update resource count", +"label.action.value": "Action/Value", "label.action.userdata.reset": "Reset userdata", "label.action.vmsnapshot.create": "Take VM snapshot", "label.action.vmsnapshot.delete": "Delete VM snapshot", @@ -194,6 +203,7 @@ "label.add.egress.rule": "Add egress rule", "label.add.f5.device": "Add F5 device", "label.add.firewall": "Add firewall rule", +"label.add.firewallrule": "Add Firewall Rule", "label.add.guest.network": "Add guest network", "label.add.host": "Add host", "label.add.ingress.rule": "Add ingress rule", @@ -205,6 +215,7 @@ "label.add.kubernetes.cluster": "Add Kubernetes cluster", "label.add.ldap.account": "Add LDAP account", "label.add.list.name": "ACL List name", +"label.add.logical.router": "Add Logical Router to this network", "label.add.more": "Add more", "label.add.netscaler.device": "Add Netscaler device", "label.add.network": "Add network", @@ -221,12 +232,15 @@ "label.add.param": "Add param", "label.add.physical.network": "Add physical network", "label.add.pod": "Add pod", +"label.add.prefix": "Add prefix", "label.add.policy": "Add policy", "label.add.primary.storage": "Add primary storage", "label.add.private.gateway": "Add private gateway", "label.add.resources": "Add resources", "label.add.role": "Add role", "label.add.route": "Add route", +"label.add.router.table.to.instance": "Add router table to this instance", +"label.add.routing.policy": "Add routing policy", "label.add.rule": "Add rule", "label.add.secondary.ip": "Add secondary IP", "label.add.secondary.storage": "Add secondary storage", @@ -235,8 +249,24 @@ "label.add.srx.device": "Add SRX device", "label.add.static.route": "Add static route", "label.add.system.service.offering": "Add system service offering", +"label.add.term.then": "Add term", "label.add.traffic": "Add traffic", "label.add.traffic.type": "Add traffic type", +"label.add.tungsten.address.group": "Add Address Group", +"label.add.tungsten.fabric.route": "Add Tungsten Fabric network routing table", +"label.add.tungsten.firewall.policy": "Add Firewall Policy", +"label.add.tungsten.firewall.rule": "Add Firewall Rule", +"label.add.tungsten.interface.route": "Add Tungsten Fabric interface routing table", +"label.add.tungsten.interface.static.route": "Add Tungsten Fabric interface static route", +"label.add.tungsten.logical.route": "Add Logical Router", +"label.add.tungsten.network.static.route": "Add Tungsten Fabric network static route", +"label.add.tungsten.policy": "Add Policy", +"label.add.tungsten.policy.set": "Add Application Policy Set", +"label.add.tungsten.router.table": "Add route table to this network", +"label.add.tungsten.routing.policy": "Add routing policy to this network", +"label.add.tungsten.service.group": "Add Service Group", +"label.add.tungsten.tag": "Add Tag", +"label.add.tungsten.tag.type": "Add Tag Type", "label.add.user": "Add user", "label.add.upstream.ipv6.routes": "Add upstream IPv6 routes", "label.add.vm": "Add VM", @@ -252,6 +282,7 @@ "label.adding": "Adding", "label.adding.user": "Adding user...", "label.address": "Address", +"label.address.group": "Address group", "label.admin": "Domain admin", "label.advanced": "Advanced", "label.advanced.mode": "Advanced mode", @@ -280,8 +311,6 @@ "label.annotation": "Comment", "label.annotations": "Comments", "label.adminsonly": "Only visible to administrators", -"label.entityid": "Entity", -"label.entitytype": "Entity type", "label.annotation.everyone": "Visible to everyone", "label.anti.affinity": "Anti-affinity", "label.anti.affinity.group": "Anti-affinity group", @@ -289,7 +318,11 @@ "label.apikey": "API key", "label.app.cookie": "AppCookie", "label.app.name": "CloudStack", +"label.application.policy.set": "Application Policy Set", "label.apply": "Apply", +"label.apply.tungsten.firewall.policy": "Apply Firewall Policy", +"label.apply.tungsten.network.policy": "Apply Network Policy", +"label.apply.tungsten.tag": "Apply tag", "label.archive": "Archive", "label.archive.alerts": "Archive alerts", "label.archive.events": "Archive events", @@ -312,6 +345,7 @@ "label.auto.assign": "Automatically assign", "label.auto.assign.diskoffering.disk.size": "Automatically assign offering matching the disk size", "label.auto.assign.random.ip": "Automatically assign a random IP address", +"label.automigrate.volume": "Auto migrate volume to another storage pool if required", "label.autoscale.vm.groups": "AutoScale VM Groups", "label.autoscale.vm.profile": "AutoScale VM Profile", "label.autoscalingenabled": "Auto scaling", @@ -377,8 +411,8 @@ "label.change.affinity": "Change affinity", "label.change.ip.address": "Change IP address", "label.change.ipaddress": "Change IP address for NIC", -"label.change.service.offering": "Change service offering", "label.change.offering.for.volume": "Change disk offering for the volume", +"label.change.service.offering": "Change service offering", "label.character": "Character", "label.checksum": "Checksum", "label.choose.resource.icon": "Choose icon", @@ -395,8 +429,8 @@ "label.cks.cluster.size": "Cluster size (Worker nodes)", "label.cleanup": "Clean up", "label.clear": "Clear", -"label.clear.notification": "Clear notification", "label.clear.list": "Clear list", +"label.clear.notification": "Clear notification", "label.close": "Close", "label.cloudian.storage": "Cloudian storage", "label.cluster": "Cluster", @@ -413,15 +447,17 @@ "label.columns": "Columns", "label.comma.separated.list.description": "Enter comma-separated list of commands", "label.comments": "Comments", +"label.communities": "Communities", "label.community": "Community", "label.complete": "Complete", "label.compute": "Compute", +"label.compute.offerings": "Compute offerings", "label.computeonly.offering": "Compute only disk offering", "label.computeonly.offering.tooltip": "Option to specify root disk related information in the compute offering or to directly link a disk offering to the compute offering", -"label.compute.offerings": "Compute offerings", "label.conditions": "Conditions", "label.configuration": "Configuration", "label.configure": "Configure", +"label.configure.health.monitor": "Configure Health Monitor", "label.configure.ldap": "Configure LDAP", "label.configure.ovs": "Configure Ovs", "label.configure.sticky.policy": "Configure sticky policy", @@ -432,7 +468,17 @@ "label.confirm.delete.loadbalancer.rules": "Please confirm you wish to delete the selected load balancing rules.", "label.confirm.delete.portforward.rules": "Please confirm you wish to delete the selected port-forward rules.", "label.confirm.delete.templates": "Please confirm you wish to delete the selected templates.", +"label.confirm.delete.tungsten.address.group": "Please confirm that you would like to delete this Address Group", +"label.confirm.delete.tungsten.firewall.policy": "Please confirm that you would like to delete this Firewall Policy", +"label.confirm.delete.tungsten.policy": "Please confirm that you would like to delete this Policy", +"label.confirm.delete.tungsten.policy.set": "Please confirm that you would like to delete this Application Policy Set", +"label.confirm.delete.tungsten.service.group": "Please confirm that you would like to delete this Service Group", +"label.confirm.delete.tungsten.tag": "Please confirm that you would like to delete this Tag", +"label.confirm.delete.tungsten.tag.type": "Please confirm that you would like to delete this Tag Type", "label.confirm.release.public.ip.addresses": "Please confirm you wish to release the selected public IP addresses.", +"label.confirm.remove.logical.router": "Please confirm that you would like to delete this Logical Router", +"label.confirm.remove.network.route.table": "Please confirm that you would like to delete this network Route Table", +"label.confirm.remove.route.table": "Please confirm that you would like to delete this Interface Route Table", "label.confirmacceptinvitation": "Please confirm you wish to join this project.", "label.confirmation": "Confirmation", "label.confirmdeclineinvitation": "Are you sure you want to decline this project invitation?", @@ -477,6 +523,7 @@ "label.create.nfs.secondary.staging.storage": "Create NFS secondary staging storage", "label.create.project": "Create project", "label.create.project.role": "Create project role", +"label.create.routing.policy": "Create Routing Policy", "label.create.site.vpn.connection": "Create site-to-site VPN connection", "label.create.site.vpn.gateway": "Create site-to-site VPN gateway", "label.create.snapshot.for.volume": "Created snapshot for volume", @@ -488,6 +535,7 @@ "label.create.tier.name.description": "A unique name for the tier.", "label.create.tier.netmask.description": "The tier's netmask. For example 255.255.255.0", "label.create.tier.networkofferingid.description": "The network offering for the tier.", +"label.create.tungsten.routing.policy": "Create Tungsten-Fabric routing policy", "label.create.user": "Create user", "label.create.vpn.connection": "Create VPN connection", "label.created": "Created", @@ -559,6 +607,15 @@ "label.delete.snapshot.policy": "Delete snapshot policy", "label.delete.srx": "Delete SRX", "label.delete.sslcertificate": "Delete SSL certificate", +"label.delete.tag": "Remove tag", +"label.delete.term": "Delete term", +"label.delete.tungsten.address.group": "Delete Address Group", +"label.delete.tungsten.fabric.tag": "Delete Tag", +"label.delete.tungsten.fabric.tag.type": "Delete Tag type", +"label.delete.tungsten.firewall.policy": "Delete Firewall Policy", +"label.delete.tungsten.policy": "Delete Policy", +"label.delete.tungsten.policy.set": "Delete Policy Set", +"label.delete.tungsten.service.group": "Delete Service Group", "label.delete.volumes": "Data volumes to be deleted", "label.delete.vpn.connection": "Delete VPN connection", "label.delete.vpn.customer.gateway": "Delete VPN customer gateway", @@ -578,11 +635,21 @@ "label.desc.importexportinstancewizard": "Import and export instances to/from an existing VMware cluster.", "label.desc.usage.stats": "Usage Server Statistics", "label.description": "Description", +"label.destaddressgroupuuid": "Destination Address Group", "label.destcidr": "Destination CIDR", +"label.destendport": "Destination End Port", "label.destination": "Destination", "label.destinationphysicalnetworkid": "Destination physical network ID", +"label.destinationtype": "Destination Type", +"label.destipprefix": "Destination Network Address", +"label.destipprefixlen": "Destination Prefix Length", +"label.destnetwork": "Destination Network", +"label.destnetworkuuid": "Network", +"label.destport": "Destination Ports", "label.destroy": "Destroy", "label.destroy.router": "Destroy router", +"label.deststartport": "Destination Start Port", +"label.desttaguuid": "Destination Tag", "label.details": "Details", "label.deviceid": "Device ID", "label.devices": "Devices", @@ -590,6 +657,7 @@ "label.direct.attached.public.ip": "Direct attached public IP", "label.direct.ips": "Shared network IPs", "label.directdownload": "Direct download", +"label.direction": "Direction", "label.disable.autoscale.vmgroup": "Disable AutoScale VM Group", "label.disable.host": "Disable host", "label.disable.network.offering": "Disable network offering", @@ -620,12 +688,10 @@ "label.diskoffering": "Disk offering", "label.diskofferingdisplaytext": "Disk offering", "label.diskofferingid": "Disk offering", -"label.diskofferingstrictness": "Disk offering strictness", "label.disksize": "Disk size (in GB)", "label.disksizeallocated": "Disk allocated", "label.disksizeallocatedgb": "Allocated", "label.disksizefree": "Disk free", -"label.disksizestrictness": "Disk size strictness", "label.disksizetotal": "Disk total", "label.disksizetotalgb": "Total", "label.disksizeunallocatedgb": "Unallocated", @@ -668,6 +734,8 @@ "label.duration.7days": "7 days", "label.dynamicscalingenabled": "Dynamic scaling enabled", "label.dynamicscalingenabled.tooltip": "VM can dynamically scale only when dynamic scaling is enabled on template, service offering and global setting.", +"label.diskofferingstrictness": "Disk offering strictness", +"label.disksizestrictness": "Disk size strictness", "label.edge": "Edge", "label.edge.zone": "Edge Zone", "label.edit": "Edit", @@ -709,6 +777,8 @@ "label.endpoint": "Endpoint", "label.endport": "End port", "label.enter.token": "Enter token", +"label.entityid": "Entity", +"label.entitytype": "Entity Type", "label.error": "Error", "label.error.caught": "Error caught", "label.error.code": "Error code", @@ -747,13 +817,18 @@ "label.fetch.latest": "Fetch latest", "label.files": "Alternate files to retrieve", "label.filter": "Filter", -"label.filter.annotations.self": "Created by me", "label.filter.annotations.all": "All comments", +"label.filter.annotations.self": "Created by me", "label.filterby": "Filter by", "label.fingerprint": "FingerPrint", +"label.finish": "Finish", "label.firewall": "Firewall", +"label.firewall.policy": "Firewall Policy", +"label.firewallpolicy": "Firewall Policy", "label.firewallrule": "Firewall rule", +"label.firewallruleuuid": "Firewall Rule", "label.firstname": "First name", +"label.firstname.lower": "firstname", "label.fix.errors": "Fix errors", "label.fixed": "Fixed offering", "label.for": "for", @@ -881,6 +956,8 @@ "label.instancename": "Internal name", "label.instanceport": "Instance port", "label.instances": "Instances", +"label.interface.route.table": "Interface Route Table", +"label.interface.router.table": "Interface Router Table", "label.intermediate.certificate": "Intermediate certificate", "label.internal.dns.1": "Internal DNS 1", "label.internal.dns.2": "Internal DNS 2", @@ -923,6 +1000,8 @@ "label.ip6gateway": "IPv6 Gateway", "label.ipaddress": "IP Address", "label.iplimit": "Public IP Limits", +"label.ipprefix": "IP Prefix", +"label.ipprefixlen": "IP Prefix Length", "label.ips": "IPs", "label.ipsecpsk": "IPsec preshared-Key", "label.iptotal": "Total of IP Addresses", @@ -1068,6 +1147,7 @@ "label.macaddresschanges": "MAC address changes", "label.maclearning": "MAC learning", "label.macos": "MacOS", +"label.majorsequence": "Major Sequence", "label.make": "Make", "label.make.project.owner": "Make account project owner", "label.make.user.project.owner": "Make user project owner", @@ -1081,6 +1161,7 @@ "label.management.server": "Management server", "label.management.servers": "Management servers", "label.managementservers": "Number of management servers", +"label.matchall": "Match all", "label.max.primary.storage": "Max. primary (GiB)", "label.max.secondary.storage": "Max. secondary (GiB)", "label.maxcpu": "Max. CPU cores", @@ -1150,10 +1231,18 @@ "label.minmaxiops": "Min IOPS / Max IOPS", "label.minmembers": "Min members", "label.minmemory": "Min memory (in MB)", +"label.minorsequence": "Minor Sequence", "label.minsize": "Minimum size", "label.minute.past.hour": "minute(s) past the hour", "label.monday": "Monday", "label.monitor": "Monitor", +"label.monitor.expected.code": "Expected HTTP Status Code", +"label.monitor.http.method": "HTTP Method", +"label.monitor.interval": "Health check interval (sec)", +"label.monitor.retry": "Retry count before markdown", +"label.monitor.timeout": "Timeout (sec)", +"label.monitor.type": "Monitor Type", +"label.monitor.url": "URL Path", "label.monthly": "Monthly", "label.more.access.dashboard.ui": "More about accessing dashboard UI", "label.move.down.row": "Move down one row", @@ -1181,6 +1270,9 @@ "label.network.name": "Network name", "label.network.offering": "Network offering", "label.network.offerings": "Network offerings", +"label.network.policy": "Network Policy", +"label.network.route.table": "Network route table", +"label.network.routing.policy": "Network routing policy", "label.network.permissions": "Network permissions", "label.network.selection": "Network selection", "label.network.service.providers": "Network service providers", @@ -1326,6 +1418,8 @@ "label.podid": "Pod", "label.podname": "Pod name", "label.pods": "Pods", +"label.policy": "Policy", +"label.policyuuid": "Network Policy", "label.port": "Port", "label.port.range": "Port range", "label.portforwarding": "Port forwarding", @@ -1337,6 +1431,7 @@ "label.powerstate": "Power state", "label.preferred": "Preferred", "label.prefix": "Prefix", +"label.prefix.type": "Prefix type", "label.presetup": "PreSetup", "label.prev": "Prev", "label.previous": "Previous", @@ -1461,16 +1556,22 @@ "label.remove": "Remove", "label.remove.annotation": "Remove comment", "label.remove.egress.rule": "Remove egress rule", +"label.remove.interface.route.table": "Remove Tungsten interface route table", "label.remove.ip.range": "Remove IP range", "label.remove.ldap": "Remove LDAP", +"label.remove.logical.network": "Remove Network from logical router", +"label.remove.logical.router": "Remove logical router", "label.remove.network.offering": "Remove network offering", +"label.remove.network.route.table": "Remove Tungsten Fabric network routing table", "label.remove.pf": "Remove port forwarding rule", "label.remove.policy": "Remove policy", "label.remove.project.account": "Remove account from project", "label.remove.project.role": "Remove project role", "label.remove.project.user": "Remove user from project", +"label.remove.routing.policy": "Remove Tungsten-Fabric routing policy", "label.remove.rule": "Remove rule", "label.remove.ssh.key.pair": "Remove SSH Key pair", +"label.remove.tungsten.tag": "Remove Tag", "label.remove.user.data": "Remove userdata", "label.remove.vm.from.lb": "Remove VM from load balancer rule", "label.remove.vmware.datacenter": "Remove VMware Datacenter", @@ -1522,6 +1623,9 @@ "label.rootdiskcontrollertype": "Root disk controller", "label.rootdiskcontrollertypekvm": "Root disk controller", "label.rootdisksize": "Root disk size (GB)", +"label.routenexthop": "Route next hop", +"label.routenexthoptype": "Route next hop type", +"label.routeprefix": "Route prefix", "label.router.health.check.last.updated": "Last updated", "label.router.health.check.name": "Check name", "label.router.health.check.success": "Success", @@ -1530,6 +1634,9 @@ "label.routerip": "IPv4 address for the VR in this shared network.", "label.routeripv6": "IPv6 address for the VR in this shared network.", "label.resourcegroup": "Resource group", +"label.routing.policy": "Routing policy", +"label.routing.policy.terms": "Routing policy terms", +"label.routing.policy.terms.then": "Routing policy terms then", "label.rule": "Rule", "label.rule.number": "Rule number", "label.rules": "Rules", @@ -1601,10 +1708,12 @@ "label.semanticversion": "Semantic version", "label.sent": "Date", "label.sentbytes": "Bytes sent", +"label.sequence": "Sequence", "label.server": "Server", "label.server.certificate": "Server certificate", "label.service.connectivity.distributedroutercapabilitycheckbox": "Distributed router", "label.service.connectivity.regionlevelvpccapabilitycheckbox": "Region level VPC", +"label.service.group": "Service group", "label.service.lb.elasticlbcheckbox": "Elastic LB", "label.service.lb.inlinemodedropdown": "Mode", "label.service.lb.lbisolationdropdown": "LB isolation", @@ -1613,6 +1722,7 @@ "label.service.offering": "Service offering", "label.service.staticnat.associatepublicip": "Associate public IP", "label.service.staticnat.elasticipcheckbox": "Elastic IP", +"label.servicegroupuuid": "Service Group", "label.servicelist": "Services", "label.serviceofferingid": "Compute offering", "label.serviceofferingname": "Compute offering", @@ -1655,10 +1765,19 @@ "label.sourcenatsupported": "Source NAT supported", "label.sourcenattype": "Supported source NAT type", "label.sourceport": "Source port", +"label.sourcetype": "Source type", "label.specifyipranges": "Specify IP ranges", "label.specifyvlan": "Specify VLAN", "label.splitconnections": "Split connections", "label.sr.name": "SR Name-Label", +"label.srcaddressgroupuuid": "Source Address Group", +"label.srcendport": "Source End Port", +"label.srcipprefix": "Source Network Address", +"label.srcipprefixlen": "Source Prefix Length", +"label.srcnetwork": "Source Network", +"label.srcnetworkuuid": "Network", +"label.srcstartport": "Source Start Port", +"label.srctaguuid": "Source Tag", "label.srx": "SRX", "label.srx.firewall": "Juniper SRX firewall", "label.ssh.key.pairs": "SSH key pairs", @@ -1757,10 +1876,14 @@ "label.systemtotalcpucycles": "Total CPU capacity for all cores in MHz", "label.systemvm": "System VM", "label.systemvmtype": "System VM type", +"label.tag": "Tag", "label.tag.key": "Tag key", "label.tag.value": "Tag value", "label.tagged": "Tagged", "label.tags": "Tags", +"label.tag.type": "Tag Type", +"label.tagtypeuuid": "Tag Type", +"label.taguuid": "Tag", "label.taken": "Taken", "label.target.iqn": "Target IQN", "label.tariffactions": "Actions", @@ -1780,6 +1903,7 @@ "label.templatesubject": "Subject", "label.templatetype": "Template type", "label.templateversion": "Template version", +"label.term.type": "Term type", "label.tftpdir": "TFTP root directory", "label.theme.alert": "The setting is only visible to the current browser. To apply the setting, please download the JSON file and replace its content in the `theme` section of the `config.json` file under the path: `/public/config.json`", "label.theme.color": "Theme color", @@ -1818,6 +1942,32 @@ "label.transportzoneuuid": "Transport zone UUID", "label.try.again": "Try again", "label.tuesday": "Tuesday", +"label.tungsten.fabric": "Tungsten Fabric", +"label.tungsten.fabric.provider": "Tungsten Fabric Provider", +"label.tungsten.fabric.routing": "Tungsten Fabric Routing", +"label.tungsten.interface.router.table": "Interface route table", +"label.tungsten.logical.router": "Logical Router", +"label.tungsten.network.router.table": "Network route table", +"label.tungsten.provider": "Tungsten provider", +"label.tungsten.provider.gateway": "Tungsten provider gateway", +"label.tungsten.provider.hostname": "Tungsten provider hostname", +"label.tungsten.provider.introspectport": "Tungsten provider introspect port", +"label.tungsten.provider.name": "Tungsten provider name", +"label.tungsten.provider.port": "Tungsten provider port", +"label.tungsten.provider.vrouterport": "Tungsten provider vrouter port", +"label.tungsten.router.table": "Router Table", +"label.tungsten.routing.polices": "Routing policies", +"label.tungsten.static.routes": "Static Routes", +"label.tungstengateway": "Gateway", +"label.tungsteninterfaceroutetablename": "Name", +"label.tungstennetworkroutetablename": "Name", +"label.tungstenproviderhostname": "Provider hostname", +"label.tungstenproviderintrospectport": "Provider introspect port", +"label.tungstenproviderport": "Provider port", +"label.tungstenprovideruuid": "Provider Uuid", +"label.tungstenprovidervrouterport": "Provider vrouter port", +"label.tungstenroutingpolicyterm": "Network", +"label.tungstenvms": "VMs", "label.type": "Type", "label.type.id": "Type ID", "label.ucs": "UCS", @@ -2011,9 +2161,16 @@ "message.action.delete.backup.offering": "Please confirm that you want to delete this backup offering?", "message.action.delete.cluster": "Please confirm that you want to delete this cluster.", "message.action.delete.disk.offering": "Please confirm that you want to delete this disk offering.", +"message.action.delete.domain": "Please confirm that you want to delete this domain.", +"message.action.delete.external.firewall": "Please confirm that you would like to remove this external firewall. Warning: If you are planning to add back the same external firewall, you must reset usage data on the device.", +"message.action.delete.external.load.balancer": "Please confirm that you would like to remove this external load balancer. Warning: If you are planning to add back the same external load balancer, you must reset usage data on the device.", +"message.action.delete.ingress.rule": "Please confirm that you want to delete this ingress rule.", "message.action.delete.instance.group": "Please confirm that you want to delete the instance group.", +"message.action.delete.interface.static.route": "Please confirm that you want to remove this interface Static Route?", "message.action.delete.iso": "Please confirm that you want to delete this ISO.", "message.action.delete.network": "Please confirm that you want to delete this network.", +"message.action.delete.network.static.route": "Please confirm that you want to remove this network Static Route", +"message.action.delete.nexusvswitch": "Please confirm that you want to delete this nexus 1000v", "message.action.delete.node": "Please confirm that you want to delete this node.", "message.action.delete.physical.network": "Please confirm that you want to delete this physical network.", "message.action.delete.pod": "Please confirm that you want to delete this pod.", @@ -2023,6 +2180,7 @@ "message.action.delete.snapshot": "Please confirm that you want to delete this snapshot.", "message.action.delete.system.service.offering": "Please confirm that you want to delete this system service offering.", "message.action.delete.template": "Please confirm that you want to delete this template.", +"message.action.delete.tungsten.router.table": "Please confirm that you want to remove Route Table from this network?", "message.action.delete.volume": "Please confirm that you want to delete this volume.", "message.action.delete.vpn.user": "Please confirm that you want to delete the VPN user.", "message.action.delete.zone": "Please confirm that you want to delete this zone.", @@ -2054,6 +2212,9 @@ "message.action.reboot.systemvm": "Please confirm that you want to reboot this system VM.", "message.action.recover.volume": "Please confirm that you would like to recover this volume.", "message.action.release.ip": "Please confirm that you want to release this IP.", +"message.action.remove.host": "Please confirm that you want to remove this host.", +"message.action.remove.logical.router": "Please confirm that you want to remove Logical Router?", +"message.action.remove.routing.policy": "Please confirm that you want to remove Routing Policy from this network", "message.action.release.reserved.ip": "Please confirm that you want to release this reserved IP.", "message.action.reserve.ip": "Please confirm that you want to reserve this IP.", "message.action.revert.snapshot": "Please confirm that you want to revert the owning volume to this snapshot.", @@ -2080,8 +2241,9 @@ "message.add.egress.rule.processing": "Adding new egress rule...", "message.add.failed": "Adding failed.", "message.add.firewall": "Add a firewall to zone", -"message.add.firewall.rule.failed": "Adding new firewall rule failed.", -"message.add.firewall.rule.processing": "Adding new firewall rule...", +"message.add.firewall.rule.failed": "Adding new Firewall rule failed", +"message.add.firewall.rule.processing": "Adding new Firewall rule...", +"message.add.firewallrule.failed": "Adding Firewall Rule failed", "message.add.host": "Please specify the following parameters to add a new host.", "message.add.host.sshkey": "WARNING: In order to add a host with SSH key, you must ensure your hypervisor host has been configured correctly.", "message.add.iprange.processing": "Adding IP Range...", @@ -2114,23 +2276,27 @@ "message.add.tag.failed": "Failed to add new tag.", "message.add.tag.for.networkacl": "Add tag for NetworkACL", "message.add.tag.processing": "Adding new tag...", +"message.add.template": "Please enter the following data to create your new template", +"message.add.tungsten.routing.policy.available": "The Tungsten-Fabric routing policy is ready to launch. Please proceed to the next step.", "message.add.user.to.project": "This form is to enable adding specific users of an account to a project.
Furthermore, a ProjectRole may be added to the added user/account to allow/disallow API access at project level.
We can also specify the role with which the user should be added to a project - Admin/Regular; if not specified, it defaults to 'Regular'.", +"message.add.volume": "Please fill in the following data to add a new volume.", "message.add.vpn.connection.failed": "Adding VPN connection failed", -"message.add.vpn.connection.processing": "Adding VPN connection...", +"message.add.vpn.connection.processing": "Adding VPN Connection...", "message.add.vpn.customer.gateway": "Adding VPN customer gateway", "message.add.vpn.customer.gateway.processing": "Creation of VPN customer gateway is in progress", "message.add.vpn.gateway": "Please confirm that you want to add a VPN Gateway.", "message.add.vpn.gateway.failed": "Adding VPN gateway failed", "message.add.vpn.gateway.processing": "Adding VPN gateway...", +"message.added.vpc.offering": "Added VPC offering", +"message.adding.firewall.policy": "Adding Firewall Policy", "message.adding.host": "Adding host", "message.adding.netscaler.device": "Adding Netscaler device", "message.adding.netscaler.provider": "Adding Netscaler provider", "message.advanced.security.group": "Choose this if you wish to use security groups to provide guest VM isolation.", -"message.alert.show.all.stats.data": "It can return a lot of data depending on the settings for collecting and retaining stats.", "message.allowed": "Allowed", -"message.apply.success": "Applied successfully.", -"message.assign.instance.another": "Please specify the account type, domain, account name and network (optional) of the new account.
If the default NIC of the VM is on a shared network, CloudStack will check if the network can be used by the new account if you do not specify one network.
If the default NIC of the VM is on a isolated network, and the new account has more one isolated networks, you should specify one.", -"message.assign.vm.failed": "Failed to assign VM.", +"message.apply.success": "Apply Successfully", +"message.assign.instance.another": "Please specify the account type, domain, account name and network (optional) of the new account.
If the default nic of the vm is on a shared network, CloudStack will check if the network can be used by the new account if you do not specify one network.
If the default nic of the vm is on a isolated network, and the new account has more one isolated networks, you should specify one.", +"message.assign.vm.failed": "Failed to assign VM", "message.assign.vm.processing": "Assigning VM...", "message.attach.volume": "Please fill in the following data to attach a new volume. If you are attaching a disk volume to a Windows based virtual machine, you will need to reboot the instance to see the attached disk.", "message.attach.volume.failed": "Failed to attach volume.", @@ -2146,13 +2312,13 @@ "message.backup.restore": "Please confirm that you want to restore the vm backup?", "message.certificate.upload.processing": "Certificate upload in progress", "message.change.offering.confirm": "Please confirm that you wish to change the service offering of this virtual instance.", -"message.confirm.change.offering.for.volume": "Please confirm that you want to change disk offering for the volume", +"message.change.offering.for.volume": "Successfully changed offering for the volume", "message.change.offering.for.volume.failed": "Change offering for the volume failed", "message.change.offering.for.volume.processing": "Changing offering for the volume...", -"message.change.offering.for.volume": "Successfully changed offering for the volume", "message.change.password": "Please change your password.", -"message.cluster.dedicated": "Cluster dedicated", +"message.cluster.dedicated": "Cluster Dedicated", "message.cluster.dedication.released": "Cluster dedication released.", +"message.config.health.monitor.failed": "Configure Health Monitor failed", "message.config.sticky.policy.failed": "Failed to configure sticky policy.", "message.config.sticky.policy.processing": "Updating sticky policy...", "message.configuring.guest.traffic": "Configuring guest traffic", @@ -2160,9 +2326,12 @@ "message.configuring.public.traffic": "Configuring public traffic", "message.configuring.storage.traffic": "Configuring storage traffic", "message.confirm.action.force.reconnect": "Please confirm that you want to force reconnect this host.", -"message.confirm.archive.selected.alerts": "Please confirm you would like to archive the selected alerts.", -"message.confirm.archive.selected.events": "Please confirm you would like to archive the selected events.", +"message.confirm.add.router.table.to.instance": "Please confirm that you want to add Route Table to this nic", +"message.confirm.add.routing.policy": "Please confirm that you want to add Routing Policy to this network", +"message.confirm.archive.selected.alerts": "Please confirm you would like to archive the selected alerts", +"message.confirm.archive.selected.events": "Please confirm you would like to archive the selected events", "message.confirm.attach.disk": "Are you sure you want to attach disk?", +"message.confirm.change.offering.for.volume": "Please confirm that you want to change disk offering for the volume", "message.confirm.configure.ovs": "Are you sure you want to configure Ovs?", "message.confirm.delete.acl.list": "Are you sure you want to delete this ACL list?", "message.confirm.delete.bigswitchbcf": "Please confirm that you would like to delete this BigSwitch BCF Controller.", @@ -2189,8 +2358,11 @@ "message.confirm.enable.provider": "Please confirm that you would like to enable this provider.", "message.confirm.enable.storage": "Please confirm that you want to enable the storage pool.", "message.confirm.enable.vpc.offering": "Are you sure you want to enable this VPC offering?", +"message.confirm.remove.firewall.rule": "Please confirm that you want to delete this Firewall Rule?", "message.confirm.remove.ip.range": "Please confirm that you would like to remove this IP range.", "message.confirm.remove.network.offering": "Are you sure you want to remove this network offering?", +"message.confirm.remove.network.policy": "Please confirm that you want to remove this Network Policy?", +"message.confirm.remove.routing.policy": "Please confirm that you want to delete this Routing Policy?", "message.confirm.remove.selected.alerts": "Please confirm you would like to remove the selected alerts.", "message.confirm.remove.selected.events": "Please confirm you would like to remove the selected events.", "message.confirm.remove.vmware.datacenter": "Please confirm you want to remove VMware datacenter.", @@ -2204,6 +2376,7 @@ "message.confirm.upgrade.router.newer.template": "Please confirm that you want to upgrade router to use newer template.", "message.cpu.usage.info": "The CPU usage percentage can exceed 100% if the VM has more than 1 vCPU or when CPU Cap is not enabled. This behavior happens according to the hypervisor being used (e.g: in KVM), due to how they account the stats", "message.create.compute.offering": "Compute offering created", +"message.create.tungsten.public.network": "Create Tungsten-Fabric public network", "message.create.internallb": "Creating internal LB", "message.create.internallb.failed": "Failed to create internal LB.", "message.create.internallb.processing": "Creation of internal LB is in progress", @@ -2254,11 +2427,14 @@ "message.delete.tag.failed": "Failed to delete tag", "message.delete.tag.for.networkacl": "Remove tag for NetworkACL", "message.delete.tag.processing": "Deleting tag...", +"message.delete.tungsten.policy.rule": "Please confirm that you want to delete Policy Rule?", +"message.delete.tungsten.tag": "Are you sure you want to remove this Tag from this Policy?", "message.delete.user": "Please confirm that you would like to delete this user.", "message.delete.vpn.connection": "Please confirm that you want to delete VPN connection.", "message.delete.vpn.customer.gateway": "Please confirm that you want to delete this VPN customer gateway.", "message.delete.vpn.gateway": "Please confirm that you want to delete this VPN Gateway.", -"message.deleting.node": "Deleting node", +"message.deleting.firewall.policy": "Deleting Firewall Policy", +"message.deleting.node": "Deleting Node", "message.deleting.vm": "Deleting VM", "message.denied": "Denied", "message.deployasis": "Selected template is Deploy As-Is i.e., the VM is deployed by importing an OVA with vApps directly into vCenter. Root disk(s) resize is allowed only on stopped VMs for such templates.", @@ -2313,9 +2489,17 @@ "message.enter.valid.nic.ip": "Please enter a valid IP address for NIC", "message.error.access.key": "Please enter access key.", "message.error.add.guest.network": "Either IPv4 fields or IPv6 fields need to be filled when adding a guest network.", +"message.error.add.interface.static.route": "Adding interface Static Route failed", +"message.error.add.logical.router": "Adding Logical Router failed", +"message.error.add.network.static.route": "Adding network Static Route failed", +"message.error.add.policy.rule": "Adding Policy rule failed", "message.error.add.secondary.ipaddress": "There was an error adding the secondary IP Address.", +"message.error.add.tungsten.router.table": "Adding Router Table failed", +"message.error.add.tungsten.routing.policy": "Adding Tungsten-Fabric Routing Policy failed", "message.error.agent.password": "Please enter agent password.", "message.error.agent.username": "Please enter agent username.", +"message.error.apply.network.policy": "Applying Network Policy failed", +"message.error.apply.tungsten.tag": "Applying Tag failed", "message.error.binaries.iso.url": "Please enter binaries ISO URL.", "message.error.bucket": "Please enter bucket", "message.error.cloudian.console": "Single-Sign-On failed for Cloudian management console. Please ask your administrator to fix integration issues.", @@ -2325,12 +2509,16 @@ "message.error.current.password": "Please enter current password.", "message.error.custom.disk.size": "Please enter custom disk size.", "message.error.date": "Please select a date.", +"message.error.delete.interface.static.route": "Removing interface Static Route failed", +"message.error.delete.network.static.route": "Removing network Static Route failed", +"message.error.delete.tungsten.policy.rule": "Deleting Policy rule failed", +"message.error.delete.tungsten.router.table": "Removing Router Table failed", +"message.error.delete.tungsten.tag": "Removing Tag failed", "message.error.description": "Please enter description.", "message.error.discovering.feature": "Exception caught while discovering features.", "message.error.display.text": "Please enter display text.", "message.error.duration.less.than.interval": "The duration in Autoscale policy cannot be less than interval", "message.error.enable.saml": "Unable to find users IDs to enable SAML single sign on, kindly enable it manually.", -"message.error.end.date.and.time": "Please select the end date and time!", "message.error.endip": "Please enter end IP.", "message.error.gateway": "Please enter gateway.", "message.error.host.name": "Please enter host name.", @@ -2346,7 +2534,7 @@ "message.error.invalid.autoscale.vmgroup.name": "Invalid AutoScale VM group name. It can contain the ASCII letters 'a' through 'z', 'A' through 'Z', the digits '0' through '9' and the hyphen ('-'), must be between 1 and 255 characters long.", "message.error.ip.range": "Please enter valid range.", "message.error.ipv4.address": "Please enter a valid IPv4 address.", -"message.error.ipv4.dns1": "Please enter IpV4 DNS 1.", +"message.error.ipv4.dns2": "Please enter IpV4 DNS 2", "message.error.ipv6.address": "Please enter a valid IP v6 address.", "message.error.ipv6.gateway": "Please enter IpV6 Gateway", "message.error.ipv6.gateway.format": "Please enter a valid IPv6 Gateway.", @@ -2375,11 +2563,15 @@ "message.error.rados.pool": "Please enter RADOS pool", "message.error.rados.secret": "Please enter RADOS secret", "message.error.rados.user": "Please enter RADOS user", +"message.error.remove.logical.router": "Removing Logical Router failed", +"message.error.remove.network.policy": "Removing Network Policy failed", "message.error.remove.nic": "There was an error", "message.error.remove.secondary.ipaddress": "There was an error removing the secondary IP Address", -"message.error.reset.config": "Unable to reset config to default value", +"message.error.remove.tungsten.routing.policy": "Removing Tungsten-Fabric Routing Policy from network failed", "message.error.required.input": "Please enter input", +"message.error.reset.config": "Unable to reset config to default value", "message.error.retrieve.kubeconfig": "Unable to retrieve Kubernetes cluster config", +"message.error.routing.policy.term": "Community need to have the following format number:number", "message.error.s3nfs.path": "Please enter S3 NFS Path", "message.error.s3nfs.server": "Please enter S3 NFS Server", "message.error.select.load.balancer": "Please select a load balancer", @@ -2450,13 +2642,14 @@ "message.host.dedicated": "Host Dedicated", "message.host.dedication.released": "Host dedication released.", "message.info.cloudian.console": "Cloudian Management Console should open in another window.", -"message.installwizard.cloudstack.helptext.header": "\nYou can find more information about Apache CloudStack™ on the pages listed below.\n", "message.installwizard.cloudstack.helptext.website": " * Project website:\t ", +"message.infra.setup.tungsten.description": "This zone must contain a Tungsten-Fabric provider because the isolation method is TF", "message.installwizard.cloudstack.helptext.document": " * Documentation:\t ", -"message.installwizard.cloudstack.helptext.releasenotes": " * Release notes:\t ", +"message.installwizard.cloudstack.helptext.header": "\nYou can find more information about Apache CloudStack™ on the pages listed below.\n", +"message.installwizard.cloudstack.helptext.issues": " * Report issues:\t ", "message.installwizard.cloudstack.helptext.mailinglists": " * Join mailing lists:\t ", +"message.installwizard.cloudstack.helptext.releasenotes": " * Release notes:\t ", "message.installwizard.cloudstack.helptext.survey": " * Take the survey:\t ", -"message.installwizard.cloudstack.helptext.issues": " * Report issues:\t ", "message.installwizard.copy.whatiscloudstack": "CloudStack™ is a software platform that pools computing resources to build public, private, and hybrid Infrastructure as a Service (IaaS) clouds. CloudStack™ manages the network, storage, and compute nodes that make up a cloud infrastructure. Use CloudStack™ to deploy, manage, and configure cloud computing environments.\n\nExtending beyond individual virtual machine images running on commodity hardware, CloudStack™ provides a turnkey cloud infrastructure software stack for delivering virtual datacenters as a service - delivering all of the essential components to build, deploy, and manage multi-tier and multi-tenant cloud applications. Both open-source and Premium versions are available, with the open-source version offering nearly identical features.", "message.installwizard.tooltip.addpod.name": "A name for the pod.", "message.installwizard.tooltip.addpod.reservedsystemendip": "This is the IP range in the private network that the CloudStack uses to manage Secondary Storage VMs and Console Proxy VMs. These IP addresses are taken from the same subnet as computing servers.", @@ -2466,6 +2659,12 @@ "message.installwizard.tooltip.configureguesttraffic.guestgateway": "The gateway that the guests should use.", "message.installwizard.tooltip.configureguesttraffic.guestnetmask": "The netmask in use on the subnet that the guests should use.", "message.installwizard.tooltip.configureguesttraffic.gueststartip": "The range of IP addresses that will be available for allocation to guests in this zone. If one NIC is used, these IPs should be in the same CIDR as the pod CIDR.", +"message.installwizard.tooltip.tungsten.provider.gateway": "Tungsten provider gateway is required", +"message.installwizard.tooltip.tungsten.provider.hostname": "Tungsten provider hostname is required", +"message.installwizard.tooltip.tungsten.provider.introspectport": "Tungsten provider introspect port is required", +"message.installwizard.tooltip.tungsten.provider.name": "Tungsten provider name is required", +"message.installwizard.tooltip.tungsten.provider.port": "Tungsten provider port is required", +"message.installwizard.tooltip.tungsten.provider.vrouterport": "Tungsten provider vrouter port is required", "message.instances.managed": "Instances or VMs controlled by CloudStack.", "message.instances.unmanaged": "Instances or VMs not controlled by CloudStack.", "message.interloadbalance.not.return.elementid": "error: listInternalLoadBalancerElements API doesn't return internal LB element ID.", @@ -2483,8 +2682,19 @@ "message.launch.zone.description": "Zone is ready to launch; please proceed to the next step.", "message.launch.zone.hint": "Configure network components and traffic including IP addresses.", "message.license.agreements.not.accepted": "License agreements not accepted.", +"message.linstor.resourcegroup.description": "Linstor resource group to use for primary storage.", "message.listnsp.not.return.providerid": "error: listNetworkServiceProviders API doesn't return VirtualRouter provider ID.", "message.load.host.failed": "Failed to load hosts.", +"message.loading.add.interface.static.route": "Adding interface Static Route...", +"message.loading.add.network.static.route": "Adding network Static Route...", +"message.loading.add.policy.rule": "Adding Policy rule...", +"message.loading.add.tungsten.router.table": "Adding Router Table...", +"message.loading.apply.tungsten.tag": "Applying Tag...", +"message.loading.delete.interface.static.route": "Removing interface Static Route...", +"message.loading.delete.network.static.route": "Removing network Static Route...", +"message.loading.delete.tungsten.policy.rule": "Deleting Policy rule...", +"message.loading.delete.tungsten.router.table": "Removing Router Table...", +"message.loading.delete.tungsten.tag": "Removing Tag...", "message.lock.account": "Please confirm that you want to lock this account. By locking the account, all users for this account will no longer be able to manage their cloud resources. Existing resources can still be accessed.", "message.login.failed": "Login Failed", "message.migrate.instance.host.auto.assign": "Host for the instance will be automatically chosen based on the suitability within the same cluster", @@ -2561,6 +2771,8 @@ "message.remove.ldap": "Are you sure you want to delete the LDAP configuration?", "message.remove.nic.processing": "Removing NIC...", "message.remove.port.forward.failed": "Removing port forwarding rule failed", +"message.remove.router.table.from.interface": "Please confirm that you want to remove Route Table from this nic", +"message.remove.router.table.from.interface.failed": "Removing Router Table from interface failed", "message.remove.rule.failed": "Failed to delete rule", "message.remove.secondary.ipaddress.processing": "Removing secondary IP address...", "message.remove.securitygroup.rule.processing": "Deleting security-group rule...", @@ -2571,7 +2783,6 @@ "message.required.add.least.ip": "Please add at least 1 IP Range", "message.required.traffic.type": "Error in configuration! All required traffic types should be added and with multiple physical networks each network should have a label.", "message.reset.vpn.connection": "Please confirm that you want to reset VPN connection.", -"message.linstor.resourcegroup.description": "Linstor resource group to use for primary storage.", "message.resize.volume.failed": "Failed to resize volume.", "message.resize.volume.processing": "Volume resize is in progress", "message.resource.not.found": "Resource not found.", @@ -2619,28 +2830,39 @@ "message.success.add.egress.rule": "Successfully added new egress rule", "message.success.add.firewall.rule": "Successfully added new firewall rule", "message.success.add.guest.network": "Successfully created guest network", +"message.success.add.interface.static.route": "Successfully added interface Static Route", "message.success.add.iprange": "Successfully added IP range", "message.success.add.ip.v6.prefix": "Successfully added IPv6 Prefix", "message.success.add.kuberversion": "Successfully added Kubernetes version", +"message.success.add.logical.router": "Successfully added Logical Router", "message.success.add.network": "Successfully added network", "message.success.add.network.acl": "Successfully added Network ACL list", +"message.success.add.network.static.route": "Successfully added network Static Route", "message.success.add.network.permissions": "Successfully added network permissions", +"message.success.add.policy.rule": "Successfully added Policy rule", "message.success.add.port.forward": "Successfully added new port forwarding rule", "message.success.add.private.gateway": "Successfully added private gateway", +"message.success.add.router.table.to.instance": "Successfully added Router Table to instance", "message.success.add.rule": "Successfully added new rule", "message.success.add.secondary.ipaddress": "Successfully added secondary IP address", "message.success.add.static.route": "Successfully added static route", "message.success.add.tag": "Successfully added new tag", +"message.success.add.tungsten.router.table": "Successfully added Router Table", +"message.success.add.tungsten.routing.policy": "Successfully added Tungsten-Fabric routing policy", "message.success.add.vpc.network": "Successfully added VPC network", "message.success.add.vpn.customer.gateway": "Successfully added VPN customer gateway", "message.success.add.vpn.gateway": "Successfully added VPN gateway", "message.success.assign.vm": "Successfully assigned VM", +"message.success.apply.network.policy": "Successfully applied Network Policy", +"message.success.apply.tungsten.tag": "Successfully applied Tag", +"message.success.asign.vm": "Successfully assigned VM", "message.success.assigned.vms": "Successfully assigned VMs", "message.success.certificate.upload": "Certificate successfully uploaded", "message.success.change.affinity.group": "Successfully changed affinity groups", "message.success.change.offering": "Successfully changed offering", "message.success.change.password": "Successfully changed password for user", "message.success.config.backup.schedule": "Successfully configured VM backup schedule", +"message.success.config.health.monitor": "Successfully Configure Health Monitor", "message.success.config.sticky.policy": "Successfully configured sticky policy", "message.success.copy.clipboard": "Successfully copied to clipboard", "message.success.create.account": "Successfully created account", @@ -2656,10 +2878,15 @@ "message.success.delete.acl.rule": "Successfully removed ACL rule", "message.success.delete.backup.schedule": "Successfully deleted configure VM backup schedule", "message.success.delete.icon": "Successfully deleted icon of", +"message.success.delete.interface.static.route": "Successfully removed interface Static Route", +"message.success.delete.network.static.route": "Successfully removed network Static Route", "message.success.delete.node": "Successfully deleted node", "message.success.delete.snapshot.policy": "Successfully deleted snapshot policy", "message.success.delete.static.route": "Successfully deleted static route", "message.success.delete.tag": "Successfully deleted tag", +"message.success.delete.tungsten.policy.rule": "Successfully deledted Policy rule", +"message.success.delete.tungsten.router.table": "Successfully removed Router Table", +"message.success.delete.tungsten.tag": "Successfully removed Tag", "message.success.delete.vm": "Successfully deleted VM", "message.success.disable.saml.auth": "Successfully disabled SAML authorization", "message.success.disable.vpn": "Successfully disabled VPN", @@ -2681,12 +2908,16 @@ "message.success.remove.instance.rule": "Successfully removed instance from rule", "message.success.remove.ip": "Successfully removed IP", "message.success.remove.iprange": "Successfully removed IP Range", -"message.success.remove.network.permissions": "Successfully removed network permissions", +"message.success.remove.logical.router": "Successfully removed Logical Router", +"message.success.remove.network.policy": "Successfully removed Network Policy", +"message.success.remove.network.permissions": "Successfully removed Network Permissions", "message.success.remove.nic": "Successfully removed", "message.success.remove.port.forward": "Successfully removed port forwarding rule", +"message.success.remove.router.table.from.interface": "Successfully removed Route Table from interface", "message.success.remove.rule": "Successfully deleted rule", "message.success.remove.secondary.ipaddress": "Successfully removed secondary IP address", "message.success.remove.sticky.policy": "Successfully removed sticky policy", +"message.success.remove.tungsten.routing.policy": "Successfully removed Tungsten-Fabric Routing Policy from network", "message.success.reset.network.permissions": "Successfully reset Network Permissions", "message.success.resize.volume": "Successfully resized volume", "message.success.scale.kubernetes": "Successfully scaled Kubernetes cluster", diff --git a/ui/src/assets/icons/tungsten.svg b/ui/src/assets/icons/tungsten.svg new file mode 100644 index 000000000000..5f127bad83e7 --- /dev/null +++ b/ui/src/assets/icons/tungsten.svg @@ -0,0 +1,26 @@ + + + + +Created by potrace 1.16, written by Peter Selinger 2001-2019 + + + + + diff --git a/ui/src/components/view/ListView.vue b/ui/src/components/view/ListView.vue index c1508e8211e8..fcd94008d88a 100644 --- a/ui/src/components/view/ListView.vue +++ b/ui/src/components/view/ListView.vue @@ -32,7 +32,7 @@ - {{ $t('label.' + String(getColumnKey(column)).toLowerCase()) }} + {{ $t('label.' + String(getColumTitle(column)).toLowerCase()) }} @@ -110,6 +110,15 @@ {{ $t(text.toLowerCase()) }} {{ $t(text.toLowerCase()) }} + + {{ $t(text.toLowerCase()) }} + {{ $t(text.toLowerCase()) }} + + + {{ $t(text.toLowerCase()) }} + {{ $t(text.toLowerCase()) }} + {{ $t(text.toLowerCase()) }} + {{ text }} {{ text }} @@ -516,6 +525,10 @@ export default { } }, methods: { + isTungstenPath () { + return ['/tungstennetworkroutertable', '/tungstenpolicy', '/tungsteninterfaceroutertable', + '/tungstenpolicyset', '/tungstenroutingpolicy', '/firewallrule', '/tungstenfirewallpolicy'].includes(this.$route.path) + }, createPathBasedOnVmType: createPathBasedOnVmType, quickViewEnabled () { return new RegExp(['/vm', '/kubernetes', '/ssh', '/userdata', '/vmgroup', '/affinitygroup', '/autoscalevmgroup', @@ -524,7 +537,8 @@ export default { '/template', '/iso', '/project', '/account', '/zone', '/pod', '/cluster', '/host', '/storagepool', '/imagestore', '/systemvm', '/router', '/ilbvm', '/annotation', - '/computeoffering', '/systemoffering', '/diskoffering', '/backupoffering', '/networkoffering', '/vpcoffering'].join('|')) + '/computeoffering', '/systemoffering', '/diskoffering', '/backupoffering', '/networkoffering', '/vpcoffering', + '/tungstenfabric'].join('|')) .test(this.$route.path) }, enableGroupAction () { @@ -791,6 +805,12 @@ export default { return host.state }, getColumnKey (name) { + if (typeof name === 'object') { + name = Object.keys(name).includes('field') ? name.field : name.customTitle + } + return name + }, + getColumTitle (name) { if (typeof name === 'object') { name = Object.keys(name).includes('customTitle') ? name.customTitle : name.field } diff --git a/ui/src/components/view/NicNetworkSelectForm.vue b/ui/src/components/view/NicNetworkSelectForm.vue index 7519fe9c17ca..f19b1517fb76 100644 --- a/ui/src/components/view/NicNetworkSelectForm.vue +++ b/ui/src/components/view/NicNetworkSelectForm.vue @@ -24,7 +24,7 @@ v-model:value="searchQuery" style="margin-bottom: 10px;" @search="fetchNetworks" - autoFocus /> + v-focus="true" /> + v-focus="true" /> {{ $t(item.meta.title) }} + + + {{ $t(item.meta.title) }} +