From 3cac7f01bb7799e117460a67dc8506397536162d Mon Sep 17 00:00:00 2001 From: David Nalley Date: Sun, 12 Oct 2014 23:19:30 -0400 Subject: [PATCH 001/129] Revert "CLOUDSTACK-6278" This reverts commit bc2ec23d09e28b30a9cc3cb4a7d6f52c8e718fcf. --- .../cloud/deploy/DeploymentPlanningManagerImpl.java | 11 ++--------- 1 file changed, 2 insertions(+), 9 deletions(-) diff --git a/server/src/com/cloud/deploy/DeploymentPlanningManagerImpl.java b/server/src/com/cloud/deploy/DeploymentPlanningManagerImpl.java index 146352e977d..9eaef1ea890 100755 --- a/server/src/com/cloud/deploy/DeploymentPlanningManagerImpl.java +++ b/server/src/com/cloud/deploy/DeploymentPlanningManagerImpl.java @@ -403,15 +403,6 @@ StateListener { s_logger.debug("The last host of this VM is UP and has enough capacity"); s_logger.debug("Now checking for suitable pools under zone: " + host.getDataCenterId() + ", pod: " + host.getPodId() + ", cluster: " + host.getClusterId()); - - Pod pod = _podDao.findById(host.getPodId()); - Cluster cluster = _clusterDao.findById(host.getClusterId()); - if (vm.getHypervisorType() == HypervisorType.BareMetal) { - DeployDestination dest = new DeployDestination(dc, pod, cluster, host, new HashMap()); - s_logger.debug("Returning Deployment Destination: " + dest); - return dest; - } - // search for storage under the zone, pod, cluster // of // the last host. @@ -431,6 +422,8 @@ StateListener { suitableHosts, suitableVolumeStoragePools, avoids, getPlannerUsage(planner, vmProfile, plan, avoids), readyAndReusedVolumes); if (potentialResources != null) { + Pod pod = _podDao.findById(host.getPodId()); + Cluster cluster = _clusterDao.findById(host.getClusterId()); Map storageVolMap = potentialResources.second(); // remove the reused vol<->pool from // destination, since we don't have to From ac48aa8e0c10cdb37d355e0fa04479abdf785cc3 Mon Sep 17 00:00:00 2001 From: David Nalley Date: Sun, 12 Oct 2014 23:30:04 -0400 Subject: [PATCH 002/129] cleaning up some from a revert --- .../core/spring-baremetal-core-context.xml | 8 +- .../manager/BaremetalVlanManager.java | 3 - .../manager/BaremetalVlanManagerImpl.java | 12 +- .../networkservice/BareMetalResourceBase.java | 2 +- .../BaremetalKickStartServiceImpl.java | 17 +-- .../networkservice/BaremetalPxeElement.java | 5 +- .../Force10BaremetalSwitchBackend.java | 116 +++++------------- scripts/network/ping/baremetal_snat.sh | 21 +--- scripts/network/ping/prepare_pxe.sh | 28 ++--- .../debian/config/etc/dnsmasq.conf.tmpl | 6 +- .../com/cloud/utils/xmlobject/XmlObject.java | 15 +-- .../utils/xmlobject/XmlObjectParser.java | 22 ++-- .../cloud/utils/xmlobject/TestXmlObject.java | 5 - 13 files changed, 77 insertions(+), 183 deletions(-) mode change 100755 => 100644 plugins/hypervisors/baremetal/src/com/cloud/baremetal/networkservice/Force10BaremetalSwitchBackend.java mode change 100755 => 100644 utils/src/com/cloud/utils/xmlobject/XmlObjectParser.java mode change 100755 => 100644 utils/test/com/cloud/utils/xmlobject/TestXmlObject.java diff --git a/plugins/hypervisors/baremetal/resources/META-INF/cloudstack/core/spring-baremetal-core-context.xml b/plugins/hypervisors/baremetal/resources/META-INF/cloudstack/core/spring-baremetal-core-context.xml index a153e7fb0c6..ae28efad6db 100755 --- a/plugins/hypervisors/baremetal/resources/META-INF/cloudstack/core/spring-baremetal-core-context.xml +++ b/plugins/hypervisors/baremetal/resources/META-INF/cloudstack/core/spring-baremetal-core-context.xml @@ -28,13 +28,7 @@ > - - - - - - - + backends; + private Map backends = new HashMap<>(); private class RackPair { BaremetalRct.Rack rack; BaremetalRct.HostEntry host; } - public void setBackends(Map backends) { - this.backends = backends; - } - @Override public BaremetalRctResponse addRct(AddBaremetalRctCmd cmd) { try { @@ -164,11 +161,6 @@ public class BaremetalVlanManagerImpl extends ManagerBase implements BaremetalVl backend.removePortFromVlan(struct); } - @Override - public void registerSwitchBackend(BaremetalSwitchBackend backend) { - backends.put(backend.getSwitchBackendType(), backend); - } - private BaremetalSwitchBackend getSwitchBackend(String type) { BaremetalSwitchBackend backend = backends.get(type); if (backend == null) { diff --git a/plugins/hypervisors/baremetal/src/com/cloud/baremetal/networkservice/BareMetalResourceBase.java b/plugins/hypervisors/baremetal/src/com/cloud/baremetal/networkservice/BareMetalResourceBase.java index 26f42bee823..6a54527a860 100755 --- a/plugins/hypervisors/baremetal/src/com/cloud/baremetal/networkservice/BareMetalResourceBase.java +++ b/plugins/hypervisors/baremetal/src/com/cloud/baremetal/networkservice/BareMetalResourceBase.java @@ -403,7 +403,7 @@ public class BareMetalResourceBase extends ManagerBase implements ServerResource VMInstanceVO vm = vms.get(0); SecurityGroupHttpClient client = new SecurityGroupHttpClient(); HashMap> nwGrpStates = client.sync(vm.getInstanceName(), vm.getId(), vm.getPrivateIpAddress()); - return new PingRoutingWithNwGroupsCommand(getType(), id, null, nwGrpStates); + return new PingRoutingWithNwGroupsCommand(getType(), id, getHostVmStateReport(), nwGrpStates); } } else { return new PingRoutingCommand(getType(), id, getHostVmStateReport()); diff --git a/plugins/hypervisors/baremetal/src/com/cloud/baremetal/networkservice/BaremetalKickStartServiceImpl.java b/plugins/hypervisors/baremetal/src/com/cloud/baremetal/networkservice/BaremetalKickStartServiceImpl.java index 3b88ca63f0c..58a05088f25 100755 --- a/plugins/hypervisors/baremetal/src/com/cloud/baremetal/networkservice/BaremetalKickStartServiceImpl.java +++ b/plugins/hypervisors/baremetal/src/com/cloud/baremetal/networkservice/BaremetalKickStartServiceImpl.java @@ -225,18 +225,19 @@ public class BaremetalKickStartServiceImpl extends BareMetalPxeServiceBase imple } List tuple = parseKickstartUrl(profile); - String cmd = String.format("/usr/bin/prepare_pxe.sh %s %s %s %s %s %s", tuple.get(1), tuple.get(2), profile.getTemplate().getUuid(), - String.format("01-%s", nic.getMacAddress().replaceAll(":", "-")).toLowerCase(), tuple.get(0), nic.getMacAddress().toLowerCase()); - s_logger.debug(String.format("prepare pxe on virtual router[ip:%s], cmd: %s", mgmtNic.getIp4Address(), cmd)); - Pair ret = SshHelper.sshExecute(mgmtNic.getIp4Address(), 3922, "root", getSystemVMKeyFile(), null, cmd); + Pair ret = SshHelper.sshExecute(mgmtNic.getIp4Address(), 3922, "root", getSystemVMKeyFile(), null, + String.format("/usr/bin/prepare_pxe.sh %s %s %s %s %s", tuple.get(1), tuple.get(2), profile.getTemplate().getUuid(), + String.format("01-%s", nic.getMacAddress().replaceAll(":", "-")), tuple.get(0)) + ); if (!ret.first()) { throw new CloudRuntimeException(String.format("failed preparing PXE in virtual router[id:%s], because %s", vr.getId(), ret.second())); } - //String internalServerIp = "10.223.110.231"; - cmd = String.format("/usr/bin/baremetal_snat.sh %s %s %s", mgmtNic.getIp4Address(), internalServerIp, mgmtNic.getGateway()); - s_logger.debug(String.format("prepare SNAT on virtual router[ip:%s], cmd: %s", mgmtNic.getIp4Address(), cmd)); - ret = SshHelper.sshExecute(mgmtNic.getIp4Address(), 3922, "root", getSystemVMKeyFile(), null, cmd); + //String internalServerIp = _configDao.getValue(Config.BaremetalInternalStorageServer.key()); + String internalServerIp = "10.223.110.231"; + ret = SshHelper.sshExecute(mgmtNic.getIp4Address(), 3922, "root", getSystemVMKeyFile(), null, + String.format("/usr/bin/baremetal_snat.sh %s %s", mgmtNic.getIp4Address(), internalServerIp) + ); if (!ret.first()) { throw new CloudRuntimeException(String.format("failed preparing PXE in virtual router[id:%s], because %s", vr.getId(), ret.second())); } diff --git a/plugins/hypervisors/baremetal/src/com/cloud/baremetal/networkservice/BaremetalPxeElement.java b/plugins/hypervisors/baremetal/src/com/cloud/baremetal/networkservice/BaremetalPxeElement.java index 10b81c2b3d7..5d20d3130f5 100755 --- a/plugins/hypervisors/baremetal/src/com/cloud/baremetal/networkservice/BaremetalPxeElement.java +++ b/plugins/hypervisors/baremetal/src/com/cloud/baremetal/networkservice/BaremetalPxeElement.java @@ -21,7 +21,6 @@ package com.cloud.baremetal.networkservice; import com.cloud.baremetal.database.BaremetalPxeVO; import com.cloud.baremetal.manager.BaremetalVlanManager; import com.cloud.dc.DataCenter; -import com.cloud.dc.DataCenterVO; import com.cloud.dc.Pod; import com.cloud.dc.dao.DataCenterDao; import com.cloud.deploy.DeployDestination; @@ -140,9 +139,11 @@ public class BaremetalPxeElement extends AdapterBase implements NetworkElement { } } + /* if (dest.getDataCenter().getNetworkType() == DataCenter.NetworkType.Advanced){ prepareVlan(network, dest); } + */ return true; } @@ -158,10 +159,12 @@ public class BaremetalPxeElement extends AdapterBase implements NetworkElement { return false; } + /* DataCenterVO dc = zoneDao.findById(vm.getVirtualMachine().getDataCenterId()); if (dc.getNetworkType() == DataCenter.NetworkType.Advanced) { releaseVlan(network, vm); } + */ return true; } diff --git a/plugins/hypervisors/baremetal/src/com/cloud/baremetal/networkservice/Force10BaremetalSwitchBackend.java b/plugins/hypervisors/baremetal/src/com/cloud/baremetal/networkservice/Force10BaremetalSwitchBackend.java old mode 100755 new mode 100644 index ceaf25cb57b..9009b02d3fb --- a/plugins/hypervisors/baremetal/src/com/cloud/baremetal/networkservice/Force10BaremetalSwitchBackend.java +++ b/plugins/hypervisors/baremetal/src/com/cloud/baremetal/networkservice/Force10BaremetalSwitchBackend.java @@ -32,16 +32,11 @@ import org.springframework.http.HttpEntity; import org.springframework.http.HttpHeaders; import org.springframework.http.HttpMethod; import org.springframework.http.HttpStatus; -import org.springframework.http.MediaType; import org.springframework.http.ResponseEntity; -import org.springframework.http.client.ClientHttpResponse; -import org.springframework.web.client.ResponseErrorHandler; import org.springframework.web.client.RestTemplate; import org.springframework.web.util.UriComponentsBuilder; -import java.io.IOException; import java.util.ArrayList; -import java.util.Arrays; import java.util.List; /** @@ -51,38 +46,17 @@ public class Force10BaremetalSwitchBackend implements BaremetalSwitchBackend { private Logger logger = Logger.getLogger(Force10BaremetalSwitchBackend.class); public static final String TYPE = "Force10"; - private static List successHttpStatusCode = new ArrayList<>(); - { - successHttpStatusCode.add(HttpStatus.OK); - successHttpStatusCode.add(HttpStatus.ACCEPTED); - successHttpStatusCode.add(HttpStatus.CREATED); - successHttpStatusCode.add(HttpStatus.NO_CONTENT); - successHttpStatusCode.add(HttpStatus.PARTIAL_CONTENT); - successHttpStatusCode.add(HttpStatus.RESET_CONTENT); - successHttpStatusCode.add(HttpStatus.ALREADY_REPORTED); - } - RestTemplate rest = new RestTemplate(); - { - // fake error handler, we handle error in business logic code - rest.setErrorHandler(new ResponseErrorHandler() { - @Override - public boolean hasError(ClientHttpResponse clientHttpResponse) throws IOException { - return false; - } - @Override - public void handleError(ClientHttpResponse clientHttpResponse) throws IOException { - } - }); - } - - private String buildLink(String switchIp, String path) { + private String buildLink(String switchIp, Integer vlan) { UriComponentsBuilder builder = UriComponentsBuilder.newInstance(); builder.scheme("http"); builder.host(switchIp); builder.port(8008); - builder.path(path); + builder.path("/api/running/ftos/interface/vlan"); + if (vlan != null) { + builder.path(vlan.toString()); + } return builder.build().toUriString(); } @@ -93,36 +67,29 @@ public class Force10BaremetalSwitchBackend implements BaremetalSwitchBackend { @Override public void prepareVlan(BaremetalVlanStruct struct) { - String link = buildLink(struct.getSwitchIp(), String.format("/api/running/ftos/interface/vlan/%s", struct.getVlan())); + String link = buildLink(struct.getSwitchIp(), struct.getVlan()); HttpHeaders headers = createBasicAuthenticationHeader(struct); HttpEntity request = new HttpEntity<>(headers); ResponseEntity rsp = rest.exchange(link, HttpMethod.GET, request, String.class); - logger.debug(String.format("http get: %s", link)); if (rsp.getStatusCode() == HttpStatus.NOT_FOUND) { PortInfo port = new PortInfo(struct); - XmlObject xml = new XmlObject("vlan").putElement("vlan-id", - new XmlObject("vlan-id").setText(String.valueOf(struct.getVlan()))).putElement("untagged", - new XmlObject("untagged").putElement(port.interfaceType, new XmlObject(port.interfaceType) - .putElement("name", new XmlObject("name").setText(port.port))) - ).putElement("shutdown", new XmlObject("shutdown").setText("false")); - request = new HttpEntity<>(xml.dump(), headers); - link = buildLink(struct.getSwitchIp(), String.format("/api/running/ftos/interface/")); - logger.debug(String.format("http get: %s, body: %s", link, request)); - rsp = rest.exchange(link, HttpMethod.POST, request, String.class); - if (!successHttpStatusCode.contains(rsp.getStatusCode())) { + XmlObject xml = new XmlObject("vlan").putElement("vlan-id", String.valueOf(struct.getVlan())).putElement("tagged", + new XmlObject(port.interfaceType).putElement("name", port.port) + ).putElement("shutdown", "false"); + request = new HttpEntity<>(xml.toString(), headers); + link = buildLink(struct.getSwitchIp(), null); + rsp = rest.exchange(link, HttpMethod.GET, request, String.class); + if (rsp.getStatusCode() != HttpStatus.OK) { throw new CloudRuntimeException(String.format("unable to create vlan[%s] on force10 switch[ip:%s]. HTTP status code:%s, body dump:%s", - struct.getVlan(), struct.getSwitchIp(),rsp.getStatusCode(), rsp.getBody())); - } else { - logger.debug(String.format("successfully programmed vlan[%s] on Force10[ip:%s, port:%s]. http response[status code:%s, body:%s]", - struct.getVlan(), struct.getSwitchIp(), struct.getPort(), rsp.getStatusCode(), rsp.getBody())); + struct.getVlan(), rsp.getStatusCode(), struct.getSwitchIp(), rsp.getBody())); } - } else if (successHttpStatusCode.contains(rsp.getStatusCode())) { + } else if (rsp.getStatusCode() == HttpStatus.OK) { PortInfo port = new PortInfo(struct); XmlObject xml = XmlObjectParser.parseFromString((String)rsp.getBody()); - List ports = xml.getAsList("untagged.tengigabitethernet"); - ports.addAll(xml.getAsList("untagged.gigabitethernet")); - ports.addAll(xml.getAsList("untagged.fortyGigE")); + List ports = xml.getAsList("tagged.tengigabitethernet"); + ports.addAll(xml.getAsList("tagged.gigabitethernet")); + ports.addAll(xml.getAsList("tagged.fortyGigE")); for (XmlObject pxml : ports) { XmlObject name = pxml.get("name"); if (port.port.equals(name.getText())) { @@ -131,26 +98,14 @@ public class Force10BaremetalSwitchBackend implements BaremetalSwitchBackend { } } - xml.removeElement("mtu"); - xml.setText(null); - XmlObject tag = xml.get("untagged"); - if (tag == null) { - tag = new XmlObject("untagged"); - xml.putElement("untagged", tag); - } - - tag.putElement(port.interfaceType, new XmlObject(port.interfaceType) - .putElement("name", new XmlObject("name").setText(port.port))); - request = new HttpEntity<>(xml.dump(), headers); - link = buildLink(struct.getSwitchIp(), String.format("/api/running/ftos/interface/vlan/%s", struct.getVlan())); - logger.debug(String.format("http get: %s, body: %s", link, request)); + XmlObject tag = xml.get("tagged"); + tag.putElement(port.interfaceType, new XmlObject("name").setText(port.port)); + request = new HttpEntity<>(xml.toString(), headers); + link = buildLink(struct.getSwitchIp(), struct.getVlan()); rsp = rest.exchange(link, HttpMethod.PUT, request, String.class); - if (!successHttpStatusCode.contains(rsp.getStatusCode())) { + if (rsp.getStatusCode() != HttpStatus.NO_CONTENT) { throw new CloudRuntimeException(String.format("failed to program vlan[%s] for port[%s] on force10[ip:%s]. http status:%s, body dump:%s", struct.getVlan(), struct.getPort(), struct.getSwitchIp(), rsp.getStatusCode(), rsp.getBody())); - } else { - logger.debug(String.format("successfully join port[%s] into vlan[%s] on Force10[ip:%s]. http response[status code:%s, body:%s]", - struct.getPort(), struct.getVlan(), struct.getSwitchIp(), rsp.getStatusCode(), rsp.getBody())); } } else { throw new CloudRuntimeException(String.format("force10[ip:%s] returns unexpected error[%s] when http getting %s, body dump:%s", @@ -160,19 +115,18 @@ public class Force10BaremetalSwitchBackend implements BaremetalSwitchBackend { @Override public void removePortFromVlan(BaremetalVlanStruct struct) { - String link = buildLink(struct.getSwitchIp(), String.format("/api/running/ftos/interface/vlan/%s", struct.getVlan())); + String link = buildLink(struct.getSwitchIp(), struct.getVlan()); HttpHeaders headers = createBasicAuthenticationHeader(struct); HttpEntity request = new HttpEntity<>(headers); - logger.debug(String.format("http get: %s, body: %s", link, request)); ResponseEntity rsp = rest.exchange(link, HttpMethod.GET, request, String.class); if (rsp.getStatusCode() == HttpStatus.NOT_FOUND) { logger.debug(String.format("vlan[%s] has been deleted on force10[ip:%s], no need to remove the port[%s] anymore", struct.getVlan(), struct.getSwitchIp(), struct.getPort())); } else if (rsp.getStatusCode() == HttpStatus.OK) { PortInfo port = new PortInfo(struct); XmlObject xml = XmlObjectParser.parseFromString((String)rsp.getBody()); - List ports = xml.getAsList("untagged.tengigabitethernet"); - ports.addAll(xml.getAsList("untagged.gigabitethernet")); - ports.addAll(xml.getAsList("untagged.fortyGigE")); + List ports = xml.getAsList("tagged.tengigabitethernet"); + ports.addAll(xml.getAsList("tagged.gigabitethernet")); + ports.addAll(xml.getAsList("tagged.fortyGigE")); List newPorts = new ArrayList<>(); boolean needRemove = false; for (XmlObject pxml : ports) { @@ -189,19 +143,11 @@ public class Force10BaremetalSwitchBackend implements BaremetalSwitchBackend { return; } - xml.setText(null); - xml.removeElement("mtu"); - XmlObject tagged = xml.get("untagged"); - tagged.removeAllChildren(); - for (XmlObject p : newPorts) { - tagged.putElement(p.getTag(), p); - } + xml.putElement("tagged", newPorts); - - request = new HttpEntity<>(xml.dump(), headers); - logger.debug(String.format("http get: %s, body: %s", link, request)); + request = new HttpEntity<>(xml.toString(), headers); rsp = rest.exchange(link, HttpMethod.PUT, request, String.class); - if (!successHttpStatusCode.contains(rsp.getStatusCode())) { + if (rsp.getStatusCode() != HttpStatus.NO_CONTENT) { throw new CloudRuntimeException(String.format("failed to program vlan[%s] for port[%s] on force10[ip:%s]. http status:%s, body dump:%s", struct.getVlan(), struct.getPort(), struct.getSwitchIp(), rsp.getStatusCode(), rsp.getBody())); } else { @@ -220,8 +166,6 @@ public class Force10BaremetalSwitchBackend implements BaremetalSwitchBackend { String base64Creds = new String(base64CredsBytes); HttpHeaders headers = new HttpHeaders(); headers.add("Authorization", "Basic " + base64Creds); - headers.setAccept(Arrays.asList(MediaType.ALL)); - headers.setContentType(MediaType.valueOf("application/vnd.yang.data+xml")); return headers; } diff --git a/scripts/network/ping/baremetal_snat.sh b/scripts/network/ping/baremetal_snat.sh index 22e56692d7d..f35a16f8e96 100755 --- a/scripts/network/ping/baremetal_snat.sh +++ b/scripts/network/ping/baremetal_snat.sh @@ -21,12 +21,11 @@ set +u mgmt_nic_ip=$1 internal_server_ip=$2 -gateway_ip=$3 ip route | grep "$internal_server_ip" > /dev/null if [ $? -ne 0 ]; then - ip route add $internal_server_ip via $gateway_ip + ip route add $internal_server_ip via $mgmt_nic_ip fi iptables-save | grep -- "-A POSTROUTING -d $internal_server_ip" > /dev/null @@ -34,21 +33,3 @@ iptables-save | grep -- "-A POSTROUTING -d $internal_server_ip" > /dev/null if [ $? -ne 0 ]; then iptables -t nat -A POSTROUTING -d $internal_server_ip -j SNAT --to-source $mgmt_nic_ip fi - - -iptables-save | grep -- "-A INPUT -i eth0 -p udp -m udp --dport 69 -j ACCEPT" > /dev/null -if [ $? -ne 0 ]; then - iptables -I INPUT -i eth0 -p udp -m udp --dport 69 -j ACCEPT -fi - -iptables-save | grep -- "-A FORWARD -i eth1 -o eth0 -j ACCEPT" > /dev/null -if [ $? -ne 0 ]; then - iptables -A FORWARD -i eth1 -o eth0 -j ACCEPT -fi - -rule="-A FORWARD -d $internal_server_ip/32 -i eth0 -o eth1 -j ACCEPT" -iptables-save | grep -- "$rule" > /dev/null -if [ $? -ne 0 ]; then - iptables -I FORWARD -d $internal_server_ip/32 -i eth0 -o eth1 -j ACCEPT -fi - diff --git a/scripts/network/ping/prepare_pxe.sh b/scripts/network/ping/prepare_pxe.sh index 5bc1a9380dc..bd9ece69f7a 100755 --- a/scripts/network/ping/prepare_pxe.sh +++ b/scripts/network/ping/prepare_pxe.sh @@ -40,20 +40,6 @@ tmpt_uuid=$3 pxe_cfg_filename=$4 ks_file=$5 -kernel_path=$tmpt_uuid/$kernel_file_name -initrd_path=$tmpt_uuid/$initrd_file_name - -cat > $PXELINUX_CFG_DIR/$pxe_cfg_filename < $PXELINUX_CFG_DIR/$pxe_cfg_filename < elements = new HashMap(); private String text; private String tag; @@ -40,10 +38,6 @@ public class XmlObject { XmlObject() { } - public void removeAllChildren() { - elements.clear(); - } - public XmlObject(String tag) { this.tag = tag; } @@ -105,12 +99,8 @@ public class XmlObject { if (e instanceof List) { return (List)e; } - List lst = new ArrayList(1); - if (e != null) { - lst.add(e); - } - + lst.add(e); return lst; } @@ -152,8 +142,7 @@ public class XmlObject { } if (!children.isEmpty() && text != null) { - logger.info(String.format("element %s cannot have both text[%s] and child elements, set text to null", tag, text)); - text = null; + throw new CloudRuntimeException(String.format("element %s cannot have both text[%s] and child elements", tag, text)); } if (!children.isEmpty()) { diff --git a/utils/src/com/cloud/utils/xmlobject/XmlObjectParser.java b/utils/src/com/cloud/utils/xmlobject/XmlObjectParser.java old mode 100755 new mode 100644 index f0e8ce31261..321af0ce9c8 --- a/utils/src/com/cloud/utils/xmlobject/XmlObjectParser.java +++ b/utils/src/com/cloud/utils/xmlobject/XmlObjectParser.java @@ -19,13 +19,6 @@ package com.cloud.utils.xmlobject; -import com.cloud.utils.exception.CloudRuntimeException; -import org.xml.sax.Attributes; -import org.xml.sax.SAXException; -import org.xml.sax.helpers.DefaultHandler; - -import javax.xml.parsers.SAXParser; -import javax.xml.parsers.SAXParserFactory; import java.io.ByteArrayInputStream; import java.io.File; import java.io.FileInputStream; @@ -33,6 +26,15 @@ import java.io.FileNotFoundException; import java.io.InputStream; import java.util.Stack; +import javax.xml.parsers.SAXParser; +import javax.xml.parsers.SAXParserFactory; + +import org.xml.sax.Attributes; +import org.xml.sax.SAXException; +import org.xml.sax.helpers.DefaultHandler; + +import com.cloud.utils.exception.CloudRuntimeException; + public class XmlObjectParser { final private InputStream is; @@ -107,11 +109,7 @@ public class XmlObjectParser { public static XmlObject parseFromString(String xmlString) { InputStream stream = new ByteArrayInputStream(xmlString.getBytes()); XmlObjectParser p = new XmlObjectParser(stream); - XmlObject obj = p.parse(); - if (obj.getText() != null && obj.getText().replaceAll("\\n", "").replaceAll("\\r", "").replaceAll(" ", "").isEmpty()) { - obj.setText(null); - } - return obj; + return p.parse(); } private XmlObject parse() { diff --git a/utils/test/com/cloud/utils/xmlobject/TestXmlObject.java b/utils/test/com/cloud/utils/xmlobject/TestXmlObject.java old mode 100755 new mode 100644 index faaf9803c14..cbd24b029c4 --- a/utils/test/com/cloud/utils/xmlobject/TestXmlObject.java +++ b/utils/test/com/cloud/utils/xmlobject/TestXmlObject.java @@ -43,11 +43,6 @@ public class TestXmlObject { } } */ - - XmlObject xml = new XmlObject("vlan").putElement("vlan-id", String.valueOf(19)).putElement("tagged", - new XmlObject("teng").putElement("name", "0/0") - ).putElement("shutdown", "false"); - System.out.println(xml.toString()); } } From ffe846673cbb3d25b5331ed281d6e8f58764f5ff Mon Sep 17 00:00:00 2001 From: David Nalley Date: Sun, 12 Oct 2014 23:31:17 -0400 Subject: [PATCH 003/129] more revert cleanup --- api/src/com/cloud/event/EventTypes.java | 1 - .../baremetal/manager/BaremetalManager.java | 3 - .../manager/BaremetalManagerImpl.java | 42 --------- .../networkservice/BareMetalResourceBase.java | 45 ---------- .../BaremetalKickStartServiceImpl.java | 6 -- ...BaremetalProvisionDoneNotificationCmd.java | 87 ------------------- .../src/com/cloud/configuration/Config.java | 40 ++++----- .../VirtualNetworkApplianceManagerImpl.java | 4 +- 8 files changed, 17 insertions(+), 211 deletions(-) delete mode 100755 plugins/hypervisors/baremetal/src/org/apache/cloudstack/api/BaremetalProvisionDoneNotificationCmd.java diff --git a/api/src/com/cloud/event/EventTypes.java b/api/src/com/cloud/event/EventTypes.java index 3a1d58a66a6..7477152b706 100755 --- a/api/src/com/cloud/event/EventTypes.java +++ b/api/src/com/cloud/event/EventTypes.java @@ -454,7 +454,6 @@ public class EventTypes { public static final String EVENT_BAREMETAL_PXE_SERVER_ADD = "PHYSICAL.PXE.ADD"; public static final String EVENT_BAREMETAL_PXE_SERVER_DELETE = "PHYSICAL.PXE.DELETE"; public static final String EVENT_BAREMETAL_RCT_ADD = "BAREMETAL.RCT.ADD"; - public static final String EVENT_BAREMETAL_PROVISION_DONE = "BAREMETAL.PROVISION.DONE"; public static final String EVENT_AFFINITY_GROUP_CREATE = "AG.CREATE"; public static final String EVENT_AFFINITY_GROUP_DELETE = "AG.DELETE"; diff --git a/plugins/hypervisors/baremetal/src/com/cloud/baremetal/manager/BaremetalManager.java b/plugins/hypervisors/baremetal/src/com/cloud/baremetal/manager/BaremetalManager.java index 629153a2b38..5db29d2fd69 100755 --- a/plugins/hypervisors/baremetal/src/com/cloud/baremetal/manager/BaremetalManager.java +++ b/plugins/hypervisors/baremetal/src/com/cloud/baremetal/manager/BaremetalManager.java @@ -20,12 +20,9 @@ package com.cloud.baremetal.manager; import com.cloud.utils.component.Manager; import com.cloud.utils.component.PluggableService; -import org.apache.cloudstack.api.BaremetalProvisionDoneNotificationCmd; public interface BaremetalManager extends Manager, PluggableService { public static final String EchoSecurityGroupAgent = "EchoSecurityGroupAgent"; public static final String ExternalBaremetalSystemUrl = "ExternalBaremetalSystemUrl"; public static final String DO_PXE = "doPxe"; - - void notifyProvisionDone(BaremetalProvisionDoneNotificationCmd cmd); } diff --git a/plugins/hypervisors/baremetal/src/com/cloud/baremetal/manager/BaremetalManagerImpl.java b/plugins/hypervisors/baremetal/src/com/cloud/baremetal/manager/BaremetalManagerImpl.java index d4a75dc7732..f6a41133e3a 100755 --- a/plugins/hypervisors/baremetal/src/com/cloud/baremetal/manager/BaremetalManagerImpl.java +++ b/plugins/hypervisors/baremetal/src/com/cloud/baremetal/manager/BaremetalManagerImpl.java @@ -26,12 +26,6 @@ import javax.ejb.Local; import javax.inject.Inject; import javax.naming.ConfigurationException; -import com.cloud.utils.db.QueryBuilder; -import com.cloud.utils.db.SearchCriteria; -import com.cloud.utils.exception.CloudRuntimeException; -import com.cloud.vm.VMInstanceVO; -import com.cloud.vm.dao.VMInstanceDao; -import org.apache.cloudstack.api.BaremetalProvisionDoneNotificationCmd; import org.apache.log4j.Logger; import org.apache.cloudstack.api.AddBaremetalHostCmd; @@ -51,8 +45,6 @@ public class BaremetalManagerImpl extends ManagerBase implements BaremetalManage @Inject protected HostDao _hostDao; - @Inject - protected VMInstanceDao vmDao; @Override public boolean configure(String name, Map params) throws ConfigurationException { @@ -115,40 +107,6 @@ public class BaremetalManagerImpl extends ManagerBase implements BaremetalManage public List> getCommands() { List> cmds = new ArrayList>(); cmds.add(AddBaremetalHostCmd.class); - cmds.add(BaremetalProvisionDoneNotificationCmd.class); return cmds; } - - @Override - public void notifyProvisionDone(BaremetalProvisionDoneNotificationCmd cmd) { - QueryBuilder hq = QueryBuilder.create(HostVO.class); - hq.and(hq.entity().getPrivateMacAddress(), SearchCriteria.Op.EQ, cmd.getMac()); - HostVO host = hq.find(); - if (host == null) { - throw new CloudRuntimeException(String.format("cannot find host[mac:%s]", cmd.getMac())); - } - - _hostDao.loadDetails(host); - String vmName = host.getDetail("vmName"); - if (vmName == null) { - throw new CloudRuntimeException(String.format("cannot find any baremetal instance running on host[mac:%s]", cmd.getMac())); - } - - QueryBuilder vmq = QueryBuilder.create(VMInstanceVO.class); - vmq.and(vmq.entity().getInstanceName(), SearchCriteria.Op.EQ, vmName); - VMInstanceVO vm = vmq.find(); - - if (vm == null) { - throw new CloudRuntimeException(String.format("cannot find baremetal instance[name:%s]", vmName)); - } - - if (State.Starting != vm.getState()) { - throw new CloudRuntimeException(String.format("baremetal instance[name:%s, state:%s] is not in state of Starting", vmName, vm.getState())); - } - - vm.setState(State.Running); - vmDao.update(vm.getId(), vm); - s_logger.debug(String.format("received baremetal provision done notification for vm[id:%s name:%s] running on host[mac:%s, ip:%s]", - vm.getId(), vm.getInstanceName(), host.getPrivateMacAddress(), host.getPrivateIpAddress())); - } } diff --git a/plugins/hypervisors/baremetal/src/com/cloud/baremetal/networkservice/BareMetalResourceBase.java b/plugins/hypervisors/baremetal/src/com/cloud/baremetal/networkservice/BareMetalResourceBase.java index 6a54527a860..fedfb8bd9f6 100755 --- a/plugins/hypervisors/baremetal/src/com/cloud/baremetal/networkservice/BareMetalResourceBase.java +++ b/plugins/hypervisors/baremetal/src/com/cloud/baremetal/networkservice/BareMetalResourceBase.java @@ -61,15 +61,12 @@ import com.cloud.hypervisor.Hypervisor; import com.cloud.resource.ServerResource; import com.cloud.utils.Pair; import com.cloud.utils.component.ManagerBase; -import com.cloud.utils.db.QueryBuilder; -import com.cloud.utils.db.SearchCriteria; import com.cloud.utils.exception.CloudRuntimeException; import com.cloud.utils.script.OutputInterpreter; import com.cloud.utils.script.Script; import com.cloud.utils.script.Script2; import com.cloud.utils.script.Script2.ParamType; import com.cloud.vm.VMInstanceVO; -import com.cloud.vm.VirtualMachine; import com.cloud.vm.VirtualMachine.PowerState; import com.cloud.vm.dao.VMInstanceDao; import org.apache.cloudstack.api.ApiConstants; @@ -112,8 +109,6 @@ public class BareMetalResourceBase extends ManagerBase implements ServerResource protected Script2 _bootOrRebootCommand; protected String _vmName; protected int ipmiRetryTimes = 5; - protected boolean provisionDoneNotificationOn = false; - protected int isProvisionDoneNotificationTimeout = 1800; protected ConfigurationDao configDao; protected VMInstanceDao vmDao; @@ -188,13 +183,6 @@ public class BareMetalResourceBase extends ManagerBase implements ServerResource s_logger.debug(e.getMessage(), e); } - try { - provisionDoneNotificationOn = Boolean.valueOf(configDao.getValue(Config.BaremetalProvisionDoneNotificationEnabled.key())); - isProvisionDoneNotificationTimeout = Integer.valueOf(configDao.getValue(Config.BaremetalProvisionDoneNotificationTimeout.key())); - } catch (Exception e) { - s_logger.debug(e.getMessage(), e); - } - String injectScript = "scripts/util/ipmi.py"; String scriptPath = Script.findScript("", injectScript); if (scriptPath == null) { @@ -591,39 +579,6 @@ public class BareMetalResourceBase extends ManagerBase implements ServerResource } } - if (provisionDoneNotificationOn) { - QueryBuilder q = QueryBuilder.create(VMInstanceVO.class); - q.and(q.entity().getInstanceName(), SearchCriteria.Op.EQ, vm.getName()); - VMInstanceVO vmvo = q.find(); - - if (vmvo.getLastHostId() == null) { - // this is new created vm - long timeout = System.currentTimeMillis() + TimeUnit.SECONDS.toMillis(isProvisionDoneNotificationTimeout); - while (timeout > System.currentTimeMillis()) { - try { - TimeUnit.SECONDS.sleep(5); - } catch (InterruptedException e) { - s_logger.warn(e.getMessage(), e); - } - - q = QueryBuilder.create(VMInstanceVO.class); - q.and(q.entity().getInstanceName(), SearchCriteria.Op.EQ, vm.getName()); - vmvo = q.find(); - if (vmvo == null) { - return new StartAnswer(cmd, String.format("cannot find vm[name:%s] while waiting for baremtal provision done notification", vm.getName())); - } - - if (VirtualMachine.State.Running == vmvo.getState()) { - return new StartAnswer(cmd); - } - - s_logger.debug(String.format("still wait for baremetal provision done notification for vm[name:%s], current vm state is %s", vmvo.getInstanceName(), vmvo.getState())); - } - - return new StartAnswer(cmd, String.format("timeout after %s seconds, no baremetal provision done notification received. vm[name:%s] failed to start", isProvisionDoneNotificationTimeout, vm.getName())); - } - } - s_logger.debug("Start bare metal vm " + vm.getName() + "successfully"); _vmName = vm.getName(); return new StartAnswer(cmd); diff --git a/plugins/hypervisors/baremetal/src/com/cloud/baremetal/networkservice/BaremetalKickStartServiceImpl.java b/plugins/hypervisors/baremetal/src/com/cloud/baremetal/networkservice/BaremetalKickStartServiceImpl.java index 58a05088f25..bd363f698aa 100755 --- a/plugins/hypervisors/baremetal/src/com/cloud/baremetal/networkservice/BaremetalKickStartServiceImpl.java +++ b/plugins/hypervisors/baremetal/src/com/cloud/baremetal/networkservice/BaremetalKickStartServiceImpl.java @@ -30,7 +30,6 @@ import java.util.Map; import javax.ejb.Local; import javax.inject.Inject; -import com.cloud.configuration.Config; import org.apache.log4j.Logger; import org.apache.cloudstack.api.AddBaremetalKickStartPxeCmd; @@ -219,11 +218,6 @@ public class BaremetalKickStartServiceImpl extends BareMetalPxeServiceBase imple throw new CloudRuntimeException(String.format("cannot find management nic on virtual router[id:%s]", vr.getId())); } - String internalServerIp = _configDao.getValue(Config.BaremetalInternalStorageServer.key()); - if (internalServerIp == null) { - throw new CloudRuntimeException(String.format("please specify 'baremetal.internal.storage.server.ip', which is the http server/nfs server storing kickstart files and ISO files, in global setting")); - } - List tuple = parseKickstartUrl(profile); Pair ret = SshHelper.sshExecute(mgmtNic.getIp4Address(), 3922, "root", getSystemVMKeyFile(), null, String.format("/usr/bin/prepare_pxe.sh %s %s %s %s %s", tuple.get(1), tuple.get(2), profile.getTemplate().getUuid(), diff --git a/plugins/hypervisors/baremetal/src/org/apache/cloudstack/api/BaremetalProvisionDoneNotificationCmd.java b/plugins/hypervisors/baremetal/src/org/apache/cloudstack/api/BaremetalProvisionDoneNotificationCmd.java deleted file mode 100755 index 9cb4b57bbaf..00000000000 --- a/plugins/hypervisors/baremetal/src/org/apache/cloudstack/api/BaremetalProvisionDoneNotificationCmd.java +++ /dev/null @@ -1,87 +0,0 @@ -// Licensed to the Apache Software Foundation (ASF) under one -// or more contributor license agreements. See the NOTICE file -// distributed with this work for additional information -// regarding copyright ownership. The ASF licenses this file -// to you under the Apache License, Version 2.0 (the -// "License"); you may not use this file except in compliance -// with the License. You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, -// software distributed under the License is distributed on an -// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY -// KIND, either express or implied. See the License for the -// specific language governing permissions and limitations -// under the License. -// -package org.apache.cloudstack.api; - -import com.cloud.baremetal.manager.BaremetalManager; -import com.cloud.event.EventTypes; -import com.cloud.exception.ConcurrentOperationException; -import com.cloud.exception.InsufficientCapacityException; -import com.cloud.exception.NetworkRuleConflictException; -import com.cloud.exception.ResourceAllocationException; -import com.cloud.exception.ResourceUnavailableException; -import org.apache.cloudstack.acl.RoleType; -import org.apache.cloudstack.api.response.SuccessResponse; -import org.apache.cloudstack.context.CallContext; - -import javax.inject.Inject; -import org.apache.log4j.Logger; - -/** - * Created by frank on 9/17/14. - */ -@APICommand(name = "notifyBaremetalProvisionDone", description = "Notify provision has been done on a host. This api is for baremetal virtual router service, not for end user", responseObject = SuccessResponse.class, - requestHasSensitiveInfo = false, responseHasSensitiveInfo = false, authorized = {RoleType.User}) -public class BaremetalProvisionDoneNotificationCmd extends BaseAsyncCmd { - public static final Logger s_logger = Logger.getLogger(BaremetalProvisionDoneNotificationCmd.class); - private static final String s_name = "baremetalprovisiondone"; - - @Inject - private BaremetalManager bmMgr; - - @Parameter(name="mac", required = true, description = "mac of the nic used for provision") - private String mac; - - @Override - public String getEventType() { - return EventTypes.EVENT_BAREMETAL_PROVISION_DONE; - } - - @Override - public String getEventDescription() { - return "notify management server that baremetal provision has been done on a host"; - } - - @Override - public void execute() throws ResourceUnavailableException, InsufficientCapacityException, ServerApiException, ConcurrentOperationException, ResourceAllocationException, NetworkRuleConflictException { - try { - bmMgr.notifyProvisionDone(this); - this.setResponseObject(new SuccessResponse(getCommandName())); - } catch (Exception e) { - s_logger.warn(String.format("unable to notify baremetal provision done[mac:%s]", mac), e); - throw new ServerApiException(ApiErrorCode.INTERNAL_ERROR, e.getMessage()); - } - } - - public String getMac() { - return mac; - } - - public void setMac(String mac) { - this.mac = mac; - } - - @Override - public String getCommandName() { - return s_name; - } - - @Override - public long getEntityOwnerId() { - return CallContext.current().getCallingAccount().getId(); - } -} diff --git a/server/src/com/cloud/configuration/Config.java b/server/src/com/cloud/configuration/Config.java index 9309e3aba3c..1f15d39f81e 100755 --- a/server/src/com/cloud/configuration/Config.java +++ b/server/src/com/cloud/configuration/Config.java @@ -1849,6 +1849,22 @@ public enum Config { "The maximum number of retrying times to search for an available IPv6 address in the table", null), + BaremetalEnableCompleteNotification( + "Advanced", + ManagementServer.class, + Boolean.class, + "baremetal.provision.done.notification", + "false", + "Enable provision done notification through virtual router", + null), + BaremetalPeerHypervisorType( + "Advanced", + ManagementServer.class, + String.class, + "baremetal.peer.hypervisor.type", + "Vmware", + "Hypervisor[Xenserver/KVM/VMWare] used to spring up virtual router for baremetal instances. The cluster having this hypervisor type must be in the same zone with baremetal cluster", + null), BaremetalInternalStorageServer( "Advanced", ManagementServer.class, @@ -1857,30 +1873,6 @@ public enum Config { null, "the ip address of server that stores kickstart file, kernel, initrd, ISO for advanced networking baremetal provisioning", null), - BaremetalProvisionDoneNotificationEnabled( - "Advanced", - ManagementServer.class, - Boolean.class, - "baremetal.provision.done.notification.enabled", - "true", - "whether to enable baremetal provison done notification", - null), - BaremetalProvisionDoneNotificationTimeout( - "Advanced", - ManagementServer.class, - Integer.class, - "baremetal.provision.done.notification.timeout", - "1800", - "the max time to wait before treating a baremetal provision as failure if no provision done notification is not received, in secs", - null), - BaremetalProvisionDoneNotificationPort( - "Advanced", - ManagementServer.class, - Integer.class, - "baremetal.provision.done.notification.port", - "8080", - "the port that listens baremetal provision done notification. Should be the same to port management server listening on for now. Please change it to management server port if it's not default 8080", - null), ExternalBaremetalSystemUrl( "Advanced", ManagementServer.class, diff --git a/server/src/com/cloud/network/router/VirtualNetworkApplianceManagerImpl.java b/server/src/com/cloud/network/router/VirtualNetworkApplianceManagerImpl.java index 898aec9a6a5..c95867e04b9 100755 --- a/server/src/com/cloud/network/router/VirtualNetworkApplianceManagerImpl.java +++ b/server/src/com/cloud/network/router/VirtualNetworkApplianceManagerImpl.java @@ -2323,7 +2323,7 @@ VirtualMachineGuru, Listener, Configurable, StateListener acntq = QueryBuilder.create(UserVO.class); acntq.and(acntq.entity().getUsername(), SearchCriteria.Op.EQ, "baremetal-system-account"); UserVO user = acntq.find(); @@ -2332,8 +2332,6 @@ VirtualMachineGuru, Listener, Configurable, StateListener (cherry picked from commit 30611be15abd4cd8843c10ddb2d3b131aea2cda3) --- ui/scripts/accountsWizard.js | 20 +------------------- 1 file changed, 1 insertion(+), 19 deletions(-) diff --git a/ui/scripts/accountsWizard.js b/ui/scripts/accountsWizard.js index f0221932706..6b0dd19682f 100644 --- a/ui/scripts/accountsWizard.js +++ b/ui/scripts/accountsWizard.js @@ -222,12 +222,6 @@ dataType: "json", type: "POST", async: false, - success: function(json) { - var count = json.ldapuserresponse.count; - args.response.success({ - data: count - }); - }, error: function(XMLHttpResponse) { args.response.error(parseXMLHttpResponse(XMLHttpResponse)); } @@ -238,12 +232,6 @@ dataType: "json", type: "POST", async: false, - success: function(json) { - var item = json.createaccountresponse.account; - args.response.success({ - data: item - }); - }, error: function(XMLHttpResponse) { args.response.error(parseXMLHttpResponse(XMLHttpResponse)); } @@ -255,12 +243,6 @@ dataType: "json", type: "POST", async: false, - success: function(json) { - var item = json.createaccountresponse.account; - args.response.success({ - data: item - }); - }, error: function(XMLHttpResponse) { args.response.error(parseXMLHttpResponse(XMLHttpResponse)); } @@ -268,4 +250,4 @@ } } }; -}(cloudStack, jQuery)); \ No newline at end of file +}(cloudStack, jQuery)); From 4fd0799d300920e54b1054f9ec51cc5dda8bb31e Mon Sep 17 00:00:00 2001 From: Gabor Apati-Nagy Date: Tue, 16 Sep 2014 18:15:58 +0100 Subject: [PATCH 005/129] CLOUDSTACK-7562: Details page for disk offerings only show details for write performance -Fixed all related typos Signed-off-by: Brian Federle (cherry picked from commit dbb70fadc0767974a7a87b4c5491ba9517ea1804) --- ui/scripts/configuration.js | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/ui/scripts/configuration.js b/ui/scripts/configuration.js index 9b0086f6687..b6c94f83376 100644 --- a/ui/scripts/configuration.js +++ b/ui/scripts/configuration.js @@ -1463,13 +1463,13 @@ label: 'label.network.rate' }, diskBytesReadRate: { - label: 'label.disk.bytes.write.rate' + label: 'label.disk.bytes.read.rate' }, diskBytesWriteRate: { label: 'label.disk.bytes.write.rate' }, diskIopsReadRate: { - label: 'label.disk.iops.write.rate' + label: 'label.disk.iops.read.rate' }, diskIopsWriteRate: { label: 'label.disk.iops.write.rate' @@ -2120,13 +2120,13 @@ } }, diskBytesReadRate: { - label: 'label.disk.bytes.write.rate' + label: 'label.disk.bytes.read.rate' }, diskBytesWriteRate: { label: 'label.disk.bytes.write.rate' }, diskIopsReadRate: { - label: 'label.disk.iops.write.rate' + label: 'label.disk.iops.read.rate' }, diskIopsWriteRate: { label: 'label.disk.iops.write.rate' From 8f4e8a4d79bbe1bb7497ca2043a087c556f06cc8 Mon Sep 17 00:00:00 2001 From: Sangeetha Hariharan Date: Fri, 19 Sep 2014 14:51:10 -0700 Subject: [PATCH 006/129] CLOUDSTACK-7587 - Automation - Add simulator_only attribute to acl related test cases. (cherry picked from commit 7877f3f9603b967680cf9480cb6e51845a81ddd8) --- .../component/test_acl_isolatednetwork.py | 66 +++--- .../test_acl_isolatednetwork_delete.py | 20 +- .../component/test_acl_listsnapshot.py | 190 +++++++++--------- test/integration/component/test_acl_listvm.py | 190 +++++++++--------- .../component/test_acl_listvolume.py | 190 +++++++++--------- .../component/test_acl_sharednetwork.py | 56 +++--- ...cl_sharednetwork_deployVM-impersonation.py | 102 +++++----- 7 files changed, 407 insertions(+), 407 deletions(-) diff --git a/test/integration/component/test_acl_isolatednetwork.py b/test/integration/component/test_acl_isolatednetwork.py index 59119f15c6e..b1e2575a0c3 100644 --- a/test/integration/component/test_acl_isolatednetwork.py +++ b/test/integration/component/test_acl_isolatednetwork.py @@ -357,7 +357,7 @@ class TestIsolatedNetwork(cloudstackTestCase): ## Test cases relating to createNetwork as admin user - @attr(tags=[ "advanced"],required_hardware="false") + @attr("simulator_only",tags=[ "advanced"],required_hardware="false") def test_01_createNetwork_admin(self): """ @@ -380,7 +380,7 @@ class TestIsolatedNetwork(cloudstackTestCase): "Admin User is not able to create a network for himself") - @attr(tags=[ "advanced"],required_hardware="false") + @attr("simulator_only",tags=[ "advanced"],required_hardware="false") def test_02_createNetwork_admin_foruserinsamedomain(self): """ @@ -404,7 +404,7 @@ class TestIsolatedNetwork(cloudstackTestCase): True, "Admin User is not able to create a network for other users in his domain") - @attr(tags=[ "advanced"],required_hardware="false") + @attr("simulator_only",tags=[ "advanced"],required_hardware="false") def test_03_createNetwork_admin_foruserinotherdomain(self): """ @@ -430,7 +430,7 @@ class TestIsolatedNetwork(cloudstackTestCase): ## Test cases relating to createNetwork as domain admin user - @attr(tags=[ "advanced"],required_hardware="false") + @attr("simulator_only",tags=[ "advanced"],required_hardware="false") def test_04_createNetwork_domaindmin(self): """ @@ -453,7 +453,7 @@ class TestIsolatedNetwork(cloudstackTestCase): "Domain admin User is not able to create a network for himself") - @attr(tags=[ "advanced"],required_hardware="false") + @attr("simulator_only",tags=[ "advanced"],required_hardware="false") def test_05_createNetwork_domaindmin_foruserinsamedomain(self): """ @@ -477,7 +477,7 @@ class TestIsolatedNetwork(cloudstackTestCase): True, "Domain admin User is not able to create a network for other users in his domain") - @attr(tags=[ "advanced"],required_hardware="false") + @attr("simulator_only",tags=[ "advanced"],required_hardware="false") def test_06_createNetwork_domaindmin_foruserinsubdomain(self): """ @@ -501,7 +501,7 @@ class TestIsolatedNetwork(cloudstackTestCase): True, "Domain admin User is not able to create a network for other users in his sub domain") - @attr(tags=[ "advanced"],required_hardware="false") + @attr("simulator_only",tags=[ "advanced"],required_hardware="false") def test_07_createNetwork_domaindmin_forcrossdomainuser(self): """ @@ -528,7 +528,7 @@ class TestIsolatedNetwork(cloudstackTestCase): ## Test cases relating to createNetwork as regular user - @attr(tags=[ "advanced"],required_hardware="false") + @attr("simulator_only",tags=[ "advanced"],required_hardware="false") def test_08_createNetwork_user(self): """ @@ -551,7 +551,7 @@ class TestIsolatedNetwork(cloudstackTestCase): "User is not able to create a network for himself") - @attr(tags=[ "advanced"],required_hardware="false") + @attr("simulator_only",tags=[ "advanced"],required_hardware="false") def test_09_createNetwork_user_foruserinsamedomain(self): """ @@ -577,7 +577,7 @@ class TestIsolatedNetwork(cloudstackTestCase): if not CloudstackAclException.verifyMsginException(e,CloudstackAclException.UNABLE_TO_LIST_NETWORK_ACCOUNT): self.fail("Error message validation failed when when User tries to create network for other users in his domain ") - @attr(tags=[ "advanced"],required_hardware="false") + @attr("simulator_only",tags=[ "advanced"],required_hardware="false") def test_10_createNetwork_user_foruserinotherdomain(self): """ @@ -606,7 +606,7 @@ class TestIsolatedNetwork(cloudstackTestCase): ## Test cases relating to Deploying VM in a network as admin user - @attr(tags=[ "advanced"],required_hardware="false") + @attr("simulator_only",tags=[ "advanced"],required_hardware="false") def test_11_deployvm_admin(self): """ @@ -630,7 +630,7 @@ class TestIsolatedNetwork(cloudstackTestCase): "Admin User is not able to deploy VM in his own network") - @attr(tags=[ "advanced"],required_hardware="false") + @attr("simulator_only",tags=[ "advanced"],required_hardware="false") def test_12_deployvm_admin_foruserinsamedomain(self): """ @@ -655,7 +655,7 @@ class TestIsolatedNetwork(cloudstackTestCase): True, "Admin User is not able to deploy VM for users in his domain") - @attr(tags=[ "advanced"],required_hardware="false") + @attr("simulator_only",tags=[ "advanced"],required_hardware="false") def test_13_deployvm_admin_foruserinotherdomain(self): """ @@ -680,7 +680,7 @@ class TestIsolatedNetwork(cloudstackTestCase): True, "Admin User is not able to deploy VM for users users in other domain") - @attr(tags=[ "advanced"],required_hardware="false") + @attr("simulator_only",tags=[ "advanced"],required_hardware="false") def test_13_1_deployvm_admin_foruserinotherdomain_crossnetwork(self): """ @@ -708,7 +708,7 @@ class TestIsolatedNetwork(cloudstackTestCase): ## Test cases relating to deploying VM as domain admin user - @attr(tags=[ "advanced"],required_hardware="false") + @attr("simulator_only",tags=[ "advanced"],required_hardware="false") def test_14_deployvm_domaindmin(self): """ @@ -732,7 +732,7 @@ class TestIsolatedNetwork(cloudstackTestCase): "Domain admin User is not able to deploy VM for himself") - @attr(tags=[ "advanced"],required_hardware="false") + @attr("simulator_only",tags=[ "advanced"],required_hardware="false") def test_15_deployvm_domaindmin_foruserinsamedomain(self): """ @@ -756,7 +756,7 @@ class TestIsolatedNetwork(cloudstackTestCase): True, "Domain admin User is not able to deploy VM for other users in his domain") - @attr(tags=[ "advanced"],required_hardware="false") + @attr("simulator_only",tags=[ "advanced"],required_hardware="false") def test_16_deployvm_domaindmin_foruserinsubdomain(self): """ @@ -780,7 +780,7 @@ class TestIsolatedNetwork(cloudstackTestCase): True, "Domain admin User is not able to deploy vm for himself") - @attr(tags=[ "advanced"],required_hardware="false") + @attr("simulator_only",tags=[ "advanced"],required_hardware="false") def test_17_deployvm_domaindmin_forcrossdomainuser(self): """ @@ -807,7 +807,7 @@ class TestIsolatedNetwork(cloudstackTestCase): if not CloudstackAclException.verifyMsginException(e,CloudstackAclException.NO_PERMISSION_TO_OPERATE_DOMAIN): self.fail("Error message validation failed when Domain admin tries to deploy vm for users not in hos domain ") - @attr(tags=[ "advanced"],required_hardware="false") + @attr("simulator_only",tags=[ "advanced"],required_hardware="false") def test_17_1_deployvm_domainadmin_foruserinotherdomain_crossnetwork(self): """ @@ -835,7 +835,7 @@ class TestIsolatedNetwork(cloudstackTestCase): ## Test cases relating to deploying VM as regular user - @attr(tags=[ "advanced"],required_hardware="false") + @attr("simulator_only",tags=[ "advanced"],required_hardware="false") def test_18_deployvm_user(self): """ @@ -858,7 +858,7 @@ class TestIsolatedNetwork(cloudstackTestCase): "User is not able to deploy vm for himself") - @attr(tags=[ "advanced"],required_hardware="false") + @attr("simulator_only",tags=[ "advanced"],required_hardware="false") def test_19_deployvm_user_foruserinsamedomain(self): """ @@ -885,7 +885,7 @@ class TestIsolatedNetwork(cloudstackTestCase): if not CloudstackAclException.verifyMsginException(e,CloudstackAclException.NO_PERMISSION_TO_OPERATE_ACCOUNT): self.fail("Error message validation failed when Regular user tries to deploy vm for other users in his domain ") - @attr(tags=[ "advanced"],required_hardware="false") + @attr("simulator_only",tags=[ "advanced"],required_hardware="false") def test_20_deployvm_user_foruserincrossdomain(self): """ @@ -912,7 +912,7 @@ class TestIsolatedNetwork(cloudstackTestCase): if not CloudstackAclException.verifyMsginException(e,CloudstackAclException.NO_PERMISSION_TO_OPERATE_ACCOUNT): self.fail("Error message validation failed when Regular user tries to deploy vm for users not in his domain ") - @attr(tags=[ "advanced"],required_hardware="false") + @attr("simulator_only",tags=[ "advanced"],required_hardware="false") def test_20_1_deployvm_user_incrossnetwork(self): """ @@ -938,7 +938,7 @@ class TestIsolatedNetwork(cloudstackTestCase): ## Test cases relating to restart Network as admin user - @attr(tags=[ "advanced"],required_hardware="false") + @attr("simulator_only",tags=[ "advanced"],required_hardware="false") def test_21_restartNetwork_admin(self): """ @@ -954,7 +954,7 @@ class TestIsolatedNetwork(cloudstackTestCase): "Admin User is not able to restart network he owns") - @attr(tags=[ "advanced"],required_hardware="false") + @attr("simulator_only",tags=[ "advanced"],required_hardware="false") def test_22_restartNetwork_admin_foruserinsamedomain(self): """ @@ -969,7 +969,7 @@ class TestIsolatedNetwork(cloudstackTestCase): True, "Admin User is not able to restart network owned by users his domain") - @attr(tags=[ "advanced"],required_hardware="false") + @attr("simulator_only",tags=[ "advanced"],required_hardware="false") def test_23_restartNetwork_admin_foruserinotherdomain(self): """ @@ -986,7 +986,7 @@ class TestIsolatedNetwork(cloudstackTestCase): ## Test cases relating to restart Network as domain admin user - @attr(tags=[ "advanced"],required_hardware="false") + @attr("simulator_only",tags=[ "advanced"],required_hardware="false") def test_24_restartNetwork_domaindmin(self): """ @@ -1002,7 +1002,7 @@ class TestIsolatedNetwork(cloudstackTestCase): "Domain admin User is not able to restart network for himself") - @attr(tags=[ "advanced"],required_hardware="false") + @attr("simulator_only",tags=[ "advanced"],required_hardware="false") def test_25_restartNetwork_domaindmin_foruserinsamedomain(self): """ @@ -1016,7 +1016,7 @@ class TestIsolatedNetwork(cloudstackTestCase): True, "Domain admin User is not able to restart network for other users in his domain") - @attr(tags=[ "advanced"],required_hardware="false") + @attr("simulator_only",tags=[ "advanced"],required_hardware="false") def test_26_restartNetwork_domaindmin_foruserinsubdomain(self): """ @@ -1030,7 +1030,7 @@ class TestIsolatedNetwork(cloudstackTestCase): True, "Domain admin User is not able to restart network he owns") - @attr(tags=[ "advanced"],required_hardware="false") + @attr("simulator_only",tags=[ "advanced"],required_hardware="false") def test_27_restartNetwork_domaindmin_forcrossdomainuser(self): """ @@ -1049,7 +1049,7 @@ class TestIsolatedNetwork(cloudstackTestCase): ## Test cases relating restart network as regular user - @attr(tags=[ "advanced"],required_hardware="false") + @attr("simulator_only",tags=[ "advanced"],required_hardware="false") def test_28_restartNetwork_user(self): """ @@ -1064,7 +1064,7 @@ class TestIsolatedNetwork(cloudstackTestCase): "User is not able to restart network he owns") - @attr(tags=[ "advanced"],required_hardware="false") + @attr("simulator_only",tags=[ "advanced"],required_hardware="false") def test_29_restartNetwork_user_foruserinsamedomain(self): """ @@ -1081,7 +1081,7 @@ class TestIsolatedNetwork(cloudstackTestCase): if not CloudstackAclException.verifyMsginException(e,CloudstackAclException.NO_PERMISSION_TO_OPERATE_ACCOUNT): self.fail("Error message validation failed when Regular user tries to restart network for users in his domain ") - @attr(tags=[ "advanced"],required_hardware="false") + @attr("simulator_only",tags=[ "advanced"],required_hardware="false") def test_30_restartNetwork_user_foruserinotherdomain(self): """ diff --git a/test/integration/component/test_acl_isolatednetwork_delete.py b/test/integration/component/test_acl_isolatednetwork_delete.py index 3d09390c1ab..9d34e88f0c0 100644 --- a/test/integration/component/test_acl_isolatednetwork_delete.py +++ b/test/integration/component/test_acl_isolatednetwork_delete.py @@ -343,7 +343,7 @@ class TestIsolatedNetworkDelete(cloudstackTestCase): ## Test cases relating to delete Network as admin user - @attr(tags=["advanced"],required_hardware="false") + @attr("simulator_only",tags=["advanced"],required_hardware="false") def test_deleteNetwork_admin(self): """ Validate that Admin should be able to delete network he owns @@ -359,7 +359,7 @@ class TestIsolatedNetworkDelete(cloudstackTestCase): "Admin User is not able to restart network he owns") - @attr(tags=["advanced"],required_hardware="false") + @attr("simulator_only",tags=["advanced"],required_hardware="false") def test_deleteNetwork_admin_foruserinsamedomain(self): """ @@ -375,7 +375,7 @@ class TestIsolatedNetworkDelete(cloudstackTestCase): None, "Admin User is not able to delete network owned by users his domain") - @attr(tags=["advanced"],required_hardware="false") + @attr("simulator_only",tags=["advanced"],required_hardware="false") def test_deleteNetwork_admin_foruserinotherdomain(self): # Validate that Admin should be able to delete network for users in his sub domain @@ -391,7 +391,7 @@ class TestIsolatedNetworkDelete(cloudstackTestCase): ## Test cases relating to delete Network as domain admin user - @attr(tags=["advanced"],required_hardware="false") + @attr("simulator_only",tags=["advanced"],required_hardware="false") def test_deleteNetwork_domaindmin(self): """ Validate that Domain admin should be able to delete network for himslef @@ -407,7 +407,7 @@ class TestIsolatedNetworkDelete(cloudstackTestCase): "Domain admin User is not able to delete a network he owns") - @attr(tags=["advanced"],required_hardware="false") + @attr("simulator_only",tags=["advanced"],required_hardware="false") def test_deleteNetwork_domaindmin_foruserinsamedomain(self): """ @@ -422,7 +422,7 @@ class TestIsolatedNetworkDelete(cloudstackTestCase): None, "Domain admin User is not able to delete a network that is owned by user in the same domain") - @attr(tags=["advanced"],required_hardware="false") + @attr("simulator_only",tags=["advanced"],required_hardware="false") def test_deleteNetwork_domaindmin_foruserinsubdomain(self): """ @@ -438,7 +438,7 @@ class TestIsolatedNetworkDelete(cloudstackTestCase): None, "Domain admin User is not able to delete a network that is owned by user in the subdomain") - @attr(tags=["advanced"],required_hardware="false") + @attr("simulator_only",tags=["advanced"],required_hardware="false") def test_deleteNetwork_domaindmin_forcrossdomainuser(self): """ @@ -458,7 +458,7 @@ class TestIsolatedNetworkDelete(cloudstackTestCase): ## Test cases relating deleting network as regular user - @attr(tags=["advanced"],required_hardware="false") + @attr("simulator_only",tags=["advanced"],required_hardware="false") def test_deleteNetwork_user(self): """ @@ -475,7 +475,7 @@ class TestIsolatedNetworkDelete(cloudstackTestCase): "User is not able to delete a network he owns") - @attr(tags=["advanced"],required_hardware="false") + @attr("simulator_only",tags=["advanced"],required_hardware="false") def test_deleteNetwork_user_foruserinsamedomain(self): """ @@ -492,7 +492,7 @@ class TestIsolatedNetworkDelete(cloudstackTestCase): if not CloudstackAclException.verifyMsginException(e,CloudstackAclException.NO_PERMISSION_TO_OPERATE_ACCOUNT): self.fail("Regular user is allowed to delete network for users in his domain ") - @attr(tags=["advanced"],required_hardware="false") + @attr("simulator_only",tags=["advanced"],required_hardware="false") def test_deleteNetwork_user_foruserinotherdomain(self): """ diff --git a/test/integration/component/test_acl_listsnapshot.py b/test/integration/component/test_acl_listsnapshot.py index ac8748d0b4f..394072d9c64 100644 --- a/test/integration/component/test_acl_listsnapshot.py +++ b/test/integration/component/test_acl_listsnapshot.py @@ -384,7 +384,7 @@ class TestSnapshotList(cloudstackTestCase): ## Domain Admin - Test cases with listall =true - @attr(tags=["advanced"],required_hardware="false") + @attr("simulator_only",tags=["advanced"],required_hardware="false") def test_listSnapshot_as_domainadmin_listall_true(self): """ Test listing of Snapshots by passing listall="true" parameter as domain admin @@ -417,7 +417,7 @@ class TestSnapshotList(cloudstackTestCase): True, "Account access check failed!!") - @attr(tags=["advanced"],required_hardware="false") + @attr("simulator_only",tags=["advanced"],required_hardware="false") def test_listSnapshot_as_domainadmin_listall_true_rec_true(self): """ Test listing of Snapshots by passing listall="true"i and isrecusriv="true" parameter as domain admin @@ -450,7 +450,7 @@ class TestSnapshotList(cloudstackTestCase): True, "Account access check failed!!") - @attr(tags=["advanced"],required_hardware="false") + @attr("simulator_only",tags=["advanced"],required_hardware="false") def test_listSnapshot_as_domainadmin_listall_true_rec_false(self): """ Test listing of Snapshots by passing listall="true" and isrecusriv="false" parameter as domain admin @@ -485,7 +485,7 @@ class TestSnapshotList(cloudstackTestCase): ## Domain Admin - Test cases with listall=false - @attr(tags=["advanced"],required_hardware="false") + @attr("simulator_only",tags=["advanced"],required_hardware="false") def test_listSnapshot_as_domainadmin_listall_false(self): """ Test listing of Snapshots by passing listall="false" parameter as domain admin @@ -510,7 +510,7 @@ class TestSnapshotList(cloudstackTestCase): True, "Account access check failed!!") - @attr(tags=["advanced"],required_hardware="false") + @attr("simulator_only",tags=["advanced"],required_hardware="false") def test_listSnapshot_as_domainadmin_listall_false_rec_true(self): """ Test listing of Snapshots by passing listall="false" and isrecusrive="true" parameter as domain admin @@ -535,7 +535,7 @@ class TestSnapshotList(cloudstackTestCase): True, "Account access check failed!!") - @attr(tags=["advanced"],required_hardware="false") + @attr("simulator_only",tags=["advanced"],required_hardware="false") def test_listSnapshot_as_domainadmin_listall_false_rec_false(self): """ Test listing of Snapshots by passing listall="false" and isrecusrive="false" parameter as domain admin @@ -561,7 +561,7 @@ class TestSnapshotList(cloudstackTestCase): ## Domain Admin - Test cases without passing listall paramter - @attr(tags=["advanced"],required_hardware="false") + @attr("simulator_only",tags=["advanced"],required_hardware="false") def test_listSnapshot_as_domainadmin(self): """ Test listing of Snapshots by passing no parameter as domain admin @@ -586,7 +586,7 @@ class TestSnapshotList(cloudstackTestCase): True, "Account access check failed!!") - @attr(tags=["advanced"],required_hardware="false") + @attr("simulator_only",tags=["advanced"],required_hardware="false") def test_listSnapshot_as_domainadmin_rec_true(self): """ Test listing of Snapshots by passing isrecusrive="true" parameter as domain admin @@ -611,7 +611,7 @@ class TestSnapshotList(cloudstackTestCase): True, "Account access check failed!!") - @attr(tags=["advanced"],required_hardware="false") + @attr("simulator_only",tags=["advanced"],required_hardware="false") def test_listSnapshot_as_domainadmin_true_rec_false(self): """ Test listing of Snapshots by passing isrecusrive="false" parameter as domain admin @@ -638,7 +638,7 @@ class TestSnapshotList(cloudstackTestCase): ## Domain Admin - Test cases when domainId is passed with listall =true - @attr(tags=["advanced"],required_hardware="false") + @attr("simulator_only",tags=["advanced"],required_hardware="false") def test_listSnapshot_as_domainadmin_domainid_listall_true(self): """ Test listing of Snapshots by passing domainId and listall="true" parameter as domain admin @@ -665,7 +665,7 @@ class TestSnapshotList(cloudstackTestCase): True, "Account access check failed!!") - @attr(tags=["advanced"],required_hardware="false") + @attr("simulator_only",tags=["advanced"],required_hardware="false") def test_listSnapshot_as_domainadmin_domainid_listall_true_rec_true(self): """ Test listing of Snapshots by passing domainId ,listall="true" and isrecursive="true" parameter as domain admin @@ -693,7 +693,7 @@ class TestSnapshotList(cloudstackTestCase): True, "Account access check failed!!") - @attr(tags=["advanced"],required_hardware="false") + @attr("simulator_only",tags=["advanced"],required_hardware="false") def test_listSnapshot_as_domainadmin_domainid_listall_true_rec_false(self): """ Test listing of Snapshots by passing domainId ,listall="true" and isrecursive="false" parameter as domain admin @@ -723,7 +723,7 @@ class TestSnapshotList(cloudstackTestCase): ## Domain Admin - Test cases when domainId is passed with listall=false - @attr(tags=["advanced"],required_hardware="false") + @attr("simulator_only",tags=["advanced"],required_hardware="false") def test_listSnapshot_as_domainadmin_domainid_listall_false(self): """ Test listing of Snapshots by passing domainId ,listall="false" parameter as domain admin @@ -750,7 +750,7 @@ class TestSnapshotList(cloudstackTestCase): True, "Account access check failed!!") - @attr(tags=["advanced"],required_hardware="false") + @attr("simulator_only",tags=["advanced"],required_hardware="false") def test_listSnapshot_as_domainadmin_domainid_listall_false_rec_true(self): """ Test listing of Snapshots by passing domainId ,listall="false" and isrecursive="true" parameter as domain admin @@ -778,7 +778,7 @@ class TestSnapshotList(cloudstackTestCase): True, "Account access check failed!!") - @attr(tags=["advanced"],required_hardware="false") + @attr("simulator_only",tags=["advanced"],required_hardware="false") def test_listSnapshot_as_domainadmin_domainid_listall_false_rec_false(self): """ Test listing of Snapshots by passing domainId ,listall="false" and isrecursive="false" parameter as domain admin @@ -808,7 +808,7 @@ class TestSnapshotList(cloudstackTestCase): ## Domain Admin - Test cases when domainId is passed with no listall parameter - @attr(tags=["advanced"],required_hardware="false") + @attr("simulator_only",tags=["advanced"],required_hardware="false") def test_listSnapshot_as_domainadmin_domainid(self): """ @@ -835,7 +835,7 @@ class TestSnapshotList(cloudstackTestCase): True, "Account access check failed!!") - @attr(tags=["advanced"],required_hardware="false") + @attr("simulator_only",tags=["advanced"],required_hardware="false") def test_listSnapshot_as_domainadmin_domainid_rec_true(self): """ Test listing of Snapshots by passing domainId and isrecursive="true" parameter as domain admin @@ -863,7 +863,7 @@ class TestSnapshotList(cloudstackTestCase): True, "Account access check failed!!") - @attr(tags=["advanced"],required_hardware="false") + @attr("simulator_only",tags=["advanced"],required_hardware="false") def test_listSnapshot_as_domainadmin_domainid_rec_false(self): """ Test listing of Snapshots by passing domainId and isrecursive="false" parameter as domain admin @@ -893,7 +893,7 @@ class TestSnapshotList(cloudstackTestCase): ## Domain Admin - Test cases when account and domainId is passed with listall =true - @attr(tags=["advanced"],required_hardware="false") + @attr("simulator_only",tags=["advanced"],required_hardware="false") def test_listSnapshot_as_domainadmin_domainid_accountid_listall_true(self): """ Test listing of Snapshots by passing account ,domainId and listall="true" parameter as domain admin @@ -918,7 +918,7 @@ class TestSnapshotList(cloudstackTestCase): True, "Account access check failed!!") - @attr(tags=["advanced"],required_hardware="false") + @attr("simulator_only",tags=["advanced"],required_hardware="false") def test_listSnapshot_as_domainadmin_domainid_accountid_listall_true_rec_true(self): """ Test listing of Snapshots by passing account ,domainId and listall="true" and isrecursive="true" parameter as domain admin @@ -943,7 +943,7 @@ class TestSnapshotList(cloudstackTestCase): True, "Account access check failed!!") - @attr(tags=["advanced"],required_hardware="false") + @attr("simulator_only",tags=["advanced"],required_hardware="false") def test_listSnapshot_as_domainadmin_domainid_accountid_listall_true_rec_false(self): """ Test listing of Snapshots by passing account ,domainId , listall="true" and isrecursive="false" parameter as domain admin @@ -971,7 +971,7 @@ class TestSnapshotList(cloudstackTestCase): ## Domain Admin - Test cases when account and domainId is passed with listall=false - @attr(tags=["advanced"],required_hardware="false") + @attr("simulator_only",tags=["advanced"],required_hardware="false") def test_listSnapshot_as_domainadmin_domainid_accountid_listall_false(self): """ Test listing of Snapshots by passing account ,domainId and listall="false" parameter as domain admin @@ -996,7 +996,7 @@ class TestSnapshotList(cloudstackTestCase): True, "Account access check failed!!") - @attr(tags=["advanced"],required_hardware="false") + @attr("simulator_only",tags=["advanced"],required_hardware="false") def test_listSnapshot_as_domainadmin_domainid_accountid_listall_false_rec_true(self): """ Test listing of Snapshots by passing account ,domainId and listall="false" and isrecursive="true" parameter as domain admin @@ -1021,7 +1021,7 @@ class TestSnapshotList(cloudstackTestCase): True, "Account access check failed!!") - @attr(tags=["advanced"],required_hardware="false") + @attr("simulator_only",tags=["advanced"],required_hardware="false") def test_listSnapshot_as_domainadmin_domainid_accountid_listall_false_rec_false(self): """ Test listing of Snapshots by passing account ,domainId , listall="false" and isrecursive="false" parameter as domain admin @@ -1048,7 +1048,7 @@ class TestSnapshotList(cloudstackTestCase): ## Domain Admin - Test cases when account and domainId is passed with listall not passed - @attr(tags=["advanced"],required_hardware="false") + @attr("simulator_only",tags=["advanced"],required_hardware="false") def test_listSnapshot_as_domainadmin_domainid_accountid(self): """ Test listing of Snapshots by passing account ,domainId parameter as domain admin @@ -1073,7 +1073,7 @@ class TestSnapshotList(cloudstackTestCase): True, "Account access check failed!!") - @attr(tags=["advanced"],required_hardware="false") + @attr("simulator_only",tags=["advanced"],required_hardware="false") def test_listSnapshot_as_domainadmin_domainid_accountid_rec_true(self): """ Test listing of Snapshots by passing account ,domainId and isrecursive="true" parameter as domain admin @@ -1098,7 +1098,7 @@ class TestSnapshotList(cloudstackTestCase): True, "Account access check failed!!") - @attr(tags=["advanced"],required_hardware="false") + @attr("simulator_only",tags=["advanced"],required_hardware="false") def test_listSnapshot_as_domainadmin_domainid_accountid_rec_false(self): """ Test listing of Snapshots by passing account ,domainId and isrecursive="false" parameter as domain admin @@ -1125,7 +1125,7 @@ class TestSnapshotList(cloudstackTestCase): ## ROOT Admin - Test cases with listall =true - @attr(tags=["advanced"],required_hardware="false") + @attr("simulator_only",tags=["advanced"],required_hardware="false") def test_listSnapshot_as_rootadmin_listall_true(self): """ Test listing of Snapshots by passing listall="true" parameter as admin @@ -1161,7 +1161,7 @@ class TestSnapshotList(cloudstackTestCase): True, "Account access check failed!!") - @attr(tags=["advanced"],required_hardware="false") + @attr("simulator_only",tags=["advanced"],required_hardware="false") def test_listSnapshot_as_rootadmin_listall_true_rec_true(self): """ Test listing of Snapshots by passing listall="true" and isrecusrive="true" parameter as admin @@ -1197,7 +1197,7 @@ class TestSnapshotList(cloudstackTestCase): True, "Account access check failed!!") - @attr(tags=["advanced"],required_hardware="false") + @attr("simulator_only",tags=["advanced"],required_hardware="false") def test_listSnapshot_as_rootadmin_listall_true_rec_false(self): """ Test listing of Snapshots by passing listall="true" and isrecusrive="false" parameter as admin @@ -1234,7 +1234,7 @@ class TestSnapshotList(cloudstackTestCase): ## ROOT Admin - Test cases with listall=false - @attr(tags=["advanced"],required_hardware="false") + @attr("simulator_only",tags=["advanced"],required_hardware="false") def test_listSnapshot_as_rootadmin_listall_false(self): """ Test listing of Snapshots by passing listall="false" parameter as admin @@ -1259,7 +1259,7 @@ class TestSnapshotList(cloudstackTestCase): True, "Account access check failed!!") - @attr(tags=["advanced"],required_hardware="false") + @attr("simulator_only",tags=["advanced"],required_hardware="false") def test_listSnapshot_as_rootadmin_listall_false_rec_true(self): """ Test listing of Snapshots by passing listall="false" and isrecusrive="true" parameter as admin @@ -1285,7 +1285,7 @@ class TestSnapshotList(cloudstackTestCase): "Account access check failed!!") - @attr(tags=["advanced"],required_hardware="false") + @attr("simulator_only",tags=["advanced"],required_hardware="false") def test_listSnapshot_as_rootadmin_listall_false_rec_false(self): """ Test listing of Snapshots by passing listall="false" and isrecusrive="false" parameter as admin @@ -1314,7 +1314,7 @@ class TestSnapshotList(cloudstackTestCase): ## ROOT Admin - Test cases without passing listall paramter - @attr(tags=["advanced"],required_hardware="false") + @attr("simulator_only",tags=["advanced"],required_hardware="false") def test_listSnapshot_as_rootadmin(self): """ Test listing of Snapshots by passing no parameter as admin @@ -1340,7 +1340,7 @@ class TestSnapshotList(cloudstackTestCase): True, "Account access check failed!!") - @attr(tags=["advanced"],required_hardware="false") + @attr("simulator_only",tags=["advanced"],required_hardware="false") def test_listSnapshot_as_rootadmin_rec_true(self): """ Test listing of Snapshots by passing isrecusrive="true" parameter as admin @@ -1365,7 +1365,7 @@ class TestSnapshotList(cloudstackTestCase): True, "Account access check failed!!") - @attr(tags=["advanced"],required_hardware="false") + @attr("simulator_only",tags=["advanced"],required_hardware="false") def test_listSnapshot_as_rootadmin_rec_false(self): """ Test listing of Snapshots by passing isrecusrive="false" parameter as admin @@ -1392,7 +1392,7 @@ class TestSnapshotList(cloudstackTestCase): ## ROOT Admin - Test cases when domainId is passed with listall =true - @attr(tags=["advanced"],required_hardware="false") + @attr("simulator_only",tags=["advanced"],required_hardware="false") def test_listSnapshot_as_rootadmin_domainid_listall_true(self): """ Test listing of Snapshots by passing domainid and listall="true" parameter as admin @@ -1419,7 +1419,7 @@ class TestSnapshotList(cloudstackTestCase): True, "Account access check failed!!") - @attr(tags=["advanced"],required_hardware="false") + @attr("simulator_only",tags=["advanced"],required_hardware="false") def test_listSnapshot_as_rootadmin_domainid_listall_true_rec_true(self): """ Test listing of Snapshots by passing domainid , listall="true" and isrecusrive="true" parameter as admin @@ -1447,7 +1447,7 @@ class TestSnapshotList(cloudstackTestCase): True, "Account access check failed!!") - @attr(tags=["advanced"],required_hardware="false") + @attr("simulator_only",tags=["advanced"],required_hardware="false") def test_listSnapshot_as_rootadmin_domainid_listall_true_rec_false(self): """ Test listing of Snapshots by passing domainid, listall="true" and isrecusrive="false" parameter as admin @@ -1477,7 +1477,7 @@ class TestSnapshotList(cloudstackTestCase): ## ROOT Admin - Test cases when domainId is passed with listall=false - @attr(tags=["advanced"],required_hardware="false") + @attr("simulator_only",tags=["advanced"],required_hardware="false") def test_listSnapshot_as_rootadmin_domainid_listall_false(self): """ Test listing of Snapshots by passing domainid, listall="false" parameter as admin @@ -1504,7 +1504,7 @@ class TestSnapshotList(cloudstackTestCase): True, "Account access check failed!!") - @attr(tags=["advanced"],required_hardware="false") + @attr("simulator_only",tags=["advanced"],required_hardware="false") def test_listSnapshot_as_rootadmin_domainid_listall_false_rec_true(self): """ Test listing of Snapshots by passing domainid, listall="false" and isrecusrive="true" parameter as admin @@ -1532,7 +1532,7 @@ class TestSnapshotList(cloudstackTestCase): True, "Account access check failed!!") - @attr(tags=["advanced"],required_hardware="false") + @attr("simulator_only",tags=["advanced"],required_hardware="false") def test_listSnapshot_as_rootadmin_domainid_listall_false_rec_false(self): """ Test listing of Snapshots by passing domainid, listall="false" and isrecusrive="false" parameter as admin @@ -1562,7 +1562,7 @@ class TestSnapshotList(cloudstackTestCase): ## ROOT Admin - Test cases when domainId is passed with no listall parameter - @attr(tags=["advanced"],required_hardware="false") + @attr("simulator_only",tags=["advanced"],required_hardware="false") def test_listSnapshot_as_rootadmin_domainid(self): """ Test listing of Snapshots by passing domainid parameter as admin @@ -1589,7 +1589,7 @@ class TestSnapshotList(cloudstackTestCase): True, "Account access check failed!!") - @attr(tags=["advanced"],required_hardware="false") + @attr("simulator_only",tags=["advanced"],required_hardware="false") def test_listSnapshot_as_rootadmin_domainid_rec_true(self): """ Test listing of Snapshots by passing domainid and isrecusrive="true" parameter as admin @@ -1617,7 +1617,7 @@ class TestSnapshotList(cloudstackTestCase): True, "Account access check failed!!") - @attr(tags=["advanced"],required_hardware="false") + @attr("simulator_only",tags=["advanced"],required_hardware="false") def test_listSnapshot_as_rootadmin_domainid_rec_false(self): """ Test listing of Snapshots by passing domainid and isrecusrive="false" parameter as admin @@ -1647,7 +1647,7 @@ class TestSnapshotList(cloudstackTestCase): ## ROOT Admin - Test cases when account and domainId is passed with listall =true - @attr(tags=["advanced"],required_hardware="false") + @attr("simulator_only",tags=["advanced"],required_hardware="false") def test_listSnapshot_as_rootadmin_domainid_accountid_listall_true(self): """ Test listing of Snapshots by passing domainid,account ,listall = "true" parameter as admin @@ -1672,7 +1672,7 @@ class TestSnapshotList(cloudstackTestCase): True, "Account access check failed!!") - @attr(tags=["advanced"],required_hardware="false") + @attr("simulator_only",tags=["advanced"],required_hardware="false") def test_listSnapshot_as_rootadmin_domainid_accountid_listall_true_rec_true(self): """ Test listing of Snapshots by passing domainid,account ,listall = "true" and isrecusrive="true" parameter as admin @@ -1697,7 +1697,7 @@ class TestSnapshotList(cloudstackTestCase): True, "Account access check failed!!") - @attr(tags=["advanced"],required_hardware="false") + @attr("simulator_only",tags=["advanced"],required_hardware="false") def test_listSnapshot_as_rootadmin_domainid_accountid_listall_true_rec_false(self): """ Test listing of Snapshots by passing domainid,account ,listall = "true" and isrecusrive="false" parameter as admin @@ -1725,7 +1725,7 @@ class TestSnapshotList(cloudstackTestCase): ## ROOT Admin - Test cases when account and domainId is passed with listall=false - @attr(tags=["advanced"],required_hardware="false") + @attr("simulator_only",tags=["advanced"],required_hardware="false") def test_listSnapshot_as_rootadmin_domainid_accountid_listall_false(self): """ Test listing of Snapshots by passing domainid,account ,listall = "false" parameter as admin @@ -1750,7 +1750,7 @@ class TestSnapshotList(cloudstackTestCase): True, "Account access check failed!!") - @attr(tags=["advanced"],required_hardware="false") + @attr("simulator_only",tags=["advanced"],required_hardware="false") def test_listSnapshot_as_rootadmin_domainid_accountid_listall_false_rec_true(self): """ Test listing of Snapshots by passing domainid,account ,listall = "false" and isrecusrive="false" parameter as admin @@ -1775,7 +1775,7 @@ class TestSnapshotList(cloudstackTestCase): True, "Account access check failed!!") - @attr(tags=["advanced"],required_hardware="false") + @attr("simulator_only",tags=["advanced"],required_hardware="false") def test_listSnapshot_as_rootadmin_domainid_accountid_listall_false_rec_false(self): """ Test listing of Snapshots by passing domainid,account ,listall = "false" and isrecusrive="false" parameter as admin @@ -1803,7 +1803,7 @@ class TestSnapshotList(cloudstackTestCase): ## ROOT Admin - Test cases when account and domainId is passed with listall not passed - @attr(tags=["advanced"],required_hardware="false") + @attr("simulator_only",tags=["advanced"],required_hardware="false") def test_listSnapshot_as_rootadmin_domainid_accountid(self): """ Test listing of Snapshots by passing domainid,account parameter as admin @@ -1828,7 +1828,7 @@ class TestSnapshotList(cloudstackTestCase): True, "Account access check failed!!") - @attr(tags=["advanced"],required_hardware="false") + @attr("simulator_only",tags=["advanced"],required_hardware="false") def test_listSnapshot_as_rootadmin_domainid_accountid_rec_true(self): """ Test listing of Snapshots by passing domainid,account and isrecusrive="true" parameter as admin @@ -1853,7 +1853,7 @@ class TestSnapshotList(cloudstackTestCase): True, "Account access check failed!!") - @attr(tags=["advanced"],required_hardware="false") + @attr("simulator_only",tags=["advanced"],required_hardware="false") def test_listSnapshot_as_rootadmin_domainid_accountid_rec_false(self): """ Test listing of Snapshots by passing domainid,account and isrecusrive="false" parameter as admin @@ -1881,7 +1881,7 @@ class TestSnapshotList(cloudstackTestCase): ## Regular User - Test cases with listall =true - @attr(tags=["advanced"],required_hardware="false") + @attr("simulator_only",tags=["advanced"],required_hardware="false") def test_listSnapshot_as_regularuser_listall_true(self): """ Test listing of Snapshots by passing listall="true" parameter as regular user @@ -1906,7 +1906,7 @@ class TestSnapshotList(cloudstackTestCase): True, "Account access check failed!!") - @attr(tags=["advanced"],required_hardware="false") + @attr("simulator_only",tags=["advanced"],required_hardware="false") def test_listSnapshot_as_regularuser_listall_true_rec_true(self): """ Test listing of Snapshots by passing listall="true" and isrecusrive="true" parameter as regular user @@ -1931,7 +1931,7 @@ class TestSnapshotList(cloudstackTestCase): True, "Account access check failed!!") - @attr(tags=["advanced"],required_hardware="false") + @attr("simulator_only",tags=["advanced"],required_hardware="false") def test_listSnapshot_as_regularuser_listall_true_rec_false(self): """ Test listing of Snapshots by passing listall="true" and isrecusrive="false" parameter as regular user @@ -1958,7 +1958,7 @@ class TestSnapshotList(cloudstackTestCase): ## Regular User - Test cases with listall=false - @attr(tags=["advanced"],required_hardware="false") + @attr("simulator_only",tags=["advanced"],required_hardware="false") def test_listSnapshot_as_regularuser_listall_false(self): """ Test listing of Snapshots by passing domainid,account,listall="false" parameter as regular user @@ -1983,7 +1983,7 @@ class TestSnapshotList(cloudstackTestCase): True, "Account access check failed!!") - @attr(tags=["advanced"],required_hardware="false") + @attr("simulator_only",tags=["advanced"],required_hardware="false") def test_listSnapshot_as_regularuser_listall_false_rec_true(self): """ Test listing of Snapshots by passing listall="false" and isrecusrive="true" parameter as regular user @@ -2009,7 +2009,7 @@ class TestSnapshotList(cloudstackTestCase): "Account access check failed!!") - @attr(tags=["advanced"],required_hardware="false") + @attr("simulator_only",tags=["advanced"],required_hardware="false") def test_listSnapshot_as_regularuser_listall_false_rec_false(self): """ Test listing of Snapshots by passing listall="false" and isrecusrive="false" parameter as regular user @@ -2038,7 +2038,7 @@ class TestSnapshotList(cloudstackTestCase): ## Regular User - Test cases without passing listall paramter - @attr(tags=["advanced"],required_hardware="false") + @attr("simulator_only",tags=["advanced"],required_hardware="false") def test_listSnapshot_as_regularuser(self): """ Test listing of Snapshots by passing no parameter as regular user @@ -2064,7 +2064,7 @@ class TestSnapshotList(cloudstackTestCase): True, "Account access check failed!!") - @attr(tags=["advanced"],required_hardware="false") + @attr("simulator_only",tags=["advanced"],required_hardware="false") def test_listSnapshot_as_regularuser_rec_true(self): """ Test listing of Snapshots by passing isrecusrive="true" parameter as regular user @@ -2089,7 +2089,7 @@ class TestSnapshotList(cloudstackTestCase): True, "Account access check failed!!") - @attr(tags=["advanced"],required_hardware="false") + @attr("simulator_only",tags=["advanced"],required_hardware="false") def test_listSnapshot_as_regularuser_rec_false(self): """ Test listing of Snapshots by passing isrecusrive="false" parameter as regular user @@ -2116,7 +2116,7 @@ class TestSnapshotList(cloudstackTestCase): ## Regular User - Test cases when domainId is passed with listall =true - @attr(tags=["advanced"],required_hardware="false") + @attr("simulator_only",tags=["advanced"],required_hardware="false") def test_listSnapshot_as_regularuser_domainid_listall_true(self): """ Test listing of Snapshots by passing domainid,listall="true" parameter as regular user @@ -2141,7 +2141,7 @@ class TestSnapshotList(cloudstackTestCase): True, "Account access check failed!!") - @attr(tags=["advanced"],required_hardware="false") + @attr("simulator_only",tags=["advanced"],required_hardware="false") def test_listSnapshot_as_regularuser_domainid_listall_true_rec_true(self): """ Test listing of Snapshots by passing domainid,listall="true" and isrecusrive="true" parameter as regular user @@ -2166,7 +2166,7 @@ class TestSnapshotList(cloudstackTestCase): True, "Account access check failed!!") - @attr(tags=["advanced"],required_hardware="false") + @attr("simulator_only",tags=["advanced"],required_hardware="false") def test_listSnapshot_as_regularuser_domainid_listall_true_rec_false(self): """ Test listing of Snapshots by passing domainid,listall="true" and isrecusrive="false" parameter as regular user @@ -2194,7 +2194,7 @@ class TestSnapshotList(cloudstackTestCase): ## Regular User - Test cases when domainId is passed with listall=false - @attr(tags=["advanced"],required_hardware="false") + @attr("simulator_only",tags=["advanced"],required_hardware="false") def test_listSnapshot_as_regularuser_domainid_listall_false(self): """ Test listing of Snapshots by passing domainid,listall="false" parameter as regular user @@ -2220,7 +2220,7 @@ class TestSnapshotList(cloudstackTestCase): "Account access check failed!!") - @attr(tags=["advanced"],required_hardware="false") + @attr("simulator_only",tags=["advanced"],required_hardware="false") def test_listSnapshot_as_regularuser_domainid_listall_false_rec_true(self): """ Test listing of Snapshots by passing domainid,listall="false" and isrecusrive="true" parameter as regular user @@ -2247,7 +2247,7 @@ class TestSnapshotList(cloudstackTestCase): - @attr(tags=["advanced"],required_hardware="false") + @attr("simulator_only",tags=["advanced"],required_hardware="false") def test_listSnapshot_as_regularuser_domainid_listall_false_rec_false(self): """ Test listing of Snapshots by passing domainid,listall="false" and isrecusrive="false" parameter as regular user @@ -2275,7 +2275,7 @@ class TestSnapshotList(cloudstackTestCase): ## Regular User - Test cases when domainId is passed with no listall parameter - @attr(tags=["advanced"],required_hardware="false") + @attr("simulator_only",tags=["advanced"],required_hardware="false") def test_listSnapshot_as_regularuser_domainid(self): """ Test listing of Snapshots by passing domainid parameter as regular user @@ -2301,7 +2301,7 @@ class TestSnapshotList(cloudstackTestCase): "Account access check failed!!") - @attr(tags=["advanced"],required_hardware="false") + @attr("simulator_only",tags=["advanced"],required_hardware="false") def test_listSnapshot_as_regularuser_domainid_true_rec_true(self): """ Test listing of Snapshots by passing domainid and isrecusrive="true" parameter as regular user @@ -2328,7 +2328,7 @@ class TestSnapshotList(cloudstackTestCase): - @attr(tags=["advanced"],required_hardware="false") + @attr("simulator_only",tags=["advanced"],required_hardware="false") def test_listSnapshot_as_regularuser_domainid__rec_false(self): """ Test listing of Snapshots by passing domainid,isrecusrive="false" parameter as regular user @@ -2356,7 +2356,7 @@ class TestSnapshotList(cloudstackTestCase): ## Regular User - Test cases when account and domainId is passed with listall =true - @attr(tags=["advanced"],required_hardware="false") + @attr("simulator_only",tags=["advanced"],required_hardware="false") def test_listSnapshot_as_regularuser_domainid_accountid_listall_true(self): """ Test listing of Snapshots by passing domainid,account,listall="true" parameter as regular user @@ -2381,7 +2381,7 @@ class TestSnapshotList(cloudstackTestCase): True, "Account access check failed!!") - @attr(tags=["advanced"],required_hardware="false") + @attr("simulator_only",tags=["advanced"],required_hardware="false") def test_listSnapshot_as_regularuser_domainid_accountid_listall_true_rec_true(self): """ Test listing of Snapshots by passing domainid,account,listall="true" and isrecusrive="true" parameter as regular user @@ -2406,7 +2406,7 @@ class TestSnapshotList(cloudstackTestCase): True, "Account access check failed!!") - @attr(tags=["advanced"],required_hardware="false") + @attr("simulator_only",tags=["advanced"],required_hardware="false") def test_listSnapshot_as_regularuser_domainid_accountid_listall_true_rec_false(self): """ Test listing of Snapshots by passing domainid,account,listall="true" and isrecusrive="false" parameter as regular user @@ -2434,7 +2434,7 @@ class TestSnapshotList(cloudstackTestCase): ## Regular User - Test cases when account and domainId is passed with listall=false - @attr(tags=["advanced"],required_hardware="false") + @attr("simulator_only",tags=["advanced"],required_hardware="false") def test_listSnapshot_as_regularuser_domainid_accountid_listall_false(self): """ Test listing of Snapshots by passing domainid,account,listall="false" parameter as regular user @@ -2460,7 +2460,7 @@ class TestSnapshotList(cloudstackTestCase): "Account access check failed!!") - @attr(tags=["advanced"],required_hardware="false") + @attr("simulator_only",tags=["advanced"],required_hardware="false") def test_listSnapshot_as_regularuser_domainid_accountid_listall_false_rec_true(self): """ Test listing of Snapshots by passing domainid,account,listall="false" and isrecusrive="true" parameter as regular user @@ -2485,7 +2485,7 @@ class TestSnapshotList(cloudstackTestCase): True, "Account access check failed!!") - @attr(tags=["advanced"],required_hardware="false") + @attr("simulator_only",tags=["advanced"],required_hardware="false") def test_listSnapshot_as_regularuser_domainid_accountid_listall_false_rec_false(self): """ Test listing of Snapshots by passing domainid,account,listall="false" and isrecusrive="false" parameter as regular user @@ -2513,7 +2513,7 @@ class TestSnapshotList(cloudstackTestCase): ## Regular User - Test cases when account and domainId is passed with listall not passed - @attr(tags=["advanced"],required_hardware="false") + @attr("simulator_only",tags=["advanced"],required_hardware="false") def test_listSnapshot_as_regularuser_domainid_accountid(self): """ Test listing of Snapshots by passing domainid,account parameter as regular user @@ -2539,7 +2539,7 @@ class TestSnapshotList(cloudstackTestCase): "Account access check failed!!") - @attr(tags=["advanced"],required_hardware="false") + @attr("simulator_only",tags=["advanced"],required_hardware="false") def test_listSnapshot_as_regularuser_domainid_accountid_rec_true(self): """ Test listing of Snapshots by passing domainid,account and isrecusrive="true" parameter as regular user @@ -2565,7 +2565,7 @@ class TestSnapshotList(cloudstackTestCase): "Account access check failed!!") - @attr(tags=["advanced"],required_hardware="false") + @attr("simulator_only",tags=["advanced"],required_hardware="false") def test_listSnapshot_as_regularuser_domainid_accountid_rec_false(self): """ Test listing of Snapshots by passing domainid,account isrecusrive="false" parameter as regular user @@ -2592,7 +2592,7 @@ class TestSnapshotList(cloudstackTestCase): ## Cross Domain access check - @attr(tags=["advanced"],required_hardware="false") + @attr("simulator_only",tags=["advanced"],required_hardware="false") def test_listSnapshot_as_regularuser_cross_domainid_accountid(self): """ Regular User should not be allowed to list Snapshotss of other accounts in the same domain @@ -2607,7 +2607,7 @@ class TestSnapshotList(cloudstackTestCase): self.debug ("List as Regular User passing domainId and accountId of another account %s" %e) - @attr(tags=["advanced"],required_hardware="false") + @attr("simulator_only",tags=["advanced"],required_hardware="false") def test_listSnapshot_as_regularuser_cross_domainid(self): """ Regular User should not be allowed to list Snapshotss of other accounts in other domains @@ -2622,7 +2622,7 @@ class TestSnapshotList(cloudstackTestCase): self.debug ("List as Regular User passing domainId of a domain that user does not belong to %s" %e) - @attr(tags=["advanced"],required_hardware="false") + @attr("simulator_only",tags=["advanced"],required_hardware="false") def test_listSnapshot_as_domainadmin_cross_domainid_accountid(self): """ Domain admin should not be allowed to list Snapshotss of accounts in other domains @@ -2637,7 +2637,7 @@ class TestSnapshotList(cloudstackTestCase): self.debug ("List as domain admin passing domainId and accountId of another account %s" %e) - @attr(tags=["advanced"],required_hardware="false") + @attr("simulator_only",tags=["advanced"],required_hardware="false") def test_listSnapshot_as_domainadmin_cross_domainid(self): """ Domain admin should not be allowed to list Snapshotss from other domains @@ -2653,7 +2653,7 @@ class TestSnapshotList(cloudstackTestCase): ## List test cases relating to filter - id - @attr(tags=["advanced"],required_hardware="false") + @attr("simulator_only",tags=["advanced"],required_hardware="false") def test_listSnapshot_by_id_as_domainadmin_owns(self): """ Domain admin should be able to list Snapshots that he owns by passing uuid in "id" parameter @@ -2671,7 +2671,7 @@ class TestSnapshotList(cloudstackTestCase): 1, "Domain Admin is not able to list Snapshotss that belongs to him") - @attr(tags=["advanced"],required_hardware="false") + @attr("simulator_only",tags=["advanced"],required_hardware="false") def test_listSnapshot_by_id_as_domainadmin_ownedbyusersindomain(self): """ Domain admin should be able to list Snapshots that is owned by any account in his domain by passing uuid in "id" parameter @@ -2689,7 +2689,7 @@ class TestSnapshotList(cloudstackTestCase): 1, "Domain Admin is not able to list Snapshotss from his domain") - @attr(tags=["advanced"],required_hardware="false") + @attr("simulator_only",tags=["advanced"],required_hardware="false") def test_listSnapshot_by_id_as_domainadmin_ownedbyusersinsubdomain(self): """ Domain admin should be able to list Snapshots that is owned by any account in his sub-domain by passing uuid in "id" parameter @@ -2707,7 +2707,7 @@ class TestSnapshotList(cloudstackTestCase): 1, "Domain Admin is not able to list Snapshotss from his sub domain") - @attr(tags=["advanced"],required_hardware="false") + @attr("simulator_only",tags=["advanced"],required_hardware="false") def test_listSnapshot_by_id_as_domainadmin_ownedbyusersnotindomain(self): """ Domain admin should not be able to list Snapshots that is owned by account that is not in his domain by passing uuid in "id" parameter @@ -2721,7 +2721,7 @@ class TestSnapshotList(cloudstackTestCase): None, "Domain Admin is able to list Snapshotss from other domains!!!") - @attr(tags=["advanced"],required_hardware="false") + @attr("simulator_only",tags=["advanced"],required_hardware="false") def test_listSnapshot_by_id_as_domainadmin_ownedbyusersinsubdomain2(self): """ Domain admin should be able to list Snapshots that is owned by account that is in his sub domains by passing uuid in "id" parameter @@ -2740,7 +2740,7 @@ class TestSnapshotList(cloudstackTestCase): "Domain Admin is not able to list Snapshotss from his sub domains") - @attr(tags=["advanced"],required_hardware="false") + @attr("simulator_only",tags=["advanced"],required_hardware="false") def test_listSnapshot_by_id_as_rootadmin_owns(self): """ ROOT admin should be able to list Snapshots that is owned by account in his domains by passing uuid in "id" parameter @@ -2756,7 +2756,7 @@ class TestSnapshotList(cloudstackTestCase): 1, "ROOT Admin not able to list Snapshotss that he owns") - @attr(tags=["advanced"],required_hardware="false") + @attr("simulator_only",tags=["advanced"],required_hardware="false") def test_listSnapshot_by_id_as_rootadmin_Snapshotsownedbyothers(self): """ ROOT admin should be able to list Snapshots that is owned by any account iby passing uuid in "id" parameter @@ -2780,7 +2780,7 @@ class TestSnapshotList(cloudstackTestCase): 1, "ROOT Admin not able to list Snapshotss from other domains") - @attr(tags=["advanced"],required_hardware="false") + @attr("simulator_only",tags=["advanced"],required_hardware="false") def test_listSnapshot_by_id_as_user_own(self): """ Regular user should be able to list Snapshots that is owned by him by passing uuid in "id" parameter @@ -2799,7 +2799,7 @@ class TestSnapshotList(cloudstackTestCase): 1, "Regular User is not able to list Snapshotss that he owns") - @attr(tags=["advanced"],required_hardware="false") + @attr("simulator_only",tags=["advanced"],required_hardware="false") def test_listSnapshot_by_id_as_user_snapshotfromsamedomaindifferentaccount(self): """ Regular user should not be able to list Snapshots that is owned by different account in the same domain by passing uuid in "id" parameter @@ -2813,7 +2813,7 @@ class TestSnapshotList(cloudstackTestCase): None, "Regular User is able to list Snapshotss from other accounts") - @attr(tags=["advanced"],required_hardware="false") + @attr("simulator_only",tags=["advanced"],required_hardware="false") def test_listSnapshot_by_id_as_user_snapshotfromotherdomain(self): """ Regular user should not be able to list Snapshots that is owned by different account in the different domain by passing uuid in "id" parameter diff --git a/test/integration/component/test_acl_listvm.py b/test/integration/component/test_acl_listvm.py index 398f98af059..de997183aa4 100644 --- a/test/integration/component/test_acl_listvm.py +++ b/test/integration/component/test_acl_listvm.py @@ -360,7 +360,7 @@ class TestVMList(cloudstackTestCase): ## Domain Admin - Test cases with listall =true - @attr(tags=["advanced"],required_hardware="false") + @attr("simulator_only", tags=["advanced"],required_hardware="false") def test_listVM_as_domainadmin_listall_true(self): """ # Test listing of Vms by passing listall="true" parameter as domain admin @@ -393,7 +393,7 @@ class TestVMList(cloudstackTestCase): True, "Account access check failed!!") - @attr(tags=["advanced"],required_hardware="false") + @attr("simulator_only", tags=["advanced"],required_hardware="false") def test_listVM_as_domainadmin_listall_true_rec_true(self): """ # Test listing of Vms by passing listall="true"i and isrecusriv="true" parameter as domain admin @@ -426,7 +426,7 @@ class TestVMList(cloudstackTestCase): True, "Account access check failed!!") - @attr(tags=["advanced"],required_hardware="false") + @attr("simulator_only", tags=["advanced"],required_hardware="false") def test_listVM_as_domainadmin_listall_true_rec_false(self): """ # Test listing of Vms by passing listall="true" and isrecusriv="false" parameter as domain admin @@ -461,7 +461,7 @@ class TestVMList(cloudstackTestCase): ## Domain Admin - Test cases with listall=false - @attr(tags=["advanced"],required_hardware="false") + @attr("simulator_only", tags=["advanced"],required_hardware="false") def test_listVM_as_domainadmin_listall_false(self): """ # Test listing of Vms by passing listall="false" parameter as domain admin @@ -486,7 +486,7 @@ class TestVMList(cloudstackTestCase): True, "Account access check failed!!") - @attr(tags=["advanced"],required_hardware="false") + @attr("simulator_only", tags=["advanced"],required_hardware="false") def test_listVM_as_domainadmin_listall_false_rec_true(self): """ # Test listing of Vms by passing listall="false" and isrecusrive="true" parameter as domain admin @@ -511,7 +511,7 @@ class TestVMList(cloudstackTestCase): True, "Account access check failed!!") - @attr(tags=["advanced"],required_hardware="false") + @attr("simulator_only", tags=["advanced"],required_hardware="false") def test_listVM_as_domainadmin_listall_false_rec_false(self): """ # Test listing of Vms by passing listall="false" and isrecusrive="false" parameter as domain admin @@ -537,7 +537,7 @@ class TestVMList(cloudstackTestCase): ## Domain Admin - Test cases without passing listall paramter - @attr(tags=["advanced"],required_hardware="false") + @attr("simulator_only", tags=["advanced"],required_hardware="false") def test_listVM_as_domainadmin(self): """ # Test listing of Vms by passing no parameter as domain admin @@ -562,7 +562,7 @@ class TestVMList(cloudstackTestCase): True, "Account access check failed!!") - @attr(tags=["advanced"],required_hardware="false") + @attr("simulator_only", tags=["advanced"],required_hardware="false") def test_listVM_as_domainadmin_rec_true(self): """ # Test listing of Vms by passing isrecusrive="true" parameter as domain admin @@ -587,7 +587,7 @@ class TestVMList(cloudstackTestCase): True, "Account access check failed!!") - @attr(tags=["advanced"],required_hardware="false") + @attr("simulator_only", tags=["advanced"],required_hardware="false") def test_listVM_as_domainadmin_true_rec_false(self): """ # Test listing of Vms by passing isrecusrive="false" parameter as domain admin @@ -614,7 +614,7 @@ class TestVMList(cloudstackTestCase): ## Domain Admin - Test cases when domainId is passed with listall =true - @attr(tags=["advanced"],required_hardware="false") + @attr("simulator_only", tags=["advanced"],required_hardware="false") def test_listVM_as_domainadmin_domainid_listall_true(self): """ # Test listing of Vms by passing domainId and listall="true" parameter as domain admin @@ -641,7 +641,7 @@ class TestVMList(cloudstackTestCase): True, "Account access check failed!!") - @attr(tags=["advanced"],required_hardware="false") + @attr("simulator_only", tags=["advanced"],required_hardware="false") def test_listVM_as_domainadmin_domainid_listall_true_rec_true(self): """ # Test listing of Vms by passing domainId ,listall="true" and isrecursive="true" parameter as domain admin @@ -669,7 +669,7 @@ class TestVMList(cloudstackTestCase): True, "Account access check failed!!") - @attr(tags=["advanced"],required_hardware="false") + @attr("simulator_only", tags=["advanced"],required_hardware="false") def test_listVM_as_domainadmin_domainid_listall_true_rec_false(self): """ # Test listing of Vms by passing domainId ,listall="true" and isrecursive="false" parameter as domain admin @@ -699,7 +699,7 @@ class TestVMList(cloudstackTestCase): ## Domain Admin - Test cases when domainId is passed with listall=false - @attr(tags=["advanced"],required_hardware="false") + @attr("simulator_only", tags=["advanced"],required_hardware="false") def test_listVM_as_domainadmin_domainid_listall_false(self): """ # Test listing of Vms by passing domainId ,listall="false" parameter as domain admin @@ -726,7 +726,7 @@ class TestVMList(cloudstackTestCase): True, "Account access check failed!!") - @attr(tags=["advanced"],required_hardware="false") + @attr("simulator_only", tags=["advanced"],required_hardware="false") def test_listVM_as_domainadmin_domainid_listall_false_rec_true(self): """ # Test listing of Vms by passing domainId ,listall="false" and isrecursive="true" parameter as domain admin @@ -754,7 +754,7 @@ class TestVMList(cloudstackTestCase): True, "Account access check failed!!") - @attr(tags=["advanced"],required_hardware="false") + @attr("simulator_only", tags=["advanced"],required_hardware="false") def test_listVM_as_domainadmin_domainid_listall_false_rec_false(self): """ # Test listing of Vms by passing domainId ,listall="false" and isrecursive="false" parameter as domain admin @@ -784,7 +784,7 @@ class TestVMList(cloudstackTestCase): ## Domain Admin - Test cases when domainId is passed with no listall parameter - @attr(tags=["advanced"],required_hardware="false") + @attr("simulator_only", tags=["advanced"],required_hardware="false") def test_listVM_as_domainadmin_domainid(self): """ # Test listing of Vms by passing domainId parameter as domain admin @@ -811,7 +811,7 @@ class TestVMList(cloudstackTestCase): True, "Account access check failed!!") - @attr(tags=["advanced"],required_hardware="false") + @attr("simulator_only", tags=["advanced"],required_hardware="false") def test_listVM_as_domainadmin_domainid_rec_true(self): """ # Test listing of Vms by passing domainId and isrecursive="true" parameter as domain admin @@ -839,7 +839,7 @@ class TestVMList(cloudstackTestCase): True, "Account access check failed!!") - @attr(tags=["advanced"],required_hardware="false") + @attr("simulator_only", tags=["advanced"],required_hardware="false") def test_listVM_as_domainadmin_domainid_rec_false(self): """ # Test listing of Vms by passing domainId and isrecursive="false" parameter as domain admin @@ -869,7 +869,7 @@ class TestVMList(cloudstackTestCase): ## Domain Admin - Test cases when account and domainId is passed with listall =true - @attr(tags=["advanced"],required_hardware="false") + @attr("simulator_only", tags=["advanced"],required_hardware="false") def test_listVM_as_domainadmin_domainid_accountid_listall_true(self): """ # Test listing of Vms by passing account ,domainId and listall="true" parameter as domain admin @@ -894,7 +894,7 @@ class TestVMList(cloudstackTestCase): True, "Account access check failed!!") - @attr(tags=["advanced"],required_hardware="false") + @attr("simulator_only", tags=["advanced"],required_hardware="false") def test_listVM_as_domainadmin_domainid_accountid_listall_true_rec_true(self): """ # Test listing of Vms by passing account ,domainId and listall="true" and isrecursive="true" parameter as domain admin @@ -919,7 +919,7 @@ class TestVMList(cloudstackTestCase): True, "Account access check failed!!") - @attr(tags=["advanced"],required_hardware="false") + @attr("simulator_only", tags=["advanced"],required_hardware="false") def test_listVM_as_domainadmin_domainid_accountid_listall_true_rec_false(self): """ # Test listing of Vms by passing account ,domainId , listall="true" and isrecursive="false" parameter as domain admin @@ -947,7 +947,7 @@ class TestVMList(cloudstackTestCase): ## Domain Admin - Test cases when account and domainId is passed with listall=false - @attr(tags=["advanced"],required_hardware="false") + @attr("simulator_only", tags=["advanced"],required_hardware="false") def test_listVM_as_domainadmin_domainid_accountid_listall_false(self): """ # Test listing of Vms by passing account ,domainId and listall="false" parameter as domain admin @@ -972,7 +972,7 @@ class TestVMList(cloudstackTestCase): True, "Account access check failed!!") - @attr(tags=["advanced"],required_hardware="false") + @attr("simulator_only", tags=["advanced"],required_hardware="false") def test_listVM_as_domainadmin_domainid_accountid_listall_false_rec_true(self): """ # Test listing of Vms by passing account ,domainId and listall="false" and isrecursive="true" parameter as domain admin @@ -997,7 +997,7 @@ class TestVMList(cloudstackTestCase): True, "Account access check failed!!") - @attr(tags=["advanced"],required_hardware="false") + @attr("simulator_only", tags=["advanced"],required_hardware="false") def test_listVM_as_domainadmin_domainid_accountid_listall_false_rec_false(self): """ # Test listing of Vms by passing account ,domainId , listall="false" and isrecursive="false" parameter as domain admin @@ -1024,7 +1024,7 @@ class TestVMList(cloudstackTestCase): ## Domain Admin - Test cases when account and domainId is passed with listall not passed - @attr(tags=["advanced"],required_hardware="false") + @attr("simulator_only", tags=["advanced"],required_hardware="false") def test_listVM_as_domainadmin_domainid_accountid(self): """ # Test listing of Vms by passing account ,domainId parameter as domain admin @@ -1049,7 +1049,7 @@ class TestVMList(cloudstackTestCase): True, "Account access check failed!!") - @attr(tags=["advanced"],required_hardware="false") + @attr("simulator_only", tags=["advanced"],required_hardware="false") def test_listVM_as_domainadmin_domainid_accountid_rec_true(self): """ # Test listing of Vms by passing account ,domainId and isrecursive="true" parameter as domain admin @@ -1074,7 +1074,7 @@ class TestVMList(cloudstackTestCase): True, "Account access check failed!!") - @attr(tags=["advanced"],required_hardware="false") + @attr("simulator_only", tags=["advanced"],required_hardware="false") def test_listVM_as_domainadmin_domainid_accountid_rec_false(self): """ # Test listing of Vms by passing account ,domainId and isrecursive="false" parameter as domain admin @@ -1101,7 +1101,7 @@ class TestVMList(cloudstackTestCase): ## ROOT Admin - Test cases with listall =true - @attr(tags=["advanced"],required_hardware="false") + @attr("simulator_only", tags=["advanced"],required_hardware="false") def test_listVM_as_rootadmin_listall_true(self): """ # Test listing of Vms by passing listall="true" parameter as admin @@ -1137,7 +1137,7 @@ class TestVMList(cloudstackTestCase): True, "Account access check failed!!") - @attr(tags=["advanced"],required_hardware="false") + @attr("simulator_only", tags=["advanced"],required_hardware="false") def test_listVM_as_rootadmin_listall_true_rec_true(self): """ # Test listing of Vms by passing listall="true" and isrecusrive="true" parameter as admin @@ -1173,7 +1173,7 @@ class TestVMList(cloudstackTestCase): True, "Account access check failed!!") - @attr(tags=["advanced"],required_hardware="false") + @attr("simulator_only", tags=["advanced"],required_hardware="false") def test_listVM_as_rootadmin_listall_true_rec_false(self): """ # Test listing of Vms by passing listall="true" and isrecusrive="false" parameter as admin @@ -1210,7 +1210,7 @@ class TestVMList(cloudstackTestCase): ## ROOT Admin - Test cases with listall=false - @attr(tags=["advanced"],required_hardware="false") + @attr("simulator_only", tags=["advanced"],required_hardware="false") def test_listVM_as_rootadmin_listall_false(self): """ # Test listing of Vms by passing listall="false" parameter as admin @@ -1235,7 +1235,7 @@ class TestVMList(cloudstackTestCase): True, "Account access check failed!!") - @attr(tags=["advanced"],required_hardware="false") + @attr("simulator_only", tags=["advanced"],required_hardware="false") def test_listVM_as_rootadmin_listall_false_rec_true(self): """ # Test listing of Vms by passing listall="false" and isrecusrive="true" parameter as admin @@ -1261,7 +1261,7 @@ class TestVMList(cloudstackTestCase): "Account access check failed!!") - @attr(tags=["advanced"],required_hardware="false") + @attr("simulator_only", tags=["advanced"],required_hardware="false") def test_listVM_as_rootadmin_listall_false_rec_false(self): """ # Test listing of Vms by passing listall="false" and isrecusrive="false" parameter as admin @@ -1290,7 +1290,7 @@ class TestVMList(cloudstackTestCase): ## ROOT Admin - Test cases without passing listall paramter - @attr(tags=["advanced"],required_hardware="false") + @attr("simulator_only", tags=["advanced"],required_hardware="false") def test_listVM_as_rootadmin(self): """ # Test listing of Vms by passing no parameter as admin @@ -1316,7 +1316,7 @@ class TestVMList(cloudstackTestCase): True, "Account access check failed!!") - @attr(tags=["advanced"],required_hardware="false") + @attr("simulator_only", tags=["advanced"],required_hardware="false") def test_listVM_as_rootadmin_rec_true(self): """ # Test listing of Vms by passing isrecusrive="true" parameter as admin @@ -1341,7 +1341,7 @@ class TestVMList(cloudstackTestCase): True, "Account access check failed!!") - @attr(tags=["advanced"],required_hardware="false") + @attr("simulator_only", tags=["advanced"],required_hardware="false") def test_listVM_as_rootadmin_rec_false(self): """ # Test listing of Vms by passing isrecusrive="false" parameter as admin @@ -1368,7 +1368,7 @@ class TestVMList(cloudstackTestCase): ## ROOT Admin - Test cases when domainId is passed with listall =true - @attr(tags=["advanced"],required_hardware="false") + @attr("simulator_only", tags=["advanced"],required_hardware="false") def test_listVM_as_rootadmin_domainid_listall_true(self): """ # Test listing of Vms by passing domainid and listall="true" parameter as admin @@ -1395,7 +1395,7 @@ class TestVMList(cloudstackTestCase): True, "Account access check failed!!") - @attr(tags=["advanced"],required_hardware="false") + @attr("simulator_only", tags=["advanced"],required_hardware="false") def test_listVM_as_rootadmin_domainid_listall_true_rec_true(self): """ # Test listing of Vms by passing domainid , listall="true" and isrecusrive="true" parameter as admin @@ -1423,7 +1423,7 @@ class TestVMList(cloudstackTestCase): True, "Account access check failed!!") - @attr(tags=["advanced"],required_hardware="false") + @attr("simulator_only", tags=["advanced"],required_hardware="false") def test_listVM_as_rootadmin_domainid_listall_true_rec_false(self): """ # Test listing of Vms by passing domainid, listall="true" and isrecusrive="false" parameter as admin @@ -1453,7 +1453,7 @@ class TestVMList(cloudstackTestCase): ## ROOT Admin - Test cases when domainId is passed with listall=false - @attr(tags=["advanced"],required_hardware="false") + @attr("simulator_only", tags=["advanced"],required_hardware="false") def test_listVM_as_rootadmin_domainid_listall_false(self): """ # Test listing of Vms by passing domainid, listall="false" parameter as admin @@ -1480,7 +1480,7 @@ class TestVMList(cloudstackTestCase): True, "Account access check failed!!") - @attr(tags=["advanced"],required_hardware="false") + @attr("simulator_only", tags=["advanced"],required_hardware="false") def test_listVM_as_rootadmin_domainid_listall_false_rec_true(self): """ # Test listing of Vms by passing domainid, listall="false" and isrecusrive="true" parameter as admin @@ -1508,7 +1508,7 @@ class TestVMList(cloudstackTestCase): True, "Account access check failed!!") - @attr(tags=["advanced"],required_hardware="false") + @attr("simulator_only", tags=["advanced"],required_hardware="false") def test_listVM_as_rootadmin_domainid_listall_false_rec_false(self): """ @@ -1539,7 +1539,7 @@ class TestVMList(cloudstackTestCase): ## ROOT Admin - Test cases when domainId is passed with no listall parameter - @attr(tags=["advanced"],required_hardware="false") + @attr("simulator_only", tags=["advanced"],required_hardware="false") def test_listVM_as_rootadmin_domainid(self): """ # Test listing of Vms by passing domainid parameter as admin @@ -1566,7 +1566,7 @@ class TestVMList(cloudstackTestCase): True, "Account access check failed!!") - @attr(tags=["advanced"],required_hardware="false") + @attr("simulator_only", tags=["advanced"],required_hardware="false") def test_listVM_as_rootadmin_domainid_rec_true(self): """ # Test listing of Vms by passing domainid and isrecusrive="true" parameter as admin @@ -1594,7 +1594,7 @@ class TestVMList(cloudstackTestCase): True, "Account access check failed!!") - @attr(tags=["advanced"],required_hardware="false") + @attr("simulator_only", tags=["advanced"],required_hardware="false") def test_listVM_as_rootadmin_domainid_rec_false(self): """ # Test listing of Vms by passing domainid and isrecusrive="false" parameter as admin @@ -1624,7 +1624,7 @@ class TestVMList(cloudstackTestCase): ## ROOT Admin - Test cases when account and domainId is passed with listall =true - @attr(tags=["advanced"],required_hardware="false") + @attr("simulator_only", tags=["advanced"],required_hardware="false") def test_listVM_as_rootadmin_domainid_accountid_listall_true(self): """ # Test listing of Vms by passing domainid,account ,listall = "true" parameter as admin @@ -1649,7 +1649,7 @@ class TestVMList(cloudstackTestCase): True, "Account access check failed!!") - @attr(tags=["advanced"],required_hardware="false") + @attr("simulator_only", tags=["advanced"],required_hardware="false") def test_listVM_as_rootadmin_domainid_accountid_listall_true_rec_true(self): """ # Test listing of Vms by passing domainid,account ,listall = "true" and isrecusrive="true" parameter as admin @@ -1674,7 +1674,7 @@ class TestVMList(cloudstackTestCase): True, "Account access check failed!!") - @attr(tags=["advanced"],required_hardware="false") + @attr("simulator_only", tags=["advanced"],required_hardware="false") def test_listVM_as_rootadmin_domainid_accountid_listall_true_rec_false(self): """ # Test listing of Vms by passing domainid,account ,listall = "true" and isrecusrive="false" parameter as admin @@ -1702,7 +1702,7 @@ class TestVMList(cloudstackTestCase): ## ROOT Admin - Test cases when account and domainId is passed with listall=false - @attr(tags=["advanced"],required_hardware="false") + @attr("simulator_only", tags=["advanced"],required_hardware="false") def test_listVM_as_rootadmin_domainid_accountid_listall_false(self): """ # Test listing of Vms by passing domainid,account ,listall = "false" parameter as admin @@ -1727,7 +1727,7 @@ class TestVMList(cloudstackTestCase): True, "Account access check failed!!") - @attr(tags=["advanced"],required_hardware="false") + @attr("simulator_only", tags=["advanced"],required_hardware="false") def test_listVM_as_rootadmin_domainid_accountid_listall_false_rec_true(self): """ # Test listing of Vms by passing domainid,account ,listall = "false" and isrecusrive="false" parameter as admin @@ -1752,7 +1752,7 @@ class TestVMList(cloudstackTestCase): True, "Account access check failed!!") - @attr(tags=["advanced"],required_hardware="false") + @attr("simulator_only", tags=["advanced"],required_hardware="false") def test_listVM_as_rootadmin_domainid_accountid_listall_false_rec_false(self): """ # Test listing of Vms by passing domainid,account ,listall = "false" and isrecusrive="false" parameter as admin @@ -1780,7 +1780,7 @@ class TestVMList(cloudstackTestCase): ## ROOT Admin - Test cases when account and domainId is passed with listall not passed - @attr(tags=["advanced"],required_hardware="false") + @attr("simulator_only", tags=["advanced"],required_hardware="false") def test_listVM_as_rootadmin_domainid_accountid(self): """ # Test listing of Vms by passing domainid,account parameter as admin @@ -1805,7 +1805,7 @@ class TestVMList(cloudstackTestCase): True, "Account access check failed!!") - @attr(tags=["advanced"],required_hardware="false") + @attr("simulator_only", tags=["advanced"],required_hardware="false") def test_listVM_as_rootadmin_domainid_accountid_rec_true(self): """ # Test listing of Vms by passing domainid,account and isrecusrive="true" parameter as admin @@ -1830,7 +1830,7 @@ class TestVMList(cloudstackTestCase): True, "Account access check failed!!") - @attr(tags=["advanced"],required_hardware="false") + @attr("simulator_only", tags=["advanced"],required_hardware="false") def test_listVM_as_rootadmin_domainid_accountid_rec_false(self): """ # Test listing of Vms by passing domainid,account and isrecusrive="false" parameter as admin @@ -1858,7 +1858,7 @@ class TestVMList(cloudstackTestCase): ## Regular User - Test cases with listall =true - @attr(tags=["advanced"],required_hardware="false") + @attr("simulator_only", tags=["advanced"],required_hardware="false") def test_listVM_as_regularuser_listall_true(self): """ # Test listing of Vms by passing listall="true" parameter as regular user @@ -1883,7 +1883,7 @@ class TestVMList(cloudstackTestCase): True, "Account access check failed!!") - @attr(tags=["advanced"],required_hardware="false") + @attr("simulator_only", tags=["advanced"],required_hardware="false") def test_listVM_as_regularuser_listall_true_rec_true(self): """ # Test listing of Vms by passing listall="true" and isrecusrive="true" parameter as regular user @@ -1908,7 +1908,7 @@ class TestVMList(cloudstackTestCase): True, "Account access check failed!!") - @attr(tags=["advanced"],required_hardware="false") + @attr("simulator_only", tags=["advanced"],required_hardware="false") def test_listVM_as_regularuser_listall_true_rec_false(self): """ # Test listing of Vms by passing listall="true" and isrecusrive="false" parameter as regular user @@ -1935,7 +1935,7 @@ class TestVMList(cloudstackTestCase): ## Regular User - Test cases with listall=false - @attr(tags=["advanced"],required_hardware="false") + @attr("simulator_only", tags=["advanced"],required_hardware="false") def test_listVM_as_regularuser_listall_false(self): """ # Test listing of Vms by passing domainid,account,listall="false" parameter as regular user @@ -1960,7 +1960,7 @@ class TestVMList(cloudstackTestCase): True, "Account access check failed!!") - @attr(tags=["advanced"],required_hardware="false") + @attr("simulator_only", tags=["advanced"],required_hardware="false") def test_listVM_as_regularuser_listall_false_rec_true(self): """ # Test listing of Vms by passing listall="false" and isrecusrive="true" parameter as regular user @@ -1986,7 +1986,7 @@ class TestVMList(cloudstackTestCase): "Account access check failed!!") - @attr(tags=["advanced"],required_hardware="false") + @attr("simulator_only", tags=["advanced"],required_hardware="false") def test_listVM_as_regularuser_listall_false_rec_false(self): """ # Test listing of Vms by passing listall="false" and isrecusrive="false" parameter as regular user @@ -2015,7 +2015,7 @@ class TestVMList(cloudstackTestCase): ## Regular User - Test cases without passing listall paramter - @attr(tags=["advanced"],required_hardware="false") + @attr("simulator_only", tags=["advanced"],required_hardware="false") def test_listVM_as_regularuser(self): """ # Test listing of Vms by passing no parameter as regular user @@ -2041,7 +2041,7 @@ class TestVMList(cloudstackTestCase): True, "Account access check failed!!") - @attr(tags=["advanced"],required_hardware="false") + @attr("simulator_only", tags=["advanced"],required_hardware="false") def test_listVM_as_regularuser_rec_true(self): """ # Test listing of Vms by passing isrecusrive="true" parameter as regular user @@ -2066,7 +2066,7 @@ class TestVMList(cloudstackTestCase): True, "Account access check failed!!") - @attr(tags=["advanced"],required_hardware="false") + @attr("simulator_only", tags=["advanced"],required_hardware="false") def test_listVM_as_regularuser_rec_false(self): """ # Test listing of Vms by passing isrecusrive="false" parameter as regular user @@ -2093,7 +2093,7 @@ class TestVMList(cloudstackTestCase): ## Regular User - Test cases when domainId is passed with listall =true - @attr(tags=["advanced"],required_hardware="false") + @attr("simulator_only", tags=["advanced"],required_hardware="false") def test_listVM_as_regularuser_domainid_listall_true(self): """ # Test listing of Vms by passing domainid,listall="true" parameter as regular user @@ -2118,7 +2118,7 @@ class TestVMList(cloudstackTestCase): True, "Account access check failed!!") - @attr(tags=["advanced"],required_hardware="false") + @attr("simulator_only", tags=["advanced"],required_hardware="false") def test_listVM_as_regularuser_domainid_listall_true_rec_true(self): """ # Test listing of Vms by passing domainid,listall="true" and isrecusrive="true" parameter as regular user @@ -2143,7 +2143,7 @@ class TestVMList(cloudstackTestCase): True, "Account access check failed!!") - @attr(tags=["advanced"],required_hardware="false") + @attr("simulator_only", tags=["advanced"],required_hardware="false") def test_listVM_as_regularuser_domainid_listall_true_rec_false(self): """ # Test listing of Vms by passing domainid,listall="true" and isrecusrive="false" parameter as regular user @@ -2171,7 +2171,7 @@ class TestVMList(cloudstackTestCase): ## Regular User - Test cases when domainId is passed with listall=false - @attr(tags=["advanced"],required_hardware="false") + @attr("simulator_only", tags=["advanced"],required_hardware="false") def test_listVM_as_regularuser_domainid_listall_false(self): """ # Test listing of Vms by passing domainid,listall="false" parameter as regular user @@ -2197,7 +2197,7 @@ class TestVMList(cloudstackTestCase): "Account access check failed!!") - @attr(tags=["advanced"],required_hardware="false") + @attr("simulator_only", tags=["advanced"],required_hardware="false") def test_listVM_as_regularuser_domainid_listall_false_rec_true(self): """ # Test listing of Vms by passing domainid,listall="false" and isrecusrive="true" parameter as regular user @@ -2224,7 +2224,7 @@ class TestVMList(cloudstackTestCase): - @attr(tags=["advanced"],required_hardware="false") + @attr("simulator_only", tags=["advanced"],required_hardware="false") def test_listVM_as_regularuser_domainid_listall_false_rec_false(self): """ # Test listing of Vms by passing domainid,listall="false" and isrecusrive="false" parameter as regular user @@ -2252,7 +2252,7 @@ class TestVMList(cloudstackTestCase): ## Regular User - Test cases when domainId is passed with no listall parameter - @attr(tags=["advanced"],required_hardware="false") + @attr("simulator_only", tags=["advanced"],required_hardware="false") def test_listVM_as_regularuser_domainid(self): """ # Test listing of Vms by passing domainid parameter as regular user @@ -2278,7 +2278,7 @@ class TestVMList(cloudstackTestCase): "Account access check failed!!") - @attr(tags=["advanced"],required_hardware="false") + @attr("simulator_only", tags=["advanced"],required_hardware="false") def test_listVM_as_regularuser_domainid_true_rec_true(self): """ # Test listing of Vms by passing domainid and isrecusrive="true" parameter as regular user @@ -2305,7 +2305,7 @@ class TestVMList(cloudstackTestCase): - @attr(tags=["advanced"],required_hardware="false") + @attr("simulator_only", tags=["advanced"],required_hardware="false") def test_listVM_as_regularuser_domainid__rec_false(self): """ # Test listing of Vms by passing domainid,isrecusrive="false" parameter as regular user @@ -2333,7 +2333,7 @@ class TestVMList(cloudstackTestCase): ## Regular User - Test cases when account and domainId is passed with listall =true - @attr(tags=["advanced"],required_hardware="false") + @attr("simulator_only", tags=["advanced"],required_hardware="false") def test_listVM_as_regularuser_domainid_accountid_listall_true(self): """ # Test listing of Vms by passing domainid,account,listall="true" parameter as regular user @@ -2358,7 +2358,7 @@ class TestVMList(cloudstackTestCase): True, "Account access check failed!!") - @attr(tags=["advanced"],required_hardware="false") + @attr("simulator_only", tags=["advanced"],required_hardware="false") def test_listVM_as_regularuser_domainid_accountid_listall_true_rec_true(self): """ # Test listing of Vms by passing domainid,account,listall="true" and isrecusrive="true" parameter as regular user @@ -2383,7 +2383,7 @@ class TestVMList(cloudstackTestCase): True, "Account access check failed!!") - @attr(tags=["advanced"],required_hardware="false") + @attr("simulator_only", tags=["advanced"],required_hardware="false") def test_listVM_as_regularuser_domainid_accountid_listall_true_rec_false(self): """ # Test listing of Vms by passing domainid,account,listall="true" and isrecusrive="false" parameter as regular user @@ -2411,7 +2411,7 @@ class TestVMList(cloudstackTestCase): ## Regular User - Test cases when account and domainId is passed with listall=false - @attr(tags=["advanced"],required_hardware="false") + @attr("simulator_only", tags=["advanced"],required_hardware="false") def test_listVM_as_regularuser_domainid_accountid_listall_false(self): """ # Test listing of Vms by passing domainid,account,listall="false" parameter as regular user @@ -2437,7 +2437,7 @@ class TestVMList(cloudstackTestCase): "Account access check failed!!") - @attr(tags=["advanced"],required_hardware="false") + @attr("simulator_only", tags=["advanced"],required_hardware="false") def test_listVM_as_regularuser_domainid_accountid_listall_false_rec_true(self): """ # Test listing of Vms by passing domainid,account,listall="false" and isrecusrive="true" parameter as regular user @@ -2462,7 +2462,7 @@ class TestVMList(cloudstackTestCase): True, "Account access check failed!!") - @attr(tags=["advanced"],required_hardware="false") + @attr("simulator_only", tags=["advanced"],required_hardware="false") def test_listVM_as_regularuser_domainid_accountid_listall_false_rec_false(self): """ # Test listing of Vms by passing domainid,account,listall="false" and isrecusrive="false" parameter as regular user @@ -2490,7 +2490,7 @@ class TestVMList(cloudstackTestCase): ## Regular User - Test cases when account and domainId is passed with listall not passed - @attr(tags=["advanced"],required_hardware="false") + @attr("simulator_only", tags=["advanced"],required_hardware="false") def test_listVM_as_regularuser_domainid_accountid(self): """ # Test listing of Vms by passing domainid,account parameter as regular user @@ -2516,7 +2516,7 @@ class TestVMList(cloudstackTestCase): "Account access check failed!!") - @attr(tags=["advanced"],required_hardware="false") + @attr("simulator_only", tags=["advanced"],required_hardware="false") def test_listVM_as_regularuser_domainid_accountid_rec_true(self): """ # Test listing of Vms by passing domainid,account and isrecusrive="true" parameter as regular user @@ -2542,7 +2542,7 @@ class TestVMList(cloudstackTestCase): "Account access check failed!!") - @attr(tags=["advanced"],required_hardware="false") + @attr("simulator_only", tags=["advanced"],required_hardware="false") def test_listVM_as_regularuser_domainid_accountid_rec_false(self): """ # Test listing of Vms by passing domainid,account isrecusrive="false" parameter as regular user @@ -2569,7 +2569,7 @@ class TestVMList(cloudstackTestCase): ## Cross Domain access check - @attr(tags=["advanced"],required_hardware="false") + @attr("simulator_only", tags=["advanced"],required_hardware="false") def test_listVM_as_regularuser_cross_domainid_accountid(self): """ # Regular User should not be allowed to list Vms of other accounts in the same domain @@ -2584,7 +2584,7 @@ class TestVMList(cloudstackTestCase): self.debug ("List as Regular User passing domainId and accountId of another account %s" %e) - @attr(tags=["advanced"],required_hardware="false") + @attr("simulator_only", tags=["advanced"],required_hardware="false") def test_listVM_as_regularuser_cross_domainid(self): """ # Regular User should not be allowed to list Vms of other accounts in other domains @@ -2599,7 +2599,7 @@ class TestVMList(cloudstackTestCase): self.debug ("List as Regular User passing domainId of a domain that user does not belong to %s" %e) - @attr(tags=["advanced"],required_hardware="false") + @attr("simulator_only", tags=["advanced"],required_hardware="false") def test_listVM_as_domainadmin_cross_domainid_accountid(self): """ # Domain admin should not be allowed to list Vms of accounts in other domains @@ -2614,7 +2614,7 @@ class TestVMList(cloudstackTestCase): self.debug ("List as domain admin passing domainId and accountId of another account %s" %e) - @attr(tags=["advanced"],required_hardware="false") + @attr("simulator_only", tags=["advanced"],required_hardware="false") def test_listVM_as_domainadmin_cross_domainid(self): """ # Domain admin should not be allowed to list Vms from other domains @@ -2630,7 +2630,7 @@ class TestVMList(cloudstackTestCase): ## List test cases relating to filter - id - @attr(tags=["advanced"],required_hardware="false") + @attr("simulator_only", tags=["advanced"],required_hardware="false") def test_listVM_by_id_as_domainadmin_owns(self): """ # Domain admin should be able to list Vm that he owns by passing uuid in "id" parameter @@ -2648,7 +2648,7 @@ class TestVMList(cloudstackTestCase): 1, "Domain Admin is not able to list Vms that belongs to him") - @attr(tags=["advanced"],required_hardware="false") + @attr("simulator_only", tags=["advanced"],required_hardware="false") def test_listVM_by_id_as_domainadmin_ownedbyusersindomain(self): """ # Domain admin should be able to list Vm that is owned by any account in his domain by passing uuid in "id" parameter @@ -2666,7 +2666,7 @@ class TestVMList(cloudstackTestCase): 1, "Domain Admin is not able to list Vms from his domain") - @attr(tags=["advanced"],required_hardware="false") + @attr("simulator_only", tags=["advanced"],required_hardware="false") def test_listVM_by_id_as_domainadmin_ownedbyusersinsubdomain(self): """ # Domain admin should be able to list Vm that is owned by any account in his sub-domain by passing uuid in "id" parameter @@ -2684,7 +2684,7 @@ class TestVMList(cloudstackTestCase): 1, "Domain Admin is not able to list Vms from his sub domain") - @attr(tags=["advanced"],required_hardware="false") + @attr("simulator_only", tags=["advanced"],required_hardware="false") def test_listVM_by_id_as_domainadmin_ownedbyusersnotindomain(self): """ # Domain admin should not be able to list Vm that is owned by account that is not in his domain by passing uuid in "id" parameter @@ -2698,7 +2698,7 @@ class TestVMList(cloudstackTestCase): None, "Domain Admin is able to list Vms from other domains!!!") - @attr(tags=["advanced"],required_hardware="false") + @attr("simulator_only", tags=["advanced"],required_hardware="false") def test_listVM_by_id_as_domainadmin_ownedbyusersinsubdomain2(self): """ # Domain admin should be able to list Vm that is owned by account that is in his sub domains by passing uuid in "id" parameter @@ -2717,7 +2717,7 @@ class TestVMList(cloudstackTestCase): "Domain Admin is not able to list Vms from his sub domains") - @attr(tags=["advanced"],required_hardware="false") + @attr("simulator_only", tags=["advanced"],required_hardware="false") def test_listVM_by_id_as_rootadmin_owns(self): """ # Domain admin should be able to list Vm that is owned by account that is in his sub domains by passing uuid in "id" parameter @@ -2733,7 +2733,7 @@ class TestVMList(cloudstackTestCase): 1, "ROOT Admin not able to list Vms that he owns") - @attr(tags=["advanced"],required_hardware="false") + @attr("simulator_only", tags=["advanced"],required_hardware="false") def test_listVM_by_id_as_rootadmin_Vmsownedbyothers(self): """ # ROOT admin should be able to list Vm that is owned by any account iby passing uuid in "id" parameter @@ -2757,7 +2757,7 @@ class TestVMList(cloudstackTestCase): 1, "ROOT Admin not able to list Vms from other domains") - @attr(tags=["advanced"],required_hardware="false") + @attr("simulator_only", tags=["advanced"],required_hardware="false") def test_listVM_by_id_as_user_own(self): """ # Regular user should be able to list Vm that is owned by him by passing uuid in "id" parameter @@ -2776,7 +2776,7 @@ class TestVMList(cloudstackTestCase): 1, "Regular User is not able to list Vms that he owns") - @attr(tags=["advanced"],required_hardware="false") + @attr("simulator_only", tags=["advanced"],required_hardware="false") def test_listVM_by_id_as_user_vmfromsamedomaindifferentaccount(self): """ # Regular user should not be able to list Vm that is owned by different account in the same domain by passing uuid in "id" parameter @@ -2790,7 +2790,7 @@ class TestVMList(cloudstackTestCase): None, "Regular User is able to list Vms from other accounts") - @attr(tags=["advanced"],required_hardware="false") + @attr("simulator_only", tags=["advanced"],required_hardware="false") def test_listVM_by_id_as_user_vmsfromotherdomain(self): """ # Regular user should not be able to list Vm that is owned by different account in the different domain by passing uuid in "id" parameter diff --git a/test/integration/component/test_acl_listvolume.py b/test/integration/component/test_acl_listvolume.py index e5275825515..65a1201571d 100644 --- a/test/integration/component/test_acl_listvolume.py +++ b/test/integration/component/test_acl_listvolume.py @@ -374,7 +374,7 @@ class TestVolumeList(cloudstackTestCase): ## Domain Admin - Test cases with listall =true - @attr(tags=["advanced"],required_hardware="false") + @attr("simulator_only", tags=["advanced"],required_hardware="false") def test_listVolume_as_domainadmin_listall_true(self): """ # Test listing of Volumes by passing listall="true" parameter as domain admin @@ -407,7 +407,7 @@ class TestVolumeList(cloudstackTestCase): True, "Account access check failed!!") - @attr(tags=["advanced"],required_hardware="false") + @attr("simulator_only", tags=["advanced"],required_hardware="false") def test_listVolume_as_domainadmin_listall_true_rec_true(self): """ # Test listing of Volumes by passing listall="true"i and isrecusriv="true" parameter as domain admin @@ -440,7 +440,7 @@ class TestVolumeList(cloudstackTestCase): True, "Account access check failed!!") - @attr(tags=["advanced"],required_hardware="false") + @attr("simulator_only", tags=["advanced"],required_hardware="false") def test_listVolume_as_domainadmin_listall_true_rec_false(self): """ # Test listing of Volumes by passing listall="true" and isrecusriv="false" parameter as domain admin @@ -475,7 +475,7 @@ class TestVolumeList(cloudstackTestCase): ## Domain Admin - Test cases with listall=false - @attr(tags=["advanced"],required_hardware="false") + @attr("simulator_only", tags=["advanced"],required_hardware="false") def test_listVolume_as_domainadmin_listall_false(self): """ # Test listing of Volumes by passing listall="false" parameter as domain admin @@ -500,7 +500,7 @@ class TestVolumeList(cloudstackTestCase): True, "Account access check failed!!") - @attr(tags=["advanced"],required_hardware="false") + @attr("simulator_only", tags=["advanced"],required_hardware="false") def test_listVolume_as_domainadmin_listall_false_rec_true(self): """ # Test listing of Volumes by passing listall="false" and isrecusrive="true" parameter as domain admin @@ -525,7 +525,7 @@ class TestVolumeList(cloudstackTestCase): True, "Account access check failed!!") - @attr(tags=["advanced"],required_hardware="false") + @attr("simulator_only", tags=["advanced"],required_hardware="false") def test_listVolume_as_domainadmin_listall_false_rec_false(self): """ # Test listing of Volumes by passing listall="false" and isrecusrive="false" parameter as domain admin @@ -551,7 +551,7 @@ class TestVolumeList(cloudstackTestCase): ## Domain Admin - Test cases without passing listall paramter - @attr(tags=["advanced"],required_hardware="false") + @attr("simulator_only", tags=["advanced"],required_hardware="false") def test_listVolume_as_domainadmin(self): """ # Test listing of Volumes by passing no parameter as domain admin @@ -576,7 +576,7 @@ class TestVolumeList(cloudstackTestCase): True, "Account access check failed!!") - @attr(tags=["advanced"],required_hardware="false") + @attr("simulator_only", tags=["advanced"],required_hardware="false") def test_listVolume_as_domainadmin_rec_true(self): """ # Test listing of Volumes by passing isrecusrive="true" parameter as domain admin @@ -601,7 +601,7 @@ class TestVolumeList(cloudstackTestCase): True, "Account access check failed!!") - @attr(tags=["advanced"],required_hardware="false") + @attr("simulator_only", tags=["advanced"],required_hardware="false") def test_listVolume_as_domainadmin_true_rec_false(self): """ # Test listing of Volumes by passing isrecusrive="false" parameter as domain admin @@ -628,7 +628,7 @@ class TestVolumeList(cloudstackTestCase): ## Domain Admin - Test cases when domainId is passed with listall =true - @attr(tags=["advanced"],required_hardware="false") + @attr("simulator_only", tags=["advanced"],required_hardware="false") def test_listVolume_as_domainadmin_domainid_listall_true(self): """ # Test listing of Volumes by passing domainId and listall="true" parameter as domain admin @@ -655,7 +655,7 @@ class TestVolumeList(cloudstackTestCase): True, "Account access check failed!!") - @attr(tags=["advanced"],required_hardware="false") + @attr("simulator_only", tags=["advanced"],required_hardware="false") def test_listVolume_as_domainadmin_domainid_listall_true_rec_true(self): """ # Test listing of Volumes by passing domainId ,listall="true" and isrecursive="true" parameter as domain admin @@ -683,7 +683,7 @@ class TestVolumeList(cloudstackTestCase): True, "Account access check failed!!") - @attr(tags=["advanced"],required_hardware="false") + @attr("simulator_only", tags=["advanced"],required_hardware="false") def test_listVolume_as_domainadmin_domainid_listall_true_rec_false(self): """ # Test listing of Volumes by passing domainId ,listall="true" and isrecursive="false" parameter as domain admin @@ -713,7 +713,7 @@ class TestVolumeList(cloudstackTestCase): ## Domain Admin - Test cases when domainId is passed with listall=false - @attr(tags=["advanced"],required_hardware="false") + @attr("simulator_only", tags=["advanced"],required_hardware="false") def test_listVolume_as_domainadmin_domainid_listall_false(self): # Test listing of Volumes by passing domainId ,listall="false" parameter as domain admin # Validate that it returns all the Volumes in the domain passed @@ -738,7 +738,7 @@ class TestVolumeList(cloudstackTestCase): True, "Account access check failed!!") - @attr(tags=["advanced"],required_hardware="false") + @attr("simulator_only", tags=["advanced"],required_hardware="false") def test_listVolume_as_domainadmin_domainid_listall_false_rec_true(self): """ # Test listing of Volumes by passing domainId ,listall="false" and isrecursive="true" parameter as domain admin @@ -766,7 +766,7 @@ class TestVolumeList(cloudstackTestCase): True, "Account access check failed!!") - @attr(tags=["advanced"],required_hardware="false") + @attr("simulator_only", tags=["advanced"],required_hardware="false") def test_listVolume_as_domainadmin_domainid_listall_false_rec_false(self): """ # Test listing of Volumes by passing domainId ,listall="false" and isrecursive="false" parameter as domain admin @@ -796,7 +796,7 @@ class TestVolumeList(cloudstackTestCase): ## Domain Admin - Test cases when domainId is passed with no listall parameter - @attr(tags=["advanced"],required_hardware="false") + @attr("simulator_only", tags=["advanced"],required_hardware="false") def test_listVolume_as_domainadmin_domainid(self): """ # Test listing of Volumes by passing domainId parameter as domain admin @@ -822,7 +822,7 @@ class TestVolumeList(cloudstackTestCase): True, "Account access check failed!!") - @attr(tags=["advanced"],required_hardware="false") + @attr("simulator_only", tags=["advanced"],required_hardware="false") def test_listVolume_as_domainadmin_domainid_rec_true(self): """ # Test listing of Volumes by passing domainId and isrecursive="true" parameter as domain admin @@ -850,7 +850,7 @@ class TestVolumeList(cloudstackTestCase): True, "Account access check failed!!") - @attr(tags=["advanced"],required_hardware="false") + @attr("simulator_only", tags=["advanced"],required_hardware="false") def test_listVolume_as_domainadmin_domainid_rec_false(self): """ # Test listing of Volumes by passing domainId and isrecursive="false" parameter as domain admin @@ -880,7 +880,7 @@ class TestVolumeList(cloudstackTestCase): ## Domain Admin - Test cases when account and domainId is passed with listall =true - @attr(tags=["advanced"],required_hardware="false") + @attr("simulator_only", tags=["advanced"],required_hardware="false") def test_listVolume_as_domainadmin_domainid_accountid_listall_true(self): """ # Test listing of Volumes by passing account ,domainId and listall="true" parameter as domain admin @@ -905,7 +905,7 @@ class TestVolumeList(cloudstackTestCase): True, "Account access check failed!!") - @attr(tags=["advanced"],required_hardware="false") + @attr("simulator_only", tags=["advanced"],required_hardware="false") def test_listVolume_as_domainadmin_domainid_accountid_listall_true_rec_true(self): """ # Test listing of Volumes by passing account ,domainId and listall="true" and isrecursive="true" parameter as domain admin @@ -930,7 +930,7 @@ class TestVolumeList(cloudstackTestCase): True, "Account access check failed!!") - @attr(tags=["advanced"],required_hardware="false") + @attr("simulator_only", tags=["advanced"],required_hardware="false") def test_listVolume_as_domainadmin_domainid_accountid_listall_true_rec_false(self): """ # Test listing of Volumes by passing account ,domainId , listall="true" and isrecursive="false" parameter as domain admin @@ -958,7 +958,7 @@ class TestVolumeList(cloudstackTestCase): ## Domain Admin - Test cases when account and domainId is passed with listall=false - @attr(tags=["advanced"],required_hardware="false") + @attr("simulator_only", tags=["advanced"],required_hardware="false") def test_listVolume_as_domainadmin_domainid_accountid_listall_false(self): """ # Test listing of Volumes by passing account ,domainId and listall="false" parameter as domain admin @@ -983,7 +983,7 @@ class TestVolumeList(cloudstackTestCase): True, "Account access check failed!!") - @attr(tags=["advanced"],required_hardware="false") + @attr("simulator_only", tags=["advanced"],required_hardware="false") def test_listVolume_as_domainadmin_domainid_accountid_listall_false_rec_true(self): """ # Test listing of Volumes by passing account ,domainId and listall="false" and isrecursive="true" parameter as domain admin @@ -1008,7 +1008,7 @@ class TestVolumeList(cloudstackTestCase): True, "Account access check failed!!") - @attr(tags=["advanced"],required_hardware="false") + @attr("simulator_only", tags=["advanced"],required_hardware="false") def test_listVolume_as_domainadmin_domainid_accountid_listall_false_rec_false(self): """ # Test listing of Volumes by passing account ,domainId , listall="false" and isrecursive="false" parameter as domain admin @@ -1035,7 +1035,7 @@ class TestVolumeList(cloudstackTestCase): ## Domain Admin - Test cases when account and domainId is passed with listall not passed - @attr(tags=["advanced"],required_hardware="false") + @attr("simulator_only", tags=["advanced"],required_hardware="false") def test_listVolume_as_domainadmin_domainid_accountid(self): """ # Test listing of Volumes by passing account ,domainId parameter as domain admin @@ -1059,7 +1059,7 @@ class TestVolumeList(cloudstackTestCase): True, "Account access check failed!!") - @attr(tags=["advanced"],required_hardware="false") + @attr("simulator_only", tags=["advanced"],required_hardware="false") def test_listVolume_as_domainadmin_domainid_accountid_rec_true(self): """ # Test listing of Volumes by passing account ,domainId and isrecursive="true" parameter as domain admin @@ -1084,7 +1084,7 @@ class TestVolumeList(cloudstackTestCase): True, "Account access check failed!!") - @attr(tags=["advanced"],required_hardware="false") + @attr("simulator_only", tags=["advanced"],required_hardware="false") def test_listVolume_as_domainadmin_domainid_accountid_rec_false(self): """ # Test listing of Volumes by passing account ,domainId and isrecursive="false" parameter as domain admin @@ -1111,7 +1111,7 @@ class TestVolumeList(cloudstackTestCase): ## ROOT Admin - Test cases with listall =true - @attr(tags=["advanced"],required_hardware="false") + @attr("simulator_only", tags=["advanced"],required_hardware="false") def test_listVolume_as_rootadmin_listall_true(self): """ # Test listing of Volumes by passing listall="true" parameter as admin @@ -1147,7 +1147,7 @@ class TestVolumeList(cloudstackTestCase): True, "Account access check failed!!") - @attr(tags=["advanced"],required_hardware="false") + @attr("simulator_only", tags=["advanced"],required_hardware="false") def test_listVolume_as_rootadmin_listall_true_rec_true(self): """ # Test listing of Volumes by passing listall="true" and isrecusrive="true" parameter as admin @@ -1183,7 +1183,7 @@ class TestVolumeList(cloudstackTestCase): True, "Account access check failed!!") - @attr(tags=["advanced"],required_hardware="false") + @attr("simulator_only", tags=["advanced"],required_hardware="false") def test_listVolume_as_rootadmin_listall_true_rec_false(self): """ # Test listing of Volumes by passing listall="true" and isrecusrive="false" parameter as admin @@ -1220,7 +1220,7 @@ class TestVolumeList(cloudstackTestCase): ## ROOT Admin - Test cases with listall=false - @attr(tags=["advanced"],required_hardware="false") + @attr("simulator_only", tags=["advanced"],required_hardware="false") def test_listVolume_as_rootadmin_listall_false(self): """ # Test listing of Volumes by passing listall="false" parameter as admin @@ -1245,7 +1245,7 @@ class TestVolumeList(cloudstackTestCase): True, "Account access check failed!!") - @attr(tags=["advanced"],required_hardware="false") + @attr("simulator_only", tags=["advanced"],required_hardware="false") def test_listVolume_as_rootadmin_listall_false_rec_true(self): """ # Test listing of Volumes by passing listall="false" and isrecusrive="true" parameter as admin @@ -1271,7 +1271,7 @@ class TestVolumeList(cloudstackTestCase): "Account access check failed!!") - @attr(tags=["advanced"],required_hardware="false") + @attr("simulator_only", tags=["advanced"],required_hardware="false") def test_listVolume_as_rootadmin_listall_false_rec_false(self): """ # Test listing of Volumes by passing listall="false" and isrecusrive="false" parameter as admin @@ -1300,7 +1300,7 @@ class TestVolumeList(cloudstackTestCase): ## ROOT Admin - Test cases without passing listall paramter - @attr(tags=["advanced"],required_hardware="false") + @attr("simulator_only", tags=["advanced"],required_hardware="false") def test_listVolume_as_rootadmin(self): """ # Test listing of Volumes by passing no parameter as admin @@ -1326,7 +1326,7 @@ class TestVolumeList(cloudstackTestCase): True, "Account access check failed!!") - @attr(tags=["advanced"],required_hardware="false") + @attr("simulator_only", tags=["advanced"],required_hardware="false") def test_listVolume_as_rootadmin_rec_true(self): """ # Test listing of Volumes by passing isrecusrive="true" parameter as admin @@ -1351,7 +1351,7 @@ class TestVolumeList(cloudstackTestCase): True, "Account access check failed!!") - @attr(tags=["advanced"],required_hardware="false") + @attr("simulator_only", tags=["advanced"],required_hardware="false") def test_listVolume_as_rootadmin_rec_false(self): """ # Test listing of Volumes by passing isrecusrive="false" parameter as admin @@ -1378,7 +1378,7 @@ class TestVolumeList(cloudstackTestCase): ## ROOT Admin - Test cases when domainId is passed with listall =true - @attr(tags=["advanced"],required_hardware="false") + @attr("simulator_only", tags=["advanced"],required_hardware="false") def test_listVolume_as_rootadmin_domainid_listall_true(self): """ # Test listing of Volumes by passing domainid and listall="true" parameter as admin @@ -1405,7 +1405,7 @@ class TestVolumeList(cloudstackTestCase): True, "Account access check failed!!") - @attr(tags=["advanced"],required_hardware="false") + @attr("simulator_only", tags=["advanced"],required_hardware="false") def test_listVolume_as_rootadmin_domainid_listall_true_rec_true(self): """ # Test listing of Volumes by passing domainid , listall="true" and isrecusrive="true" parameter as admin @@ -1433,7 +1433,7 @@ class TestVolumeList(cloudstackTestCase): True, "Account access check failed!!") - @attr(tags=["advanced"],required_hardware="false") + @attr("simulator_only", tags=["advanced"],required_hardware="false") def test_listVolume_as_rootadmin_domainid_listall_true_rec_false(self): """ # Test listing of Volumes by passing domainid, listall="true" and isrecusrive="false" parameter as admin @@ -1463,7 +1463,7 @@ class TestVolumeList(cloudstackTestCase): ## ROOT Admin - Test cases when domainId is passed with listall=false - @attr(tags=["advanced"],required_hardware="false") + @attr("simulator_only", tags=["advanced"],required_hardware="false") def test_listVolume_as_rootadmin_domainid_listall_false(self): """ # Test listing of Volumes by passing domainid, listall="false" parameter as admin @@ -1490,7 +1490,7 @@ class TestVolumeList(cloudstackTestCase): True, "Account access check failed!!") - @attr(tags=["advanced"],required_hardware="false") + @attr("simulator_only", tags=["advanced"],required_hardware="false") def test_listVolume_as_rootadmin_domainid_listall_false_rec_true(self): """ # Test listing of Volumes by passing domainid, listall="false" and isrecusrive="true" parameter as admin @@ -1518,7 +1518,7 @@ class TestVolumeList(cloudstackTestCase): True, "Account access check failed!!") - @attr(tags=["advanced"],required_hardware="false") + @attr("simulator_only", tags=["advanced"],required_hardware="false") def test_listVolume_as_rootadmin_domainid_listall_false_rec_false(self): """ # Test listing of Volumes by passing domainid, listall="false" and isrecusrive="false" parameter as admin @@ -1548,7 +1548,7 @@ class TestVolumeList(cloudstackTestCase): ## ROOT Admin - Test cases when domainId is passed with no listall parameter - @attr(tags=["advanced"],required_hardware="false") + @attr("simulator_only", tags=["advanced"],required_hardware="false") def test_listVolume_as_rootadmin_domainid(self): """ # Test listing of Volumes by passing domainid parameter as admin @@ -1575,7 +1575,7 @@ class TestVolumeList(cloudstackTestCase): True, "Account access check failed!!") - @attr(tags=["advanced"],required_hardware="false") + @attr("simulator_only", tags=["advanced"],required_hardware="false") def test_listVolume_as_rootadmin_domainid_rec_true(self): """ # Test listing of Volumes by passing domainid and isrecusrive="true" parameter as admin @@ -1603,7 +1603,7 @@ class TestVolumeList(cloudstackTestCase): True, "Account access check failed!!") - @attr(tags=["advanced"],required_hardware="false") + @attr("simulator_only", tags=["advanced"],required_hardware="false") def test_listVolume_as_rootadmin_domainid_rec_false(self): """ # Test listing of Volumes by passing domainid and isrecusrive="false" parameter as admin @@ -1633,7 +1633,7 @@ class TestVolumeList(cloudstackTestCase): ## ROOT Admin - Test cases when account and domainId is passed with listall =true - @attr(tags=["advanced"],required_hardware="false") + @attr("simulator_only", tags=["advanced"],required_hardware="false") def test_listVolume_as_rootadmin_domainid_accountid_listall_true(self): """ # Test listing of Volumes by passing domainid,account ,listall = "true" parameter as admin @@ -1658,7 +1658,7 @@ class TestVolumeList(cloudstackTestCase): True, "Account access check failed!!") - @attr(tags=["advanced"],required_hardware="false") + @attr("simulator_only", tags=["advanced"],required_hardware="false") def test_listVolume_as_rootadmin_domainid_accountid_listall_true_rec_true(self): """ # Test listing of Volumes by passing domainid,account ,listall = "true" and isrecusrive="true" parameter as admin @@ -1683,7 +1683,7 @@ class TestVolumeList(cloudstackTestCase): True, "Account access check failed!!") - @attr(tags=["advanced"],required_hardware="false") + @attr("simulator_only", tags=["advanced"],required_hardware="false") def test_listVolume_as_rootadmin_domainid_accountid_listall_true_rec_false(self): """ # Test listing of Volumes by passing domainid,account ,listall = "true" and isrecusrive="false" parameter as admin @@ -1711,7 +1711,7 @@ class TestVolumeList(cloudstackTestCase): ## ROOT Admin - Test cases when account and domainId is passed with listall=false - @attr(tags=["advanced"],required_hardware="false") + @attr("simulator_only", tags=["advanced"],required_hardware="false") def test_listVolume_as_rootadmin_domainid_accountid_listall_false(self): """ # Test listing of Volumes by passing domainid,account ,listall = "false" parameter as admin @@ -1736,7 +1736,7 @@ class TestVolumeList(cloudstackTestCase): True, "Account access check failed!!") - @attr(tags=["advanced"],required_hardware="false") + @attr("simulator_only", tags=["advanced"],required_hardware="false") def test_listVolume_as_rootadmin_domainid_accountid_listall_false_rec_true(self): """ # Test listing of Volumes by passing domainid,account ,listall = "false" and isrecusrive="false" parameter as admin @@ -1761,7 +1761,7 @@ class TestVolumeList(cloudstackTestCase): True, "Account access check failed!!") - @attr(tags=["advanced"],required_hardware="false") + @attr("simulator_only", tags=["advanced"],required_hardware="false") def test_listVolume_as_rootadmin_domainid_accountid_listall_false_rec_false(self): """ # Test listing of Volumes by passing domainid,account ,listall = "false" and isrecusrive="false" parameter as admin @@ -1789,7 +1789,7 @@ class TestVolumeList(cloudstackTestCase): ## ROOT Admin - Test cases when account and domainId is passed with listall not passed - @attr(tags=["advanced"],required_hardware="false") + @attr("simulator_only", tags=["advanced"],required_hardware="false") def test_listVolume_as_rootadmin_domainid_accountid(self): """ # Test listing of Volumes by passing domainid,account parameter as admin @@ -1814,7 +1814,7 @@ class TestVolumeList(cloudstackTestCase): True, "Account access check failed!!") - @attr(tags=["advanced"],required_hardware="false") + @attr("simulator_only", tags=["advanced"],required_hardware="false") def test_listVolume_as_rootadmin_domainid_accountid_rec_true(self): """ # Test listing of Volumes by passing domainid,account and isrecusrive="true" parameter as admin @@ -1839,7 +1839,7 @@ class TestVolumeList(cloudstackTestCase): True, "Account access check failed!!") - @attr(tags=["advanced"],required_hardware="false") + @attr("simulator_only", tags=["advanced"],required_hardware="false") def test_listVolume_as_rootadmin_domainid_accountid_rec_false(self): """ # Test listing of Volumes by passing domainid,account and isrecusrive="false" parameter as admin @@ -1867,7 +1867,7 @@ class TestVolumeList(cloudstackTestCase): ## Regular User - Test cases with listall =true - @attr(tags=["advanced"],required_hardware="false") + @attr("simulator_only", tags=["advanced"],required_hardware="false") def test_listVolume_as_regularuser_listall_true(self): """ # Test listing of Volumes by passing listall="true" parameter as regular user @@ -1892,7 +1892,7 @@ class TestVolumeList(cloudstackTestCase): True, "Account access check failed!!") - @attr(tags=["advanced"],required_hardware="false") + @attr("simulator_only", tags=["advanced"],required_hardware="false") def test_listVolume_as_regularuser_listall_true_rec_true(self): """ # Test listing of Volumes by passing listall="true" and isrecusrive="true" parameter as regular user @@ -1917,7 +1917,7 @@ class TestVolumeList(cloudstackTestCase): True, "Account access check failed!!") - @attr(tags=["advanced"],required_hardware="false") + @attr("simulator_only", tags=["advanced"],required_hardware="false") def test_listVolume_as_regularuser_listall_true_rec_false(self): """ # Test listing of Volumes by passing listall="true" and isrecusrive="false" parameter as regular user @@ -1944,7 +1944,7 @@ class TestVolumeList(cloudstackTestCase): ## Regular User - Test cases with listall=false - @attr(tags=["advanced"],required_hardware="false") + @attr("simulator_only", tags=["advanced"],required_hardware="false") def test_listVolume_as_regularuser_listall_false(self): """ # Test listing of Volumes by passing domainid,account,listall="false" parameter as regular user @@ -1969,7 +1969,7 @@ class TestVolumeList(cloudstackTestCase): True, "Account access check failed!!") - @attr(tags=["advanced"],required_hardware="false") + @attr("simulator_only", tags=["advanced"],required_hardware="false") def test_listVolume_as_regularuser_listall_false_rec_true(self): """ # Test listing of Volumes by passing listall="false" and isrecusrive="true" parameter as regular user @@ -1995,7 +1995,7 @@ class TestVolumeList(cloudstackTestCase): "Account access check failed!!") - @attr(tags=["advanced"],required_hardware="false") + @attr("simulator_only", tags=["advanced"],required_hardware="false") def test_listVolume_as_regularuser_listall_false_rec_false(self): """ # Test listing of Volumes by passing listall="false" and isrecusrive="false" parameter as regular user @@ -2024,7 +2024,7 @@ class TestVolumeList(cloudstackTestCase): ## Regular User - Test cases without passing listall paramter - @attr(tags=["advanced"],required_hardware="false") + @attr("simulator_only", tags=["advanced"],required_hardware="false") def test_listVolume_as_regularuser(self): """ # Test listing of Volumes by passing no parameter as regular user @@ -2050,7 +2050,7 @@ class TestVolumeList(cloudstackTestCase): True, "Account access check failed!!") - @attr(tags=["advanced"],required_hardware="false") + @attr("simulator_only", tags=["advanced"],required_hardware="false") def test_listVolume_as_regularuser_rec_true(self): """ # Test listing of Volumes by passing isrecusrive="true" parameter as regular user @@ -2075,7 +2075,7 @@ class TestVolumeList(cloudstackTestCase): True, "Account access check failed!!") - @attr(tags=["advanced"],required_hardware="false") + @attr("simulator_only", tags=["advanced"],required_hardware="false") def test_listVolume_as_regularuser_rec_false(self): """ # Test listing of Volumes by passing isrecusrive="false" parameter as regular user @@ -2102,7 +2102,7 @@ class TestVolumeList(cloudstackTestCase): ## Regular User - Test cases when domainId is passed with listall =true - @attr(tags=["advanced"],required_hardware="false") + @attr("simulator_only", tags=["advanced"],required_hardware="false") def test_listVolume_as_regularuser_domainid_listall_true(self): """ # Test listing of Volumes by passing domainid,listall="true" parameter as regular user @@ -2127,7 +2127,7 @@ class TestVolumeList(cloudstackTestCase): True, "Account access check failed!!") - @attr(tags=["advanced"],required_hardware="false") + @attr("simulator_only", tags=["advanced"],required_hardware="false") def test_listVolume_as_regularuser_domainid_listall_true_rec_true(self): """ # Test listing of Volumes by passing domainid,listall="true" and isrecusrive="true" parameter as regular user @@ -2152,7 +2152,7 @@ class TestVolumeList(cloudstackTestCase): True, "Account access check failed!!") - @attr(tags=["advanced"],required_hardware="false") + @attr("simulator_only", tags=["advanced"],required_hardware="false") def test_listVolume_as_regularuser_domainid_listall_true_rec_false(self): """ # Test listing of Volumes by passing domainid,listall="true" and isrecusrive="false" parameter as regular user @@ -2180,7 +2180,7 @@ class TestVolumeList(cloudstackTestCase): ## Regular User - Test cases when domainId is passed with listall=false - @attr(tags=["advanced"],required_hardware="false") + @attr("simulator_only", tags=["advanced"],required_hardware="false") def test_listVolume_as_regularuser_domainid_listall_false(self): """ # Test listing of Volumes by passing domainid,listall="false" parameter as regular user @@ -2206,7 +2206,7 @@ class TestVolumeList(cloudstackTestCase): "Account access check failed!!") - @attr(tags=["advanced"],required_hardware="false") + @attr("simulator_only", tags=["advanced"],required_hardware="false") def test_listVolume_as_regularuser_domainid_listall_false_rec_true(self): """ # Test listing of Volumes by passing domainid,listall="false" and isrecusrive="true" parameter as regular user @@ -2233,7 +2233,7 @@ class TestVolumeList(cloudstackTestCase): - @attr(tags=["advanced"],required_hardware="false") + @attr("simulator_only", tags=["advanced"],required_hardware="false") def test_listVolume_as_regularuser_domainid_listall_false_rec_false(self): """ # Test listing of Volumes by passing domainid,listall="false" and isrecusrive="false" parameter as regular user @@ -2261,7 +2261,7 @@ class TestVolumeList(cloudstackTestCase): ## Regular User - Test cases when domainId is passed with no listall parameter - @attr(tags=["advanced"],required_hardware="false") + @attr("simulator_only", tags=["advanced"],required_hardware="false") def test_listVolume_as_regularuser_domainid(self): """ # Test listing of Volumes by passing domainid parameter as regular user @@ -2287,7 +2287,7 @@ class TestVolumeList(cloudstackTestCase): "Account access check failed!!") - @attr(tags=["advanced"],required_hardware="false") + @attr("simulator_only", tags=["advanced"],required_hardware="false") def test_listVolume_as_regularuser_domainid_true_rec_true(self): """ # Test listing of Volumes by passing domainid and isrecusrive="true" parameter as regular user @@ -2314,7 +2314,7 @@ class TestVolumeList(cloudstackTestCase): - @attr(tags=["advanced"],required_hardware="false") + @attr("simulator_only", tags=["advanced"],required_hardware="false") def test_listVolume_as_regularuser_domainid__rec_false(self): """ # Test listing of Volumes by passing domainid,isrecusrive="false" parameter as regular user @@ -2342,7 +2342,7 @@ class TestVolumeList(cloudstackTestCase): ## Regular User - Test cases when account and domainId is passed with listall =true - @attr(tags=["advanced"],required_hardware="false") + @attr("simulator_only", tags=["advanced"],required_hardware="false") def test_listVolume_as_regularuser_domainid_accountid_listall_true(self): """ # Test listing of Volumes by passing domainid,account,listall="true" parameter as regular user @@ -2367,7 +2367,7 @@ class TestVolumeList(cloudstackTestCase): True, "Account access check failed!!") - @attr(tags=["advanced"],required_hardware="false") + @attr("simulator_only", tags=["advanced"],required_hardware="false") def test_listVolume_as_regularuser_domainid_accountid_listall_true_rec_true(self): """ # Test listing of Volumes by passing domainid,account,listall="true" and isrecusrive="true" parameter as regular user @@ -2392,7 +2392,7 @@ class TestVolumeList(cloudstackTestCase): True, "Account access check failed!!") - @attr(tags=["advanced"],required_hardware="false") + @attr("simulator_only", tags=["advanced"],required_hardware="false") def test_listVolume_as_regularuser_domainid_accountid_listall_true_rec_false(self): """ # Test listing of Volumes by passing domainid,account,listall="true" and isrecusrive="false" parameter as regular user @@ -2420,7 +2420,7 @@ class TestVolumeList(cloudstackTestCase): ## Regular User - Test cases when account and domainId is passed with listall=false - @attr(tags=["advanced"],required_hardware="false") + @attr("simulator_only", tags=["advanced"],required_hardware="false") def test_listVolume_as_regularuser_domainid_accountid_listall_false(self): """ # Test listing of Volumes by passing domainid,account,listall="false" parameter as regular user @@ -2446,7 +2446,7 @@ class TestVolumeList(cloudstackTestCase): "Account access check failed!!") - @attr(tags=["advanced"],required_hardware="false") + @attr("simulator_only", tags=["advanced"],required_hardware="false") def test_listVolume_as_regularuser_domainid_accountid_listall_false_rec_true(self): # Test listing of Volumes by passing domainid,account,listall="false" and isrecusrive="true" parameter as regular user # Validate that it returns all the Volumes of the account the user belongs to @@ -2469,7 +2469,7 @@ class TestVolumeList(cloudstackTestCase): True, "Account access check failed!!") - @attr(tags=["advanced"],required_hardware="false") + @attr("simulator_only", tags=["advanced"],required_hardware="false") def test_listVolume_as_regularuser_domainid_accountid_listall_false_rec_false(self): """ # Test listing of Volumes by passing domainid,account,listall="false" and isrecusrive="false" parameter as regular user @@ -2497,7 +2497,7 @@ class TestVolumeList(cloudstackTestCase): ## Regular User - Test cases when account and domainId is passed with listall not passed - @attr(tags=["advanced"],required_hardware="false") + @attr("simulator_only", tags=["advanced"],required_hardware="false") def test_listVolume_as_regularuser_domainid_accountid(self): """ # Test listing of Volumes by passing domainid,account parameter as regular user @@ -2523,7 +2523,7 @@ class TestVolumeList(cloudstackTestCase): "Account access check failed!!") - @attr(tags=["advanced"],required_hardware="false") + @attr("simulator_only", tags=["advanced"],required_hardware="false") def test_listVolume_as_regularuser_domainid_accountid_rec_true(self): """ # Test listing of Volumes by passing domainid,account and isrecusrive="true" parameter as regular user @@ -2549,7 +2549,7 @@ class TestVolumeList(cloudstackTestCase): "Account access check failed!!") - @attr(tags=["advanced"],required_hardware="false") + @attr("simulator_only", tags=["advanced"],required_hardware="false") def test_listVolume_as_regularuser_domainid_accountid_rec_false(self): """ # Test listing of Volumes by passing domainid,account isrecusrive="false" parameter as regular user @@ -2576,7 +2576,7 @@ class TestVolumeList(cloudstackTestCase): ## Cross Domain access check - @attr(tags=["advanced"],required_hardware="false") + @attr("simulator_only", tags=["advanced"],required_hardware="false") def test_listVolume_as_regularuser_cross_domainid_accountid(self): """ # Regular User should not be allowed to list Volumes of other accounts in the same domain @@ -2590,7 +2590,7 @@ class TestVolumeList(cloudstackTestCase): except Exception as e: self.debug ("List as Regular User passing domainId and accountId of another account %s" %e) - @attr(tags=["advanced"],required_hardware="false") + @attr("simulator_only", tags=["advanced"],required_hardware="false") def test_listVolume_as_regularuser_cross_domainid(self): """ # Regular User should not be allowed to list Volumes of other accounts in other domains @@ -2605,7 +2605,7 @@ class TestVolumeList(cloudstackTestCase): self.debug ("List as Regular User passing domainId of a domain that user does not belong to %s" %e) - @attr(tags=["advanced"],required_hardware="false") + @attr("simulator_only", tags=["advanced"],required_hardware="false") def test_listVolume_as_domainadmin_cross_domainid_accountid(self): """ # Domain admin should not be allowed to list Volumes of accounts in other domains @@ -2620,7 +2620,7 @@ class TestVolumeList(cloudstackTestCase): self.debug ("List as domain admin passing domainId and accountId of another account %s" %e) - @attr(tags=["advanced"],required_hardware="false") + @attr("simulator_only", tags=["advanced"],required_hardware="false") def test_listVolume_as_domainadmin_cross_domainid(self): """ # Domain admin should not be allowed to list Volumes from other domains @@ -2636,7 +2636,7 @@ class TestVolumeList(cloudstackTestCase): ## List test cases relating to filter - id - @attr(tags=["advanced"],required_hardware="false") + @attr("simulator_only", tags=["advanced"],required_hardware="false") def test_listVolume_by_id_as_domainadmin_owns(self): """ # Domain admin should be able to list Volumes that he owns by passing uuid in "id" parameter @@ -2654,7 +2654,7 @@ class TestVolumeList(cloudstackTestCase): 1, "Domain Admin is not able to list Volumes that belongs to him") - @attr(tags=["advanced"],required_hardware="false") + @attr("simulator_only", tags=["advanced"],required_hardware="false") def test_listVolume_by_id_as_domainadmin_ownedbyusersindomain(self): """ # Domain admin should be able to list Volumes that is owned by any account in his domain by passing uuid in "id" parameter @@ -2672,7 +2672,7 @@ class TestVolumeList(cloudstackTestCase): 1, "Domain Admin is not able to list Volumes from his domain") - @attr(tags=["advanced"],required_hardware="false") + @attr("simulator_only", tags=["advanced"],required_hardware="false") def test_listVolume_by_id_as_domainadmin_ownedbyusersinsubdomain(self): """ # Domain admin should be able to list Volumes that is owned by any account in his sub-domain by passing uuid in "id" parameter @@ -2690,7 +2690,7 @@ class TestVolumeList(cloudstackTestCase): 1, "Domain Admin is not able to list Volumes from his sub domain") - @attr(tags=["advanced"],required_hardware="false") + @attr("simulator_only", tags=["advanced"],required_hardware="false") def test_listVolume_by_id_as_domainadmin_ownedbyusersnotindomain(self): """ # Domain admin should not be able to list Volumes that is owned by account that is not in his domain by passing uuid in "id" parameter @@ -2704,7 +2704,7 @@ class TestVolumeList(cloudstackTestCase): None, "Domain Admin is able to list Volumes from other domains!!!") - @attr(tags=["advanced"],required_hardware="false") + @attr("simulator_only", tags=["advanced"],required_hardware="false") def test_listVolume_by_id_as_domainadmin_ownedbyusersinsubdomain2(self): """ # Domain admin should be able to list Volumes that is owned by account that is in his sub domains by passing uuid in "id" parameter @@ -2723,7 +2723,7 @@ class TestVolumeList(cloudstackTestCase): "Domain Admin is not able to list Volumes from his sub domains") - @attr(tags=["advanced"],required_hardware="false") + @attr("simulator_only", tags=["advanced"],required_hardware="false") def test_listVolume_by_id_as_rootadmin_owns(self): """ # ROOT admin should be able to list Volumes that is owned by accounts in his domain by passing uuid in "id" parameter @@ -2739,7 +2739,7 @@ class TestVolumeList(cloudstackTestCase): 1, "ROOT Admin not able to list Volumes that he owns") - @attr(tags=["advanced"],required_hardware="false") + @attr("simulator_only", tags=["advanced"],required_hardware="false") def test_listVolume_by_id_as_rootadmin_Volumesownedbyothers(self): """ # ROOT admin should be able to list Volumes that is owned by any account by passing uuid in "id" parameter @@ -2763,7 +2763,7 @@ class TestVolumeList(cloudstackTestCase): 1, "ROOT Admin not able to list Volumes from other domains") - @attr(tags=["advanced"],required_hardware="false") + @attr("simulator_only", tags=["advanced"],required_hardware="false") def test_listVolume_by_id_as_user_own(self): """ # Regular user should be able to list Volumes that is owned by him by passing uuid in "id" parameter @@ -2782,7 +2782,7 @@ class TestVolumeList(cloudstackTestCase): 1, "Regular User is not able to list Volumes that he owns") - @attr(tags=["advanced"],required_hardware="false") + @attr("simulator_only", tags=["advanced"],required_hardware="false") def test_listVolume_by_id_as_user_volumefromsamedomaindifferentaccount(self): """ # Regular user should not be able to list Volumes that is owned by different account in the same domain by passing uuid in "id" parameter @@ -2796,7 +2796,7 @@ class TestVolumeList(cloudstackTestCase): None, "Regular User is able to list Volumes from other accounts") - @attr(tags=["advanced"],required_hardware="false") + @attr("simulator_only", tags=["advanced"],required_hardware="false") def test_listVolume_by_id_as_user_volumefromotherdomain(self): """ # Regular user should not be able to list Volumes that is owned by different account in the different domain by passing uuid in "id" parameter diff --git a/test/integration/component/test_acl_sharednetwork.py b/test/integration/component/test_acl_sharednetwork.py index 5d57f301ba5..b74405e79a4 100644 --- a/test/integration/component/test_acl_sharednetwork.py +++ b/test/integration/component/test_acl_sharednetwork.py @@ -343,7 +343,7 @@ class TestSharedNetwork(cloudstackTestCase): ## Test cases relating to deploying Virtual Machine in shared network with scope=all - @attr(tags=["advanced"],required_hardware="false") + @attr("simulator_only",tags=["advanced"],required_hardware="false") def test_deployVM_in_sharedNetwork_scope_all_domainuser(self): """ Validate that regular user in a domain is allowed to deploy VM in a shared network created with scope="all" @@ -369,7 +369,7 @@ class TestSharedNetwork(cloudstackTestCase): "User in a domain under ROOT failed to deploy VM in a shared network with scope=all") - @attr(tags=["advanced"],required_hardware="false") + @attr("simulator_only",tags=["advanced"],required_hardware="false") def test_deployVM_in_sharedNetwork_scope_all_domainadminuser(self): """ Validate that regular user in "ROOT" domain is allowed to deploy VM in a shared network created with scope="all" @@ -396,7 +396,7 @@ class TestSharedNetwork(cloudstackTestCase): "Admin User in a domain under ROOT failed to deploy VM in a shared network with scope=all") - @attr(tags=["advanced"],required_hardware="false") + @attr("simulator_only",tags=["advanced"],required_hardware="false") def test_deployVM_in_sharedNetwork_scope_all_subdomainuser(self): """ Validate that regular user in any subdomain is allowed to deploy VM in a shared network created with scope="all" @@ -421,7 +421,7 @@ class TestSharedNetwork(cloudstackTestCase): True, "User in a domain under ROOT failed to deploy VM in a shared network with scope=all") - @attr(tags=["advanced"],required_hardware="false") + @attr("simulator_only",tags=["advanced"],required_hardware="false") def test_deployVM_in_sharedNetwork_scope_all_subdomainadminuser(self): """ Validate that regular user in a subdomain under ROOT is allowed to deploy VM in a shared network created with scope="all" @@ -447,7 +447,7 @@ class TestSharedNetwork(cloudstackTestCase): "Admin User in a domain under ROOT failed to deploy VM in a shared network with scope=all") - @attr(tags=["advanced"],required_hardware="false") + @attr("simulator_only",tags=["advanced"],required_hardware="false") def test_deployVM_in_sharedNetwork_scope_all_ROOTuser(self): """ Validate that regular user in ROOT domain is allowed to deploy VM in a shared network created with scope="all" @@ -472,7 +472,7 @@ class TestSharedNetwork(cloudstackTestCase): True, "User in ROOT domain failed to deploy VM in a shared network with scope=all") - @attr(tags=["advanced"],required_hardware="false") + @attr("simulator_only",tags=["advanced"],required_hardware="false") def test_deployVM_in_sharedNetwork_scope_all_ROOTadmin(self): """ Validate that admin user in ROOT domain is allowed to deploy VM in a shared network created with scope="all" @@ -498,7 +498,7 @@ class TestSharedNetwork(cloudstackTestCase): ## Test cases relating to deploying Virtual Machine in shared network with scope=Domain and no subdomain access - @attr(tags=["advanced"],required_hardware="false") + @attr("simulator_only",tags=["advanced"],required_hardware="false") def test_deployVM_in_sharedNetwork_scope_domain_nosubdomainaccess_domainuser(self): """ Validate that regular user in a domain is allowed to deploy VM in a shared network created with scope="domain" and no subdomain access @@ -525,7 +525,7 @@ class TestSharedNetwork(cloudstackTestCase): "User in a domain that has a shared network with no subdomain access failed to deploy VM in a shared network with scope=domain with no subdomain access") - @attr(tags=["advanced"],required_hardware="false") + @attr("simulator_only",tags=["advanced"],required_hardware="false") def test_deployVM_in_sharedNetwork_scope_domain_nosubdomainaccess_domainadminuser(self): """ Validate that admin user in a domain is allowed to deploy VM in a shared network created with scope="domain" and no subdomain access @@ -551,7 +551,7 @@ class TestSharedNetwork(cloudstackTestCase): True, "Admin User in a domain that has a shared network with no subdomain access failed to deploy VM in a shared network with scope=domain with no subdomain access") - @attr(tags=["advanced"],required_hardware="false") + @attr("simulator_only",tags=["advanced"],required_hardware="false") def test_deployVM_in_sharedNetwork_scope_domain_nosubdomainaccess_subdomainuser(self): """ Validate that regular user in a subdomain is NOT allowed to deploy VM in a shared network created with scope="domain" and no subdomain access @@ -578,7 +578,7 @@ class TestSharedNetwork(cloudstackTestCase): if not CloudstackAclException.verifyMsginException(e,CloudstackAclException.NOT_AVAILABLE_IN_DOMAIN): self.fail("Error message validation failed when Subdomain user tries to deploy VM in a shared network with scope=domain with no subdomain access") - @attr(tags=["advanced"],required_hardware="false") + @attr("simulator_only",tags=["advanced"],required_hardware="false") def test_deployVM_in_sharedNetwork_scope_domain_nosubdomainaccess_subdomainadminuser(self): """ Validate that admin user in a subdomain is NOT allowed to deploy VM in a shared network created with scope="domain" and no subdomain access @@ -607,7 +607,7 @@ class TestSharedNetwork(cloudstackTestCase): - @attr(tags=["advanced"],required_hardware="false") + @attr("simulator_only",tags=["advanced"],required_hardware="false") def test_deployVM_in_sharedNetwork_scope_domain_nosubdomainaccess_parentdomainuser(self): """ Validate that user in the parent domain is NOT allowed to deploy VM in a shared network created with scope="domain" and no subdomain access @@ -635,7 +635,7 @@ class TestSharedNetwork(cloudstackTestCase): self.fail("Error message validation failed when Parent domain user tries to deploy VM in a shared network with scope=domain with no subdomain access") - @attr(tags=["advanced"],required_hardware="false") + @attr("simulator_only",tags=["advanced"],required_hardware="false") def test_deployVM_in_sharedNetwork_scope_domain_nosubdomainaccess_parentdomainadminuser(self): """ Validate that admin user in the parent domain is NOT allowed to deploy VM in a shared network created with scope="domain" and no subdomain access @@ -664,7 +664,7 @@ class TestSharedNetwork(cloudstackTestCase): - @attr(tags=["advanced"],required_hardware="false") + @attr("simulator_only",tags=["advanced"],required_hardware="false") def test_deployVM_in_sharedNetwork_scope_domain_nosubdomainaccess_ROOTuser(self): """ Validate that user in ROOT domain is NOT allowed to deploy VM in a shared network created with scope="domain" and no subdomain access @@ -693,7 +693,7 @@ class TestSharedNetwork(cloudstackTestCase): - @attr(tags=["advanced"],required_hardware="false") + @attr("simulator_only",tags=["advanced"],required_hardware="false") def test_deployVM_in_sharedNetwork_scope_domain_nosubdomainaccess_ROOTadmin(self): """ Validate that admin in ROOT domain is NOT allowed to deploy VM in a shared network created with scope="domain" and no subdomain access @@ -724,7 +724,7 @@ class TestSharedNetwork(cloudstackTestCase): ## Test cases relating to deploying Virtual Machine in shared network with scope=Domain and with subdomain access - @attr(tags=["advanced"],required_hardware="false") + @attr("simulator_only",tags=["advanced"],required_hardware="false") def test_deployVM_in_sharedNetwork_scope_domain_withsubdomainaccess_domainuser(self): """ Validate that regular user in a domain is allowed to deploy VM in a shared network created with scope="domain" and with subdomain access for the domain @@ -751,7 +751,7 @@ class TestSharedNetwork(cloudstackTestCase): "User in a domain that has a shared network with subdomain access failed to deploy VM in a shared network with scope=domain with no subdomain access") - @attr(tags=["advanced"],required_hardware="false") + @attr("simulator_only",tags=["advanced"],required_hardware="false") def test_deployVM_in_sharedNetwork_scope_domain_withsubdomainaccess_domainadminuser(self): """ Validate that admin user in a domain is allowed to deploy VM in a shared network created with scope="domain" and with subdomain access for the domain @@ -777,7 +777,7 @@ class TestSharedNetwork(cloudstackTestCase): True, "Admin User in a domain that has a shared network with subdomain access failed to deploy VM in a shared network with scope=domain with no subdomain access") - @attr(tags=["advanced"],required_hardware="false") + @attr("simulator_only",tags=["advanced"],required_hardware="false") def test_deployVM_in_sharedNetwork_scope_domain_withsubdomainaccess_subdomainuser(self): """ Validate that regular user in a subdomain is allowed to deploy VM in a shared network created with scope="domain" and with subdomain access for the parent domain @@ -802,7 +802,7 @@ class TestSharedNetwork(cloudstackTestCase): True, "User in a subdomain that has a shared network with subdomain access failed to deploy VM in a shared network with scope=domain with no subdomain access") - @attr(tags=["advanced"],required_hardware="false") + @attr("simulator_only",tags=["advanced"],required_hardware="false") def test_deployVM_in_sharedNetwork_scope_domain_withsubdomainaccess_subdomainadminuser(self): """ Validate that an admin user in a subdomain is allowed to deploy VM in a shared network created with scope="domain" and with subdomain access for the parent domain @@ -827,7 +827,7 @@ class TestSharedNetwork(cloudstackTestCase): True, "Admin User in a subdomain that has a shared network with subdomain access failed to deploy VM in a shared network with scope=domain with no subdomain access") - @attr(tags=["advanced"],required_hardware="false") + @attr("simulator_only",tags=["advanced"],required_hardware="false") def test_deployVM_in_sharedNetwork_scope_domain_withsubdomainaccess_parentdomainuser(self): """ Validate that regular user in a parent domain is NOT allowed to deploy VM in a shared network created with scope="domain" and with subdomain access for the domain @@ -855,7 +855,7 @@ class TestSharedNetwork(cloudstackTestCase): self.fail("Error message validation failed when Parent domain's user tries to deploy VM in a shared network with scope=domain with subdomain access ") - @attr(tags=["advanced"],required_hardware="false") + @attr("simulator_only",tags=["advanced"],required_hardware="false") def test_deployVM_in_sharedNetwork_scope_domain_withsubdomainaccess_parentdomainadminuser(self): """ Validate that admin user in a parent domain is NOT allowed to deploy VM in a shared network created with scope="domain" and with subdomain access for any domain @@ -884,7 +884,7 @@ class TestSharedNetwork(cloudstackTestCase): - @attr(tags=["advanced"],required_hardware="false") + @attr("simulator_only",tags=["advanced"],required_hardware="false") def test_deployVM_in_sharedNetwork_scope_domain_withsubdomainaccess_ROOTuser(self): """ Validate that regular user in ROOT domain is NOT allowed to deploy VM in a shared network created with scope="domain" and with subdomain access for any domain @@ -912,7 +912,7 @@ class TestSharedNetwork(cloudstackTestCase): self.fail("Error message validation failed when ROOT domain's user tries to deploy VM in a shared network with scope=domain with subdomain access") - @attr(tags=["advanced"],required_hardware="false") + @attr("simulator_only",tags=["advanced"],required_hardware="false") def test_deployVM_in_sharedNetwork_scope_domain_withsubdomainaccess_ROOTadmin(self): """ Validate that admin user in ROOT domain is NOT allowed to deploy VM in a shared network created with scope="domain" and with subdomain access for any domain @@ -943,7 +943,7 @@ class TestSharedNetwork(cloudstackTestCase): ## Test cases relating to deploying Virtual Machine in shared network with scope=account - @attr(tags=["advanced"],required_hardware="false") + @attr("simulator_only",tags=["advanced"],required_hardware="false") def test_deployVM_in_sharedNetwork_scope_account_domainuser(self): """ Validate that any other user in same domain is NOT allowed to deploy VM in a shared network created with scope="account" for an account @@ -972,7 +972,7 @@ class TestSharedNetwork(cloudstackTestCase): - @attr(tags=["advanced"],required_hardware="false") + @attr("simulator_only",tags=["advanced"],required_hardware="false") def test_deployVM_in_sharedNetwork_scope_account_domainadminuser(self): """ Validate that an admin user under the same domain but belonging to a different account is allowed to deploy VM in a shared network created with scope="account" for an account @@ -1000,7 +1000,7 @@ class TestSharedNetwork(cloudstackTestCase): self.fail("Error message validation failed when User from same domain but different account tries to deploy VM in a shared network with scope=account") - @attr(tags=["advanced"],required_hardware="false") + @attr("simulator_only",tags=["advanced"],required_hardware="false") def test_deployVM_in_sharedNetwork_scope_account_user(self): """ Validate that regular user in the account is allowed to deploy VM in a shared network created with scope="account" for an account @@ -1026,7 +1026,7 @@ class TestSharedNetwork(cloudstackTestCase): True, "User in the account that has a shared network with scope=account failed to deploy a VM in this shared network") - @attr(tags=["advanced"],required_hardware="false") + @attr("simulator_only",tags=["advanced"],required_hardware="false") def test_deployVM_in_sharedNetwork_scope_account_differentdomain(self): """ Validate that regular user from a domain different from that of the account is NOT allowed to deploy VM in a shared network created with scope="account" for an account @@ -1055,7 +1055,7 @@ class TestSharedNetwork(cloudstackTestCase): - @attr(tags=["advanced"],required_hardware="false") + @attr("simulator_only",tags=["advanced"],required_hardware="false") def test_deployVM_in_sharedNetwork_scope_account_ROOTuser(self): """ Validate that user in ROOT domain is NOT allowed to deploy VM in a shared network created with scope="account" for an account @@ -1083,7 +1083,7 @@ class TestSharedNetwork(cloudstackTestCase): self.fail("Error message validation failed when ROOT domain's user tries to deploy VM in a shared network with scope=account ") - @attr(tags=["advanced"],required_hardware="false") + @attr("simulator_only",tags=["advanced"],required_hardware="false") def test_deployVM_in_sharedNetwork_scope_account_ROOTadmin(self): """ Validate that admin user in ROOT domain is NOT allowed to deploy VM in a shared network created with scope="account" for an account diff --git a/test/integration/component/test_acl_sharednetwork_deployVM-impersonation.py b/test/integration/component/test_acl_sharednetwork_deployVM-impersonation.py index a05a2d89bb4..09347bac6be 100644 --- a/test/integration/component/test_acl_sharednetwork_deployVM-impersonation.py +++ b/test/integration/component/test_acl_sharednetwork_deployVM-impersonation.py @@ -342,7 +342,7 @@ class TestSharedNetworkImpersonation(cloudstackTestCase): ## Test cases relating to deploying Virtual Machine as ROOT admin for other users in shared network with scope=all - @attr(tags=["advanced"],required_hardware="false") + @attr("simulator_only",tags=["advanced"],required_hardware="false") def test_deployVM_in_sharedNetwork_as_admin_scope_all_domainuser(self): """ Valiate that ROOT admin is able to deploy a VM for other users in a shared network with scope=all @@ -371,7 +371,7 @@ class TestSharedNetworkImpersonation(cloudstackTestCase): "ROOT admin is not able to deploy a VM for other users in a shared network with scope=all") - @attr(tags=["advanced"],required_hardware="false") + @attr("simulator_only",tags=["advanced"],required_hardware="false") def test_deployVM_in_sharedNetwork_as_admin_scope_all_domainadminuser(self): """ Valiate that ROOT admin is able to deploy a VM for a domain admin users in a shared network with scope=all @@ -400,7 +400,7 @@ class TestSharedNetworkImpersonation(cloudstackTestCase): "ROOT admin is not able to deploy a VM for a domain admin users in a shared network with scope=all") - @attr(tags=["advanced"],required_hardware="false") + @attr("simulator_only",tags=["advanced"],required_hardware="false") def test_deployVM_in_sharedNetwork_as_admin_scope_all_subdomainuser(self): """ Valiate that ROOT admin is able to deploy a VM for any user in a subdomain in a shared network with scope=all @@ -426,7 +426,7 @@ class TestSharedNetworkImpersonation(cloudstackTestCase): True, "ROOT admin is not able to deploy a VM for any user in a subdomain in a shared network with scope=all") - @attr(tags=["advanced"],required_hardware="false") + @attr("simulator_only",tags=["advanced"],required_hardware="false") def test_deployVM_in_sharedNetwork_as_admin_scope_all_subdomainadminuser(self): """ Valiate that ROOT admin is able to deploy a VM for admin user in a domain in a shared network with scope=all @@ -453,7 +453,7 @@ class TestSharedNetworkImpersonation(cloudstackTestCase): True, "ROOT admin is not able to deploy a VM for admin user in a domain in a shared network with scope=all") - @attr(tags=["advanced"],required_hardware="false") + @attr("simulator_only",tags=["advanced"],required_hardware="false") def test_deployVM_in_sharedNetwork_as_admin_scope_all_ROOTuser(self): """ Valiate that ROOT admin is able to deploy a VM for user in ROOT domain in a shared network with scope=all @@ -482,7 +482,7 @@ class TestSharedNetworkImpersonation(cloudstackTestCase): ## Test cases relating to deploying Virtual Machine as ROOT admin for other users in shared network with scope=Domain and no subdomain access - @attr(tags=["advanced"],required_hardware="false") + @attr("simulator_only",tags=["advanced"],required_hardware="false") def test_deployVM_in_sharedNetwork_as_admin_scope_domain_nosubdomainaccess_domainuser(self): """ Valiate that ROOT admin is able to deploy a VM for domain user in a shared network with scope=domain with no subdomain access @@ -511,7 +511,7 @@ class TestSharedNetworkImpersonation(cloudstackTestCase): "ROOT admin is not able to deploy a VM for domain user in a shared network with scope=domain with no subdomain access") - @attr(tags=["advanced"],required_hardware="false") + @attr("simulator_only",tags=["advanced"],required_hardware="false") def test_deployVM_in_sharedNetwork_as_admin_scope_domain_nosubdomainaccess_domainadminuser(self): """ Valiate that ROOT admin is able to deploy a VM for domain admin user in a shared network with scope=domain with no subdomain access @@ -539,7 +539,7 @@ class TestSharedNetworkImpersonation(cloudstackTestCase): True, "ROOT admin is not able to deploy a VM for domain admin user in a shared network with scope=domain with no subdomain access") - @attr(tags=["advanced"],required_hardware="false") + @attr("simulator_only",tags=["advanced"],required_hardware="false") def test_deployVM_in_sharedNetwork_as_admin_scope_domain_nosubdomainaccess_subdomainuser(self): """ Valiate that ROOT admin is NOT able to deploy a VM for sub domain user in a shared network with scope=domain with no subdomain access @@ -570,7 +570,7 @@ class TestSharedNetworkImpersonation(cloudstackTestCase): self.fail("Error message validation failed when ROOT admin tries to deploy a VM for sub domain user in a shared network with scope=domain with no subdomain access ") - @attr(tags=["advanced"],required_hardware="false") + @attr("simulator_only",tags=["advanced"],required_hardware="false") def test_deployVM_in_sharedNetwork_as_admin_scope_domain_nosubdomainaccess_subdomainadminuser(self): """ Valiate that ROOT admin is NOT able to deploy a VM for sub domain admin user in a shared network with scope=domain with no subdomain access @@ -600,7 +600,7 @@ class TestSharedNetworkImpersonation(cloudstackTestCase): self.fail("Error message validation failed when ROOT admin tries to deploy a VM for sub domain admin user in a shared network with scope=domain with no subdomain access") - @attr(tags=["advanced"],required_hardware="false") + @attr("simulator_only",tags=["advanced"],required_hardware="false") def test_deployVM_in_sharedNetwork_as_admin_scope_domain_nosubdomainaccess_parentdomainuser(self): """ Valiate that ROOT admin is NOT able to deploy a VM for parent domain user in a shared network with scope=domain with no subdomain access @@ -630,7 +630,7 @@ class TestSharedNetworkImpersonation(cloudstackTestCase): self.fail("Error message validation failed when ROOT admin tries to deploy a VM for parent domain user in a shared network with scope=domain with no subdomain access") - @attr(tags=["advanced"],required_hardware="false") + @attr("simulator_only",tags=["advanced"],required_hardware="false") def test_deployVM_in_sharedNetwork_as_admin_scope_domain_nosubdomainaccess_parentdomainadminuser(self): """ Valiate that ROOT admin is NOT able to deploy a VM for parent domain admin user in a shared network with scope=domain with no subdomain access @@ -661,7 +661,7 @@ class TestSharedNetworkImpersonation(cloudstackTestCase): - @attr(tags=["advanced"],required_hardware="false") + @attr("simulator_only",tags=["advanced"],required_hardware="false") def test_deployVM_in_sharedNetwork_as_admin_scope_domain_nosubdomainaccess_ROOTuser(self): """ Valiate that ROOT admin is NOT able to deploy a VM for parent domain admin user in a shared network with scope=domain with no subdomain access @@ -692,7 +692,7 @@ class TestSharedNetworkImpersonation(cloudstackTestCase): ## Test cases relating to deploying Virtual Machine as ROOT admin for other users in shared network with scope=Domain and with subdomain access - @attr(tags=["advanced"],required_hardware="false") + @attr("simulator_only",tags=["advanced"],required_hardware="false") def test_deployVM_in_sharedNetwork_as_admin_scope_domain_withsubdomainaccess_domainuser(self): """ Valiate that ROOT admin is able to deploy a VM for domain user in a shared network with scope=domain with subdomain access @@ -721,7 +721,7 @@ class TestSharedNetworkImpersonation(cloudstackTestCase): "ROOT admin is NOT able to deploy a VM for domain user in a shared network with scope=domain with subdomain access") - @attr(tags=["advanced"],required_hardware="false") + @attr("simulator_only",tags=["advanced"],required_hardware="false") def test_deployVM_in_sharedNetwork_as_admin_scope_domain_withsubdomainaccess_domainadminuser(self): """ Valiate that ROOT admin is able to deploy a VM for domain admin user in a shared network with scope=domain with subdomain access @@ -749,7 +749,7 @@ class TestSharedNetworkImpersonation(cloudstackTestCase): True, "ROOT admin is not able to deploy a VM for domain admin user in a shared network with scope=domain with subdomain access") - @attr(tags=["advanced"],required_hardware="false") + @attr("simulator_only",tags=["advanced"],required_hardware="false") def test_deployVM_in_sharedNetwork_as_admin_scope_domain_withsubdomainaccess_subdomainuser(self): """ Valiate that ROOT admin is able to deploy a VM for subdomain user in a shared network with scope=domain with subdomain access @@ -776,7 +776,7 @@ class TestSharedNetworkImpersonation(cloudstackTestCase): True, "ROOT admin is not able to deploy a VM for subdomain user in a shared network with scope=domain with subdomain access") - @attr(tags=["advanced"],required_hardware="false") + @attr("simulator_only",tags=["advanced"],required_hardware="false") def test_deployVM_in_sharedNetwork_as_admin_scope_domain_withsubdomainaccess_subdomainadminuser(self): """ Valiate that ROOT admin is able to deploy a VM for subdomain admin user in a shared network with scope=domain with subdomain access @@ -803,7 +803,7 @@ class TestSharedNetworkImpersonation(cloudstackTestCase): True, "ROOT admin is not able to deploy a VM for subdomain admin user in a shared network with scope=domain with subdomain access") - @attr(tags=["advanced"],required_hardware="false") + @attr("simulator_only",tags=["advanced"],required_hardware="false") def test_deployVM_in_sharedNetwork_as_admin_scope_domain_withsubdomainaccess_parentdomainuser(self): """ Valiate that ROOT admin is NOT able to deploy a VM for parent domain user in a shared network with scope=domain with subdomain access @@ -832,7 +832,7 @@ class TestSharedNetworkImpersonation(cloudstackTestCase): if not CloudstackAclException.verifyMsginException(e,CloudstackAclException.NOT_AVAILABLE_IN_DOMAIN): self.fail("Error message validation failed when ROOT admin tries to deploy a VM for parent domain user in a shared network with scope=domain with subdomain access ") - @attr(tags=["advanced"],required_hardware="false") + @attr("simulator_only",tags=["advanced"],required_hardware="false") def test_deployVM_in_sharedNetwork_as_admin_scope_domain_withsubdomainaccess_parentdomainadminuser(self): """ Valiate that ROOT admin is NOT able to deploy a VM for parent domain admin user in a shared network with scope=domain with subdomain access @@ -862,7 +862,7 @@ class TestSharedNetworkImpersonation(cloudstackTestCase): self.fail("Error message validation failed when ROOT admin tries to deploy a VM for parent domain admin user in a shared network with scope=domain with subdomain access ") - @attr(tags=["advanced"],required_hardware="false") + @attr("simulator_only",tags=["advanced"],required_hardware="false") def test_deployVM_in_sharedNetwork_as_admin_scope_domain_withsubdomainaccess_ROOTuser(self): """ Valiate that ROOT admin is NOT able to deploy a VM for user in ROOT domain in a shared network with scope=domain with subdomain access @@ -894,7 +894,7 @@ class TestSharedNetworkImpersonation(cloudstackTestCase): ## Test cases relating to deploying Virtual Machine as ROOT admin for other users in shared network with scope=account - @attr(tags=["advanced"],required_hardware="false") + @attr("simulator_only",tags=["advanced"],required_hardware="false") def test_deployVM_in_sharedNetwork_as_admin_scope_account_domainuser(self): """ Valiate that ROOT admin is NOT able to deploy a VM for user in the same domain but in a different account in a shared network with scope=account @@ -924,7 +924,7 @@ class TestSharedNetworkImpersonation(cloudstackTestCase): self.fail("Error message validation failed when ROOT admin tries to deploy a VM for user in the same domain but in a different account in a shared network with scope=account") - @attr(tags=["advanced"],required_hardware="false") + @attr("simulator_only",tags=["advanced"],required_hardware="false") def test_deployVM_in_sharedNetwork_as_admin_scope_account_domainadminuser(self): """ Valiate that ROOT admin is NOT able to deploy a VM for admin user in the same domain but in a different account in a shared network with scope=account @@ -953,7 +953,7 @@ class TestSharedNetworkImpersonation(cloudstackTestCase): if not CloudstackAclException.verifyMsginException(e,CloudstackAclException.UNABLE_TO_USE_NETWORK): self.fail("Error message validation failed when ROOT admin tries to deploy a VM for admin user in the same domain but in a different account in a shared network with scope=account") - @attr(tags=["advanced"],required_hardware="false") + @attr("simulator_only",tags=["advanced"],required_hardware="false") def test_deployVM_in_sharedNetwork_as_admin_scope_account_user(self): """ Valiate that ROOT admin is able to deploy a VM for regular user in a shared network with scope=account @@ -981,7 +981,7 @@ class TestSharedNetworkImpersonation(cloudstackTestCase): True, "ROOT admin is not able to deploy a VM for regular user in a shared network with scope=account") - @attr(tags=["advanced"],required_hardware="false") + @attr("simulator_only",tags=["advanced"],required_hardware="false") def test_deployVM_in_sharedNetwork_as_admin_scope_account_differentdomain(self): """ Valiate that ROOT admin is NOT able to deploy a VM for a admin user in a shared network with scope=account which the admin user does not have access to @@ -1011,7 +1011,7 @@ class TestSharedNetworkImpersonation(cloudstackTestCase): self.fail("Error message validation failed when ROOT admin tries to deploy a VM for a admin user in a shared network with scope=account which the admin user does not have access to ") - @attr(tags=["advanced"],required_hardware="false") + @attr("simulator_only",tags=["advanced"],required_hardware="false") def test_deployVM_in_sharedNetwork_as_admin_scope_account_ROOTuser(self): """ Valiate that ROOT admin is NOT able to deploy a VM for a user in ROOT domain in a shared network with scope=account which the user does not have access to @@ -1042,7 +1042,7 @@ class TestSharedNetworkImpersonation(cloudstackTestCase): ## Test cases relating to deploying Virtual Machine as Domain admin for other users in shared network with scope=all - @attr(tags=["advanced"],required_hardware="false") + @attr("simulator_only",tags=["advanced"],required_hardware="false") def test_deployVM_in_sharedNetwork_as_domainadmin_scope_all_domainuser(self): """ Valiate that Domain admin is able to deploy a VM for a domain user in a shared network with scope=all @@ -1070,7 +1070,7 @@ class TestSharedNetworkImpersonation(cloudstackTestCase): "Domain admin is not able to deploy a VM for a domain user in a shared network with scope=all") - @attr(tags=["advanced"],required_hardware="false") + @attr("simulator_only",tags=["advanced"],required_hardware="false") def test_deployVM_in_sharedNetwork_as_domainadmin_scope_all_domainadminuser(self): """ Valiate that Domain admin is able to deploy a VM for a domain admin user in a shared network with scope=all @@ -1098,7 +1098,7 @@ class TestSharedNetworkImpersonation(cloudstackTestCase): "Domain admin is not able to deploy a VM for a domain admin user in a shared network with scope=all") - @attr(tags=["advanced"],required_hardware="false") + @attr("simulator_only",tags=["advanced"],required_hardware="false") def test_deployVM_in_sharedNetwork_as_domainadmin_scope_all_subdomainuser(self): """ Valiate that Domain admin is able to deploy a VM for a sub domain user in a shared network with scope=all @@ -1124,7 +1124,7 @@ class TestSharedNetworkImpersonation(cloudstackTestCase): True, "Domain admin is not able to deploy a VM for a sub domain user in a shared network with scope=all") - @attr(tags=["advanced"],required_hardware="false") + @attr("simulator_only",tags=["advanced"],required_hardware="false") def test_deployVM_in_sharedNetwork_as_domainadmin_scope_all_subdomainadminuser(self): """ Valiate that Domain admin is able to deploy a VM for a sub domain admin user in a shared network with scope=all @@ -1150,7 +1150,7 @@ class TestSharedNetworkImpersonation(cloudstackTestCase): True, "Domain admin is not able to deploy a VM for a sub domain admin user in a shared network with scope=all") - @attr(tags=["advanced"],required_hardware="false") + @attr("simulator_only",tags=["advanced"],required_hardware="false") def test_deployVM_in_sharedNetwork_as_domainadmin_scope_all_ROOTuser(self): """ Valiate that Domain admin is NOT able to deploy a VM for user in ROOT domain in a shared network with scope=all @@ -1179,7 +1179,7 @@ class TestSharedNetworkImpersonation(cloudstackTestCase): self.fail("Error message validation failed when Domain admin is NOT able to deploy a VM for user in ROOT domain in a shared network with scope=all") - @attr(tags=["advanced"],required_hardware="false") + @attr("simulator_only",tags=["advanced"],required_hardware="false") def test_deployVM_in_sharedNetwork_as_domainadmin_scope_all_crossdomainuser(self): """ Valiate that Domain admin is NOT able to deploy a VM for user in other domain in a shared network with scope=all @@ -1209,7 +1209,7 @@ class TestSharedNetworkImpersonation(cloudstackTestCase): ## Test cases relating to deploying Virtual Machine as Domain admin for other users in shared network with scope=Domain and no subdomain access - @attr(tags=["advanced"],required_hardware="false") + @attr("simulator_only",tags=["advanced"],required_hardware="false") def test_deployVM_in_sharedNetwork_as_domainadmin_scope_domain_nosubdomainaccess_domainuser(self): """ Valiate that Domain admin is able to deploy a VM for domain user in a shared network with scope=Domain and no subdomain access @@ -1237,7 +1237,7 @@ class TestSharedNetworkImpersonation(cloudstackTestCase): "Domain admin is not able to deploy a VM for domain user in a shared network with scope=Domain and no subdomain access") - @attr(tags=["advanced"],required_hardware="false") + @attr("simulator_only",tags=["advanced"],required_hardware="false") def test_deployVM_in_sharedNetwork_as_domainadmin_scope_domain_nosubdomainaccess_domainadminuser(self): """ Valiate that Domain admin is able to deploy a VM for domain admin user in a shared network with scope=Domain and no subdomain access @@ -1265,7 +1265,7 @@ class TestSharedNetworkImpersonation(cloudstackTestCase): True, "Admin User in a domain that has a shared network with no subdomain access failed to Deploy VM in a shared network with scope=domain with no subdomain access") - @attr(tags=["advanced"],required_hardware="false") + @attr("simulator_only",tags=["advanced"],required_hardware="false") def test_deployVM_in_sharedNetwork_as_domainadmin_scope_domain_nosubdomainaccess_subdomainuser(self): """ Valiate that Domain admin is NOT able to deploy a VM for sub domain user in a shared network with scope=Domain and no subdomain access @@ -1295,7 +1295,7 @@ class TestSharedNetworkImpersonation(cloudstackTestCase): self.fail("Error message validation failed when Domain admin tries to deploy a VM for sub domain user in a shared network with scope=Domain and no subdomain access") - @attr(tags=["advanced"],required_hardware="false") + @attr("simulator_only",tags=["advanced"],required_hardware="false") def test_deployVM_in_sharedNetwork_as_domainadmin_scope_domain_nosubdomainaccess_subdomainadminuser(self): """ Valiate that Domain admin is NOT able to deploy a VM for sub domain admin user in a shared network with scope=Domain and no subdomain access @@ -1325,7 +1325,7 @@ class TestSharedNetworkImpersonation(cloudstackTestCase): self.fail("Error message validation failed when Domain admin tries to deploy a VM for sub domain admin user in a shared network with scope=Domain and no subdomain access ") - @attr(tags=["advanced"],required_hardware="false") + @attr("simulator_only",tags=["advanced"],required_hardware="false") def test_deployVM_in_sharedNetwork_as_domainadmin_scope_domain_nosubdomainaccess_parentdomainuser(self): """ Valiate that Domain admin is NOT able to deploy a VM for parent domain user in a shared network with scope=Domain and no subdomain access @@ -1355,7 +1355,7 @@ class TestSharedNetworkImpersonation(cloudstackTestCase): self.fail("Error message validation failed when Domain admin tries to deploy a VM for parent domain user in a shared network with scope=Domain and no subdomain access ") - @attr(tags=["advanced"],required_hardware="false") + @attr("simulator_only",tags=["advanced"],required_hardware="false") def test_deployVM_in_sharedNetwork_as_domainadmin_scope_domain_nosubdomainaccess_parentdomainadminuser(self): """ Valiate that Domain admin is NOT able to deploy a VM for parent domain admin user in a shared network with scope=Domain and no subdomain access @@ -1386,7 +1386,7 @@ class TestSharedNetworkImpersonation(cloudstackTestCase): - @attr(tags=["advanced"],required_hardware="false") + @attr("simulator_only",tags=["advanced"],required_hardware="false") def test_deployVM_in_sharedNetwork_as_domainadmin_scope_domain_nosubdomainaccess_ROOTuser(self): """ Valiate that Domain admin is NOT able to deploy a VM for user in ROOT domain in a shared network with scope=Domain and no subdomain access @@ -1418,7 +1418,7 @@ class TestSharedNetworkImpersonation(cloudstackTestCase): ## Test cases relating to deploying Virtual Machine as Domain admin for other users in shared network with scope=Domain and with subdomain access - @attr(tags=["advanced"],required_hardware="false") + @attr("simulator_only",tags=["advanced"],required_hardware="false") def test_deployVM_in_sharedNetwork_as_domainadmin_scope_domain_withsubdomainaccess_domainuser(self): """ Valiate that Domain admin is able to deploy a VM for regular user in domain in a shared network with scope=Domain and subdomain access @@ -1446,7 +1446,7 @@ class TestSharedNetworkImpersonation(cloudstackTestCase): "Domain admin is not able to deploy a VM for regular user in domain in a shared network with scope=Domain and subdomain access") - @attr(tags=["advanced"],required_hardware="false") + @attr("simulator_only",tags=["advanced"],required_hardware="false") def test_deployVM_in_sharedNetwork_as_domainadmin_scope_domain_withsubdomainaccess_domainadminuser(self): """ Valiate that Domain admin is able to deploy a VM for admin user in domain in a shared network with scope=Domain and subdomain access @@ -1473,7 +1473,7 @@ class TestSharedNetworkImpersonation(cloudstackTestCase): True, "Domain admin is not able to deploy a VM for admin user in domain in a shared network with scope=Domain and subdomain access") - @attr(tags=["advanced"],required_hardware="false") + @attr("simulator_only",tags=["advanced"],required_hardware="false") def test_deployVM_in_sharedNetwork_as_domainadmin_scope_domain_withsubdomainaccess_subdomainuser(self): """ Valiate that Domain admin is able to deploy a VM for regular user in subdomain in a shared network with scope=Domain and subdomain access @@ -1499,7 +1499,7 @@ class TestSharedNetworkImpersonation(cloudstackTestCase): True, "Domain admin is not able to deploy a VM for regular user in subdomain in a shared network with scope=Domain and subdomain access") - @attr(tags=["advanced"],required_hardware="false") + @attr("simulator_only",tags=["advanced"],required_hardware="false") def test_deployVM_in_sharedNetwork_as_domainadmin_scope_domain_withsubdomainaccess_subdomainadminuser(self): """ Valiate that Domain admin is able to deploy a VM for admin user in subdomain in a shared network with scope=Domain and subdomain access @@ -1525,7 +1525,7 @@ class TestSharedNetworkImpersonation(cloudstackTestCase): True, "Domain admin is not able to deploy a VM for admin user in subdomain in a shared network with scope=Domain and subdomain access") - @attr(tags=["advanced"],required_hardware="false") + @attr("simulator_only",tags=["advanced"],required_hardware="false") def test_deployVM_in_sharedNetwork_as_domainadmin_scope_domain_withsubdomainaccess_parentdomainuser(self): """ Valiate that Domain admin is NOT able to deploy a VM for regular user in parent domain in a shared network with scope=Domain and subdomain access @@ -1553,7 +1553,7 @@ class TestSharedNetworkImpersonation(cloudstackTestCase): if not CloudstackAclException.verifyMsginException(e,CloudstackAclException.NOT_AVAILABLE_IN_DOMAIN): self.fail("Error message validation failed when Domain admin tries to deploy a VM for regular user in parent domain in a shared network with scope=Domain and subdomain access") - @attr(tags=["advanced"],required_hardware="false") + @attr("simulator_only",tags=["advanced"],required_hardware="false") def test_deployVM_in_sharedNetwork_as_domainadmin_scope_domain_withsubdomainaccess_parentdomainadminuser(self): """ Valiate that Domain admin is NOT able to deploy a VM for admin user in parent domain in a shared network with scope=Domain and subdomain access @@ -1583,7 +1583,7 @@ class TestSharedNetworkImpersonation(cloudstackTestCase): self.fail("Error message validation failed when Domain admin tries to deploy a VM for admin user in parent domain in a shared network with scope=Domain and subdomain access") - @attr(tags=["advanced"],required_hardware="false") + @attr("simulator_only",tags=["advanced"],required_hardware="false") def test_deployVM_in_sharedNetwork_as_domainadmin_scope_domain_withsubdomainaccess_ROOTuser(self): """ Valiate that Domain admin is NOT able to deploy a VM for user in ROOT domain in a shared network with scope=Domain and subdomain access @@ -1614,7 +1614,7 @@ class TestSharedNetworkImpersonation(cloudstackTestCase): ## Test cases relating to deploying Virtual Machine as Domain admin for other users in shared network with scope=account - @attr(tags=["advanced"],required_hardware="false") + @attr("simulator_only",tags=["advanced"],required_hardware="false") def test_deployVM_in_sharedNetwork_as_domainadmin_scope_account_domainuser(self): """ Valiate that Domain admin is NOT able to deploy a VM for user in the same domain but belonging to a different account in a shared network with scope=account @@ -1643,7 +1643,7 @@ class TestSharedNetworkImpersonation(cloudstackTestCase): self.fail("Error message validation failed when Domain admin tries to deploy a VM for user in the same domain but belonging to a different account in a shared network with scope=account") - @attr(tags=["advanced"],required_hardware="false") + @attr("simulator_only",tags=["advanced"],required_hardware="false") def test_deployVM_in_sharedNetwork_as_domainadmin_scope_account_domainadminuser(self): """ Valiate that Domain admin is NOT able to deploy a VM for an admin user in the same domain but belonging to a different account in a shared network with scope=account @@ -1672,7 +1672,7 @@ class TestSharedNetworkImpersonation(cloudstackTestCase): self.fail("Error message validation failed when Domain admin tries to deploy a VM for user in the same domain but belonging to a different account in a shared network with scope=account") - @attr(tags=["advanced"],required_hardware="false") + @attr("simulator_only",tags=["advanced"],required_hardware="false") def test_deployVM_in_sharedNetwork_as_domainadmin_scope_account_user(self): """ Valiate that Domain admin is able to deploy a VM for an regular user in a shared network with scope=account @@ -1699,7 +1699,7 @@ class TestSharedNetworkImpersonation(cloudstackTestCase): True, "Domain admin is not able to deploy a VM for an regular user in a shared network with scope=account") - @attr(tags=["advanced"],required_hardware="false") + @attr("simulator_only",tags=["advanced"],required_hardware="false") def test_deployVM_in_sharedNetwork_as_domainadmin_scope_account_differentdomain(self): """ Valiate that Domain admin is able NOT able to deploy a VM for an regular user from a differnt domain in a shared network with scope=account @@ -1728,7 +1728,7 @@ class TestSharedNetworkImpersonation(cloudstackTestCase): self.fail("Error message validation failed when Domain admin tries to deploy a VM for an regular user from a differnt domain in a shared network with scope=account") - @attr(tags=["advanced"],required_hardware="false") + @attr("simulator_only",tags=["advanced"],required_hardware="false") def test_deployVM_in_sharedNetwork_as_domainadmin_scope_account_ROOTuser(self): """ Valiate that Domain admin is NOT able to deploy a VM for an regular user in ROOT domain in a shared network with scope=account @@ -1758,7 +1758,7 @@ class TestSharedNetworkImpersonation(cloudstackTestCase): ## Test cases relating to deploying Virtual Machine as Regular user for other users in shared network with scope=all - @attr(tags=["advanced"],required_hardware="false") + @attr("simulator_only",tags=["advanced"],required_hardware="false") def test_deployVM_in_sharedNetwork_as_regularuser_scope_all_anotherusersamedomain(self): """ Valiate that regular user is able NOT able to deploy a VM for another user in the same domain in a shared network with scope=all @@ -1787,7 +1787,7 @@ class TestSharedNetworkImpersonation(cloudstackTestCase): self.fail("Error message validation failed when Regular user tries to deploy a VM for another user in the same domain in a shared network with scope=all") - @attr(tags=["advanced"],required_hardware="false") + @attr("simulator_only",tags=["advanced"],required_hardware="false") def test_deployVM_in_sharedNetwork_as_regularuser_scope_all_crossdomain(self): """ Valiate that regular user is able NOT able to deploy a VM for another user in a different domain in a shared network with scope=all From 988b9efc97436da9dc6ecec567127d96fd2f4db1 Mon Sep 17 00:00:00 2001 From: Nitin Mehta Date: Fri, 19 Sep 2014 13:40:17 -0700 Subject: [PATCH 007/129] CLOUDSTACK-7588: [Vmware] Creating templates (with same names) from volumes get deleted from CS. Fix it by changing the unique name generation to the standard one used by registertemplate. Also cleaned up vmtemplatevo which had too many constructors. (cherry picked from commit 082aed3d33109903208014432eebbe3e69737d4e) --- .../src/com/cloud/storage/VMTemplateVO.java | 38 ++----------------- .../cloud/template/TemplateManagerImpl.java | 9 ++--- 2 files changed, 7 insertions(+), 40 deletions(-) diff --git a/engine/schema/src/com/cloud/storage/VMTemplateVO.java b/engine/schema/src/com/cloud/storage/VMTemplateVO.java index 9a77cbf873a..d44de221a87 100755 --- a/engine/schema/src/com/cloud/storage/VMTemplateVO.java +++ b/engine/schema/src/com/cloud/storage/VMTemplateVO.java @@ -159,10 +159,8 @@ public class VMTemplateVO implements VirtualMachineTemplate { uuid = UUID.randomUUID().toString(); } - /** - * Proper constructor for a new vm template. - */ - public VMTemplateVO(long id, String name, ImageFormat format, boolean isPublic, boolean featured, boolean isExtractable, TemplateType type, String url, + //FIXME - Remove unwanted constructors. + private VMTemplateVO(long id, String name, ImageFormat format, boolean isPublic, boolean featured, boolean isExtractable, TemplateType type, String url, boolean requiresHvm, int bits, long accountId, String cksum, String displayText, boolean enablePassword, long guestOSId, boolean bootable, HypervisorType hyperType, Map details) { this(id, @@ -250,8 +248,8 @@ public class VMTemplateVO implements VirtualMachineTemplate { state = State.Active; } - // Has an extra attribute - isExtractable - public VMTemplateVO(Long id, String uniqueName, String name, ImageFormat format, boolean isPublic, boolean featured, boolean isExtractable, TemplateType type, + //FIXME - Remove unwanted constructors. Made them private for now + private VMTemplateVO(Long id, String uniqueName, String name, ImageFormat format, boolean isPublic, boolean featured, boolean isExtractable, TemplateType type, String url, Date created, boolean requiresHvm, int bits, long accountId, String cksum, String displayText, boolean enablePassword, long guestOSId, boolean bootable, HypervisorType hyperType, Map details) { this(id, @@ -278,34 +276,6 @@ public class VMTemplateVO implements VirtualMachineTemplate { state = State.Active; } - public VMTemplateVO(Long id, String uniqueName, String name, ImageFormat format, boolean isPublic, boolean featured, boolean isExtractable, TemplateType type, - String url, Date created, boolean requiresHvm, int bits, long accountId, String cksum, String displayText, boolean enablePassword, long guestOSId, - boolean bootable, HypervisorType hyperType, String templateTag, Map details) { - this(id, - uniqueName, - name, - format, - isPublic, - featured, - isExtractable, - type, - url, - created, - requiresHvm, - bits, - accountId, - cksum, - displayText, - enablePassword, - guestOSId, - bootable, - hyperType, - details); - this.templateTag = templateTag; - uuid = UUID.randomUUID().toString(); - state = State.Active; - } - @Override public boolean getEnablePassword() { return enablePassword; diff --git a/server/src/com/cloud/template/TemplateManagerImpl.java b/server/src/com/cloud/template/TemplateManagerImpl.java index 06ca5e0209e..247ed003711 100755 --- a/server/src/com/cloud/template/TemplateManagerImpl.java +++ b/server/src/com/cloud/template/TemplateManagerImpl.java @@ -22,7 +22,6 @@ import java.util.Date; import java.util.HashMap; import java.util.List; import java.util.Map; -import java.util.UUID; import java.util.concurrent.ExecutionException; import java.util.concurrent.ExecutorService; import java.util.concurrent.Executors; @@ -1605,7 +1604,6 @@ public class TemplateManagerImpl extends ManagerBase implements TemplateManager, throw new InvalidParameterValueException("GuestOS with ID: " + guestOSId + " does not exist."); } - String uniqueName = Long.valueOf((userId == null) ? 1 : userId).toString() + UUID.nameUUIDFromBytes(name.getBytes()).toString(); Long nextTemplateId = _tmpltDao.getNextInSequence(Long.class, "id"); String description = cmd.getDisplayText(); boolean isExtractable = false; @@ -1630,10 +1628,9 @@ public class TemplateManagerImpl extends ManagerBase implements TemplateManager, s_logger.debug("Adding template tag: " + templateTag); } } - privateTemplate = - new VMTemplateVO(nextTemplateId, uniqueName, name, ImageFormat.RAW, isPublic, featured, isExtractable, TemplateType.USER, null, null, requiresHvmValue, - bitsValue, templateOwner.getId(), null, description, passwordEnabledValue, guestOS.getId(), true, hyperType, templateTag, cmd.getDetails()); - privateTemplate.setDynamicallyScalable(isDynamicScalingEnabled); + privateTemplate = new VMTemplateVO(nextTemplateId, name, ImageFormat.RAW, isPublic, featured, isExtractable, + TemplateType.USER, null, requiresHvmValue, bitsValue, templateOwner.getId(), null, description, + passwordEnabledValue, guestOS.getId(), true, hyperType, templateTag, cmd.getDetails(), false, isDynamicScalingEnabled); if (sourceTemplateId != null) { if (s_logger.isDebugEnabled()) { From 9bbcef454050bc5242eee8ee4db44e40671a58cb Mon Sep 17 00:00:00 2001 From: punith-cloudbyte Date: Wed, 17 Sep 2014 17:53:47 +0530 Subject: [PATCH 008/129] IOPS null issue CLOUDSTACK-7570 Signed-off-by: Mike Tutkowski (cherry picked from commit dd4f6bcaf3a380e52c987e4a400fce09fb180006) --- engine/schema/src/com/cloud/service/ServiceOfferingVO.java | 4 +++- engine/schema/src/com/cloud/storage/DiskOfferingVO.java | 4 +++- 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/engine/schema/src/com/cloud/service/ServiceOfferingVO.java b/engine/schema/src/com/cloud/service/ServiceOfferingVO.java index df68fb8ed04..805765b1e7f 100755 --- a/engine/schema/src/com/cloud/service/ServiceOfferingVO.java +++ b/engine/schema/src/com/cloud/service/ServiceOfferingVO.java @@ -177,7 +177,9 @@ public class ServiceOfferingVO extends DiskOfferingVO implements ServiceOffering offering.getSystemUse(), true, offering.isCustomizedIops()== null ? false:offering.isCustomizedIops(), - offering.getDomainId()); + offering.getDomainId(), + offering.getMinIops(), + offering.getMaxIops()); cpu = offering.getCpu(); ramSize = offering.getRamSize(); speed = offering.getSpeed(); diff --git a/engine/schema/src/com/cloud/storage/DiskOfferingVO.java b/engine/schema/src/com/cloud/storage/DiskOfferingVO.java index 152fa2c797c..74f65ab94e5 100755 --- a/engine/schema/src/com/cloud/storage/DiskOfferingVO.java +++ b/engine/schema/src/com/cloud/storage/DiskOfferingVO.java @@ -214,7 +214,7 @@ public class DiskOfferingVO implements DiskOffering { } public DiskOfferingVO(long id, String name, String displayText, Storage.ProvisioningType provisioningType, boolean mirrored, String tags, boolean recreatable, - boolean useLocalStorage, boolean systemUse, boolean customized, boolean customizedIops, Long domainId) { + boolean useLocalStorage, boolean systemUse, boolean customized, boolean customizedIops, Long domainId, Long minIops, Long maxIops) { this.id = id; type = Type.Service; this.name = name; @@ -229,6 +229,8 @@ public class DiskOfferingVO implements DiskOffering { this.domainId = domainId; uuid = UUID.randomUUID().toString(); state = State.Active; + this.minIops = minIops; + this.maxIops = maxIops; } @Override From b979c6f0c7c50f0ade0987bcc52543f8f9edc23b Mon Sep 17 00:00:00 2001 From: Min Chen Date: Fri, 19 Sep 2014 15:12:09 -0700 Subject: [PATCH 009/129] CLOUDSTACK-7589: VM not Starting and always stuck in Stopped state after management server restarts. (cherry picked from commit 7cdb67dcf1ec4158ec0ab4c2fa868cc63121bbb5) --- .../jobs/impl/AsyncJobManagerImpl.java | 57 ++++++------------- .../framework/jobs/impl/SyncQueueManager.java | 2 + .../jobs/impl/SyncQueueManagerImpl.java | 13 ++++- 3 files changed, 32 insertions(+), 40 deletions(-) diff --git a/framework/jobs/src/org/apache/cloudstack/framework/jobs/impl/AsyncJobManagerImpl.java b/framework/jobs/src/org/apache/cloudstack/framework/jobs/impl/AsyncJobManagerImpl.java index 7d374da3142..4c4d3c21f72 100644 --- a/framework/jobs/src/org/apache/cloudstack/framework/jobs/impl/AsyncJobManagerImpl.java +++ b/framework/jobs/src/org/apache/cloudstack/framework/jobs/impl/AsyncJobManagerImpl.java @@ -835,24 +835,6 @@ public class AsyncJobManagerImpl extends ManagerBase implements AsyncJobManager, return ManagementServerNode.getManagementServerId(); } - private void cleanupPendingJobs(List l) { - for (SyncQueueItemVO item : l) { - if (s_logger.isInfoEnabled()) { - s_logger.info("Discard left-over queue item: " + item.toString()); - } - - String contentType = item.getContentType(); - if (contentType != null && contentType.equalsIgnoreCase(SyncQueueItem.AsyncJobContentType)) { - Long jobId = item.getContentId(); - if (jobId != null) { - s_logger.warn("Mark job as failed as its correspoding queue-item has been discarded. job id: " + jobId); - completeAsyncJob(jobId, JobInfo.Status.FAILED, 0, "Execution was cancelled because of server shutdown"); - } - } - _queueMgr.purgeItem(item.getId()); - } - } - @DB protected List wakeupByJoinedJobCompletion(long joinedJobId) { SearchCriteria joinJobSC = JoinJobSearch.create("joinJobId", joinedJobId); @@ -967,6 +949,22 @@ public class AsyncJobManagerImpl extends ManagerBase implements AsyncJobManager, return true; } + private void cleanupLeftOverJobs(final long msid) { + try { + Transaction.execute(new TransactionCallbackNoReturn() { + @Override + public void doInTransactionWithoutResult(TransactionStatus status) { + // purge sync queue item running on this ms node + _queueMgr.cleanupActiveQueueItems(msid, true); + // reset job status for all jobs running on this ms node + _jobDao.resetJobProcess(msid, ApiErrorCode.INTERNAL_ERROR.getHttpCode(), "job cancelled because of management server restart or shutdown"); + } + }); + } catch (Throwable e) { + s_logger.warn("Unexpected exception in cleaning up left over jobs for mamagement server node " + msid, e); + } + } + @Override public void onManagementNodeJoined(List nodeList, long selfNodeId) { } @@ -974,18 +972,7 @@ public class AsyncJobManagerImpl extends ManagerBase implements AsyncJobManager, @Override public void onManagementNodeLeft(List nodeList, long selfNodeId) { for (final ManagementServerHost msHost : nodeList) { - try { - Transaction.execute(new TransactionCallbackNoReturn() { - @Override - public void doInTransactionWithoutResult(TransactionStatus status) { - List items = _queueMgr.getActiveQueueItems(msHost.getId(), true); - cleanupPendingJobs(items); - _jobDao.resetJobProcess(msHost.getId(), ApiErrorCode.INTERNAL_ERROR.getHttpCode(), "job cancelled because of management server restart"); - } - }); - } catch (Throwable e) { - s_logger.warn("Unexpected exception ", e); - } + cleanupLeftOverJobs(msHost.getId()); } } @@ -995,15 +982,7 @@ public class AsyncJobManagerImpl extends ManagerBase implements AsyncJobManager, @Override public boolean start() { - try { - _jobDao.cleanupPseduoJobs(getMsid()); - - List l = _queueMgr.getActiveQueueItems(getMsid(), false); - cleanupPendingJobs(l); - _jobDao.resetJobProcess(getMsid(), ApiErrorCode.INTERNAL_ERROR.getHttpCode(), "job cancelled because of management server restart"); - } catch (Throwable e) { - s_logger.error("Unexpected exception " + e.getMessage(), e); - } + cleanupLeftOverJobs(getMsid()); _heartbeatScheduler.scheduleAtFixedRate(getHeartbeatTask(), HEARTBEAT_INTERVAL, HEARTBEAT_INTERVAL, TimeUnit.MILLISECONDS); _heartbeatScheduler.scheduleAtFixedRate(getGCTask(), GC_INTERVAL, GC_INTERVAL, TimeUnit.MILLISECONDS); diff --git a/framework/jobs/src/org/apache/cloudstack/framework/jobs/impl/SyncQueueManager.java b/framework/jobs/src/org/apache/cloudstack/framework/jobs/impl/SyncQueueManager.java index b521ffe5df1..32d84647a2d 100644 --- a/framework/jobs/src/org/apache/cloudstack/framework/jobs/impl/SyncQueueManager.java +++ b/framework/jobs/src/org/apache/cloudstack/framework/jobs/impl/SyncQueueManager.java @@ -36,4 +36,6 @@ public interface SyncQueueManager extends Manager { public List getBlockedQueueItems(long thresholdMs, boolean exclusive); void purgeAsyncJobQueueItemId(long asyncJobId); + + public void cleanupActiveQueueItems(Long msid, boolean exclusive); } diff --git a/framework/jobs/src/org/apache/cloudstack/framework/jobs/impl/SyncQueueManagerImpl.java b/framework/jobs/src/org/apache/cloudstack/framework/jobs/impl/SyncQueueManagerImpl.java index 5160e05db77..1cfec4dba41 100644 --- a/framework/jobs/src/org/apache/cloudstack/framework/jobs/impl/SyncQueueManagerImpl.java +++ b/framework/jobs/src/org/apache/cloudstack/framework/jobs/impl/SyncQueueManagerImpl.java @@ -26,7 +26,6 @@ import org.apache.log4j.Logger; import org.apache.cloudstack.framework.jobs.dao.SyncQueueDao; import org.apache.cloudstack.framework.jobs.dao.SyncQueueItemDao; - import com.cloud.utils.DateUtil; import com.cloud.utils.component.ManagerBase; import com.cloud.utils.db.DB; @@ -260,4 +259,16 @@ public class SyncQueueManagerImpl extends ManagerBase implements SyncQueueManage purgeItem(itemId); } } + + @Override + public void cleanupActiveQueueItems(Long msid, boolean exclusive) { + List l = getActiveQueueItems(msid, false); + for (SyncQueueItemVO item : l) { + if (s_logger.isInfoEnabled()) { + s_logger.info("Discard left-over queue item: " + item.toString()); + } + purgeItem(item.getId()); + } + } + } From e0317eeec456a4ad8585238500b6786142772530 Mon Sep 17 00:00:00 2001 From: Devdeep Singh Date: Fri, 19 Sep 2014 16:56:05 +0530 Subject: [PATCH 010/129] CLOUDSTACK-7494. Migration of a vm fails on Hyper-V. In an earlier commit as part of cleaning up vmsync changes, checkvirtualmachine command was updated to return the power state of the vm. The change was missed for Hyper-V. This caused migration to fail on cloudstack even though it used to succeed on the hypervisor. Updated the hyper-v agent code to return the cloudstack equivalent power state for check virtual machine answer. (cherry picked from commit 5350e61187d5b2f9fdc997dcc9fea34ff68148f7) --- .../HypervResource/HypervResourceController.cs | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/plugins/hypervisors/hyperv/DotNet/ServerResource/HypervResource/HypervResourceController.cs b/plugins/hypervisors/hyperv/DotNet/ServerResource/HypervResource/HypervResourceController.cs index 6c6ec56f424..76f56d9b644 100644 --- a/plugins/hypervisors/hyperv/DotNet/ServerResource/HypervResource/HypervResourceController.cs +++ b/plugins/hypervisors/hyperv/DotNet/ServerResource/HypervResource/HypervResourceController.cs @@ -873,7 +873,7 @@ namespace HypervResource string details = null; bool result = false; string vmName = cmd.vmName; - string state = null; + string powerState = null; // TODO: Look up the VM, convert Hyper-V state to CloudStack version. var sys = wmiCallsV2.GetComputerSystem(vmName); @@ -884,7 +884,7 @@ namespace HypervResource } else { - state = EnabledState.ToCloudStackState(sys.EnabledState); // TODO: V2 changes? + powerState = EnabledState.ToCloudStackPowerState(sys.EnabledState); result = true; } @@ -892,7 +892,7 @@ namespace HypervResource { result = result, details = details, - state = state, + powerstate = powerState, contextMap = contextMap }; return ReturnCloudStackTypedJArray(ansContent, CloudStackTypes.CheckVirtualMachineAnswer); From b771b6ee72a5cb6d52ba6544c8fd6b7c2c5f47ff Mon Sep 17 00:00:00 2001 From: Prashant Kumar Mishra Date: Fri, 19 Sep 2014 13:22:00 +0530 Subject: [PATCH 011/129] CLOUDSTACK-7579 Adding a method to base.py to update storage pool Signed-off-by: SrikanteswaraRao Talluri (cherry picked from commit 937aee34eded1a795b4eff3b7ebb59b8fbbef568) --- tools/marvin/marvin/lib/base.py | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/tools/marvin/marvin/lib/base.py b/tools/marvin/marvin/lib/base.py index 04217b2709f..b0dd6e2511e 100755 --- a/tools/marvin/marvin/lib/base.py +++ b/tools/marvin/marvin/lib/base.py @@ -2571,6 +2571,13 @@ class StoragePool: cmd.listall = True return(apiclient.findStoragePoolsForMigration(cmd)) + @classmethod + def update(cls,apiclient, **kwargs): + """Update storage pool""" + cmd=updateStoragePool.updateStoragePoolCmd() + [setattr(cmd, k, v) for k, v in kwargs.items()] + return apiclient.updateStoragePool(cmd) + class Network: """Manage Network pools""" From ce2fe3e5dffca2cb13edffd89d2feb1ec51de07a Mon Sep 17 00:00:00 2001 From: sanjeev Date: Mon, 22 Sep 2014 16:27:44 +0530 Subject: [PATCH 012/129] In case of Hyper-v ssvm/cpvm reboot takes time so made changes to handle this (cherry picked from commit 5bddebb8fc6eb85753a030f1d71fe2303969325b) --- tools/marvin/marvin/lib/utils.py | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/tools/marvin/marvin/lib/utils.py b/tools/marvin/marvin/lib/utils.py index c52e2774466..8788b3b736f 100644 --- a/tools/marvin/marvin/lib/utils.py +++ b/tools/marvin/marvin/lib/utils.py @@ -208,12 +208,16 @@ def get_process_status(hostip, port, username, password, linklocalip, process, h process) # Double hop into router - timeout = 5 + if str(hypervisor).lower() == 'hyperv': + timeout = 12 + else: + timeout = 5 # Ensure the SSH login is successful while True: res = ssh.execute(ssh_command) - - if res[0] != "Host key verification failed.": + if "Connection refused".lower() in res[0].lower(): + pass + elif res[0] != "Host key verification failed.": break elif timeout == 0: break From 1b0618d39c914151c73e11175643b655145c3143 Mon Sep 17 00:00:00 2001 From: Koushik Das Date: Mon, 22 Sep 2014 16:40:12 +0530 Subject: [PATCH 013/129] CLOUDSTACK-7595: Config parameters "job.expire.minutes" and "job.cancel.threshold.minutes" incorrectly getting multiplied by a factor of 60 Removed the unnecessary multiply factor for both the config parameters. Also removed the duplicate entries from Config.java as these are not required (cherry picked from commit a6ee4112a54043033233334c900d9bcd1cebf157) --- .../jobs/impl/AsyncJobManagerImpl.java | 21 ++++++++----------- .../src/com/cloud/configuration/Config.java | 9 -------- 2 files changed, 9 insertions(+), 21 deletions(-) diff --git a/framework/jobs/src/org/apache/cloudstack/framework/jobs/impl/AsyncJobManagerImpl.java b/framework/jobs/src/org/apache/cloudstack/framework/jobs/impl/AsyncJobManagerImpl.java index 4c4d3c21f72..7e65ede3e53 100644 --- a/framework/jobs/src/org/apache/cloudstack/framework/jobs/impl/AsyncJobManagerImpl.java +++ b/framework/jobs/src/org/apache/cloudstack/framework/jobs/impl/AsyncJobManagerImpl.java @@ -38,7 +38,6 @@ import org.apache.log4j.NDC; import org.apache.cloudstack.api.ApiErrorCode; import org.apache.cloudstack.context.CallContext; -import org.apache.cloudstack.framework.config.ConfigDepot; import org.apache.cloudstack.framework.config.ConfigKey; import org.apache.cloudstack.framework.config.Configurable; import org.apache.cloudstack.framework.jobs.AsyncJob; @@ -83,10 +82,10 @@ import com.cloud.utils.mgmt.JmxUtil; public class AsyncJobManagerImpl extends ManagerBase implements AsyncJobManager, ClusterManagerListener, Configurable { // Advanced - private static final ConfigKey JobExpireMinutes = new ConfigKey(Long.class, "job.expire.minutes", "Advanced", "1440", - "Time (in minutes) for async-jobs to be kept in system", true, ConfigKey.Scope.Global, 60l); - private static final ConfigKey JobCancelThresholdMinutes = new ConfigKey(Long.class, "job.cancel.threshold.minutes", "Advanced", "60", - "Time (in minutes) for async-jobs to be forcely cancelled if it has been in process for long", true, ConfigKey.Scope.Global, 240l); + private static final ConfigKey JobExpireMinutes = new ConfigKey("Advanced", Long.class, "job.expire.minutes", "1440", + "Time (in minutes) for async-jobs to be kept in system", true, ConfigKey.Scope.Global); + private static final ConfigKey JobCancelThresholdMinutes = new ConfigKey("Advanced", Long.class, "job.cancel.threshold.minutes", "60", + "Time (in minutes) for async-jobs to be forcely cancelled if it has been in process for long", true, ConfigKey.Scope.Global); private static final Logger s_logger = Logger.getLogger(AsyncJobManagerImpl.class); @@ -112,8 +111,6 @@ public class AsyncJobManagerImpl extends ManagerBase implements AsyncJobManager, private MessageBus _messageBus; @Inject private AsyncJobMonitor _jobMonitor; - @Inject - private ConfigDepot _configDepot; private volatile long _executionRunNumber = 1; @@ -778,16 +775,16 @@ public class AsyncJobManagerImpl extends ManagerBase implements AsyncJobManager, // limit to 100 jobs per turn, this gives cleanup throughput as 600 jobs per minute // hopefully this will be fast enough to balance potential growth of job table - //1) Expire unfinished jobs that weren't processed yet - List l = _jobDao.getExpiredUnfinishedJobs(cutTime, 100); - for (AsyncJobVO job : l) { + // 1) Expire unfinished jobs that weren't processed yet + List unfinishedJobs = _jobDao.getExpiredUnfinishedJobs(cutTime, 100); + for (AsyncJobVO job : unfinishedJobs) { s_logger.info("Expunging unfinished job " + job); _jobMonitor.unregisterByJobId(job.getId()); expungeAsyncJob(job); } - //2) Expunge finished jobs + // 2) Expunge finished jobs List completedJobs = _jobDao.getExpiredCompletedJobs(cutTime, 100); for (AsyncJobVO job : completedJobs) { s_logger.trace("Expunging completed job " + job); @@ -825,7 +822,7 @@ public class AsyncJobManagerImpl extends ManagerBase implements AsyncJobManager, @Override public void doInTransactionWithoutResult(TransactionStatus status) { _jobDao.expunge(job.getId()); - //purge corresponding sync queue item + // purge corresponding sync queue item _queueMgr.purgeAsyncJobQueueItemId(job.getId()); } }); diff --git a/server/src/com/cloud/configuration/Config.java b/server/src/com/cloud/configuration/Config.java index 1f15d39f81e..0365246f718 100755 --- a/server/src/com/cloud/configuration/Config.java +++ b/server/src/com/cloud/configuration/Config.java @@ -521,15 +521,6 @@ public enum Config { KVMSnapshotEnabled("Snapshots", SnapshotManager.class, Boolean.class, "kvm.snapshot.enabled", "false", "whether snapshot is enabled for KVM hosts", null), // Advanced - JobExpireMinutes("Advanced", ManagementServer.class, String.class, "job.expire.minutes", "1440", "Time (in minutes) for async-jobs to be kept in system", null), - JobCancelThresholdMinutes( - "Advanced", - ManagementServer.class, - String.class, - "job.cancel.threshold.minutes", - "60", - "Time (in minutes) for async-jobs to be forcely cancelled if it has been in process for long", - null), EventPurgeInterval( "Advanced", ManagementServer.class, From 4076d87038127b1b04ae653a250ba8efed306da2 Mon Sep 17 00:00:00 2001 From: sanjeev Date: Tue, 23 Sep 2014 14:15:39 +0530 Subject: [PATCH 014/129] Creating custom disk does not work as expected (cherry picked from commit 0d5a435f7669eddd44a6b62317fe26bb1d96e96c) --- .../component/test_escalations_volumes.py | 68 ++++++++++++++++++- tools/marvin/marvin/lib/base.py | 3 - 2 files changed, 67 insertions(+), 4 deletions(-) diff --git a/test/integration/component/test_escalations_volumes.py b/test/integration/component/test_escalations_volumes.py index 0d78c58f852..8d6ba9938d6 100644 --- a/test/integration/component/test_escalations_volumes.py +++ b/test/integration/component/test_escalations_volumes.py @@ -19,7 +19,7 @@ from marvin.cloudstackTestCase import cloudstackTestCase from marvin.cloudstackAPI import createVolume, createTemplate from marvin.lib.utils import (cleanup_resources, - random_gen) + random_gen,validateList) from marvin.lib.base import (Account, VirtualMachine, ServiceOffering, @@ -32,6 +32,7 @@ from marvin.lib.common import (get_domain, get_zone, get_template) from nose.plugins.attrib import attr +from marvin.codes import PASS class TestVolumes(cloudstackTestCase): @@ -1793,3 +1794,68 @@ class TestVolumes(cloudstackTestCase): "upload volume failed" ) return + + @attr(tags=["advanced","basic","sg"], required_hardware="true") + def test_13_volume_custom_disk_size(self): + """ + @Desc:Create volume from custom disk offering does not work as expected + Step1:Create custom disk offering + Step2:Create Volume with size x + Step3:Attach that volume to a vm + Step4:Create another volume with size y + Step5:Verify that the new volume is created with size Y but not with size X + """ + disk_offering = DiskOffering.create( + self.api_client, + self.services["disk_offering"], + custom=True + ) + self.assertIsNotNone(disk_offering,"Failed to create custom disk offering") + self.cleanup.append(disk_offering) + self.services["custom_volume"]["customdisksize"]=2 + vol1 = Volume.create_custom_disk( + self.userapiclient, + self.services["custom_volume"], + account=self.account.name, + domainid=self.domain.id, + diskofferingid=disk_offering.id + ) + self.assertIsNotNone(vol1,"Volume creation failed with custom disk size") + vol1_res = Volume.list( + self.userapiclient, + id=vol1.id + ) + self.assertEqual(validateList(vol1_res)[0],PASS,"Volume list returned invalid response") + self.cleanup.append(vol1) + vol1_size = vol1_res[0].size + try: + self.virtual_machine.attach_volume(self.userapiclient,vol1) + except Exception as e: + self.fail("Attaching custom data disk to vm failed with error{}".format(e)) + self.services["custom_volume"]["customdisksize"]=3 + vol2 = Volume.create_custom_disk( + self.userapiclient, + self.services["custom_volume"], + account=self.account.name, + domainid=self.domain.id, + diskofferingid=disk_offering.id + ) + self.assertIsNotNone(vol2,"Failed to create custom data disk with size %s" % + self.services["custom_volume"]["customdisksize"]) + self.cleanup.append(vol2) + vol2_res = Volume.list( + self.userapiclient, + id=vol2.id + ) + self.assertEqual(validateList(vol2_res)[0],PASS,"Volume list returned invalid response") + vol2_size=vol2_res[0].size + self.assertNotEqual( + vol1_size, + vol2_size, + "Creating volume from custom disk offering does not work as expected" + ) + try: + self.virtual_machine.detach_volume(self.userapiclient,vol1) + except Exception as e: + self.fail("Detaching volume failed with error %s" % e) + return diff --git a/tools/marvin/marvin/lib/base.py b/tools/marvin/marvin/lib/base.py index b0dd6e2511e..528fc7890ac 100755 --- a/tools/marvin/marvin/lib/base.py +++ b/tools/marvin/marvin/lib/base.py @@ -1971,9 +1971,6 @@ class DiskOffering: if "customizediops" in services: cmd.customizediops = services["customizediops"] - if "disksize" in services: - cmd.disksize = services["disksize"] - if "maxiops" in services: cmd.maxiops = services["maxiops"] From f2eec470abccfcbca0c373d0de49e44ead2460fa Mon Sep 17 00:00:00 2001 From: Rajesh Battala Date: Mon, 9 Jun 2014 14:42:16 +0530 Subject: [PATCH 015/129] CLOUDSTACK-6603 [Upgrade]DB Exception while Autoscale monitoring after upgrading from 4.3 to 4.4 (cherry picked from commit c282bb3a1293fbbfdb306263ea52464862670fb3) (cherry picked from commit fc7d0b2a333e510619f14528a72e35bbf9ed7045) (cherry picked from commit 0c3d0cc954b7c276640a71b636f78928f55e97a2) --- setup/db/db/schema-40to410.sql | 1 - setup/db/db/schema-430to440.sql | 1 + 2 files changed, 1 insertion(+), 1 deletion(-) diff --git a/setup/db/db/schema-40to410.sql b/setup/db/db/schema-40to410.sql index 65fb350bf19..53b4a1a5b8a 100644 --- a/setup/db/db/schema-40to410.sql +++ b/setup/db/db/schema-40to410.sql @@ -367,7 +367,6 @@ CREATE TABLE `cloud`.`autoscale_vmgroups` ( `max_members` int unsigned NOT NULL, `member_port` int unsigned NOT NULL, `interval` int unsigned NOT NULL, - `last_interval` datetime DEFAULT NULL, `profile_id` bigint unsigned NOT NULL, `state` varchar(255) NOT NULL COMMENT 'enabled or disabled, a vmgroup is disabled to stop autoscaling activity', `created` datetime NOT NULL COMMENT 'date created', diff --git a/setup/db/db/schema-430to440.sql b/setup/db/db/schema-430to440.sql index a99ec28a235..0943518a985 100644 --- a/setup/db/db/schema-430to440.sql +++ b/setup/db/db/schema-430to440.sql @@ -662,6 +662,7 @@ ALTER TABLE `cloud`.`vpc` ADD COLUMN `display` tinyint(1) NOT NULL DEFAULT '1' C ALTER TABLE `cloud`.`firewall_rules` ADD COLUMN `display` tinyint(1) NOT NULL DEFAULT '1' COMMENT 'True if the rule can be displayed to the end user'; ALTER TABLE `cloud`.`autoscale_vmgroups` ADD COLUMN `display` tinyint(1) NOT NULL DEFAULT '1' COMMENT 'True if the entry can be displayed to the end user'; ALTER TABLE `cloud`.`autoscale_vmprofiles` ADD COLUMN `display` tinyint(1) NOT NULL DEFAULT '1' COMMENT 'True if the entry can be displayed to the end user'; +ALTER TABLE `cloud`.`autoscale_vmgroups` ADD COLUMN `last_interval` datetime NULL DEFAULT NULL COMMENT 'last updated time'; ALTER TABLE `cloud`.`network_acl_item` ADD COLUMN `display` tinyint(1) NOT NULL DEFAULT '1' COMMENT 'True if the entry can be displayed to the end user'; ALTER TABLE `cloud`.`network_acl` ADD COLUMN `display` tinyint(1) NOT NULL DEFAULT '1' COMMENT 'True if the entry can be displayed to the end user'; ALTER TABLE `cloud`.`remote_access_vpn` ADD COLUMN `display` tinyint(1) NOT NULL DEFAULT '1' COMMENT 'True if the entry can be displayed to the end user'; From 5c2094eec1408494586e48d38d9076b31ca3e5f5 Mon Sep 17 00:00:00 2001 From: sanjeev Date: Thu, 18 Sep 2014 14:18:14 +0530 Subject: [PATCH 016/129] CLOUDSTACK-6172: Adding new test case to verify this fix Conflicts: test/integration/component/test_volumes.py Signed-off-by: sanjeev CLOUDSTACK-6172: Fixed review comments provided in RR 25771 (cherry picked from commit 2d19bcb46ad7c78b4842c1f52f552998a33f8836) --- test/integration/component/test_volumes.py | 138 +++++++++++++++++++++ 1 file changed, 138 insertions(+) diff --git a/test/integration/component/test_volumes.py b/test/integration/component/test_volumes.py index 122f2d18d02..36a910be4c3 100644 --- a/test/integration/component/test_volumes.py +++ b/test/integration/component/test_volumes.py @@ -1209,3 +1209,141 @@ class TestDeployVmWithCustomDisk(cloudstackTestCase): except Exception as e: self.fail("Create volume failed with exception: %s" % e) return + +class TestMigrateVolume(cloudstackTestCase): + + @classmethod + def setUpClass(cls): + cls.testClient = super(TestMigrateVolume, cls).getClsTestClient() + cls.api_client = cls.testClient.getApiClient() + + cls.services = Services().services + # Get Zone, Domain and templates + cls.domain = get_domain(cls.api_client) + cls.zone = get_zone(cls.api_client, cls.testClient.getZoneForTests()) + cls.services['mode'] = cls.zone.networktype + cls.disk_offering = DiskOffering.create( + cls.api_client, + cls.services["disk_offering"] + ) + template = get_template( + cls.api_client, + cls.zone.id, + cls.services["ostype"] + ) + cls.services["zoneid"] = cls.zone.id + cls.services["virtual_machine"]["zoneid"] = cls.zone.id + cls.services["virtual_machine"]["template"] = template.id + cls.services["virtual_machine"]["diskofferingid"] = cls.disk_offering.id + + # Create VMs, VMs etc + cls.account = Account.create( + cls.api_client, + cls.services["account"], + domainid=cls.domain.id + ) + cls.small_offering = ServiceOffering.create( + cls.api_client, + cls.services["service_offering"] + ) + cls.virtual_machine = VirtualMachine.create( + cls.api_client, + cls.services["virtual_machine"], + accountid=cls.account.name, + domainid=cls.account.domainid, + serviceofferingid=cls.small_offering.id, + mode=cls.services["mode"] + ) + cls._cleanup = [ + cls.small_offering, + cls.account + ] + return + + @classmethod + def tearDownClass(cls): + try: + cleanup_resources(cls.api_client, cls._cleanup) + except Exception as e: + raise Exception("Warning: Exception during cleanup : %s" % e) + return + + def setUp(self): + self.apiclient = self.testClient.getApiClient() + self.dbclient = self.testClient.getDbConnection() + self.cleanup = [] + return + + def tearDown(self): + cleanup_resources(self.apiclient, self.cleanup) + return + + @attr(tags=["advanced","sg","advancedsg"], required_hardware='true') + def test_01_migrateVolume(self): + """ + @Desc:Volume is not retaining same uuid when migrating from one storage to another. + Step1:Create a volume/data disk + Step2:Verify UUID of the volume + Step3:Migrate the volume to another primary storage within the cluster + Step4:Migrating volume to new primary storage should succeed + Step5:volume UUID should not change even after migration + """ + vol = Volume.create( + self.apiclient, + self.services["volume"], + diskofferingid=self.disk_offering.id, + zoneid=self.zone.id, + account=self.account.name, + domainid=self.account.domainid, + ) + self.assertIsNotNone(vol,"Failed to create volume") + vol_res = Volume.list( + self.apiclient, + id=vol.id + ) + self.assertEqual(validateList(vol_res)[0],PASS,"Invalid response returned for list volumes") + vol_uuid=vol_res[0].id + try: + self.virtual_machine.attach_volume( + self.apiclient, + vol + ) + except Exception as e: + self.fail("Attaching data disk to vm failed with error %s" % e) + pools = StoragePool.listForMigration( + self.apiclient, + id=vol.id + ) + if not pools: + self.skipTest("No suitable storage pools found for volume migration. Skipping") + self.assertEqual(validateList(pools)[0],PASS,"invalid pool response from findStoragePoolsForMigration") + pool=pools[0] + self.debug("Migrating Volume-ID: %s to Pool: %s" % (vol.id,pool.id)) + try: + Volume.migrate( + self.apiclient, + volumeid=vol.id, + storageid=pool.id, + livemigrate='true' + ) + except Exception as e: + self.fail("Volume migration failed with error %s" % e) + migrated_vols = Volume.list( + self.apiclient, + virtualmachineid=self.virtual_machine.id, + listall='true', + type='DATADISK' + ) + self.assertEqual(validateList(migrated_vols)[0],PASS,"invalid volumes response after migration") + migrated_vol_uuid=migrated_vols[0].id + self.assertEqual( + vol_uuid, + migrated_vol_uuid, + "Volume is not retaining same uuid when migrating from one storage to another" + ) + self.virtual_machine.detach_volume( + self.apiclient, + vol + ) + self.cleanup.append(vol) + return From b4bddc61ac47d301200a299ea129169e98b09a74 Mon Sep 17 00:00:00 2001 From: Anthony Xu Date: Wed, 24 Sep 2014 10:57:36 -0700 Subject: [PATCH 017/129] timeInSeconds * 1000 timeInSeconds is int type, if timeInSeconds is very big, it makes "timeInseconds * 1000" very small even 0 (cherry picked from commit f5eae55abb4591109dd22c1ba9d25f0876ebe52f) --- framework/db/src/com/cloud/utils/db/Merovingian2.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/framework/db/src/com/cloud/utils/db/Merovingian2.java b/framework/db/src/com/cloud/utils/db/Merovingian2.java index f6df4934a9f..66215d3781e 100644 --- a/framework/db/src/com/cloud/utils/db/Merovingian2.java +++ b/framework/db/src/com/cloud/utils/db/Merovingian2.java @@ -120,7 +120,7 @@ public class Merovingian2 extends StandardMBean implements MerovingianMBean { } long startTime = InaccurateClock.getTime(); - while ((InaccurateClock.getTime() - startTime) < (timeInSeconds * 1000)) { + while ((InaccurateClock.getTime() - startTime) < (timeInSeconds * 1000l)) { int count = owns(key); if (count >= 1) { From d036168ecb3a70c6205638e5c65937be8daffa46 Mon Sep 17 00:00:00 2001 From: Anthony Xu Date: Wed, 24 Sep 2014 10:28:04 -0700 Subject: [PATCH 018/129] cleaning up more conflicts --- framework/db/src/com/cloud/utils/db/Merovingian2.java | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/framework/db/src/com/cloud/utils/db/Merovingian2.java b/framework/db/src/com/cloud/utils/db/Merovingian2.java index 66215d3781e..0c76fb5886d 100644 --- a/framework/db/src/com/cloud/utils/db/Merovingian2.java +++ b/framework/db/src/com/cloud/utils/db/Merovingian2.java @@ -138,9 +138,9 @@ public class Merovingian2 extends StandardMBean implements MerovingianMBean { } catch (InterruptedException e) { } } - if (s_logger.isTraceEnabled()) { - s_logger.trace("Timed out on acquiring lock " + key + ". Waited for " + (InaccurateClock.getTime() - startTime)); - } + String msg = "Timed out on acquiring lock " + key + " . Waited for " + ((InaccurateClock.getTime() - startTime)/1000) + "seconds"; + Exception e = new CloudRuntimeException(msg); + s_logger.warn(msg, e); return false; } @@ -270,7 +270,9 @@ public class Merovingian2 extends StandardMBean implements MerovingianMBean { throw new CloudRuntimeException("release:Exception:"+ e.getMessage(), e); } } else if (rows < 1) { - s_logger.warn("Was unable to find lock for the key " + key + " and thread id " + threadId); + String msg = ("Was unable to find lock for the key " + key + " and thread id " + threadId); + Exception e = new CloudRuntimeException(msg); + s_logger.warn(msg, e); } return rows == 1; } catch (Exception e) { From 555b20f7ece797d88844392b03d90bd118b48cac Mon Sep 17 00:00:00 2001 From: Jessica Wang Date: Wed, 24 Sep 2014 14:25:22 -0700 Subject: [PATCH 019/129] CLOUDSTACK-7625: UI > IP Address page > EnableVPN > If createRemoteAccessVpn returns success, but the newly created remoteaccessvpn object's state is not Running, treat it as a failure. (cherry picked from commit b592e0af345c38b5a898ec238bc4f2c8cedf6ef9) --- ui/scripts/network.js | 17 ++++++++++++++--- 1 file changed, 14 insertions(+), 3 deletions(-) diff --git a/ui/scripts/network.js b/ui/scripts/network.js index 55c4937a1fa..8bbde6a5166 100755 --- a/ui/scripts/network.js +++ b/ui/scripts/network.js @@ -2361,10 +2361,15 @@ success: function(data) { args.response.success({ _custom: { - getUpdatedItem: function(json) { + getUpdatedItem: function(json) { + var vpnenabledAndRunning = false; + if (json.queryasyncjobresultresponse.jobresult.remoteaccessvpn.state == "Running") { + vpnenabledAndRunning = true; + } + return { vpn: json.queryasyncjobresultresponse.jobresult.remoteaccessvpn, - vpnenabled: true + vpnenabled: vpnenabledAndRunning }; }, getActionFilter: function() { @@ -2387,7 +2392,13 @@ return 'label.enable.vpn'; }, complete: function(args) { - return _l('message.enabled.vpn') + ' ' + args.vpn.publicip + '.' + '
' + _l('message.enabled.vpn.ip.sec') + '
' + args.vpn.presharedkey; + var msg; + if (args.vpn.state == "Running") { + msg = _l('message.enabled.vpn') + ' ' + args.vpn.publicip + '.' + '
' + _l('message.enabled.vpn.ip.sec') + '
' + args.vpn.presharedkey; + } else { + msg = "VPN configuration has been generated, but it failed to apply. Please check connectivity of the network element, then re-try."; + } + return msg; } }, notification: { From 3ebf49ab28e3b6b4543756115e7af590bc03e680 Mon Sep 17 00:00:00 2001 From: Min Chen Date: Wed, 24 Sep 2014 17:27:39 -0700 Subject: [PATCH 020/129] CLOUDSTACK-7628:VM Worker job should be expunged one hour after completion instead of currently being expunged whenever cleanup task thread is run. (cherry picked from commit 4317a85e97643c681b98b3e58990ec2f22abedd8) --- .../apache/cloudstack/framework/jobs/dao/VmWorkJobDaoImpl.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/framework/jobs/src/org/apache/cloudstack/framework/jobs/dao/VmWorkJobDaoImpl.java b/framework/jobs/src/org/apache/cloudstack/framework/jobs/dao/VmWorkJobDaoImpl.java index ee8748adee0..d38de0ebadd 100644 --- a/framework/jobs/src/org/apache/cloudstack/framework/jobs/dao/VmWorkJobDaoImpl.java +++ b/framework/jobs/src/org/apache/cloudstack/framework/jobs/dao/VmWorkJobDaoImpl.java @@ -140,7 +140,7 @@ public class VmWorkJobDaoImpl extends GenericDaoBase implemen // loop at application level to avoid mysql deadlock issues SearchCriteria sc = ExpungingWorkJobSearch.create(); sc.setParameters("jobStatus", JobInfo.Status.IN_PROGRESS); - sc.setParameters("lastUpdated", cutDate); + sc.setParameters("cutDate", cutDate); sc.setParameters("dispatcher", "VmWorkJobDispatcher"); List expungeList = listBy(sc); for (VmWorkJobVO job : expungeList) { From 7a4a0d7aaa4dba7a1ccb1712bbc4e76d5cba8547 Mon Sep 17 00:00:00 2001 From: Jayapal Date: Wed, 24 Sep 2014 15:42:27 +0530 Subject: [PATCH 021/129] CLOUDSTACK-7622: Fixed deleting network when provider is disable --- .../orchestration/NetworkOrchestrator.java | 19 ------------------- 1 file changed, 19 deletions(-) diff --git a/engine/orchestration/src/org/apache/cloudstack/engine/orchestration/NetworkOrchestrator.java b/engine/orchestration/src/org/apache/cloudstack/engine/orchestration/NetworkOrchestrator.java index 9bb23a96763..ab5a21c7406 100755 --- a/engine/orchestration/src/org/apache/cloudstack/engine/orchestration/NetworkOrchestrator.java +++ b/engine/orchestration/src/org/apache/cloudstack/engine/orchestration/NetworkOrchestrator.java @@ -1557,10 +1557,6 @@ public class NetworkOrchestrator extends ManagerBase implements NetworkOrchestra List providersToImplement = getNetworkProviders(network.getId()); for (NetworkElement element : networkElements) { if (providersToImplement.contains(element.getProvider())) { - if (!_networkModel.isProviderEnabledInPhysicalNetwork(_networkModel.getPhysicalNetworkId(network), element.getProvider().getName())) { - throw new CloudRuntimeException("Service provider " + element.getProvider().getName() + " either doesn't exist or is not enabled in physical network id: " - + network.getPhysicalNetworkId()); - } if (s_logger.isDebugEnabled()) { s_logger.debug("Asking " + element.getName() + " to release " + profile); } @@ -1615,10 +1611,6 @@ public class NetworkOrchestrator extends ManagerBase implements NetworkOrchestra List providersToImplement = getNetworkProviders(network.getId()); for (NetworkElement element : networkElements) { if (providersToImplement.contains(element.getProvider())) { - if (!_networkModel.isProviderEnabledInPhysicalNetwork(_networkModel.getPhysicalNetworkId(network), element.getProvider().getName())) { - throw new CloudRuntimeException("Service provider " + element.getProvider().getName() + " either doesn't exist or is not enabled in physical network id: " - + network.getPhysicalNetworkId()); - } if (s_logger.isDebugEnabled()) { s_logger.debug("Asking " + element.getName() + " to release " + nic); } @@ -2150,11 +2142,6 @@ public class NetworkOrchestrator extends ManagerBase implements NetworkOrchestra for (NetworkElement element : networkElements) { if (providersToShutdown.contains(element.getProvider())) { try { - if (!_networkModel.isProviderEnabledInPhysicalNetwork(_networkModel.getPhysicalNetworkId(network), element.getProvider().getName())) { - s_logger.warn("Unable to complete shutdown of the network elements due to element: " + element.getName() - + " either doesn't exist or not enabled in the physical network " + _networkModel.getPhysicalNetworkId(network)); - success = false; - } if (s_logger.isDebugEnabled()) { s_logger.debug("Sending network shutdown to " + element.getName()); } @@ -2238,12 +2225,6 @@ public class NetworkOrchestrator extends ManagerBase implements NetworkOrchestra for (NetworkElement element : networkElements) { if (providersToDestroy.contains(element.getProvider())) { try { - if (!_networkModel.isProviderEnabledInPhysicalNetwork(_networkModel.getPhysicalNetworkId(network), element.getProvider().getName())) { - s_logger.warn("Unable to complete destroy of the network elements due to element: " + element.getName() - + " either doesn't exist or not enabled in the physical network " + _networkModel.getPhysicalNetworkId(network)); - success = false; - } - if (s_logger.isDebugEnabled()) { s_logger.debug("Sending destroy to " + element); } From 89736d011e66f193ace97427aea675e2333ac94d Mon Sep 17 00:00:00 2001 From: Chandan Purushothama Date: Mon, 15 Sep 2014 23:15:57 -0700 Subject: [PATCH 022/129] CLOUDSTACK-7555 - Fixed the test_usage script - Template now belongs to the Regular Account to test TEMPLATE.CREATE Event Signed-off-by: SrikanteswaraRao Talluri (cherry picked from commit f3252db797a6d53a1922a60b29cd6b4914de7d51) --- test/integration/component/test_usage.py | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/test/integration/component/test_usage.py b/test/integration/component/test_usage.py index e99bb816c29..81cce48c062 100644 --- a/test/integration/component/test_usage.py +++ b/test/integration/component/test_usage.py @@ -744,7 +744,9 @@ class TestTemplateUsage(cloudstackTestCase): self.template = Template.create( self.apiclient, self.services["templates"], - self.volume.id + self.volume.id, + TestTemplateUsage.account.name, + TestTemplateUsage.account.domainid ) self.debug("Created template with ID: %s" % self.template.id) # Delete template From 43a9bbf5091ae5a3e7546a02c84313b2312e9506 Mon Sep 17 00:00:00 2001 From: Devdeep Singh Date: Thu, 25 Sep 2014 13:10:12 +0530 Subject: [PATCH 023/129] CLOUDSTACK-7598: When a vm deployed by cloudstack is stopped on the hypervisor (outside cloudstack), the state of the vm is not updated in cloudstack db. The ping task was not checking for resource (host) status by default. The power state of the vms is returned as part of the resource status. Fixed the issue by making sure ping task atleast tries once to get the resource status. (cherry picked from commit 55b4ead49594212ba55bfcf7007b0cae11bf68ba) --- .../src/com/cloud/agent/manager/DirectAgentAttache.java | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/engine/orchestration/src/com/cloud/agent/manager/DirectAgentAttache.java b/engine/orchestration/src/com/cloud/agent/manager/DirectAgentAttache.java index 9cf643f3bc4..f39bf1d2ebd 100755 --- a/engine/orchestration/src/com/cloud/agent/manager/DirectAgentAttache.java +++ b/engine/orchestration/src/com/cloud/agent/manager/DirectAgentAttache.java @@ -166,11 +166,13 @@ public class DirectAgentAttache extends AgentAttache { if (resource != null) { PingCommand cmd = null; int retried = 0; - while ( cmd == null && ++retried < _HostPingRetryCount.value()) + cmd = resource.getCurrentStatus(_id); + while (cmd == null && retried++ < _HostPingRetryCount.value()) { - cmd = resource.getCurrentStatus(_id); Thread.sleep(1000*_HostPingRetryTimer.value()); + cmd = resource.getCurrentStatus(_id); } + if (cmd == null) { s_logger.warn("Unable to get current status on " + _id + "(" + _name + ")"); return; From cd3df842f2231acd96cf38f6dfa640d2635b74ee Mon Sep 17 00:00:00 2001 From: Saksham Srivastava Date: Thu, 25 Sep 2014 15:59:08 +0530 Subject: [PATCH 024/129] CLOUDSTACK-7631: Log rotate on VR may fail as /etc/init.d/rsyslog does not anymore support reload option on debian wheezy (cherry picked from commit 3a8c450890299ba02bcc245d962b87da0306b2e1) --- systemvm/patches/debian/config/etc/logrotate.d/rsyslog | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/systemvm/patches/debian/config/etc/logrotate.d/rsyslog b/systemvm/patches/debian/config/etc/logrotate.d/rsyslog index e18271e5fb1..d2a04ca97fe 100644 --- a/systemvm/patches/debian/config/etc/logrotate.d/rsyslog +++ b/systemvm/patches/debian/config/etc/logrotate.d/rsyslog @@ -7,7 +7,7 @@ delaycompress compress postrotate - invoke-rc.d rsyslog reload > /dev/null + invoke-rc.d rsyslog rotate > /dev/null endscript } @@ -32,6 +32,6 @@ delaycompress sharedscripts postrotate - invoke-rc.d rsyslog reload > /dev/null + invoke-rc.d rsyslog rotate > /dev/null endscript } From a35521315e21d274bdae93ed89462b0c5909789c Mon Sep 17 00:00:00 2001 From: Rohit Yadav Date: Thu, 25 Sep 2014 16:43:48 +0200 Subject: [PATCH 025/129] CID-1223274: Remove dead local storage code from VolumeApiServiceImpl Signed-off-by: Rohit Yadav (cherry picked from commit 60e492aeb9a9ea53f6e741ec6718c618a9b27aeb) --- server/src/com/cloud/storage/VolumeApiServiceImpl.java | 5 ----- 1 file changed, 5 deletions(-) diff --git a/server/src/com/cloud/storage/VolumeApiServiceImpl.java b/server/src/com/cloud/storage/VolumeApiServiceImpl.java index cf18555bfca..8ccede7d156 100644 --- a/server/src/com/cloud/storage/VolumeApiServiceImpl.java +++ b/server/src/com/cloud/storage/VolumeApiServiceImpl.java @@ -291,11 +291,6 @@ public class VolumeApiServiceImpl extends ManagerBase implements VolumeApiServic throw new IllegalArgumentException("Image format is incorrect " + format + ". Supported formats are " + EnumUtils.listValues(ImageFormat.values())); } - String userSpecifiedName = volumeName; - if (userSpecifiedName == null) { - userSpecifiedName = getRandomVolumeName(); - } - UriUtils.validateUrl(format, url); From a420028d67e8551facc4e1d31ccd51e5654aa87c Mon Sep 17 00:00:00 2001 From: Rohit Yadav Date: Thu, 25 Sep 2014 17:12:40 +0200 Subject: [PATCH 026/129] XenServer56FP1Resource: remove unused import Signed-off-by: Rohit Yadav (cherry picked from commit 410092bbe1b81a254a207edf724b7768fcb5a9fc) --- .../hypervisor/xenserver/resource/XenServer56FP1Resource.java | 1 - 1 file changed, 1 deletion(-) diff --git a/plugins/hypervisors/xenserver/src/com/cloud/hypervisor/xenserver/resource/XenServer56FP1Resource.java b/plugins/hypervisors/xenserver/src/com/cloud/hypervisor/xenserver/resource/XenServer56FP1Resource.java index a119f489154..7772cbba144 100644 --- a/plugins/hypervisors/xenserver/src/com/cloud/hypervisor/xenserver/resource/XenServer56FP1Resource.java +++ b/plugins/hypervisors/xenserver/src/com/cloud/hypervisor/xenserver/resource/XenServer56FP1Resource.java @@ -18,7 +18,6 @@ package com.cloud.hypervisor.xenserver.resource; import java.io.File; import java.util.ArrayList; -import java.util.HashMap; import java.util.HashSet; import java.util.List; import java.util.Map; From fbb9e2b2104a5fd55118346651bfe621f6df7454 Mon Sep 17 00:00:00 2001 From: Rohit Yadav Date: Thu, 25 Sep 2014 17:03:47 +0200 Subject: [PATCH 027/129] CID-1192798: Remove unused boolean variable Signed-off-by: Rohit Yadav (cherry picked from commit 6e06ae9e8ea879e892d6311761a6042fa78cea3f) --- .../apache/cloudstack/api/command/user/vpc/CreateVPCCmd.java | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/api/src/org/apache/cloudstack/api/command/user/vpc/CreateVPCCmd.java b/api/src/org/apache/cloudstack/api/command/user/vpc/CreateVPCCmd.java index e2f261e1ba3..e5e50178d9b 100644 --- a/api/src/org/apache/cloudstack/api/command/user/vpc/CreateVPCCmd.java +++ b/api/src/org/apache/cloudstack/api/command/user/vpc/CreateVPCCmd.java @@ -155,10 +155,9 @@ public class CreateVPCCmd extends BaseAsyncCreateCmd { @Override public void execute() { Vpc vpc = null; - boolean success = true; try { if (isStart()) { - success = _vpcService.startVpc(getEntityId(), true); + _vpcService.startVpc(getEntityId(), true); } else { s_logger.debug("Not starting VPC as " + ApiConstants.START + "=false was passed to the API"); } From ff42d5ad54b2c7c8f1570addb14b4d7c477400ba Mon Sep 17 00:00:00 2001 From: Rohit Yadav Date: Thu, 25 Sep 2014 16:52:09 +0200 Subject: [PATCH 028/129] CID-1211005: Fix comparison, Class is always instance of Class Signed-off-by: Rohit Yadav (cherry picked from commit 59482b3eba268570885d64dc9b0527a90cabbc07) --- server/src/com/cloud/event/ActionEventUtils.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/server/src/com/cloud/event/ActionEventUtils.java b/server/src/com/cloud/event/ActionEventUtils.java index 68a328b8205..2ac43036c34 100755 --- a/server/src/com/cloud/event/ActionEventUtils.java +++ b/server/src/com/cloud/event/ActionEventUtils.java @@ -301,7 +301,7 @@ public class ActionEventUtils { try{ Object key = entry.getKey(); Class clz = Class.forName((String)key); - if(clz instanceof Class && Identity.class.isAssignableFrom(clz)){ + if(clz != null && Identity.class.isAssignableFrom(clz)){ String uuid = getEntityUuid(clz, entry.getValue()); eventDescription.put(ReflectUtil.getEntityName(clz), uuid); } From 4d8dfc9b7c5706f4384bcdb2301f88e1cf8d4c82 Mon Sep 17 00:00:00 2001 From: Rohit Yadav Date: Thu, 25 Sep 2014 17:02:13 +0200 Subject: [PATCH 029/129] CID-1192810: Remove useless control flow Signed-off-by: Rohit Yadav (cherry picked from commit f74446a195d2a0fa4f1380254416a8a8538a6893) --- server/src/com/cloud/deploy/DeploymentPlanningManagerImpl.java | 2 -- 1 file changed, 2 deletions(-) diff --git a/server/src/com/cloud/deploy/DeploymentPlanningManagerImpl.java b/server/src/com/cloud/deploy/DeploymentPlanningManagerImpl.java index 9eaef1ea890..ca66403f192 100755 --- a/server/src/com/cloud/deploy/DeploymentPlanningManagerImpl.java +++ b/server/src/com/cloud/deploy/DeploymentPlanningManagerImpl.java @@ -512,8 +512,6 @@ StateListener { public DeploymentPlanner getDeploymentPlannerByName(String plannerName) { if (plannerName != null) { for (DeploymentPlanner plannerInList : _planners) { - if (plannerName != null) { - } if (plannerName.equalsIgnoreCase(plannerInList.getName())) { return plannerInList; } From 6e04f9378577da8e472bc5e9b38126c05418a4ad Mon Sep 17 00:00:00 2001 From: Rohit Yadav Date: Thu, 25 Sep 2014 16:59:47 +0200 Subject: [PATCH 030/129] CID-1192822: ids is a List, the cast to List is removed Signed-off-by: Rohit Yadav (cherry picked from commit 92858afd55a2a19cf698bbbf34c891fbf8087e9d) --- server/src/com/cloud/api/query/QueryManagerImpl.java | 7 ++----- 1 file changed, 2 insertions(+), 5 deletions(-) diff --git a/server/src/com/cloud/api/query/QueryManagerImpl.java b/server/src/com/cloud/api/query/QueryManagerImpl.java index 4f775fc83fa..475b42c385b 100644 --- a/server/src/com/cloud/api/query/QueryManagerImpl.java +++ b/server/src/com/cloud/api/query/QueryManagerImpl.java @@ -912,11 +912,8 @@ public class QueryManagerImpl extends ManagerBase implements QueryService { sc.setParameters("display", display); } - if (ids != null) { - List idList = (ids instanceof List ? (List)ids : null); - if (idList != null && !idList.isEmpty()) { - sc.setParameters("idIN", idList.toArray()); - } + if (ids != null && !ids.isEmpty()) { + sc.setParameters("idIN", ids.toArray()); } if (templateId != null) { From eb3773c27fd2ba3364c7ffb0674ffdffc7306727 Mon Sep 17 00:00:00 2001 From: Rohit Yadav Date: Thu, 25 Sep 2014 16:46:18 +0200 Subject: [PATCH 031/129] CID-1223272: Remove DLS code, exceptions and logging handled at lower layers Signed-off-by: Rohit Yadav (cherry picked from commit f40f16b61815580717cd8ab0f70109c65c06e7ce) --- .../cloudstack/api/command/admin/vpc/CreateVPCCmdByAdmin.java | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/api/src/org/apache/cloudstack/api/command/admin/vpc/CreateVPCCmdByAdmin.java b/api/src/org/apache/cloudstack/api/command/admin/vpc/CreateVPCCmdByAdmin.java index 25e63250155..b7f33bf25d3 100644 --- a/api/src/org/apache/cloudstack/api/command/admin/vpc/CreateVPCCmdByAdmin.java +++ b/api/src/org/apache/cloudstack/api/command/admin/vpc/CreateVPCCmdByAdmin.java @@ -38,10 +38,9 @@ public class CreateVPCCmdByAdmin extends CreateVPCCmd { @Override public void execute() { Vpc vpc = null; - boolean success = true; try { if (isStart()) { - success = _vpcService.startVpc(getEntityId(), true); + _vpcService.startVpc(getEntityId(), true); } else { s_logger.debug("Not starting VPC as " + ApiConstants.START + "=false was passed to the API"); } From b4a2640764955ec8b66ce8027b614bdfa7c95728 Mon Sep 17 00:00:00 2001 From: Vincent Bernat Date: Thu, 25 Sep 2014 15:27:50 +0200 Subject: [PATCH 032/129] CLOUDSTACK-7633: fix "Provides" in most LSB headers In init.d scripts, the LSB header may specify what kind of service is provided by an init script. If spaces are used, this means the init script is providing several boot facilities. We fix that by using an hyphen. Signed-off-by: Rohit Yadav (cherry picked from commit 2401eb927bbda69f0376d1f34ef20631e1188540) --- agent/distro/opensuse/sles/SYSCONFDIR/init.d/cloud-agent.in | 2 +- agent/distro/sles/SYSCONFDIR/init.d/cloud-agent.in | 2 +- agent/distro/ubuntu/SYSCONFDIR/init.d/cloud-agent.in | 2 +- packaging/centos63/cloud-usage.rc | 2 +- packaging/debian/init/cloud-agent | 2 +- packaging/debian/init/cloud-usage | 2 +- python/distro/opensuse/SYSCONFDIR/init.d/cloud-ipallocator.in | 2 +- python/distro/sles/SYSCONFDIR/init.d/cloud-ipallocator.in | 2 +- usage/distro/centos/SYSCONFDIR/rc.d/init.d/cloud-usage.in | 2 +- usage/distro/fedora/SYSCONFDIR/rc.d/init.d/cloud-usage.in | 2 +- usage/distro/opensuse/SYSCONFDIR/init.d/cloud-usage.in | 2 +- usage/distro/rhel/SYSCONFDIR/rc.d/init.d/cloud-usage.in | 2 +- usage/distro/sles/SYSCONFDIR/init.d/cloud-usage.in | 2 +- usage/distro/ubuntu/SYSCONFDIR/init.d/cloud-usage.in | 2 +- 14 files changed, 14 insertions(+), 14 deletions(-) diff --git a/agent/distro/opensuse/sles/SYSCONFDIR/init.d/cloud-agent.in b/agent/distro/opensuse/sles/SYSCONFDIR/init.d/cloud-agent.in index 741317bde43..3a1d053be2d 100644 --- a/agent/distro/opensuse/sles/SYSCONFDIR/init.d/cloud-agent.in +++ b/agent/distro/opensuse/sles/SYSCONFDIR/init.d/cloud-agent.in @@ -1,6 +1,6 @@ #!/bin/bash ### BEGIN INIT INFO -# Provides: cloud agent +# Provides: cloudstack-agent # Required-Start: $network # Required-Stop: $network # Default-Start: 3 4 5 diff --git a/agent/distro/sles/SYSCONFDIR/init.d/cloud-agent.in b/agent/distro/sles/SYSCONFDIR/init.d/cloud-agent.in index 741317bde43..3a1d053be2d 100644 --- a/agent/distro/sles/SYSCONFDIR/init.d/cloud-agent.in +++ b/agent/distro/sles/SYSCONFDIR/init.d/cloud-agent.in @@ -1,6 +1,6 @@ #!/bin/bash ### BEGIN INIT INFO -# Provides: cloud agent +# Provides: cloudstack-agent # Required-Start: $network # Required-Stop: $network # Default-Start: 3 4 5 diff --git a/agent/distro/ubuntu/SYSCONFDIR/init.d/cloud-agent.in b/agent/distro/ubuntu/SYSCONFDIR/init.d/cloud-agent.in index 0e8705307e8..c30e526d282 100755 --- a/agent/distro/ubuntu/SYSCONFDIR/init.d/cloud-agent.in +++ b/agent/distro/ubuntu/SYSCONFDIR/init.d/cloud-agent.in @@ -1,7 +1,7 @@ #!/bin/bash ### BEGIN INIT INFO -# Provides: cloud agent +# Provides: cloudstack-agent # Required-Start: $network $local_fs # Required-Stop: $network $local_fs # Default-Start: 3 4 5 diff --git a/packaging/centos63/cloud-usage.rc b/packaging/centos63/cloud-usage.rc index 9e3d6d6b2a8..774113745d7 100755 --- a/packaging/centos63/cloud-usage.rc +++ b/packaging/centos63/cloud-usage.rc @@ -1,7 +1,7 @@ #!/bin/bash ### BEGIN INIT INFO -# Provides: cloud usage +# Provides: cloudstack-usage # Required-Start: $network $local_fs # Required-Stop: $network $local_fs # Default-Start: 3 4 5 diff --git a/packaging/debian/init/cloud-agent b/packaging/debian/init/cloud-agent index eb2c3d14754..7e4e7d03802 100755 --- a/packaging/debian/init/cloud-agent +++ b/packaging/debian/init/cloud-agent @@ -1,7 +1,7 @@ #!/bin/bash ### BEGIN INIT INFO -# Provides: cloud agent +# Provides: cloudstack-agent # Required-Start: $network $local_fs # Required-Stop: $network $local_fs # Default-Start: 3 4 5 diff --git a/packaging/debian/init/cloud-usage b/packaging/debian/init/cloud-usage index d1939180093..e6129c26b6c 100755 --- a/packaging/debian/init/cloud-usage +++ b/packaging/debian/init/cloud-usage @@ -1,7 +1,7 @@ #!/bin/bash ### BEGIN INIT INFO -# Provides: cloudstack usage +# Provides: cloudstack-usage # Required-Start: $network $local_fs # Required-Stop: $network $local_fs # Default-Start: 3 4 5 diff --git a/python/distro/opensuse/SYSCONFDIR/init.d/cloud-ipallocator.in b/python/distro/opensuse/SYSCONFDIR/init.d/cloud-ipallocator.in index 558f5a2ee98..51b4f58e179 100755 --- a/python/distro/opensuse/SYSCONFDIR/init.d/cloud-ipallocator.in +++ b/python/distro/opensuse/SYSCONFDIR/init.d/cloud-ipallocator.in @@ -17,7 +17,7 @@ # under the License. ### BEGIN INIT INFO -# Provides: cloud ipallocator +# Provides: cloudstack-ipallocator # Required-Start: $network # Required-Stop: $network # Default-Start: 3 4 5 diff --git a/python/distro/sles/SYSCONFDIR/init.d/cloud-ipallocator.in b/python/distro/sles/SYSCONFDIR/init.d/cloud-ipallocator.in index 558f5a2ee98..51b4f58e179 100755 --- a/python/distro/sles/SYSCONFDIR/init.d/cloud-ipallocator.in +++ b/python/distro/sles/SYSCONFDIR/init.d/cloud-ipallocator.in @@ -17,7 +17,7 @@ # under the License. ### BEGIN INIT INFO -# Provides: cloud ipallocator +# Provides: cloudstack-ipallocator # Required-Start: $network # Required-Stop: $network # Default-Start: 3 4 5 diff --git a/usage/distro/centos/SYSCONFDIR/rc.d/init.d/cloud-usage.in b/usage/distro/centos/SYSCONFDIR/rc.d/init.d/cloud-usage.in index cb5beb5cff1..cd12a1c0375 100755 --- a/usage/distro/centos/SYSCONFDIR/rc.d/init.d/cloud-usage.in +++ b/usage/distro/centos/SYSCONFDIR/rc.d/init.d/cloud-usage.in @@ -1,7 +1,7 @@ #!/bin/bash ### BEGIN INIT INFO -# Provides: cloud usage +# Provides: cloudstack-usage # Required-Start: $network $local_fs # Required-Stop: $network $local_fs # Default-Start: 3 4 5 diff --git a/usage/distro/fedora/SYSCONFDIR/rc.d/init.d/cloud-usage.in b/usage/distro/fedora/SYSCONFDIR/rc.d/init.d/cloud-usage.in index cb5beb5cff1..cd12a1c0375 100755 --- a/usage/distro/fedora/SYSCONFDIR/rc.d/init.d/cloud-usage.in +++ b/usage/distro/fedora/SYSCONFDIR/rc.d/init.d/cloud-usage.in @@ -1,7 +1,7 @@ #!/bin/bash ### BEGIN INIT INFO -# Provides: cloud usage +# Provides: cloudstack-usage # Required-Start: $network $local_fs # Required-Stop: $network $local_fs # Default-Start: 3 4 5 diff --git a/usage/distro/opensuse/SYSCONFDIR/init.d/cloud-usage.in b/usage/distro/opensuse/SYSCONFDIR/init.d/cloud-usage.in index f9682635b1e..985e2fe2bfb 100755 --- a/usage/distro/opensuse/SYSCONFDIR/init.d/cloud-usage.in +++ b/usage/distro/opensuse/SYSCONFDIR/init.d/cloud-usage.in @@ -1,7 +1,7 @@ #!/bin/bash ### BEGIN INIT INFO -# Provides: cloud usage +# Provides: cloudstack-usage # Required-Start: $network $local_fs # Required-Stop: $network $local_fs # Default-Start: 3 4 5 diff --git a/usage/distro/rhel/SYSCONFDIR/rc.d/init.d/cloud-usage.in b/usage/distro/rhel/SYSCONFDIR/rc.d/init.d/cloud-usage.in index cb5beb5cff1..cd12a1c0375 100644 --- a/usage/distro/rhel/SYSCONFDIR/rc.d/init.d/cloud-usage.in +++ b/usage/distro/rhel/SYSCONFDIR/rc.d/init.d/cloud-usage.in @@ -1,7 +1,7 @@ #!/bin/bash ### BEGIN INIT INFO -# Provides: cloud usage +# Provides: cloudstack-usage # Required-Start: $network $local_fs # Required-Stop: $network $local_fs # Default-Start: 3 4 5 diff --git a/usage/distro/sles/SYSCONFDIR/init.d/cloud-usage.in b/usage/distro/sles/SYSCONFDIR/init.d/cloud-usage.in index f9682635b1e..985e2fe2bfb 100755 --- a/usage/distro/sles/SYSCONFDIR/init.d/cloud-usage.in +++ b/usage/distro/sles/SYSCONFDIR/init.d/cloud-usage.in @@ -1,7 +1,7 @@ #!/bin/bash ### BEGIN INIT INFO -# Provides: cloud usage +# Provides: cloudstack-usage # Required-Start: $network $local_fs # Required-Stop: $network $local_fs # Default-Start: 3 4 5 diff --git a/usage/distro/ubuntu/SYSCONFDIR/init.d/cloud-usage.in b/usage/distro/ubuntu/SYSCONFDIR/init.d/cloud-usage.in index f9682635b1e..985e2fe2bfb 100755 --- a/usage/distro/ubuntu/SYSCONFDIR/init.d/cloud-usage.in +++ b/usage/distro/ubuntu/SYSCONFDIR/init.d/cloud-usage.in @@ -1,7 +1,7 @@ #!/bin/bash ### BEGIN INIT INFO -# Provides: cloud usage +# Provides: cloudstack-usage # Required-Start: $network $local_fs # Required-Stop: $network $local_fs # Default-Start: 3 4 5 From 5309aa3dd9d96ce68ed918f74886fb0a5747dc4e Mon Sep 17 00:00:00 2001 From: Rohit Yadav Date: Thu, 25 Sep 2014 16:48:27 +0200 Subject: [PATCH 033/129] CID-1222206: Remove DLS from XenServer56FP1Resource Signed-off-by: Rohit Yadav (cherry picked from commit b3946802e3a94e60a567fd4cb56f9da8f481ab95) --- .../xenserver/resource/XenServer56FP1Resource.java | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/plugins/hypervisors/xenserver/src/com/cloud/hypervisor/xenserver/resource/XenServer56FP1Resource.java b/plugins/hypervisors/xenserver/src/com/cloud/hypervisor/xenserver/resource/XenServer56FP1Resource.java index 7772cbba144..eeeb9590986 100644 --- a/plugins/hypervisors/xenserver/src/com/cloud/hypervisor/xenserver/resource/XenServer56FP1Resource.java +++ b/plugins/hypervisors/xenserver/src/com/cloud/hypervisor/xenserver/resource/XenServer56FP1Resource.java @@ -118,11 +118,8 @@ public class XenServer56FP1Resource extends XenServer56Resource { */ @Override protected boolean isDmcEnabled(Connection conn, Host host) throws XenAPIException, XmlRpcException { - Map hostParams = new HashMap(); - hostParams = host.getLicenseParams(conn); - + Map hostParams = host.getLicenseParams(conn); Boolean isDmcEnabled = hostParams.get("restrict_dmc").equalsIgnoreCase("false"); - return isDmcEnabled; } } From a329a9bda99f05c306b92a6d481c6daa7d1a922f Mon Sep 17 00:00:00 2001 From: Rohit Yadav Date: Thu, 25 Sep 2014 16:40:57 +0200 Subject: [PATCH 034/129] CID-1232342: Fix DLS in createOrUpdateRecord in GloboDnsResource Signed-off-by: Rohit Yadav (cherry picked from commit e70f75d6caefdf27f65997b027b9bd0812ae4a12) --- .../globo/globodns/cloudstack/resource/GloboDnsResource.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/plugins/network-elements/globodns/src/com/globo/globodns/cloudstack/resource/GloboDnsResource.java b/plugins/network-elements/globodns/src/com/globo/globodns/cloudstack/resource/GloboDnsResource.java index c1678458b61..84c1b5b44e5 100644 --- a/plugins/network-elements/globodns/src/com/globo/globodns/cloudstack/resource/GloboDnsResource.java +++ b/plugins/network-elements/globodns/src/com/globo/globodns/cloudstack/resource/GloboDnsResource.java @@ -363,7 +363,7 @@ public class GloboDnsResource extends ManagerBase implements ServerResource { if (record == null) { // Create new record record = _globoDns.getRecordAPI().createRecord(domainId, name, ip, type); - s_logger.info("Created record " + name + " in domain " + domainId); + s_logger.info("Created record " + record.getName() + " in domain " + domainId); } else { if (!ip.equals(record.getContent())) { if (Boolean.TRUE.equals(override)) { From d39c29092baedcc639ca772c47b0322a9582a112 Mon Sep 17 00:00:00 2001 From: Jessica Wang Date: Thu, 25 Sep 2014 11:29:04 -0700 Subject: [PATCH 035/129] CLOUDSTACK-7634: UI > Project Dropdown on top menu > not all projects are populated when there are more than 500 projects in database. (cherry picked from commit cb60b0a1c043bd9e3c8b9812f33a1a15fc9d8322) --- ui/scripts/projects.js | 59 +++++++++++++++++++++++++----------------- 1 file changed, 35 insertions(+), 24 deletions(-) diff --git a/ui/scripts/projects.js b/ui/scripts/projects.js index dd380fb255a..7453b535c0d 100644 --- a/ui/scripts/projects.js +++ b/ui/scripts/projects.js @@ -621,37 +621,48 @@ }, // Project listing data provider - dataProvider: function(args) { + dataProvider: function(args) { var user = args.context.users[0]; - var data = { + var data1 = { accountId: user.userid, listAll: true }; - if (args.projectName) { - data.keyword = args.projectName; + data1.keyword = args.projectName; } - $.ajax({ - url: createURL('listProjects', { - ignoreProject: true - }), - data: data, - dataType: 'json', - async: true, - success: function(data) { - args.response.success({ - data: $.map( - data.listprojectsresponse.project ? - data.listprojectsresponse.project : [], - function(elem) { - return $.extend(elem, { - displayText: elem.displaytext - }); - }) - }); - } - }); + var array1 = []; + var page = 1; + var getNextPage = function() { + var data2 = $.extend({}, data1, { + page: page, + pageSize: 500 + }); + + $.ajax({ + url: createURL('listProjects', { + ignoreProject: true + }), + data: data2, + async: false, + success: function(json) { + var projects = json.listprojectsresponse.project; + if (projects != undefined) { + for(var i = 0; i < projects.length; i++) { + array1.push($.extend(projects[i], { + displayText: projects[i].displaytext + })); + } + } + if (array1.length < json.listprojectsresponse.count) { + page++; + getNextPage(); + } + } + }); + } + getNextPage(); + args.response.success({ data: array1 }); } }; From 3fd97ca3b833eb3a42fc4a0d3eb8ab042b70090e Mon Sep 17 00:00:00 2001 From: vetrivelc Date: Thu, 25 Sep 2014 21:40:43 +0530 Subject: [PATCH 036/129] Fixed Encoding issue to message_ja_JP & message_zh_CN properties files. Signed-off-by: vetrivelc (cherry picked from commit 03e3a39ede5c7be485effa32b31598af3165b5f5) --- .../resources/messages_ja_JP.properties | 3785 +++++++++-------- .../resources/messages_zh_CN.properties | 3775 ++++++++-------- 2 files changed, 3781 insertions(+), 3779 deletions(-) diff --git a/client/WEB-INF/classes/resources/messages_ja_JP.properties b/client/WEB-INF/classes/resources/messages_ja_JP.properties index 6888a9f951a..7bc90b538a4 100644 --- a/client/WEB-INF/classes/resources/messages_ja_JP.properties +++ b/client/WEB-INF/classes/resources/messages_ja_JP.properties @@ -14,1948 +14,1949 @@ # KIND, either express or implied. See the License for the # specific language governing permissions and limitations # under the License. -label.vm.ip=VM IP Address -message.listView.subselect.multi=(Ctrl/Cmd \u0192L\ufffd[\u201a\u00f0\u2030\u0178\u201a\u00b5\u201a\u00c8\u201a\u00aa\u201a\u00e7\u0192N\u0192\u0160\u0192b\u0192N) -label.use.vm.ips=\u017d\u0178\u201a\u00cc VM IP \u0192A\u0192h\u0192\u0152\u0192X\u201a\u00f0\u017dg\u2014p -label.reinstall.vm=VM \u201a\u00cc\ufffd\u00c4\u0192C\u0192\u201c\u0192X\u0192g\ufffd[\u0192\u2039 -message.reinstall.vm=\u2019\ufffd: \u2019\ufffd\u02c6\u00d3\u201a\u00b5\u201a\u00c4\u2018\u00b1\ufffds\u201a\u00b5\u201a\u00c4\u201a\u00ad\u201a\u00be\u201a\u00b3\u201a\u00a2\ufffdB\u201a\u00b1\u201a\u00ea\u201a\u00c9\u201a\u00e6\u201a\u00e8 VM \u201a\u00aa\u0192e\u0192\u201c\u0192v\u0192\u0152\ufffd[\u0192g\u201a\u00a9\u201a\u00e7\ufffd\u00c4\u0192C\u0192\u201c\u0192X\u0192g\ufffd[\u0192\u2039\u201a\u00b3\u201a\u00ea\u201a\u00dc\u201a\u00b7\ufffdB\u0192\u2039\ufffd[\u0192g \u0192f\u0192B\u0192X\u0192N\ufffd\u00e3\u201a\u00cc\u0192f\ufffd[\u0192^\u201a\u00cd\u017d\u00b8\u201a\u00ed\u201a\u00ea\u201a\u00dc\u201a\u00b7\ufffdB\u2019\u00c7\u2030\u00c1\u201a\u00cc\u0192f\ufffd[\u0192^ \u0192{\u0192\u0160\u0192\u2026\ufffd[\u0192\u20ac\u201a\u00aa\u201a\u00a0\u201a\u00e9\ufffd\u00ea\ufffd\u2021\u201a\u00cd\ufffdA\u201a\u00bb\u201a\u00cc\u0192{\u0192\u0160\u0192\u2026\ufffd[\u0192\u20ac\u201a\u00c9\u2030e\u2039\u00bf\u201a\u00cd\u201a\u00a0\u201a\u00e8\u201a\u00dc\u201a\u00b9\u201a\u00f1\ufffdB -label.recover.vm=VM \u201a\u00cc\u2022\u0153\u0152\u00b3 -message.recover.vm=\u201a\u00b1\u201a\u00cc VM \u201a\u00f0\u2022\u0153\u0152\u00b3\u201a\u00b5\u201a\u00c4\u201a\u00e0\u201a\u00e6\u201a\u00eb\u201a\u00b5\u201a\u00a2\u201a\u00c5\u201a\u00b7\u201a\u00a9? -label.port=\u0192|\ufffd[\u0192g -label.remove.ldap=LDAP \u201a\u00cc\ufffd\u00ed\ufffd\u0153 -label.configure.ldap=LDAP \u201a\u00cc\ufffd\\ufffd\u00ac -label.ldap.configuration=LDAP \ufffd\\ufffd\u00ac -label.ldap.port=LDAP \u0192|\ufffd[\u0192g -label.create.nfs.secondary.staging.store=NFS \u0192Z\u0192J\u0192\u201c\u0192_\u0192\u0160 \u0192X\u0192e\ufffd[\u0192W\u0192\u201c\u0192O \u0192X\u0192g\u0192A\u201a\u00f0\ufffd\u00ec\ufffd\u00ac\u201a\u00b7\u201a\u00e9 -label.volatile=\u0160\u00f6\u201d\u00ad\ufffd\u00ab -label.planner.mode=\u0192v\u0192\u2030\u0192\u201c\u0192i\ufffd[ \u0192\u201a\ufffd[\u0192h -label.deployment.planner=\u201cW\u0160J\u0192v\u0192\u2030\u0192\u201c\u0192i\ufffd[ -label.quiesce.vm=VM \u201a\u00f0\u2039x\u017d~\u201a\u00b7\u201a\u00e9 -label.smb.username=SMB \u0192\u2020\ufffd[\u0192U\ufffd[\u2013\u00bc -label.smb.password=SMB \u0192p\u0192X\u0192\ufffd\ufffd[\u0192h -label.smb.domain=SMB \u0192h\u0192\ufffd\u0192C\u0192\u201c -label.hypervisors=\u0192n\u0192C\u0192p\ufffd[\u0192o\u0192C\u0192U\ufffd[ -label.home=\u0192z\ufffd[\u0192\u20ac -label.sockets=CPU \u0192\\u0192P\u0192b\u0192g -label.root.disk.size=\u0192\u2039\ufffd[\u0192g \u0192f\u0192B\u0192X\u0192N \u0192T\u0192C\u0192Y -label.s3.nfs.server=S3 NFS \u0192T\ufffd[\u0192o\ufffd[ -label.s3.nfs.path=S3 NFS \u0192p\u0192X -label.delete.events=\u0192C\u0192x\u0192\u201c\u0192g\u201a\u00cc\ufffd\u00ed\ufffd\u0153 -label.delete.alerts=\u0192A\u0192\u2030\ufffd[\u0192g\u201a\u00cc\ufffd\u00ed\ufffd\u0153 -label.archive.alerts=\u0192A\u0192\u2030\ufffd[\u0192g\u201a\u00cc\u0192A\ufffd[\u0192J\u0192C\u0192u -label.archive.events=\u0192C\u0192x\u0192\u201c\u0192g\u201a\u00cc\u0192A\ufffd[\u0192J\u0192C\u0192u -label.by.alert.type=\u0192A\u0192\u2030\ufffd[\u0192g\u201a\u00cc\u017d\u00ed\u2014\u00de -label.by.event.type=\u0192C\u0192x\u0192\u201c\u0192g\u201a\u00cc\u017d\u00ed\u2014\u00de -label.by.date.start=\u201c\u00fa\u2022t (\u0160J\u017dn) -label.by.date.end=\u201c\u00fa\u2022t (\ufffdI\u2014\u00b9) -label.switch.type=\u0192X\u0192C\u0192b\u0192`\u201a\u00cc\u017d\u00ed\u2014\u00de -label.service.state=\u0192T\ufffd[\u0192r\u0192X\u201a\u00cc\ufffd\u00f3\u2018\u00d4 -label.egress.default.policy=\u2018\u2014\ufffdM\u201a\u00cc\u0192f\u0192t\u0192H\u0192\u2039\u0192g \u0192|\u0192\u0160\u0192V\ufffd[ -label.routing=\u0192\u2039\ufffd[\u0192e\u0192B\u0192\u201c\u0192O +label.vm.ip=VM IP \u30a2\u30c9\u30ec\u30b9 +message.listView.subselect.multi=(Ctrl/Cmd \u30ad\u30fc\u3092\u62bc\u3057\u306a\u304c\u3089\u30af\u30ea\u30c3\u30af) +label.use.vm.ips=\u6b21\u306e VM IP \u30a2\u30c9\u30ec\u30b9\u3092\u4f7f\u7528 +label.reinstall.vm=VM \u306e\u518d\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb +message.reinstall.vm=\u6ce8: \u6ce8\u610f\u3057\u3066\u7d9a\u884c\u3057\u3066\u304f\u3060\u3055\u3044\u3002\u3053\u308c\u306b\u3088\u308a VM \u304c\u30c6\u30f3\u30d7\u30ec\u30fc\u30c8\u304b\u3089\u518d\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\u3055\u308c\u307e\u3059\u3002\u30eb\u30fc\u30c8 \u30c7\u30a3\u30b9\u30af\u4e0a\u306e\u30c7\u30fc\u30bf\u306f\u5931\u308f\u308c\u307e\u3059\u3002\u8ffd\u52a0\u306e\u30c7\u30fc\u30bf \u30dc\u30ea\u30e5\u30fc\u30e0\u304c\u3042\u308b\u5834\u5408\u306f\u3001\u305d\u306e\u30dc\u30ea\u30e5\u30fc\u30e0\u306b\u5f71\u97ff\u306f\u3042\u308a\u307e\u305b\u3093\u3002 +label.recover.vm=VM \u306e\u5fa9\u5143 +message.recover.vm=\u3053\u306e VM \u3092\u5fa9\u5143\u3057\u3066\u3082\u3088\u308d\u3057\u3044\u3067\u3059\u304b? +label.port=\u30dd\u30fc\u30c8 +label.remove.ldap=LDAP \u306e\u524a\u9664 +label.configure.ldap=LDAP \u306e\u69cb\u6210 +label.ldap.configuration=LDAP \u69cb\u6210 +label.ldap.port=LDAP \u30dd\u30fc\u30c8 +label.create.nfs.secondary.staging.store=NFS \u30bb\u30ab\u30f3\u30c0\u30ea \u30b9\u30c6\u30fc\u30b8\u30f3\u30b0 \u30b9\u30c8\u30a2\u3092\u4f5c\u6210\u3059\u308b +label.volatile=\u63ee\u767a\u6027 +label.planner.mode=\u30d7\u30e9\u30f3\u30ca\u30fc \u30e2\u30fc\u30c9 +label.deployment.planner=\u5c55\u958b\u30d7\u30e9\u30f3\u30ca\u30fc +label.quiesce.vm=VM \u3092\u4f11\u6b62\u3059\u308b +label.smb.username=SMB \u30e6\u30fc\u30b6\u30fc\u540d +label.smb.password=SMB \u30d1\u30b9\u30ef\u30fc\u30c9 +label.smb.domain=SMB \u30c9\u30e1\u30a4\u30f3 +label.hypervisors=\u30cf\u30a4\u30d1\u30fc\u30d0\u30a4\u30b6\u30fc +label.home=\u30db\u30fc\u30e0 +label.sockets=CPU \u30bd\u30b1\u30c3\u30c8 +label.root.disk.size=\u30eb\u30fc\u30c8 \u30c7\u30a3\u30b9\u30af \u30b5\u30a4\u30ba +label.s3.nfs.server=S3 NFS \u30b5\u30fc\u30d0\u30fc +label.s3.nfs.path=S3 NFS \u30d1\u30b9 +label.delete.events=\u30a4\u30d9\u30f3\u30c8\u306e\u524a\u9664 +label.delete.alerts=\u30a2\u30e9\u30fc\u30c8\u306e\u524a\u9664 +label.archive.alerts=\u30a2\u30e9\u30fc\u30c8\u306e\u30a2\u30fc\u30ab\u30a4\u30d6 +label.archive.events=\u30a4\u30d9\u30f3\u30c8\u306e\u30a2\u30fc\u30ab\u30a4\u30d6 +label.by.alert.type=\u30a2\u30e9\u30fc\u30c8\u306e\u7a2e\u985e +label.by.event.type=\u30a4\u30d9\u30f3\u30c8\u306e\u7a2e\u985e +label.by.date.start=\u65e5\u4ed8 (\u958b\u59cb) +label.by.date.end=\u65e5\u4ed8 (\u7d42\u4e86) +label.switch.type=\u30b9\u30a4\u30c3\u30c1\u306e\u7a2e\u985e +label.service.state=\u30b5\u30fc\u30d3\u30b9\u306e\u72b6\u614b +label.egress.default.policy=\u9001\u4fe1\u306e\u30c7\u30d5\u30a9\u30eb\u30c8 \u30dd\u30ea\u30b7\u30fc +label.routing=\u30eb\u30fc\u30c6\u30a3\u30f3\u30b0 label.hvm=HVM -label.about=\u0192o\ufffd[\u0192W\u0192\u2021\u0192\u201c\ufffd\u00ee\u2022\u00f1 +label.about=\u30d0\u30fc\u30b8\u30e7\u30f3\u60c5\u5831 label.app.name=CloudStack -label.about.app=CloudStack \u201a\u00c9\u201a\u00c2\u201a\u00a2\u201a\u00c4 -label.custom.disk.iops=\u0192J\u0192X\u0192^\u0192\u20ac IOPS -label.disk.iops.min=\ufffd\u00c5\ufffd\u00ac IOPS -label.disk.iops.max=\ufffd\u00c5\u2018\u00e5 IOPS -label.disk.iops.total=IOPS \ufffd\u2021\u0152v -label.hypervisor.snapshot.reserve=\u0192n\u0192C\u0192p\ufffd[\u0192o\u0192C\u0192U\ufffd[ \u0192X\u0192i\u0192b\u0192v\u0192V\u0192\u2021\u0192b\u0192g\u2014\\u2013\u00f1 -label.view.secondary.ips=\u0192Z\u0192J\u0192\u201c\u0192_\u0192\u0160 IP \u0192A\u0192h\u0192\u0152\u0192X\u201a\u00cc\u2022\\u017d\u00a6 -message.validate.invalid.characters=\u2013\u00b3\u0152\u00f8\u201a\u00c8\u2022\u00b6\u017d\u0161\u201a\u00aa\u0152\u00a9\u201a\u00c2\u201a\u00a9\u201a\u00e8\u201a\u00dc\u201a\u00b5\u201a\u00bd\ufffdB\ufffdC\ufffd\u00ae\u201a\u00b5\u201a\u00c4\u201a\u00ad\u201a\u00be\u201a\u00b3\u201a\u00a2\ufffdB -message.acquire.ip.nic=\u201a\u00b1\u201a\u00cc NIC \u201a\u00cc\u201a\u00bd\u201a\u00df\u201a\u00c9\ufffdV\u201a\u00b5\u201a\u00a2\u0192Z\u0192J\u0192\u201c\u0192_\u0192\u0160 IP \u0192A\u0192h\u0192\u0152\u0192X\u201a\u00f0\u017d\u00e6\u201c\u00be\u201a\u00b5\u201a\u00c4\u201a\u00e0\u201a\u00e6\u201a\u00eb\u201a\u00b5\u201a\u00a2\u201a\u00c5\u201a\u00b7\u201a\u00a9?
\u2019\ufffd: \ufffdV\u201a\u00b5\u201a\u00ad\u017d\u00e6\u201c\u00be\u201a\u00b5\u201a\u00bd\u0192Z\u0192J\u0192\u201c\u0192_\u0192\u0160 IP \u0192A\u0192h\u0192\u0152\u0192X\u201a\u00cd\u2030\u00bc\u2018z\u0192}\u0192V\u0192\u201c\u201c\u00e0\u201a\u00c5\u017d\u00e8\u201c\u00ae\u201a\u00c5\ufffd\\ufffd\u00ac\u201a\u00b7\u201a\u00e9\u2022K\u2014v\u201a\u00aa\u201a\u00a0\u201a\u00e8\u201a\u00dc\u201a\u00b7\ufffdB -message.select.affinity.groups=\u201a\u00b1\u201a\u00cc VM \u201a\u00f0\u2019\u00c7\u2030\u00c1\u201a\u00b7\u201a\u00e9\u0192A\u0192t\u0192B\u0192j\u0192e\u0192B \u0192O\u0192\u2039\ufffd[\u0192v\u201a\u00f0\u2018I\u2018\u00f0\u201a\u00b5\u201a\u00c4\u201a\u00ad\u201a\u00be\u201a\u00b3\u201a\u00a2\ufffdB -message.no.affinity.groups=\u0192A\u0192t\u0192B\u0192j\u0192e\u0192B \u0192O\u0192\u2039\ufffd[\u0192v\u201a\u00aa\u201a\u00a0\u201a\u00e8\u201a\u00dc\u201a\u00b9\u201a\u00f1\ufffdB\u017d\u0178\u201a\u00cc\u017d\u00e8\ufffd\u2021\u201a\u00c9\ufffdi\u201a\u00f1\u201a\u00c5\u201a\u00ad\u201a\u00be\u201a\u00b3\u201a\u00a2\ufffdB -label.action.delete.nic=NIC \u201a\u00cc\ufffd\u00ed\ufffd\u0153 -message.action.delete.nic=\u201a\u00b1\u201a\u00cc NIC \u201a\u00f0\ufffd\u00ed\ufffd\u0153\u201a\u00b5\u201a\u00c4\u201a\u00e0\u201a\u00e6\u201a\u00eb\u201a\u00b5\u201a\u00a2\u201a\u00c5\u201a\u00b7\u201a\u00a9? \u0160\u00d6\u02dcA\u2022t\u201a\u00af\u201a\u00e7\u201a\u00ea\u201a\u00bd\u0192l\u0192b\u0192g\u0192\ufffd\ufffd[\u0192N\u201a\u00e0 VM \u201a\u00a9\u201a\u00e7\ufffd\u00ed\ufffd\u0153\u201a\u00b3\u201a\u00ea\u201a\u00dc\u201a\u00b7\ufffdB -changed.item.properties=\ufffd\u20ac\u2013\u00da\u201a\u00cc\u0192v\u0192\ufffd\u0192p\u0192e\u0192B\u201a\u00cc\u2022\u00cf\ufffdX -confirm.enable.s3=S3 \u0192x\ufffd[\u0192X\u201a\u00cc\u0192Z\u0192J\u0192\u201c\u0192_\u0192\u0160 \u0192X\u0192g\u0192\u0152\ufffd[\u0192W\u201a\u00cc\u0192T\u0192|\ufffd[\u0192g\u201a\u00f0\u2014L\u0152\u00f8\u201a\u00c9\u201a\u00b7\u201a\u00e9\u201a\u00c9\u201a\u00cd\ufffdA\u017d\u0178\u201a\u00cc\ufffd\u00ee\u2022\u00f1\u201a\u00f0\u201c\u00fc\u2014\u00cd\u201a\u00b5\u201a\u00c4\u201a\u00ad\u201a\u00be\u201a\u00b3\u201a\u00a2\ufffdB -confirm.enable.swift=Swift \u201a\u00cc\u0192T\u0192|\ufffd[\u0192g\u201a\u00f0\u2014L\u0152\u00f8\u201a\u00c9\u201a\u00b7\u201a\u00e9\u201a\u00c9\u201a\u00cd\ufffdA\u017d\u0178\u201a\u00cc\ufffd\u00ee\u2022\u00f1\u201a\u00f0\u201c\u00fc\u2014\u00cd\u201a\u00b5\u201a\u00c4\u201a\u00ad\u201a\u00be\u201a\u00b3\u201a\u00a2\ufffdB -error.could.not.change.your.password.because.ldap.is.enabled=\u0192G\u0192\u2030\ufffd[\ufffdBLDAP \u201a\u00aa\u2014L\u0152\u00f8\u201a\u00c8\u201a\u00bd\u201a\u00df\u0192p\u0192X\u0192\ufffd\ufffd[\u0192h\u201a\u00f0\u2022\u00cf\ufffdX\u201a\u00c5\u201a\u00ab\u201a\u00dc\u201a\u00b9\u201a\u00f1\ufffdB -error.could.not.enable.zone=\u0192]\ufffd[\u0192\u201c\u201a\u00f0\u2014L\u0152\u00f8\u201a\u00c9\u201a\u00c5\u201a\u00ab\u201a\u00dc\u201a\u00b9\u201a\u00f1\u201a\u00c5\u201a\u00b5\u201a\u00bd -error.installWizard.message=\u2013\u00e2\u2018\u00e8\u201a\u00aa\u201d\u00ad\ufffd\u00b6\u201a\u00b5\u201a\u00dc\u201a\u00b5\u201a\u00bd\ufffdB\u2013\u00df\u201a\u00c1\u201a\u00c4\u0192G\u0192\u2030\ufffd[\u201a\u00f0\ufffdC\ufffd\u00b3\u201a\u00c5\u201a\u00ab\u201a\u00dc\u201a\u00b7\ufffdB -error.invalid.username.password=\u2013\u00b3\u0152\u00f8\u201a\u00c8\u0192\u2020\ufffd[\u0192U\ufffd[\u2013\u00bc\u201a\u00dc\u201a\u00bd\u201a\u00cd\u0192p\u0192X\u0192\ufffd\ufffd[\u0192h\u201a\u00c5\u201a\u00b7\ufffdB -error.login=\u0192\u2020\ufffd[\u0192U\ufffd[\u2013\u00bc/\u0192p\u0192X\u0192\ufffd\ufffd[\u0192h\u201a\u00aa\u2039L\u02dc^\u201a\u00c6\u02c6\u00ea\u2019v\u201a\u00b5\u201a\u00dc\u201a\u00b9\u201a\u00f1\ufffdB -error.menu.select=\ufffd\u20ac\u2013\u00da\u201a\u00aa\u2018I\u2018\u00f0\u201a\u00b3\u201a\u00ea\u201a\u00c4\u201a\u00a2\u201a\u00c8\u201a\u00a2\u201a\u00bd\u201a\u00df\u2018\u20ac\ufffd\u00ec\u201a\u00f0\u017d\u00c0\ufffds\u201a\u00c5\u201a\u00ab\u201a\u00dc\u201a\u00b9\u201a\u00f1\ufffdB -error.mgmt.server.inaccessible=\u0160\u00c7\u2014\ufffd\u0192T\ufffd[\u0192o\ufffd[\u201a\u00c9\u0192A\u0192N\u0192Z\u0192X\u201a\u00c5\u201a\u00ab\u201a\u00dc\u201a\u00b9\u201a\u00f1\ufffdB\u0152\u00e3\u201a\u00c5\ufffd\u00c4\u017d\u00c0\ufffds\u201a\u00b5\u201a\u00c4\u201a\u00ad\u201a\u00be\u201a\u00b3\u201a\u00a2\ufffdB -error.password.not.match=\u0192p\u0192X\u0192\ufffd\ufffd[\u0192h\u201a\u00aa\u02c6\u00ea\u2019v\u201a\u00b5\u201a\u00dc\u201a\u00b9\u201a\u00f1 -error.please.specify.physical.network.tags=\u201a\u00b1\u201a\u00cc\u2022\u00a8\u2014\ufffd\u0192l\u0192b\u0192g\u0192\ufffd\ufffd[\u0192N\u201a\u00cc\u0192^\u0192O\u201a\u00f0\u017dw\u2019\u00e8\u201a\u00b5\u201a\u00c8\u201a\u00af\u201a\u00ea\u201a\u00ce\ufffdA\u0192l\u0192b\u0192g\u0192\ufffd\ufffd[\u0192N \u0192I\u0192t\u0192@\u0192\u0160\u0192\u201c\u0192O\u201a\u00cd\u017dg\u2014p\u201a\u00c5\u201a\u00ab\u201a\u00dc\u201a\u00b9\u201a\u00f1\ufffdB -error.session.expired=\u0192Z\u0192b\u0192V\u0192\u2021\u0192\u201c\u201a\u00cc\u2014L\u0152\u00f8\u0160\u00fa\u0152\u00c0\u201a\u00aa\ufffd\u00d8\u201a\u00ea\u201a\u00dc\u201a\u00b5\u201a\u00bd\ufffdB -error.something.went.wrong.please.correct.the.following=\u2013\u00e2\u2018\u00e8\u201a\u00aa\u201d\u00ad\ufffd\u00b6\u201a\u00b5\u201a\u00dc\u201a\u00b5\u201a\u00bd\ufffdB\u017d\u0178\u201a\u00cc\u201c\u00e0\u2014e\u201a\u00f0\ufffdC\ufffd\u00b3\u201a\u00b5\u201a\u00c4\u201a\u00ad\u201a\u00be\u201a\u00b3\u201a\u00a2 -error.unable.to.reach.management.server=\u0160\u00c7\u2014\ufffd\u0192T\ufffd[\u0192o\ufffd[\u201a\u00c6\u2019\u00ca\ufffdM\u201a\u00c5\u201a\u00ab\u201a\u00dc\u201a\u00b9\u201a\u00f1 -error.unresolved.internet.name=\u0192C\u0192\u201c\u0192^\ufffd[\u0192l\u0192b\u0192g\u2013\u00bc\u201a\u00f0\u2030\u00f0\u0152\u02c6\u201a\u00c5\u201a\u00ab\u201a\u00dc\u201a\u00b9\u201a\u00f1\ufffdB -extractable=\u2019\u0160\ufffdo\u2030\u00c2\u201d\ -force.delete.domain.warning=\u0152x\ufffd\ufffd\: \u201a\u00b1\u201a\u00cc\u0192I\u0192v\u0192V\u0192\u2021\u0192\u201c\u201a\u00f0\u2018I\u2018\u00f0\u201a\u00b7\u201a\u00e9\u201a\u00c6\ufffdA\u201a\u00b7\u201a\u00d7\u201a\u00c4\u201a\u00cc\u017dq\u0192h\u0192\ufffd\u0192C\u0192\u201c\u201a\u00a8\u201a\u00e6\u201a\u00d1\u0160\u00d6\u02dcA\u201a\u00b7\u201a\u00e9\u201a\u00b7\u201a\u00d7\u201a\u00c4\u201a\u00cc\u0192A\u0192J\u0192E\u0192\u201c\u0192g\u201a\u00c6\u201a\u00bb\u201a\u00cc\u0192\u0160\u0192\\ufffd[\u0192X\u201a\u00aa\ufffd\u00ed\ufffd\u0153\u201a\u00b3\u201a\u00ea\u201a\u00dc\u201a\u00b7\ufffdB -force.delete=\u2039\u00ad\ufffd\u00a7\u201cI\u201a\u00c9\ufffd\u00ed\ufffd\u0153\u201a\u00b7\u201a\u00e9 -force.remove.host.warning=\u0152x\ufffd\ufffd\: \u201a\u00b1\u201a\u00cc\u0192I\u0192v\u0192V\u0192\u2021\u0192\u201c\u201a\u00f0\u2018I\u2018\u00f0\u201a\u00b7\u201a\u00e9\u201a\u00c6\ufffdA\u017d\u00c0\ufffds\u2019\u2020\u201a\u00cc\u201a\u00b7\u201a\u00d7\u201a\u00c4\u201a\u00cc\u2030\u00bc\u2018z\u0192}\u0192V\u0192\u201c\u201a\u00aa\u2039\u00ad\ufffd\u00a7\u201cI\u201a\u00c9\u2019\u00e2\u017d~\u201a\u00b3\u201a\u00ea\ufffdA\u0192N\u0192\u2030\u0192X\u0192^\ufffd[\u201a\u00a9\u201a\u00e7\u201a\u00b1\u201a\u00cc\u0192z\u0192X\u0192g\u201a\u00aa\u2039\u00ad\ufffd\u00a7\u201cI\u201a\u00c9\u2030\u00f0\ufffd\u0153\u201a\u00b3\u201a\u00ea\u201a\u00dc\u201a\u00b7\ufffdB -force.remove=\u2039\u00ad\ufffd\u00a7\u201cI\u201a\u00c9\u2030\u00f0\ufffd\u0153\u201a\u00b7\u201a\u00e9 -force.stop.instance.warning=\u0152x\ufffd\ufffd\: \u0192C\u0192\u201c\u0192X\u0192^\u0192\u201c\u0192X\u201a\u00cc\u2039\u00ad\ufffd\u00a7\u2019\u00e2\u017d~\u201a\u00cd\ufffdA\ufffd\u00c5\ufffdI\u017d\u00e8\u2019i\u201a\u00c9\u201a\u00b5\u201a\u00c4\u201a\u00ad\u201a\u00be\u201a\u00b3\u201a\u00a2\ufffdB\u0192f\ufffd[\u0192^\u201a\u00f0\u2018\u00b9\u017d\u00b8\u201a\u00b7\u201a\u00e9\u201a\u00be\u201a\u00af\u201a\u00c5\u201a\u00c8\u201a\u00ad\ufffdA\u2030\u00bc\u2018z\u0192}\u0192V\u0192\u201c\u201a\u00cc\u201c\u00ae\ufffd\u00ec\u201a\u00aa\u02c6\u00ea\u0160\u00d1\u201a\u00b5\u201a\u00c8\u201a\u00ad\u201a\u00c8\u201a\u00e9\u2030\u00c2\u201d\\ufffd\u00ab\u201a\u00aa\u201a\u00a0\u201a\u00e8\u201a\u00dc\u201a\u00b7\ufffdB -force.stop=\u2039\u00ad\ufffd\u00a7\u201cI\u201a\u00c9\u2019\u00e2\u017d~\u201a\u00b7\u201a\u00e9 -ICMP.code=ICMP \u0192R\ufffd[\u0192h -ICMP.type=ICMP \u201a\u00cc\u017d\u00ed\u2014\u00de -image.directory=\u2030\u00e6\u2018\u0153\u0192f\u0192B\u0192\u0152\u0192N\u0192g\u0192\u0160 -inline=\u2019\u00bc\u2014\u00f1 -instances.actions.reboot.label=\u0192C\u0192\u201c\u0192X\u0192^\u0192\u201c\u0192X\u201a\u00cc\ufffd\u00c4\u2039N\u201c\u00ae -label.accept.project.invitation=\u0192v\u0192\ufffd\u0192W\u0192F\u0192N\u0192g\u201a\u00d6\u201a\u00cc\ufffd\u00b5\u2018\u00d2\u201a\u00cc\ufffd\u00b3\u2018\u00f8 -label.account.and.security.group=\u0192A\u0192J\u0192E\u0192\u201c\u0192g\ufffdA\u0192Z\u0192L\u0192\u2026\u0192\u0160\u0192e\u0192B \u0192O\u0192\u2039\ufffd[\u0192v -label.account.id=\u0192A\u0192J\u0192E\u0192\u201c\u0192g ID -label.account.name=\u0192A\u0192J\u0192E\u0192\u201c\u0192g\u2013\u00bc -label.account.specific=\u0192A\u0192J\u0192E\u0192\u201c\u0192g\u0152\u00c5\u2014L -label.account=\u0192A\u0192J\u0192E\u0192\u201c\u0192g -label.accounts=\u0192A\u0192J\u0192E\u0192\u201c\u0192g -label.acquire.new.ip=\ufffdV\u201a\u00b5\u201a\u00a2 IP \u0192A\u0192h\u0192\u0152\u0192X\u201a\u00cc\u017d\u00e6\u201c\u00be -label.acquire.new.secondary.ip=\u0192Z\u0192J\u0192\u201c\u0192_\u0192\u0160 IP \u0192A\u0192h\u0192\u0152\u0192X\u201a\u00cc\u017d\u00e6\u201c\u00be -label.action.attach.disk.processing=\u0192f\u0192B\u0192X\u0192N\u201a\u00f0\u0192A\u0192^\u0192b\u0192`\u201a\u00b5\u201a\u00c4\u201a\u00a2\u201a\u00dc\u201a\u00b7... -label.action.attach.disk=\u0192f\u0192B\u0192X\u0192N\u201a\u00cc\u0192A\u0192^\u0192b\u0192` -label.action.attach.iso.processing=ISO \u201a\u00f0\u0192A\u0192^\u0192b\u0192`\u201a\u00b5\u201a\u00c4\u201a\u00a2\u201a\u00dc\u201a\u00b7... -label.action.attach.iso=ISO \u201a\u00cc\u0192A\u0192^\u0192b\u0192` -label.action.cancel.maintenance.mode.processing=\u2022\u00db\u017d\u00e7\u0192\u201a\ufffd[\u0192h\u201a\u00f0\u0192L\u0192\u0192\u0192\u201c\u0192Z\u0192\u2039\u201a\u00b5\u201a\u00c4\u201a\u00a2\u201a\u00dc\u201a\u00b7... -label.action.cancel.maintenance.mode=\u2022\u00db\u017d\u00e7\u0192\u201a\ufffd[\u0192h\u201a\u00cc\u0192L\u0192\u0192\u0192\u201c\u0192Z\u0192\u2039 -label.action.change.password=\u0192p\u0192X\u0192\ufffd\ufffd[\u0192h\u201a\u00cc\u2022\u00cf\ufffdX -label.action.change.service.processing=\u0192T\ufffd[\u0192r\u0192X\u201a\u00f0\u2022\u00cf\ufffdX\u201a\u00b5\u201a\u00c4\u201a\u00a2\u201a\u00dc\u201a\u00b7... -label.action.change.service=\u0192T\ufffd[\u0192r\u0192X\u201a\u00cc\u2022\u00cf\ufffdX -label.action.copy.ISO.processing=ISO \u201a\u00f0\u0192R\u0192s\ufffd[\u201a\u00b5\u201a\u00c4\u201a\u00a2\u201a\u00dc\u201a\u00b7... -label.action.copy.ISO=ISO \u201a\u00cc\u0192R\u0192s\ufffd[ -label.action.copy.template.processing=\u0192e\u0192\u201c\u0192v\u0192\u0152\ufffd[\u0192g\u201a\u00f0\u0192R\u0192s\ufffd[\u201a\u00b5\u201a\u00c4\u201a\u00a2\u201a\u00dc\u201a\u00b7... -label.action.copy.template=\u0192e\u0192\u201c\u0192v\u0192\u0152\ufffd[\u0192g\u201a\u00cc\u0192R\u0192s\ufffd[ -label.action.create.template.from.vm=VM \u201a\u00a9\u201a\u00e7\u201a\u00cc\u0192e\u0192\u201c\u0192v\u0192\u0152\ufffd[\u0192g\ufffd\u00ec\ufffd\u00ac -label.action.create.template.from.volume=\u0192{\u0192\u0160\u0192\u2026\ufffd[\u0192\u20ac\u201a\u00a9\u201a\u00e7\u201a\u00cc\u0192e\u0192\u201c\u0192v\u0192\u0152\ufffd[\u0192g\ufffd\u00ec\ufffd\u00ac -label.action.create.template.processing=\u0192e\u0192\u201c\u0192v\u0192\u0152\ufffd[\u0192g\u201a\u00f0\ufffd\u00ec\ufffd\u00ac\u201a\u00b5\u201a\u00c4\u201a\u00a2\u201a\u00dc\u201a\u00b7... -label.action.create.template=\u0192e\u0192\u201c\u0192v\u0192\u0152\ufffd[\u0192g\u201a\u00cc\ufffd\u00ec\ufffd\u00ac -label.action.create.vm.processing=VM \u201a\u00f0\ufffd\u00ec\ufffd\u00ac\u201a\u00b5\u201a\u00c4\u201a\u00a2\u201a\u00dc\u201a\u00b7... -label.action.create.vm=VM \u201a\u00cc\ufffd\u00ec\ufffd\u00ac -label.action.create.volume.processing=\u0192{\u0192\u0160\u0192\u2026\ufffd[\u0192\u20ac\u201a\u00f0\ufffd\u00ec\ufffd\u00ac\u201a\u00b5\u201a\u00c4\u201a\u00a2\u201a\u00dc\u201a\u00b7... -label.action.create.volume=\u0192{\u0192\u0160\u0192\u2026\ufffd[\u0192\u20ac\u201a\u00cc\ufffd\u00ec\ufffd\u00ac -label.action.delete.account.processing=\u0192A\u0192J\u0192E\u0192\u201c\u0192g\u201a\u00f0\ufffd\u00ed\ufffd\u0153\u201a\u00b5\u201a\u00c4\u201a\u00a2\u201a\u00dc\u201a\u00b7... -label.action.delete.account=\u0192A\u0192J\u0192E\u0192\u201c\u0192g\u201a\u00cc\ufffd\u00ed\ufffd\u0153 -label.action.delete.cluster.processing=\u0192N\u0192\u2030\u0192X\u0192^\ufffd[\u201a\u00f0\ufffd\u00ed\ufffd\u0153\u201a\u00b5\u201a\u00c4\u201a\u00a2\u201a\u00dc\u201a\u00b7... -label.action.delete.cluster=\u0192N\u0192\u2030\u0192X\u0192^\ufffd[\u201a\u00cc\ufffd\u00ed\ufffd\u0153 -label.action.delete.disk.offering.processing=\u0192f\u0192B\u0192X\u0192N \u0192I\u0192t\u0192@\u0192\u0160\u0192\u201c\u0192O\u201a\u00f0\ufffd\u00ed\ufffd\u0153\u201a\u00b5\u201a\u00c4\u201a\u00a2\u201a\u00dc\u201a\u00b7... -label.action.delete.disk.offering=\u0192f\u0192B\u0192X\u0192N \u0192I\u0192t\u0192@\u0192\u0160\u0192\u201c\u0192O\u201a\u00cc\ufffd\u00ed\ufffd\u0153 -label.action.delete.domain.processing=\u0192h\u0192\ufffd\u0192C\u0192\u201c\u201a\u00f0\ufffd\u00ed\ufffd\u0153\u201a\u00b5\u201a\u00c4\u201a\u00a2\u201a\u00dc\u201a\u00b7... -label.action.delete.domain=\u0192h\u0192\ufffd\u0192C\u0192\u201c\u201a\u00cc\ufffd\u00ed\ufffd\u0153 -label.action.delete.firewall.processing=\u0192t\u0192@\u0192C\u0192A\u0192E\u0192H\ufffd[\u0192\u2039\u201a\u00f0\ufffd\u00ed\ufffd\u0153\u201a\u00b5\u201a\u00c4\u201a\u00a2\u201a\u00dc\u201a\u00b7... -label.action.delete.firewall=\u0192t\u0192@\u0192C\u0192A\u0192E\u0192H\ufffd[\u0192\u2039\u2039K\u2018\u00a5\u201a\u00cc\ufffd\u00ed\ufffd\u0153 -label.action.delete.ingress.rule.processing=\u017d\u00f3\ufffdM\u2039K\u2018\u00a5\u201a\u00f0\ufffd\u00ed\ufffd\u0153\u201a\u00b5\u201a\u00c4\u201a\u00a2\u201a\u00dc\u201a\u00b7... -label.action.delete.ingress.rule=\u017d\u00f3\ufffdM\u2039K\u2018\u00a5\u201a\u00cc\ufffd\u00ed\ufffd\u0153 -label.action.delete.IP.range.processing=IP \u0192A\u0192h\u0192\u0152\u0192X\u201a\u00cc\u201d\u00cd\u02c6\u00cd\u201a\u00f0\ufffd\u00ed\ufffd\u0153\u201a\u00b5\u201a\u00c4\u201a\u00a2\u201a\u00dc\u201a\u00b7... -label.action.delete.IP.range=IP \u0192A\u0192h\u0192\u0152\u0192X\u201a\u00cc\u201d\u00cd\u02c6\u00cd\u201a\u00cc\ufffd\u00ed\ufffd\u0153 -label.action.delete.ISO.processing=ISO \u201a\u00f0\ufffd\u00ed\ufffd\u0153\u201a\u00b5\u201a\u00c4\u201a\u00a2\u201a\u00dc\u201a\u00b7... -label.action.delete.ISO=ISO \u201a\u00cc\ufffd\u00ed\ufffd\u0153 -label.action.delete.load.balancer.processing=\u0192\ufffd\ufffd[\u0192h \u0192o\u0192\u2030\u0192\u201c\u0192T\ufffd[\u201a\u00f0\ufffd\u00ed\ufffd\u0153\u201a\u00b5\u201a\u00c4\u201a\u00a2\u201a\u00dc\u201a\u00b7... -label.action.delete.load.balancer=\u0192\ufffd\ufffd[\u0192h \u0192o\u0192\u2030\u0192\u201c\u0192T\ufffd[\u2039K\u2018\u00a5\u201a\u00cc\ufffd\u00ed\ufffd\u0153 -label.action.delete.network.processing=\u0192l\u0192b\u0192g\u0192\ufffd\ufffd[\u0192N\u201a\u00f0\ufffd\u00ed\ufffd\u0153\u201a\u00b5\u201a\u00c4\u201a\u00a2\u201a\u00dc\u201a\u00b7... -label.action.delete.network=\u0192l\u0192b\u0192g\u0192\ufffd\ufffd[\u0192N\u201a\u00cc\ufffd\u00ed\ufffd\u0153 -label.action.delete.nexusVswitch=Nexus 1000V \u201a\u00cc\ufffd\u00ed\ufffd\u0153 -label.action.delete.physical.network=\u2022\u00a8\u2014\ufffd\u0192l\u0192b\u0192g\u0192\ufffd\ufffd[\u0192N\u201a\u00cc\ufffd\u00ed\ufffd\u0153 -label.action.delete.pod.processing=\u0192|\u0192b\u0192h\u201a\u00f0\ufffd\u00ed\ufffd\u0153\u201a\u00b5\u201a\u00c4\u201a\u00a2\u201a\u00dc\u201a\u00b7... -label.action.delete.pod=\u0192|\u0192b\u0192h\u201a\u00cc\ufffd\u00ed\ufffd\u0153 -label.action.delete.primary.storage.processing=\u0192v\u0192\u2030\u0192C\u0192}\u0192\u0160 \u0192X\u0192g\u0192\u0152\ufffd[\u0192W\u201a\u00f0\ufffd\u00ed\ufffd\u0153\u201a\u00b5\u201a\u00c4\u201a\u00a2\u201a\u00dc\u201a\u00b7... -label.action.delete.primary.storage=\u0192v\u0192\u2030\u0192C\u0192}\u0192\u0160 \u0192X\u0192g\u0192\u0152\ufffd[\u0192W\u201a\u00cc\ufffd\u00ed\ufffd\u0153 -label.action.delete.secondary.storage.processing=\u0192Z\u0192J\u0192\u201c\u0192_\u0192\u0160 \u0192X\u0192g\u0192\u0152\ufffd[\u0192W\u201a\u00f0\ufffd\u00ed\ufffd\u0153\u201a\u00b5\u201a\u00c4\u201a\u00a2\u201a\u00dc\u201a\u00b7... -label.action.delete.secondary.storage=\u0192Z\u0192J\u0192\u201c\u0192_\u0192\u0160 \u0192X\u0192g\u0192\u0152\ufffd[\u0192W\u201a\u00cc\ufffd\u00ed\ufffd\u0153 -label.action.delete.security.group.processing=\u0192Z\u0192L\u0192\u2026\u0192\u0160\u0192e\u0192B \u0192O\u0192\u2039\ufffd[\u0192v\u201a\u00f0\ufffd\u00ed\ufffd\u0153\u201a\u00b5\u201a\u00c4\u201a\u00a2\u201a\u00dc\u201a\u00b7... -label.action.delete.security.group=\u0192Z\u0192L\u0192\u2026\u0192\u0160\u0192e\u0192B \u0192O\u0192\u2039\ufffd[\u0192v\u201a\u00cc\ufffd\u00ed\ufffd\u0153 -label.action.delete.service.offering.processing=\u0192T\ufffd[\u0192r\u0192X \u0192I\u0192t\u0192@\u0192\u0160\u0192\u201c\u0192O\u201a\u00f0\ufffd\u00ed\ufffd\u0153\u201a\u00b5\u201a\u00c4\u201a\u00a2\u201a\u00dc\u201a\u00b7... -label.action.delete.service.offering=\u0192T\ufffd[\u0192r\u0192X \u0192I\u0192t\u0192@\u0192\u0160\u0192\u201c\u0192O\u201a\u00cc\ufffd\u00ed\ufffd\u0153 -label.action.delete.snapshot.processing=\u0192X\u0192i\u0192b\u0192v\u0192V\u0192\u2021\u0192b\u0192g\u201a\u00f0\ufffd\u00ed\ufffd\u0153\u201a\u00b5\u201a\u00c4\u201a\u00a2\u201a\u00dc\u201a\u00b7... -label.action.delete.snapshot=\u0192X\u0192i\u0192b\u0192v\u0192V\u0192\u2021\u0192b\u0192g\u201a\u00cc\ufffd\u00ed\ufffd\u0153 -label.action.delete.system.service.offering=\u0192V\u0192X\u0192e\u0192\u20ac \u0192T\ufffd[\u0192r\u0192X \u0192I\u0192t\u0192@\u0192\u0160\u0192\u201c\u0192O\u201a\u00cc\ufffd\u00ed\ufffd\u0153 -label.action.delete.template.processing=\u0192e\u0192\u201c\u0192v\u0192\u0152\ufffd[\u0192g\u201a\u00f0\ufffd\u00ed\ufffd\u0153\u201a\u00b5\u201a\u00c4\u201a\u00a2\u201a\u00dc\u201a\u00b7... -label.action.delete.template=\u0192e\u0192\u201c\u0192v\u0192\u0152\ufffd[\u0192g\u201a\u00cc\ufffd\u00ed\ufffd\u0153 -label.action.delete.user.processing=\u0192\u2020\ufffd[\u0192U\ufffd[\u201a\u00f0\ufffd\u00ed\ufffd\u0153\u201a\u00b5\u201a\u00c4\u201a\u00a2\u201a\u00dc\u201a\u00b7... -label.action.delete.user=\u0192\u2020\ufffd[\u0192U\ufffd[\u201a\u00cc\ufffd\u00ed\ufffd\u0153 -label.action.delete.volume.processing=\u0192{\u0192\u0160\u0192\u2026\ufffd[\u0192\u20ac\u201a\u00f0\ufffd\u00ed\ufffd\u0153\u201a\u00b5\u201a\u00c4\u201a\u00a2\u201a\u00dc\u201a\u00b7... -label.action.delete.volume=\u0192{\u0192\u0160\u0192\u2026\ufffd[\u0192\u20ac\u201a\u00cc\ufffd\u00ed\ufffd\u0153 -label.action.delete.zone.processing=\u0192]\ufffd[\u0192\u201c\u201a\u00f0\ufffd\u00ed\ufffd\u0153\u201a\u00b5\u201a\u00c4\u201a\u00a2\u201a\u00dc\u201a\u00b7... -label.action.delete.zone=\u0192]\ufffd[\u0192\u201c\u201a\u00cc\ufffd\u00ed\ufffd\u0153 -label.action.destroy.instance.processing=\u0192C\u0192\u201c\u0192X\u0192^\u0192\u201c\u0192X\u201a\u00f0\u201dj\u0160\u00fc\u201a\u00b5\u201a\u00c4\u201a\u00a2\u201a\u00dc\u201a\u00b7... -label.action.destroy.instance=\u0192C\u0192\u201c\u0192X\u0192^\u0192\u201c\u0192X\u201a\u00cc\u201dj\u0160\u00fc -label.action.destroy.systemvm.processing=\u0192V\u0192X\u0192e\u0192\u20ac VM \u201a\u00f0\u201dj\u0160\u00fc\u201a\u00b5\u201a\u00c4\u201a\u00a2\u201a\u00dc\u201a\u00b7... -label.action.destroy.systemvm=\u0192V\u0192X\u0192e\u0192\u20ac VM \u201a\u00cc\u201dj\u0160\u00fc -label.action.detach.disk.processing=\u0192f\u0192B\u0192X\u0192N\u201a\u00f0\u0192f\u0192^\u0192b\u0192`\u201a\u00b5\u201a\u00c4\u201a\u00a2\u201a\u00dc\u201a\u00b7... -label.action.detach.disk=\u0192f\u0192B\u0192X\u0192N\u201a\u00cc\u0192f\u0192^\u0192b\u0192` -label.action.detach.iso.processing=ISO \u201a\u00f0\u0192f\u0192^\u0192b\u0192`\u201a\u00b5\u201a\u00c4\u201a\u00a2\u201a\u00dc\u201a\u00b7... -label.action.detach.iso=ISO \u201a\u00cc\u0192f\u0192^\u0192b\u0192` -label.action.disable.account.processing=\u0192A\u0192J\u0192E\u0192\u201c\u0192g\u201a\u00f0\u2013\u00b3\u0152\u00f8\u201a\u00c9\u201a\u00b5\u201a\u00c4\u201a\u00a2\u201a\u00dc\u201a\u00b7... -label.action.disable.account=\u0192A\u0192J\u0192E\u0192\u201c\u0192g\u201a\u00cc\u2013\u00b3\u0152\u00f8\u2030\u00bb -label.action.disable.cluster.processing=\u0192N\u0192\u2030\u0192X\u0192^\ufffd[\u201a\u00f0\u2013\u00b3\u0152\u00f8\u201a\u00c9\u201a\u00b5\u201a\u00c4\u201a\u00a2\u201a\u00dc\u201a\u00b7... -label.action.disable.cluster=\u0192N\u0192\u2030\u0192X\u0192^\ufffd[\u201a\u00cc\u2013\u00b3\u0152\u00f8\u2030\u00bb -label.action.disable.nexusVswitch=Nexus 1000V \u201a\u00cc\u2013\u00b3\u0152\u00f8\u2030\u00bb -label.action.disable.physical.network=\u2022\u00a8\u2014\ufffd\u0192l\u0192b\u0192g\u0192\ufffd\ufffd[\u0192N\u201a\u00cc\u2013\u00b3\u0152\u00f8\u2030\u00bb -label.action.disable.pod.processing=\u0192|\u0192b\u0192h\u201a\u00f0\u2013\u00b3\u0152\u00f8\u201a\u00c9\u201a\u00b5\u201a\u00c4\u201a\u00a2\u201a\u00dc\u201a\u00b7... -label.action.disable.pod=\u0192|\u0192b\u0192h\u201a\u00cc\u2013\u00b3\u0152\u00f8\u2030\u00bb -label.action.disable.static.NAT.processing=\ufffd\u00c3\u201cI NAT \u201a\u00f0\u2013\u00b3\u0152\u00f8\u201a\u00c9\u201a\u00b5\u201a\u00c4\u201a\u00a2\u201a\u00dc\u201a\u00b7... -label.action.disable.static.NAT=\ufffd\u00c3\u201cI NAT \u201a\u00cc\u2013\u00b3\u0152\u00f8\u2030\u00bb -label.action.disable.user.processing=\u0192\u2020\ufffd[\u0192U\ufffd[\u201a\u00f0\u2013\u00b3\u0152\u00f8\u201a\u00c9\u201a\u00b5\u201a\u00c4\u201a\u00a2\u201a\u00dc\u201a\u00b7... -label.action.disable.user=\u0192\u2020\ufffd[\u0192U\ufffd[\u201a\u00cc\u2013\u00b3\u0152\u00f8\u2030\u00bb -label.action.disable.zone.processing=\u0192]\ufffd[\u0192\u201c\u201a\u00f0\u2013\u00b3\u0152\u00f8\u201a\u00c9\u201a\u00b5\u201a\u00c4\u201a\u00a2\u201a\u00dc\u201a\u00b7... -label.action.disable.zone=\u0192]\ufffd[\u0192\u201c\u201a\u00cc\u2013\u00b3\u0152\u00f8\u2030\u00bb -label.action.download.ISO=ISO \u201a\u00cc\u0192_\u0192E\u0192\u201c\u0192\ufffd\ufffd[\u0192h -label.action.download.template=\u0192e\u0192\u201c\u0192v\u0192\u0152\ufffd[\u0192g\u201a\u00cc\u0192_\u0192E\u0192\u201c\u0192\ufffd\ufffd[\u0192h -label.action.download.volume.processing=\u0192{\u0192\u0160\u0192\u2026\ufffd[\u0192\u20ac\u201a\u00f0\u0192_\u0192E\u0192\u201c\u0192\ufffd\ufffd[\u0192h\u201a\u00b5\u201a\u00c4\u201a\u00a2\u201a\u00dc\u201a\u00b7... -label.action.download.volume=\u0192{\u0192\u0160\u0192\u2026\ufffd[\u0192\u20ac\u201a\u00cc\u0192_\u0192E\u0192\u201c\u0192\ufffd\ufffd[\u0192h -label.action.edit.account=\u0192A\u0192J\u0192E\u0192\u201c\u0192g\u201a\u00cc\u2022\u00d2\ufffdW -label.action.edit.disk.offering=\u0192f\u0192B\u0192X\u0192N \u0192I\u0192t\u0192@\u0192\u0160\u0192\u201c\u0192O\u201a\u00cc\u2022\u00d2\ufffdW -label.action.edit.domain=\u0192h\u0192\ufffd\u0192C\u0192\u201c\u201a\u00cc\u2022\u00d2\ufffdW -label.action.edit.global.setting=\u0192O\u0192\ufffd\ufffd[\u0192o\u0192\u2039\ufffd\u00dd\u2019\u00e8\u201a\u00cc\u2022\u00d2\ufffdW -label.action.edit.host=\u0192z\u0192X\u0192g\u201a\u00cc\u2022\u00d2\ufffdW -label.action.edit.instance=\u0192C\u0192\u201c\u0192X\u0192^\u0192\u201c\u0192X\u201a\u00cc\u2022\u00d2\ufffdW -label.action.edit.ISO=ISO \u201a\u00cc\u2022\u00d2\ufffdW -label.action.edit.network.offering=\u0192l\u0192b\u0192g\u0192\ufffd\ufffd[\u0192N \u0192I\u0192t\u0192@\u0192\u0160\u0192\u201c\u0192O\u201a\u00cc\u2022\u00d2\ufffdW -label.action.edit.network.processing=\u0192l\u0192b\u0192g\u0192\ufffd\ufffd[\u0192N\u201a\u00f0\u2022\u00d2\ufffdW\u201a\u00b5\u201a\u00c4\u201a\u00a2\u201a\u00dc\u201a\u00b7... -label.action.edit.network=\u0192l\u0192b\u0192g\u0192\ufffd\ufffd[\u0192N\u201a\u00cc\u2022\u00d2\ufffdW -label.action.edit.pod=\u0192|\u0192b\u0192h\u201a\u00cc\u2022\u00d2\ufffdW -label.action.edit.primary.storage=\u0192v\u0192\u2030\u0192C\u0192}\u0192\u0160 \u0192X\u0192g\u0192\u0152\ufffd[\u0192W\u201a\u00cc\u2022\u00d2\ufffdW -label.action.edit.resource.limits=\u0192\u0160\u0192\\ufffd[\u0192X\ufffd\u00a7\u0152\u00c0\u201a\u00cc\u2022\u00d2\ufffdW -label.action.edit.service.offering=\u0192T\ufffd[\u0192r\u0192X \u0192I\u0192t\u0192@\u0192\u0160\u0192\u201c\u0192O\u201a\u00cc\u2022\u00d2\ufffdW -label.action.edit.template=\u0192e\u0192\u201c\u0192v\u0192\u0152\ufffd[\u0192g\u201a\u00cc\u2022\u00d2\ufffdW -label.action.edit.user=\u0192\u2020\ufffd[\u0192U\ufffd[\u201a\u00cc\u2022\u00d2\ufffdW -label.action.edit.zone=\u0192]\ufffd[\u0192\u201c\u201a\u00cc\u2022\u00d2\ufffdW -label.action.enable.account.processing=\u0192A\u0192J\u0192E\u0192\u201c\u0192g\u201a\u00f0\u2014L\u0152\u00f8\u201a\u00c9\u201a\u00b5\u201a\u00c4\u201a\u00a2\u201a\u00dc\u201a\u00b7... -label.action.enable.account=\u0192A\u0192J\u0192E\u0192\u201c\u0192g\u201a\u00cc\u2014L\u0152\u00f8\u2030\u00bb -label.action.enable.cluster.processing=\u0192N\u0192\u2030\u0192X\u0192^\ufffd[\u201a\u00f0\u2014L\u0152\u00f8\u201a\u00c9\u201a\u00b5\u201a\u00c4\u201a\u00a2\u201a\u00dc\u201a\u00b7... -label.action.enable.cluster=\u0192N\u0192\u2030\u0192X\u0192^\ufffd[\u201a\u00cc\u2014L\u0152\u00f8\u2030\u00bb -label.action.enable.maintenance.mode.processing=\u2022\u00db\u017d\u00e7\u0192\u201a\ufffd[\u0192h\u201a\u00f0\u2014L\u0152\u00f8\u201a\u00c9\u201a\u00b5\u201a\u00c4\u201a\u00a2\u201a\u00dc\u201a\u00b7... -label.action.enable.maintenance.mode=\u2022\u00db\u017d\u00e7\u0192\u201a\ufffd[\u0192h\u201a\u00cc\u2014L\u0152\u00f8\u2030\u00bb -label.action.enable.nexusVswitch=Nexus 1000V \u201a\u00cc\u2014L\u0152\u00f8\u2030\u00bb -label.action.enable.physical.network=\u2022\u00a8\u2014\ufffd\u0192l\u0192b\u0192g\u0192\ufffd\ufffd[\u0192N\u201a\u00cc\u2014L\u0152\u00f8\u2030\u00bb -label.action.enable.pod.processing=\u0192|\u0192b\u0192h\u201a\u00f0\u2014L\u0152\u00f8\u201a\u00c9\u201a\u00b5\u201a\u00c4\u201a\u00a2\u201a\u00dc\u201a\u00b7... -label.action.enable.pod=\u0192|\u0192b\u0192h\u201a\u00cc\u2014L\u0152\u00f8\u2030\u00bb -label.action.enable.static.NAT.processing=\ufffd\u00c3\u201cI NAT \u201a\u00f0\u2014L\u0152\u00f8\u201a\u00c9\u201a\u00b5\u201a\u00c4\u201a\u00a2\u201a\u00dc\u201a\u00b7... -label.action.enable.static.NAT=\ufffd\u00c3\u201cI NAT \u201a\u00cc\u2014L\u0152\u00f8\u2030\u00bb -label.action.enable.user.processing=\u0192\u2020\ufffd[\u0192U\ufffd[\u201a\u00f0\u2014L\u0152\u00f8\u201a\u00c9\u201a\u00b5\u201a\u00c4\u201a\u00a2\u201a\u00dc\u201a\u00b7... -label.action.enable.user=\u0192\u2020\ufffd[\u0192U\ufffd[\u201a\u00cc\u2014L\u0152\u00f8\u2030\u00bb -label.action.enable.zone.processing=\u0192]\ufffd[\u0192\u201c\u201a\u00f0\u2014L\u0152\u00f8\u201a\u00c9\u201a\u00b5\u201a\u00c4\u201a\u00a2\u201a\u00dc\u201a\u00b7... -label.action.enable.zone=\u0192]\ufffd[\u0192\u201c\u201a\u00cc\u2014L\u0152\u00f8\u2030\u00bb -label.action.expunge.instance=\u0192C\u0192\u201c\u0192X\u0192^\u0192\u201c\u0192X\u201a\u00cc\u2013\u2022\ufffd\u00c1 -label.action.expunge.instance.processing=\u0192C\u0192\u201c\u0192X\u0192^\u0192\u201c\u0192X\u201a\u00f0\u2013\u2022\ufffd\u00c1\u201a\u00b5\u201a\u00c4\u201a\u00a2\u201a\u00dc\u201a\u00b7... -label.action.force.reconnect.processing=\ufffd\u00c4\ufffd\u00da\u2018\u00b1\u201a\u00b5\u201a\u00c4\u201a\u00a2\u201a\u00dc\u201a\u00b7... -label.action.force.reconnect=\u2039\u00ad\ufffd\u00a7\ufffd\u00c4\ufffd\u00da\u2018\u00b1 -label.action.generate.keys.processing=\u0192L\ufffd[\u201a\u00f0\ufffd\u00b6\ufffd\u00ac\u201a\u00b5\u201a\u00c4\u201a\u00a2\u201a\u00dc\u201a\u00b7... -label.action.generate.keys=\u0192L\ufffd[\u201a\u00cc\ufffd\u00b6\ufffd\u00ac -label.action.list.nexusVswitch=Nexus 1000V \u201a\u00cc\u02c6\u00ea\u2014\u2014\u2022\\u017d\u00a6 -label.action.lock.account.processing=\u0192A\u0192J\u0192E\u0192\u201c\u0192g\u201a\u00f0\u0192\ufffd\u0192b\u0192N\u201a\u00b5\u201a\u00c4\u201a\u00a2\u201a\u00dc\u201a\u00b7... -label.action.lock.account=\u0192A\u0192J\u0192E\u0192\u201c\u0192g\u201a\u00cc\u0192\ufffd\u0192b\u0192N -label.action.manage.cluster.processing=\u0192N\u0192\u2030\u0192X\u0192^\ufffd[\u201a\u00f0\u0160\u00c7\u2014\ufffd\u2018\u00ce\ufffd\u00db\u201a\u00c9\u201a\u00b5\u201a\u00c4\u201a\u00a2\u201a\u00dc\u201a\u00b7... -label.action.manage.cluster=\u0192N\u0192\u2030\u0192X\u0192^\ufffd[\u201a\u00cc\u0160\u00c7\u2014\ufffd\u2018\u00ce\ufffd\u00db\u2030\u00bb -label.action.migrate.instance.processing=\u0192C\u0192\u201c\u0192X\u0192^\u0192\u201c\u0192X\u201a\u00f0\u02c6\u00da\ufffds\u201a\u00b5\u201a\u00c4\u201a\u00a2\u201a\u00dc\u201a\u00b7... -label.action.migrate.instance=\u0192C\u0192\u201c\u0192X\u0192^\u0192\u201c\u0192X\u201a\u00cc\u02c6\u00da\ufffds -label.action.migrate.router.processing=\u0192\u2039\ufffd[\u0192^\ufffd[\u201a\u00f0\u02c6\u00da\ufffds\u201a\u00b5\u201a\u00c4\u201a\u00a2\u201a\u00dc\u201a\u00b7... -label.action.migrate.router=\u0192\u2039\ufffd[\u0192^\ufffd[\u201a\u00cc\u02c6\u00da\ufffds -label.action.migrate.systemvm.processing=\u0192V\u0192X\u0192e\u0192\u20ac VM \u201a\u00f0\u02c6\u00da\ufffds\u201a\u00b5\u201a\u00c4\u201a\u00a2\u201a\u00dc\u201a\u00b7... -label.action.migrate.systemvm=\u0192V\u0192X\u0192e\u0192\u20ac VM \u201a\u00cc\u02c6\u00da\ufffds -label.action.reboot.instance.processing=\u0192C\u0192\u201c\u0192X\u0192^\u0192\u201c\u0192X\u201a\u00f0\ufffd\u00c4\u2039N\u201c\u00ae\u201a\u00b5\u201a\u00c4\u201a\u00a2\u201a\u00dc\u201a\u00b7... -label.action.reboot.instance=\u0192C\u0192\u201c\u0192X\u0192^\u0192\u201c\u0192X\u201a\u00cc\ufffd\u00c4\u2039N\u201c\u00ae -label.action.reboot.router.processing=\u0192\u2039\ufffd[\u0192^\ufffd[\u201a\u00f0\ufffd\u00c4\u2039N\u201c\u00ae\u201a\u00b5\u201a\u00c4\u201a\u00a2\u201a\u00dc\u201a\u00b7... -label.action.reboot.router=\u0192\u2039\ufffd[\u0192^\ufffd[\u201a\u00cc\ufffd\u00c4\u2039N\u201c\u00ae -label.action.reboot.systemvm.processing=\u0192V\u0192X\u0192e\u0192\u20ac VM \u201a\u00f0\ufffd\u00c4\u2039N\u201c\u00ae\u201a\u00b5\u201a\u00c4\u201a\u00a2\u201a\u00dc\u201a\u00b7... -label.action.reboot.systemvm=\u0192V\u0192X\u0192e\u0192\u20ac VM \u201a\u00cc\ufffd\u00c4\u2039N\u201c\u00ae -label.action.recurring.snapshot=\u2019\u00e8\u0160\u00fa\u0192X\u0192i\u0192b\u0192v\u0192V\u0192\u2021\u0192b\u0192g -label.action.register.iso=ISO \u201a\u00cc\u201co\u02dc^ -label.action.register.template=\u0192e\u0192\u201c\u0192v\u0192\u0152\ufffd[\u0192g\u201a\u00cc\u201co\u02dc^ -label.action.release.ip.processing=IP \u0192A\u0192h\u0192\u0152\u0192X\u201a\u00f0\u2030\u00f0\u2022\u00fa\u201a\u00b5\u201a\u00c4\u201a\u00a2\u201a\u00dc\u201a\u00b7... -label.action.release.ip=IP \u0192A\u0192h\u0192\u0152\u0192X\u201a\u00cc\u2030\u00f0\u2022\u00fa -label.action.remove.host.processing=\u0192z\u0192X\u0192g\u201a\u00f0\ufffd\u00ed\ufffd\u0153\u201a\u00b5\u201a\u00c4\u201a\u00a2\u201a\u00dc\u201a\u00b7... -label.action.remove.host=\u0192z\u0192X\u0192g\u201a\u00cc\ufffd\u00ed\ufffd\u0153 -label.action.reset.password.processing=\u0192p\u0192X\u0192\ufffd\ufffd[\u0192h\u201a\u00f0\u0192\u0160\u0192Z\u0192b\u0192g\u201a\u00b5\u201a\u00c4\u201a\u00a2\u201a\u00dc\u201a\u00b7... -label.action.reset.password=\u0192p\u0192X\u0192\ufffd\ufffd[\u0192h\u201a\u00cc\u0192\u0160\u0192Z\u0192b\u0192g -label.action.resize.volume.processing=\u0192{\u0192\u0160\u0192\u2026\ufffd[\u0192\u20ac\u201a\u00cc\u0192T\u0192C\u0192Y\u201a\u00f0\u2022\u00cf\ufffdX\u201a\u00b5\u201a\u00c4\u201a\u00a2\u201a\u00dc\u201a\u00b7... -label.action.resize.volume=\u0192{\u0192\u0160\u0192\u2026\ufffd[\u0192\u20ac \u0192T\u0192C\u0192Y\u201a\u00cc\u2022\u00cf\ufffdX -label.action.resource.limits=\u0192\u0160\u0192\\ufffd[\u0192X\ufffd\u00a7\u0152\u00c0 -label.action.restore.instance.processing=\u0192C\u0192\u201c\u0192X\u0192^\u0192\u201c\u0192X\u201a\u00f0\u2022\u0153\u0152\u00b3\u201a\u00b5\u201a\u00c4\u201a\u00a2\u201a\u00dc\u201a\u00b7... -label.action.restore.instance=\u0192C\u0192\u201c\u0192X\u0192^\u0192\u201c\u0192X\u201a\u00cc\u2022\u0153\u0152\u00b3 -label.action.start.instance.processing=\u0192C\u0192\u201c\u0192X\u0192^\u0192\u201c\u0192X\u201a\u00f0\u2039N\u201c\u00ae\u201a\u00b5\u201a\u00c4\u201a\u00a2\u201a\u00dc\u201a\u00b7... -label.action.start.instance=\u0192C\u0192\u201c\u0192X\u0192^\u0192\u201c\u0192X\u201a\u00cc\u2039N\u201c\u00ae -label.action.start.router.processing=\u0192\u2039\ufffd[\u0192^\ufffd[\u201a\u00f0\u2039N\u201c\u00ae\u201a\u00b5\u201a\u00c4\u201a\u00a2\u201a\u00dc\u201a\u00b7... -label.action.start.router=\u0192\u2039\ufffd[\u0192^\ufffd[\u201a\u00cc\u2039N\u201c\u00ae -label.action.start.systemvm.processing=\u0192V\u0192X\u0192e\u0192\u20ac VM \u201a\u00f0\u2039N\u201c\u00ae\u201a\u00b5\u201a\u00c4\u201a\u00a2\u201a\u00dc\u201a\u00b7... -label.action.start.systemvm=\u0192V\u0192X\u0192e\u0192\u20ac VM \u201a\u00cc\u2039N\u201c\u00ae -label.action.stop.instance.processing=\u0192C\u0192\u201c\u0192X\u0192^\u0192\u201c\u0192X\u201a\u00f0\u2019\u00e2\u017d~\u201a\u00b5\u201a\u00c4\u201a\u00a2\u201a\u00dc\u201a\u00b7... -label.action.stop.instance=\u0192C\u0192\u201c\u0192X\u0192^\u0192\u201c\u0192X\u201a\u00cc\u2019\u00e2\u017d~ -label.action.stop.router.processing=\u0192\u2039\ufffd[\u0192^\ufffd[\u201a\u00f0\u2019\u00e2\u017d~\u201a\u00b5\u201a\u00c4\u201a\u00a2\u201a\u00dc\u201a\u00b7... -label.action.stop.router=\u0192\u2039\ufffd[\u0192^\ufffd[\u201a\u00cc\u2019\u00e2\u017d~ -label.action.stop.systemvm.processing=\u0192V\u0192X\u0192e\u0192\u20ac VM \u201a\u00f0\u2019\u00e2\u017d~\u201a\u00b5\u201a\u00c4\u201a\u00a2\u201a\u00dc\u201a\u00b7... -label.action.stop.systemvm=\u0192V\u0192X\u0192e\u0192\u20ac VM \u201a\u00cc\u2019\u00e2\u017d~ -label.action.take.snapshot.processing=\u0192X\u0192i\u0192b\u0192v\u0192V\u0192\u2021\u0192b\u0192g\u201a\u00f0\ufffd\u00ec\ufffd\u00ac\u201a\u00b5\u201a\u00c4\u201a\u00a2\u201a\u00dc\u201a\u00b7.... -label.action.take.snapshot=\u0192X\u0192i\u0192b\u0192v\u0192V\u0192\u2021\u0192b\u0192g\u201a\u00cc\ufffd\u00ec\ufffd\u00ac -label.action.revert.snapshot.processing=\u0192X\u0192i\u0192b\u0192v\u0192V\u0192\u2021\u0192b\u0192g\u201a\u00c9\u2013\u00df\u201a\u00b5\u201a\u00c4\u201a\u00a2\u201a\u00dc\u201a\u00b7... -label.action.revert.snapshot=\u0192X\u0192i\u0192b\u0192v\u0192V\u0192\u2021\u0192b\u0192g\u201a\u00c9\u2013\u00df\u201a\u00b7 -label.action.unmanage.cluster.processing=\u0192N\u0192\u2030\u0192X\u0192^\ufffd[\u201a\u00f0\u201d\u00f1\u0160\u00c7\u2014\ufffd\u2018\u00ce\ufffd\u00db\u201a\u00c9\u201a\u00b5\u201a\u00c4\u201a\u00a2\u201a\u00dc\u201a\u00b7... -label.action.unmanage.cluster=\u0192N\u0192\u2030\u0192X\u0192^\ufffd[\u201a\u00cc\u201d\u00f1\u0160\u00c7\u2014\ufffd\u2018\u00ce\ufffd\u00db\u2030\u00bb -label.action.update.OS.preference.processing=OS \u0160\u00ee\u2013{\ufffd\u00dd\u2019\u00e8\u201a\u00f0\ufffdX\ufffdV\u201a\u00b5\u201a\u00c4\u201a\u00a2\u201a\u00dc\u201a\u00b7... -label.action.update.OS.preference=OS \u0160\u00ee\u2013{\ufffd\u00dd\u2019\u00e8\u201a\u00cc\ufffdX\ufffdV -label.action.update.resource.count.processing=\u0192\u0160\u0192\\ufffd[\u0192X\ufffd\u201d\u201a\u00f0\ufffdX\ufffdV\u201a\u00b5\u201a\u00c4\u201a\u00a2\u201a\u00dc\u201a\u00b7... -label.action.update.resource.count=\u0192\u0160\u0192\\ufffd[\u0192X\ufffd\u201d\u201a\u00cc\ufffdX\ufffdV -label.action.vmsnapshot.create=VM \u0192X\u0192i\u0192b\u0192v\u0192V\u0192\u2021\u0192b\u0192g\u201a\u00cc\ufffd\u00ec\ufffd\u00ac -label.action.vmsnapshot.delete=VM \u0192X\u0192i\u0192b\u0192v\u0192V\u0192\u2021\u0192b\u0192g\u201a\u00cc\ufffd\u00ed\ufffd\u0153 -label.action.vmsnapshot.revert=VM \u0192X\u0192i\u0192b\u0192v\u0192V\u0192\u2021\u0192b\u0192g\u201a\u00c9\u2013\u00df\u201a\u00b7 -label.actions=\u2018\u20ac\ufffd\u00ec -label.activate.project=\u0192v\u0192\ufffd\u0192W\u0192F\u0192N\u0192g\u201a\u00cc\u0192A\u0192N\u0192e\u0192B\u0192u\u2030\u00bb -label.active.sessions=\u0192A\u0192N\u0192e\u0192B\u0192u\u201a\u00c8\u0192Z\u0192b\u0192V\u0192\u2021\u0192\u201c -label.add.account.to.project=\u0192v\u0192\ufffd\u0192W\u0192F\u0192N\u0192g\u201a\u00d6\u201a\u00cc\u0192A\u0192J\u0192E\u0192\u201c\u0192g\u201a\u00cc\u2019\u00c7\u2030\u00c1 -label.add.account=\u0192A\u0192J\u0192E\u0192\u201c\u0192g\u201a\u00cc\u2019\u00c7\u2030\u00c1 -label.add.accounts.to=\u0192A\u0192J\u0192E\u0192\u201c\u0192g\u201a\u00cc\u2019\u00c7\u2030\u00c1\ufffd\u00e6: -label.add.accounts=\u0192A\u0192J\u0192E\u0192\u201c\u0192g\u201a\u00cc\u2019\u00c7\u2030\u00c1 -label.add.ACL=ACL \u201a\u00cc\u2019\u00c7\u2030\u00c1 -label.add.affinity.group=\ufffdV\u201a\u00b5\u201a\u00a2\u0192A\u0192t\u0192B\u0192j\u0192e\u0192B \u0192O\u0192\u2039\ufffd[\u0192v\u201a\u00cc\u2019\u00c7\u2030\u00c1 -label.add.BigSwitchVns.device=Big Switch VNS \u0192R\u0192\u201c\u0192g\u0192\ufffd\ufffd[\u0192\u2030\ufffd[\u201a\u00cc\u2019\u00c7\u2030\u00c1 -label.add.by.cidr=CIDR \u201a\u00c5\u2019\u00c7\u2030\u00c1 -label.add.by.group=\u0192O\u0192\u2039\ufffd[\u0192v\u201a\u00c5\u2019\u00c7\u2030\u00c1 -label.add.by=\u2019\u00c7\u2030\u00c1\u2019P\u02c6\u00ca -label.add.cluster=\u0192N\u0192\u2030\u0192X\u0192^\ufffd[\u201a\u00cc\u2019\u00c7\u2030\u00c1 -label.add.compute.offering=\u0192R\u0192\u201c\u0192s\u0192\u2026\ufffd[\u0192e\u0192B\u0192\u201c\u0192O \u0192I\u0192t\u0192@\u0192\u0160\u0192\u201c\u0192O\u201a\u00cc\u2019\u00c7\u2030\u00c1 -label.add.direct.iprange=Add Direct Ip Range -label.add.disk.offering=\u0192f\u0192B\u0192X\u0192N \u0192I\u0192t\u0192@\u0192\u0160\u0192\u201c\u0192O\u201a\u00cc\u2019\u00c7\u2030\u00c1 -label.add.domain=\u0192h\u0192\ufffd\u0192C\u0192\u201c\u201a\u00cc\u2019\u00c7\u2030\u00c1 -label.add.egress.rule=\u2018\u2014\ufffdM\u2039K\u2018\u00a5\u201a\u00cc\u2019\u00c7\u2030\u00c1 -label.add.F5.device=F5 \u0192f\u0192o\u0192C\u0192X\u201a\u00cc\u2019\u00c7\u2030\u00c1 -label.add.firewall=\u0192t\u0192@\u0192C\u0192A\u0192E\u0192H\ufffd[\u0192\u2039\u2039K\u2018\u00a5\u201a\u00cc\u2019\u00c7\u2030\u00c1 -label.add.guest.network=\u0192Q\u0192X\u0192g \u0192l\u0192b\u0192g\u0192\ufffd\ufffd[\u0192N\u201a\u00cc\u2019\u00c7\u2030\u00c1 -label.add.host=\u0192z\u0192X\u0192g\u201a\u00cc\u2019\u00c7\u2030\u00c1 -label.add.ingress.rule=\u017d\u00f3\ufffdM\u2039K\u2018\u00a5\u201a\u00cc\u2019\u00c7\u2030\u00c1 -label.add.intermediate.certificate=Add intermediate certificate -label.add.ip.range=IP \u0192A\u0192h\u0192\u0152\u0192X\u201a\u00cc\u201d\u00cd\u02c6\u00cd\u201a\u00cc\u2019\u00c7\u2030\u00c1 -label.add.load.balancer=\u0192\ufffd\ufffd[\u0192h \u0192o\u0192\u2030\u0192\u201c\u0192T\ufffd[\u201a\u00cc\u2019\u00c7\u2030\u00c1 -label.add.more=\u201a\u00bb\u201a\u00cc\u201a\u00d9\u201a\u00a9\u201a\u00cc\ufffd\u20ac\u2013\u00da\u201a\u00cc\u2019\u00c7\u2030\u00c1 -label.add.netScaler.device=Add Netscaler device -label.add.network.ACL=\u0192l\u0192b\u0192g\u0192\ufffd\ufffd[\u0192N ACL \u201a\u00cc\u2019\u00c7\u2030\u00c1 -label.add.network.device=\u0192l\u0192b\u0192g\u0192\ufffd\ufffd[\u0192N \u0192f\u0192o\u0192C\u0192X\u201a\u00cc\u2019\u00c7\u2030\u00c1 -label.add.network.offering=\u0192l\u0192b\u0192g\u0192\ufffd\ufffd[\u0192N \u0192I\u0192t\u0192@\u0192\u0160\u0192\u201c\u0192O\u201a\u00cc\u2019\u00c7\u2030\u00c1 -label.add.network=\u0192l\u0192b\u0192g\u0192\ufffd\ufffd[\u0192N\u201a\u00cc\u2019\u00c7\u2030\u00c1 -label.add.new.F5=\ufffdV\u201a\u00b5\u201a\u00a2 F5 \u201a\u00cc\u2019\u00c7\u2030\u00c1 -label.add.new.gateway=\ufffdV\u201a\u00b5\u201a\u00a2\u0192Q\ufffd[\u0192g\u0192E\u0192F\u0192C\u201a\u00cc\u2019\u00c7\u2030\u00c1 -label.add.new.NetScaler=\ufffdV\u201a\u00b5\u201a\u00a2 NetScaler \u201a\u00cc\u2019\u00c7\u2030\u00c1 -label.add.new.SRX=\ufffdV\u201a\u00b5\u201a\u00a2 SRX \u201a\u00cc\u2019\u00c7\u2030\u00c1 -label.add.new.PA=\ufffdV\u201a\u00b5\u201a\u00a2 Palo Alto \u201a\u00cc\u2019\u00c7\u2030\u00c1 -label.add.new.tier=\ufffdV\u201a\u00b5\u201a\u00a2\u0160K\u2018w\u201a\u00cc\u2019\u00c7\u2030\u00c1 -label.add.NiciraNvp.device=Add Nvp Controller -label.add.NuageVsp.device=Add Nuage Virtualized Services Directory (VSD) -label.add.BrocadeVcs.device=Add Brocade Vcs Switch -label.add.physical.network=\u2022\u00a8\u2014\ufffd\u0192l\u0192b\u0192g\u0192\ufffd\ufffd[\u0192N\u201a\u00cc\u2019\u00c7\u2030\u00c1 -label.add.pod=\u0192|\u0192b\u0192h\u201a\u00cc\u2019\u00c7\u2030\u00c1 -label.add.port.forwarding.rule=\u0192|\ufffd[\u0192g\u201c]\u2018\u2014\u2039K\u2018\u00a5\u201a\u00cc\u2019\u00c7\u2030\u00c1 -label.add.primary.storage=\u0192v\u0192\u2030\u0192C\u0192}\u0192\u0160 \u0192X\u0192g\u0192\u0152\ufffd[\u0192W\u201a\u00cc\u2019\u00c7\u2030\u00c1 -label.add.region=\u2014\u00cc\u02c6\u00e6\u201a\u00cc\u2019\u00c7\u2030\u00c1 -label.add.resources=\u0192\u0160\u0192\\ufffd[\u0192X\u201a\u00cc\u2019\u00c7\u2030\u00c1 -label.add.route=\u0192\u2039\ufffd[\u0192g\u201a\u00cc\u2019\u00c7\u2030\u00c1 -label.add.rule=\u2039K\u2018\u00a5\u201a\u00cc\u2019\u00c7\u2030\u00c1 -label.add.secondary.storage=\u0192Z\u0192J\u0192\u201c\u0192_\u0192\u0160 \u0192X\u0192g\u0192\u0152\ufffd[\u0192W\u201a\u00cc\u2019\u00c7\u2030\u00c1 -label.add.security.group=\u0192Z\u0192L\u0192\u2026\u0192\u0160\u0192e\u0192B \u0192O\u0192\u2039\ufffd[\u0192v\u201a\u00cc\u2019\u00c7\u2030\u00c1 -label.add.service.offering=\u0192T\ufffd[\u0192r\u0192X \u0192I\u0192t\u0192@\u0192\u0160\u0192\u201c\u0192O\u201a\u00cc\u2019\u00c7\u2030\u00c1 -label.add.SRX.device=SRX \u0192f\u0192o\u0192C\u0192X\u201a\u00cc\u2019\u00c7\u2030\u00c1 -label.add.PA.device=Palo Alto \u0192f\u0192o\u0192C\u0192X\u201a\u00cc\u2019\u00c7\u2030\u00c1 -label.add.static.nat.rule=\ufffd\u00c3\u201cI NAT \u2039K\u2018\u00a5\u201a\u00cc\u2019\u00c7\u2030\u00c1 -label.add.static.route=\ufffd\u00c3\u201cI\u0192\u2039\ufffd[\u0192g\u201a\u00cc\u2019\u00c7\u2030\u00c1 -label.add.system.service.offering=\u0192V\u0192X\u0192e\u0192\u20ac \u0192T\ufffd[\u0192r\u0192X \u0192I\u0192t\u0192@\u0192\u0160\u0192\u201c\u0192O\u201a\u00cc\u2019\u00c7\u2030\u00c1 -label.add.template=\u0192e\u0192\u201c\u0192v\u0192\u0152\ufffd[\u0192g\u201a\u00cc\u2019\u00c7\u2030\u00c1 -label.add.to.group=\u2019\u00c7\u2030\u00c1\ufffd\u00e6\u0192O\u0192\u2039\ufffd[\u0192v -label.add.user=\u0192\u2020\ufffd[\u0192U\ufffd[\u201a\u00cc\u2019\u00c7\u2030\u00c1 -label.add.vlan=VLAN \u201a\u00cc\u2019\u00c7\u2030\u00c1 -label.add.vxlan=VXLAN \u201a\u00cc\u2019\u00c7\u2030\u00c1 -label.add.VM.to.tier=\u0160K\u2018w\u201a\u00d6\u201a\u00cc VM \u201a\u00cc\u2019\u00c7\u2030\u00c1 -label.add.vm=VM \u201a\u00cc\u2019\u00c7\u2030\u00c1 -label.add.vms.to.lb=\u0192\ufffd\ufffd[\u0192h \u0192o\u0192\u2030\u0192\u201c\u0192T\ufffd[\u2039K\u2018\u00a5\u201a\u00d6\u201a\u00cc VM \u201a\u00cc\u2019\u00c7\u2030\u00c1 -label.add.vms=VM \u201a\u00cc\u2019\u00c7\u2030\u00c1 -label.add.volume=\u0192{\u0192\u0160\u0192\u2026\ufffd[\u0192\u20ac\u201a\u00cc\u2019\u00c7\u2030\u00c1 -label.add.vpc=VPC \u201a\u00cc\u2019\u00c7\u2030\u00c1 -label.add.vpn.customer.gateway=VPN \u0192J\u0192X\u0192^\u0192}\ufffd[ \u0192Q\ufffd[\u0192g\u0192E\u0192F\u0192C\u201a\u00cc\u2019\u00c7\u2030\u00c1 -label.add.VPN.gateway=VPN \u0192Q\ufffd[\u0192g\u0192E\u0192F\u0192C\u201a\u00cc\u2019\u00c7\u2030\u00c1 -label.add.vpn.user=VPN \u0192\u2020\ufffd[\u0192U\ufffd[\u201a\u00cc\u2019\u00c7\u2030\u00c1 -label.add.zone=\u0192]\ufffd[\u0192\u201c\u201a\u00cc\u2019\u00c7\u2030\u00c1 -label.add=\u2019\u00c7\u2030\u00c1 -label.adding.cluster=\u0192N\u0192\u2030\u0192X\u0192^\ufffd[\u201a\u00f0\u2019\u00c7\u2030\u00c1\u201a\u00b5\u201a\u00c4\u201a\u00a2\u201a\u00dc\u201a\u00b7 -label.adding.failed=\u2019\u00c7\u2030\u00c1\u201a\u00c5\u201a\u00ab\u201a\u00dc\u201a\u00b9\u201a\u00f1\u201a\u00c5\u201a\u00b5\u201a\u00bd -label.adding.pod=\u0192|\u0192b\u0192h\u201a\u00f0\u2019\u00c7\u2030\u00c1\u201a\u00b5\u201a\u00c4\u201a\u00a2\u201a\u00dc\u201a\u00b7 -label.adding.processing=\u2019\u00c7\u2030\u00c1\u201a\u00b5\u201a\u00c4\u201a\u00a2\u201a\u00dc\u201a\u00b7... -label.adding.succeeded=\u2019\u00c7\u2030\u00c1\u201a\u00b5\u201a\u00dc\u201a\u00b5\u201a\u00bd -label.adding.user=\u0192\u2020\ufffd[\u0192U\ufffd[\u201a\u00f0\u2019\u00c7\u2030\u00c1\u201a\u00b5\u201a\u00c4\u201a\u00a2\u201a\u00dc\u201a\u00b7 -label.adding.zone=\u0192]\ufffd[\u0192\u201c\u201a\u00f0\u2019\u00c7\u2030\u00c1\u201a\u00b5\u201a\u00c4\u201a\u00a2\u201a\u00dc\u201a\u00b7 -label.adding=\u2019\u00c7\u2030\u00c1\u201a\u00b5\u201a\u00c4\u201a\u00a2\u201a\u00dc\u201a\u00b7 -label.additional.networks=\u2019\u00c7\u2030\u00c1\u201a\u00cc\u0192l\u0192b\u0192g\u0192\ufffd\ufffd[\u0192N -label.admin.accounts=\u0160\u00c7\u2014\ufffd\u017d\u00d2\u0192A\u0192J\u0192E\u0192\u201c\u0192g -label.admin=\u0160\u00c7\u2014\ufffd\u017d\u00d2 -label.advanced.mode=\u0160g\u2019\u00a3\u0192\u201a\ufffd[\u0192h -label.advanced.search=\ufffd\u201a\u201cx\u201a\u00c8\u0152\u0178\ufffd\u00f5 -label.advanced=\u0160g\u2019\u00a3 -label.affinity.group=\u0192A\u0192t\u0192B\u0192j\u0192e\u0192B \u0192O\u0192\u2039\ufffd[\u0192v -label.affinity.groups=\u0192A\u0192t\u0192B\u0192j\u0192e\u0192B \u0192O\u0192\u2039\ufffd[\u0192v -label.affinity=\u0192A\u0192t\u0192B\u0192j\u0192e\u0192B -label.agent.password=\u0192G\ufffd[\u0192W\u0192F\u0192\u201c\u0192g \u0192p\u0192X\u0192\ufffd\ufffd[\u0192h -label.agent.username=\u0192G\ufffd[\u0192W\u0192F\u0192\u201c\u0192g \u0192\u2020\ufffd[\u0192U\ufffd[\u2013\u00bc -label.agree=\u201c\u00af\u02c6\u00d3\u201a\u00b7\u201a\u00e9 -label.alert=\u0192A\u0192\u2030\ufffd[\u0192g -label.algorithm=\u0192A\u0192\u2039\u0192S\u0192\u0160\u0192Y\u0192\u20ac -label.allocated=\u0160\u201e\u201a\u00e8\u201c\u2013\u201a\u00c4\ufffd\u00cf\u201a\u00dd -label.allocation.state=\u0160\u201e\u201a\u00e8\u201c\u2013\u201a\u00c4\ufffd\u00f3\u2018\u00d4 -label.anti.affinity.group=\u0192A\u0192\u201c\u0192`\u0192A\u0192t\u0192B\u0192j\u0192e\u0192B \u0192O\u0192\u2039\ufffd[\u0192v -label.anti.affinity.groups=\u0192A\u0192\u201c\u0192`\u0192A\u0192t\u0192B\u0192j\u0192e\u0192B \u0192O\u0192\u2039\ufffd[\u0192v -label.anti.affinity=\u0192A\u0192\u201c\u0192`\u0192A\u0192t\u0192B\u0192j\u0192e\u0192B -label.api.key=API \u0192L\ufffd[ -label.api.version=API Version -label.apply=\u201cK\u2014p -label.assign.to.load.balancer=\u0192\ufffd\ufffd[\u0192h \u0192o\u0192\u2030\u0192\u201c\u0192T\ufffd[\u201a\u00c9\u0192C\u0192\u201c\u0192X\u0192^\u0192\u201c\u0192X\u201a\u00f0\u0160\u201e\u201a\u00e8\u201c\u2013\u201a\u00c4\u201a\u00c4\u201a\u00a2\u201a\u00dc\u201a\u00b7 -label.assign=\u0160\u201e\u201a\u00e8\u201c\u2013\u201a\u00c4 -label.associated.network.id=\u0160\u00d6\u02dcA\u2022t\u201a\u00af\u201a\u00e7\u201a\u00ea\u201a\u00bd\u0192l\u0192b\u0192g\u0192\ufffd\ufffd[\u0192N ID -label.associated.network=\u0160\u00d6\u02dcA\u2022t\u201a\u00af\u201a\u00e7\u201a\u00ea\u201a\u00bd\u0192l\u0192b\u0192g\u0192\ufffd\ufffd[\u0192N -label.attached.iso=\u0192A\u0192^\u0192b\u0192`\u201a\u00b3\u201a\u00ea\u201a\u00bd ISO -label.author.email=\ufffd\u00ec\ufffd\u00ac\u017d\u00d2\u201a\u00cc\u201cd\u017dq\u0192\ufffd\ufffd[\u0192\u2039 -label.author.name=\ufffd\u00ec\ufffd\u00ac\u017d\u00d2\u201a\u00cc\u2013\u00bc\u2018O -label.availability.zone=\u0192A\u0192x\u0192C\u0192\u2030\u0192r\u0192\u0160\u0192e\u0192B \u0192]\ufffd[\u0192\u201c -label.availability=\u2030\u00c2\u2014p\ufffd\u00ab -label.available.public.ips=\u017dg\u2014p\u201a\u00c5\u201a\u00ab\u201a\u00e9\u0192p\u0192u\u0192\u0160\u0192b\u0192N IP \u0192A\u0192h\u0192\u0152\u0192X -label.available=\u017dg\u2014p\u2030\u00c2\u201d\ -label.back=\u2013\u00df\u201a\u00e9 -label.bandwidth=\u2018\u00d1\u02c6\u00e6\u2022\ufffd -label.basic.mode=\u0160\u00ee\u2013{\u0192\u201a\ufffd[\u0192h -label.basic=\u0160\u00ee\u2013{ -label.bigswitch.controller.address=BigSwitch Vns Controller Address -label.bootable=\u2039N\u201c\u00ae\u2030\u00c2\u201d\ -label.broadcast.domain.range=\u0192u\u0192\ufffd\ufffd[\u0192h\u0192L\u0192\u0192\u0192X\u0192g \u0192h\u0192\ufffd\u0192C\u0192\u201c\u201a\u00cc\u201d\u00cd\u02c6\u00cd -label.broadcast.domain.type=\u0192u\u0192\ufffd\ufffd[\u0192h\u0192L\u0192\u0192\u0192X\u0192g \u0192h\u0192\ufffd\u0192C\u0192\u201c\u201a\u00cc\u017d\u00ed\u2014\u00de -label.broadcast.uri=\u0192u\u0192\ufffd\ufffd[\u0192h\u0192L\u0192\u0192\u0192X\u0192g URI -label.by.account=\u0192A\u0192J\u0192E\u0192\u201c\u0192g -label.by.availability=\u2030\u00c2\u2014p\ufffd\u00ab -label.by.domain=\u0192h\u0192\ufffd\u0192C\u0192\u201c -label.by.end.date=\ufffdI\u2014\u00b9\u201c\u00fa -label.by.level=\u0192\u0152\u0192x\u0192\u2039 -label.by.pod=\u0192|\u0192b\u0192h -label.by.role=\u2013\u00f0\u0160\u201e -label.by.start.date=\u0160J\u017dn\u201c\u00fa -label.by.state=\ufffd\u00f3\u2018\u00d4 -label.by.traffic.type=\u0192g\u0192\u2030\u0192t\u0192B\u0192b\u0192N\u201a\u00cc\u017d\u00ed\u2014\u00de -label.by.type.id=\u017d\u00ed\u2014\u00de ID -label.by.type=\u017d\u00ed\u2014\u00de -label.by.zone=\u0192]\ufffd[\u0192\u201c -label.bytes.received=\u017d\u00f3\ufffdM\u0192o\u0192C\u0192g -label.bytes.sent=\u2018\u2014\ufffdM\u0192o\u0192C\u0192g -label.cancel=\u0192L\u0192\u0192\u0192\u201c\u0192Z\u0192\u2039 -label.capacity=\ufffd\u02c6\u2014\ufffd\u201d\\u2014\u00cd -label.capacity.bytes=Capacity Bytes -label.capacity.iops=Capacity IOPS -label.certificate=Server certificate -label.change.service.offering=\u0192T\ufffd[\u0192r\u0192X \u0192I\u0192t\u0192@\u0192\u0160\u0192\u201c\u0192O\u201a\u00cc\u2022\u00cf\ufffdX -label.change.value=\u2019l\u201a\u00cc\u2022\u00cf\ufffdX -label.character=\u2022\u00b6\u017d\u0161 -label.checksum=MD5 \u0192`\u0192F\u0192b\u0192N\u0192T\u0192\u20ac -label.cidr.account=CIDR \u201a\u00dc\u201a\u00bd\u201a\u00cd\u0192A\u0192J\u0192E\u0192\u201c\u0192g/\u0192Z\u0192L\u0192\u2026\u0192\u0160\u0192e\u0192B \u0192O\u0192\u2039\ufffd[\u0192v -label.CIDR.list=CIDR \u02c6\u00ea\u2014\u2014 -label.cidr.list=\u2018\u2014\ufffdM\u0152\u00b3 CIDR -label.CIDR.of.destination.network=\u02c6\u00b6\ufffd\u00e6\u0192l\u0192b\u0192g\u0192\ufffd\ufffd[\u0192N\u201a\u00cc CIDR +label.about.app=CloudStack \u306b\u3064\u3044\u3066 +label.custom.disk.iops=\u30ab\u30b9\u30bf\u30e0 IOPS +label.disk.iops.min=\u6700\u5c0f IOPS +label.disk.iops.max=\u6700\u5927 IOPS +label.disk.iops.total=IOPS \u5408\u8a08 +label.hypervisor.snapshot.reserve=\u30cf\u30a4\u30d1\u30fc\u30d0\u30a4\u30b6\u30fc \u30b9\u30ca\u30c3\u30d7\u30b7\u30e7\u30c3\u30c8\u4e88\u7d04 +label.view.secondary.ips=\u30bb\u30ab\u30f3\u30c0\u30ea IP \u30a2\u30c9\u30ec\u30b9\u306e\u8868\u793a +message.validate.invalid.characters=\u7121\u52b9\u306a\u6587\u5b57\u304c\u898b\u3064\u304b\u308a\u307e\u3057\u305f\u3002\u4fee\u6574\u3057\u3066\u304f\u3060\u3055\u3044\u3002 +message.acquire.ip.nic=\u3053\u306e NIC \u306e\u305f\u3081\u306b\u65b0\u3057\u3044\u30bb\u30ab\u30f3\u30c0\u30ea IP \u30a2\u30c9\u30ec\u30b9\u3092\u53d6\u5f97\u3057\u3066\u3082\u3088\u308d\u3057\u3044\u3067\u3059\u304b?
\u6ce8: \u65b0\u3057\u304f\u53d6\u5f97\u3057\u305f\u30bb\u30ab\u30f3\u30c0\u30ea IP \u30a2\u30c9\u30ec\u30b9\u306f\u4eee\u60f3\u30de\u30b7\u30f3\u5185\u3067\u624b\u52d5\u3067\u69cb\u6210\u3059\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002 +message.select.affinity.groups=\u3053\u306e VM \u3092\u8ffd\u52a0\u3059\u308b\u30a2\u30d5\u30a3\u30cb\u30c6\u30a3 \u30b0\u30eb\u30fc\u30d7\u3092\u9078\u629e\u3057\u3066\u304f\u3060\u3055\u3044\u3002 +message.no.affinity.groups=\u30a2\u30d5\u30a3\u30cb\u30c6\u30a3 \u30b0\u30eb\u30fc\u30d7\u304c\u3042\u308a\u307e\u305b\u3093\u3002\u6b21\u306e\u624b\u9806\u306b\u9032\u3093\u3067\u304f\u3060\u3055\u3044\u3002 +label.action.delete.nic=NIC \u306e\u524a\u9664 +message.action.delete.nic=\u3053\u306e NIC \u3092\u524a\u9664\u3057\u3066\u3082\u3088\u308d\u3057\u3044\u3067\u3059\u304b? \u95a2\u9023\u4ed8\u3051\u3089\u308c\u305f\u30cd\u30c3\u30c8\u30ef\u30fc\u30af\u3082 VM \u304b\u3089\u524a\u9664\u3055\u308c\u307e\u3059\u3002 +changed.item.properties=\u9805\u76ee\u306e\u30d7\u30ed\u30d1\u30c6\u30a3\u306e\u5909\u66f4 +confirm.enable.s3=S3 \u30d9\u30fc\u30b9\u306e\u30bb\u30ab\u30f3\u30c0\u30ea \u30b9\u30c8\u30ec\u30fc\u30b8\u306e\u30b5\u30dd\u30fc\u30c8\u3092\u6709\u52b9\u306b\u3059\u308b\u306b\u306f\u3001\u6b21\u306e\u60c5\u5831\u3092\u5165\u529b\u3057\u3066\u304f\u3060\u3055\u3044\u3002 +confirm.enable.swift=Swift \u306e\u30b5\u30dd\u30fc\u30c8\u3092\u6709\u52b9\u306b\u3059\u308b\u306b\u306f\u3001\u6b21\u306e\u60c5\u5831\u3092\u5165\u529b\u3057\u3066\u304f\u3060\u3055\u3044\u3002 +error.could.not.change.your.password.because.ldap.is.enabled=\u30a8\u30e9\u30fc\u3002LDAP \u304c\u6709\u52b9\u306a\u305f\u3081\u30d1\u30b9\u30ef\u30fc\u30c9\u3092\u5909\u66f4\u3067\u304d\u307e\u305b\u3093\u3002 +error.could.not.enable.zone=\u30be\u30fc\u30f3\u3092\u6709\u52b9\u306b\u3067\u304d\u307e\u305b\u3093\u3067\u3057\u305f +error.installWizard.message=\u554f\u984c\u304c\u767a\u751f\u3057\u307e\u3057\u305f\u3002\u623b\u3063\u3066\u30a8\u30e9\u30fc\u3092\u4fee\u6b63\u3067\u304d\u307e\u3059\u3002 +error.invalid.username.password=\u7121\u52b9\u306a\u30e6\u30fc\u30b6\u30fc\u540d\u307e\u305f\u306f\u30d1\u30b9\u30ef\u30fc\u30c9\u3067\u3059\u3002 +error.login=\u30e6\u30fc\u30b6\u30fc\u540d/\u30d1\u30b9\u30ef\u30fc\u30c9\u304c\u8a18\u9332\u3068\u4e00\u81f4\u3057\u307e\u305b\u3093\u3002 +error.menu.select=\u9805\u76ee\u304c\u9078\u629e\u3055\u308c\u3066\u3044\u306a\u3044\u305f\u3081\u64cd\u4f5c\u3092\u5b9f\u884c\u3067\u304d\u307e\u305b\u3093\u3002 +error.mgmt.server.inaccessible=\u7ba1\u7406\u30b5\u30fc\u30d0\u30fc\u306b\u30a2\u30af\u30bb\u30b9\u3067\u304d\u307e\u305b\u3093\u3002\u5f8c\u3067\u518d\u5b9f\u884c\u3057\u3066\u304f\u3060\u3055\u3044\u3002 +error.password.not.match=\u30d1\u30b9\u30ef\u30fc\u30c9\u304c\u4e00\u81f4\u3057\u307e\u305b\u3093 +error.please.specify.physical.network.tags=\u3053\u306e\u7269\u7406\u30cd\u30c3\u30c8\u30ef\u30fc\u30af\u306e\u30bf\u30b0\u3092\u6307\u5b9a\u3057\u306a\u3051\u308c\u3070\u3001\u30cd\u30c3\u30c8\u30ef\u30fc\u30af \u30aa\u30d5\u30a1\u30ea\u30f3\u30b0\u306f\u4f7f\u7528\u3067\u304d\u307e\u305b\u3093\u3002 +error.session.expired=\u30bb\u30c3\u30b7\u30e7\u30f3\u306e\u6709\u52b9\u671f\u9650\u304c\u5207\u308c\u307e\u3057\u305f\u3002 +error.something.went.wrong.please.correct.the.following=\u554f\u984c\u304c\u767a\u751f\u3057\u307e\u3057\u305f\u3002\u6b21\u306e\u5185\u5bb9\u3092\u4fee\u6b63\u3057\u3066\u304f\u3060\u3055\u3044 +error.unable.to.reach.management.server=\u7ba1\u7406\u30b5\u30fc\u30d0\u30fc\u3068\u901a\u4fe1\u3067\u304d\u307e\u305b\u3093 +error.unresolved.internet.name=\u30a4\u30f3\u30bf\u30fc\u30cd\u30c3\u30c8\u540d\u3092\u89e3\u6c7a\u3067\u304d\u307e\u305b\u3093\u3002 +label.extractable=\u62bd\u51fa\u53ef\u80fd +force.delete.domain.warning=\u8b66\u544a\: \u3053\u306e\u30aa\u30d7\u30b7\u30e7\u30f3\u3092\u9078\u629e\u3059\u308b\u3068\u3001\u3059\u3079\u3066\u306e\u5b50\u30c9\u30e1\u30a4\u30f3\u304a\u3088\u3073\u95a2\u9023\u3059\u308b\u3059\u3079\u3066\u306e\u30a2\u30ab\u30a6\u30f3\u30c8\u3068\u305d\u306e\u30ea\u30bd\u30fc\u30b9\u304c\u524a\u9664\u3055\u308c\u307e\u3059\u3002 +force.delete=\u5f37\u5236\u7684\u306b\u524a\u9664\u3059\u308b +force.remove.host.warning=\u8b66\u544a\: \u3053\u306e\u30aa\u30d7\u30b7\u30e7\u30f3\u3092\u9078\u629e\u3059\u308b\u3068\u3001\u5b9f\u884c\u4e2d\u306e\u3059\u3079\u3066\u306e\u4eee\u60f3\u30de\u30b7\u30f3\u304c\u5f37\u5236\u7684\u306b\u505c\u6b62\u3055\u308c\u3001\u30af\u30e9\u30b9\u30bf\u30fc\u304b\u3089\u3053\u306e\u30db\u30b9\u30c8\u304c\u5f37\u5236\u7684\u306b\u89e3\u9664\u3055\u308c\u307e\u3059\u3002 +force.remove=\u5f37\u5236\u7684\u306b\u89e3\u9664\u3059\u308b +force.stop.instance.warning=\u8b66\u544a\: \u30a4\u30f3\u30b9\u30bf\u30f3\u30b9\u306e\u5f37\u5236\u505c\u6b62\u306f\u3001\u6700\u7d42\u624b\u6bb5\u306b\u3057\u3066\u304f\u3060\u3055\u3044\u3002\u30c7\u30fc\u30bf\u3092\u640d\u5931\u3059\u308b\u3060\u3051\u3067\u306a\u304f\u3001\u4eee\u60f3\u30de\u30b7\u30f3\u306e\u52d5\u4f5c\u304c\u4e00\u8cab\u3057\u306a\u304f\u306a\u308b\u53ef\u80fd\u6027\u304c\u3042\u308a\u307e\u3059\u3002 +force.stop=\u5f37\u5236\u7684\u306b\u505c\u6b62\u3059\u308b +ICMP.code=ICMP \u30b3\u30fc\u30c9 +ICMP.type=ICMP \u306e\u7a2e\u985e +image.directory=\u753b\u50cf\u30c7\u30a3\u30ec\u30af\u30c8\u30ea +inline=\u76f4\u5217 +instances.actions.reboot.label=\u30a4\u30f3\u30b9\u30bf\u30f3\u30b9\u306e\u518d\u8d77\u52d5 +label.accept.project.invitation=\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u3078\u306e\u62db\u5f85\u306e\u627f\u8afe +label.account.and.security.group=\u30a2\u30ab\u30a6\u30f3\u30c8\u3001\u30bb\u30ad\u30e5\u30ea\u30c6\u30a3 \u30b0\u30eb\u30fc\u30d7 +label.account.id=\u30a2\u30ab\u30a6\u30f3\u30c8 ID +label.account.name=\u30a2\u30ab\u30a6\u30f3\u30c8\u540d +label.account.specific=\u30a2\u30ab\u30a6\u30f3\u30c8\u56fa\u6709 +label.account=\u30a2\u30ab\u30a6\u30f3\u30c8 +label.accounts=\u30a2\u30ab\u30a6\u30f3\u30c8 +label.acquire.new.ip=\u65b0\u3057\u3044 IP \u30a2\u30c9\u30ec\u30b9\u306e\u53d6\u5f97 +label.acquire.new.secondary.ip=\u30bb\u30ab\u30f3\u30c0\u30ea IP \u30a2\u30c9\u30ec\u30b9\u306e\u53d6\u5f97 +label.action.attach.disk.processing=\u30c7\u30a3\u30b9\u30af\u3092\u30a2\u30bf\u30c3\u30c1\u3057\u3066\u3044\u307e\u3059... +label.action.attach.disk=\u30c7\u30a3\u30b9\u30af\u306e\u30a2\u30bf\u30c3\u30c1 +label.action.attach.iso.processing=ISO \u3092\u30a2\u30bf\u30c3\u30c1\u3057\u3066\u3044\u307e\u3059... +label.action.attach.iso=ISO \u306e\u30a2\u30bf\u30c3\u30c1 +label.action.cancel.maintenance.mode.processing=\u4fdd\u5b88\u30e2\u30fc\u30c9\u3092\u30ad\u30e3\u30f3\u30bb\u30eb\u3057\u3066\u3044\u307e\u3059... +label.action.cancel.maintenance.mode=\u4fdd\u5b88\u30e2\u30fc\u30c9\u306e\u30ad\u30e3\u30f3\u30bb\u30eb +label.action.change.password=\u30d1\u30b9\u30ef\u30fc\u30c9\u306e\u5909\u66f4 +label.action.change.service.processing=\u30b5\u30fc\u30d3\u30b9\u3092\u5909\u66f4\u3057\u3066\u3044\u307e\u3059... +label.action.change.service=\u30b5\u30fc\u30d3\u30b9\u306e\u5909\u66f4 +label.action.copy.ISO.processing=ISO \u3092\u30b3\u30d4\u30fc\u3057\u3066\u3044\u307e\u3059... +label.action.copy.ISO=ISO \u306e\u30b3\u30d4\u30fc +label.action.copy.template.processing=\u30c6\u30f3\u30d7\u30ec\u30fc\u30c8\u3092\u30b3\u30d4\u30fc\u3057\u3066\u3044\u307e\u3059... +label.action.copy.template=\u30c6\u30f3\u30d7\u30ec\u30fc\u30c8\u306e\u30b3\u30d4\u30fc +label.action.create.template.from.vm=VM \u304b\u3089\u306e\u30c6\u30f3\u30d7\u30ec\u30fc\u30c8\u4f5c\u6210 +label.action.create.template.from.volume=\u30dc\u30ea\u30e5\u30fc\u30e0\u304b\u3089\u306e\u30c6\u30f3\u30d7\u30ec\u30fc\u30c8\u4f5c\u6210 +label.action.create.template.processing=\u30c6\u30f3\u30d7\u30ec\u30fc\u30c8\u3092\u4f5c\u6210\u3057\u3066\u3044\u307e\u3059... +label.action.create.template=\u30c6\u30f3\u30d7\u30ec\u30fc\u30c8\u306e\u4f5c\u6210 +label.action.create.vm.processing=VM \u3092\u4f5c\u6210\u3057\u3066\u3044\u307e\u3059... +label.action.create.vm=VM \u306e\u4f5c\u6210 +label.action.create.volume.processing=\u30dc\u30ea\u30e5\u30fc\u30e0\u3092\u4f5c\u6210\u3057\u3066\u3044\u307e\u3059... +label.action.create.volume=\u30dc\u30ea\u30e5\u30fc\u30e0\u306e\u4f5c\u6210 +label.action.delete.account.processing=\u30a2\u30ab\u30a6\u30f3\u30c8\u3092\u524a\u9664\u3057\u3066\u3044\u307e\u3059... +label.action.delete.account=\u30a2\u30ab\u30a6\u30f3\u30c8\u306e\u524a\u9664 +label.action.delete.cluster.processing=\u30af\u30e9\u30b9\u30bf\u30fc\u3092\u524a\u9664\u3057\u3066\u3044\u307e\u3059... +label.action.delete.cluster=\u30af\u30e9\u30b9\u30bf\u30fc\u306e\u524a\u9664 +label.action.delete.disk.offering.processing=\u30c7\u30a3\u30b9\u30af \u30aa\u30d5\u30a1\u30ea\u30f3\u30b0\u3092\u524a\u9664\u3057\u3066\u3044\u307e\u3059... +label.action.delete.disk.offering=\u30c7\u30a3\u30b9\u30af \u30aa\u30d5\u30a1\u30ea\u30f3\u30b0\u306e\u524a\u9664 +label.action.delete.domain.processing=\u30c9\u30e1\u30a4\u30f3\u3092\u524a\u9664\u3057\u3066\u3044\u307e\u3059... +label.action.delete.domain=\u30c9\u30e1\u30a4\u30f3\u306e\u524a\u9664 +label.action.delete.firewall.processing=\u30d5\u30a1\u30a4\u30a2\u30a6\u30a9\u30fc\u30eb\u3092\u524a\u9664\u3057\u3066\u3044\u307e\u3059... +label.action.delete.firewall=\u30d5\u30a1\u30a4\u30a2\u30a6\u30a9\u30fc\u30eb\u898f\u5247\u306e\u524a\u9664 +label.action.delete.ingress.rule.processing=\u53d7\u4fe1\u898f\u5247\u3092\u524a\u9664\u3057\u3066\u3044\u307e\u3059... +label.action.delete.ingress.rule=\u53d7\u4fe1\u898f\u5247\u306e\u524a\u9664 +label.action.delete.IP.range.processing=IP \u30a2\u30c9\u30ec\u30b9\u306e\u7bc4\u56f2\u3092\u524a\u9664\u3057\u3066\u3044\u307e\u3059... +label.action.delete.IP.range=IP \u30a2\u30c9\u30ec\u30b9\u306e\u7bc4\u56f2\u306e\u524a\u9664 +label.action.delete.ISO.processing=ISO \u3092\u524a\u9664\u3057\u3066\u3044\u307e\u3059... +label.action.delete.ISO=ISO \u306e\u524a\u9664 +label.action.delete.load.balancer.processing=\u30ed\u30fc\u30c9 \u30d0\u30e9\u30f3\u30b5\u30fc\u3092\u524a\u9664\u3057\u3066\u3044\u307e\u3059... +label.action.delete.load.balancer=\u30ed\u30fc\u30c9 \u30d0\u30e9\u30f3\u30b5\u30fc\u898f\u5247\u306e\u524a\u9664 +label.action.delete.network.processing=\u30cd\u30c3\u30c8\u30ef\u30fc\u30af\u3092\u524a\u9664\u3057\u3066\u3044\u307e\u3059... +label.action.delete.network=\u30cd\u30c3\u30c8\u30ef\u30fc\u30af\u306e\u524a\u9664 +label.action.delete.nexusVswitch=Nexus 1000V \u306e\u524a\u9664 +label.action.delete.physical.network=\u7269\u7406\u30cd\u30c3\u30c8\u30ef\u30fc\u30af\u306e\u524a\u9664 +label.action.delete.pod.processing=\u30dd\u30c3\u30c9\u3092\u524a\u9664\u3057\u3066\u3044\u307e\u3059... +label.action.delete.pod=\u30dd\u30c3\u30c9\u306e\u524a\u9664 +label.action.delete.primary.storage.processing=\u30d7\u30e9\u30a4\u30de\u30ea \u30b9\u30c8\u30ec\u30fc\u30b8\u3092\u524a\u9664\u3057\u3066\u3044\u307e\u3059... +label.action.delete.primary.storage=\u30d7\u30e9\u30a4\u30de\u30ea \u30b9\u30c8\u30ec\u30fc\u30b8\u306e\u524a\u9664 +label.action.delete.secondary.storage.processing=\u30bb\u30ab\u30f3\u30c0\u30ea \u30b9\u30c8\u30ec\u30fc\u30b8\u3092\u524a\u9664\u3057\u3066\u3044\u307e\u3059... +label.action.delete.secondary.storage=\u30bb\u30ab\u30f3\u30c0\u30ea \u30b9\u30c8\u30ec\u30fc\u30b8\u306e\u524a\u9664 +label.action.delete.security.group.processing=\u30bb\u30ad\u30e5\u30ea\u30c6\u30a3 \u30b0\u30eb\u30fc\u30d7\u3092\u524a\u9664\u3057\u3066\u3044\u307e\u3059... +label.action.delete.security.group=\u30bb\u30ad\u30e5\u30ea\u30c6\u30a3 \u30b0\u30eb\u30fc\u30d7\u306e\u524a\u9664 +label.action.delete.service.offering.processing=\u30b5\u30fc\u30d3\u30b9 \u30aa\u30d5\u30a1\u30ea\u30f3\u30b0\u3092\u524a\u9664\u3057\u3066\u3044\u307e\u3059... +label.action.delete.service.offering=\u30b5\u30fc\u30d3\u30b9 \u30aa\u30d5\u30a1\u30ea\u30f3\u30b0\u306e\u524a\u9664 +label.action.delete.snapshot.processing=\u30b9\u30ca\u30c3\u30d7\u30b7\u30e7\u30c3\u30c8\u3092\u524a\u9664\u3057\u3066\u3044\u307e\u3059... +label.action.delete.snapshot=\u30b9\u30ca\u30c3\u30d7\u30b7\u30e7\u30c3\u30c8\u306e\u524a\u9664 +label.action.delete.system.service.offering=\u30b7\u30b9\u30c6\u30e0 \u30b5\u30fc\u30d3\u30b9 \u30aa\u30d5\u30a1\u30ea\u30f3\u30b0\u306e\u524a\u9664 +label.action.delete.template.processing=\u30c6\u30f3\u30d7\u30ec\u30fc\u30c8\u3092\u524a\u9664\u3057\u3066\u3044\u307e\u3059... +label.action.delete.template=\u30c6\u30f3\u30d7\u30ec\u30fc\u30c8\u306e\u524a\u9664 +label.action.delete.user.processing=\u30e6\u30fc\u30b6\u30fc\u3092\u524a\u9664\u3057\u3066\u3044\u307e\u3059... +label.action.delete.user=\u30e6\u30fc\u30b6\u30fc\u306e\u524a\u9664 +label.action.delete.volume.processing=\u30dc\u30ea\u30e5\u30fc\u30e0\u3092\u524a\u9664\u3057\u3066\u3044\u307e\u3059... +label.action.delete.volume=\u30dc\u30ea\u30e5\u30fc\u30e0\u306e\u524a\u9664 +label.action.delete.zone.processing=\u30be\u30fc\u30f3\u3092\u524a\u9664\u3057\u3066\u3044\u307e\u3059... +label.action.delete.zone=\u30be\u30fc\u30f3\u306e\u524a\u9664 +label.action.destroy.instance.processing=\u30a4\u30f3\u30b9\u30bf\u30f3\u30b9\u3092\u7834\u68c4\u3057\u3066\u3044\u307e\u3059... +label.action.destroy.instance=\u30a4\u30f3\u30b9\u30bf\u30f3\u30b9\u306e\u7834\u68c4 +label.action.destroy.systemvm.processing=\u30b7\u30b9\u30c6\u30e0 VM \u3092\u7834\u68c4\u3057\u3066\u3044\u307e\u3059... +label.action.destroy.systemvm=\u30b7\u30b9\u30c6\u30e0 VM \u306e\u7834\u68c4 +label.action.detach.disk.processing=\u30c7\u30a3\u30b9\u30af\u3092\u30c7\u30bf\u30c3\u30c1\u3057\u3066\u3044\u307e\u3059... +label.action.detach.disk=\u30c7\u30a3\u30b9\u30af\u306e\u30c7\u30bf\u30c3\u30c1 +label.action.detach.iso.processing=ISO \u3092\u30c7\u30bf\u30c3\u30c1\u3057\u3066\u3044\u307e\u3059... +label.action.detach.iso=ISO \u306e\u30c7\u30bf\u30c3\u30c1 +label.action.disable.account.processing=\u30a2\u30ab\u30a6\u30f3\u30c8\u3092\u7121\u52b9\u306b\u3057\u3066\u3044\u307e\u3059... +label.action.disable.account=\u30a2\u30ab\u30a6\u30f3\u30c8\u306e\u7121\u52b9\u5316 +label.action.disable.cluster.processing=\u30af\u30e9\u30b9\u30bf\u30fc\u3092\u7121\u52b9\u306b\u3057\u3066\u3044\u307e\u3059... +label.action.disable.cluster=\u30af\u30e9\u30b9\u30bf\u30fc\u306e\u7121\u52b9\u5316 +label.action.disable.nexusVswitch=Nexus 1000V \u306e\u7121\u52b9\u5316 +label.action.disable.physical.network=\u7269\u7406\u30cd\u30c3\u30c8\u30ef\u30fc\u30af\u306e\u7121\u52b9\u5316 +label.action.disable.pod.processing=\u30dd\u30c3\u30c9\u3092\u7121\u52b9\u306b\u3057\u3066\u3044\u307e\u3059... +label.action.disable.pod=\u30dd\u30c3\u30c9\u306e\u7121\u52b9\u5316 +label.action.disable.static.NAT.processing=\u9759\u7684 NAT \u3092\u7121\u52b9\u306b\u3057\u3066\u3044\u307e\u3059... +label.action.disable.static.NAT=\u9759\u7684 NAT \u306e\u7121\u52b9\u5316 +label.action.disable.user.processing=\u30e6\u30fc\u30b6\u30fc\u3092\u7121\u52b9\u306b\u3057\u3066\u3044\u307e\u3059... +label.action.disable.user=\u30e6\u30fc\u30b6\u30fc\u306e\u7121\u52b9\u5316 +label.action.disable.zone.processing=\u30be\u30fc\u30f3\u3092\u7121\u52b9\u306b\u3057\u3066\u3044\u307e\u3059... +label.action.disable.zone=\u30be\u30fc\u30f3\u306e\u7121\u52b9\u5316 +label.action.download.ISO=ISO \u306e\u30c0\u30a6\u30f3\u30ed\u30fc\u30c9 +label.action.download.template=\u30c6\u30f3\u30d7\u30ec\u30fc\u30c8\u306e\u30c0\u30a6\u30f3\u30ed\u30fc\u30c9 +label.action.download.volume.processing=\u30dc\u30ea\u30e5\u30fc\u30e0\u3092\u30c0\u30a6\u30f3\u30ed\u30fc\u30c9\u3057\u3066\u3044\u307e\u3059... +label.action.download.volume=\u30dc\u30ea\u30e5\u30fc\u30e0\u306e\u30c0\u30a6\u30f3\u30ed\u30fc\u30c9 +label.action.edit.account=\u30a2\u30ab\u30a6\u30f3\u30c8\u306e\u7de8\u96c6 +label.action.edit.disk.offering=\u30c7\u30a3\u30b9\u30af \u30aa\u30d5\u30a1\u30ea\u30f3\u30b0\u306e\u7de8\u96c6 +label.action.edit.domain=\u30c9\u30e1\u30a4\u30f3\u306e\u7de8\u96c6 +label.action.edit.global.setting=\u30b0\u30ed\u30fc\u30d0\u30eb\u8a2d\u5b9a\u306e\u7de8\u96c6 +label.action.edit.host=\u30db\u30b9\u30c8\u306e\u7de8\u96c6 +label.action.edit.instance=\u30a4\u30f3\u30b9\u30bf\u30f3\u30b9\u306e\u7de8\u96c6 +label.action.edit.ISO=ISO \u306e\u7de8\u96c6 +label.action.edit.network.offering=\u30cd\u30c3\u30c8\u30ef\u30fc\u30af \u30aa\u30d5\u30a1\u30ea\u30f3\u30b0\u306e\u7de8\u96c6 +label.action.edit.network.processing=\u30cd\u30c3\u30c8\u30ef\u30fc\u30af\u3092\u7de8\u96c6\u3057\u3066\u3044\u307e\u3059... +label.action.edit.network=\u30cd\u30c3\u30c8\u30ef\u30fc\u30af\u306e\u7de8\u96c6 +label.action.edit.pod=\u30dd\u30c3\u30c9\u306e\u7de8\u96c6 +label.action.edit.primary.storage=\u30d7\u30e9\u30a4\u30de\u30ea \u30b9\u30c8\u30ec\u30fc\u30b8\u306e\u7de8\u96c6 +label.action.edit.resource.limits=\u30ea\u30bd\u30fc\u30b9\u5236\u9650\u306e\u7de8\u96c6 +label.action.edit.service.offering=\u30b5\u30fc\u30d3\u30b9 \u30aa\u30d5\u30a1\u30ea\u30f3\u30b0\u306e\u7de8\u96c6 +label.action.edit.template=\u30c6\u30f3\u30d7\u30ec\u30fc\u30c8\u306e\u7de8\u96c6 +label.action.edit.user=\u30e6\u30fc\u30b6\u30fc\u306e\u7de8\u96c6 +label.action.edit.zone=\u30be\u30fc\u30f3\u306e\u7de8\u96c6 +label.action.enable.account.processing=\u30a2\u30ab\u30a6\u30f3\u30c8\u3092\u6709\u52b9\u306b\u3057\u3066\u3044\u307e\u3059... +label.action.enable.account=\u30a2\u30ab\u30a6\u30f3\u30c8\u306e\u6709\u52b9\u5316 +label.action.enable.cluster.processing=\u30af\u30e9\u30b9\u30bf\u30fc\u3092\u6709\u52b9\u306b\u3057\u3066\u3044\u307e\u3059... +label.action.enable.cluster=\u30af\u30e9\u30b9\u30bf\u30fc\u306e\u6709\u52b9\u5316 +label.action.enable.maintenance.mode.processing=\u4fdd\u5b88\u30e2\u30fc\u30c9\u3092\u6709\u52b9\u306b\u3057\u3066\u3044\u307e\u3059... +label.action.enable.maintenance.mode=\u4fdd\u5b88\u30e2\u30fc\u30c9\u306e\u6709\u52b9\u5316 +label.action.enable.nexusVswitch=Nexus 1000V \u306e\u6709\u52b9\u5316 +label.action.enable.physical.network=\u7269\u7406\u30cd\u30c3\u30c8\u30ef\u30fc\u30af\u306e\u6709\u52b9\u5316 +label.action.enable.pod.processing=\u30dd\u30c3\u30c9\u3092\u6709\u52b9\u306b\u3057\u3066\u3044\u307e\u3059... +label.action.enable.pod=\u30dd\u30c3\u30c9\u306e\u6709\u52b9\u5316 +label.action.enable.static.NAT.processing=\u9759\u7684 NAT \u3092\u6709\u52b9\u306b\u3057\u3066\u3044\u307e\u3059... +label.action.enable.static.NAT=\u9759\u7684 NAT \u306e\u6709\u52b9\u5316 +label.action.enable.user.processing=\u30e6\u30fc\u30b6\u30fc\u3092\u6709\u52b9\u306b\u3057\u3066\u3044\u307e\u3059... +label.action.enable.user=\u30e6\u30fc\u30b6\u30fc\u306e\u6709\u52b9\u5316 +label.action.enable.zone.processing=\u30be\u30fc\u30f3\u3092\u6709\u52b9\u306b\u3057\u3066\u3044\u307e\u3059... +label.action.enable.zone=\u30be\u30fc\u30f3\u306e\u6709\u52b9\u5316 +label.action.expunge.instance=\u30a4\u30f3\u30b9\u30bf\u30f3\u30b9\u306e\u62b9\u6d88 +label.action.expunge.instance.processing=\u30a4\u30f3\u30b9\u30bf\u30f3\u30b9\u3092\u62b9\u6d88\u3057\u3066\u3044\u307e\u3059... +label.action.force.reconnect.processing=\u518d\u63a5\u7d9a\u3057\u3066\u3044\u307e\u3059... +label.action.force.reconnect=\u5f37\u5236\u518d\u63a5\u7d9a +label.action.generate.keys.processing=\u30ad\u30fc\u3092\u751f\u6210\u3057\u3066\u3044\u307e\u3059... +label.action.generate.keys=\u30ad\u30fc\u306e\u751f\u6210 +label.action.list.nexusVswitch=Nexus 1000V \u306e\u4e00\u89a7\u8868\u793a +label.action.lock.account.processing=\u30a2\u30ab\u30a6\u30f3\u30c8\u3092\u30ed\u30c3\u30af\u3057\u3066\u3044\u307e\u3059... +label.action.lock.account=\u30a2\u30ab\u30a6\u30f3\u30c8\u306e\u30ed\u30c3\u30af +label.action.manage.cluster.processing=\u30af\u30e9\u30b9\u30bf\u30fc\u3092\u7ba1\u7406\u5bfe\u8c61\u306b\u3057\u3066\u3044\u307e\u3059... +label.action.manage.cluster=\u30af\u30e9\u30b9\u30bf\u30fc\u306e\u7ba1\u7406\u5bfe\u8c61\u5316 +label.action.migrate.instance.processing=\u30a4\u30f3\u30b9\u30bf\u30f3\u30b9\u3092\u79fb\u884c\u3057\u3066\u3044\u307e\u3059... +label.action.migrate.instance=\u30a4\u30f3\u30b9\u30bf\u30f3\u30b9\u306e\u79fb\u884c +label.action.migrate.router.processing=\u30eb\u30fc\u30bf\u30fc\u3092\u79fb\u884c\u3057\u3066\u3044\u307e\u3059... +label.action.migrate.router=\u30eb\u30fc\u30bf\u30fc\u306e\u79fb\u884c +label.action.migrate.systemvm.processing=\u30b7\u30b9\u30c6\u30e0 VM \u3092\u79fb\u884c\u3057\u3066\u3044\u307e\u3059... +label.action.migrate.systemvm=\u30b7\u30b9\u30c6\u30e0 VM \u306e\u79fb\u884c +label.action.reboot.instance.processing=\u30a4\u30f3\u30b9\u30bf\u30f3\u30b9\u3092\u518d\u8d77\u52d5\u3057\u3066\u3044\u307e\u3059... +label.action.reboot.instance=\u30a4\u30f3\u30b9\u30bf\u30f3\u30b9\u306e\u518d\u8d77\u52d5 +label.action.reboot.router.processing=\u30eb\u30fc\u30bf\u30fc\u3092\u518d\u8d77\u52d5\u3057\u3066\u3044\u307e\u3059... +label.action.reboot.router=\u30eb\u30fc\u30bf\u30fc\u306e\u518d\u8d77\u52d5 +label.action.reboot.systemvm.processing=\u30b7\u30b9\u30c6\u30e0 VM \u3092\u518d\u8d77\u52d5\u3057\u3066\u3044\u307e\u3059... +label.action.reboot.systemvm=\u30b7\u30b9\u30c6\u30e0 VM \u306e\u518d\u8d77\u52d5 +label.action.recurring.snapshot=\u5b9a\u671f\u30b9\u30ca\u30c3\u30d7\u30b7\u30e7\u30c3\u30c8 +label.action.register.iso=ISO \u306e\u767b\u9332 +label.action.register.template=\u30c6\u30f3\u30d7\u30ec\u30fc\u30c8\u306e\u767b\u9332 +label.action.release.ip.processing=IP \u30a2\u30c9\u30ec\u30b9\u3092\u89e3\u653e\u3057\u3066\u3044\u307e\u3059... +label.action.release.ip=IP \u30a2\u30c9\u30ec\u30b9\u306e\u89e3\u653e +label.action.remove.host.processing=\u30db\u30b9\u30c8\u3092\u524a\u9664\u3057\u3066\u3044\u307e\u3059... +label.action.remove.host=\u30db\u30b9\u30c8\u306e\u524a\u9664 +label.action.reset.password.processing=\u30d1\u30b9\u30ef\u30fc\u30c9\u3092\u30ea\u30bb\u30c3\u30c8\u3057\u3066\u3044\u307e\u3059... +label.action.reset.password=\u30d1\u30b9\u30ef\u30fc\u30c9\u306e\u30ea\u30bb\u30c3\u30c8 +label.action.resize.volume.processing=\u30dc\u30ea\u30e5\u30fc\u30e0\u306e\u30b5\u30a4\u30ba\u3092\u5909\u66f4\u3057\u3066\u3044\u307e\u3059... +label.action.resize.volume=\u30dc\u30ea\u30e5\u30fc\u30e0 \u30b5\u30a4\u30ba\u306e\u5909\u66f4 +label.action.resource.limits=\u30ea\u30bd\u30fc\u30b9\u5236\u9650 +label.action.restore.instance.processing=\u30a4\u30f3\u30b9\u30bf\u30f3\u30b9\u3092\u5fa9\u5143\u3057\u3066\u3044\u307e\u3059... +label.action.restore.instance=\u30a4\u30f3\u30b9\u30bf\u30f3\u30b9\u306e\u5fa9\u5143 +label.action.start.instance.processing=\u30a4\u30f3\u30b9\u30bf\u30f3\u30b9\u3092\u8d77\u52d5\u3057\u3066\u3044\u307e\u3059... +label.action.start.instance=\u30a4\u30f3\u30b9\u30bf\u30f3\u30b9\u306e\u8d77\u52d5 +label.action.start.router.processing=\u30eb\u30fc\u30bf\u30fc\u3092\u8d77\u52d5\u3057\u3066\u3044\u307e\u3059... +label.action.start.router=\u30eb\u30fc\u30bf\u30fc\u306e\u8d77\u52d5 +label.action.start.systemvm.processing=\u30b7\u30b9\u30c6\u30e0 VM \u3092\u8d77\u52d5\u3057\u3066\u3044\u307e\u3059... +label.action.start.systemvm=\u30b7\u30b9\u30c6\u30e0 VM \u306e\u8d77\u52d5 +label.action.stop.instance.processing=\u30a4\u30f3\u30b9\u30bf\u30f3\u30b9\u3092\u505c\u6b62\u3057\u3066\u3044\u307e\u3059... +label.action.stop.instance=\u30a4\u30f3\u30b9\u30bf\u30f3\u30b9\u306e\u505c\u6b62 +label.action.stop.router.processing=\u30eb\u30fc\u30bf\u30fc\u3092\u505c\u6b62\u3057\u3066\u3044\u307e\u3059... +label.action.stop.router=\u30eb\u30fc\u30bf\u30fc\u306e\u505c\u6b62 +label.action.stop.systemvm.processing=\u30b7\u30b9\u30c6\u30e0 VM \u3092\u505c\u6b62\u3057\u3066\u3044\u307e\u3059... +label.action.stop.systemvm=\u30b7\u30b9\u30c6\u30e0 VM \u306e\u505c\u6b62 +label.action.take.snapshot.processing=\u30b9\u30ca\u30c3\u30d7\u30b7\u30e7\u30c3\u30c8\u3092\u4f5c\u6210\u3057\u3066\u3044\u307e\u3059.... +label.action.take.snapshot=\u30b9\u30ca\u30c3\u30d7\u30b7\u30e7\u30c3\u30c8\u306e\u4f5c\u6210 +label.action.revert.snapshot.processing=\u30b9\u30ca\u30c3\u30d7\u30b7\u30e7\u30c3\u30c8\u306b\u623b\u3057\u3066\u3044\u307e\u3059... +label.action.revert.snapshot=\u30b9\u30ca\u30c3\u30d7\u30b7\u30e7\u30c3\u30c8\u306b\u623b\u3059 +label.action.unmanage.cluster.processing=\u30af\u30e9\u30b9\u30bf\u30fc\u3092\u975e\u7ba1\u7406\u5bfe\u8c61\u306b\u3057\u3066\u3044\u307e\u3059... +label.action.unmanage.cluster=\u30af\u30e9\u30b9\u30bf\u30fc\u306e\u975e\u7ba1\u7406\u5bfe\u8c61\u5316 +label.action.update.OS.preference.processing=OS \u57fa\u672c\u8a2d\u5b9a\u3092\u66f4\u65b0\u3057\u3066\u3044\u307e\u3059... +label.action.update.OS.preference=OS \u57fa\u672c\u8a2d\u5b9a\u306e\u66f4\u65b0 +label.action.update.resource.count.processing=\u30ea\u30bd\u30fc\u30b9\u6570\u3092\u66f4\u65b0\u3057\u3066\u3044\u307e\u3059... +label.action.update.resource.count=\u30ea\u30bd\u30fc\u30b9\u6570\u306e\u66f4\u65b0 +label.action.vmsnapshot.create=VM \u30b9\u30ca\u30c3\u30d7\u30b7\u30e7\u30c3\u30c8\u306e\u4f5c\u6210 +label.action.vmsnapshot.delete=VM \u30b9\u30ca\u30c3\u30d7\u30b7\u30e7\u30c3\u30c8\u306e\u524a\u9664 +label.action.vmsnapshot.revert=VM \u30b9\u30ca\u30c3\u30d7\u30b7\u30e7\u30c3\u30c8\u306b\u623b\u3059 +label.actions=\u64cd\u4f5c +label.activate.project=\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u306e\u30a2\u30af\u30c6\u30a3\u30d6\u5316 +label.active.sessions=\u30a2\u30af\u30c6\u30a3\u30d6\u306a\u30bb\u30c3\u30b7\u30e7\u30f3 +label.add.account.to.project=\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u3078\u306e\u30a2\u30ab\u30a6\u30f3\u30c8\u306e\u8ffd\u52a0 +label.add.account=\u30a2\u30ab\u30a6\u30f3\u30c8\u306e\u8ffd\u52a0 +label.add.accounts.to=\u30a2\u30ab\u30a6\u30f3\u30c8\u306e\u8ffd\u52a0\u5148: +label.add.accounts=\u30a2\u30ab\u30a6\u30f3\u30c8\u306e\u8ffd\u52a0 +label.add.ACL=ACL \u306e\u8ffd\u52a0 +label.add.affinity.group=\u65b0\u3057\u3044\u30a2\u30d5\u30a3\u30cb\u30c6\u30a3 \u30b0\u30eb\u30fc\u30d7\u306e\u8ffd\u52a0 +label.add.BigSwitchVns.device=Big Switch VNS \u30b3\u30f3\u30c8\u30ed\u30fc\u30e9\u30fc\u306e\u8ffd\u52a0 +label.add.by.cidr=CIDR \u3067\u8ffd\u52a0 +label.add.by.group=\u30b0\u30eb\u30fc\u30d7\u3067\u8ffd\u52a0 +label.add.by=\u8ffd\u52a0\u5358\u4f4d +label.add.cluster=\u30af\u30e9\u30b9\u30bf\u30fc\u306e\u8ffd\u52a0 +label.add.compute.offering=\u30b3\u30f3\u30d4\u30e5\u30fc\u30c6\u30a3\u30f3\u30b0 \u30aa\u30d5\u30a1\u30ea\u30f3\u30b0\u306e\u8ffd\u52a0 +label.add.direct.iprange=\u76f4\u63a5 IP \u30a2\u30c9\u30ec\u30b9\u306e\u7bc4\u56f2\u306e\u8ffd\u52a0 +label.add.disk.offering=\u30c7\u30a3\u30b9\u30af \u30aa\u30d5\u30a1\u30ea\u30f3\u30b0\u306e\u8ffd\u52a0 +label.add.domain=\u30c9\u30e1\u30a4\u30f3\u306e\u8ffd\u52a0 +label.add.egress.rule=\u9001\u4fe1\u898f\u5247\u306e\u8ffd\u52a0 +label.add.F5.device=F5 \u30c7\u30d0\u30a4\u30b9\u306e\u8ffd\u52a0 +label.add.firewall=\u30d5\u30a1\u30a4\u30a2\u30a6\u30a9\u30fc\u30eb\u898f\u5247\u306e\u8ffd\u52a0 +label.add.guest.network=\u30b2\u30b9\u30c8 \u30cd\u30c3\u30c8\u30ef\u30fc\u30af\u306e\u8ffd\u52a0 +label.add.host=\u30db\u30b9\u30c8\u306e\u8ffd\u52a0 +label.add.ingress.rule=\u53d7\u4fe1\u898f\u5247\u306e\u8ffd\u52a0 +label.add.intermediate.certificate=\u4e2d\u9593\u8a3c\u660e\u66f8\u306e\u8ffd\u52a0 +label.add.ip.range=IP \u30a2\u30c9\u30ec\u30b9\u306e\u7bc4\u56f2\u306e\u8ffd\u52a0 +label.add.load.balancer=\u30ed\u30fc\u30c9 \u30d0\u30e9\u30f3\u30b5\u30fc\u306e\u8ffd\u52a0 +label.add.more=\u305d\u306e\u307b\u304b\u306e\u9805\u76ee\u306e\u8ffd\u52a0 +label.add.netScaler.device=NetScaler \u30c7\u30d0\u30a4\u30b9\u306e\u8ffd\u52a0 +label.add.network.ACL=\u30cd\u30c3\u30c8\u30ef\u30fc\u30af ACL \u306e\u8ffd\u52a0 +label.add.network.device=\u30cd\u30c3\u30c8\u30ef\u30fc\u30af \u30c7\u30d0\u30a4\u30b9\u306e\u8ffd\u52a0 +label.add.network.offering=\u30cd\u30c3\u30c8\u30ef\u30fc\u30af \u30aa\u30d5\u30a1\u30ea\u30f3\u30b0\u306e\u8ffd\u52a0 +label.add.network=\u30cd\u30c3\u30c8\u30ef\u30fc\u30af\u306e\u8ffd\u52a0 +label.add.new.F5=\u65b0\u3057\u3044 F5 \u306e\u8ffd\u52a0 +label.add.new.gateway=\u65b0\u3057\u3044\u30b2\u30fc\u30c8\u30a6\u30a7\u30a4\u306e\u8ffd\u52a0 +label.add.new.NetScaler=\u65b0\u3057\u3044 NetScaler \u306e\u8ffd\u52a0 +label.add.new.SRX=\u65b0\u3057\u3044 SRX \u306e\u8ffd\u52a0 +label.add.new.PA=\u65b0\u3057\u3044 Palo Alto \u306e\u8ffd\u52a0 +label.add.new.tier=\u65b0\u3057\u3044\u968e\u5c64\u306e\u8ffd\u52a0 +label.add.NiciraNvp.device=NVP Controller \u306e\u8ffd\u52a0 +label.add.NuageVsp.device=Nuage Virtualized Services Directory (VSD) \u306e\u8ffd\u52a0 +label.add.BrocadeVcs.device=Brocade VCS \u30b9\u30a4\u30c3\u30c1\u306e\u8ffd\u52a0 +label.add.physical.network=\u7269\u7406\u30cd\u30c3\u30c8\u30ef\u30fc\u30af\u306e\u8ffd\u52a0 +label.add.pod=\u30dd\u30c3\u30c9\u306e\u8ffd\u52a0 +label.add.port.forwarding.rule=\u30dd\u30fc\u30c8\u8ee2\u9001\u898f\u5247\u306e\u8ffd\u52a0 +label.add.primary.storage=\u30d7\u30e9\u30a4\u30de\u30ea \u30b9\u30c8\u30ec\u30fc\u30b8\u306e\u8ffd\u52a0 +label.add.region=\u9818\u57df\u306e\u8ffd\u52a0 +label.add.resources=\u30ea\u30bd\u30fc\u30b9\u306e\u8ffd\u52a0 +label.add.route=\u30eb\u30fc\u30c8\u306e\u8ffd\u52a0 +label.add.rule=\u898f\u5247\u306e\u8ffd\u52a0 +label.add.secondary.storage=\u30bb\u30ab\u30f3\u30c0\u30ea \u30b9\u30c8\u30ec\u30fc\u30b8\u306e\u8ffd\u52a0 +label.add.security.group=\u30bb\u30ad\u30e5\u30ea\u30c6\u30a3 \u30b0\u30eb\u30fc\u30d7\u306e\u8ffd\u52a0 +label.add.service.offering=\u30b5\u30fc\u30d3\u30b9 \u30aa\u30d5\u30a1\u30ea\u30f3\u30b0\u306e\u8ffd\u52a0 +label.add.SRX.device=SRX \u30c7\u30d0\u30a4\u30b9\u306e\u8ffd\u52a0 +label.add.PA.device=Palo Alto \u30c7\u30d0\u30a4\u30b9\u306e\u8ffd\u52a0 +label.add.static.nat.rule=\u9759\u7684 NAT \u898f\u5247\u306e\u8ffd\u52a0 +label.add.static.route=\u9759\u7684\u30eb\u30fc\u30c8\u306e\u8ffd\u52a0 +label.add.system.service.offering=\u30b7\u30b9\u30c6\u30e0 \u30b5\u30fc\u30d3\u30b9 \u30aa\u30d5\u30a1\u30ea\u30f3\u30b0\u306e\u8ffd\u52a0 +label.add.template=\u30c6\u30f3\u30d7\u30ec\u30fc\u30c8\u306e\u8ffd\u52a0 +label.add.to.group=\u8ffd\u52a0\u5148\u30b0\u30eb\u30fc\u30d7 +label.add.user=\u30e6\u30fc\u30b6\u30fc\u306e\u8ffd\u52a0 +label.add.vlan=VLAN \u306e\u8ffd\u52a0 +label.add.vxlan=VXLAN \u306e\u8ffd\u52a0 +label.add.VM.to.tier=\u968e\u5c64\u3078\u306e VM \u306e\u8ffd\u52a0 +label.add.vm=VM \u306e\u8ffd\u52a0 +label.add.vms.to.lb=\u30ed\u30fc\u30c9 \u30d0\u30e9\u30f3\u30b5\u30fc\u898f\u5247\u3078\u306e VM \u306e\u8ffd\u52a0 +label.add.vms=VM \u306e\u8ffd\u52a0 +label.add.volume=\u30dc\u30ea\u30e5\u30fc\u30e0\u306e\u8ffd\u52a0 +label.add.vpc=VPC \u306e\u8ffd\u52a0 +label.add.vpn.customer.gateway=VPN \u30ab\u30b9\u30bf\u30de\u30fc \u30b2\u30fc\u30c8\u30a6\u30a7\u30a4\u306e\u8ffd\u52a0 +label.add.VPN.gateway=VPN \u30b2\u30fc\u30c8\u30a6\u30a7\u30a4\u306e\u8ffd\u52a0 +label.add.vpn.user=VPN \u30e6\u30fc\u30b6\u30fc\u306e\u8ffd\u52a0 +label.add.zone=\u30be\u30fc\u30f3\u306e\u8ffd\u52a0 +label.add=\u8ffd\u52a0 +label.adding.cluster=\u30af\u30e9\u30b9\u30bf\u30fc\u3092\u8ffd\u52a0\u3057\u3066\u3044\u307e\u3059 +label.adding.failed=\u8ffd\u52a0\u3067\u304d\u307e\u305b\u3093\u3067\u3057\u305f +label.adding.pod=\u30dd\u30c3\u30c9\u3092\u8ffd\u52a0\u3057\u3066\u3044\u307e\u3059 +label.adding.processing=\u8ffd\u52a0\u3057\u3066\u3044\u307e\u3059... +label.adding.succeeded=\u8ffd\u52a0\u3057\u307e\u3057\u305f +label.adding.user=\u30e6\u30fc\u30b6\u30fc\u3092\u8ffd\u52a0\u3057\u3066\u3044\u307e\u3059 +label.adding.zone=\u30be\u30fc\u30f3\u3092\u8ffd\u52a0\u3057\u3066\u3044\u307e\u3059 +label.adding=\u8ffd\u52a0\u3057\u3066\u3044\u307e\u3059 +label.additional.networks=\u8ffd\u52a0\u306e\u30cd\u30c3\u30c8\u30ef\u30fc\u30af +label.admin.accounts=\u7ba1\u7406\u8005\u30a2\u30ab\u30a6\u30f3\u30c8 +label.admin=\u7ba1\u7406\u8005 +label.advanced.mode=\u62e1\u5f35\u30e2\u30fc\u30c9 +label.advanced.search=\u9ad8\u5ea6\u306a\u691c\u7d22 +label.advanced=\u62e1\u5f35 +label.affinity.group=\u30a2\u30d5\u30a3\u30cb\u30c6\u30a3 \u30b0\u30eb\u30fc\u30d7 +label.affinity.groups=\u30a2\u30d5\u30a3\u30cb\u30c6\u30a3 \u30b0\u30eb\u30fc\u30d7 +label.affinity=\u30a2\u30d5\u30a3\u30cb\u30c6\u30a3 +label.agent.password=\u30a8\u30fc\u30b8\u30a7\u30f3\u30c8 \u30d1\u30b9\u30ef\u30fc\u30c9 +label.agent.username=\u30a8\u30fc\u30b8\u30a7\u30f3\u30c8 \u30e6\u30fc\u30b6\u30fc\u540d +label.agree=\u540c\u610f\u3059\u308b +label.alert=\u30a2\u30e9\u30fc\u30c8 +label.algorithm=\u30a2\u30eb\u30b4\u30ea\u30ba\u30e0 +label.allocated=\u5272\u308a\u5f53\u3066\u6e08\u307f +label.allocation.state=\u5272\u308a\u5f53\u3066\u72b6\u614b +label.anti.affinity.group=\u30a2\u30f3\u30c1\u30a2\u30d5\u30a3\u30cb\u30c6\u30a3 \u30b0\u30eb\u30fc\u30d7 +label.anti.affinity.groups=\u30a2\u30f3\u30c1\u30a2\u30d5\u30a3\u30cb\u30c6\u30a3 \u30b0\u30eb\u30fc\u30d7 +label.anti.affinity=\u30a2\u30f3\u30c1\u30a2\u30d5\u30a3\u30cb\u30c6\u30a3 +label.api.key=API \u30ad\u30fc +label.api.version=API \u30d0\u30fc\u30b8\u30e7\u30f3 +label.apply=\u9069\u7528 +label.assign.to.load.balancer=\u30ed\u30fc\u30c9 \u30d0\u30e9\u30f3\u30b5\u30fc\u306b\u30a4\u30f3\u30b9\u30bf\u30f3\u30b9\u3092\u5272\u308a\u5f53\u3066\u3066\u3044\u307e\u3059 +label.assign=\u5272\u308a\u5f53\u3066 +label.associated.network.id=\u95a2\u9023\u4ed8\u3051\u3089\u308c\u305f\u30cd\u30c3\u30c8\u30ef\u30fc\u30af ID +label.associated.network=\u95a2\u9023\u4ed8\u3051\u3089\u308c\u305f\u30cd\u30c3\u30c8\u30ef\u30fc\u30af +label.attached.iso=\u30a2\u30bf\u30c3\u30c1\u3055\u308c\u305f ISO +label.author.email=\u4f5c\u6210\u8005\u306e\u96fb\u5b50\u30e1\u30fc\u30eb +label.author.name=\u4f5c\u6210\u8005\u306e\u540d\u524d +label.availability.zone=\u30a2\u30d9\u30a4\u30e9\u30d3\u30ea\u30c6\u30a3 \u30be\u30fc\u30f3 +label.availability=\u53ef\u7528\u6027 +label.available.public.ips=\u4f7f\u7528\u3067\u304d\u308b\u30d1\u30d6\u30ea\u30c3\u30af IP \u30a2\u30c9\u30ec\u30b9 +label.available=\u4f7f\u7528\u53ef\u80fd +label.back=\u623b\u308b +label.bandwidth=\u5e2f\u57df\u5e45 +label.basic.mode=\u57fa\u672c\u30e2\u30fc\u30c9 +label.basic=\u57fa\u672c +label.bigswitch.controller.address=Big Switch VNS \u30b3\u30f3\u30c8\u30ed\u30fc\u30e9\u30fc \u30a2\u30c9\u30ec\u30b9 +label.bootable=\u8d77\u52d5\u53ef\u80fd +label.broadcast.domain.range=\u30d6\u30ed\u30fc\u30c9\u30ad\u30e3\u30b9\u30c8 \u30c9\u30e1\u30a4\u30f3\u306e\u7bc4\u56f2 +label.broadcast.domain.type=\u30d6\u30ed\u30fc\u30c9\u30ad\u30e3\u30b9\u30c8 \u30c9\u30e1\u30a4\u30f3\u306e\u7a2e\u985e +label.broadcast.uri=\u30d6\u30ed\u30fc\u30c9\u30ad\u30e3\u30b9\u30c8 URI +label.by.account=\u30a2\u30ab\u30a6\u30f3\u30c8 +label.by.availability=\u53ef\u7528\u6027 +label.by.domain=\u30c9\u30e1\u30a4\u30f3 +label.by.end.date=\u7d42\u4e86\u65e5 +label.by.level=\u30ec\u30d9\u30eb +label.by.pod=\u30dd\u30c3\u30c9 +label.by.role=\u5f79\u5272 +label.by.start.date=\u958b\u59cb\u65e5 +label.by.state=\u72b6\u614b +label.by.traffic.type=\u30c8\u30e9\u30d5\u30a3\u30c3\u30af\u306e\u7a2e\u985e +label.by.type.id=\u7a2e\u985e ID +label.by.type=\u7a2e\u985e +label.by.zone=\u30be\u30fc\u30f3 +label.bytes.received=\u53d7\u4fe1\u30d0\u30a4\u30c8 +label.bytes.sent=\u9001\u4fe1\u30d0\u30a4\u30c8 +label.cancel=\u30ad\u30e3\u30f3\u30bb\u30eb +label.capacity=\u51e6\u7406\u80fd\u529b +label.capacity.bytes=\u51e6\u7406\u80fd\u529b (\u30d0\u30a4\u30c8) +label.capacity.iops=\u51e6\u7406\u80fd\u529b (IOPS) +label.certificate=\u30b5\u30fc\u30d0\u30fc\u8a3c\u660e\u66f8 +label.change.service.offering=\u30b5\u30fc\u30d3\u30b9 \u30aa\u30d5\u30a1\u30ea\u30f3\u30b0\u306e\u5909\u66f4 +label.change.value=\u5024\u306e\u5909\u66f4 +label.character=\u6587\u5b57 +label.md5.checksum=MD5 \u30c1\u30a7\u30c3\u30af\u30b5\u30e0 +label.cidr.account=CIDR \u307e\u305f\u306f\u30a2\u30ab\u30a6\u30f3\u30c8/\u30bb\u30ad\u30e5\u30ea\u30c6\u30a3 \u30b0\u30eb\u30fc\u30d7 +label.CIDR.list=CIDR \u4e00\u89a7 +label.cidr.list=\u9001\u4fe1\u5143 CIDR +label.CIDR.of.destination.network=\u5b9b\u5148\u30cd\u30c3\u30c8\u30ef\u30fc\u30af\u306e CIDR label.cidr=CIDR -label.clean.up=\u0192N\u0192\u0160\ufffd[\u0192\u201c \u0192A\u0192b\u0192v\u201a\u00b7\u201a\u00e9 -label.clear.list=\u02c6\u00ea\u2014\u2014\u201a\u00cc\ufffd\u00c1\u2039\u017d -label.close=\u2022\u00c2\u201a\u00b6\u201a\u00e9 -label.cloud.console=\u0192N\u0192\u2030\u0192E\u0192h\u0160\u00c7\u2014\ufffd\u0192R\u0192\u201c\u0192\\ufffd[\u0192\u2039 -label.cloud.managed=Cloud.com \u201a\u00c9\u201a\u00e6\u201a\u00e9\u0160\u00c7\u2014\ufffd -label.cluster.name=\u0192N\u0192\u2030\u0192X\u0192^\ufffd[\u2013\u00bc -label.cluster.type=\u0192N\u0192\u2030\u0192X\u0192^\ufffd[\u201a\u00cc\u017d\u00ed\u2014\u00de -label.cluster=\u0192N\u0192\u2030\u0192X\u0192^\ufffd[ -label.clusters=\u0192N\u0192\u2030\u0192X\u0192^\ufffd[ +label.clean.up=\u30af\u30ea\u30fc\u30f3 \u30a2\u30c3\u30d7\u3059\u308b +label.clear.list=\u4e00\u89a7\u306e\u6d88\u53bb +label.close=\u9589\u3058\u308b +label.cloud.console=\u30af\u30e9\u30a6\u30c9\u7ba1\u7406\u30b3\u30f3\u30bd\u30fc\u30eb +label.cloud.managed=Cloud.com \u306b\u3088\u308b\u7ba1\u7406 +label.cluster.name=\u30af\u30e9\u30b9\u30bf\u30fc\u540d +label.cluster.type=\u30af\u30e9\u30b9\u30bf\u30fc\u306e\u7a2e\u985e +label.cluster=\u30af\u30e9\u30b9\u30bf\u30fc +label.clusters=\u30af\u30e9\u30b9\u30bf\u30fc label.clvm=CLVM label.rbd=RBD -label.rbd.monitor=Ceph \u0192\u201a\u0192j\u0192^\ufffd[ -label.rbd.pool=Ceph \u0192v\ufffd[\u0192\u2039 -label.rbd.id=Cephx \u0192\u2020\ufffd[\u0192U\ufffd[ -label.rbd.secret=Cephx \u0192V\ufffd[\u0192N\u0192\u0152\u0192b\u0192g -label.code=\u0192R\ufffd[\u0192h -label.community=\u0192R\u0192~\u0192\u2026\u0192j\u0192e\u0192B -label.compute.and.storage=\u0192R\u0192\u201c\u0192s\u0192\u2026\ufffd[\u0192e\u0192B\u0192\u201c\u0192O\u201a\u00c6\u0192X\u0192g\u0192\u0152\ufffd[\u0192W -label.compute.offering=\u0192R\u0192\u201c\u0192s\u0192\u2026\ufffd[\u0192e\u0192B\u0192\u201c\u0192O \u0192I\u0192t\u0192@\u0192\u0160\u0192\u201c\u0192O -label.compute.offerings=\u0192R\u0192\u201c\u0192s\u0192\u2026\ufffd[\u0192e\u0192B\u0192\u201c\u0192O \u0192I\u0192t\u0192@\u0192\u0160\u0192\u201c\u0192O -label.compute=\u0192R\u0192\u201c\u0192s\u0192\u2026\ufffd[\u0192e\u0192B\u0192\u201c\u0192O -label.configuration=\ufffd\\ufffd\u00ac -label.configure.network.ACLs=\u0192l\u0192b\u0192g\u0192\ufffd\ufffd[\u0192N ACL \u201a\u00cc\ufffd\\ufffd\u00ac -label.configure.vpc=VPC \u201a\u00cc\ufffd\\ufffd\u00ac -label.configure=\ufffd\\ufffd\u00ac -label.confirm.password=\u0192p\u0192X\u0192\ufffd\ufffd[\u0192h\u201a\u00cc\u0160m\u201dF\u201c\u00fc\u2014\u00cd -label.confirmation=\u0160m\u201dF -label.congratulations=\u0192Z\u0192b\u0192g\u0192A\u0192b\u0192v\u201a\u00cd\u201a\u00b1\u201a\u00ea\u201a\u00c5\u0160\u00ae\u2014\u00b9\u201a\u00c5\u201a\u00b7\ufffdB -label.conserve.mode=\ufffd\u00df\u2013\u00f1\u0192\u201a\ufffd[\u0192h -label.console.proxy=\u0192R\u0192\u201c\u0192\\ufffd[\u0192\u2039 \u0192v\u0192\ufffd\u0192L\u0192V -label.continue.basic.install=\u0160\u00ee\u2013{\u0192C\u0192\u201c\u0192X\u0192g\ufffd[\u0192\u2039\u201a\u00f0\u2018\u00b1\ufffds\u201a\u00b7\u201a\u00e9 -label.continue=\u2018\u00b1\ufffds -label.corrections.saved=\ufffd\u00da\u2018\u00b1\u201a\u00aa\u2022\u00db\u2018\u00b6\u201a\u00b3\u201a\u00ea\u201a\u00dc\u201a\u00b5\u201a\u00bd -label.cpu.allocated.for.VMs=VM \u201a\u00c9\u0160\u201e\u201a\u00e8\u201c\u2013\u201a\u00c4\ufffd\u00cf\u201a\u00dd\u201a\u00cc CPU -label.cpu.allocated=\u0160\u201e\u201a\u00e8\u201c\u2013\u201a\u00c4\ufffd\u00cf\u201a\u00dd\u201a\u00cc CPU -label.CPU.cap=CPU \u0192L\u0192\u0192\u0192b\u0192v -label.cpu.limits=CPU \ufffd\u00a7\u0152\u00c0 +label.rbd.monitor=Ceph \u30e2\u30cb\u30bf\u30fc +label.rbd.pool=Ceph \u30d7\u30fc\u30eb +label.rbd.id=Cephx \u30e6\u30fc\u30b6\u30fc +label.rbd.secret=Cephx \u30b7\u30fc\u30af\u30ec\u30c3\u30c8 +label.code=\u30b3\u30fc\u30c9 +label.community=\u30b3\u30df\u30e5\u30cb\u30c6\u30a3 +label.compute.and.storage=\u30b3\u30f3\u30d4\u30e5\u30fc\u30c6\u30a3\u30f3\u30b0\u3068\u30b9\u30c8\u30ec\u30fc\u30b8 +label.compute.offering=\u30b3\u30f3\u30d4\u30e5\u30fc\u30c6\u30a3\u30f3\u30b0 \u30aa\u30d5\u30a1\u30ea\u30f3\u30b0 +label.compute.offerings=\u30b3\u30f3\u30d4\u30e5\u30fc\u30c6\u30a3\u30f3\u30b0 \u30aa\u30d5\u30a1\u30ea\u30f3\u30b0 +label.compute=\u30b3\u30f3\u30d4\u30e5\u30fc\u30c6\u30a3\u30f3\u30b0 +label.configuration=\u69cb\u6210 +label.configure.network.ACLs=\u30cd\u30c3\u30c8\u30ef\u30fc\u30af ACL \u306e\u69cb\u6210 +label.configure.vpc=VPC \u306e\u69cb\u6210 +label.configure=\u69cb\u6210 +label.confirm.password=\u30d1\u30b9\u30ef\u30fc\u30c9\u306e\u78ba\u8a8d\u5165\u529b +label.confirmation=\u78ba\u8a8d +label.congratulations=\u30bb\u30c3\u30c8\u30a2\u30c3\u30d7\u306f\u3053\u308c\u3067\u5b8c\u4e86\u3067\u3059\u3002 +label.conserve.mode=\u7bc0\u7d04\u30e2\u30fc\u30c9 +label.console.proxy=\u30b3\u30f3\u30bd\u30fc\u30eb \u30d7\u30ed\u30ad\u30b7 +label.continue.basic.install=\u57fa\u672c\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\u3092\u7d9a\u884c\u3059\u308b +label.continue=\u7d9a\u884c +label.corrections.saved=\u63a5\u7d9a\u304c\u4fdd\u5b58\u3055\u308c\u307e\u3057\u305f +label.cpu.allocated.for.VMs=VM \u306b\u5272\u308a\u5f53\u3066\u6e08\u307f\u306e CPU +label.cpu.allocated=\u5272\u308a\u5f53\u3066\u6e08\u307f\u306e CPU +label.CPU.cap=CPU \u30ad\u30e3\u30c3\u30d7 +label.cpu.limits=CPU \u5236\u9650 label.cpu.mhz=CPU (MHz) -label.cpu.utilized=CPU \u017dg\u2014p\u2014\u00a6 +label.cpu.utilized=CPU \u4f7f\u7528\u7387 label.cpu=CPU -label.create.project=\u0192v\u0192\ufffd\u0192W\u0192F\u0192N\u0192g\u201a\u00cc\ufffd\u00ec\ufffd\u00ac -label.create.template=\u0192e\u0192\u201c\u0192v\u0192\u0152\ufffd[\u0192g\u201a\u00cc\ufffd\u00ec\ufffd\u00ac -label.create.VPN.connection=VPN \ufffd\u00da\u2018\u00b1\u201a\u00cc\ufffd\u00ec\ufffd\u00ac -label.created.by.system=\u0192V\u0192X\u0192e\u0192\u20ac\ufffd\u00ec\ufffd\u00ac -label.created=\ufffd\u00ec\ufffd\u00ac\u201c\u00fa\u017d\u017e -label.cross.zones=\u0192N\u0192\ufffd\u0192X \u0192]\ufffd[\u0192\u201c -label.custom.disk.size=\u0192J\u0192X\u0192^\u0192\u20ac \u0192f\u0192B\u0192X\u0192N \u0192T\u0192C\u0192Y -label.daily=\u2013\u02c6\u201c\u00fa -label.data.disk.offering=\u0192f\ufffd[\u0192^ \u0192f\u0192B\u0192X\u0192N \u0192I\u0192t\u0192@\u0192\u0160\u0192\u201c\u0192O -label.date=\u201c\u00fa\u017d\u017e -label.day.of.month=\u2013\u02c6\u0152\u017d\u017dw\u2019\u00e8\u201c\u00fa -label.day.of.week=\u2013\u02c6\ufffdT\u017dw\u2019\u00e8\u201c\u00fa -label.dead.peer.detection=\u2019\u00e2\u017d~\u0192s\u0192A\u201a\u00f0\u0152\u0178\ufffdo\u201a\u00b7\u201a\u00e9 -label.decline.invitation=\ufffd\u00b5\u2018\u00d2\u201a\u00cc\u017d\u00ab\u2018\u00de -label.dedicated=\ufffd\u00ea\u2014p -label.default.use=\u0192f\u0192t\u0192H\u0192\u2039\u0192g\u017dg\u2014p -label.default.view=\u0192f\u0192t\u0192H\u0192\u2039\u0192g \u0192r\u0192\u2026\ufffd[ -label.default=\u0192f\u0192t\u0192H\u0192\u2039\u0192g -label.delete.affinity.group=\u0192A\u0192t\u0192B\u0192j\u0192e\u0192B \u0192O\u0192\u2039\ufffd[\u0192v\u201a\u00cc\ufffd\u00ed\ufffd\u0153 -label.delete.BigSwitchVns=Big Switch VNS \u0192R\u0192\u201c\u0192g\u0192\ufffd\ufffd[\u0192\u2030\ufffd[\u201a\u00cc\ufffd\u00ed\ufffd\u0153 -label.delete.F5=F5 \u201a\u00cc\ufffd\u00ed\ufffd\u0153 -label.delete.gateway=\u0192Q\ufffd[\u0192g\u0192E\u0192F\u0192C\u201a\u00cc\ufffd\u00ed\ufffd\u0153 -label.delete.NetScaler=NetScaler \u201a\u00cc\ufffd\u00ed\ufffd\u0153 -label.delete.NiciraNvp=Remove Nvp Controller -label.delete.NuageVsp=Remove Nuage VSD -label.delete.BrocadeVcs=Remove Brocade Vcs Switch -label.delete.project=\u0192v\u0192\ufffd\u0192W\u0192F\u0192N\u0192g\u201a\u00cc\ufffd\u00ed\ufffd\u0153 -label.delete.SRX=SRX \u201a\u00cc\ufffd\u00ed\ufffd\u0153 -label.delete.PA=Palo Alto \u201a\u00cc\ufffd\u00ed\ufffd\u0153 -label.delete.VPN.connection=VPN \ufffd\u00da\u2018\u00b1\u201a\u00cc\ufffd\u00ed\ufffd\u0153 -label.delete.VPN.customer.gateway=VPN \u0192J\u0192X\u0192^\u0192}\ufffd[ \u0192Q\ufffd[\u0192g\u0192E\u0192F\u0192C\u201a\u00cc\ufffd\u00ed\ufffd\u0153 -label.delete.VPN.gateway=VPN \u0192Q\ufffd[\u0192g\u0192E\u0192F\u0192C\u201a\u00cc\ufffd\u00ed\ufffd\u0153 -label.delete.vpn.user=VPN \u0192\u2020\ufffd[\u0192U\ufffd[\u201a\u00cc\ufffd\u00ed\ufffd\u0153 -label.delete=\ufffd\u00ed\ufffd\u0153 -label.deleting.failed=\ufffd\u00ed\ufffd\u0153\u201a\u00c5\u201a\u00ab\u201a\u00dc\u201a\u00b9\u201a\u00f1\u201a\u00c5\u201a\u00b5\u201a\u00bd -label.deleting.processing=\ufffd\u00ed\ufffd\u0153\u201a\u00b5\u201a\u00c4\u201a\u00a2\u201a\u00dc\u201a\u00b7... -label.description=\ufffd\u00e0\u2013\u00be -label.destination.physical.network.id=\u0192u\u0192\u0160\u0192b\u0192W\ufffd\u00e6\u2022\u00a8\u2014\ufffd\u0192l\u0192b\u0192g\u0192\ufffd\ufffd[\u0192N ID -label.destination.zone=\u0192R\u0192s\ufffd[\ufffd\u00e6\u0192]\ufffd[\u0192\u201c -label.destroy.router=\u0192\u2039\ufffd[\u0192^\ufffd[\u201a\u00cc\u201dj\u0160\u00fc -label.destroy=\u201dj\u0160\u00fc -label.detaching.disk=\u0192f\u0192B\u0192X\u0192N\u201a\u00f0\u0192f\u0192^\u0192b\u0192`\u201a\u00b5\u201a\u00c4\u201a\u00a2\u201a\u00dc\u201a\u00b7 -label.details=\ufffd\u00da\ufffd\u00d7 -label.device.id=\u0192f\u0192o\u0192C\u0192X ID -label.devices=\u0192f\u0192o\u0192C\u0192X -label.DHCP.server.type=DHCP \u0192T\ufffd[\u0192o\ufffd[\u201a\u00cc\u017d\u00ed\u2014\u00de +label.create.project=\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u306e\u4f5c\u6210 +label.create.template=\u30c6\u30f3\u30d7\u30ec\u30fc\u30c8\u306e\u4f5c\u6210 +label.create.VPN.connection=VPN \u63a5\u7d9a\u306e\u4f5c\u6210 +label.created.by.system=\u30b7\u30b9\u30c6\u30e0\u4f5c\u6210 +label.created=\u4f5c\u6210\u65e5\u6642 +label.cross.zones=\u30af\u30ed\u30b9 \u30be\u30fc\u30f3 +label.custom.disk.size=\u30ab\u30b9\u30bf\u30e0 \u30c7\u30a3\u30b9\u30af \u30b5\u30a4\u30ba +label.daily=\u6bce\u65e5 +label.data.disk.offering=\u30c7\u30fc\u30bf \u30c7\u30a3\u30b9\u30af \u30aa\u30d5\u30a1\u30ea\u30f3\u30b0 +label.date=\u65e5\u6642 +label.day.of.month=\u6bce\u6708\u6307\u5b9a\u65e5 +label.day.of.week=\u6bce\u9031\u6307\u5b9a\u65e5 +label.dead.peer.detection=\u505c\u6b62\u30d4\u30a2\u3092\u691c\u51fa\u3059\u308b +label.decline.invitation=\u62db\u5f85\u306e\u8f9e\u9000 +label.dedicated=\u5c02\u7528 +label.default.use=\u30c7\u30d5\u30a9\u30eb\u30c8\u4f7f\u7528 +label.default.view=\u30c7\u30d5\u30a9\u30eb\u30c8 \u30d3\u30e5\u30fc +label.default=\u30c7\u30d5\u30a9\u30eb\u30c8 +label.delete.affinity.group=\u30a2\u30d5\u30a3\u30cb\u30c6\u30a3 \u30b0\u30eb\u30fc\u30d7\u306e\u524a\u9664 +label.delete.BigSwitchVns=Big Switch VNS \u30b3\u30f3\u30c8\u30ed\u30fc\u30e9\u30fc\u306e\u524a\u9664 +label.delete.F5=F5 \u306e\u524a\u9664 +label.delete.gateway=\u30b2\u30fc\u30c8\u30a6\u30a7\u30a4\u306e\u524a\u9664 +label.delete.NetScaler=NetScaler \u306e\u524a\u9664 +label.delete.NiciraNvp=NVP Controller \u306e\u524a\u9664 +label.delete.NuageVsp=Nuage VSD \u306e\u524a\u9664 +label.delete.BrocadeVcs=Brocade VCS \u30b9\u30a4\u30c3\u30c1\u306e\u524a\u9664 +label.delete.project=\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u306e\u524a\u9664 +label.delete.SRX=SRX \u306e\u524a\u9664 +label.delete.PA=Palo Alto \u306e\u524a\u9664 +label.delete.VPN.connection=VPN \u63a5\u7d9a\u306e\u524a\u9664 +label.delete.VPN.customer.gateway=VPN \u30ab\u30b9\u30bf\u30de\u30fc \u30b2\u30fc\u30c8\u30a6\u30a7\u30a4\u306e\u524a\u9664 +label.delete.VPN.gateway=VPN \u30b2\u30fc\u30c8\u30a6\u30a7\u30a4\u306e\u524a\u9664 +label.delete.vpn.user=VPN \u30e6\u30fc\u30b6\u30fc\u306e\u524a\u9664 +label.delete=\u524a\u9664 +label.deleting.failed=\u524a\u9664\u3067\u304d\u307e\u305b\u3093\u3067\u3057\u305f +label.deleting.processing=\u524a\u9664\u3057\u3066\u3044\u307e\u3059... +label.description=\u8aac\u660e +label.destination.physical.network.id=\u30d6\u30ea\u30c3\u30b8\u5148\u7269\u7406\u30cd\u30c3\u30c8\u30ef\u30fc\u30af ID +label.destination.zone=\u30b3\u30d4\u30fc\u5148\u30be\u30fc\u30f3 +label.destroy.router=\u30eb\u30fc\u30bf\u30fc\u306e\u7834\u68c4 +label.destroy=\u7834\u68c4 +label.detaching.disk=\u30c7\u30a3\u30b9\u30af\u3092\u30c7\u30bf\u30c3\u30c1\u3057\u3066\u3044\u307e\u3059 +label.details=\u8a73\u7d30 +label.device.id=\u30c7\u30d0\u30a4\u30b9 ID +label.devices=\u30c7\u30d0\u30a4\u30b9 +label.DHCP.server.type=DHCP \u30b5\u30fc\u30d0\u30fc\u306e\u7a2e\u985e label.dhcp=DHCP -label.direct.ips=\u2039\u00a4\u2014L\u0192l\u0192b\u0192g\u0192\ufffd\ufffd[\u0192N\u201a\u00cc IP \u0192A\u0192h\u0192\u0152\u0192X -label.disable.provider=\u0192v\u0192\ufffd\u0192o\u0192C\u0192_\ufffd[\u201a\u00cc\u2013\u00b3\u0152\u00f8\u2030\u00bb -label.disable.vpn=VPN \u201a\u00cc\u2013\u00b3\u0152\u00f8\u2030\u00bb -label.disabled=\u2013\u00b3\u0152\u00f8 -label.disabling.vpn.access=VPN \u0192A\u0192N\u0192Z\u0192X\u201a\u00f0\u2013\u00b3\u0152\u00f8\u201a\u00c9\u201a\u00b5\u201a\u00c4\u201a\u00a2\u201a\u00dc\u201a\u00b7 -label.disk.allocated=\u0160\u201e\u201a\u00e8\u201c\u2013\u201a\u00c4\ufffd\u00cf\u201a\u00dd\u201a\u00cc\u0192f\u0192B\u0192X\u0192N -label.disk.bytes.read.rate=\u0192f\u0192B\u0192X\u0192N\u201c\u00c7\u201a\u00dd\u017d\u00e6\u201a\u00e8\u2018\u00ac\u201cx (BPS) -label.disk.bytes.write.rate=\u0192f\u0192B\u0192X\u0192N\ufffd\u2018\u201a\u00ab\ufffd\u017e\u201a\u00dd\u2018\u00ac\u201cx (BPS) -label.disk.iops.read.rate=\u0192f\u0192B\u0192X\u0192N\u201c\u00c7\u201a\u00dd\u017d\u00e6\u201a\u00e8\u2018\u00ac\u201cx (IOPS) -label.disk.iops.write.rate=\u0192f\u0192B\u0192X\u0192N\ufffd\u2018\u201a\u00ab\ufffd\u017e\u201a\u00dd\u2018\u00ac\u201cx (IOPS) -label.disk.offering=\u0192f\u0192B\u0192X\u0192N \u0192I\u0192t\u0192@\u0192\u0160\u0192\u201c\u0192O -label.disk.provisioningtype=Provisioning Type -label.disk.read.bytes=\u0192f\u0192B\u0192X\u0192N\u201c\u00c7\u201a\u00dd\u017d\u00e6\u201a\u00e8 (\u0192o\u0192C\u0192g) -label.disk.read.io=\u0192f\u0192B\u0192X\u0192N\u201c\u00c7\u201a\u00dd\u017d\u00e6\u201a\u00e8 (IO) -label.disk.size.gb=\u0192f\u0192B\u0192X\u0192N \u0192T\u0192C\u0192Y (GB) -label.disk.size=\u0192f\u0192B\u0192X\u0192N \u0192T\u0192C\u0192Y -label.disk.total=\u0192f\u0192B\u0192X\u0192N\ufffd\u2021\u0152v -label.disk.volume=\u0192f\u0192B\u0192X\u0192N \u0192{\u0192\u0160\u0192\u2026\ufffd[\u0192\u20ac -label.disk.write.bytes=\u0192f\u0192B\u0192X\u0192N\ufffd\u2018\u201a\u00ab\ufffd\u017e\u201a\u00dd (\u0192o\u0192C\u0192g) -label.disk.write.io=\u0192f\u0192B\u0192X\u0192N\ufffd\u2018\u201a\u00ab\ufffd\u017e\u201a\u00dd (IO) -label.display.name=\u2022\\u017d\u00a6\u2013\u00bc -label.display.text=\u2022\\u017d\u00a6\u0192e\u0192L\u0192X\u0192g +label.direct.ips=\u5171\u6709\u30cd\u30c3\u30c8\u30ef\u30fc\u30af\u306e IP \u30a2\u30c9\u30ec\u30b9 +label.disable.provider=\u30d7\u30ed\u30d0\u30a4\u30c0\u30fc\u306e\u7121\u52b9\u5316 +label.disable.vpn=VPN \u306e\u7121\u52b9\u5316 +label.disabled=\u7121\u52b9 +label.disabling.vpn.access=VPN \u30a2\u30af\u30bb\u30b9\u3092\u7121\u52b9\u306b\u3057\u3066\u3044\u307e\u3059 +label.disk.allocated=\u5272\u308a\u5f53\u3066\u6e08\u307f\u306e\u30c7\u30a3\u30b9\u30af +label.disk.bytes.read.rate=\u30c7\u30a3\u30b9\u30af\u8aad\u307f\u53d6\u308a\u901f\u5ea6 (BPS) +label.disk.bytes.write.rate=\u30c7\u30a3\u30b9\u30af\u66f8\u304d\u8fbc\u307f\u901f\u5ea6 (BPS) +label.disk.iops.read.rate=\u30c7\u30a3\u30b9\u30af\u8aad\u307f\u53d6\u308a\u901f\u5ea6 (IOPS) +label.disk.iops.write.rate=\u30c7\u30a3\u30b9\u30af\u66f8\u304d\u8fbc\u307f\u901f\u5ea6 (IOPS) +label.disk.offering=\u30c7\u30a3\u30b9\u30af \u30aa\u30d5\u30a1\u30ea\u30f3\u30b0 +label.disk.provisioningtype=\u30d7\u30ed\u30d3\u30b8\u30e7\u30cb\u30f3\u30b0\u306e\u7a2e\u985e +label.disk.read.bytes=\u30c7\u30a3\u30b9\u30af\u8aad\u307f\u53d6\u308a (\u30d0\u30a4\u30c8) +label.disk.read.io=\u30c7\u30a3\u30b9\u30af\u8aad\u307f\u53d6\u308a (IO) +label.disk.size.gb=\u30c7\u30a3\u30b9\u30af \u30b5\u30a4\u30ba (GB) +label.disk.size=\u30c7\u30a3\u30b9\u30af \u30b5\u30a4\u30ba +label.disk.total=\u30c7\u30a3\u30b9\u30af\u5408\u8a08 +label.disk.volume=\u30c7\u30a3\u30b9\u30af \u30dc\u30ea\u30e5\u30fc\u30e0 +label.disk.write.bytes=\u30c7\u30a3\u30b9\u30af\u66f8\u304d\u8fbc\u307f (\u30d0\u30a4\u30c8) +label.disk.write.io=\u30c7\u30a3\u30b9\u30af\u66f8\u304d\u8fbc\u307f (IO) +label.display.name=\u8868\u793a\u540d +label.display.text=\u8868\u793a\u30c6\u30ad\u30b9\u30c8 label.dns.1=DNS 1 label.dns.2=DNS 2 -label.DNS.domain.for.guest.networks=\u0192Q\u0192X\u0192g \u0192l\u0192b\u0192g\u0192\ufffd\ufffd[\u0192N\u201a\u00cc DNS \u0192h\u0192\ufffd\u0192C\u0192\u201c +label.DNS.domain.for.guest.networks=\u30b2\u30b9\u30c8 \u30cd\u30c3\u30c8\u30ef\u30fc\u30af\u306e DNS \u30c9\u30e1\u30a4\u30f3 label.dns=DNS -label.domain.admin=\u0192h\u0192\ufffd\u0192C\u0192\u201c\u0160\u00c7\u2014\ufffd\u017d\u00d2 -label.domain.id=\u0192h\u0192\ufffd\u0192C\u0192\u201c ID -label.domain.name=\u0192h\u0192\ufffd\u0192C\u0192\u201c\u2013\u00bc -label.domain.router=\u0192h\u0192\ufffd\u0192C\u0192\u201c \u0192\u2039\ufffd[\u0192^\ufffd[ -label.domain.suffix=DNS \u0192h\u0192\ufffd\u0192C\u0192\u201c \u0192T\u0192t\u0192B\u0192b\u0192N\u0192X (\u2014\u00e1: xyz.com) -label.domain=\u0192h\u0192\ufffd\u0192C\u0192\u201c -label.done=\u0160\u00ae\u2014\u00b9 -label.double.quotes.are.not.allowed=\u201c\u00f1\ufffdd\u02c6\u00f8\u2014p\u2022\u201e\u201a\u00cd\u017dg\u2014p\u201a\u00c5\u201a\u00ab\u201a\u00dc\u201a\u00b9\u201a\u00f1 -label.download.progress=\u0192_\u0192E\u0192\u201c\u0192\ufffd\ufffd[\u0192h\u201a\u00cc\ufffdi\u2019\u00bb\ufffd\u00f3\u2039\u00b5 -label.drag.new.position=\ufffdV\u201a\u00b5\u201a\u00a2\u02c6\u00ca\u2019u\u201a\u00c9\u0192h\u0192\u2030\u0192b\u0192O -label.edit.affinity.group=\u0192A\u0192t\u0192B\u0192j\u0192e\u0192B \u0192O\u0192\u2039\ufffd[\u0192v\u201a\u00cc\u2022\u00d2\ufffdW -label.edit.lb.rule=LB \u2039K\u2018\u00a5\u201a\u00cc\u2022\u00d2\ufffdW -label.edit.network.details=\u0192l\u0192b\u0192g\u0192\ufffd\ufffd[\u0192N\u201a\u00cc\ufffd\u00da\ufffd\u00d7\u201a\u00cc\u2022\u00d2\ufffdW -label.edit.project.details=\u0192v\u0192\ufffd\u0192W\u0192F\u0192N\u0192g\u201a\u00cc\ufffd\u00da\ufffd\u00d7\u201a\u00cc\u2022\u00d2\ufffdW -label.edit.tags=\u0192^\u0192O\u201a\u00cc\u2022\u00d2\ufffdW -label.edit.traffic.type=\u0192g\u0192\u2030\u0192t\u0192B\u0192b\u0192N\u201a\u00cc\u017d\u00ed\u2014\u00de\u201a\u00cc\u2022\u00d2\ufffdW -label.edit.vpc=VPC \u201a\u00cc\u2022\u00d2\ufffdW -label.edit=\u2022\u00d2\ufffdW -label.egress.rule=\u2018\u2014\ufffdM\u2039K\u2018\u00a5 -label.egress.rules=\u2018\u2014\ufffdM\u2039K\u2018\u00a5 -label.elastic.IP=\u0192G\u0192\u2030\u0192X\u0192e\u0192B\u0192b\u0192N IP \u0192A\u0192h\u0192\u0152\u0192X -label.elastic.LB=\u0192G\u0192\u2030\u0192X\u0192e\u0192B\u0192b\u0192N LB -label.elastic=\u0192G\u0192\u2030\u0192X\u0192e\u0192B\u0192b\u0192N -label.email=\u201cd\u017dq\u0192\ufffd\ufffd[\u0192\u2039 -label.enable.provider=\u0192v\u0192\ufffd\u0192o\u0192C\u0192_\ufffd[\u201a\u00cc\u2014L\u0152\u00f8\u2030\u00bb -label.enable.s3=S3 \u0192x\ufffd[\u0192X\u201a\u00cc\u0192Z\u0192J\u0192\u201c\u0192_\u0192\u0160 \u0192X\u0192g\u0192\u0152\ufffd[\u0192W\u201a\u00cc\u2014L\u0152\u00f8\u2030\u00bb -label.enable.swift=Swift \u201a\u00cc\u2014L\u0152\u00f8\u2030\u00bb -label.enable.vpn=VPN \u201a\u00cc\u2014L\u0152\u00f8\u2030\u00bb -label.enabling.vpn.access=VPN \u0192A\u0192N\u0192Z\u0192X\u201a\u00f0\u2014L\u0152\u00f8\u201a\u00c9\u201a\u00b5\u201a\u00c4\u201a\u00a2\u201a\u00dc\u201a\u00b7 -label.enabling.vpn=VPN \u201a\u00f0\u2014L\u0152\u00f8\u201a\u00c9\u201a\u00b5\u201a\u00c4\u201a\u00a2\u201a\u00dc\u201a\u00b7 -label.end.IP=\ufffdI\u2014\u00b9 IP \u0192A\u0192h\u0192\u0152\u0192X -label.end.port=\ufffdI\u2014\u00b9\u0192|\ufffd[\u0192g -label.end.reserved.system.IP=\u2014\\u2013\u00f1\ufffd\u00cf\u201a\u00dd\ufffdI\u2014\u00b9\u0192V\u0192X\u0192e\u0192\u20ac IP \u0192A\u0192h\u0192\u0152\u0192X -label.end.vlan=End Vlan -label.end.vxlan=End Vxlan -label.endpoint.or.operation=\u0192G\u0192\u201c\u0192h\u0192|\u0192C\u0192\u201c\u0192g\u201a\u00dc\u201a\u00bd\u201a\u00cd\u2018\u20ac\ufffd\u00ec -label.endpoint=\u0192G\u0192\u201c\u0192h\u0192|\u0192C\u0192\u201c\u0192g -label.enter.token=\u0192g\ufffd[\u0192N\u0192\u201c\u201a\u00cc\u201c\u00fc\u2014\u00cd -label.error.code=\u0192G\u0192\u2030\ufffd[ \u0192R\ufffd[\u0192h -label.error=\u0192G\u0192\u2030\ufffd[ -label.ESP.encryption=ESP \u02c6\u00c3\ufffd\u2020\u2030\u00bb -label.ESP.hash=ESP \u0192n\u0192b\u0192V\u0192\u2026 -label.ESP.lifetime=ESP \u2014L\u0152\u00f8\u0160\u00fa\u0160\u00d4 (\u2022b) -label.ESP.policy=ESP \u0192|\u0192\u0160\u0192V\ufffd[ -label.esx.host=ESX/ESXi \u0192z\u0192X\u0192g -label.example=\u2014\u00e1 -label.expunge=\u2013\u2022\ufffd\u00c1 -label.external.link=\u0160O\u2022\u201d\u0192\u0160\u0192\u201c\u0192N +label.domain.admin=\u30c9\u30e1\u30a4\u30f3\u7ba1\u7406\u8005 +label.domain.id=\u30c9\u30e1\u30a4\u30f3 ID +label.domain.name=\u30c9\u30e1\u30a4\u30f3\u540d +label.domain.router=\u30c9\u30e1\u30a4\u30f3 \u30eb\u30fc\u30bf\u30fc +label.domain.suffix=DNS \u30c9\u30e1\u30a4\u30f3 \u30b5\u30d5\u30a3\u30c3\u30af\u30b9 (\u4f8b: xyz.com) +label.domain=\u30c9\u30e1\u30a4\u30f3 +label.done=\u5b8c\u4e86 +label.double.quotes.are.not.allowed=\u4e8c\u91cd\u5f15\u7528\u7b26\u306f\u4f7f\u7528\u3067\u304d\u307e\u305b\u3093 +label.download.progress=\u30c0\u30a6\u30f3\u30ed\u30fc\u30c9\u306e\u9032\u6357\u72b6\u6cc1 +label.drag.new.position=\u65b0\u3057\u3044\u4f4d\u7f6e\u306b\u30c9\u30e9\u30c3\u30b0 +label.edit.affinity.group=\u30a2\u30d5\u30a3\u30cb\u30c6\u30a3 \u30b0\u30eb\u30fc\u30d7\u306e\u7de8\u96c6 +label.edit.lb.rule=LB \u898f\u5247\u306e\u7de8\u96c6 +label.edit.network.details=\u30cd\u30c3\u30c8\u30ef\u30fc\u30af\u306e\u8a73\u7d30\u306e\u7de8\u96c6 +label.edit.project.details=\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u306e\u8a73\u7d30\u306e\u7de8\u96c6 +label.edit.tags=\u30bf\u30b0\u306e\u7de8\u96c6 +label.edit.traffic.type=\u30c8\u30e9\u30d5\u30a3\u30c3\u30af\u306e\u7a2e\u985e\u306e\u7de8\u96c6 +label.edit.vpc=VPC \u306e\u7de8\u96c6 +label.edit=\u7de8\u96c6 +label.egress.rule=\u9001\u4fe1\u898f\u5247 +label.egress.rules=\u9001\u4fe1\u898f\u5247 +label.elastic.IP=\u30a8\u30e9\u30b9\u30c6\u30a3\u30c3\u30af IP \u30a2\u30c9\u30ec\u30b9 +label.elastic.LB=\u30a8\u30e9\u30b9\u30c6\u30a3\u30c3\u30af LB +label.elastic=\u30a8\u30e9\u30b9\u30c6\u30a3\u30c3\u30af +label.email=\u96fb\u5b50\u30e1\u30fc\u30eb +label.enable.provider=\u30d7\u30ed\u30d0\u30a4\u30c0\u30fc\u306e\u6709\u52b9\u5316 +label.enable.s3=S3 \u30d9\u30fc\u30b9\u306e\u30bb\u30ab\u30f3\u30c0\u30ea \u30b9\u30c8\u30ec\u30fc\u30b8\u306e\u6709\u52b9\u5316 +label.enable.swift=Swift \u306e\u6709\u52b9\u5316 +label.enable.vpn=VPN \u306e\u6709\u52b9\u5316 +label.enabling.vpn.access=VPN \u30a2\u30af\u30bb\u30b9\u3092\u6709\u52b9\u306b\u3057\u3066\u3044\u307e\u3059 +label.enabling.vpn=VPN \u3092\u6709\u52b9\u306b\u3057\u3066\u3044\u307e\u3059 +label.end.IP=\u7d42\u4e86 IP \u30a2\u30c9\u30ec\u30b9 +label.end.port=\u7d42\u4e86\u30dd\u30fc\u30c8 +label.end.reserved.system.IP=\u4e88\u7d04\u6e08\u307f\u7d42\u4e86\u30b7\u30b9\u30c6\u30e0 IP \u30a2\u30c9\u30ec\u30b9 +label.end.vlan=\u7d42\u4e86 VLAN +label.end.vxlan=\u7d42\u4e86 VXLAN +label.endpoint.or.operation=\u30a8\u30f3\u30c9\u30dd\u30a4\u30f3\u30c8\u307e\u305f\u306f\u64cd\u4f5c +label.endpoint=\u30a8\u30f3\u30c9\u30dd\u30a4\u30f3\u30c8 +label.enter.token=\u30c8\u30fc\u30af\u30f3\u306e\u5165\u529b +label.error.code=\u30a8\u30e9\u30fc \u30b3\u30fc\u30c9 +label.error=\u30a8\u30e9\u30fc +label.ESP.encryption=ESP \u6697\u53f7\u5316 +label.ESP.hash=ESP \u30cf\u30c3\u30b7\u30e5 +label.ESP.lifetime=ESP \u6709\u52b9\u671f\u9593 (\u79d2) +label.ESP.policy=ESP \u30dd\u30ea\u30b7\u30fc +label.esx.host=ESX/ESXi \u30db\u30b9\u30c8 +label.example=\u4f8b +label.expunge=\u62b9\u6d88 +label.external.link=\u5916\u90e8\u30ea\u30f3\u30af label.f5=F5 -label.failed=\u017d\u00b8\u201ds -label.featured=\u201a\u00a8\u201a\u00b7\u201a\u00b7\u201a\u00df -label.fetch.latest=\ufffd\u00c5\ufffdV\ufffd\u00ee\u2022\u00f1\u201a\u00cc\u017d\u00e6\u201c\u00be -label.filterBy=\u0192t\u0192B\u0192\u2039\u0192^\ufffd[ -label.firewall=\u0192t\u0192@\u0192C\u0192A\u0192E\u0192H\ufffd[\u0192\u2039 -label.first.name=\u2013\u00bc -label.format=\u0152`\u017d\u00ae -label.friday=\u2039\u00e0\u2014j\u201c\u00fa -label.full.path=\u0192t\u0192\u2039 \u0192p\u0192X -label.full=\u0160\u00ae\u2018S -label.gateway=\u0192Q\ufffd[\u0192g\u0192E\u0192F\u0192C -label.general.alerts=\u02c6\u00ea\u201d\u00ca\u0192A\u0192\u2030\ufffd[\u0192g -label.generating.url=URL \u201a\u00f0\ufffd\u00b6\ufffd\u00ac\u201a\u00b5\u201a\u00c4\u201a\u00a2\u201a\u00dc\u201a\u00b7 -label.gluster.volume=\u0192{\u0192\u0160\u0192\u2026\ufffd[\u0192\u20ac -label.go.step.2=\u017d\u00e8\ufffd\u2021 2 \u201a\u00c9\ufffdi\u201a\u00de -label.go.step.3=\u017d\u00e8\ufffd\u2021 3 \u201a\u00c9\ufffdi\u201a\u00de -label.go.step.4=\u017d\u00e8\ufffd\u2021 4 \u201a\u00c9\ufffdi\u201a\u00de -label.go.step.5=\u017d\u00e8\ufffd\u2021 5 \u201a\u00c9\ufffdi\u201a\u00de -label.group.optional=\u0192O\u0192\u2039\ufffd[\u0192v (\u0192I\u0192v\u0192V\u0192\u2021\u0192\u201c) -label.group=\u0192O\u0192\u2039\ufffd[\u0192v -label.guest.cidr=\u0192Q\u0192X\u0192g CIDR -label.guest.end.ip=\u0192Q\u0192X\u0192g\u201a\u00cc\ufffdI\u2014\u00b9 IP \u0192A\u0192h\u0192\u0152\u0192X -label.guest.gateway=\u0192Q\u0192X\u0192g \u0192Q\ufffd[\u0192g\u0192E\u0192F\u0192C -label.guest.ip.range=\u0192Q\u0192X\u0192g IP \u0192A\u0192h\u0192\u0152\u0192X\u201a\u00cc\u201d\u00cd\u02c6\u00cd -label.guest.ip=\u0192Q\u0192X\u0192g IP \u0192A\u0192h\u0192\u0152\u0192X -label.guest.netmask=\u0192Q\u0192X\u0192g \u0192l\u0192b\u0192g\u0192}\u0192X\u0192N -label.guest.networks=\u0192Q\u0192X\u0192g \u0192l\u0192b\u0192g\u0192\ufffd\ufffd[\u0192N -label.guest.start.ip=\u0192Q\u0192X\u0192g\u201a\u00cc\u0160J\u017dn IP \u0192A\u0192h\u0192\u0152\u0192X -label.guest.traffic=\u0192Q\u0192X\u0192g \u0192g\u0192\u2030\u0192t\u0192B\u0192b\u0192N -label.guest.type=\u0192Q\u0192X\u0192g\u201a\u00cc\u017d\u00ed\u2014\u00de -label.guest=\u0192Q\u0192X\u0192g -label.ha.enabled=\ufffd\u201a\u2030\u00c2\u2014p\ufffd\u00ab\u2014L\u0152\u00f8 -label.help=\u0192w\u0192\u2039\u0192v -label.hide.ingress.rule=\u017d\u00f3\ufffdM\u2039K\u2018\u00a5\u201a\u00f0\u2030B\u201a\u00b7 -label.hints=\u0192q\u0192\u201c\u0192g -label.host.alerts=\u0192z\u0192X\u0192g \u0192A\u0192\u2030\ufffd[\u0192g -label.host.MAC=\u0192z\u0192X\u0192g\u201a\u00cc MAC -label.host.name=\u0192z\u0192X\u0192g\u2013\u00bc -label.host.tags=\u0192z\u0192X\u0192g \u0192^\u0192O -label.host=\u0192z\u0192X\u0192g -label.hosts=\u0192z\u0192X\u0192g -label.hourly=\u2013\u02c6\u017d\u017e -label.hypervisor.capabilities=\u0192n\u0192C\u0192p\ufffd[\u0192o\u0192C\u0192U\ufffd[\u201a\u00cc\u2039@\u201d\ -label.hypervisor.type=\u0192n\u0192C\u0192p\ufffd[\u0192o\u0192C\u0192U\ufffd[\u201a\u00cc\u017d\u00ed\u2014\u00de -label.hypervisor.version=\u0192n\u0192C\u0192p\ufffd[\u0192o\u0192C\u0192U\ufffd[\u201a\u00cc\u0192o\ufffd[\u0192W\u0192\u2021\u0192\u201c -label.hypervisor=\u0192n\u0192C\u0192p\ufffd[\u0192o\u0192C\u0192U\ufffd[ +label.failed=\u5931\u6557 +label.featured=\u304a\u3059\u3059\u3081 +label.fetch.latest=\u6700\u65b0\u60c5\u5831\u306e\u53d6\u5f97 +label.filterBy=\u30d5\u30a3\u30eb\u30bf\u30fc +label.firewall=\u30d5\u30a1\u30a4\u30a2\u30a6\u30a9\u30fc\u30eb +label.first.name=\u540d +label.format=\u5f62\u5f0f +label.friday=\u91d1\u66dc\u65e5 +label.full.path=\u30d5\u30eb \u30d1\u30b9 +label.full=\u5b8c\u5168 +label.gateway=\u30b2\u30fc\u30c8\u30a6\u30a7\u30a4 +label.general.alerts=\u4e00\u822c\u30a2\u30e9\u30fc\u30c8 +label.generating.url=URL \u3092\u751f\u6210\u3057\u3066\u3044\u307e\u3059 +label.gluster.volume=\u30dc\u30ea\u30e5\u30fc\u30e0 +label.go.step.2=\u624b\u9806 2 \u306b\u9032\u3080 +label.go.step.3=\u624b\u9806 3 \u306b\u9032\u3080 +label.go.step.4=\u624b\u9806 4 \u306b\u9032\u3080 +label.go.step.5=\u624b\u9806 5 \u306b\u9032\u3080 +label.group.optional=\u30b0\u30eb\u30fc\u30d7 (\u30aa\u30d7\u30b7\u30e7\u30f3) +label.group=\u30b0\u30eb\u30fc\u30d7 +label.guest.cidr=\u30b2\u30b9\u30c8 CIDR +label.guest.end.ip=\u30b2\u30b9\u30c8\u306e\u7d42\u4e86 IP \u30a2\u30c9\u30ec\u30b9 +label.guest.gateway=\u30b2\u30b9\u30c8 \u30b2\u30fc\u30c8\u30a6\u30a7\u30a4 +label.guest.ip.range=\u30b2\u30b9\u30c8 IP \u30a2\u30c9\u30ec\u30b9\u306e\u7bc4\u56f2 +label.guest.ip=\u30b2\u30b9\u30c8 IP \u30a2\u30c9\u30ec\u30b9 +label.guest.netmask=\u30b2\u30b9\u30c8 \u30cd\u30c3\u30c8\u30de\u30b9\u30af +label.guest.networks=\u30b2\u30b9\u30c8 \u30cd\u30c3\u30c8\u30ef\u30fc\u30af +label.guest.start.ip=\u30b2\u30b9\u30c8\u306e\u958b\u59cb IP \u30a2\u30c9\u30ec\u30b9 +label.guest.traffic=\u30b2\u30b9\u30c8 \u30c8\u30e9\u30d5\u30a3\u30c3\u30af +label.guest.type=\u30b2\u30b9\u30c8\u306e\u7a2e\u985e +label.guest=\u30b2\u30b9\u30c8 +label.ha.enabled=\u9ad8\u53ef\u7528\u6027\u6709\u52b9 +label.help=\u30d8\u30eb\u30d7 +label.hide.ingress.rule=\u53d7\u4fe1\u898f\u5247\u3092\u96a0\u3059 +label.hints=\u30d2\u30f3\u30c8 +label.host.alerts=\u30db\u30b9\u30c8 \u30a2\u30e9\u30fc\u30c8 +label.host.MAC=\u30db\u30b9\u30c8\u306e MAC +label.host.name=\u30db\u30b9\u30c8\u540d +label.host.tags=\u30db\u30b9\u30c8 \u30bf\u30b0 +label.host=\u30db\u30b9\u30c8 +label.hosts=\u30db\u30b9\u30c8 +label.hourly=\u6bce\u6642 +label.hypervisor.capabilities=\u30cf\u30a4\u30d1\u30fc\u30d0\u30a4\u30b6\u30fc\u306e\u6a5f\u80fd +label.hypervisor.type=\u30cf\u30a4\u30d1\u30fc\u30d0\u30a4\u30b6\u30fc\u306e\u7a2e\u985e +label.hypervisor.version=\u30cf\u30a4\u30d1\u30fc\u30d0\u30a4\u30b6\u30fc\u306e\u30d0\u30fc\u30b8\u30e7\u30f3 +label.hypervisor=\u30cf\u30a4\u30d1\u30fc\u30d0\u30a4\u30b6\u30fc label.id=ID label.IKE.DH=IKE DH -label.IKE.encryption=IKE \u02c6\u00c3\ufffd\u2020\u2030\u00bb -label.IKE.hash=IKE \u0192n\u0192b\u0192V\u0192\u2026 -label.IKE.lifetime=IKE \u2014L\u0152\u00f8\u0160\u00fa\u0160\u00d4 (\u2022b) -label.IKE.policy=IKE \u0192|\u0192\u0160\u0192V\ufffd[ -label.info=\ufffd\u00ee\u2022\u00f1 -label.ingress.rule=\u017d\u00f3\ufffdM\u2039K\u2018\u00a5 -label.initiated.by=\u0160J\u017dn\u0192\u2020\ufffd[\u0192U\ufffd[ -label.installWizard.addClusterIntro.subtitle=\u0192N\u0192\u2030\u0192X\u0192^\ufffd[\u201a\u00c9\u201a\u00c2\u201a\u00a2\u201a\u00c4 -label.installWizard.addClusterIntro.title=\u0192N\u0192\u2030\u0192X\u0192^\ufffd[\u201a\u00f0\u2019\u00c7\u2030\u00c1\u201a\u00b5\u201a\u00dc\u201a\u00b5\u201a\u00e5\u201a\u00a4 -label.installWizard.addHostIntro.subtitle=\u0192z\u0192X\u0192g\u201a\u00c9\u201a\u00c2\u201a\u00a2\u201a\u00c4 -label.installWizard.addHostIntro.title=\u0192z\u0192X\u0192g\u201a\u00f0\u2019\u00c7\u2030\u00c1\u201a\u00b5\u201a\u00dc\u201a\u00b5\u201a\u00e5\u201a\u00a4 -label.installWizard.addPodIntro.subtitle=\u0192|\u0192b\u0192h\u201a\u00c9\u201a\u00c2\u201a\u00a2\u201a\u00c4 -label.installWizard.addPodIntro.title=\u0192|\u0192b\u0192h\u201a\u00f0\u2019\u00c7\u2030\u00c1\u201a\u00b5\u201a\u00dc\u201a\u00b5\u201a\u00e5\u201a\u00a4 -label.installWizard.addPrimaryStorageIntro.subtitle=\u0192v\u0192\u2030\u0192C\u0192}\u0192\u0160 \u0192X\u0192g\u0192\u0152\ufffd[\u0192W\u201a\u00c9\u201a\u00c2\u201a\u00a2\u201a\u00c4 -label.installWizard.addPrimaryStorageIntro.title=\u0192v\u0192\u2030\u0192C\u0192}\u0192\u0160 \u0192X\u0192g\u0192\u0152\ufffd[\u0192W\u201a\u00f0\u2019\u00c7\u2030\u00c1\u201a\u00b5\u201a\u00dc\u201a\u00b5\u201a\u00e5\u201a\u00a4 -label.installWizard.addSecondaryStorageIntro.subtitle=\u0192Z\u0192J\u0192\u201c\u0192_\u0192\u0160 \u0192X\u0192g\u0192\u0152\ufffd[\u0192W\u201a\u00c9\u201a\u00c2\u201a\u00a2\u201a\u00c4 -label.installWizard.addSecondaryStorageIntro.title=\u0192Z\u0192J\u0192\u201c\u0192_\u0192\u0160 \u0192X\u0192g\u0192\u0152\ufffd[\u0192W\u201a\u00f0\u2019\u00c7\u2030\u00c1\u201a\u00b5\u201a\u00dc\u201a\u00b5\u201a\u00e5\u201a\u00a4 -label.installWizard.addZone.title=\u0192]\ufffd[\u0192\u201c\u201a\u00cc\u2019\u00c7\u2030\u00c1 -label.installWizard.addZoneIntro.subtitle=\u0192]\ufffd[\u0192\u201c\u201a\u00c9\u201a\u00c2\u201a\u00a2\u201a\u00c4 -label.installWizard.addZoneIntro.title=\u0192]\ufffd[\u0192\u201c\u201a\u00f0\u2019\u00c7\u2030\u00c1\u201a\u00b5\u201a\u00dc\u201a\u00b5\u201a\u00e5\u201a\u00a4 -label.installWizard.click.launch=[\u2039N\u201c\u00ae] \u201a\u00f0\u0192N\u0192\u0160\u0192b\u0192N\u201a\u00b5\u201a\u00c4\u201a\u00ad\u201a\u00be\u201a\u00b3\u201a\u00a2\ufffdB -label.installWizard.subtitle=\u201a\u00b1\u201a\u00cc\u0192K\u0192C\u0192h \u0192c\u0192A\ufffd[\u201a\u00cd CloudStack&\#8482; \u0160\u00c2\u2039\u00ab\u201a\u00cc\u0192Z\u0192b\u0192g\u0192A\u0192b\u0192v\u201a\u00c9\u2013\u00f0\u2014\u00a7\u201a\u00bf\u201a\u00dc\u201a\u00b7 -label.installWizard.title=CloudStack&\#8482; \u201a\u00d6\u201a\u00e6\u201a\u00a4\u201a\u00b1\u201a\u00bb -label.instance.limits=\u0192C\u0192\u201c\u0192X\u0192^\u0192\u201c\u0192X\ufffd\u00a7\u0152\u00c0 -label.instance.name=\u0192C\u0192\u201c\u0192X\u0192^\u0192\u201c\u0192X\u2013\u00bc -label.instance=\u0192C\u0192\u201c\u0192X\u0192^\u0192\u201c\u0192X -label.instances=\u0192C\u0192\u201c\u0192X\u0192^\u0192\u201c\u0192X -label.intermediate.certificate=Intermediate certificate {0} -label.internal.dns.1=\u201c\u00e0\u2022\u201d DNS 1 -label.internal.dns.2=\u201c\u00e0\u2022\u201d DNS 2 -label.internal.name=\u201c\u00e0\u2022\u201d\u2013\u00bc -label.interval.type=\u0160\u00d4\u0160u\u201a\u00cc\u017d\u00ed\u2014\u00de -label.introduction.to.cloudstack=CloudStack&\#8482; \u201a\u00cc\ufffd\u00d0\u2030\u00ee -label.invalid.integer=\u2013\u00b3\u0152\u00f8\u201a\u00c8\ufffd\u00ae\ufffd\u201d -label.invalid.number=\u2013\u00b3\u0152\u00f8\u201a\u00c8\ufffd\u201d -label.invitations=\ufffd\u00b5\u2018\u00d2\ufffd\u00f3 -label.invite.to=\ufffd\u00b5\u2018\u00d2\u201a\u00b7\u201a\u00e9\u0192v\u0192\ufffd\u0192W\u0192F\u0192N\u0192g: -label.invite=\ufffd\u00b5\u2018\u00d2 -label.invited.accounts=\ufffd\u00b5\u2018\u00d2\ufffd\u00cf\u201a\u00dd\u0192A\u0192J\u0192E\u0192\u201c\u0192g -label.ip.address=IP \u0192A\u0192h\u0192\u0152\u0192X -label.ip.allocations=IP \u0192A\u0192h\u0192\u0152\u0192X\u201a\u00cc\u0160\u201e\u201a\u00e8\u201c\u2013\u201a\u00c4 -label.ip.limits=\u0192p\u0192u\u0192\u0160\u0192b\u0192N IP \u0192A\u0192h\u0192\u0152\u0192X\u201a\u00cc\ufffd\u00a7\u0152\u00c0 -label.ip.or.fqdn=IP \u0192A\u0192h\u0192\u0152\u0192X\u201a\u00dc\u201a\u00bd\u201a\u00cd FQDN -label.ip.range=IP \u0192A\u0192h\u0192\u0152\u0192X\u201a\u00cc\u201d\u00cd\u02c6\u00cd -label.ip.ranges=IP \u0192A\u0192h\u0192\u0152\u0192X\u201a\u00cc\u201d\u00cd\u02c6\u00cd +label.IKE.encryption=IKE \u6697\u53f7\u5316 +label.IKE.hash=IKE \u30cf\u30c3\u30b7\u30e5 +label.IKE.lifetime=IKE \u6709\u52b9\u671f\u9593 (\u79d2) +label.IKE.policy=IKE \u30dd\u30ea\u30b7\u30fc +label.info=\u60c5\u5831 +label.ingress.rule=\u53d7\u4fe1\u898f\u5247 +label.initiated.by=\u958b\u59cb\u30e6\u30fc\u30b6\u30fc +label.installWizard.addClusterIntro.subtitle=\u30af\u30e9\u30b9\u30bf\u30fc\u306b\u3064\u3044\u3066 +label.installWizard.addClusterIntro.title=\u30af\u30e9\u30b9\u30bf\u30fc\u3092\u8ffd\u52a0\u3057\u307e\u3057\u3087\u3046 +label.installWizard.addHostIntro.subtitle=\u30db\u30b9\u30c8\u306b\u3064\u3044\u3066 +label.installWizard.addHostIntro.title=\u30db\u30b9\u30c8\u3092\u8ffd\u52a0\u3057\u307e\u3057\u3087\u3046 +label.installWizard.addPodIntro.subtitle=\u30dd\u30c3\u30c9\u306b\u3064\u3044\u3066 +label.installWizard.addPodIntro.title=\u30dd\u30c3\u30c9\u3092\u8ffd\u52a0\u3057\u307e\u3057\u3087\u3046 +label.installWizard.addPrimaryStorageIntro.subtitle=\u30d7\u30e9\u30a4\u30de\u30ea \u30b9\u30c8\u30ec\u30fc\u30b8\u306b\u3064\u3044\u3066 +label.installWizard.addPrimaryStorageIntro.title=\u30d7\u30e9\u30a4\u30de\u30ea \u30b9\u30c8\u30ec\u30fc\u30b8\u3092\u8ffd\u52a0\u3057\u307e\u3057\u3087\u3046 +label.installWizard.addSecondaryStorageIntro.subtitle=\u30bb\u30ab\u30f3\u30c0\u30ea \u30b9\u30c8\u30ec\u30fc\u30b8\u306b\u3064\u3044\u3066 +label.installWizard.addSecondaryStorageIntro.title=\u30bb\u30ab\u30f3\u30c0\u30ea \u30b9\u30c8\u30ec\u30fc\u30b8\u3092\u8ffd\u52a0\u3057\u307e\u3057\u3087\u3046 +label.installWizard.addZone.title=\u30be\u30fc\u30f3\u306e\u8ffd\u52a0 +label.installWizard.addZoneIntro.subtitle=\u30be\u30fc\u30f3\u306b\u3064\u3044\u3066 +label.installWizard.addZoneIntro.title=\u30be\u30fc\u30f3\u3092\u8ffd\u52a0\u3057\u307e\u3057\u3087\u3046 +label.installWizard.click.launch=[\u8d77\u52d5] \u3092\u30af\u30ea\u30c3\u30af\u3057\u3066\u304f\u3060\u3055\u3044\u3002 +label.installWizard.subtitle=\u3053\u306e\u30ac\u30a4\u30c9 \u30c4\u30a2\u30fc\u306f CloudStack&\#8482; \u74b0\u5883\u306e\u30bb\u30c3\u30c8\u30a2\u30c3\u30d7\u306b\u5f79\u7acb\u3061\u307e\u3059 +label.installWizard.title=CloudStack&\#8482; \u3078\u3088\u3046\u3053\u305d +label.instance.limits=\u30a4\u30f3\u30b9\u30bf\u30f3\u30b9\u5236\u9650 +label.instance.name=\u30a4\u30f3\u30b9\u30bf\u30f3\u30b9\u540d +label.instance=\u30a4\u30f3\u30b9\u30bf\u30f3\u30b9 +label.instances=\u30a4\u30f3\u30b9\u30bf\u30f3\u30b9 +label.intermediate.certificate=\u4e2d\u9593\u8a3c\u660e\u66f8 {0} +label.internal.dns.1=\u5185\u90e8 DNS 1 +label.internal.dns.2=\u5185\u90e8 DNS 2 +label.internal.name=\u5185\u90e8\u540d +label.interval.type=\u9593\u9694\u306e\u7a2e\u985e +label.introduction.to.cloudstack=CloudStack&\#8482; \u306e\u7d39\u4ecb +label.invalid.integer=\u7121\u52b9\u306a\u6574\u6570 +label.invalid.number=\u7121\u52b9\u306a\u6570 +label.invitations=\u62db\u5f85\u72b6 +label.invite.to=\u62db\u5f85\u3059\u308b\u30d7\u30ed\u30b8\u30a7\u30af\u30c8: +label.invite=\u62db\u5f85 +label.invited.accounts=\u62db\u5f85\u6e08\u307f\u30a2\u30ab\u30a6\u30f3\u30c8 +label.ip.address=IP \u30a2\u30c9\u30ec\u30b9 +label.ip.allocations=IP \u30a2\u30c9\u30ec\u30b9\u306e\u5272\u308a\u5f53\u3066 +label.ip.limits=\u30d1\u30d6\u30ea\u30c3\u30af IP \u30a2\u30c9\u30ec\u30b9\u306e\u5236\u9650 +label.ip.or.fqdn=IP \u30a2\u30c9\u30ec\u30b9\u307e\u305f\u306f FQDN +label.ip.range=IP \u30a2\u30c9\u30ec\u30b9\u306e\u7bc4\u56f2 +label.ip.ranges=IP \u30a2\u30c9\u30ec\u30b9\u306e\u7bc4\u56f2 label.ip=IP -label.ipaddress=IP \u0192A\u0192h\u0192\u0152\u0192X -label.ips=IP \u0192A\u0192h\u0192\u0152\u0192X -label.IPsec.preshared.key=IPsec \u017d\u2013\u2018O\u2039\u00a4\u2014L\u0192L\ufffd[ -label.is.default=\u0192f\u0192t\u0192H\u0192\u2039\u0192g -label.is.redundant.router=\ufffd\u00e7\u2019\u00b7 -label.is.shared=\u2039\u00a4\u2014L -label.is.system=\u0192V\u0192X\u0192e\u0192\u20ac +label.ipaddress=IP \u30a2\u30c9\u30ec\u30b9 +label.ips=IP \u30a2\u30c9\u30ec\u30b9 +label.IPsec.preshared.key=IPsec \u4e8b\u524d\u5171\u6709\u30ad\u30fc +label.is.default=\u30c7\u30d5\u30a9\u30eb\u30c8 +label.is.redundant.router=\u5197\u9577 +label.is.shared=\u5171\u6709 +label.is.system=\u30b7\u30b9\u30c6\u30e0 label.iscsi=iSCSI -label.iso.boot=ISO \u2039N\u201c\u00ae -label.iso=ISO -label.isolated.networks=\u2022\u00aa\u2014\u00a3\u201a\u00b3\u201a\u00ea\u201a\u00bd\u0192l\u0192b\u0192g\u0192\ufffd\ufffd[\u0192N -label.isolation.method=\u2022\u00aa\u2014\u00a3\u2022\u00fb\u2013@ -label.isolation.mode=\u2022\u00aa\u2014\u00a3\u0192\u201a\ufffd[\u0192h -label.isolation.uri=\u2022\u00aa\u2014\u00a3 URI -label.item.listing=\ufffd\u20ac\u2013\u00da\u02c6\u00ea\u2014\u2014 -label.keep=\u02c6\u00db\u017d\ufffd -label.key=\u0192L\ufffd[ -label.keyboard.type=\u0192L\ufffd[\u0192{\ufffd[\u0192h\u201a\u00cc\u017d\u00ed\u2014\u00de -label.kvm.traffic.label=KVM \u201a\u00cc\u0192g\u0192\u2030\u0192t\u0192B\u0192b\u0192N \u0192\u2030\u0192x\u0192\u2039 -label.label=\u0192\u2030\u0192x\u0192\u2039 -label.lang.arabic=\u0192A\u0192\u2030\u0192r\u0192A\u0152\u00ea -label.lang.brportugese=\u0192|\u0192\u2039\u0192g\u0192K\u0192\u2039\u0152\u00ea (\u0192u\u0192\u2030\u0192W\u0192\u2039) -label.lang.catalan=\u0192J\u0192^\u0192\u2039\u0192j\u0192A\u0152\u00ea -label.lang.chinese=\u0160\u00c8\u2018\u00cc\u017d\u0161\u2019\u2020\ufffd\u2018\u0152\u00ea -label.lang.dutch=\u0192I\u0192\u2030\u0192\u201c\u0192_\u0152\u00ea (\u0192I\u0192\u2030\u0192\u201c\u0192_) -label.lang.english=\u2030p\u0152\u00ea -label.lang.french=\u0192t\u0192\u2030\u0192\u201c\u0192X\u0152\u00ea -label.lang.german=\u0192h\u0192C\u0192c\u0152\u00ea -label.lang.italian=\u0192C\u0192^\u0192\u0160\u0192A\u0152\u00ea -label.lang.japanese=\u201c\u00fa\u2013{\u0152\u00ea -label.lang.korean=\u0160\u00d8\ufffd\u2018\u0152\u00ea -label.lang.norwegian=\u0192m\u0192\u2039\u0192E\u0192F\ufffd[\u0152\u00ea -label.lang.polish=\u0192|\ufffd[\u0192\u2030\u0192\u201c\u0192h\u0152\u00ea -label.lang.russian=\u0192\ufffd\u0192V\u0192A\u0152\u00ea -label.lang.spanish=\u0192X\u0192y\u0192C\u0192\u201c\u0152\u00ea -label.last.disconnected=\ufffd\u00c5\ufffdI\ufffd\u00d8\u2019f\u201c\u00fa\u017d\u017e -label.last.name=\ufffd\u00a9 -label.latest.events=\ufffd\u00c5\ufffdV\u0192C\u0192x\u0192\u201c\u0192g -label.launch.vm=VM \u201a\u00cc\u2039N\u201c\u00ae -label.launch.zone=\u0192]\ufffd[\u0192\u201c\u201a\u00cc\u2039N\u201c\u00ae -label.launch=\u2039N\u201c\u00ae -label.LB.isolation=LB \u2022\u00aa\u2014\u00a3 -label.least.connections=\ufffd\u00c5\ufffd\u00ac\ufffd\u00da\u2018\u00b1 -label.level=\u0192\u0152\u0192x\u0192\u2039 -label.linklocal.ip=\u0192\u0160\u0192\u201c\u0192N \u0192\ufffd\ufffd[\u0192J\u0192\u2039 IP \u0192A\u0192h\u0192\u0152\u0192X -label.load.balancer=\u0192\ufffd\ufffd[\u0192h \u0192o\u0192\u2030\u0192\u201c\u0192T\ufffd[ -label.load.balancing.policies=\u2022\u2030\u2030\u00d7\u2022\u00aa\u017dU\u0192|\u0192\u0160\u0192V\ufffd[ -label.load.balancing=\u2022\u2030\u2030\u00d7\u2022\u00aa\u017dU -label.loading=\u0192\ufffd\ufffd[\u0192h\u201a\u00b5\u201a\u00c4\u201a\u00a2\u201a\u00dc\u201a\u00b7 -label.local.storage.enabled=\u0192\ufffd\ufffd[\u0192J\u0192\u2039 \u0192X\u0192g\u0192\u0152\ufffd[\u0192W\u201a\u00f0\u2014L\u0152\u00f8\u201a\u00c9\u201a\u00b7\u201a\u00e9 -label.local.storage=\u0192\ufffd\ufffd[\u0192J\u0192\u2039 \u0192X\u0192g\u0192\u0152\ufffd[\u0192W -label.local=\u0192\ufffd\ufffd[\u0192J\u0192\u2039 -label.login=\u0192\ufffd\u0192O\u0192I\u0192\u201c -label.logout=\u0192\ufffd\u0192O\u0192I\u0192t -label.LUN.number=LUN \u201d\u00d4\ufffd\u2020 +label.iso.boot=ISO \u8d77\u52d5 +label.iso=ISO +label.isolated.networks=\u5206\u96e2\u3055\u308c\u305f\u30cd\u30c3\u30c8\u30ef\u30fc\u30af +label.isolation.method=\u5206\u96e2\u65b9\u6cd5 +label.isolation.mode=\u5206\u96e2\u30e2\u30fc\u30c9 +label.isolation.uri=\u5206\u96e2 URI +label.item.listing=\u9805\u76ee\u4e00\u89a7 +label.keep=\u7dad\u6301 +label.key=\u30ad\u30fc +label.keyboard.type=\u30ad\u30fc\u30dc\u30fc\u30c9\u306e\u7a2e\u985e +label.kvm.traffic.label=KVM \u306e\u30c8\u30e9\u30d5\u30a3\u30c3\u30af \u30e9\u30d9\u30eb +label.label=\u30e9\u30d9\u30eb +label.lang.arabic=\u30a2\u30e9\u30d3\u30a2\u8a9e +label.lang.brportugese=\u30dd\u30eb\u30c8\u30ac\u30eb\u8a9e (\u30d6\u30e9\u30b8\u30eb) +label.lang.catalan=\u30ab\u30bf\u30eb\u30cb\u30a2\u8a9e +label.lang.chinese=\u7c21\u4f53\u5b57\u4e2d\u56fd\u8a9e +label.lang.dutch=\u30aa\u30e9\u30f3\u30c0\u8a9e (\u30aa\u30e9\u30f3\u30c0) +label.lang.english=\u82f1\u8a9e +label.lang.french=\u30d5\u30e9\u30f3\u30b9\u8a9e +label.lang.german=\u30c9\u30a4\u30c4\u8a9e +label.lang.italian=\u30a4\u30bf\u30ea\u30a2\u8a9e +label.lang.japanese=\u65e5\u672c\u8a9e +label.lang.korean=\u97d3\u56fd\u8a9e +label.lang.norwegian=\u30ce\u30eb\u30a6\u30a7\u30fc\u8a9e +label.lang.polish=\u30dd\u30fc\u30e9\u30f3\u30c9\u8a9e +label.lang.russian=\u30ed\u30b7\u30a2\u8a9e +label.lang.spanish=\u30b9\u30da\u30a4\u30f3\u8a9e +label.last.disconnected=\u6700\u7d42\u5207\u65ad\u65e5\u6642 +label.last.name=\u59d3 +label.latest.events=\u6700\u65b0\u30a4\u30d9\u30f3\u30c8 +label.launch.vm=VM \u306e\u8d77\u52d5 +label.launch.zone=\u30be\u30fc\u30f3\u306e\u8d77\u52d5 +label.launch=\u8d77\u52d5 +label.LB.isolation=LB \u5206\u96e2 +label.least.connections=\u6700\u5c0f\u63a5\u7d9a +label.level=\u30ec\u30d9\u30eb +label.linklocal.ip=\u30ea\u30f3\u30af \u30ed\u30fc\u30ab\u30eb IP \u30a2\u30c9\u30ec\u30b9 +label.load.balancer=\u30ed\u30fc\u30c9 \u30d0\u30e9\u30f3\u30b5\u30fc +label.load.balancing.policies=\u8ca0\u8377\u5206\u6563\u30dd\u30ea\u30b7\u30fc +label.load.balancing=\u8ca0\u8377\u5206\u6563 +label.loading=\u30ed\u30fc\u30c9\u3057\u3066\u3044\u307e\u3059 +label.local.storage.enabled=\u30ed\u30fc\u30ab\u30eb \u30b9\u30c8\u30ec\u30fc\u30b8\u3092\u6709\u52b9\u306b\u3059\u308b +label.local.storage=\u30ed\u30fc\u30ab\u30eb \u30b9\u30c8\u30ec\u30fc\u30b8 +label.local=\u30ed\u30fc\u30ab\u30eb +label.login=\u30ed\u30b0\u30aa\u30f3 +label.logout=\u30ed\u30b0\u30aa\u30d5 +label.LUN.number=LUN \u756a\u53f7 label.lun=LUN -label.make.project.owner=\u0192A\u0192J\u0192E\u0192\u201c\u0192g\u201a\u00cc\u0192v\u0192\ufffd\u0192W\u0192F\u0192N\u0192g\ufffd\u0160\u2014L\u017d\u00d2\u2030\u00bb -label.manage.resources=\u0192\u0160\u0192\\ufffd[\u0192X\u201a\u00cc\u0160\u00c7\u2014\ufffd -label.manage=\u0160\u00c7\u2014\ufffd -label.managed=Managed -label.management.ips=\u0160\u00c7\u2014\ufffd IP \u0192A\u0192h\u0192\u0152\u0192X -label.management=\u0160\u00c7\u2014\ufffd -label.max.cpus=\ufffd\u00c5\u2018\u00e5 CPU \u0192R\u0192A\ufffd\u201d -label.max.guest.limit=\ufffd\u00c5\u2018\u00e5\u0192Q\u0192X\u0192g\ufffd\u00a7\u0152\u00c0 -label.max.memory=\ufffd\u00c5\u2018\u00e5\u0192\ufffd\u0192\u201a\u0192\u0160 (MiB) -label.max.networks=\ufffd\u00c5\u2018\u00e5\u0192l\u0192b\u0192g\u0192\ufffd\ufffd[\u0192N\ufffd\u201d -label.max.primary.storage=\ufffd\u00c5\u2018\u00e5\u0192v\u0192\u2030\u0192C\u0192}\u0192\u0160 (GiB) -label.max.public.ips=\ufffd\u00c5\u2018\u00e5\u0192p\u0192u\u0192\u0160\u0192b\u0192N IP \u0192A\u0192h\u0192\u0152\u0192X\ufffd\u201d -label.max.secondary.storage=\ufffd\u00c5\u2018\u00e5\u0192Z\u0192J\u0192\u201c\u0192_\u0192\u0160 (GiB) -label.max.snapshots=\ufffd\u00c5\u2018\u00e5\u0192X\u0192i\u0192b\u0192v\u0192V\u0192\u2021\u0192b\u0192g\ufffd\u201d -label.max.templates=\ufffd\u00c5\u2018\u00e5\u0192e\u0192\u201c\u0192v\u0192\u0152\ufffd[\u0192g\ufffd\u201d -label.max.vms=\ufffd\u00c5\u2018\u00e5\u0192\u2020\ufffd[\u0192U\ufffd[ VM \ufffd\u201d -label.max.volumes=\ufffd\u00c5\u2018\u00e5\u0192{\u0192\u0160\u0192\u2026\ufffd[\u0192\u20ac\ufffd\u201d -label.max.vpcs=\ufffd\u00c5\u2018\u00e5 VPC \ufffd\u201d -label.maximum=\ufffd\u00c5\u2018\u00e5 -label.may.continue=\u2018\u00b1\ufffds\u201a\u00c5\u201a\u00ab\u201a\u00dc\u201a\u00b7\ufffdB -label.memory.allocated=\u0160\u201e\u201a\u00e8\u201c\u2013\u201a\u00c4\ufffd\u00cf\u201a\u00dd\u201a\u00cc\u0192\ufffd\u0192\u201a\u0192\u0160 -label.memory.limits=\u0192\ufffd\u0192\u201a\u0192\u0160\ufffd\u00a7\u0152\u00c0 (MiB) -label.memory.mb=\u0192\ufffd\u0192\u201a\u0192\u0160 (MB) -label.memory.total=\u0192\ufffd\u0192\u201a\u0192\u0160\ufffd\u2021\u0152v -label.memory.used=\u0192\ufffd\u0192\u201a\u0192\u0160\u017dg\u2014p\u2014\u00ca -label.memory=\u0192\ufffd\u0192\u201a\u0192\u0160 -label.menu.accounts=\u0192A\u0192J\u0192E\u0192\u201c\u0192g -label.menu.alerts=\u0192A\u0192\u2030\ufffd[\u0192g -label.menu.all.accounts=\u201a\u00b7\u201a\u00d7\u201a\u00c4\u201a\u00cc\u0192A\u0192J\u0192E\u0192\u201c\u0192g -label.menu.all.instances=\u201a\u00b7\u201a\u00d7\u201a\u00c4\u201a\u00cc\u0192C\u0192\u201c\u0192X\u0192^\u0192\u201c\u0192X -label.menu.community.isos=\u0192R\u0192~\u0192\u2026\u0192j\u0192e\u0192B ISO -label.menu.community.templates=\u0192R\u0192~\u0192\u2026\u0192j\u0192e\u0192B \u0192e\u0192\u201c\u0192v\u0192\u0152\ufffd[\u0192g -label.menu.configuration=\ufffd\\ufffd\u00ac -label.menu.dashboard=\u0192_\u0192b\u0192V\u0192\u2026\u0192{\ufffd[\u0192h -label.menu.destroyed.instances=\u201dj\u0160\u00fc\u201a\u00b3\u201a\u00ea\u201a\u00bd\u0192C\u0192\u201c\u0192X\u0192^\u0192\u201c\u0192X -label.menu.disk.offerings=\u0192f\u0192B\u0192X\u0192N \u0192I\u0192t\u0192@\u0192\u0160\u0192\u201c\u0192O -label.menu.domains=\u0192h\u0192\ufffd\u0192C\u0192\u201c -label.menu.events=\u0192C\u0192x\u0192\u201c\u0192g -label.menu.featured.isos=\u201a\u00a8\u201a\u00b7\u201a\u00b7\u201a\u00df\u201a\u00cc ISO -label.menu.featured.templates=\u201a\u00a8\u201a\u00b7\u201a\u00b7\u201a\u00df\u201a\u00cc\u0192e\u0192\u201c\u0192v\u0192\u0152\ufffd[\u0192g -label.menu.global.settings=\u0192O\u0192\ufffd\ufffd[\u0192o\u0192\u2039\ufffd\u00dd\u2019\u00e8 -label.menu.infrastructure=\u0192C\u0192\u201c\u0192t\u0192\u2030\u0192X\u0192g\u0192\u2030\u0192N\u0192`\u0192\u0192 -label.menu.instances=\u0192C\u0192\u201c\u0192X\u0192^\u0192\u201c\u0192X -label.menu.ipaddresses=IP \u0192A\u0192h\u0192\u0152\u0192X +label.make.project.owner=\u30a2\u30ab\u30a6\u30f3\u30c8\u306e\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u6240\u6709\u8005\u5316 +label.manage.resources=\u30ea\u30bd\u30fc\u30b9\u306e\u7ba1\u7406 +label.management.server=Management Server +label.manage=\u7ba1\u7406 +label.managed=\u7ba1\u7406\u5bfe\u8c61 +label.management.ips=\u7ba1\u7406 IP \u30a2\u30c9\u30ec\u30b9 +label.management=\u7ba1\u7406 +label.max.cpus=\u6700\u5927 CPU \u30b3\u30a2\u6570 +label.max.guest.limit=\u6700\u5927\u30b2\u30b9\u30c8\u5236\u9650 +label.max.memory=\u6700\u5927\u30e1\u30e2\u30ea (MiB) +label.max.networks=\u6700\u5927\u30cd\u30c3\u30c8\u30ef\u30fc\u30af\u6570 +label.max.primary.storage=\u6700\u5927\u30d7\u30e9\u30a4\u30de\u30ea (GiB) +label.max.public.ips=\u6700\u5927\u30d1\u30d6\u30ea\u30c3\u30af IP \u30a2\u30c9\u30ec\u30b9\u6570 +label.max.secondary.storage=\u6700\u5927\u30bb\u30ab\u30f3\u30c0\u30ea (GiB) +label.max.snapshots=\u6700\u5927\u30b9\u30ca\u30c3\u30d7\u30b7\u30e7\u30c3\u30c8\u6570 +label.max.templates=\u6700\u5927\u30c6\u30f3\u30d7\u30ec\u30fc\u30c8\u6570 +label.max.vms=\u6700\u5927\u30e6\u30fc\u30b6\u30fc VM \u6570 +label.max.volumes=\u6700\u5927\u30dc\u30ea\u30e5\u30fc\u30e0\u6570 +label.max.vpcs=\u6700\u5927 VPC \u6570 +label.maximum=\u6700\u5927 +label.may.continue=\u7d9a\u884c\u3067\u304d\u307e\u3059\u3002 +label.memory.allocated=\u5272\u308a\u5f53\u3066\u6e08\u307f\u306e\u30e1\u30e2\u30ea +label.memory.limits=\u30e1\u30e2\u30ea\u5236\u9650 (MiB) +label.memory.mb=\u30e1\u30e2\u30ea (MB) +label.memory.total=\u30e1\u30e2\u30ea\u5408\u8a08 +label.memory.used=\u30e1\u30e2\u30ea\u4f7f\u7528\u91cf +label.memory=\u30e1\u30e2\u30ea +label.menu.accounts=\u30a2\u30ab\u30a6\u30f3\u30c8 +label.menu.alerts=\u30a2\u30e9\u30fc\u30c8 +label.menu.all.accounts=\u3059\u3079\u3066\u306e\u30a2\u30ab\u30a6\u30f3\u30c8 +label.menu.all.instances=\u3059\u3079\u3066\u306e\u30a4\u30f3\u30b9\u30bf\u30f3\u30b9 +label.menu.community.isos=\u30b3\u30df\u30e5\u30cb\u30c6\u30a3 ISO +label.menu.community.templates=\u30b3\u30df\u30e5\u30cb\u30c6\u30a3 \u30c6\u30f3\u30d7\u30ec\u30fc\u30c8 +label.menu.configuration=\u69cb\u6210 +label.menu.dashboard=\u30c0\u30c3\u30b7\u30e5\u30dc\u30fc\u30c9 +label.menu.destroyed.instances=\u7834\u68c4\u3055\u308c\u305f\u30a4\u30f3\u30b9\u30bf\u30f3\u30b9 +label.menu.disk.offerings=\u30c7\u30a3\u30b9\u30af \u30aa\u30d5\u30a1\u30ea\u30f3\u30b0 +label.menu.domains=\u30c9\u30e1\u30a4\u30f3 +label.menu.events=\u30a4\u30d9\u30f3\u30c8 +label.menu.featured.isos=\u304a\u3059\u3059\u3081\u306e ISO +label.menu.featured.templates=\u304a\u3059\u3059\u3081\u306e\u30c6\u30f3\u30d7\u30ec\u30fc\u30c8 +label.menu.global.settings=\u30b0\u30ed\u30fc\u30d0\u30eb\u8a2d\u5b9a +label.menu.infrastructure=\u30a4\u30f3\u30d5\u30e9\u30b9\u30c8\u30e9\u30af\u30c1\u30e3 +label.menu.instances=\u30a4\u30f3\u30b9\u30bf\u30f3\u30b9 +label.menu.ipaddresses=IP \u30a2\u30c9\u30ec\u30b9 label.menu.isos=ISO -label.menu.my.accounts=\u0192}\u0192C \u0192A\u0192J\u0192E\u0192\u201c\u0192g -label.menu.my.instances=\u0192}\u0192C \u0192C\u0192\u201c\u0192X\u0192^\u0192\u201c\u0192X -label.menu.my.isos=\u0192}\u0192C ISO -label.menu.my.templates=\u0192}\u0192C \u0192e\u0192\u201c\u0192v\u0192\u0152\ufffd[\u0192g -label.menu.network.offerings=\u0192l\u0192b\u0192g\u0192\ufffd\ufffd[\u0192N \u0192I\u0192t\u0192@\u0192\u0160\u0192\u201c\u0192O -label.menu.network=\u0192l\u0192b\u0192g\u0192\ufffd\ufffd[\u0192N -label.menu.physical.resources=\u2022\u00a8\u2014\ufffd\u0192\u0160\u0192\\ufffd[\u0192X -label.menu.regions=\u2014\u00cc\u02c6\u00e6 -label.menu.running.instances=\u017d\u00c0\ufffds\u2019\u2020\u201a\u00cc\u0192C\u0192\u201c\u0192X\u0192^\u0192\u201c\u0192X -label.menu.security.groups=\u0192Z\u0192L\u0192\u2026\u0192\u0160\u0192e\u0192B \u0192O\u0192\u2039\ufffd[\u0192v -label.menu.service.offerings=\u0192T\ufffd[\u0192r\u0192X \u0192I\u0192t\u0192@\u0192\u0160\u0192\u201c\u0192O -label.menu.snapshots=\u0192X\u0192i\u0192b\u0192v\u0192V\u0192\u2021\u0192b\u0192g -label.menu.stopped.instances=\u2019\u00e2\u017d~\u201a\u00b3\u201a\u00ea\u201a\u00bd\u0192C\u0192\u201c\u0192X\u0192^\u0192\u201c\u0192X -label.menu.storage=\u0192X\u0192g\u0192\u0152\ufffd[\u0192W -label.menu.system.service.offerings=\u0192V\u0192X\u0192e\u0192\u20ac \u0192I\u0192t\u0192@\u0192\u0160\u0192\u201c\u0192O -label.menu.system.vms=\u0192V\u0192X\u0192e\u0192\u20ac VM -label.menu.system=\u0192V\u0192X\u0192e\u0192\u20ac -label.menu.templates=\u0192e\u0192\u201c\u0192v\u0192\u0152\ufffd[\u0192g -label.menu.virtual.appliances=\u2030\u00bc\u2018z\u0192A\u0192v\u0192\u2030\u0192C\u0192A\u0192\u201c\u0192X -label.menu.virtual.resources=\u2030\u00bc\u2018z\u0192\u0160\u0192\\ufffd[\u0192X -label.menu.volumes=\u0192{\u0192\u0160\u0192\u2026\ufffd[\u0192\u20ac -label.migrate.instance.to.host=\u2022\u00ca\u201a\u00cc\u0192z\u0192X\u0192g\u201a\u00d6\u201a\u00cc\u0192C\u0192\u201c\u0192X\u0192^\u0192\u201c\u0192X\u201a\u00cc\u02c6\u00da\ufffds -label.migrate.instance.to.ps=\u2022\u00ca\u201a\u00cc\u0192v\u0192\u2030\u0192C\u0192}\u0192\u0160 \u0192X\u0192g\u0192\u0152\ufffd[\u0192W\u201a\u00d6\u201a\u00cc\u0192C\u0192\u201c\u0192X\u0192^\u0192\u201c\u0192X\u201a\u00cc\u02c6\u00da\ufffds -label.migrate.instance.to=\u0192C\u0192\u201c\u0192X\u0192^\u0192\u201c\u0192X\u201a\u00cc\u02c6\u00da\ufffds\ufffd\u00e6: -label.migrate.router.to=\u0192\u2039\ufffd[\u0192^\ufffd[\u201a\u00cc\u02c6\u00da\ufffds\ufffd\u00e6: -label.migrate.systemvm.to=\u0192V\u0192X\u0192e\u0192\u20ac VM \u201a\u00cc\u02c6\u00da\ufffds\ufffd\u00e6: -label.migrate.to.host=\u0192z\u0192X\u0192g\u201a\u00d6\u02c6\u00da\ufffds -label.migrate.to.storage=\u0192X\u0192g\u0192\u0152\ufffd[\u0192W\u201a\u00d6\u02c6\u00da\ufffds -label.migrate.volume=\u2022\u00ca\u201a\u00cc\u0192v\u0192\u2030\u0192C\u0192}\u0192\u0160 \u0192X\u0192g\u0192\u0152\ufffd[\u0192W\u201a\u00d6\u201a\u00cc\u0192{\u0192\u0160\u0192\u2026\ufffd[\u0192\u20ac\u201a\u00cc\u02c6\u00da\ufffds -label.minimum=\ufffd\u00c5\ufffd\u00ac -label.minute.past.hour=\u2022\u00aa (\u2013\u02c6\u017d\u017e) -label.monday=\u0152\u017d\u2014j\u201c\u00fa -label.monthly=\u2013\u02c6\u0152\u017d -label.more.templates=\u201a\u00bb\u201a\u00cc\u201a\u00d9\u201a\u00a9\u201a\u00cc\u0192e\u0192\u201c\u0192v\u0192\u0152\ufffd[\u0192g -label.move.down.row=1 \ufffds\u2030\u00ba\u201a\u00c9\u02c6\u00da\u201c\u00ae -label.move.to.bottom=\ufffd\u00c5\u2030\u00ba\u02c6\u00ca\u201a\u00c9\u02c6\u00da\u201c\u00ae -label.move.to.top=\ufffd\u00c5\ufffd\u00e3\u02c6\u00ca\u201a\u00c9\u02c6\u00da\u201c\u00ae -label.move.up.row=1 \ufffds\ufffd\u00e3\u201a\u00c9\u02c6\u00da\u201c\u00ae -label.my.account=\u0192}\u0192C \u0192A\u0192J\u0192E\u0192\u201c\u0192g -label.my.network=\u0192}\u0192C \u0192l\u0192b\u0192g\u0192\ufffd\ufffd[\u0192N -label.my.templates=\u0192}\u0192C \u0192e\u0192\u201c\u0192v\u0192\u0152\ufffd[\u0192g -label.name.optional=\u2013\u00bc\u2018O (\u0192I\u0192v\u0192V\u0192\u2021\u0192\u201c) -label.name=\u2013\u00bc\u2018O -label.nat.port.range=NAT \u0192|\ufffd[\u0192g\u201a\u00cc\u201d\u00cd\u02c6\u00cd -label.netmask=\u0192l\u0192b\u0192g\u0192}\u0192X\u0192N +label.menu.my.accounts=\u30de\u30a4 \u30a2\u30ab\u30a6\u30f3\u30c8 +label.menu.my.instances=\u30de\u30a4 \u30a4\u30f3\u30b9\u30bf\u30f3\u30b9 +label.menu.my.isos=\u30de\u30a4 ISO +label.menu.my.templates=\u30de\u30a4 \u30c6\u30f3\u30d7\u30ec\u30fc\u30c8 +label.menu.network.offerings=\u30cd\u30c3\u30c8\u30ef\u30fc\u30af \u30aa\u30d5\u30a1\u30ea\u30f3\u30b0 +label.menu.network=\u30cd\u30c3\u30c8\u30ef\u30fc\u30af +label.menu.physical.resources=\u7269\u7406\u30ea\u30bd\u30fc\u30b9 +label.menu.regions=\u9818\u57df +label.menu.running.instances=\u5b9f\u884c\u4e2d\u306e\u30a4\u30f3\u30b9\u30bf\u30f3\u30b9 +label.menu.security.groups=\u30bb\u30ad\u30e5\u30ea\u30c6\u30a3 \u30b0\u30eb\u30fc\u30d7 +label.menu.service.offerings=\u30b5\u30fc\u30d3\u30b9 \u30aa\u30d5\u30a1\u30ea\u30f3\u30b0 +label.menu.snapshots=\u30b9\u30ca\u30c3\u30d7\u30b7\u30e7\u30c3\u30c8 +label.menu.stopped.instances=\u505c\u6b62\u3055\u308c\u305f\u30a4\u30f3\u30b9\u30bf\u30f3\u30b9 +label.menu.storage=\u30b9\u30c8\u30ec\u30fc\u30b8 +label.menu.system.service.offerings=\u30b7\u30b9\u30c6\u30e0 \u30aa\u30d5\u30a1\u30ea\u30f3\u30b0 +label.menu.system.vms=\u30b7\u30b9\u30c6\u30e0 VM +label.menu.system=\u30b7\u30b9\u30c6\u30e0 +label.menu.templates=\u30c6\u30f3\u30d7\u30ec\u30fc\u30c8 +label.menu.virtual.appliances=\u4eee\u60f3\u30a2\u30d7\u30e9\u30a4\u30a2\u30f3\u30b9 +label.menu.virtual.resources=\u4eee\u60f3\u30ea\u30bd\u30fc\u30b9 +label.menu.volumes=\u30dc\u30ea\u30e5\u30fc\u30e0 +label.migrate.instance.to.host=\u5225\u306e\u30db\u30b9\u30c8\u3078\u306e\u30a4\u30f3\u30b9\u30bf\u30f3\u30b9\u306e\u79fb\u884c +label.migrate.instance.to.ps=\u5225\u306e\u30d7\u30e9\u30a4\u30de\u30ea \u30b9\u30c8\u30ec\u30fc\u30b8\u3078\u306e\u30a4\u30f3\u30b9\u30bf\u30f3\u30b9\u306e\u79fb\u884c +label.migrate.instance.to=\u30a4\u30f3\u30b9\u30bf\u30f3\u30b9\u306e\u79fb\u884c\u5148: +label.migrate.router.to=\u30eb\u30fc\u30bf\u30fc\u306e\u79fb\u884c\u5148: +label.migrate.systemvm.to=\u30b7\u30b9\u30c6\u30e0 VM \u306e\u79fb\u884c\u5148: +label.migrate.to.host=\u30db\u30b9\u30c8\u3078\u79fb\u884c +label.migrate.to.storage=\u30b9\u30c8\u30ec\u30fc\u30b8\u3078\u79fb\u884c +label.migrate.volume=\u5225\u306e\u30d7\u30e9\u30a4\u30de\u30ea \u30b9\u30c8\u30ec\u30fc\u30b8\u3078\u306e\u30dc\u30ea\u30e5\u30fc\u30e0\u306e\u79fb\u884c +label.minimum=\u6700\u5c0f +label.minute.past.hour=\u5206 (\u6bce\u6642) +label.monday=\u6708\u66dc\u65e5 +label.monthly=\u6bce\u6708 +label.more.templates=\u305d\u306e\u307b\u304b\u306e\u30c6\u30f3\u30d7\u30ec\u30fc\u30c8 +label.move.down.row=1 \u884c\u4e0b\u306b\u79fb\u52d5 +label.move.to.bottom=\u6700\u4e0b\u4f4d\u306b\u79fb\u52d5 +label.move.to.top=\u6700\u4e0a\u4f4d\u306b\u79fb\u52d5 +label.move.up.row=1 \u884c\u4e0a\u306b\u79fb\u52d5 +label.my.account=\u30de\u30a4 \u30a2\u30ab\u30a6\u30f3\u30c8 +label.my.network=\u30de\u30a4 \u30cd\u30c3\u30c8\u30ef\u30fc\u30af +label.my.templates=\u30de\u30a4 \u30c6\u30f3\u30d7\u30ec\u30fc\u30c8 +label.name.optional=\u540d\u524d (\u30aa\u30d7\u30b7\u30e7\u30f3) +label.name=\u540d\u524d +label.nat.port.range=NAT \u30dd\u30fc\u30c8\u306e\u7bc4\u56f2 +label.netmask=\u30cd\u30c3\u30c8\u30de\u30b9\u30af label.netScaler=NetScaler -label.network.ACL.total=\u0192l\u0192b\u0192g\u0192\ufffd\ufffd[\u0192N ACL \ufffd\u2021\u0152v -label.network.ACL=\u0192l\u0192b\u0192g\u0192\ufffd\ufffd[\u0192N ACL -label.network.ACLs=\u0192l\u0192b\u0192g\u0192\ufffd\ufffd[\u0192N ACL -label.network.desc=\u0192l\u0192b\u0192g\u0192\ufffd\ufffd[\u0192N\u201a\u00cc\ufffd\u00e0\u2013\u00be -label.network.device.type=\u0192l\u0192b\u0192g\u0192\ufffd\ufffd[\u0192N \u0192f\u0192o\u0192C\u0192X\u201a\u00cc\u017d\u00ed\u2014\u00de -label.network.device=\u0192l\u0192b\u0192g\u0192\ufffd\ufffd[\u0192N \u0192f\u0192o\u0192C\u0192X -label.network.domain.text=\u0192l\u0192b\u0192g\u0192\ufffd\ufffd[\u0192N \u0192h\u0192\ufffd\u0192C\u0192\u201c -label.network.domain=\u0192l\u0192b\u0192g\u0192\ufffd\ufffd[\u0192N \u0192h\u0192\ufffd\u0192C\u0192\u201c -label.network.id=\u0192l\u0192b\u0192g\u0192\ufffd\ufffd[\u0192N ID -label.network.label.display.for.blank.value=\u0192f\u0192t\u0192H\u0192\u2039\u0192g \u0192Q\ufffd[\u0192g\u0192E\u0192F\u0192C\u201a\u00f0\u017dg\u2014p -label.network.limits=\u0192l\u0192b\u0192g\u0192\ufffd\ufffd[\u0192N\ufffd\u00a7\u0152\u00c0 -label.network.name=\u0192l\u0192b\u0192g\u0192\ufffd\ufffd[\u0192N\u2013\u00bc -label.network.offering.display.text=\u0192l\u0192b\u0192g\u0192\ufffd\ufffd[\u0192N \u0192I\u0192t\u0192@\u0192\u0160\u0192\u201c\u0192O\u2022\\u017d\u00a6\u0192e\u0192L\u0192X\u0192g -label.network.offering.id=\u0192l\u0192b\u0192g\u0192\ufffd\ufffd[\u0192N \u0192I\u0192t\u0192@\u0192\u0160\u0192\u201c\u0192O ID -label.network.offering.name=\u0192l\u0192b\u0192g\u0192\ufffd\ufffd[\u0192N \u0192I\u0192t\u0192@\u0192\u0160\u0192\u201c\u0192O\u2013\u00bc -label.network.offering=\u0192l\u0192b\u0192g\u0192\ufffd\ufffd[\u0192N \u0192I\u0192t\u0192@\u0192\u0160\u0192\u201c\u0192O -label.network.rate.megabytes=\u0192l\u0192b\u0192g\u0192\ufffd\ufffd[\u0192N\u2018\u00ac\u201cx (MB/\u2022b) -label.network.rate=\u0192l\u0192b\u0192g\u0192\ufffd\ufffd[\u0192N\u2018\u00ac\u201cx (MB/\u2022b) -label.network.read=\u0192l\u0192b\u0192g\u0192\ufffd\ufffd[\u0192N\u201c\u00c7\u201a\u00dd\u017d\u00e6\u201a\u00e8 -label.network.service.providers=\u0192l\u0192b\u0192g\u0192\ufffd\ufffd[\u0192N \u0192T\ufffd[\u0192r\u0192X \u0192v\u0192\ufffd\u0192o\u0192C\u0192_\ufffd[ -label.network.type=\u0192l\u0192b\u0192g\u0192\ufffd\ufffd[\u0192N\u201a\u00cc\u017d\u00ed\u2014\u00de -label.network.write=\u0192l\u0192b\u0192g\u0192\ufffd\ufffd[\u0192N\ufffd\u2018\u201a\u00ab\ufffd\u017e\u201a\u00dd -label.network=\u0192l\u0192b\u0192g\u0192\ufffd\ufffd[\u0192N -label.networking.and.security=\u0192l\u0192b\u0192g\u0192\ufffd\ufffd[\u0192N\u201a\u00c6\u0192Z\u0192L\u0192\u2026\u0192\u0160\u0192e\u0192B -label.networks=\u0192l\u0192b\u0192g\u0192\ufffd\ufffd[\u0192N -label.new.password=\ufffdV\u201a\u00b5\u201a\u00a2\u0192p\u0192X\u0192\ufffd\ufffd[\u0192h -label.new.project=\ufffdV\u201a\u00b5\u201a\u00a2\u0192v\u0192\ufffd\u0192W\u0192F\u0192N\u0192g -label.new.vm=\ufffdV\u201a\u00b5\u201a\u00a2 VM -label.new=\ufffdV\u2039K -label.next=\u017d\u0178\u201a\u00d6 +label.network.ACL.total=\u30cd\u30c3\u30c8\u30ef\u30fc\u30af ACL \u5408\u8a08 +label.network.ACL=\u30cd\u30c3\u30c8\u30ef\u30fc\u30af ACL +label.network.ACLs=\u30cd\u30c3\u30c8\u30ef\u30fc\u30af ACL +label.network.desc=\u30cd\u30c3\u30c8\u30ef\u30fc\u30af\u306e\u8aac\u660e +label.network.device.type=\u30cd\u30c3\u30c8\u30ef\u30fc\u30af \u30c7\u30d0\u30a4\u30b9\u306e\u7a2e\u985e +label.network.device=\u30cd\u30c3\u30c8\u30ef\u30fc\u30af \u30c7\u30d0\u30a4\u30b9 +label.network.domain.text=\u30cd\u30c3\u30c8\u30ef\u30fc\u30af \u30c9\u30e1\u30a4\u30f3 +label.network.domain=\u30cd\u30c3\u30c8\u30ef\u30fc\u30af \u30c9\u30e1\u30a4\u30f3 +label.network.id=\u30cd\u30c3\u30c8\u30ef\u30fc\u30af ID +label.network.label.display.for.blank.value=\u30c7\u30d5\u30a9\u30eb\u30c8 \u30b2\u30fc\u30c8\u30a6\u30a7\u30a4\u3092\u4f7f\u7528 +label.network.limits=\u30cd\u30c3\u30c8\u30ef\u30fc\u30af\u5236\u9650 +label.network.name=\u30cd\u30c3\u30c8\u30ef\u30fc\u30af\u540d +label.network.offering.display.text=\u30cd\u30c3\u30c8\u30ef\u30fc\u30af \u30aa\u30d5\u30a1\u30ea\u30f3\u30b0\u8868\u793a\u30c6\u30ad\u30b9\u30c8 +label.network.offering.id=\u30cd\u30c3\u30c8\u30ef\u30fc\u30af \u30aa\u30d5\u30a1\u30ea\u30f3\u30b0 ID +label.network.offering.name=\u30cd\u30c3\u30c8\u30ef\u30fc\u30af \u30aa\u30d5\u30a1\u30ea\u30f3\u30b0\u540d +label.network.offering=\u30cd\u30c3\u30c8\u30ef\u30fc\u30af \u30aa\u30d5\u30a1\u30ea\u30f3\u30b0 +label.network.rate.megabytes=\u30cd\u30c3\u30c8\u30ef\u30fc\u30af\u901f\u5ea6 (MB/\u79d2) +label.network.rate=\u30cd\u30c3\u30c8\u30ef\u30fc\u30af\u901f\u5ea6 (MB/\u79d2) +label.network.read=\u30cd\u30c3\u30c8\u30ef\u30fc\u30af\u8aad\u307f\u53d6\u308a +label.network.service.providers=\u30cd\u30c3\u30c8\u30ef\u30fc\u30af \u30b5\u30fc\u30d3\u30b9 \u30d7\u30ed\u30d0\u30a4\u30c0\u30fc +label.network.type=\u30cd\u30c3\u30c8\u30ef\u30fc\u30af\u306e\u7a2e\u985e +label.network.write=\u30cd\u30c3\u30c8\u30ef\u30fc\u30af\u66f8\u304d\u8fbc\u307f +label.network=\u30cd\u30c3\u30c8\u30ef\u30fc\u30af +label.networking.and.security=\u30cd\u30c3\u30c8\u30ef\u30fc\u30af\u3068\u30bb\u30ad\u30e5\u30ea\u30c6\u30a3 +label.networks=\u30cd\u30c3\u30c8\u30ef\u30fc\u30af +label.new.password=\u65b0\u3057\u3044\u30d1\u30b9\u30ef\u30fc\u30c9 +label.new.project=\u65b0\u3057\u3044\u30d7\u30ed\u30b8\u30a7\u30af\u30c8 +label.new.vm=\u65b0\u3057\u3044 VM +label.new=\u65b0\u898f +label.next=\u6b21\u3078 label.nexusVswitch=Nexus 1000V -label.nfs.server=NFS \u0192T\ufffd[\u0192o\ufffd[ -label.nfs.storage=NFS \u0192X\u0192g\u0192\u0152\ufffd[\u0192W +label.nfs.server=NFS \u30b5\u30fc\u30d0\u30fc +label.nfs.storage=NFS \u30b9\u30c8\u30ec\u30fc\u30b8 label.nfs=NFS -label.nic.adapter.type=NIC \u0192A\u0192_\u0192v\u0192^\ufffd[\u201a\u00cc\u017d\u00ed\u2014\u00de -label.nicira.controller.address=\u0192R\u0192\u201c\u0192g\u0192\ufffd\ufffd[\u0192\u2030\ufffd[ \u0192A\u0192h\u0192\u0152\u0192X -label.nicira.l3gatewayserviceuuid=L3 \u0192Q\ufffd[\u0192g\u0192E\u0192F\u0192C \u0192T\ufffd[\u0192r\u0192X\u201a\u00cc UUID -label.nicira.transportzoneuuid=Transport Zone Uuid -label.brocade.vcs.address=Vcs Switch Address +label.nic.adapter.type=NIC \u30a2\u30c0\u30d7\u30bf\u30fc\u306e\u7a2e\u985e +label.nicira.controller.address=\u30b3\u30f3\u30c8\u30ed\u30fc\u30e9\u30fc \u30a2\u30c9\u30ec\u30b9 +label.nicira.l3gatewayserviceuuid=L3 \u30b2\u30fc\u30c8\u30a6\u30a7\u30a4 \u30b5\u30fc\u30d3\u30b9\u306e UUID +label.nicira.transportzoneuuid=\u30c8\u30e9\u30f3\u30b9\u30dd\u30fc\u30c8 \u30be\u30fc\u30f3\u306e UUID +label.brocade.vcs.address=VCS \u30b9\u30a4\u30c3\u30c1 \u30a2\u30c9\u30ec\u30b9 label.nics=NIC -label.no.actions=\u017d\u00c0\ufffds\u201a\u00c5\u201a\u00ab\u201a\u00e9\u2018\u20ac\ufffd\u00ec\u201a\u00cd\u201a\u00a0\u201a\u00e8\u201a\u00dc\u201a\u00b9\u201a\u00f1 -label.no.alerts=\ufffd\u00c5\u2039\u00df\u201a\u00cc\u0192A\u0192\u2030\ufffd[\u0192g\u201a\u00cd\u201a\u00a0\u201a\u00e8\u201a\u00dc\u201a\u00b9\u201a\u00f1 -label.no.data=\u2022\\u017d\u00a6\u201a\u00b7\u201a\u00e9\u0192f\ufffd[\u0192^\u201a\u00aa\u201a\u00a0\u201a\u00e8\u201a\u00dc\u201a\u00b9\u201a\u00f1 -label.no.errors=\ufffd\u00c5\u2039\u00df\u201a\u00cc\u0192G\u0192\u2030\ufffd[\u201a\u00cd\u201a\u00a0\u201a\u00e8\u201a\u00dc\u201a\u00b9\u201a\u00f1 -label.no.isos=\u017dg\u2014p\u201a\u00c5\u201a\u00ab\u201a\u00e9 ISO \u201a\u00cd\u201a\u00a0\u201a\u00e8\u201a\u00dc\u201a\u00b9\u201a\u00f1 -label.no.items=\u017dg\u2014p\u201a\u00c5\u201a\u00ab\u201a\u00e9\ufffd\u20ac\u2013\u00da\u201a\u00cd\u201a\u00a0\u201a\u00e8\u201a\u00dc\u201a\u00b9\u201a\u00f1 -label.no.security.groups=\u017dg\u2014p\u201a\u00c5\u201a\u00ab\u201a\u00e9\u0192Z\u0192L\u0192\u2026\u0192\u0160\u0192e\u0192B \u0192O\u0192\u2039\ufffd[\u0192v\u201a\u00cd\u201a\u00a0\u201a\u00e8\u201a\u00dc\u201a\u00b9\u201a\u00f1 -label.no.thanks=\ufffd\u00dd\u2019\u00e8\u201a\u00b5\u201a\u00c8\u201a\u00a2 -label.no=\u201a\u00a2\u201a\u00a2\u201a\u00a6 -label.none=\u201a\u00c8\u201a\u00b5 -label.not.found=\u0152\u00a9\u201a\u00c2\u201a\u00a9\u201a\u00e8\u201a\u00dc\u201a\u00b9\u201a\u00f1 -label.notifications=\u2019\u00ca\u2019m -label.num.cpu.cores=CPU \u0192R\u0192A\ufffd\u201d -label.number.of.clusters=\u0192N\u0192\u2030\u0192X\u0192^\ufffd[\ufffd\u201d -label.number.of.hosts=\u0192z\u0192X\u0192g\ufffd\u201d -label.number.of.pods=\u0192|\u0192b\u0192h\ufffd\u201d -label.number.of.system.vms=\u0192V\u0192X\u0192e\u0192\u20ac VM \ufffd\u201d -label.number.of.virtual.routers=\u2030\u00bc\u2018z\u0192\u2039\ufffd[\u0192^\ufffd[\ufffd\u201d -label.number.of.zones=\u0192]\ufffd[\u0192\u201c\ufffd\u201d -label.numretries=\ufffd\u00c4\u017d\u017d\ufffds\u2030\u00f1\ufffd\u201d +label.no.actions=\u5b9f\u884c\u3067\u304d\u308b\u64cd\u4f5c\u306f\u3042\u308a\u307e\u305b\u3093 +label.no.alerts=\u6700\u8fd1\u306e\u30a2\u30e9\u30fc\u30c8\u306f\u3042\u308a\u307e\u305b\u3093 +label.no.data=\u8868\u793a\u3059\u308b\u30c7\u30fc\u30bf\u304c\u3042\u308a\u307e\u305b\u3093 +label.no.errors=\u6700\u8fd1\u306e\u30a8\u30e9\u30fc\u306f\u3042\u308a\u307e\u305b\u3093 +label.no.isos=\u4f7f\u7528\u3067\u304d\u308b ISO \u306f\u3042\u308a\u307e\u305b\u3093 +label.no.items=\u4f7f\u7528\u3067\u304d\u308b\u9805\u76ee\u306f\u3042\u308a\u307e\u305b\u3093 +label.no.security.groups=\u4f7f\u7528\u3067\u304d\u308b\u30bb\u30ad\u30e5\u30ea\u30c6\u30a3 \u30b0\u30eb\u30fc\u30d7\u306f\u3042\u308a\u307e\u305b\u3093 +label.no.thanks=\u8a2d\u5b9a\u3057\u306a\u3044 +label.no=\u3044\u3044\u3048 +label.none=\u306a\u3057 +label.not.found=\u898b\u3064\u304b\u308a\u307e\u305b\u3093 +label.notifications=\u901a\u77e5 +label.num.cpu.cores=CPU \u30b3\u30a2\u6570 +label.number.of.clusters=\u30af\u30e9\u30b9\u30bf\u30fc\u6570 +label.number.of.hosts=\u30db\u30b9\u30c8\u6570 +label.number.of.pods=\u30dd\u30c3\u30c9\u6570 +label.number.of.system.vms=\u30b7\u30b9\u30c6\u30e0 VM \u6570 +label.number.of.virtual.routers=\u4eee\u60f3\u30eb\u30fc\u30bf\u30fc\u6570 +label.number.of.zones=\u30be\u30fc\u30f3\u6570 +label.numretries=\u518d\u8a66\u884c\u56de\u6570 label.ocfs2=OCFS2 -label.offer.ha=\ufffd\u201a\u2030\u00c2\u2014p\ufffd\u00ab\u201a\u00f0\u2019\u00f1\u2039\u0178\u201a\u00b7\u201a\u00e9 +label.offer.ha=\u9ad8\u53ef\u7528\u6027\u3092\u63d0\u4f9b\u3059\u308b label.ok=OK -label.optional=\u0192I\u0192v\u0192V\u0192\u2021\u0192\u201c -label.order=\ufffd\u2021\ufffd\u02dc -label.os.preference=OS \u0160\u00ee\u2013{\ufffd\u00dd\u2019\u00e8 -label.os.type=OS \u201a\u00cc\u017d\u00ed\u2014\u00de -label.owned.public.ips=\ufffd\u0160\u2014L\u201a\u00b7\u201a\u00e9\u0192p\u0192u\u0192\u0160\u0192b\u0192N IP \u0192A\u0192h\u0192\u0152\u0192X -label.owner.account=\ufffd\u0160\u2014L\u017d\u00d2\u0192A\u0192J\u0192E\u0192\u201c\u0192g -label.owner.domain=\ufffd\u0160\u2014L\u017d\u00d2\u0192h\u0192\ufffd\u0192C\u0192\u201c -label.PA.log.profile=Palo Alto \u0192\ufffd\u0192O \u0192v\u0192\ufffd\u0192t\u0192@\u0192C\u0192\u2039 -label.PA.threat.profile=Palo Alto \u2039\u00ba\u02c6\u00d0\u0192v\u0192\ufffd\u0192t\u0192@\u0192C\u0192\u2039 -label.parent.domain=\ufffde\u0192h\u0192\ufffd\u0192C\u0192\u201c -label.password.enabled=\u0192p\u0192X\u0192\ufffd\ufffd[\u0192h\u0160\u00c7\u2014\ufffd\u2014L\u0152\u00f8 -label.password=\u0192p\u0192X\u0192\ufffd\ufffd[\u0192h -label.path=\u0192p\u0192X +label.optional=\u30aa\u30d7\u30b7\u30e7\u30f3 +label.order=\u9806\u5e8f +label.os.preference=OS \u57fa\u672c\u8a2d\u5b9a +label.os.type=OS \u306e\u7a2e\u985e +label.owned.public.ips=\u6240\u6709\u3059\u308b\u30d1\u30d6\u30ea\u30c3\u30af IP \u30a2\u30c9\u30ec\u30b9 +label.owner.account=\u6240\u6709\u8005\u30a2\u30ab\u30a6\u30f3\u30c8 +label.owner.domain=\u6240\u6709\u8005\u30c9\u30e1\u30a4\u30f3 +label.PA.log.profile=Palo Alto \u30ed\u30b0 \u30d7\u30ed\u30d5\u30a1\u30a4\u30eb +label.PA.threat.profile=Palo Alto \u8105\u5a01\u30d7\u30ed\u30d5\u30a1\u30a4\u30eb +label.parent.domain=\u89aa\u30c9\u30e1\u30a4\u30f3 +label.password.enabled=\u30d1\u30b9\u30ef\u30fc\u30c9\u7ba1\u7406\u6709\u52b9 +label.password=\u30d1\u30b9\u30ef\u30fc\u30c9 +label.path=\u30d1\u30b9 label.perfect.forward.secrecy=Perfect Forward Secrecy -label.physical.network.ID=\u2022\u00a8\u2014\ufffd\u0192l\u0192b\u0192g\u0192\ufffd\ufffd[\u0192N ID -label.physical.network=\u2022\u00a8\u2014\ufffd\u0192l\u0192b\u0192g\u0192\ufffd\ufffd[\u0192N -label.PING.CIFS.password=PING CIFS \u0192p\u0192X\u0192\ufffd\ufffd[\u0192h -label.PING.CIFS.username=PING CIFS \u0192\u2020\ufffd[\u0192U\ufffd[\u2013\u00bc -label.PING.dir=PING \u0192f\u0192B\u0192\u0152\u0192N\u0192g\u0192\u0160 -label.PING.storage.IP=PING \u2018\u00ce\ufffd\u00db\u201a\u00cc\u0192X\u0192g\u0192\u0152\ufffd[\u0192W IP \u0192A\u0192h\u0192\u0152\u0192X -label.please.specify.netscaler.info=NetScaler \ufffd\u00ee\u2022\u00f1\u201a\u00f0\u017dw\u2019\u00e8\u201a\u00b5\u201a\u00c4\u201a\u00ad\u201a\u00be\u201a\u00b3\u201a\u00a2 -label.please.wait=\u201a\u00a8\u2018\u00d2\u201a\u00bf\u201a\u00ad\u201a\u00be\u201a\u00b3\u201a\u00a2 -label.plugin.details=\u0192v\u0192\u2030\u0192O\u0192C\u0192\u201c\u201a\u00cc\ufffd\u00da\ufffd\u00d7 -label.plugins=\u0192v\u0192\u2030\u0192O\u0192C\u0192\u201c -label.pod.name=Pod name -label.pod=\u0192|\u0192b\u0192h -label.pods=\u0192|\u0192b\u0192h -label.port.forwarding.policies=\u0192|\ufffd[\u0192g\u201c]\u2018\u2014\u0192|\u0192\u0160\u0192V\ufffd[ -label.port.forwarding=\u0192|\ufffd[\u0192g\u201c]\u2018\u2014 -label.port.range=\u0192|\ufffd[\u0192g\u201a\u00cc\u201d\u00cd\u02c6\u00cd +label.physical.network.ID=\u7269\u7406\u30cd\u30c3\u30c8\u30ef\u30fc\u30af ID +label.physical.network=\u7269\u7406\u30cd\u30c3\u30c8\u30ef\u30fc\u30af +label.PING.CIFS.password=PING CIFS \u30d1\u30b9\u30ef\u30fc\u30c9 +label.PING.CIFS.username=PING CIFS \u30e6\u30fc\u30b6\u30fc\u540d +label.PING.dir=PING \u30c7\u30a3\u30ec\u30af\u30c8\u30ea +label.PING.storage.IP=PING \u5bfe\u8c61\u306e\u30b9\u30c8\u30ec\u30fc\u30b8 IP \u30a2\u30c9\u30ec\u30b9 +label.please.specify.netscaler.info=NetScaler \u60c5\u5831\u3092\u6307\u5b9a\u3057\u3066\u304f\u3060\u3055\u3044 +label.please.wait=\u304a\u5f85\u3061\u304f\u3060\u3055\u3044 +label.plugin.details=\u30d7\u30e9\u30b0\u30a4\u30f3\u306e\u8a73\u7d30 +label.plugins=\u30d7\u30e9\u30b0\u30a4\u30f3 +label.pod.name=\u30dd\u30c3\u30c9\u540d +label.pod=\u30dd\u30c3\u30c9 +label.pods=\u30dd\u30c3\u30c9 +label.port.forwarding.policies=\u30dd\u30fc\u30c8\u8ee2\u9001\u30dd\u30ea\u30b7\u30fc +label.port.forwarding=\u30dd\u30fc\u30c8\u8ee2\u9001 +label.port.range=\u30dd\u30fc\u30c8\u306e\u7bc4\u56f2 label.PreSetup=PreSetup -label.prev=\u2013\u00df\u201a\u00e9 -label.previous=\u2013\u00df\u201a\u00e9 -label.primary.allocated=\u0160\u201e\u201a\u00e8\u201c\u2013\u201a\u00c4\ufffd\u00cf\u201a\u00dd\u201a\u00cc\u0192v\u0192\u2030\u0192C\u0192}\u0192\u0160 \u0192X\u0192g\u0192\u0152\ufffd[\u0192W -label.primary.network=\u0192v\u0192\u2030\u0192C\u0192}\u0192\u0160 \u0192l\u0192b\u0192g\u0192\ufffd\ufffd[\u0192N -label.primary.storage.count=\u0192v\u0192\u2030\u0192C\u0192}\u0192\u0160 \u0192X\u0192g\u0192\u0152\ufffd[\u0192W \u0192v\ufffd[\u0192\u2039 -label.primary.storage.limits=\u0192v\u0192\u2030\u0192C\u0192}\u0192\u0160 \u0192X\u0192g\u0192\u0152\ufffd[\u0192W\ufffd\u00a7\u0152\u00c0 (GiB) -label.primary.storage=\u0192v\u0192\u2030\u0192C\u0192}\u0192\u0160 \u0192X\u0192g\u0192\u0152\ufffd[\u0192W -label.primary.used=\u0192v\u0192\u2030\u0192C\u0192}\u0192\u0160 \u0192X\u0192g\u0192\u0152\ufffd[\u0192W\u017dg\u2014p\u2014\u00ca -label.private.Gateway=\u0192v\u0192\u2030\u0192C\u0192x\ufffd[\u0192g \u0192Q\ufffd[\u0192g\u0192E\u0192F\u0192C -label.private.interface=\u0192v\u0192\u2030\u0192C\u0192x\ufffd[\u0192g \u0192C\u0192\u201c\u0192^\ufffd[\u0192t\u0192F\u0192C\u0192X -label.private.ip.range=\u0192v\u0192\u2030\u0192C\u0192x\ufffd[\u0192g IP \u0192A\u0192h\u0192\u0152\u0192X\u201a\u00cc\u201d\u00cd\u02c6\u00cd -label.private.ip=\u0192v\u0192\u2030\u0192C\u0192x\ufffd[\u0192g IP \u0192A\u0192h\u0192\u0152\u0192X -label.private.ips=\u0192v\u0192\u2030\u0192C\u0192x\ufffd[\u0192g IP \u0192A\u0192h\u0192\u0152\u0192X -label.private.network=\u0192v\u0192\u2030\u0192C\u0192x\ufffd[\u0192g \u0192l\u0192b\u0192g\u0192\ufffd\ufffd[\u0192N -label.private.port=\u0192v\u0192\u2030\u0192C\u0192x\ufffd[\u0192g \u0192|\ufffd[\u0192g -label.private.zone=\u0192v\u0192\u2030\u0192C\u0192x\ufffd[\u0192g \u0192]\ufffd[\u0192\u201c -label.privatekey=PKCS\#8 \u201d\u00e9\u2013\u00a7\u0192L\ufffd[ -label.project.dashboard=\u0192v\u0192\ufffd\u0192W\u0192F\u0192N\u0192g \u0192_\u0192b\u0192V\u0192\u2026\u0192{\ufffd[\u0192h -label.project.id=\u0192v\u0192\ufffd\u0192W\u0192F\u0192N\u0192g ID -label.project.invite=\u0192v\u0192\ufffd\u0192W\u0192F\u0192N\u0192g\u201a\u00d6\u201a\u00cc\ufffd\u00b5\u2018\u00d2 -label.project.name=\u0192v\u0192\ufffd\u0192W\u0192F\u0192N\u0192g\u2013\u00bc -label.project.view=\u0192v\u0192\ufffd\u0192W\u0192F\u0192N\u0192g \u0192r\u0192\u2026\ufffd[ -label.project=\u0192v\u0192\ufffd\u0192W\u0192F\u0192N\u0192g -label.projects=\u0192v\u0192\ufffd\u0192W\u0192F\u0192N\u0192g -label.protocol=\u0192v\u0192\ufffd\u0192g\u0192R\u0192\u2039 -label.provider=\u0192v\u0192\ufffd\u0192o\u0192C\u0192_\ufffd[ -label.providers=\u0192v\u0192\ufffd\u0192o\u0192C\u0192_\ufffd[ -label.public.interface=\u0192p\u0192u\u0192\u0160\u0192b\u0192N \u0192C\u0192\u201c\u0192^\ufffd[\u0192t\u0192F\u0192C\u0192X -label.public.ip=\u0192p\u0192u\u0192\u0160\u0192b\u0192N IP \u0192A\u0192h\u0192\u0152\u0192X -label.public.ips=\u0192p\u0192u\u0192\u0160\u0192b\u0192N IP \u0192A\u0192h\u0192\u0152\u0192X -label.public.network=\u0192p\u0192u\u0192\u0160\u0192b\u0192N \u0192l\u0192b\u0192g\u0192\ufffd\ufffd[\u0192N -label.public.port=\u0192p\u0192u\u0192\u0160\u0192b\u0192N \u0192|\ufffd[\u0192g -label.public.traffic=\u0192p\u0192u\u0192\u0160\u0192b\u0192N \u0192g\u0192\u2030\u0192t\u0192B\u0192b\u0192N -label.public.zone=\u0192p\u0192u\u0192\u0160\u0192b\u0192N \u0192]\ufffd[\u0192\u201c -label.public=\u0192p\u0192u\u0192\u0160\u0192b\u0192N -label.purpose=\u2013\u00da\u201cI -label.Pxe.server.type=Pxe Server Type -label.quickview=\u0192N\u0192C\u0192b\u0192N\u0192r\u0192\u2026\ufffd[ -label.reboot=\ufffd\u00c4\u2039N\u201c\u00ae -label.recent.errors=\ufffd\u00c5\u2039\u00df\u201a\u00cc\u0192G\u0192\u2030\ufffd[ -label.redundant.router.capability=\ufffd\u00e7\u2019\u00b7\u0192\u2039\ufffd[\u0192^\ufffd[\u2039@\u201d\ -label.redundant.router=\ufffd\u00e7\u2019\u00b7\u0192\u2039\ufffd[\u0192^\ufffd[ -label.redundant.state=\ufffd\u00e7\u2019\u00b7\ufffd\u00f3\u2018\u00d4 -label.refresh=\ufffdX\ufffdV -label.region=\u2014\u00cc\u02c6\u00e6 -label.related=\u0160\u00d6\u02dcA -label.remind.later=\u0192A\u0192\u2030\ufffd[\u0192\u20ac\u201a\u00f0\u2022\\u017d\u00a6\u201a\u00b7\u201a\u00e9 -label.remove.ACL=ACL \u201a\u00cc\ufffd\u00ed\ufffd\u0153 -label.remove.egress.rule=\u2018\u2014\ufffdM\u2039K\u2018\u00a5\u201a\u00cc\ufffd\u00ed\ufffd\u0153 -label.remove.from.load.balancer=\u0192\ufffd\ufffd[\u0192h \u0192o\u0192\u2030\u0192\u201c\u0192T\ufffd[\u201a\u00a9\u201a\u00e7\u0192C\u0192\u201c\u0192X\u0192^\u0192\u201c\u0192X\u201a\u00f0\ufffd\u00ed\ufffd\u0153\u201a\u00b5\u201a\u00c4\u201a\u00a2\u201a\u00dc\u201a\u00b7 -label.remove.ingress.rule=\u017d\u00f3\ufffdM\u2039K\u2018\u00a5\u201a\u00cc\ufffd\u00ed\ufffd\u0153 -label.remove.ip.range=IP \u0192A\u0192h\u0192\u0152\u0192X\u201a\u00cc\u201d\u00cd\u02c6\u00cd\u201a\u00cc\ufffd\u00ed\ufffd\u0153 -label.remove.pf=\u0192|\ufffd[\u0192g\u201c]\u2018\u2014\u2039K\u2018\u00a5\u201a\u00cc\ufffd\u00ed\ufffd\u0153 -label.remove.project.account=\u0192v\u0192\ufffd\u0192W\u0192F\u0192N\u0192g\u201a\u00a9\u201a\u00e7\u201a\u00cc\u0192A\u0192J\u0192E\u0192\u201c\u0192g\u201a\u00cc\ufffd\u00ed\ufffd\u0153 -label.remove.region=\u2014\u00cc\u02c6\u00e6\u201a\u00cc\ufffd\u00ed\ufffd\u0153 -label.remove.rule=\u2039K\u2018\u00a5\u201a\u00cc\ufffd\u00ed\ufffd\u0153 -label.remove.static.nat.rule=\ufffd\u00c3\u201cI NAT \u2039K\u2018\u00a5\u201a\u00cc\ufffd\u00ed\ufffd\u0153 -label.remove.static.route=\ufffd\u00c3\u201cI\u0192\u2039\ufffd[\u0192g\u201a\u00cc\ufffd\u00ed\ufffd\u0153 -label.remove.tier=\u0160K\u2018w\u201a\u00cc\ufffd\u00ed\ufffd\u0153 -label.remove.vm.from.lb=\u0192\ufffd\ufffd[\u0192h \u0192o\u0192\u2030\u0192\u201c\u0192T\ufffd[\u2039K\u2018\u00a5\u201a\u00a9\u201a\u00e7\u201a\u00cc VM \u201a\u00cc\ufffd\u00ed\ufffd\u0153 -label.remove.vpc=VPC \u201a\u00cc\ufffd\u00ed\ufffd\u0153 -label.removing.user=\u0192\u2020\ufffd[\u0192U\ufffd[\u201a\u00f0\ufffd\u00ed\ufffd\u0153\u201a\u00b5\u201a\u00c4\u201a\u00a2\u201a\u00dc\u201a\u00b7 -label.removing=\ufffd\u00ed\ufffd\u0153\u201a\u00b5\u201a\u00c4\u201a\u00a2\u201a\u00dc\u201a\u00b7 -label.required=\u2022K\ufffd{\u201a\u00c5\u201a\u00b7 -label.reserved.system.gateway=\u2014\\u2013\u00f1\ufffd\u00cf\u201a\u00dd\u0192V\u0192X\u0192e\u0192\u20ac \u0192Q\ufffd[\u0192g\u0192E\u0192F\u0192C -label.reserved.system.ip=\u2014\\u2013\u00f1\ufffd\u00cf\u201a\u00dd\u0192V\u0192X\u0192e\u0192\u20ac IP \u0192A\u0192h\u0192\u0152\u0192X -label.reserved.system.netmask=\u2014\\u2013\u00f1\ufffd\u00cf\u201a\u00dd\u0192V\u0192X\u0192e\u0192\u20ac \u0192l\u0192b\u0192g\u0192}\u0192X\u0192N -label.reset.VPN.connection=VPN \ufffd\u00da\u2018\u00b1\u201a\u00cc\u0192\u0160\u0192Z\u0192b\u0192g -label.resize.new.offering.id=\ufffdV\u201a\u00b5\u201a\u00a2\u0192I\u0192t\u0192@\u0192\u0160\u0192\u201c\u0192O -label.resize.new.size=\ufffdV\u201a\u00b5\u201a\u00a2\u0192T\u0192C\u0192Y (GB) -label.resize.shrink.ok=\ufffdk\ufffd\u00ac\u2030\u00c2\u201d\\u201a\u00c9\u201a\u00b7\u201a\u00e9 -label.resource.limits=\u0192\u0160\u0192\\ufffd[\u0192X\ufffd\u00a7\u0152\u00c0 -label.resource.state=\u0192\u0160\u0192\\ufffd[\u0192X\u201a\u00cc\ufffd\u00f3\u2018\u00d4 -label.resource=\u0192\u0160\u0192\\ufffd[\u0192X -label.resources=\u0192\u0160\u0192\\ufffd[\u0192X -label.restart.network=\u0192l\u0192b\u0192g\u0192\ufffd\ufffd[\u0192N\u201a\u00cc\ufffd\u00c4\u2039N\u201c\u00ae -label.restart.required=\ufffd\u00c4\u2039N\u201c\u00ae\u201a\u00aa\u2022K\u2014v -label.restart.vpc=VPC \u201a\u00cc\ufffd\u00c4\u2039N\u201c\u00ae -label.restore=\u2022\u0153\u0152\u00b3 -label.retry.interval=Retry Interval -label.review=\u0160m\u201dF -label.revoke.project.invite=\ufffd\u00b5\u2018\u00d2\u201a\u00cc\u017d\u00e6\u201a\u00e8\ufffd\u00c1\u201a\u00b5 -label.role=\u2013\u00f0\u0160\u201e -label.root.certificate=Root certificate -label.root.disk.controller=\u0192\u2039\ufffd[\u0192g \u0192f\u0192B\u0192X\u0192N \u0192R\u0192\u201c\u0192g\u0192\ufffd\ufffd[\u0192\u2030\ufffd[ -label.root.disk.offering=\u0192\u2039\ufffd[\u0192g \u0192f\u0192B\u0192X\u0192N \u0192I\u0192t\u0192@\u0192\u0160\u0192\u201c\u0192O -label.round.robin=Round-robin -label.rules=\u2039K\u2018\u00a5 -label.running.vms=\u017d\u00c0\ufffds\u2019\u2020\u201a\u00cc VM -label.s3.access_key=\u0192A\u0192N\u0192Z\u0192X \u0192L\ufffd[ -label.s3.bucket=\u0192o\u0192P\u0192b\u0192g -label.s3.connection_timeout=\ufffd\u00da\u2018\u00b1\u0192^\u0192C\u0192\u20ac\u0192A\u0192E\u0192g -label.s3.endpoint=\u0192G\u0192\u201c\u0192h\u0192|\u0192C\u0192\u201c\u0192g -label.s3.max_error_retry=\ufffd\u00c5\u2018\u00e5\u0192G\u0192\u2030\ufffd[\ufffd\u00c4\u017d\u017d\ufffds\ufffd\u201d -label.s3.secret_key=\u201d\u00e9\u2013\u00a7\u0192L\ufffd[ -label.s3.socket_timeout=\u0192\\u0192P\u0192b\u0192g \u0192^\u0192C\u0192\u20ac\u0192A\u0192E\u0192g -label.s3.use_https=HTTPS \u201a\u00f0\u017dg\u2014p\u201a\u00b7\u201a\u00e9 -label.saturday=\u201cy\u2014j\u201c\u00fa -label.save.and.continue=\u2022\u00db\u2018\u00b6\u201a\u00b5\u201a\u00c4\u2018\u00b1\ufffds -label.save=\u2022\u00db\u2018\u00b6 -label.saving.processing=\u2022\u00db\u2018\u00b6\u201a\u00b5\u201a\u00c4\u201a\u00a2\u201a\u00dc\u201a\u00b7... -label.scope=\u0192X\u0192R\ufffd[\u0192v -label.search=\u0152\u0178\ufffd\u00f5 -label.secondary.storage.count=\u0192Z\u0192J\u0192\u201c\u0192_\u0192\u0160 \u0192X\u0192g\u0192\u0152\ufffd[\u0192W \u0192v\ufffd[\u0192\u2039 -label.secondary.storage.limits=\u0192Z\u0192J\u0192\u201c\u0192_\u0192\u0160 \u0192X\u0192g\u0192\u0152\ufffd[\u0192W\ufffd\u00a7\u0152\u00c0 (GiB) -label.secondary.storage.vm=\u0192Z\u0192J\u0192\u201c\u0192_\u0192\u0160 \u0192X\u0192g\u0192\u0152\ufffd[\u0192W VM -label.secondary.storage=\u0192Z\u0192J\u0192\u201c\u0192_\u0192\u0160 \u0192X\u0192g\u0192\u0152\ufffd[\u0192W -label.secondary.used=\u0192Z\u0192J\u0192\u201c\u0192_\u0192\u0160 \u0192X\u0192g\u0192\u0152\ufffd[\u0192W\u017dg\u2014p\u2014\u00ca -label.secret.key=\u201d\u00e9\u2013\u00a7\u0192L\ufffd[ -label.security.group.name=\u0192Z\u0192L\u0192\u2026\u0192\u0160\u0192e\u0192B \u0192O\u0192\u2039\ufffd[\u0192v\u2013\u00bc -label.security.group=\u0192Z\u0192L\u0192\u2026\u0192\u0160\u0192e\u0192B \u0192O\u0192\u2039\ufffd[\u0192v -label.security.groups.enabled=\u0192Z\u0192L\u0192\u2026\u0192\u0160\u0192e\u0192B \u0192O\u0192\u2039\ufffd[\u0192v\u2014L\u0152\u00f8 -label.security.groups=\u0192Z\u0192L\u0192\u2026\u0192\u0160\u0192e\u0192B \u0192O\u0192\u2039\ufffd[\u0192v -label.select-view=\u0192r\u0192\u2026\ufffd[\u201a\u00cc\u2018I\u2018\u00f0 -label.select.a.template=\u0192e\u0192\u201c\u0192v\u0192\u0152\ufffd[\u0192g\u201a\u00cc\u2018I\u2018\u00f0 -label.select.a.zone=\u0192]\ufffd[\u0192\u201c\u201a\u00cc\u2018I\u2018\u00f0 -label.select.instance.to.attach.volume.to=\u0192{\u0192\u0160\u0192\u2026\ufffd[\u0192\u20ac\u201a\u00f0\u0192A\u0192^\u0192b\u0192`\u201a\u00b7\u201a\u00e9\u0192C\u0192\u201c\u0192X\u0192^\u0192\u201c\u0192X\u201a\u00f0\u2018I\u2018\u00f0\u201a\u00b5\u201a\u00c4\u201a\u00ad\u201a\u00be\u201a\u00b3\u201a\u00a2 -label.select.instance=\u0192C\u0192\u201c\u0192X\u0192^\u0192\u201c\u0192X\u201a\u00cc\u2018I\u2018\u00f0 -label.select.iso.or.template=ISO \u201a\u00dc\u201a\u00bd\u201a\u00cd\u0192e\u0192\u201c\u0192v\u0192\u0152\ufffd[\u0192g\u201a\u00cc\u2018I\u2018\u00f0 -label.select.offering=\u0192I\u0192t\u0192@\u0192\u0160\u0192\u201c\u0192O\u201a\u00cc\u2018I\u2018\u00f0 -label.select.project=\u0192v\u0192\ufffd\u0192W\u0192F\u0192N\u0192g\u201a\u00cc\u2018I\u2018\u00f0 -label.select.tier=\u0160K\u2018w\u201a\u00cc\u2018I\u2018\u00f0 -label.select.vm.for.static.nat=\ufffd\u00c3\u201cI NAT \u2014p VM \u201a\u00cc\u2018I\u2018\u00f0 -label.select=\u2018I\u2018\u00f0 -label.sent=\u2018\u2014\ufffdM\ufffd\u00cf\u201a\u00dd -label.server=\u0192T\ufffd[\u0192o\ufffd[ -label.service.capabilities=\u0192T\ufffd[\u0192r\u0192X\u201a\u00cc\u2039@\u201d\ -label.service.offering=\u0192T\ufffd[\u0192r\u0192X \u0192I\u0192t\u0192@\u0192\u0160\u0192\u201c\u0192O -label.session.expired=\u0192Z\u0192b\u0192V\u0192\u2021\u0192\u201c\u201a\u00cc\u2014L\u0152\u00f8\u0160\u00fa\u0152\u00c0\u201a\u00aa\ufffd\u00d8\u201a\u00ea\u201a\u00dc\u201a\u00b5\u201a\u00bd -label.set.up.zone.type=\u0192]\ufffd[\u0192\u201c\u201a\u00cc\u017d\u00ed\u2014\u00de\u201a\u00cc\u0192Z\u0192b\u0192g\u0192A\u0192b\u0192v -label.setup.network=\u0192l\u0192b\u0192g\u0192\ufffd\ufffd[\u0192N\u201a\u00cc\u0192Z\u0192b\u0192g\u0192A\u0192b\u0192v -label.setup.zone=\u0192]\ufffd[\u0192\u201c\u201a\u00cc\u0192Z\u0192b\u0192g\u0192A\u0192b\u0192v -label.setup=\u0192Z\u0192b\u0192g\u0192A\u0192b\u0192v -label.shared=\u2039\u00a4\u2014L +label.prev=\u623b\u308b +label.previous=\u623b\u308b +label.primary.allocated=\u5272\u308a\u5f53\u3066\u6e08\u307f\u306e\u30d7\u30e9\u30a4\u30de\u30ea \u30b9\u30c8\u30ec\u30fc\u30b8 +label.primary.network=\u30d7\u30e9\u30a4\u30de\u30ea \u30cd\u30c3\u30c8\u30ef\u30fc\u30af +label.primary.storage.count=\u30d7\u30e9\u30a4\u30de\u30ea \u30b9\u30c8\u30ec\u30fc\u30b8 \u30d7\u30fc\u30eb +label.primary.storage.limits=\u30d7\u30e9\u30a4\u30de\u30ea \u30b9\u30c8\u30ec\u30fc\u30b8\u5236\u9650 (GiB) +label.primary.storage=\u30d7\u30e9\u30a4\u30de\u30ea \u30b9\u30c8\u30ec\u30fc\u30b8 +label.primary.used=\u30d7\u30e9\u30a4\u30de\u30ea \u30b9\u30c8\u30ec\u30fc\u30b8\u4f7f\u7528\u91cf +label.private.Gateway=\u30d7\u30e9\u30a4\u30d9\u30fc\u30c8 \u30b2\u30fc\u30c8\u30a6\u30a7\u30a4 +label.private.interface=\u30d7\u30e9\u30a4\u30d9\u30fc\u30c8 \u30a4\u30f3\u30bf\u30fc\u30d5\u30a7\u30a4\u30b9 +label.private.ip.range=\u30d7\u30e9\u30a4\u30d9\u30fc\u30c8 IP \u30a2\u30c9\u30ec\u30b9\u306e\u7bc4\u56f2 +label.private.ip=\u30d7\u30e9\u30a4\u30d9\u30fc\u30c8 IP \u30a2\u30c9\u30ec\u30b9 +label.private.ips=\u30d7\u30e9\u30a4\u30d9\u30fc\u30c8 IP \u30a2\u30c9\u30ec\u30b9 +label.private.network=\u30d7\u30e9\u30a4\u30d9\u30fc\u30c8 \u30cd\u30c3\u30c8\u30ef\u30fc\u30af +label.private.port=\u30d7\u30e9\u30a4\u30d9\u30fc\u30c8 \u30dd\u30fc\u30c8 +label.private.zone=\u30d7\u30e9\u30a4\u30d9\u30fc\u30c8 \u30be\u30fc\u30f3 +label.privatekey=PKCS\#8 \u79d8\u5bc6\u30ad\u30fc +label.project.dashboard=\u30d7\u30ed\u30b8\u30a7\u30af\u30c8 \u30c0\u30c3\u30b7\u30e5\u30dc\u30fc\u30c9 +label.project.id=\u30d7\u30ed\u30b8\u30a7\u30af\u30c8 ID +label.project.invite=\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u3078\u306e\u62db\u5f85 +label.project.name=\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u540d +label.project.view=\u30d7\u30ed\u30b8\u30a7\u30af\u30c8 \u30d3\u30e5\u30fc +label.project=\u30d7\u30ed\u30b8\u30a7\u30af\u30c8 +label.projects=\u30d7\u30ed\u30b8\u30a7\u30af\u30c8 +label.protocol=\u30d7\u30ed\u30c8\u30b3\u30eb +label.provider=\u30d7\u30ed\u30d0\u30a4\u30c0\u30fc +label.providers=\u30d7\u30ed\u30d0\u30a4\u30c0\u30fc +label.public.interface=\u30d1\u30d6\u30ea\u30c3\u30af \u30a4\u30f3\u30bf\u30fc\u30d5\u30a7\u30a4\u30b9 +label.public.ip=\u30d1\u30d6\u30ea\u30c3\u30af IP \u30a2\u30c9\u30ec\u30b9 +label.public.ips=\u30d1\u30d6\u30ea\u30c3\u30af IP \u30a2\u30c9\u30ec\u30b9 +label.public.network=\u30d1\u30d6\u30ea\u30c3\u30af \u30cd\u30c3\u30c8\u30ef\u30fc\u30af +label.public.port=\u30d1\u30d6\u30ea\u30c3\u30af \u30dd\u30fc\u30c8 +label.public.traffic=\u30d1\u30d6\u30ea\u30c3\u30af \u30c8\u30e9\u30d5\u30a3\u30c3\u30af +label.public.zone=\u30d1\u30d6\u30ea\u30c3\u30af \u30be\u30fc\u30f3 +label.public=\u30d1\u30d6\u30ea\u30c3\u30af +label.purpose=\u76ee\u7684 +label.Pxe.server.type=PXE \u30b5\u30fc\u30d0\u30fc\u306e\u7a2e\u985e +label.quickview=\u30af\u30a4\u30c3\u30af\u30d3\u30e5\u30fc +label.reboot=\u518d\u8d77\u52d5 +label.recent.errors=\u6700\u8fd1\u306e\u30a8\u30e9\u30fc +label.redundant.router.capability=\u5197\u9577\u30eb\u30fc\u30bf\u30fc\u6a5f\u80fd +label.redundant.router=\u5197\u9577\u30eb\u30fc\u30bf\u30fc +label.redundant.state=\u5197\u9577\u72b6\u614b +label.refresh=\u66f4\u65b0 +label.region=\u9818\u57df +label.related=\u95a2\u9023 +label.remind.later=\u30a2\u30e9\u30fc\u30e0\u3092\u8868\u793a\u3059\u308b +label.remove.ACL=ACL \u306e\u524a\u9664 +label.remove.egress.rule=\u9001\u4fe1\u898f\u5247\u306e\u524a\u9664 +label.remove.from.load.balancer=\u30ed\u30fc\u30c9 \u30d0\u30e9\u30f3\u30b5\u30fc\u304b\u3089\u30a4\u30f3\u30b9\u30bf\u30f3\u30b9\u3092\u524a\u9664\u3057\u3066\u3044\u307e\u3059 +label.remove.ingress.rule=\u53d7\u4fe1\u898f\u5247\u306e\u524a\u9664 +label.remove.ip.range=IP \u30a2\u30c9\u30ec\u30b9\u306e\u7bc4\u56f2\u306e\u524a\u9664 +label.remove.pf=\u30dd\u30fc\u30c8\u8ee2\u9001\u898f\u5247\u306e\u524a\u9664 +label.remove.project.account=\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u304b\u3089\u306e\u30a2\u30ab\u30a6\u30f3\u30c8\u306e\u524a\u9664 +label.remove.region=\u9818\u57df\u306e\u524a\u9664 +label.remove.rule=\u898f\u5247\u306e\u524a\u9664 +label.remove.static.nat.rule=\u9759\u7684 NAT \u898f\u5247\u306e\u524a\u9664 +label.remove.static.route=\u9759\u7684\u30eb\u30fc\u30c8\u306e\u524a\u9664 +label.remove.tier=\u968e\u5c64\u306e\u524a\u9664 +label.remove.vm.from.lb=\u30ed\u30fc\u30c9 \u30d0\u30e9\u30f3\u30b5\u30fc\u898f\u5247\u304b\u3089\u306e VM \u306e\u524a\u9664 +label.remove.vpc=VPC \u306e\u524a\u9664 +label.removing.user=\u30e6\u30fc\u30b6\u30fc\u3092\u524a\u9664\u3057\u3066\u3044\u307e\u3059 +label.removing=\u524a\u9664\u3057\u3066\u3044\u307e\u3059 +label.required=\u5fc5\u9808\u3067\u3059 +label.reserved.system.gateway=\u4e88\u7d04\u6e08\u307f\u30b7\u30b9\u30c6\u30e0 \u30b2\u30fc\u30c8\u30a6\u30a7\u30a4 +label.reserved.system.ip=\u4e88\u7d04\u6e08\u307f\u30b7\u30b9\u30c6\u30e0 IP \u30a2\u30c9\u30ec\u30b9 +label.reserved.system.netmask=\u4e88\u7d04\u6e08\u307f\u30b7\u30b9\u30c6\u30e0 \u30cd\u30c3\u30c8\u30de\u30b9\u30af +label.reset.VPN.connection=VPN \u63a5\u7d9a\u306e\u30ea\u30bb\u30c3\u30c8 +label.resize.new.offering.id=\u65b0\u3057\u3044\u30aa\u30d5\u30a1\u30ea\u30f3\u30b0 +label.resize.new.size=\u65b0\u3057\u3044\u30b5\u30a4\u30ba (GB) +label.resize.shrink.ok=\u7e2e\u5c0f\u53ef\u80fd\u306b\u3059\u308b +label.resource.limits=\u30ea\u30bd\u30fc\u30b9\u5236\u9650 +label.resource.state=\u30ea\u30bd\u30fc\u30b9\u306e\u72b6\u614b +label.resource=\u30ea\u30bd\u30fc\u30b9 +label.resources=\u30ea\u30bd\u30fc\u30b9 +label.restart.network=\u30cd\u30c3\u30c8\u30ef\u30fc\u30af\u306e\u518d\u8d77\u52d5 +label.restart.required=\u518d\u8d77\u52d5\u304c\u5fc5\u8981 +label.restart.vpc=VPC \u306e\u518d\u8d77\u52d5 +label.restore=\u5fa9\u5143 +label.retry.interval=\u518d\u8a66\u884c\u9593\u9694 +label.review=\u78ba\u8a8d +label.revoke.project.invite=\u62db\u5f85\u306e\u53d6\u308a\u6d88\u3057 +label.role=\u5f79\u5272 +label.root.certificate=\u30eb\u30fc\u30c8\u8a3c\u660e\u66f8 +label.root.disk.controller=\u30eb\u30fc\u30c8 \u30c7\u30a3\u30b9\u30af \u30b3\u30f3\u30c8\u30ed\u30fc\u30e9\u30fc +label.root.disk.offering=\u30eb\u30fc\u30c8 \u30c7\u30a3\u30b9\u30af \u30aa\u30d5\u30a1\u30ea\u30f3\u30b0 +label.round.robin=\u30e9\u30a6\u30f3\u30c9\u30ed\u30d3\u30f3 +label.rules=\u898f\u5247 +label.running.vms=\u5b9f\u884c\u4e2d\u306e VM +label.s3.access_key=\u30a2\u30af\u30bb\u30b9 \u30ad\u30fc +label.s3.bucket=\u30d0\u30b1\u30c3\u30c8 +label.s3.connection_timeout=\u63a5\u7d9a\u30bf\u30a4\u30e0\u30a2\u30a6\u30c8 +label.s3.endpoint=\u30a8\u30f3\u30c9\u30dd\u30a4\u30f3\u30c8 +label.s3.max_error_retry=\u6700\u5927\u30a8\u30e9\u30fc\u518d\u8a66\u884c\u6570 +label.s3.secret_key=\u79d8\u5bc6\u30ad\u30fc +label.s3.socket_timeout=\u30bd\u30b1\u30c3\u30c8 \u30bf\u30a4\u30e0\u30a2\u30a6\u30c8 +label.s3.use_https=HTTPS \u3092\u4f7f\u7528\u3059\u308b +label.saturday=\u571f\u66dc\u65e5 +label.save.and.continue=\u4fdd\u5b58\u3057\u3066\u7d9a\u884c +label.save=\u4fdd\u5b58 +label.saving.processing=\u4fdd\u5b58\u3057\u3066\u3044\u307e\u3059... +label.scope=\u30b9\u30b3\u30fc\u30d7 +label.search=\u691c\u7d22 +label.secondary.storage.count=\u30bb\u30ab\u30f3\u30c0\u30ea \u30b9\u30c8\u30ec\u30fc\u30b8 \u30d7\u30fc\u30eb +label.secondary.storage.limits=\u30bb\u30ab\u30f3\u30c0\u30ea \u30b9\u30c8\u30ec\u30fc\u30b8\u5236\u9650 (GiB) +label.secondary.storage.vm=\u30bb\u30ab\u30f3\u30c0\u30ea \u30b9\u30c8\u30ec\u30fc\u30b8 VM +label.secondary.storage=\u30bb\u30ab\u30f3\u30c0\u30ea \u30b9\u30c8\u30ec\u30fc\u30b8 +label.secondary.used=\u30bb\u30ab\u30f3\u30c0\u30ea \u30b9\u30c8\u30ec\u30fc\u30b8\u4f7f\u7528\u91cf +label.secret.key=\u79d8\u5bc6\u30ad\u30fc +label.security.group.name=\u30bb\u30ad\u30e5\u30ea\u30c6\u30a3 \u30b0\u30eb\u30fc\u30d7\u540d +label.security.group=\u30bb\u30ad\u30e5\u30ea\u30c6\u30a3 \u30b0\u30eb\u30fc\u30d7 +label.security.groups.enabled=\u30bb\u30ad\u30e5\u30ea\u30c6\u30a3 \u30b0\u30eb\u30fc\u30d7\u6709\u52b9 +label.security.groups=\u30bb\u30ad\u30e5\u30ea\u30c6\u30a3 \u30b0\u30eb\u30fc\u30d7 +label.select-view=\u30d3\u30e5\u30fc\u306e\u9078\u629e +label.select.a.template=\u30c6\u30f3\u30d7\u30ec\u30fc\u30c8\u306e\u9078\u629e +label.select.a.zone=\u30be\u30fc\u30f3\u306e\u9078\u629e +label.select.instance.to.attach.volume.to=\u30dc\u30ea\u30e5\u30fc\u30e0\u3092\u30a2\u30bf\u30c3\u30c1\u3059\u308b\u30a4\u30f3\u30b9\u30bf\u30f3\u30b9\u3092\u9078\u629e\u3057\u3066\u304f\u3060\u3055\u3044 +label.select.instance=\u30a4\u30f3\u30b9\u30bf\u30f3\u30b9\u306e\u9078\u629e +label.select.iso.or.template=ISO \u307e\u305f\u306f\u30c6\u30f3\u30d7\u30ec\u30fc\u30c8\u306e\u9078\u629e +label.select.offering=\u30aa\u30d5\u30a1\u30ea\u30f3\u30b0\u306e\u9078\u629e +label.select.project=\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u306e\u9078\u629e +label.select.tier=\u968e\u5c64\u306e\u9078\u629e +label.select.vm.for.static.nat=\u9759\u7684 NAT \u7528 VM \u306e\u9078\u629e +label.select=\u9078\u629e +label.sent=\u9001\u4fe1\u6e08\u307f +label.server=\u30b5\u30fc\u30d0\u30fc +label.service.capabilities=\u30b5\u30fc\u30d3\u30b9\u306e\u6a5f\u80fd +label.service.offering=\u30b5\u30fc\u30d3\u30b9 \u30aa\u30d5\u30a1\u30ea\u30f3\u30b0 +label.session.expired=\u30bb\u30c3\u30b7\u30e7\u30f3\u306e\u6709\u52b9\u671f\u9650\u304c\u5207\u308c\u307e\u3057\u305f +label.set.up.zone.type=\u30be\u30fc\u30f3\u306e\u7a2e\u985e\u306e\u30bb\u30c3\u30c8\u30a2\u30c3\u30d7 +label.setup.network=\u30cd\u30c3\u30c8\u30ef\u30fc\u30af\u306e\u30bb\u30c3\u30c8\u30a2\u30c3\u30d7 +label.setup.zone=\u30be\u30fc\u30f3\u306e\u30bb\u30c3\u30c8\u30a2\u30c3\u30d7 +label.setup=\u30bb\u30c3\u30c8\u30a2\u30c3\u30d7 +label.shared=\u5171\u6709 label.SharedMountPoint=SharedMountPoint -label.show.ingress.rule=\u017d\u00f3\ufffdM\u2039K\u2018\u00a5\u201a\u00cc\u2022\\u017d\u00a6 -label.shutdown.provider=\u0192v\u0192\ufffd\u0192o\u0192C\u0192_\ufffd[\u201a\u00cc\u0192V\u0192\u0192\u0192b\u0192g\u0192_\u0192E\u0192\u201c -label.site.to.site.VPN=\u0192T\u0192C\u0192g\u0160\u00d4 VPN -label.size=\u0192T\u0192C\u0192Y -label.skip.guide=CloudStack \u201a\u00f0\u017dg\u2014p\u201a\u00b5\u201a\u00bd\u201a\u00b1\u201a\u00c6\u201a\u00aa\u201a\u00a0\u201a\u00e9\u201a\u00cc\u201a\u00c5\ufffdA\u201a\u00b1\u201a\u00cc\u0192K\u0192C\u0192h\u201a\u00f0\u0192X\u0192L\u0192b\u0192v\u201a\u00b7\u201a\u00e9 -label.snapshot.limits=\u0192X\u0192i\u0192b\u0192v\u0192V\u0192\u2021\u0192b\u0192g\ufffd\u00a7\u0152\u00c0 -label.snapshot.name=\u0192X\u0192i\u0192b\u0192v\u0192V\u0192\u2021\u0192b\u0192g\u2013\u00bc -label.snapshot.s=\u0192X\u0192i\u0192b\u0192v\u0192V\u0192\u2021\u0192b\u0192g -label.snapshot.schedule=\u2019\u00e8\u0160\u00fa\u0192X\u0192i\u0192b\u0192v\u0192V\u0192\u2021\u0192b\u0192g\u201a\u00cc\u0192Z\u0192b\u0192g\u0192A\u0192b\u0192v -label.snapshot=\u0192X\u0192i\u0192b\u0192v\u0192V\u0192\u2021\u0192b\u0192g -label.snapshots=\u0192X\u0192i\u0192b\u0192v\u0192V\u0192\u2021\u0192b\u0192g -label.source.nat=\u2018\u2014\ufffdM\u0152\u00b3 NAT -label.source=\u2018\u2014\ufffdM\u0152\u00b3 -label.specify.IP.ranges=IP \u0192A\u0192h\u0192\u0152\u0192X\u201a\u00cc\u201d\u00cd\u02c6\u00cd\u201a\u00cc\u017dw\u2019\u00e8 -label.specify.vlan=VLAN \u201a\u00f0\u017dw\u2019\u00e8\u201a\u00b7\u201a\u00e9 -label.specify.vxlan=VXLAN \u201a\u00f0\u017dw\u2019\u00e8\u201a\u00b7\u201a\u00e9 -label.SR.name= SR \u2013\u00bc\u0192\u2030\u0192x\u0192\u2039 +label.show.ingress.rule=\u53d7\u4fe1\u898f\u5247\u306e\u8868\u793a +label.shutdown.provider=\u30d7\u30ed\u30d0\u30a4\u30c0\u30fc\u306e\u30b7\u30e3\u30c3\u30c8\u30c0\u30a6\u30f3 +label.site.to.site.VPN=\u30b5\u30a4\u30c8\u9593 VPN +label.size=\u30b5\u30a4\u30ba +label.skip.guide=CloudStack \u3092\u4f7f\u7528\u3057\u305f\u3053\u3068\u304c\u3042\u308b\u306e\u3067\u3001\u3053\u306e\u30ac\u30a4\u30c9\u3092\u30b9\u30ad\u30c3\u30d7\u3059\u308b +label.snapshot.limits=\u30b9\u30ca\u30c3\u30d7\u30b7\u30e7\u30c3\u30c8\u5236\u9650 +label.snapshot.name=\u30b9\u30ca\u30c3\u30d7\u30b7\u30e7\u30c3\u30c8\u540d +label.snapshot.s=\u30b9\u30ca\u30c3\u30d7\u30b7\u30e7\u30c3\u30c8 +label.snapshot.schedule=\u5b9a\u671f\u30b9\u30ca\u30c3\u30d7\u30b7\u30e7\u30c3\u30c8\u306e\u30bb\u30c3\u30c8\u30a2\u30c3\u30d7 +label.snapshot=\u30b9\u30ca\u30c3\u30d7\u30b7\u30e7\u30c3\u30c8 +label.snapshots=\u30b9\u30ca\u30c3\u30d7\u30b7\u30e7\u30c3\u30c8 +label.source.nat=\u9001\u4fe1\u5143 NAT +label.source=\u9001\u4fe1\u5143 +label.specify.IP.ranges=IP \u30a2\u30c9\u30ec\u30b9\u306e\u7bc4\u56f2\u306e\u6307\u5b9a +label.specify.vlan=VLAN \u3092\u6307\u5b9a\u3059\u308b +label.specify.vxlan=VXLAN \u3092\u6307\u5b9a\u3059\u308b +label.SR.name=SR \u540d\u30e9\u30d9\u30eb label.srx=SRX label.PA=Palo Alto -label.start.IP=\u0160J\u017dn IP \u0192A\u0192h\u0192\u0152\u0192X -label.start.port=\u0160J\u017dn\u0192|\ufffd[\u0192g -label.start.reserved.system.IP=\u2014\\u2013\u00f1\ufffd\u00cf\u201a\u00dd\u0160J\u017dn\u0192V\u0192X\u0192e\u0192\u20ac IP \u0192A\u0192h\u0192\u0152\u0192X -label.start.vlan=Start Vlan -label.start.vxlan=Start Vxlan -label.state=\ufffd\u00f3\u2018\u00d4 -label.static.nat.enabled=\ufffd\u00c3\u201cI NAT \u2014L\u0152\u00f8 -label.static.nat.to=\ufffd\u00c3\u201cI NAT \u201a\u00cc\ufffd\u00dd\u2019\u00e8\ufffd\u00e6: -label.static.nat.vm.details=\ufffd\u00c3\u201cI NAT VM \u201a\u00cc\ufffd\u00da\ufffd\u00d7 -label.static.nat=\ufffd\u00c3\u201cI NAT -label.statistics=\u201c\ufffd\u0152v -label.status=\ufffd\u00f3\u2039\u00b5 -label.step.1.title=\u017d\u00e8\ufffd\u2021 1\: \u0192e\u0192\u201c\u0192v\u0192\u0152\ufffd[\u0192g\u201a\u00cc\u2018I\u2018\u00f0 -label.step.1=\u017d\u00e8\ufffd\u2021 1 -label.step.2.title=\u017d\u00e8\ufffd\u2021 2\: \u0192T\ufffd[\u0192r\u0192X \u0192I\u0192t\u0192@\u0192\u0160\u0192\u201c\u0192O -label.step.2=\u017d\u00e8\ufffd\u2021 2 -label.step.3.title=\u017d\u00e8\ufffd\u2021 3\: \u0192f\u0192B\u0192X\u0192N \u0192I\u0192t\u0192@\u0192\u0160\u0192\u201c\u0192O\u201a\u00cc\u2018I\u2018\u00f0 -label.step.3=\u017d\u00e8\ufffd\u2021 3 -label.step.4.title=\u017d\u00e8\ufffd\u2021 4\: \u0192l\u0192b\u0192g\u0192\ufffd\ufffd[\u0192N -label.step.4=\u017d\u00e8\ufffd\u2021 4 -label.step.5.title=\u017d\u00e8\ufffd\u2021 5\: \u0160m\u201dF -label.step.5=\u017d\u00e8\ufffd\u2021 5 -label.stickiness=\u017d\ufffd\u2018\u00b1\ufffd\u00ab -label.sticky.cookie-name=Cookie \u2013\u00bc -label.sticky.domain=\u0192h\u0192\ufffd\u0192C\u0192\u201c -label.sticky.expire=\u017d\u00b8\u0152\u00f8 -label.sticky.holdtime=\u2022\u00db\u017d\ufffd\u017d\u017e\u0160\u00d4 -label.sticky.indirect=\u0160\u00d4\ufffd\u00da -label.sticky.length=\u2019\u00b7\u201a\u00b3 -label.sticky.mode=\u0192\u201a\ufffd[\u0192h -label.sticky.nocache=\u0192L\u0192\u0192\u0192b\u0192V\u0192\u2026\u201a\u00c8\u201a\u00b5 -label.sticky.postonly=\u0192|\u0192X\u0192g\u201a\u00cc\u201a\u00dd -label.sticky.prefix=\u0192v\u0192\u0152\u0192t\u0192B\u0192b\u0192N\u0192X -label.sticky.request-learn=\u0192\u2030\ufffd[\u0192j\u0192\u201c\u0192O\u201a\u00cc\u2014v\u2039\ufffd -label.sticky.tablesize=\u0192e\ufffd[\u0192u\u0192\u2039 \u0192T\u0192C\u0192Y -label.stop=\u2019\u00e2\u017d~ -label.stopped.vms=\u2019\u00e2\u017d~\u2019\u2020\u201a\u00cc VM -label.storage.tags=\u0192X\u0192g\u0192\u0152\ufffd[\u0192W \u0192^\u0192O -label.storage.traffic=\u0192X\u0192g\u0192\u0152\ufffd[\u0192W \u0192g\u0192\u2030\u0192t\u0192B\u0192b\u0192N -label.storage.type=\u0192X\u0192g\u0192\u0152\ufffd[\u0192W\u201a\u00cc\u017d\u00ed\u2014\u00de -label.qos.type=QoS \u201a\u00cc\u017d\u00ed\u2014\u00de -label.cache.mode=\ufffd\u2018\u201a\u00ab\ufffd\u017e\u201a\u00dd\u0192L\u0192\u0192\u0192b\u0192V\u0192\u2026\u201a\u00cc\u017d\u00ed\u2014\u00de -label.storage=\u0192X\u0192g\u0192\u0152\ufffd[\u0192W -label.subdomain.access=\u0192T\u0192u\u0192h\u0192\ufffd\u0192C\u0192\u201c \u0192A\u0192N\u0192Z\u0192X -label.submit=\u2018\u2014\ufffdM -label.submitted.by=[\u2018\u2014\ufffdM\u0192\u2020\ufffd[\u0192U\ufffd[\: ] -label.succeeded=\ufffd\u00ac\u0152\u00f7 -label.sunday=\u201c\u00fa\u2014j\u201c\u00fa -label.super.cidr.for.guest.networks=\u0192Q\u0192X\u0192g \u0192l\u0192b\u0192g\u0192\ufffd\ufffd[\u0192N\u201a\u00cc\u0192X\ufffd[\u0192p\ufffd[ CIDR -label.supported.services=\u0192T\u0192|\ufffd[\u0192g\u201a\u00b3\u201a\u00ea\u201a\u00e9\u0192T\ufffd[\u0192r\u0192X -label.supported.source.NAT.type=\u0192T\u0192|\ufffd[\u0192g\u201a\u00b3\u201a\u00ea\u201a\u00e9\u2018\u2014\ufffdM\u0152\u00b3 NAT \u201a\u00cc\u017d\u00ed\u2014\u00de -label.suspend.project=\u0192v\u0192\ufffd\u0192W\u0192F\u0192N\u0192g\u201a\u00cc\u02c6\u00ea\u017d\u017e\u2019\u00e2\u017d~ -label.system.capacity=\u0192V\u0192X\u0192e\u0192\u20ac\u201a\u00cc\ufffd\u02c6\u2014\ufffd\u201d\\u2014\u00cd -label.system.offering=\u0192V\u0192X\u0192e\u0192\u20ac \u0192I\u0192t\u0192@\u0192\u0160\u0192\u201c\u0192O -label.system.service.offering=\u0192V\u0192X\u0192e\u0192\u20ac \u0192T\ufffd[\u0192r\u0192X \u0192I\u0192t\u0192@\u0192\u0160\u0192\u201c\u0192O -label.system.vm.type=\u0192V\u0192X\u0192e\u0192\u20ac VM \u201a\u00cc\u017d\u00ed\u2014\u00de -label.system.vm=\u0192V\u0192X\u0192e\u0192\u20ac VM -label.system.vms=\u0192V\u0192X\u0192e\u0192\u20ac VM -label.system.wide.capacity=\u0192V\u0192X\u0192e\u0192\u20ac\u2018S\u2018\u00cc\u201a\u00cc\ufffd\u02c6\u2014\ufffd\u201d\\u2014\u00cd -label.tagged=\u0192^\u0192O\u201a\u00a0\u201a\u00e8 -label.tags=\u0192^\u0192O -label.target.iqn=\u0192^\ufffd[\u0192Q\u0192b\u0192g IQN -label.task.completed=\u0192^\u0192X\u0192N\u201a\u00aa\u0160\u00ae\u2014\u00b9\u201a\u00b5\u201a\u00dc\u201a\u00b5\u201a\u00bd -label.template.limits=\u0192e\u0192\u201c\u0192v\u0192\u0152\ufffd[\u0192g\ufffd\u00a7\u0152\u00c0 -label.template=\u0192e\u0192\u201c\u0192v\u0192\u0152\ufffd[\u0192g -label.TFTP.dir=TFTP \u0192f\u0192B\u0192\u0152\u0192N\u0192g\u0192\u0160 -label.theme.default=\u0192f\u0192t\u0192H\u0192\u2039\u0192g \u0192e\ufffd[\u0192} -label.theme.grey=\u0192J\u0192X\u0192^\u0192\u20ac - \u0192O\u0192\u0152\ufffd[ -label.theme.lightblue=\u0192J\u0192X\u0192^\u0192\u20ac - \u0192\u2030\u0192C\u0192g \u0192u\u0192\u2039\ufffd[ -label.thursday=\u2013\u00d8\u2014j\u201c\u00fa -label.tier.details=\u0160K\u2018w\u201a\u00cc\ufffd\u00da\ufffd\u00d7 -label.tier=\u0160K\u2018w -label.time.zone=\u0192^\u0192C\u0192\u20ac\u0192]\ufffd[\u0192\u201c -label.time=\u017d\u017e\ufffd\ufffd -label.timeout.in.second = \u0192^\u0192C\u0192\u20ac\u0192A\u0192E\u0192g (\u2022b) -label.timeout=\u0192^\u0192C\u0192\u20ac\u0192A\u0192E\u0192g -label.timezone=\u0192^\u0192C\u0192\u20ac\u0192]\ufffd[\u0192\u201c -label.token=\u0192g\ufffd[\u0192N\u0192\u201c -label.total.CPU=CPU \ufffd\u2021\u0152v -label.total.cpu=CPU \ufffd\u2021\u0152v -label.total.hosts=\u0192z\u0192X\u0192g\ufffd\u2021\u0152v -label.total.memory=\u0192\ufffd\u0192\u201a\u0192\u0160\ufffd\u2021\u0152v -label.total.of.ip=IP \u0192A\u0192h\u0192\u0152\u0192X\ufffd\u2021\u0152v -label.total.of.vm=VM \ufffd\u2021\u0152v -label.total.storage=\u0192X\u0192g\u0192\u0152\ufffd[\u0192W\ufffd\u2021\u0152v -label.total.vms=VM \ufffd\u2021\u0152v -label.traffic.label=\u0192g\u0192\u2030\u0192t\u0192B\u0192b\u0192N \u0192\u2030\u0192x\u0192\u2039 -label.traffic.type=\u0192g\u0192\u2030\u0192t\u0192B\u0192b\u0192N\u201a\u00cc\u017d\u00ed\u2014\u00de -label.traffic.types=\u0192g\u0192\u2030\u0192t\u0192B\u0192b\u0192N\u201a\u00cc\u017d\u00ed\u2014\u00de -label.tuesday=\u2030\u00ce\u2014j\u201c\u00fa -label.type.id=\u017d\u00ed\u2014\u00de ID -label.type=\u017d\u00ed\u2014\u00de -label.unavailable=\u017dg\u2014p\u2022s\u201d\ -label.unlimited=\u2013\u00b3\ufffd\u00a7\u0152\u00c0 -label.untagged=\u0192^\u0192O\u201a\u00c8\u201a\u00b5 -label.update.project.resources=\u0192v\u0192\ufffd\u0192W\u0192F\u0192N\u0192g \u0192\u0160\u0192\\ufffd[\u0192X\u201a\u00cc\ufffdX\ufffdV -label.update.ssl.cert= SSL \ufffd\u00d8\u2013\u00be\ufffd\u2018 -label.update.ssl= SSL \ufffd\u00d8\u2013\u00be\ufffd\u2018 -label.updating=\ufffdX\ufffdV\u201a\u00b5\u201a\u00c4\u201a\u00a2\u201a\u00dc\u201a\u00b7 -label.upload.volume=\u0192{\u0192\u0160\u0192\u2026\ufffd[\u0192\u20ac\u201a\u00cc\u0192A\u0192b\u0192v\u0192\ufffd\ufffd[\u0192h -label.upload=\u0192A\u0192b\u0192v\u0192\ufffd\ufffd[\u0192h +label.start.IP=\u958b\u59cb IP \u30a2\u30c9\u30ec\u30b9 +label.start.port=\u958b\u59cb\u30dd\u30fc\u30c8 +label.start.reserved.system.IP=\u4e88\u7d04\u6e08\u307f\u958b\u59cb\u30b7\u30b9\u30c6\u30e0 IP \u30a2\u30c9\u30ec\u30b9 +label.start.vlan=\u958b\u59cb VLAN +label.start.vxlan=\u958b\u59cb VXLAN +label.state=\u72b6\u614b +label.static.nat.enabled=\u9759\u7684 NAT \u6709\u52b9 +label.static.nat.to=\u9759\u7684 NAT \u306e\u8a2d\u5b9a\u5148: +label.static.nat.vm.details=\u9759\u7684 NAT VM \u306e\u8a73\u7d30 +label.static.nat=\u9759\u7684 NAT +label.statistics=\u7d71\u8a08 +label.status=\u72b6\u6cc1 +label.step.1.title=\u624b\u9806 1\: \u30c6\u30f3\u30d7\u30ec\u30fc\u30c8\u306e\u9078\u629e +label.step.1=\u624b\u9806 1 +label.step.2.title=\u624b\u9806 2\: \u30b5\u30fc\u30d3\u30b9 \u30aa\u30d5\u30a1\u30ea\u30f3\u30b0 +label.step.2=\u624b\u9806 2 +label.step.3.title=\u624b\u9806 3\: \u30c7\u30a3\u30b9\u30af \u30aa\u30d5\u30a1\u30ea\u30f3\u30b0\u306e\u9078\u629e +label.step.3=\u624b\u9806 3 +label.step.4.title=\u624b\u9806 4\: \u30cd\u30c3\u30c8\u30ef\u30fc\u30af +label.step.4=\u624b\u9806 4 +label.step.5.title=\u624b\u9806 5\: \u78ba\u8a8d +label.step.5=\u624b\u9806 5 +label.stickiness=\u6301\u7d9a\u6027 +label.sticky.cookie-name=Cookie \u540d +label.sticky.domain=\u30c9\u30e1\u30a4\u30f3 +label.sticky.expire=\u5931\u52b9 +label.sticky.holdtime=\u4fdd\u6301\u6642\u9593 +label.sticky.indirect=\u9593\u63a5 +label.sticky.length=\u9577\u3055 +label.sticky.mode=\u30e2\u30fc\u30c9 +label.sticky.nocache=\u30ad\u30e3\u30c3\u30b7\u30e5\u306a\u3057 +label.sticky.postonly=\u30dd\u30b9\u30c8\u306e\u307f +label.sticky.prefix=\u30d7\u30ec\u30d5\u30a3\u30c3\u30af\u30b9 +label.sticky.request-learn=\u30e9\u30fc\u30cb\u30f3\u30b0\u306e\u8981\u6c42 +label.sticky.tablesize=\u30c6\u30fc\u30d6\u30eb \u30b5\u30a4\u30ba +label.stop=\u505c\u6b62 +label.stopped.vms=\u505c\u6b62\u4e2d\u306e VM +label.storage.tags=\u30b9\u30c8\u30ec\u30fc\u30b8 \u30bf\u30b0 +label.storage.traffic=\u30b9\u30c8\u30ec\u30fc\u30b8 \u30c8\u30e9\u30d5\u30a3\u30c3\u30af +label.storage.type=\u30b9\u30c8\u30ec\u30fc\u30b8\u306e\u7a2e\u985e +label.qos.type=QoS \u306e\u7a2e\u985e +label.cache.mode=\u66f8\u304d\u8fbc\u307f\u30ad\u30e3\u30c3\u30b7\u30e5\u306e\u7a2e\u985e +label.storage=\u30b9\u30c8\u30ec\u30fc\u30b8 +label.subdomain.access=\u30b5\u30d6\u30c9\u30e1\u30a4\u30f3 \u30a2\u30af\u30bb\u30b9 +label.submit=\u9001\u4fe1 +label.submitted.by=[\u9001\u4fe1\u30e6\u30fc\u30b6\u30fc\: ] +label.succeeded=\u6210\u529f +label.sunday=\u65e5\u66dc\u65e5 +label.super.cidr.for.guest.networks=\u30b2\u30b9\u30c8 \u30cd\u30c3\u30c8\u30ef\u30fc\u30af\u306e\u30b9\u30fc\u30d1\u30fc CIDR +label.supported.services=\u30b5\u30dd\u30fc\u30c8\u3055\u308c\u308b\u30b5\u30fc\u30d3\u30b9 +label.supported.source.NAT.type=\u30b5\u30dd\u30fc\u30c8\u3055\u308c\u308b\u9001\u4fe1\u5143 NAT \u306e\u7a2e\u985e +label.suspend.project=\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u306e\u4e00\u6642\u505c\u6b62 +label.system.capacity=\u30b7\u30b9\u30c6\u30e0\u306e\u51e6\u7406\u80fd\u529b +label.system.offering=\u30b7\u30b9\u30c6\u30e0 \u30aa\u30d5\u30a1\u30ea\u30f3\u30b0 +label.system.service.offering=\u30b7\u30b9\u30c6\u30e0 \u30b5\u30fc\u30d3\u30b9 \u30aa\u30d5\u30a1\u30ea\u30f3\u30b0 +label.system.vm.type=\u30b7\u30b9\u30c6\u30e0 VM \u306e\u7a2e\u985e +label.system.vm=\u30b7\u30b9\u30c6\u30e0 VM +label.system.vms=\u30b7\u30b9\u30c6\u30e0 VM +label.system.wide.capacity=\u30b7\u30b9\u30c6\u30e0\u5168\u4f53\u306e\u51e6\u7406\u80fd\u529b +label.tagged=\u30bf\u30b0\u3042\u308a +label.tags=\u30bf\u30b0 +label.target.iqn=\u30bf\u30fc\u30b2\u30c3\u30c8 IQN +label.task.completed=\u30bf\u30b9\u30af\u304c\u5b8c\u4e86\u3057\u307e\u3057\u305f +label.template.limits=\u30c6\u30f3\u30d7\u30ec\u30fc\u30c8\u5236\u9650 +label.template=\u30c6\u30f3\u30d7\u30ec\u30fc\u30c8 +label.TFTP.dir=TFTP \u30c7\u30a3\u30ec\u30af\u30c8\u30ea +label.theme.default=\u30c7\u30d5\u30a9\u30eb\u30c8 \u30c6\u30fc\u30de +label.theme.grey=\u30ab\u30b9\u30bf\u30e0 - \u30b0\u30ec\u30fc +label.theme.lightblue=\u30ab\u30b9\u30bf\u30e0 - \u30e9\u30a4\u30c8 \u30d6\u30eb\u30fc +label.thursday=\u6728\u66dc\u65e5 +label.tier.details=\u968e\u5c64\u306e\u8a73\u7d30 +label.tier=\u968e\u5c64 +label.time.zone=\u30bf\u30a4\u30e0\u30be\u30fc\u30f3 +label.time=\u6642\u523b +label.timeout.in.second = \u30bf\u30a4\u30e0\u30a2\u30a6\u30c8 (\u79d2) +label.timeout=\u30bf\u30a4\u30e0\u30a2\u30a6\u30c8 +label.timezone=\u30bf\u30a4\u30e0\u30be\u30fc\u30f3 +label.token=\u30c8\u30fc\u30af\u30f3 +label.total.CPU=CPU \u5408\u8a08 +label.total.cpu=CPU \u5408\u8a08 +label.total.hosts=\u30db\u30b9\u30c8\u5408\u8a08 +label.total.memory=\u30e1\u30e2\u30ea\u5408\u8a08 +label.total.of.ip=IP \u30a2\u30c9\u30ec\u30b9\u5408\u8a08 +label.total.of.vm=VM \u5408\u8a08 +label.total.storage=\u30b9\u30c8\u30ec\u30fc\u30b8\u5408\u8a08 +label.total.vms=VM \u5408\u8a08 +label.traffic.label=\u30c8\u30e9\u30d5\u30a3\u30c3\u30af \u30e9\u30d9\u30eb +label.traffic.type=\u30c8\u30e9\u30d5\u30a3\u30c3\u30af\u306e\u7a2e\u985e +label.traffic.types=\u30c8\u30e9\u30d5\u30a3\u30c3\u30af\u306e\u7a2e\u985e +label.tuesday=\u706b\u66dc\u65e5 +label.type.id=\u7a2e\u985e ID +label.type=\u7a2e\u985e +label.unavailable=\u4f7f\u7528\u4e0d\u80fd +label.unlimited=\u7121\u5236\u9650 +label.untagged=\u30bf\u30b0\u306a\u3057 +label.update.project.resources=\u30d7\u30ed\u30b8\u30a7\u30af\u30c8 \u30ea\u30bd\u30fc\u30b9\u306e\u66f4\u65b0 +label.update.ssl.cert= SSL \u8a3c\u660e\u66f8 +label.update.ssl= SSL \u8a3c\u660e\u66f8 +label.updating=\u66f4\u65b0\u3057\u3066\u3044\u307e\u3059 +label.upload.volume=\u30dc\u30ea\u30e5\u30fc\u30e0\u306e\u30a2\u30c3\u30d7\u30ed\u30fc\u30c9 +label.upload=\u30a2\u30c3\u30d7\u30ed\u30fc\u30c9 label.url=URL -label.usage.interface=\u017dg\u2014p\ufffd\u00f3\u2039\u00b5\u2018\u00aa\u2019\u00e8\u0192C\u0192\u201c\u0192^\ufffd[\u0192t\u0192F\u0192C\u0192X -label.use.vm.ip=\u017d\u0178\u201a\u00cc VM IP \u0192A\u0192h\u0192\u0152\u0192X\u201a\u00f0\u017dg\u2014p\: -label.used=\u017dg\u2014p\u2019\u2020 -label.user=\u0192\u2020\ufffd[\u0192U\ufffd[ -label.username=\u0192\u2020\ufffd[\u0192U\ufffd[\u2013\u00bc -label.users=\u0192\u2020\ufffd[\u0192U\ufffd[ -label.value=\u2019l -label.vcdcname=vCenter DC \u2013\u00bc -label.vcenter.cluster=vCenter \u0192N\u0192\u2030\u0192X\u0192^\ufffd[ -label.vcenter.datacenter=vCenter \u0192f\ufffd[\u0192^\u0192Z\u0192\u201c\u0192^\ufffd[ -label.vcenter.datastore=vCenter \u0192f\ufffd[\u0192^\u0192X\u0192g\u0192A -label.vcenter.host=vCenter \u0192z\u0192X\u0192g -label.vcenter.password=vCenter \u0192p\u0192X\u0192\ufffd\ufffd[\u0192h -label.vcenter.username=vCenter \u0192\u2020\ufffd[\u0192U\ufffd[\u2013\u00bc -label.vcipaddress=vCenter IP \u0192A\u0192h\u0192\u0152\u0192X -label.version=\u0192o\ufffd[\u0192W\u0192\u2021\u0192\u201c -label.view.all=\u201a\u00b7\u201a\u00d7\u201a\u00c4\u2022\\u017d\u00a6 -label.view.console=\u0192R\u0192\u201c\u0192\\ufffd[\u0192\u2039\u201a\u00cc\u2022\\u017d\u00a6 -label.view.more=\ufffd\u00da\ufffd\u00d7\u2022\\u017d\u00a6 -label.view=\u2022\\u017d\u00a6 - -label.viewing=\u2022\\u017d\u00a6\ufffd\u20ac\u2013\u00da: -label.virtual.appliance=\u2030\u00bc\u2018z\u0192A\u0192v\u0192\u2030\u0192C\u0192A\u0192\u201c\u0192X -label.virtual.appliances=\u2030\u00bc\u2018z\u0192A\u0192v\u0192\u2030\u0192C\u0192A\u0192\u201c\u0192X -label.virtual.machines=\u2030\u00bc\u2018z\u0192}\u0192V\u0192\u201c -label.virtual.network=\u2030\u00bc\u2018z\u0192l\u0192b\u0192g\u0192\ufffd\ufffd[\u0192N -label.virtual.router=\u2030\u00bc\u2018z\u0192\u2039\ufffd[\u0192^\ufffd[ -label.virtual.routers=\u2030\u00bc\u2018z\u0192\u2039\ufffd[\u0192^\ufffd[ +label.usage.interface=\u4f7f\u7528\u72b6\u6cc1\u6e2c\u5b9a\u30a4\u30f3\u30bf\u30fc\u30d5\u30a7\u30a4\u30b9 +label.use.vm.ip=\u6b21\u306e VM IP \u30a2\u30c9\u30ec\u30b9\u3092\u4f7f\u7528\: +label.used=\u4f7f\u7528\u4e2d +label.user=\u30e6\u30fc\u30b6\u30fc +label.username=\u30e6\u30fc\u30b6\u30fc\u540d +label.users=\u30e6\u30fc\u30b6\u30fc +label.value=\u5024 +label.vcdcname=vCenter DC \u540d +label.vcenter.cluster=vCenter \u30af\u30e9\u30b9\u30bf\u30fc +label.vcenter.datacenter=vCenter \u30c7\u30fc\u30bf\u30bb\u30f3\u30bf\u30fc +label.vcenter.datastore=vCenter \u30c7\u30fc\u30bf\u30b9\u30c8\u30a2 +label.vcenter.host=vCenter \u30db\u30b9\u30c8 +label.vcenter.password=vCenter \u30d1\u30b9\u30ef\u30fc\u30c9 +label.vcenter.username=vCenter \u30e6\u30fc\u30b6\u30fc\u540d +label.vcipaddress=vCenter IP \u30a2\u30c9\u30ec\u30b9 +label.version=\u30d0\u30fc\u30b8\u30e7\u30f3 +label.view.all=\u3059\u3079\u3066\u8868\u793a +label.view.console=\u30b3\u30f3\u30bd\u30fc\u30eb\u306e\u8868\u793a +label.view.more=\u8a73\u7d30\u8868\u793a +label.view=\u8868\u793a - +label.viewing=\u8868\u793a\u9805\u76ee: +label.virtual.appliance=\u4eee\u60f3\u30a2\u30d7\u30e9\u30a4\u30a2\u30f3\u30b9 +label.virtual.appliances=\u4eee\u60f3\u30a2\u30d7\u30e9\u30a4\u30a2\u30f3\u30b9 +label.virtual.machines=\u4eee\u60f3\u30de\u30b7\u30f3 +label.virtual.network=\u4eee\u60f3\u30cd\u30c3\u30c8\u30ef\u30fc\u30af +label.virtual.router=\u4eee\u60f3\u30eb\u30fc\u30bf\u30fc +label.virtual.routers=\u4eee\u60f3\u30eb\u30fc\u30bf\u30fc label.vlan.id=VLAN/VNI ID -label.vlan.range=VLAN/VNI \u201a\u00cc\u201d\u00cd\u02c6\u00cd +label.vlan.range=VLAN/VNI \u306e\u7bc4\u56f2 label.vlan=VLAN/VNI label.vnet=VLAN/VNI label.vnet.id=VLAN/VNI ID label.vxlan.id=VXLAN ID -label.vxlan.range=VXLAN \u201a\u00cc\u201d\u00cd\u02c6\u00cd +label.vxlan.range=VXLAN \u306e\u7bc4\u56f2 label.vxlan=VXLAN -label.vm.add=\u0192C\u0192\u201c\u0192X\u0192^\u0192\u201c\u0192X\u201a\u00cc\u2019\u00c7\u2030\u00c1 -label.vm.destroy=\u201dj\u0160\u00fc -label.vm.display.name=VM \u2022\\u017d\u00a6\u2013\u00bc -label.vm.name=VM \u2013\u00bc -label.vm.reboot=\ufffd\u00c4\u2039N\u201c\u00ae -label.vm.start=\u2039N\u201c\u00ae -label.vm.state=VM \u201a\u00cc\ufffd\u00f3\u2018\u00d4 -label.vm.stop=\u2019\u00e2\u017d~ -label.VMFS.datastore=VMFS \u0192f\ufffd[\u0192^\u0192X\u0192g\u0192A +label.vm.add=\u30a4\u30f3\u30b9\u30bf\u30f3\u30b9\u306e\u8ffd\u52a0 +label.vm.destroy=\u7834\u68c4 +label.vm.display.name=VM \u8868\u793a\u540d +label.vm.name=VM \u540d +label.vm.reboot=\u518d\u8d77\u52d5 +label.vm.start=\u8d77\u52d5 +label.vm.state=VM \u306e\u72b6\u614b +label.vm.stop=\u505c\u6b62 +label.VMFS.datastore=VMFS \u30c7\u30fc\u30bf\u30b9\u30c8\u30a2 label.vmfs=VMFS -label.VMs.in.tier=\u0160K\u2018w\u201c\u00e0\u201a\u00cc VM +label.VMs.in.tier=\u968e\u5c64\u5185\u306e VM label.vms=VM -label.vmsnapshot.current=\u017dg\u2014p\u2019\u2020 -label.vmsnapshot.memory=\u0192\ufffd\u0192\u201a\u0192\u0160\u201a\u00e0\u0160\u00dc\u201a\u00df\u201a\u00e9 -label.vmsnapshot.parentname=\ufffde -label.vmsnapshot.type=\u017d\u00ed\u2014\u00de -label.vmsnapshot=VM \u0192X\u0192i\u0192b\u0192v\u0192V\u0192\u2021\u0192b\u0192g -label.vmware.traffic.label=VMware \u201a\u00cc\u0192g\u0192\u2030\u0192t\u0192B\u0192b\u0192N \u0192\u2030\u0192x\u0192\u2039 -label.volgroup=\u0192{\u0192\u0160\u0192\u2026\ufffd[\u0192\u20ac \u0192O\u0192\u2039\ufffd[\u0192v -label.volume.limits=\u0192{\u0192\u0160\u0192\u2026\ufffd[\u0192\u20ac\ufffd\u00a7\u0152\u00c0 -label.volume.name=\u0192{\u0192\u0160\u0192\u2026\ufffd[\u0192\u20ac\u2013\u00bc -label.volume=\u0192{\u0192\u0160\u0192\u2026\ufffd[\u0192\u20ac -label.volumes=\u0192{\u0192\u0160\u0192\u2026\ufffd[\u0192\u20ac +label.vmsnapshot.current=\u4f7f\u7528\u4e2d +label.vmsnapshot.memory=\u30e1\u30e2\u30ea\u3082\u542b\u3081\u308b +label.vmsnapshot.parentname=\u89aa +label.vmsnapshot.type=\u7a2e\u985e +label.vmsnapshot=VM \u30b9\u30ca\u30c3\u30d7\u30b7\u30e7\u30c3\u30c8 +label.vmware.traffic.label=VMware \u306e\u30c8\u30e9\u30d5\u30a3\u30c3\u30af \u30e9\u30d9\u30eb +label.volgroup=\u30dc\u30ea\u30e5\u30fc\u30e0 \u30b0\u30eb\u30fc\u30d7 +label.volume.limits=\u30dc\u30ea\u30e5\u30fc\u30e0\u5236\u9650 +label.volume.name=\u30dc\u30ea\u30e5\u30fc\u30e0\u540d +label.volume=\u30dc\u30ea\u30e5\u30fc\u30e0 +label.volumes=\u30dc\u30ea\u30e5\u30fc\u30e0 label.vpc.id=VPC ID -label.VPC.router.details=VPC \u0192\u2039\ufffd[\u0192^\ufffd[\u201a\u00cc\ufffd\u00da\ufffd\u00d7 +label.VPC.router.details=VPC \u30eb\u30fc\u30bf\u30fc\u306e\u8a73\u7d30 label.vpc=VPC -label.VPN.connection=VPN \ufffd\u00da\u2018\u00b1 -label.VPN.customer.gateway=VPN \u0192J\u0192X\u0192^\u0192}\ufffd[ \u0192Q\ufffd[\u0192g\u0192E\u0192F\u0192C -label.vpn.customer.gateway=VPN \u0192J\u0192X\u0192^\u0192}\ufffd[ \u0192Q\ufffd[\u0192g\u0192E\u0192F\u0192C -label.VPN.gateway=VPN \u0192Q\ufffd[\u0192g\u0192E\u0192F\u0192C +label.VPN.connection=VPN \u63a5\u7d9a +label.VPN.customer.gateway=VPN \u30ab\u30b9\u30bf\u30de\u30fc \u30b2\u30fc\u30c8\u30a6\u30a7\u30a4 +label.vpn.customer.gateway=VPN \u30ab\u30b9\u30bf\u30de\u30fc \u30b2\u30fc\u30c8\u30a6\u30a7\u30a4 +label.VPN.gateway=VPN \u30b2\u30fc\u30c8\u30a6\u30a7\u30a4 label.vpn=VPN -label.vsmctrlvlanid=\u0192R\u0192\u201c\u0192g\u0192\ufffd\ufffd[\u0192\u2039 VLAN ID -label.vsmpktvlanid=\u0192p\u0192P\u0192b\u0192g VLAN ID -label.vsmstoragevlanid=\u0192X\u0192g\u0192\u0152\ufffd[\u0192W VLAN ID -label.vsphere.managed=vSphere \u201a\u00c9\u201a\u00e6\u201a\u00e9\u0160\u00c7\u2014\ufffd -label.waiting=\u2018\u00d2\u2039@\u201a\u00b5\u201a\u00c4\u201a\u00a2\u201a\u00dc\u201a\u00b7 -label.warn=\u0152x\ufffd\ufffd -label.wednesday=\ufffd\u2026\u2014j\u201c\u00fa -label.weekly=\u2013\u02c6\ufffdT -label.welcome.cloud.console=\u0160\u00c7\u2014\ufffd\u0192R\u0192\u201c\u0192\\ufffd[\u0192\u2039\u201a\u00d6\u201a\u00e6\u201a\u00a4\u201a\u00b1\u201a\u00bb -label.welcome=\u201a\u00e6\u201a\u00a4\u201a\u00b1\u201a\u00bb -label.what.is.cloudstack=CloudStack&\#8482; \u201a\u00c9\u201a\u00c2\u201a\u00a2\u201a\u00c4 -label.xenserver.traffic.label=XenServer \u201a\u00cc\u0192g\u0192\u2030\u0192t\u0192B\u0192b\u0192N \u0192\u2030\u0192x\u0192\u2039 -label.yes=\u201a\u00cd\u201a\u00a2 -label.zone.details=\u0192]\ufffd[\u0192\u201c\u201a\u00cc\ufffd\u00da\ufffd\u00d7 -label.zone.id=\u0192]\ufffd[\u0192\u201c ID -label.zone.name=Zone name -label.zone.step.1.title=\u017d\u00e8\ufffd\u2021 1\: \u0192l\u0192b\u0192g\u0192\ufffd\ufffd[\u0192N\u201a\u00cc\u2018I\u2018\u00f0 -label.zone.step.2.title=\u017d\u00e8\ufffd\u2021 2\: \u0192]\ufffd[\u0192\u201c\u201a\u00cc\u2019\u00c7\u2030\u00c1 -label.zone.step.3.title=\u017d\u00e8\ufffd\u2021 3\: \u0192|\u0192b\u0192h\u201a\u00cc\u2019\u00c7\u2030\u00c1 -label.zone.step.4.title=\u017d\u00e8\ufffd\u2021 4\: IP \u0192A\u0192h\u0192\u0152\u0192X\u201d\u00cd\u02c6\u00cd\u201a\u00cc\u2019\u00c7\u2030\u00c1 -label.zone.type=\u0192]\ufffd[\u0192\u201c\u201a\u00cc\u017d\u00ed\u2014\u00de -label.zone.wide=\u0192]\ufffd[\u0192\u201c\u2018S\u2018\u00cc -label.zone=\u0192]\ufffd[\u0192\u201c -label.zones=\u0192]\ufffd[\u0192\u201c -label.zoneWizard.trafficType.guest=\u0192Q\u0192X\u0192g\: \u0192G\u0192\u201c\u0192h \u0192\u2020\ufffd[\u0192U\ufffd[\u201a\u00cc\u2030\u00bc\u2018z\u0192}\u0192V\u0192\u201c\u201a\u00cc\u0160\u00d4\u201a\u00cc\u0192g\u0192\u2030\u0192t\u0192B\u0192b\u0192N\u201a\u00c5\u201a\u00b7\ufffdB -label.zoneWizard.trafficType.management=\u0160\u00c7\u2014\ufffd\: \u0192z\u0192X\u0192g\u201a\u00e2 CloudStack \u0192V\u0192X\u0192e\u0192\u20ac VM \u201a\u00c8\u201a\u00c7\ufffdA\u0160\u00c7\u2014\ufffd\u0192T\ufffd[\u0192o\ufffd[\u201a\u00c6\u2019\u00ca\ufffdM\u201a\u00b7\u201a\u00e9 CloudStack \u201a\u00cc\u201c\u00e0\u2022\u201d\u0192\u0160\u0192\\ufffd[\u0192X\u0160\u00d4\u201a\u00cc\u0192g\u0192\u2030\u0192t\u0192B\u0192b\u0192N\u201a\u00c5\u201a\u00b7\ufffdB -label.zoneWizard.trafficType.public=\u0192p\u0192u\u0192\u0160\u0192b\u0192N\: \u0192C\u0192\u201c\u0192^\ufffd[\u0192l\u0192b\u0192g\u201a\u00c6\u0192N\u0192\u2030\u0192E\u0192h\u201c\u00e0\u201a\u00cc\u2030\u00bc\u2018z\u0192}\u0192V\u0192\u201c\u201a\u00cc\u0160\u00d4\u201a\u00cc\u0192g\u0192\u2030\u0192t\u0192B\u0192b\u0192N\u201a\u00c5\u201a\u00b7\ufffdB -label.zoneWizard.trafficType.storage=\u0192X\u0192g\u0192\u0152\ufffd[\u0192W\: VM \u0192e\u0192\u201c\u0192v\u0192\u0152\ufffd[\u0192g\u201a\u00e2\u0192X\u0192i\u0192b\u0192v\u0192V\u0192\u2021\u0192b\u0192g\u201a\u00c8\u201a\u00c7\ufffdA\u0192v\u0192\u2030\u0192C\u0192}\u0192\u0160\u201a\u00a8\u201a\u00e6\u201a\u00d1\u0192Z\u0192J\u0192\u201c\u0192_\u0192\u0160 \u0192X\u0192g\u0192\u0152\ufffd[\u0192W \u0192T\ufffd[\u0192o\ufffd[\u0160\u00d4\u201a\u00cc\u0192g\u0192\u2030\u0192t\u0192B\u0192b\u0192N\u201a\u00c5\u201a\u00b7\ufffdB -label.ldap.group.name=LDAP \u0192O\u0192\u2039\ufffd[\u0192v -label.password.reset.confirm=\u017d\u0178\u201a\u00cc\u0192p\u0192X\u0192\ufffd\ufffd[\u0192h\u201a\u00c9\u0192\u0160\u0192Z\u0192b\u0192g\u201a\u00b3\u201a\u00ea\u201a\u00dc\u201a\u00b5\u201a\u00bd: -label.provider=\u0192v\u0192\ufffd\u0192o\u0192C\u0192_\ufffd[ -label.resetVM=VM \u201a\u00cc\u0192\u0160\u0192Z\u0192b\u0192g +label.vsmctrlvlanid=\u30b3\u30f3\u30c8\u30ed\u30fc\u30eb VLAN ID +label.vsmpktvlanid=\u30d1\u30b1\u30c3\u30c8 VLAN ID +label.vsmstoragevlanid=\u30b9\u30c8\u30ec\u30fc\u30b8 VLAN ID +label.vsphere.managed=vSphere \u306b\u3088\u308b\u7ba1\u7406 +label.waiting=\u5f85\u6a5f\u3057\u3066\u3044\u307e\u3059 +label.warn=\u8b66\u544a +label.wednesday=\u6c34\u66dc\u65e5 +label.weekly=\u6bce\u9031 +label.welcome.cloud.console=\u7ba1\u7406\u30b3\u30f3\u30bd\u30fc\u30eb\u3078\u3088\u3046\u3053\u305d +label.welcome=\u3088\u3046\u3053\u305d +label.what.is.cloudstack=CloudStack&\#8482; \u306b\u3064\u3044\u3066 +label.xenserver.traffic.label=XenServer \u306e\u30c8\u30e9\u30d5\u30a3\u30c3\u30af \u30e9\u30d9\u30eb +label.yes=\u306f\u3044 +label.zone.details=\u30be\u30fc\u30f3\u306e\u8a73\u7d30 +label.zone.id=\u30be\u30fc\u30f3 ID +label.zone.name=\u30be\u30fc\u30f3\u540d +label.zone.step.1.title=\u624b\u9806 1\: \u30cd\u30c3\u30c8\u30ef\u30fc\u30af\u306e\u9078\u629e +label.zone.step.2.title=\u624b\u9806 2\: \u30be\u30fc\u30f3\u306e\u8ffd\u52a0 +label.zone.step.3.title=\u624b\u9806 3\: \u30dd\u30c3\u30c9\u306e\u8ffd\u52a0 +label.zone.step.4.title=\u624b\u9806 4\: IP \u30a2\u30c9\u30ec\u30b9\u7bc4\u56f2\u306e\u8ffd\u52a0 +label.zone.type=\u30be\u30fc\u30f3\u306e\u7a2e\u985e +label.zone.wide=\u30be\u30fc\u30f3\u5168\u4f53 +label.zone=\u30be\u30fc\u30f3 +label.zones=\u30be\u30fc\u30f3 +label.zoneWizard.trafficType.guest=\u30b2\u30b9\u30c8\: \u30a8\u30f3\u30c9 \u30e6\u30fc\u30b6\u30fc\u306e\u4eee\u60f3\u30de\u30b7\u30f3\u306e\u9593\u306e\u30c8\u30e9\u30d5\u30a3\u30c3\u30af\u3067\u3059\u3002 +label.zoneWizard.trafficType.management=\u7ba1\u7406\: \u30db\u30b9\u30c8\u3084 CloudStack \u30b7\u30b9\u30c6\u30e0 VM \u306a\u3069\u3001\u7ba1\u7406\u30b5\u30fc\u30d0\u30fc\u3068\u901a\u4fe1\u3059\u308b CloudStack \u306e\u5185\u90e8\u30ea\u30bd\u30fc\u30b9\u9593\u306e\u30c8\u30e9\u30d5\u30a3\u30c3\u30af\u3067\u3059\u3002 +label.zoneWizard.trafficType.public=\u30d1\u30d6\u30ea\u30c3\u30af\: \u30a4\u30f3\u30bf\u30fc\u30cd\u30c3\u30c8\u3068\u30af\u30e9\u30a6\u30c9\u5185\u306e\u4eee\u60f3\u30de\u30b7\u30f3\u306e\u9593\u306e\u30c8\u30e9\u30d5\u30a3\u30c3\u30af\u3067\u3059\u3002 +label.zoneWizard.trafficType.storage=\u30b9\u30c8\u30ec\u30fc\u30b8\: VM \u30c6\u30f3\u30d7\u30ec\u30fc\u30c8\u3084\u30b9\u30ca\u30c3\u30d7\u30b7\u30e7\u30c3\u30c8\u306a\u3069\u3001\u30d7\u30e9\u30a4\u30de\u30ea\u304a\u3088\u3073\u30bb\u30ab\u30f3\u30c0\u30ea \u30b9\u30c8\u30ec\u30fc\u30b8 \u30b5\u30fc\u30d0\u30fc\u9593\u306e\u30c8\u30e9\u30d5\u30a3\u30c3\u30af\u3067\u3059\u3002 +label.ldap.group.name=LDAP \u30b0\u30eb\u30fc\u30d7 +label.password.reset.confirm=\u6b21\u306e\u30d1\u30b9\u30ef\u30fc\u30c9\u306b\u30ea\u30bb\u30c3\u30c8\u3055\u308c\u307e\u3057\u305f: +label.provider=\u30d7\u30ed\u30d0\u30a4\u30c0\u30fc +label.resetVM=VM \u306e\u30ea\u30bb\u30c3\u30c8 label.openDaylight=OpenDaylight -label.assign.instance.another=\u201a\u00d9\u201a\u00a9\u201a\u00cc\u0192A\u0192J\u0192E\u0192\u201c\u0192g\u201a\u00d6\u201a\u00cc\u0192C\u0192\u201c\u0192X\u0192^\u0192\u201c\u0192X\u201a\u00cc\u0160\u201e\u201a\u00e8\u201c\u2013\u201a\u00c4 -label.network.addVM=VM \u201a\u00d6\u201a\u00cc\u0192l\u0192b\u0192g\u0192\ufffd\ufffd[\u0192N\u201a\u00cc\u2019\u00c7\u2030\u00c1 -label.set.default.NIC=\u0192f\u0192t\u0192H\u0192\u2039\u0192g NIC \u201a\u00cc\ufffd\u00dd\u2019\u00e8 -label.Xenserver.Tools.Version61plus=Original XS Version is 6.1\+ -label.supportsstrechedl2subnet=\u0192X\u0192g\u0192\u0152\u0192b\u0192` L2 \u0192T\u0192u\u0192l\u0192b\u0192g\u201a\u00f0\u0192T\u0192|\ufffd[\u0192g\u201a\u00b7\u201a\u00e9 -label.menu.vpc.offerings=VPC \u0192I\u0192t\u0192@\u0192\u0160\u0192\u201c\u0192O -label.vpc.offering=VPC \u0192I\u0192t\u0192@\u0192\u0160\u0192\u201c\u0192O -label.regionlevelvpc=\u2014\u00cc\u02c6\u00e6\u0192\u0152\u0192x\u0192\u2039\u201a\u00cc VPC -label.add.vpc.offering=VPC \u0192I\u0192t\u0192@\u0192\u0160\u0192\u201c\u0192O\u201a\u00cc\u2019\u00c7\u2030\u00c1 -label.distributedrouter=\u2022\u00aa\u017dU\u0192\u2039\ufffd[\u0192^\ufffd[ -label.vpc.offering.details=VPC \u0192I\u0192t\u0192@\u0192\u0160\u0192\u201c\u0192O\u201a\u00cc\ufffd\u00da\ufffd\u00d7 -label.disable.vpc.offering=VPC \u0192I\u0192t\u0192@\u0192\u0160\u0192\u201c\u0192O\u201a\u00cc\u2013\u00b3\u0152\u00f8\u2030\u00bb -label.enable.vpc.offering=VPC \u0192I\u0192t\u0192@\u0192\u0160\u0192\u201c\u0192O\u201a\u00cc\u2014L\u0152\u00f8\u2030\u00bb -label.remove.vpc.offering=VPC \u0192I\u0192t\u0192@\u0192\u0160\u0192\u201c\u0192O\u201a\u00cc\ufffd\u00ed\ufffd\u0153 -label.vpc.distributedvpcrouter=\u2022\u00aa\u017dU VPC \u0192\u2039\ufffd[\u0192^\ufffd[ -label.vpc.supportsregionlevelvpc=\u2014\u00cc\u02c6\u00e6\u0192\u0152\u0192x\u0192\u2039\u201a\u00cc VPC \u201a\u00f0\u0192T\u0192|\ufffd[\u0192g\u201a\u00b7\u201a\u00e9 -label.dynamically.scalable=\u201c\u00ae\u201cI\u201a\u00c9\u0192T\u0192C\u0192Y\ufffd\u00dd\u2019\u00e8\u201a\u00b7\u201a\u00e9 -label.instance.scaled.up=\u0192C\u0192\u201c\u0192X\u0192^\u0192\u201c\u0192X\u201a\u00cc\u0192T\u0192C\u0192Y\u201a\u00aa\u0160g\u2018\u00e5\u201a\u00b3\u201a\u00ea\u201a\u00dc\u201a\u00b5\u201a\u00bd -label.tag.key=\u0192^\u0192O \u0192L\ufffd[ -label.tag.value=\u0192^\u0192O\u2019l -label.ipv6.address=IPv6 IP \u0192A\u0192h\u0192\u0152\u0192X -label.ipv6.gateway=IPv6 \u0192Q\ufffd[\u0192g\u0192E\u0192F\u0192C +label.assign.instance.another=\u307b\u304b\u306e\u30a2\u30ab\u30a6\u30f3\u30c8\u3078\u306e\u30a4\u30f3\u30b9\u30bf\u30f3\u30b9\u306e\u5272\u308a\u5f53\u3066 +label.network.addVM=VM \u3078\u306e\u30cd\u30c3\u30c8\u30ef\u30fc\u30af\u306e\u8ffd\u52a0 +label.set.default.NIC=\u30c7\u30d5\u30a9\u30eb\u30c8 NIC \u306e\u8a2d\u5b9a +label.Xenserver.Tools.Version61plus=\u5143\u306e XS \u30d0\u30fc\u30b8\u30e7\u30f3\u306f 6.1 \u4ee5\u964d +label.supportsstrechedl2subnet=\u30b9\u30c8\u30ec\u30c3\u30c1 L2 \u30b5\u30d6\u30cd\u30c3\u30c8\u3092\u30b5\u30dd\u30fc\u30c8\u3059\u308b +label.menu.vpc.offerings=VPC \u30aa\u30d5\u30a1\u30ea\u30f3\u30b0 +label.vpc.offering=VPC \u30aa\u30d5\u30a1\u30ea\u30f3\u30b0 +label.regionlevelvpc=\u9818\u57df\u30ec\u30d9\u30eb\u306e VPC +label.add.vpc.offering=VPC \u30aa\u30d5\u30a1\u30ea\u30f3\u30b0\u306e\u8ffd\u52a0 +label.distributedrouter=\u5206\u6563\u30eb\u30fc\u30bf\u30fc +label.vpc.offering.details=VPC \u30aa\u30d5\u30a1\u30ea\u30f3\u30b0\u306e\u8a73\u7d30 +label.disable.vpc.offering=VPC \u30aa\u30d5\u30a1\u30ea\u30f3\u30b0\u306e\u7121\u52b9\u5316 +label.enable.vpc.offering=VPC \u30aa\u30d5\u30a1\u30ea\u30f3\u30b0\u306e\u6709\u52b9\u5316 +label.remove.vpc.offering=VPC \u30aa\u30d5\u30a1\u30ea\u30f3\u30b0\u306e\u524a\u9664 +label.vpc.distributedvpcrouter=\u5206\u6563 VPC \u30eb\u30fc\u30bf\u30fc +label.vpc.supportsregionlevelvpc=\u9818\u57df\u30ec\u30d9\u30eb\u306e VPC \u3092\u30b5\u30dd\u30fc\u30c8\u3059\u308b +label.dynamically.scalable=\u52d5\u7684\u306b\u30b5\u30a4\u30ba\u8a2d\u5b9a\u3059\u308b +label.instance.scaled.up=\u30a4\u30f3\u30b9\u30bf\u30f3\u30b9\u306e\u30b5\u30a4\u30ba\u304c\u62e1\u5927\u3055\u308c\u307e\u3057\u305f +label.tag.key=\u30bf\u30b0 \u30ad\u30fc +label.tag.value=\u30bf\u30b0\u5024 +label.ipv6.address=IPv6 IP \u30a2\u30c9\u30ec\u30b9 +label.ipv6.gateway=IPv6 \u30b2\u30fc\u30c8\u30a6\u30a7\u30a4 label.ipv6.CIDR=IPv6 CIDR -label.VPC.limits=VPC \ufffd\u00a7\u0152\u00c0 -label.edit.region=\u2014\u00cc\u02c6\u00e6\u201a\u00cc\u2022\u00d2\ufffdW -label.gslb.domain.name=GSLB \u0192h\u0192\ufffd\u0192C\u0192\u201c\u2013\u00bc -label.add.gslb=GSLB \u201a\u00cc\u2019\u00c7\u2030\u00c1 -label.gslb.servicetype=\u0192T\ufffd[\u0192r\u0192X\u201a\u00cc\u017d\u00ed\u2014\u00de -label.gslb.details=GSLB \u201a\u00cc\ufffd\u00da\ufffd\u00d7 -label.gslb.delete=GSLB \u201a\u00cc\ufffd\u00ed\ufffd\u0153 -label.opendaylight.controller=OpenDaylight \u0192R\u0192\u201c\u0192g\u0192\ufffd\ufffd[\u0192\u2030\ufffd[ -label.opendaylight.controllers=OpenDaylight \u0192R\u0192\u201c\u0192g\u0192\ufffd\ufffd[\u0192\u2030\ufffd[ -label.portable.ip.ranges=\u0192|\ufffd[\u0192^\u0192u\u0192\u2039 IP \u0192A\u0192h\u0192\u0152\u0192X\u201a\u00cc\u201d\u00cd\u02c6\u00cd -label.add.portable.ip.range=\u0192|\ufffd[\u0192^\u0192u\u0192\u2039 IP \u0192A\u0192h\u0192\u0152\u0192X\u201a\u00cc\u201d\u00cd\u02c6\u00cd\u201a\u00cc\u2019\u00c7\u2030\u00c1 -label.delete.portable.ip.range=\u0192|\ufffd[\u0192^\u0192u\u0192\u2039 IP \u0192A\u0192h\u0192\u0152\u0192X\u201a\u00cc\u201d\u00cd\u02c6\u00cd\u201a\u00cc\ufffd\u00ed\ufffd\u0153 -label.opendaylight.controllerdetail=OpenDaylight \u0192R\u0192\u201c\u0192g\u0192\ufffd\ufffd[\u0192\u2030\ufffd[\u201a\u00cc\ufffd\u00da\ufffd\u00d7 -label.portable.ip.range.details=\u0192|\ufffd[\u0192^\u0192u\u0192\u2039 IP \u0192A\u0192h\u0192\u0152\u0192X\u201a\u00cc\u201d\u00cd\u02c6\u00cd\u201a\u00cc\ufffd\u00da\ufffd\u00d7 -label.portable.ips=\u0192|\ufffd[\u0192^\u0192u\u0192\u2039 IP \u0192A\u0192h\u0192\u0152\u0192X -label.gslb.assigned.lb=\u0160\u201e\u201a\u00e8\u201c\u2013\u201a\u00c4\ufffd\u00cf\u201a\u00dd\u2022\u2030\u2030\u00d7\u2022\u00aa\u017dU -label.gslb.assigned.lb.more=\u2022\u2030\u2030\u00d7\u2022\u00aa\u017dU\u201a\u00cc\u2019\u00c7\u2030\u00c1\u0160\u201e\u201a\u00e8\u201c\u2013\u201a\u00c4 -label.gslb.lb.rule=Load balancing rule -label.gslb.lb.details=\u2022\u2030\u2030\u00d7\u2022\u00aa\u017dU\u201a\u00cc\ufffd\u00da\ufffd\u00d7 -label.gslb.lb.remove=\u201a\u00b1\u201a\u00cc GSLB \u201a\u00a9\u201a\u00e7\u2022\u2030\u2030\u00d7\u2022\u00aa\u017dU\u201a\u00f0\ufffd\u00ed\ufffd\u0153 -label.enable.autoscale=Enable Autoscale -label.disable.autoscale=Disable Autoscale -label.min.instances=\ufffd\u00c5\ufffd\u00ac\u0192C\u0192\u201c\u0192X\u0192^\u0192\u201c\u0192X\ufffd\u201d -label.max.instances=\ufffd\u00c5\u2018\u00e5\u0192C\u0192\u201c\u0192X\u0192^\u0192\u201c\u0192X\ufffd\u201d -label.add.OpenDaylight.device=OpenDaylight \u0192R\u0192\u201c\u0192g\u0192\ufffd\ufffd[\u0192\u2030\ufffd[\u201a\u00cc\u2019\u00c7\u2030\u00c1 -label.show.advanced.settings=\ufffd\u00da\ufffd\u00d7\ufffd\u00dd\u2019\u00e8\u201a\u00cc\u2022\\u017d\u00a6 -label.delete.OpenDaylight.device=OpenDaylight \u0192R\u0192\u201c\u0192g\u0192\ufffd\ufffd[\u0192\u2030\ufffd[\u201a\u00cc\ufffd\u00ed\ufffd\u0153 -label.polling.interval.sec=\u0192|\ufffd[\u0192\u0160\u0192\u201c\u0192O\u0160\u00d4\u0160u (\u2022b) -label.quiet.time.sec=\u2018\u00d2\u201a\u00bf\u017d\u017e\u0160\u00d4 (\u2022b) -label.destroy.vm.graceperiod=VM \u201dj\u0160\u00fc\u201a\u00cc\u2014P\u2014\\u0160\u00fa\u0160\u00d4 -label.SNMP.community=SNMP \u0192R\u0192~\u0192\u2026\u0192j\u0192e\u0192B -label.SNMP.port=SNMP \u0192|\ufffd[\u0192g -label.add.ucs.manager=UCS Manager \u201a\u00cc\u2019\u00c7\u2030\u00c1 -label.ovm.traffic.label=OVM \u201a\u00cc\u0192g\u0192\u2030\u0192t\u0192B\u0192b\u0192N \u0192\u2030\u0192x\u0192\u2039 -label.lxc.traffic.label=LXC \u201a\u00cc\u0192g\u0192\u2030\u0192t\u0192B\u0192b\u0192N \u0192\u2030\u0192x\u0192\u2039 -label.hyperv.traffic.label=Hyper-V \u201a\u00cc\u0192g\u0192\u2030\u0192t\u0192B\u0192b\u0192N \u0192\u2030\u0192x\u0192\u2039 -label.resource.name=\u0192\u0160\u0192\\ufffd[\u0192X\u2013\u00bc -label.reource.id=\u0192\u0160\u0192\\ufffd[\u0192X ID -label.vnmc.devices=VNMC \u0192f\u0192o\u0192C\u0192X -label.add.vnmc.provider=VNMC \u0192v\u0192\ufffd\u0192o\u0192C\u0192_\ufffd[\u201a\u00cc\u2019\u00c7\u2030\u00c1 -label.enable.vnmc.provider=VNMC \u0192v\u0192\ufffd\u0192o\u0192C\u0192_\ufffd[\u201a\u00cc\u2014L\u0152\u00f8\u2030\u00bb -label.add.vnmc.device=VNMC \u0192f\u0192o\u0192C\u0192X\u201a\u00cc\u2019\u00c7\u2030\u00c1 -label.ciscovnmc.resource.details=Cisco VNMC \u0192\u0160\u0192\\ufffd[\u0192X\u201a\u00cc\ufffd\u00da\ufffd\u00d7 -label.delete.ciscovnmc.resource=Cisco VNMC \u0192\u0160\u0192\\ufffd[\u0192X\u201a\u00cc\ufffd\u00ed\ufffd\u0153 -label.enable.vnmc.device=VNMC \u0192f\u0192o\u0192C\u0192X\u201a\u00cc\u2014L\u0152\u00f8\u2030\u00bb -label.disbale.vnmc.device=VNMC \u0192f\u0192o\u0192C\u0192X\u201a\u00cc\u2013\u00b3\u0152\u00f8\u2030\u00bb -label.disable.vnmc.provider=VNMC \u0192v\u0192\ufffd\u0192o\u0192C\u0192_\ufffd[\u201a\u00cc\u2013\u00b3\u0152\u00f8\u2030\u00bb -label.services=\u0192T\ufffd[\u0192r\u0192X -label.secondary.staging.store=\u0192Z\u0192J\u0192\u201c\u0192_\u0192\u0160 \u0192X\u0192e\ufffd[\u0192W\u0192\u201c\u0192O \u0192X\u0192g\u0192A -label.release.account=\u0192A\u0192J\u0192E\u0192\u201c\u0192g\u201a\u00a9\u201a\u00e7\u2030\u00f0\u2022\u00fa -label.release.account.lowercase=Release from account -label.vlan.vni.ranges=VLAN/VNI \u201a\u00cc\u201d\u00cd\u02c6\u00cd -label.dedicated.vlan.vni.ranges=\ufffd\u00ea\u2014p VLAN/VNI \u201a\u00cc\u201d\u00cd\u02c6\u00cd -label.dedicate.vlan.vni.range=VLAN/VNI \u201a\u00cc\u201d\u00cd\u02c6\u00cd\u201a\u00f0\ufffd\u00ea\u2014p\u201a\u00c9\ufffd\u00dd\u2019\u00e8 -label.vlan.vni.range=VLAN/VNI \u201a\u00cc\u201d\u00cd\u02c6\u00cd -label.vlan.range.details=VLAN \u201a\u00cc\u201d\u00cd\u02c6\u00cd\u201a\u00cc\ufffd\u00da\ufffd\u00d7 -label.release.dedicated.vlan.range=\ufffd\u00ea\u2014p VLAN \u201a\u00cc\u201d\u00cd\u02c6\u00cd\u201a\u00cc\u2030\u00f0\u2022\u00fa -label.broadcat.uri=\u0192u\u0192\ufffd\ufffd[\u0192h\u0192L\u0192\u0192\u0192X\u0192g URI +label.VPC.limits=VPC \u5236\u9650 +label.edit.region=\u9818\u57df\u306e\u7de8\u96c6 +label.gslb.domain.name=GSLB \u30c9\u30e1\u30a4\u30f3\u540d +label.add.gslb=GSLB \u306e\u8ffd\u52a0 +label.gslb.servicetype=\u30b5\u30fc\u30d3\u30b9\u306e\u7a2e\u985e +label.gslb.details=GSLB \u306e\u8a73\u7d30 +label.gslb.delete=GSLB \u306e\u524a\u9664 +label.opendaylight.controller=OpenDaylight \u30b3\u30f3\u30c8\u30ed\u30fc\u30e9\u30fc +label.opendaylight.controllers=OpenDaylight \u30b3\u30f3\u30c8\u30ed\u30fc\u30e9\u30fc +label.portable.ip.ranges=\u30dd\u30fc\u30bf\u30d6\u30eb IP \u30a2\u30c9\u30ec\u30b9\u306e\u7bc4\u56f2 +label.add.portable.ip.range=\u30dd\u30fc\u30bf\u30d6\u30eb IP \u30a2\u30c9\u30ec\u30b9\u306e\u7bc4\u56f2\u306e\u8ffd\u52a0 +label.delete.portable.ip.range=\u30dd\u30fc\u30bf\u30d6\u30eb IP \u30a2\u30c9\u30ec\u30b9\u306e\u7bc4\u56f2\u306e\u524a\u9664 +label.opendaylight.controllerdetail=OpenDaylight \u30b3\u30f3\u30c8\u30ed\u30fc\u30e9\u30fc\u306e\u8a73\u7d30 +label.portable.ip.range.details=\u30dd\u30fc\u30bf\u30d6\u30eb IP \u30a2\u30c9\u30ec\u30b9\u306e\u7bc4\u56f2\u306e\u8a73\u7d30 +label.portable.ips=\u30dd\u30fc\u30bf\u30d6\u30eb IP \u30a2\u30c9\u30ec\u30b9 +label.gslb.assigned.lb=\u5272\u308a\u5f53\u3066\u6e08\u307f\u8ca0\u8377\u5206\u6563 +label.gslb.assigned.lb.more=\u8ca0\u8377\u5206\u6563\u306e\u8ffd\u52a0\u5272\u308a\u5f53\u3066 +label.gslb.lb.rule=\u8ca0\u8377\u5206\u6563\u898f\u5247 +label.gslb.lb.details=\u8ca0\u8377\u5206\u6563\u306e\u8a73\u7d30 +label.gslb.lb.remove=\u3053\u306e GSLB \u304b\u3089\u8ca0\u8377\u5206\u6563\u3092\u524a\u9664 +label.enable.autoscale=\u81ea\u52d5\u30b5\u30a4\u30ba\u8a2d\u5b9a\u306e\u6709\u52b9\u5316 +label.disable.autoscale=\u81ea\u52d5\u30b5\u30a4\u30ba\u8a2d\u5b9a\u306e\u7121\u52b9\u5316 +label.min.instances=\u6700\u5c0f\u30a4\u30f3\u30b9\u30bf\u30f3\u30b9\u6570 +label.max.instances=\u6700\u5927\u30a4\u30f3\u30b9\u30bf\u30f3\u30b9\u6570 +label.add.OpenDaylight.device=OpenDaylight \u30b3\u30f3\u30c8\u30ed\u30fc\u30e9\u30fc\u306e\u8ffd\u52a0 +label.show.advanced.settings=\u8a73\u7d30\u8a2d\u5b9a\u306e\u8868\u793a +label.delete.OpenDaylight.device=OpenDaylight \u30b3\u30f3\u30c8\u30ed\u30fc\u30e9\u30fc\u306e\u524a\u9664 +label.polling.interval.sec=\u30dd\u30fc\u30ea\u30f3\u30b0\u9593\u9694 (\u79d2) +label.quiet.time.sec=\u5f85\u3061\u6642\u9593 (\u79d2) +label.destroy.vm.graceperiod=VM \u7834\u68c4\u306e\u7336\u4e88\u671f\u9593 +label.SNMP.community=SNMP \u30b3\u30df\u30e5\u30cb\u30c6\u30a3 +label.SNMP.port=SNMP \u30dd\u30fc\u30c8 +label.add.ucs.manager=UCS Manager \u306e\u8ffd\u52a0 +label.ovm.traffic.label=OVM \u306e\u30c8\u30e9\u30d5\u30a3\u30c3\u30af \u30e9\u30d9\u30eb +label.lxc.traffic.label=LXC \u306e\u30c8\u30e9\u30d5\u30a3\u30c3\u30af \u30e9\u30d9\u30eb +label.hyperv.traffic.label=Hyper-V \u306e\u30c8\u30e9\u30d5\u30a3\u30c3\u30af \u30e9\u30d9\u30eb +label.resource.name=\u30ea\u30bd\u30fc\u30b9\u540d +label.reource.id=\u30ea\u30bd\u30fc\u30b9 ID +label.vnmc.devices=VNMC \u30c7\u30d0\u30a4\u30b9 +label.add.vnmc.provider=VNMC \u30d7\u30ed\u30d0\u30a4\u30c0\u30fc\u306e\u8ffd\u52a0 +label.enable.vnmc.provider=VNMC \u30d7\u30ed\u30d0\u30a4\u30c0\u30fc\u306e\u6709\u52b9\u5316 +label.add.vnmc.device=VNMC \u30c7\u30d0\u30a4\u30b9\u306e\u8ffd\u52a0 +label.ciscovnmc.resource.details=Cisco VNMC \u30ea\u30bd\u30fc\u30b9\u306e\u8a73\u7d30 +label.delete.ciscovnmc.resource=Cisco VNMC \u30ea\u30bd\u30fc\u30b9\u306e\u524a\u9664 +label.enable.vnmc.device=VNMC \u30c7\u30d0\u30a4\u30b9\u306e\u6709\u52b9\u5316 +label.disbale.vnmc.device=VNMC \u30c7\u30d0\u30a4\u30b9\u306e\u7121\u52b9\u5316 +label.disable.vnmc.provider=VNMC \u30d7\u30ed\u30d0\u30a4\u30c0\u30fc\u306e\u7121\u52b9\u5316 +label.services=\u30b5\u30fc\u30d3\u30b9 +label.secondary.staging.store=\u30bb\u30ab\u30f3\u30c0\u30ea \u30b9\u30c6\u30fc\u30b8\u30f3\u30b0 \u30b9\u30c8\u30a2 +label.release.account=\u30a2\u30ab\u30a6\u30f3\u30c8\u304b\u3089\u89e3\u653e +label.release.account.lowercase=\u30a2\u30ab\u30a6\u30f3\u30c8\u304b\u3089\u89e3\u653e +label.vlan.vni.ranges=VLAN/VNI \u306e\u7bc4\u56f2 +label.dedicated.vlan.vni.ranges=\u5c02\u7528 VLAN/VNI \u306e\u7bc4\u56f2 +label.dedicate.vlan.vni.range=VLAN/VNI \u306e\u7bc4\u56f2\u3092\u5c02\u7528\u306b\u8a2d\u5b9a +label.vlan.vni.range=VLAN/VNI \u306e\u7bc4\u56f2 +label.vlan.range.details=VLAN \u306e\u7bc4\u56f2\u306e\u8a73\u7d30 +label.release.dedicated.vlan.range=\u5c02\u7528 VLAN \u306e\u7bc4\u56f2\u306e\u89e3\u653e +label.broadcat.uri=\u30d6\u30ed\u30fc\u30c9\u30ad\u30e3\u30b9\u30c8 URI label.ipv4.cidr=IPv4 CIDR -label.guest.network.details=\u0192Q\u0192X\u0192g \u0192l\u0192b\u0192g\u0192\ufffd\ufffd[\u0192N\u201a\u00cc\ufffd\u00da\ufffd\u00d7 -label.ipv4.gateway=IPv4 \u0192Q\ufffd[\u0192g\u0192E\u0192F\u0192C -label.release.dedicated.vlan.range=\ufffd\u00ea\u2014p VLAN \u201a\u00cc\u201d\u00cd\u02c6\u00cd\u201a\u00cc\u2030\u00f0\u2022\u00fa -label.vlan.ranges=VLAN \u201a\u00cc\u201d\u00cd\u02c6\u00cd -label.virtual.appliance.details=Virtual applicance details -label.start.lb.vm=LB VM \u201a\u00cc\u2039N\u201c\u00ae -label.stop.lb.vm=LB VM \u201a\u00cc\u2019\u00e2\u017d~ -label.migrate.lb.vm=LB VM \u201a\u00cc\u02c6\u00da\ufffds -label.vpc.virtual.router=VPC \u2030\u00bc\u2018z\u0192\u2039\ufffd[\u0192^\ufffd[ +label.guest.network.details=\u30b2\u30b9\u30c8 \u30cd\u30c3\u30c8\u30ef\u30fc\u30af\u306e\u8a73\u7d30 +label.ipv4.gateway=IPv4 \u30b2\u30fc\u30c8\u30a6\u30a7\u30a4 +label.release.dedicated.vlan.range=\u5c02\u7528 VLAN \u306e\u7bc4\u56f2\u306e\u89e3\u653e +label.vlan.ranges=VLAN \u306e\u7bc4\u56f2 +label.virtual.appliance.details=\u4eee\u60f3\u30a2\u30d7\u30e9\u30a4\u30a2\u30f3\u30b9\u306e\u8a73\u7d30 +label.start.lb.vm=LB VM \u306e\u8d77\u52d5 +label.stop.lb.vm=LB VM \u306e\u505c\u6b62 +label.migrate.lb.vm=LB VM \u306e\u79fb\u884c +label.vpc.virtual.router=VPC \u4eee\u60f3\u30eb\u30fc\u30bf\u30fc label.ovs=OVS -label.gslb.service=GSLB \u0192T\ufffd[\u0192r\u0192X -label.gslb.service.public.ip=GSLB \u0192T\ufffd[\u0192r\u0192X\u201a\u00cc\u0192p\u0192u\u0192\u0160\u0192b\u0192N IP \u0192A\u0192h\u0192\u0152\u0192X -label.gslb.service.private.ip=GSLB \u0192T\ufffd[\u0192r\u0192X\u201a\u00cc\u0192v\u0192\u2030\u0192C\u0192x\ufffd[\u0192g IP \u0192A\u0192h\u0192\u0152\u0192X -label.baremetal.dhcp.provider=\u0192x\u0192A\u0192\ufffd\u0192^\u0192\u2039 DHCP \u0192v\u0192\ufffd\u0192o\u0192C\u0192_\ufffd[ -label.add.baremetal.dhcp.device=\u0192x\u0192A\u0192\ufffd\u0192^\u0192\u2039 DHCP \u0192f\u0192o\u0192C\u0192X\u201a\u00cc\u2019\u00c7\u2030\u00c1 -label.baremetal.pxe.provider=\u0192x\u0192A\u0192\ufffd\u0192^\u0192\u2039 PXE \u0192v\u0192\ufffd\u0192o\u0192C\u0192_\ufffd[ -label.baremetal.pxe.device=\u0192x\u0192A\u0192\ufffd\u0192^\u0192\u2039 PXE \u0192f\u0192o\u0192C\u0192X\u201a\u00cc\u2019\u00c7\u2030\u00c1 -label.tftp.root.directory=Tftp root directory -label.add.vmware.datacenter=VMware \u0192f\ufffd[\u0192^\u0192Z\u0192\u201c\u0192^\ufffd[\u201a\u00cc\u2019\u00c7\u2030\u00c1 -label.remove.vmware.datacenter=VMware \u0192f\ufffd[\u0192^\u0192Z\u0192\u201c\u0192^\ufffd[\u201a\u00cc\ufffd\u00ed\ufffd\u0153 -label.dc.name=DC \u2013\u00bc -label.vcenter=vcenter -label.dedicate.zone=\u0192]\ufffd[\u0192\u201c\u201a\u00f0\ufffd\u00ea\u2014p\u201a\u00c9\ufffd\u00dd\u2019\u00e8 -label.zone.dedicated=\ufffd\u00ea\u2014p\u0192]\ufffd[\u0192\u201c -label.release.dedicated.zone=\ufffd\u00ea\u2014p\u0192]\ufffd[\u0192\u201c\u201a\u00cc\u2030\u00f0\u2022\u00fa +label.gslb.service=GSLB \u30b5\u30fc\u30d3\u30b9 +label.gslb.service.public.ip=GSLB \u30b5\u30fc\u30d3\u30b9\u306e\u30d1\u30d6\u30ea\u30c3\u30af IP \u30a2\u30c9\u30ec\u30b9 +label.gslb.service.private.ip=GSLB \u30b5\u30fc\u30d3\u30b9\u306e\u30d7\u30e9\u30a4\u30d9\u30fc\u30c8 IP \u30a2\u30c9\u30ec\u30b9 +label.baremetal.dhcp.provider=\u30d9\u30a2\u30e1\u30bf\u30eb DHCP \u30d7\u30ed\u30d0\u30a4\u30c0\u30fc +label.add.baremetal.dhcp.device=\u30d9\u30a2\u30e1\u30bf\u30eb DHCP \u30c7\u30d0\u30a4\u30b9\u306e\u8ffd\u52a0 +label.baremetal.pxe.provider=\u30d9\u30a2\u30e1\u30bf\u30eb PXE \u30d7\u30ed\u30d0\u30a4\u30c0\u30fc +label.baremetal.pxe.device=\u30d9\u30a2\u30e1\u30bf\u30eb PXE \u30c7\u30d0\u30a4\u30b9\u306e\u8ffd\u52a0 +label.tftp.root.directory=TFTP \u30eb\u30fc\u30c8 \u30c7\u30a3\u30ec\u30af\u30c8\u30ea +label.add.vmware.datacenter=VMware \u30c7\u30fc\u30bf\u30bb\u30f3\u30bf\u30fc\u306e\u8ffd\u52a0 +label.remove.vmware.datacenter=VMware \u30c7\u30fc\u30bf\u30bb\u30f3\u30bf\u30fc\u306e\u524a\u9664 +label.dc.name=DC \u540d +label.vcenter=vCenter +label.dedicate.zone=\u30be\u30fc\u30f3\u3092\u5c02\u7528\u306b\u8a2d\u5b9a +label.zone.dedicated=\u5c02\u7528\u30be\u30fc\u30f3 +label.release.dedicated.zone=\u5c02\u7528\u30be\u30fc\u30f3\u306e\u89e3\u653e label.ipv6.dns1=IPv6 DNS 1 label.ipv6.dns2=IPv6 DNS 2 -label.vmware.datacenter.name=VMware \u0192f\ufffd[\u0192^\u0192Z\u0192\u201c\u0192^\ufffd[\u2013\u00bc -label.vmware.datacenter.vcenter=VMware datacenter vcenter -label.vmware.datacenter.id=VMware datacenter ID -label.system.vm.details=\u0192V\u0192X\u0192e\u0192\u20ac VM \u201a\u00cc\ufffd\u00da\ufffd\u00d7 -label.system.vm.scaled.up=\u0192V\u0192X\u0192e\u0192\u20ac VM \u201a\u00cc\u0192T\u0192C\u0192Y\u201a\u00aa\u0160g\u2018\u00e5\u201a\u00b3\u201a\u00ea\u201a\u00dc\u201a\u00b5\u201a\u00bd -label.console.proxy.vm=\u0192R\u0192\u201c\u0192\\ufffd[\u0192\u2039 \u0192v\u0192\ufffd\u0192L\u0192V VM -label.settings=\ufffd\u00dd\u2019\u00e8 -label.requires.upgrade=\u0192A\u0192b\u0192v\u0192O\u0192\u0152\ufffd[\u0192h\u201a\u00aa\u2022K\u2014v -label.upgrade.router.newer.template=\u0192\u2039\ufffd[\u0192^\ufffd[\u201a\u00f0\u0192A\u0192b\u0192v\u0192O\u0192\u0152\ufffd[\u0192h\u201a\u00b5\u201a\u00c4\ufffdV\u201a\u00b5\u201a\u00a2\u0192e\u0192\u201c\u0192v\u0192\u0152\ufffd[\u0192g\u201a\u00f0\u017dg\u2014p\u201a\u00b7\u201a\u00e9 -label.router.vm.scaled.up=\u0192\u2039\ufffd[\u0192^\ufffd[ VM \u201a\u00cc\u0192T\u0192C\u0192Y\u201a\u00aa\u0160g\u2018\u00e5\u201a\u00b3\u201a\u00ea\u201a\u00dc\u201a\u00b5\u201a\u00bd -label.total.virtual.routers=\u2030\u00bc\u2018z\u0192\u2039\ufffd[\u0192^\ufffd[\ufffd\u2021\u0152v -label.upgrade.required=\u0192A\u0192b\u0192v\u0192O\u0192\u0152\ufffd[\u0192h\u201a\u00aa\u2022K\u2014v\u201a\u00c5\u201a\u00b7 -label.virtual.routers.group.zone=\u0192]\ufffd[\u0192\u201c\u2022\u00ca\u201a\u00cc\u2030\u00bc\u2018z\u0192\u2039\ufffd[\u0192^\ufffd[ \u0192O\u0192\u2039\ufffd[\u0192v -label.total.virtual.routers.upgrade=\u0192A\u0192b\u0192v\u0192O\u0192\u0152\ufffd[\u0192h\u201a\u00aa\u2022K\u2014v\u201a\u00c8\u2030\u00bc\u2018z\u0192\u2039\ufffd[\u0192^\ufffd[\ufffd\u2021\u0152v -label.virtual.routers.group.pod=\u0192|\u0192b\u0192h\u2022\u00ca\u201a\u00cc\u2030\u00bc\u2018z\u0192\u2039\ufffd[\u0192^\ufffd[ \u0192O\u0192\u2039\ufffd[\u0192v -label.virtual.routers.group.cluster=\u0192N\u0192\u2030\u0192X\u0192^\ufffd[\u2022\u00ca\u201a\u00cc\u2030\u00bc\u2018z\u0192\u2039\ufffd[\u0192^\ufffd[ \u0192O\u0192\u2039\ufffd[\u0192v -label.zone.lower=\u0192]\ufffd[\u0192\u201c -label.virtual.routers.group.account=\u0192A\u0192J\u0192E\u0192\u201c\u0192g\u2022\u00ca\u201a\u00cc\u2030\u00bc\u2018z\u0192\u2039\ufffd[\u0192^\ufffd[ \u0192O\u0192\u2039\ufffd[\u0192v -label.netscaler.details=NetScaler \u201a\u00cc\ufffd\u00da\ufffd\u00d7 -label.baremetal.dhcp.devices=\u0192x\u0192A\u0192\ufffd\u0192^\u0192\u2039 DHCP \u0192f\u0192o\u0192C\u0192X -label.baremetal.pxe.devices=\u0192x\u0192A\u0192\ufffd\u0192^\u0192\u2039 PXE \u0192f\u0192o\u0192C\u0192X -label.addes.new.f5=\ufffdV\u201a\u00b5\u201a\u00a2 F5 \u201a\u00f0\u2019\u00c7\u2030\u00c1\u201a\u00b5\u201a\u00dc\u201a\u00b5\u201a\u00bd -label.f5.details=F5 \u201a\u00cc\ufffd\u00da\ufffd\u00d7 -label.srx.details=SRX \u201a\u00cc\ufffd\u00da\ufffd\u00d7 -label.palo.alto.details=Palo Alto \u201a\u00cc\ufffd\u00da\ufffd\u00d7 -label.added.nicira.nvp.controller=\ufffdV\u201a\u00b5\u201a\u00a2 Nicira NVP Controller \u201a\u00f0\u2019\u00c7\u2030\u00c1\u201a\u00b5\u201a\u00dc\u201a\u00b5\u201a\u00bd -label.nicira.nvp.details=Nicira NVP \u201a\u00cc\ufffd\u00da\ufffd\u00d7 -label.added.brocade.vcs.switch=Added new Brocade Vcs Switch -label.brocade.vcs.details=Brocade Vcs Switch details -label.added.new.bigswitch.vns.controller=\ufffdV\u201a\u00b5\u201a\u00a2 Big Switch VNS \u0192R\u0192\u201c\u0192g\u0192\ufffd\ufffd[\u0192\u2030\ufffd[\u201a\u00f0\u2019\u00c7\u2030\u00c1\u201a\u00b5\u201a\u00dc\u201a\u00b5\u201a\u00bd -label.bigswitch.vns.details=Big Switch VNS \u201a\u00cc\ufffd\u00da\ufffd\u00d7 -label.dedicate=\ufffd\u00ea\u2014p\u201a\u00c9\ufffd\u00dd\u2019\u00e8 -label.dedicate.pod=\u0192|\u0192b\u0192h\u201a\u00f0\ufffd\u00ea\u2014p\u201a\u00c9\ufffd\u00dd\u2019\u00e8 -label.pod.dedicated=\u0192|\u0192b\u0192h\u201a\u00f0\ufffd\u00ea\u2014p\u201a\u00c9\ufffd\u00dd\u2019\u00e8\u201a\u00b5\u201a\u00dc\u201a\u00b5\u201a\u00bd -label.release.dedicated.pod=\ufffd\u00ea\u2014p\u0192|\u0192b\u0192h\u201a\u00cc\u2030\u00f0\u2022\u00fa -label.override.public.traffic=\u0192p\u0192u\u0192\u0160\u0192b\u0192N \u0192g\u0192\u2030\u0192t\u0192B\u0192b\u0192N\u201a\u00f0\u0192I\ufffd[\u0192o\ufffd[\u0192\u2030\u0192C\u0192h\u201a\u00b7\u201a\u00e9 -label.public.traffic.vswitch.type=\u0192p\u0192u\u0192\u0160\u0192b\u0192N \u0192g\u0192\u2030\u0192t\u0192B\u0192b\u0192N\u201a\u00cc vSwitch \u201a\u00cc\u017d\u00ed\u2014\u00de -label.public.traffic.vswitch.name=\u0192p\u0192u\u0192\u0160\u0192b\u0192N \u0192g\u0192\u2030\u0192t\u0192B\u0192b\u0192N\u201a\u00cc vSwitch \u2013\u00bc -label.override.guest.traffic=\u0192Q\u0192X\u0192g \u0192g\u0192\u2030\u0192t\u0192B\u0192b\u0192N\u201a\u00f0\u0192I\ufffd[\u0192o\ufffd[\u0192\u2030\u0192C\u0192h\u201a\u00b7\u201a\u00e9 -label.guest.traffic.vswitch.type=\u0192Q\u0192X\u0192g \u0192g\u0192\u2030\u0192t\u0192B\u0192b\u0192N\u201a\u00cc vSwitch \u201a\u00cc\u017d\u00ed\u2014\u00de -label.guest.traffic.vswitch.name=\u0192Q\u0192X\u0192g \u0192g\u0192\u2030\u0192t\u0192B\u0192b\u0192N\u201a\u00cc vSwitch \u2013\u00bc -label.cisco.nexus1000v.ip.address=Nexus 1000V \u201a\u00cc IP \u0192A\u0192h\u0192\u0152\u0192X -label.cisco.nexus1000v.username=Nexus 1000V \u201a\u00cc\u0192\u2020\ufffd[\u0192U\ufffd[\u2013\u00bc -label.cisco.nexus1000v.password=Nexus 1000V \u201a\u00cc\u0192p\u0192X\u0192\ufffd\ufffd[\u0192h -label.dedicate.cluster=\u0192N\u0192\u2030\u0192X\u0192^\ufffd[\u201a\u00f0\ufffd\u00ea\u2014p\u201a\u00c9\ufffd\u00dd\u2019\u00e8 -label.release.dedicated.cluster=\ufffd\u00ea\u2014p\u0192N\u0192\u2030\u0192X\u0192^\ufffd[\u201a\u00cc\u2030\u00f0\u2022\u00fa -label.dedicate.host=\u0192z\u0192X\u0192g\u201a\u00f0\ufffd\u00ea\u2014p\u201a\u00c9\ufffd\u00dd\u2019\u00e8 -label.release.dedicated.host=\ufffd\u00ea\u2014p\u0192z\u0192X\u0192g\u201a\u00cc\u2030\u00f0\u2022\u00fa -label.number.of.cpu.sockets=CPU \u0192\\u0192P\u0192b\u0192g\ufffd\u201d -label.delete.ucs.manager=UCS Manager \u201a\u00cc\ufffd\u00ed\ufffd\u0153 -label.blades=\u0192u\u0192\u0152\ufffd[\u0192h -label.chassis=\u0192V\u0192\u0192\ufffd[\u0192V -label.blade.id=\u0192u\u0192\u0152\ufffd[\u0192h ID -label.associated.profile=\u0160\u00d6\u02dcA\u2022t\u201a\u00af\u201a\u00e7\u201a\u00ea\u201a\u00bd\u0192v\u0192\ufffd\u0192t\u0192@\u0192C\u0192\u2039 -label.refresh.blades=\u0192u\u0192\u0152\ufffd[\u0192h\u201a\u00cc\ufffdX\ufffdV -label.instanciate.template.associate.profile.blade=\u0192e\u0192\u201c\u0192v\u0192\u0152\ufffd[\u0192g\u201a\u00cc\u0192C\u0192\u201c\u0192X\u0192^\u0192\u201c\u0192X\ufffd\u00ec\ufffd\u00ac\u201a\u00a8\u201a\u00e6\u201a\u00d1\u0192v\u0192\ufffd\u0192t\u0192@\u0192C\u0192\u2039\u201a\u00c6\u0192u\u0192\u0152\ufffd[\u0192h\u201a\u00cc\u0160\u00d6\u02dcA\u2022t\u201a\u00af -label.select.template=\u0192e\u0192\u201c\u0192v\u0192\u0152\ufffd[\u0192g\u201a\u00cc\u2018I\u2018\u00f0 -label.profile=\u0192v\u0192\ufffd\u0192t\u0192@\u0192C\u0192\u2039 -label.delete.profile=\u0192v\u0192\ufffd\u0192t\u0192@\u0192C\u0192\u2039\u201a\u00cc\ufffd\u00ed\ufffd\u0153 -label.disassociate.profile.blade=\u0192v\u0192\ufffd\u0192t\u0192@\u0192C\u0192\u2039\u201a\u00c6\u0192u\u0192\u0152\ufffd[\u0192h\u201a\u00cc\u0160\u00d6\u02dcA\u2022t\u201a\u00af\u201a\u00cc\u2030\u00f0\ufffd\u0153 -label.secondary.storage.details=\u0192Z\u0192J\u0192\u201c\u0192_\u0192\u0160 \u0192X\u0192g\u0192\u0152\ufffd[\u0192W\u201a\u00cc\ufffd\u00da\ufffd\u00d7 -label.secondary.staging.store.details=\u0192Z\u0192J\u0192\u201c\u0192_\u0192\u0160 \u0192X\u0192e\ufffd[\u0192W\u0192\u201c\u0192O \u0192X\u0192g\u0192A\u201a\u00cc\ufffd\u00da\ufffd\u00d7 -label.add.nfs.secondary.staging.store=NFS \u0192Z\u0192J\u0192\u201c\u0192_\u0192\u0160 \u0192X\u0192e\ufffd[\u0192W\u0192\u201c\u0192O \u0192X\u0192g\u0192A\u201a\u00cc\u2019\u00c7\u2030\u00c1 -label.delete.secondary.staging.store=\u0192Z\u0192J\u0192\u201c\u0192_\u0192\u0160 \u0192X\u0192e\ufffd[\u0192W\u0192\u201c\u0192O \u0192X\u0192g\u0192A\u201a\u00cc\ufffd\u00ed\ufffd\u0153 -label.ipv4.start.ip=IPv4 \u0160J\u017dn IP \u0192A\u0192h\u0192\u0152\u0192X -label.ipv4.end.ip=IPv4 \ufffdI\u2014\u00b9 IP \u0192A\u0192h\u0192\u0152\u0192X -label.ipv6.start.ip=IPv6 \u0160J\u017dn IP \u0192A\u0192h\u0192\u0152\u0192X -label.ipv6.end.ip=IPv6 \ufffdI\u2014\u00b9 IP \u0192A\u0192h\u0192\u0152\u0192X -label.vm.password=VM \u201a\u00cc\u0192p\u0192X\u0192\ufffd\ufffd[\u0192h: -label.group.by.zone=Group by zone -label.group.by.pod=Group by pod -label.group.by.cluster=Group by cluster -label.group.by.account=Group by account -label.no.grouping=(\u0192O\u0192\u2039\ufffd[\u0192v\u201a\u00c8\u201a\u00b5) -label.create.nfs.secondary.staging.storage=NFS \u0192Z\u0192J\u0192\u201c\u0192_\u0192\u0160 \u0192X\u0192e\ufffd[\u0192W\u0192\u201c\u0192O \u0192X\u0192g\u0192A\u201a\u00f0\ufffd\u00ec\ufffd\u00ac\u201a\u00b7\u201a\u00e9 -label.username.lower=\u0192\u2020\ufffd[\u0192U\ufffd[\u2013\u00bc -label.password.lower=\u0192p\u0192X\u0192\ufffd\ufffd[\u0192h -label.email.lower=\u201cd\u017dq\u0192\ufffd\ufffd[\u0192\u2039 -label.firstname.lower=\u2013\u00bc -label.lastname.lower=\ufffd\u00a9 -label.domain.lower=\u0192h\u0192\ufffd\u0192C\u0192\u201c -label.account.lower=\u0192A\u0192J\u0192E\u0192\u201c\u0192g -label.type.lower=\u017d\u00ed\u2014\u00de -label.rule.number=\u2039K\u2018\u00a5\u201d\u00d4\ufffd\u2020 -label.action=\u2018\u20ac\ufffd\u00ec -label.name.lower=\u2013\u00bc\u2018O +label.vmware.datacenter.name=VMware \u30c7\u30fc\u30bf\u30bb\u30f3\u30bf\u30fc\u540d +label.vmware.datacenter.vcenter=VMware \u30c7\u30fc\u30bf\u30bb\u30f3\u30bf\u30fc\u306e vCenter +label.vmware.datacenter.id=VMware \u30c7\u30fc\u30bf\u30bb\u30f3\u30bf\u30fc ID +label.system.vm.details=\u30b7\u30b9\u30c6\u30e0 VM \u306e\u8a73\u7d30 +label.system.vm.scaled.up=\u30b7\u30b9\u30c6\u30e0 VM \u306e\u30b5\u30a4\u30ba\u304c\u62e1\u5927\u3055\u308c\u307e\u3057\u305f +label.console.proxy.vm=\u30b3\u30f3\u30bd\u30fc\u30eb \u30d7\u30ed\u30ad\u30b7 VM +label.settings=\u8a2d\u5b9a +label.requires.upgrade=\u30a2\u30c3\u30d7\u30b0\u30ec\u30fc\u30c9\u304c\u5fc5\u8981 +label.upgrade.router.newer.template=\u30eb\u30fc\u30bf\u30fc\u3092\u30a2\u30c3\u30d7\u30b0\u30ec\u30fc\u30c9\u3057\u3066\u65b0\u3057\u3044\u30c6\u30f3\u30d7\u30ec\u30fc\u30c8\u3092\u4f7f\u7528\u3059\u308b +label.router.vm.scaled.up=\u30eb\u30fc\u30bf\u30fc VM \u306e\u30b5\u30a4\u30ba\u304c\u62e1\u5927\u3055\u308c\u307e\u3057\u305f +label.total.virtual.routers=\u4eee\u60f3\u30eb\u30fc\u30bf\u30fc\u5408\u8a08 +label.upgrade.required=\u30a2\u30c3\u30d7\u30b0\u30ec\u30fc\u30c9\u304c\u5fc5\u8981\u3067\u3059 +label.virtual.routers.group.zone=\u30be\u30fc\u30f3\u5225\u306e\u4eee\u60f3\u30eb\u30fc\u30bf\u30fc \u30b0\u30eb\u30fc\u30d7 +label.total.virtual.routers.upgrade=\u30a2\u30c3\u30d7\u30b0\u30ec\u30fc\u30c9\u304c\u5fc5\u8981\u306a\u4eee\u60f3\u30eb\u30fc\u30bf\u30fc\u5408\u8a08 +label.virtual.routers.group.pod=\u30dd\u30c3\u30c9\u5225\u306e\u4eee\u60f3\u30eb\u30fc\u30bf\u30fc \u30b0\u30eb\u30fc\u30d7 +label.virtual.routers.group.cluster=\u30af\u30e9\u30b9\u30bf\u30fc\u5225\u306e\u4eee\u60f3\u30eb\u30fc\u30bf\u30fc \u30b0\u30eb\u30fc\u30d7 +label.zone.lower=\u30be\u30fc\u30f3 +label.virtual.routers.group.account=\u30a2\u30ab\u30a6\u30f3\u30c8\u5225\u306e\u4eee\u60f3\u30eb\u30fc\u30bf\u30fc \u30b0\u30eb\u30fc\u30d7 +label.netscaler.details=NetScaler \u306e\u8a73\u7d30 +label.baremetal.dhcp.devices=\u30d9\u30a2\u30e1\u30bf\u30eb DHCP \u30c7\u30d0\u30a4\u30b9 +label.baremetal.pxe.devices=\u30d9\u30a2\u30e1\u30bf\u30eb PXE \u30c7\u30d0\u30a4\u30b9 +label.addes.new.f5=\u65b0\u3057\u3044 F5 \u3092\u8ffd\u52a0\u3057\u307e\u3057\u305f +label.f5.details=F5 \u306e\u8a73\u7d30 +label.srx.details=SRX \u306e\u8a73\u7d30 +label.palo.alto.details=Palo Alto \u306e\u8a73\u7d30 +label.added.nicira.nvp.controller=\u65b0\u3057\u3044 Nicira NVP Controller \u3092\u8ffd\u52a0\u3057\u307e\u3057\u305f +label.nicira.nvp.details=Nicira NVP \u306e\u8a73\u7d30 +label.added.brocade.vcs.switch=\u65b0\u3057\u3044 Brocade VCS \u30b9\u30a4\u30c3\u30c1\u3092\u8ffd\u52a0\u3057\u307e\u3057\u305f +label.brocade.vcs.details=Brocade VCS \u30b9\u30a4\u30c3\u30c1\u306e\u8a73\u7d30 +label.added.new.bigswitch.vns.controller=\u65b0\u3057\u3044 Big Switch VNS \u30b3\u30f3\u30c8\u30ed\u30fc\u30e9\u30fc\u3092\u8ffd\u52a0\u3057\u307e\u3057\u305f +label.bigswitch.vns.details=Big Switch VNS \u306e\u8a73\u7d30 +label.dedicate=\u5c02\u7528\u306b\u8a2d\u5b9a +label.dedicate.pod=\u30dd\u30c3\u30c9\u3092\u5c02\u7528\u306b\u8a2d\u5b9a +label.pod.dedicated=\u30dd\u30c3\u30c9\u3092\u5c02\u7528\u306b\u8a2d\u5b9a\u3057\u307e\u3057\u305f +label.release.dedicated.pod=\u5c02\u7528\u30dd\u30c3\u30c9\u306e\u89e3\u653e +label.override.public.traffic=\u30d1\u30d6\u30ea\u30c3\u30af \u30c8\u30e9\u30d5\u30a3\u30c3\u30af\u3092\u30aa\u30fc\u30d0\u30fc\u30e9\u30a4\u30c9\u3059\u308b +label.public.traffic.vswitch.type=\u30d1\u30d6\u30ea\u30c3\u30af \u30c8\u30e9\u30d5\u30a3\u30c3\u30af\u306e vSwitch \u306e\u7a2e\u985e +label.public.traffic.vswitch.name=\u30d1\u30d6\u30ea\u30c3\u30af \u30c8\u30e9\u30d5\u30a3\u30c3\u30af\u306e vSwitch \u540d +label.override.guest.traffic=\u30b2\u30b9\u30c8 \u30c8\u30e9\u30d5\u30a3\u30c3\u30af\u3092\u30aa\u30fc\u30d0\u30fc\u30e9\u30a4\u30c9\u3059\u308b +label.guest.traffic.vswitch.type=\u30b2\u30b9\u30c8 \u30c8\u30e9\u30d5\u30a3\u30c3\u30af\u306e vSwitch \u306e\u7a2e\u985e +label.guest.traffic.vswitch.name=\u30b2\u30b9\u30c8 \u30c8\u30e9\u30d5\u30a3\u30c3\u30af\u306e vSwitch \u540d +label.cisco.nexus1000v.ip.address=Nexus 1000V \u306e IP \u30a2\u30c9\u30ec\u30b9 +label.cisco.nexus1000v.username=Nexus 1000V \u306e\u30e6\u30fc\u30b6\u30fc\u540d +label.cisco.nexus1000v.password=Nexus 1000V \u306e\u30d1\u30b9\u30ef\u30fc\u30c9 +label.dedicate.cluster=\u30af\u30e9\u30b9\u30bf\u30fc\u3092\u5c02\u7528\u306b\u8a2d\u5b9a +label.release.dedicated.cluster=\u5c02\u7528\u30af\u30e9\u30b9\u30bf\u30fc\u306e\u89e3\u653e +label.dedicate.host=\u30db\u30b9\u30c8\u3092\u5c02\u7528\u306b\u8a2d\u5b9a +label.release.dedicated.host=\u5c02\u7528\u30db\u30b9\u30c8\u306e\u89e3\u653e +label.number.of.cpu.sockets=CPU \u30bd\u30b1\u30c3\u30c8\u6570 +label.delete.ucs.manager=UCS Manager \u306e\u524a\u9664 +label.blades=\u30d6\u30ec\u30fc\u30c9 +label.chassis=\u30b7\u30e3\u30fc\u30b7 +label.blade.id=\u30d6\u30ec\u30fc\u30c9 ID +label.associated.profile=\u95a2\u9023\u4ed8\u3051\u3089\u308c\u305f\u30d7\u30ed\u30d5\u30a1\u30a4\u30eb +label.refresh.blades=\u30d6\u30ec\u30fc\u30c9\u306e\u66f4\u65b0 +label.instanciate.template.associate.profile.blade=\u30c6\u30f3\u30d7\u30ec\u30fc\u30c8\u306e\u30a4\u30f3\u30b9\u30bf\u30f3\u30b9\u4f5c\u6210\u304a\u3088\u3073\u30d7\u30ed\u30d5\u30a1\u30a4\u30eb\u3068\u30d6\u30ec\u30fc\u30c9\u306e\u95a2\u9023\u4ed8\u3051 +label.select.template=\u30c6\u30f3\u30d7\u30ec\u30fc\u30c8\u306e\u9078\u629e +label.profile=\u30d7\u30ed\u30d5\u30a1\u30a4\u30eb +label.delete.profile=\u30d7\u30ed\u30d5\u30a1\u30a4\u30eb\u306e\u524a\u9664 +label.disassociate.profile.blade=\u30d7\u30ed\u30d5\u30a1\u30a4\u30eb\u3068\u30d6\u30ec\u30fc\u30c9\u306e\u95a2\u9023\u4ed8\u3051\u306e\u89e3\u9664 +label.secondary.storage.details=\u30bb\u30ab\u30f3\u30c0\u30ea \u30b9\u30c8\u30ec\u30fc\u30b8\u306e\u8a73\u7d30 +label.secondary.staging.store.details=\u30bb\u30ab\u30f3\u30c0\u30ea \u30b9\u30c6\u30fc\u30b8\u30f3\u30b0 \u30b9\u30c8\u30a2\u306e\u8a73\u7d30 +label.add.nfs.secondary.staging.store=NFS \u30bb\u30ab\u30f3\u30c0\u30ea \u30b9\u30c6\u30fc\u30b8\u30f3\u30b0 \u30b9\u30c8\u30a2\u306e\u8ffd\u52a0 +label.delete.secondary.staging.store=\u30bb\u30ab\u30f3\u30c0\u30ea \u30b9\u30c6\u30fc\u30b8\u30f3\u30b0 \u30b9\u30c8\u30a2\u306e\u524a\u9664 +label.ipv4.start.ip=IPv4 \u958b\u59cb IP \u30a2\u30c9\u30ec\u30b9 +label.ipv4.end.ip=IPv4 \u7d42\u4e86 IP \u30a2\u30c9\u30ec\u30b9 +label.ipv6.start.ip=IPv6 \u958b\u59cb IP \u30a2\u30c9\u30ec\u30b9 +label.ipv6.end.ip=IPv6 \u7d42\u4e86 IP \u30a2\u30c9\u30ec\u30b9 +label.vm.password=VM \u306e\u30d1\u30b9\u30ef\u30fc\u30c9: +label.group.by.zone=\u30be\u30fc\u30f3\u5225\u30b0\u30eb\u30fc\u30d7 +label.group.by.pod=\u30dd\u30c3\u30c9\u5225\u30b0\u30eb\u30fc\u30d7 +label.group.by.cluster=\u30af\u30e9\u30b9\u30bf\u30fc\u5225\u30b0\u30eb\u30fc\u30d7 +label.group.by.account=\u30a2\u30ab\u30a6\u30f3\u30c8\u5225\u30b0\u30eb\u30fc\u30d7 +label.no.grouping=(\u30b0\u30eb\u30fc\u30d7\u306a\u3057) +label.create.nfs.secondary.staging.storage=NFS \u30bb\u30ab\u30f3\u30c0\u30ea \u30b9\u30c6\u30fc\u30b8\u30f3\u30b0 \u30b9\u30c8\u30a2\u3092\u4f5c\u6210\u3059\u308b +label.username.lower=\u30e6\u30fc\u30b6\u30fc\u540d +label.password.lower=\u30d1\u30b9\u30ef\u30fc\u30c9 +label.email.lower=\u96fb\u5b50\u30e1\u30fc\u30eb +label.firstname.lower=\u540d +label.lastname.lower=\u59d3 +label.domain.lower=\u30c9\u30e1\u30a4\u30f3 +label.account.lower=\u30a2\u30ab\u30a6\u30f3\u30c8 +label.type.lower=\u7a2e\u985e +label.rule.number=\u898f\u5247\u756a\u53f7 +label.action=\u64cd\u4f5c +label.name.lower=\u540d\u524d label.ucs=UCS -label.change.affinity=\u0192A\u0192t\u0192B\u0192j\u0192e\u0192B\u201a\u00cc\u2022\u00cf\ufffdX -label.persistent=\u2030i\u2018\u00b1 -label.broadcasturi=\u0192u\u0192\ufffd\ufffd[\u0192h\u0192L\u0192\u0192\u0192X\u0192g URI -label.network.cidr=\u0192l\u0192b\u0192g\u0192\ufffd\ufffd[\u0192N CIDR -label.reserved.ip.range=\u2014\\u2013\u00f1\ufffd\u00cf\u201a\u00dd IP \u0192A\u0192h\u0192\u0152\u0192X\u201a\u00cc\u201d\u00cd\u02c6\u00cd -label.autoscale=\u017d\u00a9\u201c\u00ae\u0192T\u0192C\u0192Y\ufffd\u00dd\u2019\u00e8 -label.health.check=\u0192w\u0192\u2039\u0192X \u0192`\u0192F\u0192b\u0192N -label.public.load.balancer.provider=\u0192p\u0192u\u0192\u0160\u0192b\u0192N \u0192\ufffd\ufffd[\u0192h \u0192o\u0192\u2030\u0192\u201c\u0192T\ufffd[ \u0192v\u0192\ufffd\u0192o\u0192C\u0192_\ufffd[ -label.add.isolated.network=\u2022\u00aa\u2014\u00a3\u201a\u00b3\u201a\u00ea\u201a\u00bd\u0192l\u0192b\u0192g\u0192\ufffd\ufffd[\u0192N\u201a\u00cc\u2019\u00c7\u2030\u00c1 +label.change.affinity=\u30a2\u30d5\u30a3\u30cb\u30c6\u30a3\u306e\u5909\u66f4 +label.persistent=\u6c38\u7d9a +label.broadcasturi=\u30d6\u30ed\u30fc\u30c9\u30ad\u30e3\u30b9\u30c8 URI +label.network.cidr=\u30cd\u30c3\u30c8\u30ef\u30fc\u30af CIDR +label.reserved.ip.range=\u4e88\u7d04\u6e08\u307f IP \u30a2\u30c9\u30ec\u30b9\u306e\u7bc4\u56f2 +label.autoscale=\u81ea\u52d5\u30b5\u30a4\u30ba\u8a2d\u5b9a +label.health.check=\u30d8\u30eb\u30b9 \u30c1\u30a7\u30c3\u30af +label.public.load.balancer.provider=\u30d1\u30d6\u30ea\u30c3\u30af \u30ed\u30fc\u30c9 \u30d0\u30e9\u30f3\u30b5\u30fc \u30d7\u30ed\u30d0\u30a4\u30c0\u30fc +label.add.isolated.network=\u5206\u96e2\u3055\u308c\u305f\u30cd\u30c3\u30c8\u30ef\u30fc\u30af\u306e\u8ffd\u52a0 label.vlan=VLAN -label.secondary.isolated.vlan.id=\u2022\u00aa\u2014\u00a3\u201a\u00b3\u201a\u00ea\u201a\u00bd\u0192Z\u0192J\u0192\u201c\u0192_\u0192\u0160 VLAN ID -label.ipv4.netmask=IPv4 \u0192l\u0192b\u0192g\u0192}\u0192X\u0192N -label.custom=\u0192J\u0192X\u0192^\u0192\u20ac -label.disable.network.offering=\u0192l\u0192b\u0192g\u0192\ufffd\ufffd[\u0192N \u0192I\u0192t\u0192@\u0192\u0160\u0192\u201c\u0192O\u201a\u00cc\u2013\u00b3\u0152\u00f8\u2030\u00bb -label.enable.network.offering=\u0192l\u0192b\u0192g\u0192\ufffd\ufffd[\u0192N \u0192I\u0192t\u0192@\u0192\u0160\u0192\u201c\u0192O\u201a\u00cc\u2014L\u0152\u00f8\u2030\u00bb -label.remove.network.offering=\u0192l\u0192b\u0192g\u0192\ufffd\ufffd[\u0192N \u0192I\u0192t\u0192@\u0192\u0160\u0192\u201c\u0192O\u201a\u00cc\ufffd\u00ed\ufffd\u0153 -label.system.offering.for.router=\u0192\u2039\ufffd[\u0192^\ufffd[\u2014p\u0192V\u0192X\u0192e\u0192\u20ac \u0192I\u0192t\u0192@\u0192\u0160\u0192\u201c\u0192O -label.mode=\u0192\u201a\ufffd[\u0192h -label.associate.public.ip=\u0192p\u0192u\u0192\u0160\u0192b\u0192N IP \u0192A\u0192h\u0192\u0152\u0192X\u201a\u00cc\u0160\u00d6\u02dcA\u2022t\u201a\u00af +label.secondary.isolated.vlan.id=\u5206\u96e2\u3055\u308c\u305f\u30bb\u30ab\u30f3\u30c0\u30ea VLAN ID +label.ipv4.netmask=IPv4 \u30cd\u30c3\u30c8\u30de\u30b9\u30af +label.custom=\u30ab\u30b9\u30bf\u30e0 +label.disable.network.offering=\u30cd\u30c3\u30c8\u30ef\u30fc\u30af \u30aa\u30d5\u30a1\u30ea\u30f3\u30b0\u306e\u7121\u52b9\u5316 +label.enable.network.offering=\u30cd\u30c3\u30c8\u30ef\u30fc\u30af \u30aa\u30d5\u30a1\u30ea\u30f3\u30b0\u306e\u6709\u52b9\u5316 +label.remove.network.offering=\u30cd\u30c3\u30c8\u30ef\u30fc\u30af \u30aa\u30d5\u30a1\u30ea\u30f3\u30b0\u306e\u524a\u9664 +label.system.offering.for.router=\u30eb\u30fc\u30bf\u30fc\u7528\u30b7\u30b9\u30c6\u30e0 \u30aa\u30d5\u30a1\u30ea\u30f3\u30b0 +label.mode=\u30e2\u30fc\u30c9 +label.associate.public.ip=\u30d1\u30d6\u30ea\u30c3\u30af IP \u30a2\u30c9\u30ec\u30b9\u306e\u95a2\u9023\u4ed8\u3051 label.acl=ACL -label.user.data=\u0192\u2020\ufffd[\u0192U\ufffd[ \u0192f\ufffd[\u0192^ -label.virtual.networking=\u2030\u00bc\u2018z\u0192l\u0192b\u0192g\u0192\ufffd\ufffd[\u0192N -label.allow=\u2039\u2013\u2030\u00c2 -label.deny=\u2039\u2018\u201d\u00db -label.default.egress.policy=\u0192f\u0192t\u0192H\u0192\u2039\u0192g\u201a\u00cc\u2018\u2014\ufffdM\u0192|\u0192\u0160\u0192V\ufffd[ -label.xenserver.tools.version.61.plus=Original XS Version is 6.1\+ +label.user.data=\u30e6\u30fc\u30b6\u30fc \u30c7\u30fc\u30bf +label.virtual.networking=\u4eee\u60f3\u30cd\u30c3\u30c8\u30ef\u30fc\u30af +label.allow=\u8a31\u53ef +label.deny=\u62d2\u5426 +label.default.egress.policy=\u30c7\u30d5\u30a9\u30eb\u30c8\u306e\u9001\u4fe1\u30dd\u30ea\u30b7\u30fc +label.xenserver.tools.version.61.plus=\u5143\u306e XS \u30d0\u30fc\u30b8\u30e7\u30f3\u306f 6.1 \u4ee5\u964d label.gpu=GPU -label.vgpu.type=vGPU \u201a\u00cc\u017d\u00ed\u2014\u00de -label.vgpu.video.ram=\u0192r\u0192f\u0192I RAM -label.vgpu.max.resolution=\ufffd\u00c5\u2018\u00e5\u2030\u00f0\u2018\u0153\u201cx -label.vgpu.max.vgpu.per.gpu=GPU \u201a\u00a0\u201a\u00bd\u201a\u00e8\u201a\u00cc vGPU \ufffd\u201d -label.vgpu.remaining.capacity=\u017dc\u2018\u00b6\ufffd\u02c6\u2014\ufffd\u201d\\u2014\u00cd -managed.state=\u0160\u00c7\u2014\ufffd\u2018\u00ce\ufffd\u00db\ufffd\u00f3\u2018\u00d4 -message.acquire.new.ip.vpc=\u201a\u00b1\u201a\u00cc VPC \u201a\u00cc\ufffdV\u201a\u00b5\u201a\u00a2 IP \u0192A\u0192h\u0192\u0152\u0192X\u201a\u00f0\u017d\u00e6\u201c\u00be\u201a\u00b5\u201a\u00c4\u201a\u00e0\u201a\u00e6\u201a\u00eb\u201a\u00b5\u201a\u00a2\u201a\u00c5\u201a\u00b7\u201a\u00a9? -message.acquire.new.ip=\u201a\u00b1\u201a\u00cc\u0192l\u0192b\u0192g\u0192\ufffd\ufffd[\u0192N\u201a\u00cc\ufffdV\u201a\u00b5\u201a\u00a2 IP \u0192A\u0192h\u0192\u0152\u0192X\u201a\u00f0\u017d\u00e6\u201c\u00be\u201a\u00b5\u201a\u00c4\u201a\u00e0\u201a\u00e6\u201a\u00eb\u201a\u00b5\u201a\u00a2\u201a\u00c5\u201a\u00b7\u201a\u00a9? -message.acquire.public.ip=\ufffdV\u201a\u00b5\u201a\u00a2 IP \u0192A\u0192h\u0192\u0152\u0192X\u201a\u00f0\u017d\u00e6\u201c\u00be\u201a\u00b7\u201a\u00e9\u0192]\ufffd[\u0192\u201c\u201a\u00f0\u2018I\u2018\u00f0\u201a\u00b5\u201a\u00c4\u201a\u00ad\u201a\u00be\u201a\u00b3\u201a\u00a2\ufffdB -message.action.cancel.maintenance.mode=\u201a\u00b1\u201a\u00cc\u2022\u00db\u017d\u00e7\u201a\u00f0\u0192L\u0192\u0192\u0192\u201c\u0192Z\u0192\u2039\u201a\u00b5\u201a\u00c4\u201a\u00e0\u201a\u00e6\u201a\u00eb\u201a\u00b5\u201a\u00a2\u201a\u00c5\u201a\u00b7\u201a\u00a9? -message.action.cancel.maintenance=\u0192z\u0192X\u0192g\u201a\u00cc\u2022\u00db\u017d\u00e7\u201a\u00cd\ufffd\u00b3\ufffd\u00ed\u201a\u00c9\u0192L\u0192\u0192\u0192\u201c\u0192Z\u0192\u2039\u201a\u00b3\u201a\u00ea\u201a\u00dc\u201a\u00b5\u201a\u00bd\ufffdB\u201a\u00b1\u201a\u00cc\ufffd\u02c6\u2014\ufffd\u201a\u00c9\u201a\u00cd\ufffd\u201d\u2022\u00aa\u201a\u00a9\u201a\u00a9\u201a\u00e9\u2030\u00c2\u201d\\ufffd\u00ab\u201a\u00aa\u201a\u00a0\u201a\u00e8\u201a\u00dc\u201a\u00b7\ufffdB -message.action.change.service.warning.for.instance=\u0152\u00bb\ufffd\u00dd\u201a\u00cc\u0192T\ufffd[\u0192r\u0192X \u0192I\u0192t\u0192@\u0192\u0160\u0192\u201c\u0192O\u201a\u00f0\u2022\u00cf\ufffdX\u201a\u00b7\u201a\u00e9\u2018O\u201a\u00c9\u0192C\u0192\u201c\u0192X\u0192^\u0192\u201c\u0192X\u201a\u00f0\u2019\u00e2\u017d~\u201a\u00b7\u201a\u00e9\u2022K\u2014v\u201a\u00aa\u201a\u00a0\u201a\u00e8\u201a\u00dc\u201a\u00b7\ufffdB -message.action.change.service.warning.for.router=\u0152\u00bb\ufffd\u00dd\u201a\u00cc\u0192T\ufffd[\u0192r\u0192X \u0192I\u0192t\u0192@\u0192\u0160\u0192\u201c\u0192O\u201a\u00f0\u2022\u00cf\ufffdX\u201a\u00b7\u201a\u00e9\u2018O\u201a\u00c9\u0192\u2039\ufffd[\u0192^\ufffd[\u201a\u00f0\u2019\u00e2\u017d~\u201a\u00b7\u201a\u00e9\u2022K\u2014v\u201a\u00aa\u201a\u00a0\u201a\u00e8\u201a\u00dc\u201a\u00b7\ufffdB -message.action.delete.cluster=\u201a\u00b1\u201a\u00cc\u0192N\u0192\u2030\u0192X\u0192^\ufffd[\u201a\u00f0\ufffd\u00ed\ufffd\u0153\u201a\u00b5\u201a\u00c4\u201a\u00e0\u201a\u00e6\u201a\u00eb\u201a\u00b5\u201a\u00a2\u201a\u00c5\u201a\u00b7\u201a\u00a9? -message.action.delete.disk.offering=\u201a\u00b1\u201a\u00cc\u0192f\u0192B\u0192X\u0192N \u0192I\u0192t\u0192@\u0192\u0160\u0192\u201c\u0192O\u201a\u00f0\ufffd\u00ed\ufffd\u0153\u201a\u00b5\u201a\u00c4\u201a\u00e0\u201a\u00e6\u201a\u00eb\u201a\u00b5\u201a\u00a2\u201a\u00c5\u201a\u00b7\u201a\u00a9? -message.action.delete.domain=\u201a\u00b1\u201a\u00cc\u0192h\u0192\ufffd\u0192C\u0192\u201c\u201a\u00f0\ufffd\u00ed\ufffd\u0153\u201a\u00b5\u201a\u00c4\u201a\u00e0\u201a\u00e6\u201a\u00eb\u201a\u00b5\u201a\u00a2\u201a\u00c5\u201a\u00b7\u201a\u00a9? -message.action.delete.external.firewall=\u201a\u00b1\u201a\u00cc\u0160O\u2022\u201d\u0192t\u0192@\u0192C\u0192A\u0192E\u0192H\ufffd[\u0192\u2039\u201a\u00f0\ufffd\u00ed\ufffd\u0153\u201a\u00b5\u201a\u00c4\u201a\u00e0\u201a\u00e6\u201a\u00eb\u201a\u00b5\u201a\u00a2\u201a\u00c5\u201a\u00b7\u201a\u00a9? \u0152x\ufffd\ufffd\: \u201c\u00af\u201a\u00b6\u0160O\u2022\u201d\u0192t\u0192@\u0192C\u0192A\u0192E\u0192H\ufffd[\u0192\u2039\u201a\u00f0\ufffd\u00c4\u201cx\u2019\u00c7\u2030\u00c1\u201a\u00b7\u201a\u00e9\u2014\\u2019\u00e8\u201a\u00c5\u201a\u00a0\u201a\u00e9\ufffd\u00ea\ufffd\u2021\u201a\u00cd\ufffdA\u0192f\u0192o\u0192C\u0192X\u201a\u00cc\u017dg\u2014p\ufffd\u00f3\u2039\u00b5\u0192f\ufffd[\u0192^\u201a\u00f0\u0192\u0160\u0192Z\u0192b\u0192g\u201a\u00b7\u201a\u00e9\u2022K\u2014v\u201a\u00aa\u201a\u00a0\u201a\u00e8\u201a\u00dc\u201a\u00b7\ufffdB -message.action.delete.external.load.balancer=\u201a\u00b1\u201a\u00cc\u0160O\u2022\u201d\u0192\ufffd\ufffd[\u0192h \u0192o\u0192\u2030\u0192\u201c\u0192T\ufffd[\u201a\u00f0\ufffd\u00ed\ufffd\u0153\u201a\u00b5\u201a\u00c4\u201a\u00e0\u201a\u00e6\u201a\u00eb\u201a\u00b5\u201a\u00a2\u201a\u00c5\u201a\u00b7\u201a\u00a9? \u0152x\ufffd\ufffd\: \u201c\u00af\u201a\u00b6\u0160O\u2022\u201d\u0192\ufffd\ufffd[\u0192h \u0192o\u0192\u2030\u0192\u201c\u0192T\ufffd[\u201a\u00f0\ufffd\u00c4\u201cx\u2019\u00c7\u2030\u00c1\u201a\u00b7\u201a\u00e9\u2014\\u2019\u00e8\u201a\u00c5\u201a\u00a0\u201a\u00e9\ufffd\u00ea\ufffd\u2021\u201a\u00cd\ufffdA\u0192f\u0192o\u0192C\u0192X\u201a\u00cc\u017dg\u2014p\ufffd\u00f3\u2039\u00b5\u0192f\ufffd[\u0192^\u201a\u00f0\u0192\u0160\u0192Z\u0192b\u0192g\u201a\u00b7\u201a\u00e9\u2022K\u2014v\u201a\u00aa\u201a\u00a0\u201a\u00e8\u201a\u00dc\u201a\u00b7\ufffdB -message.action.delete.ingress.rule=\u201a\u00b1\u201a\u00cc\u017d\u00f3\ufffdM\u2039K\u2018\u00a5\u201a\u00f0\ufffd\u00ed\ufffd\u0153\u201a\u00b5\u201a\u00c4\u201a\u00e0\u201a\u00e6\u201a\u00eb\u201a\u00b5\u201a\u00a2\u201a\u00c5\u201a\u00b7\u201a\u00a9? -message.action.delete.ISO.for.all.zones=\u201a\u00bb\u201a\u00cc ISO \u201a\u00cd\u201a\u00b7\u201a\u00d7\u201a\u00c4\u201a\u00cc\u0192]\ufffd[\u0192\u201c\u201a\u00c5\u017dg\u2014p\u201a\u00b3\u201a\u00ea\u201a\u00c4\u201a\u00a2\u201a\u00dc\u201a\u00b7\ufffdB\u201a\u00b7\u201a\u00d7\u201a\u00c4\u201a\u00cc\u0192]\ufffd[\u0192\u201c\u201a\u00a9\u201a\u00e7\ufffd\u00ed\ufffd\u0153\u201a\u00b5\u201a\u00c4\u201a\u00e0\u201a\u00e6\u201a\u00eb\u201a\u00b5\u201a\u00a2\u201a\u00c5\u201a\u00b7\u201a\u00a9? -message.action.delete.ISO=\u201a\u00b1\u201a\u00cc ISO \u201a\u00f0\ufffd\u00ed\ufffd\u0153\u201a\u00b5\u201a\u00c4\u201a\u00e0\u201a\u00e6\u201a\u00eb\u201a\u00b5\u201a\u00a2\u201a\u00c5\u201a\u00b7\u201a\u00a9? -message.action.delete.network=\u201a\u00b1\u201a\u00cc\u0192l\u0192b\u0192g\u0192\ufffd\ufffd[\u0192N\u201a\u00f0\ufffd\u00ed\ufffd\u0153\u201a\u00b5\u201a\u00c4\u201a\u00e0\u201a\u00e6\u201a\u00eb\u201a\u00b5\u201a\u00a2\u201a\u00c5\u201a\u00b7\u201a\u00a9? -message.action.delete.nexusVswitch=\u201a\u00b1\u201a\u00cc Nexus 1000V \u201a\u00f0\ufffd\u00ed\ufffd\u0153\u201a\u00b5\u201a\u00c4\u201a\u00e0\u201a\u00e6\u201a\u00eb\u201a\u00b5\u201a\u00a2\u201a\u00c5\u201a\u00b7\u201a\u00a9? -message.action.delete.physical.network=\u201a\u00b1\u201a\u00cc\u2022\u00a8\u2014\ufffd\u0192l\u0192b\u0192g\u0192\ufffd\ufffd[\u0192N\u201a\u00f0\ufffd\u00ed\ufffd\u0153\u201a\u00b5\u201a\u00c4\u201a\u00e0\u201a\u00e6\u201a\u00eb\u201a\u00b5\u201a\u00a2\u201a\u00c5\u201a\u00b7\u201a\u00a9? -message.action.delete.pod=\u201a\u00b1\u201a\u00cc\u0192|\u0192b\u0192h\u201a\u00f0\ufffd\u00ed\ufffd\u0153\u201a\u00b5\u201a\u00c4\u201a\u00e0\u201a\u00e6\u201a\u00eb\u201a\u00b5\u201a\u00a2\u201a\u00c5\u201a\u00b7\u201a\u00a9? -message.action.delete.primary.storage=\u201a\u00b1\u201a\u00cc\u0192v\u0192\u2030\u0192C\u0192}\u0192\u0160 \u0192X\u0192g\u0192\u0152\ufffd[\u0192W\u201a\u00f0\ufffd\u00ed\ufffd\u0153\u201a\u00b5\u201a\u00c4\u201a\u00e0\u201a\u00e6\u201a\u00eb\u201a\u00b5\u201a\u00a2\u201a\u00c5\u201a\u00b7\u201a\u00a9? -message.action.delete.secondary.storage=\u201a\u00b1\u201a\u00cc\u0192Z\u0192J\u0192\u201c\u0192_\u0192\u0160 \u0192X\u0192g\u0192\u0152\ufffd[\u0192W\u201a\u00f0\ufffd\u00ed\ufffd\u0153\u201a\u00b5\u201a\u00c4\u201a\u00e0\u201a\u00e6\u201a\u00eb\u201a\u00b5\u201a\u00a2\u201a\u00c5\u201a\u00b7\u201a\u00a9? -message.action.delete.security.group=\u201a\u00b1\u201a\u00cc\u0192Z\u0192L\u0192\u2026\u0192\u0160\u0192e\u0192B \u0192O\u0192\u2039\ufffd[\u0192v\u201a\u00f0\ufffd\u00ed\ufffd\u0153\u201a\u00b5\u201a\u00c4\u201a\u00e0\u201a\u00e6\u201a\u00eb\u201a\u00b5\u201a\u00a2\u201a\u00c5\u201a\u00b7\u201a\u00a9? -message.action.delete.service.offering=\u201a\u00b1\u201a\u00cc\u0192T\ufffd[\u0192r\u0192X \u0192I\u0192t\u0192@\u0192\u0160\u0192\u201c\u0192O\u201a\u00f0\ufffd\u00ed\ufffd\u0153\u201a\u00b5\u201a\u00c4\u201a\u00e0\u201a\u00e6\u201a\u00eb\u201a\u00b5\u201a\u00a2\u201a\u00c5\u201a\u00b7\u201a\u00a9? -message.action.delete.snapshot=\u201a\u00b1\u201a\u00cc\u0192X\u0192i\u0192b\u0192v\u0192V\u0192\u2021\u0192b\u0192g\u201a\u00f0\ufffd\u00ed\ufffd\u0153\u201a\u00b5\u201a\u00c4\u201a\u00e0\u201a\u00e6\u201a\u00eb\u201a\u00b5\u201a\u00a2\u201a\u00c5\u201a\u00b7\u201a\u00a9? -message.action.delete.system.service.offering=\u201a\u00b1\u201a\u00cc\u0192V\u0192X\u0192e\u0192\u20ac \u0192T\ufffd[\u0192r\u0192X \u0192I\u0192t\u0192@\u0192\u0160\u0192\u201c\u0192O\u201a\u00f0\ufffd\u00ed\ufffd\u0153\u201a\u00b5\u201a\u00c4\u201a\u00e0\u201a\u00e6\u201a\u00eb\u201a\u00b5\u201a\u00a2\u201a\u00c5\u201a\u00b7\u201a\u00a9? -message.action.delete.template.for.all.zones=\u201a\u00bb\u201a\u00cc\u0192e\u0192\u201c\u0192v\u0192\u0152\ufffd[\u0192g\u201a\u00cd\u201a\u00b7\u201a\u00d7\u201a\u00c4\u201a\u00cc\u0192]\ufffd[\u0192\u201c\u201a\u00c5\u017dg\u2014p\u201a\u00b3\u201a\u00ea\u201a\u00c4\u201a\u00a2\u201a\u00dc\u201a\u00b7\ufffdB\u201a\u00b7\u201a\u00d7\u201a\u00c4\u201a\u00cc\u0192]\ufffd[\u0192\u201c\u201a\u00a9\u201a\u00e7\ufffd\u00ed\ufffd\u0153\u201a\u00b5\u201a\u00c4\u201a\u00e0\u201a\u00e6\u201a\u00eb\u201a\u00b5\u201a\u00a2\u201a\u00c5\u201a\u00b7\u201a\u00a9? -message.action.delete.template=\u201a\u00b1\u201a\u00cc\u0192e\u0192\u201c\u0192v\u0192\u0152\ufffd[\u0192g\u201a\u00f0\ufffd\u00ed\ufffd\u0153\u201a\u00b5\u201a\u00c4\u201a\u00e0\u201a\u00e6\u201a\u00eb\u201a\u00b5\u201a\u00a2\u201a\u00c5\u201a\u00b7\u201a\u00a9? -message.action.delete.volume=\u201a\u00b1\u201a\u00cc\u0192{\u0192\u0160\u0192\u2026\ufffd[\u0192\u20ac\u201a\u00f0\ufffd\u00ed\ufffd\u0153\u201a\u00b5\u201a\u00c4\u201a\u00e0\u201a\u00e6\u201a\u00eb\u201a\u00b5\u201a\u00a2\u201a\u00c5\u201a\u00b7\u201a\u00a9? -message.action.delete.zone=\u201a\u00b1\u201a\u00cc\u0192]\ufffd[\u0192\u201c\u201a\u00f0\ufffd\u00ed\ufffd\u0153\u201a\u00b5\u201a\u00c4\u201a\u00e0\u201a\u00e6\u201a\u00eb\u201a\u00b5\u201a\u00a2\u201a\u00c5\u201a\u00b7\u201a\u00a9? -message.action.destroy.instance=\u201a\u00b1\u201a\u00cc\u0192C\u0192\u201c\u0192X\u0192^\u0192\u201c\u0192X\u201a\u00f0\u201dj\u0160\u00fc\u201a\u00b5\u201a\u00c4\u201a\u00e0\u201a\u00e6\u201a\u00eb\u201a\u00b5\u201a\u00a2\u201a\u00c5\u201a\u00b7\u201a\u00a9? -message.action.destroy.systemvm=\u201a\u00b1\u201a\u00cc\u0192V\u0192X\u0192e\u0192\u20ac VM \u201a\u00f0\u201dj\u0160\u00fc\u201a\u00b5\u201a\u00c4\u201a\u00e0\u201a\u00e6\u201a\u00eb\u201a\u00b5\u201a\u00a2\u201a\u00c5\u201a\u00b7\u201a\u00a9? -message.action.disable.cluster=\u201a\u00b1\u201a\u00cc\u0192N\u0192\u2030\u0192X\u0192^\ufffd[\u201a\u00f0\u2013\u00b3\u0152\u00f8\u201a\u00c9\u201a\u00b5\u201a\u00c4\u201a\u00e0\u201a\u00e6\u201a\u00eb\u201a\u00b5\u201a\u00a2\u201a\u00c5\u201a\u00b7\u201a\u00a9? -message.action.disable.nexusVswitch=\u201a\u00b1\u201a\u00cc Nexus 1000V \u201a\u00f0\u2013\u00b3\u0152\u00f8\u201a\u00c9\u201a\u00b5\u201a\u00c4\u201a\u00e0\u201a\u00e6\u201a\u00eb\u201a\u00b5\u201a\u00a2\u201a\u00c5\u201a\u00b7\u201a\u00a9? -message.action.disable.physical.network=\u201a\u00b1\u201a\u00cc\u2022\u00a8\u2014\ufffd\u0192l\u0192b\u0192g\u0192\ufffd\ufffd[\u0192N\u201a\u00f0\u2013\u00b3\u0152\u00f8\u201a\u00c9\u201a\u00b5\u201a\u00c4\u201a\u00e0\u201a\u00e6\u201a\u00eb\u201a\u00b5\u201a\u00a2\u201a\u00c5\u201a\u00b7\u201a\u00a9? -message.action.disable.pod=\u201a\u00b1\u201a\u00cc\u0192|\u0192b\u0192h\u201a\u00f0\u2013\u00b3\u0152\u00f8\u201a\u00c9\u201a\u00b5\u201a\u00c4\u201a\u00e0\u201a\u00e6\u201a\u00eb\u201a\u00b5\u201a\u00a2\u201a\u00c5\u201a\u00b7\u201a\u00a9? -message.action.disable.static.NAT=\ufffd\u00c3\u201cI NAT \u201a\u00f0\u2013\u00b3\u0152\u00f8\u201a\u00c9\u201a\u00b5\u201a\u00c4\u201a\u00e0\u201a\u00e6\u201a\u00eb\u201a\u00b5\u201a\u00a2\u201a\u00c5\u201a\u00b7\u201a\u00a9? -message.action.disable.zone=\u201a\u00b1\u201a\u00cc\u0192]\ufffd[\u0192\u201c\u201a\u00f0\u2013\u00b3\u0152\u00f8\u201a\u00c9\u201a\u00b5\u201a\u00c4\u201a\u00e0\u201a\u00e6\u201a\u00eb\u201a\u00b5\u201a\u00a2\u201a\u00c5\u201a\u00b7\u201a\u00a9? -message.action.download.iso=\u201a\u00b1\u201a\u00cc ISO \u201a\u00f0\u0192_\u0192E\u0192\u201c\u0192\ufffd\ufffd[\u0192h\u201a\u00b5\u201a\u00c4\u201a\u00e0\u201a\u00e6\u201a\u00eb\u201a\u00b5\u201a\u00a2\u201a\u00c5\u201a\u00b7\u201a\u00a9? -message.action.download.template=\u201a\u00b1\u201a\u00cc\u0192e\u0192\u201c\u0192v\u0192\u0152\ufffd[\u0192g\u201a\u00f0\u0192_\u0192E\u0192\u201c\u0192\ufffd\ufffd[\u0192h\u201a\u00b5\u201a\u00c4\u201a\u00e0\u201a\u00e6\u201a\u00eb\u201a\u00b5\u201a\u00a2\u201a\u00c5\u201a\u00b7\u201a\u00a9? -message.action.enable.cluster=\u201a\u00b1\u201a\u00cc\u0192N\u0192\u2030\u0192X\u0192^\ufffd[\u201a\u00f0\u2014L\u0152\u00f8\u201a\u00c9\u201a\u00b5\u201a\u00c4\u201a\u00e0\u201a\u00e6\u201a\u00eb\u201a\u00b5\u201a\u00a2\u201a\u00c5\u201a\u00b7\u201a\u00a9? -message.action.enable.maintenance=\u0192z\u0192X\u0192g\u201a\u00f0\u2022\u00db\u017d\u00e7\u201a\u00b7\u201a\u00e9\ufffd\u20ac\u201d\u00f5\u201a\u00aa\u201a\u00c5\u201a\u00ab\u201a\u00dc\u201a\u00b5\u201a\u00bd\ufffdB\u201a\u00b1\u201a\u00cc\u0192z\u0192X\u0192g\ufffd\u00e3\u201a\u00cc VM \ufffd\u201d\u201a\u00c9\u201a\u00e6\u201a\u00c1\u201a\u00c4\u201a\u00cd\ufffdA\u201a\u00b1\u201a\u00cc\ufffd\u02c6\u2014\ufffd\u201a\u00c9\u201a\u00cd\ufffd\u201d\u2022\u00aa\u02c6\u00c8\ufffd\u00e3\u201a\u00a9\u201a\u00a9\u201a\u00e9\u2030\u00c2\u201d\\ufffd\u00ab\u201a\u00aa\u201a\u00a0\u201a\u00e8\u201a\u00dc\u201a\u00b7\ufffdB -message.action.enable.nexusVswitch=\u201a\u00b1\u201a\u00cc Nexus 1000V \u201a\u00f0\u2014L\u0152\u00f8\u201a\u00c9\u201a\u00b5\u201a\u00c4\u201a\u00e0\u201a\u00e6\u201a\u00eb\u201a\u00b5\u201a\u00a2\u201a\u00c5\u201a\u00b7\u201a\u00a9? -message.action.enable.physical.network=\u201a\u00b1\u201a\u00cc\u2022\u00a8\u2014\ufffd\u0192l\u0192b\u0192g\u0192\ufffd\ufffd[\u0192N\u201a\u00f0\u2014L\u0152\u00f8\u201a\u00c9\u201a\u00b5\u201a\u00c4\u201a\u00e0\u201a\u00e6\u201a\u00eb\u201a\u00b5\u201a\u00a2\u201a\u00c5\u201a\u00b7\u201a\u00a9? -message.action.enable.pod=\u201a\u00b1\u201a\u00cc\u0192|\u0192b\u0192h\u201a\u00f0\u2014L\u0152\u00f8\u201a\u00c9\u201a\u00b5\u201a\u00c4\u201a\u00e0\u201a\u00e6\u201a\u00eb\u201a\u00b5\u201a\u00a2\u201a\u00c5\u201a\u00b7\u201a\u00a9? -message.action.enable.zone=\u201a\u00b1\u201a\u00cc\u0192]\ufffd[\u0192\u201c\u201a\u00f0\u2014L\u0152\u00f8\u201a\u00c9\u201a\u00b5\u201a\u00c4\u201a\u00e0\u201a\u00e6\u201a\u00eb\u201a\u00b5\u201a\u00a2\u201a\u00c5\u201a\u00b7\u201a\u00a9? -message.action.expunge.instance=\u201a\u00b1\u201a\u00cc\u0192C\u0192\u201c\u0192X\u0192^\u0192\u201c\u0192X\u201a\u00f0\u2013\u2022\ufffd\u00c1\u201a\u00b5\u201a\u00c4\u201a\u00e0\u201a\u00e6\u201a\u00eb\u201a\u00b5\u201a\u00a2\u201a\u00c5\u201a\u00b7\u201a\u00a9? -message.action.force.reconnect=\u0192z\u0192X\u0192g\u201a\u00cd\u2039\u00ad\ufffd\u00a7\u201cI\u201a\u00c9\ufffd\u00c4\ufffd\u00da\u2018\u00b1\u201a\u00b5\u201a\u00dc\u201a\u00b5\u201a\u00bd\ufffdB\u201a\u00b1\u201a\u00cc\ufffd\u02c6\u2014\ufffd\u201a\u00c9\u201a\u00cd\ufffd\u201d\u2022\u00aa\u201a\u00a9\u201a\u00a9\u201a\u00e9\u2030\u00c2\u201d\\ufffd\u00ab\u201a\u00aa\u201a\u00a0\u201a\u00e8\u201a\u00dc\u201a\u00b7\ufffdB -message.action.host.enable.maintenance.mode=\u2022\u00db\u017d\u00e7\u0192\u201a\ufffd[\u0192h\u201a\u00f0\u2014L\u0152\u00f8\u201a\u00c9\u201a\u00b7\u201a\u00e9\u201a\u00c6\ufffdA\u201a\u00b1\u201a\u00cc\u0192z\u0192X\u0192g\u201a\u00c5\u017d\u00c0\ufffds\u2019\u2020\u201a\u00cc\u201a\u00b7\u201a\u00d7\u201a\u00c4\u201a\u00cc\u0192C\u0192\u201c\u0192X\u0192^\u0192\u201c\u0192X\u201a\u00aa\u201a\u00d9\u201a\u00a9\u201a\u00cc\u017dg\u2014p\u201a\u00c5\u201a\u00ab\u201a\u00e9\u0192z\u0192X\u0192g\u201a\u00c9\u0192\u2030\u0192C\u0192u \u0192}\u0192C\u0192O\u0192\u0152\ufffd[\u0192V\u0192\u2021\u0192\u201c\u201a\u00b3\u201a\u00ea\u201a\u00dc\u201a\u00b7\ufffdB -message.action.instance.reset.password=\u201a\u00b1\u201a\u00cc\u2030\u00bc\u2018z\u0192}\u0192V\u0192\u201c\u201a\u00cc\u0192\u2039\ufffd[\u0192g \u0192p\u0192X\u0192\ufffd\ufffd[\u0192h\u201a\u00f0\u2022\u00cf\ufffdX\u201a\u00b5\u201a\u00c4\u201a\u00e0\u201a\u00e6\u201a\u00eb\u201a\u00b5\u201a\u00a2\u201a\u00c5\u201a\u00b7\u201a\u00a9? -message.action.manage.cluster=\u0192N\u0192\u2030\u0192X\u0192^\ufffd[\u201a\u00f0\u0160\u00c7\u2014\ufffd\u2018\u00ce\ufffd\u00db\u201a\u00c9\u201a\u00b5\u201a\u00c4\u201a\u00e0\u201a\u00e6\u201a\u00eb\u201a\u00b5\u201a\u00a2\u201a\u00c5\u201a\u00b7\u201a\u00a9? -message.action.primarystorage.enable.maintenance.mode=\u0152x\ufffd\ufffd\: \u0192v\u0192\u2030\u0192C\u0192}\u0192\u0160 \u0192X\u0192g\u0192\u0152\ufffd[\u0192W\u201a\u00f0\u2022\u00db\u017d\u00e7\u0192\u201a\ufffd[\u0192h\u201a\u00c9\u201a\u00b7\u201a\u00e9\u201a\u00c6\ufffdA\u201a\u00bb\u201a\u00cc\u0192X\u0192g\u0192\u0152\ufffd[\u0192W\ufffd\u00e3\u201a\u00cc\u0192{\u0192\u0160\u0192\u2026\ufffd[\u0192\u20ac\u201a\u00f0\u017dg\u2014p\u201a\u00b7\u201a\u00e9\u201a\u00b7\u201a\u00d7\u201a\u00c4\u201a\u00cc VM \u201a\u00aa\u2019\u00e2\u017d~\u201a\u00b5\u201a\u00dc\u201a\u00b7\ufffdB\u2018\u00b1\ufffds\u201a\u00b5\u201a\u00c4\u201a\u00e0\u201a\u00e6\u201a\u00eb\u201a\u00b5\u201a\u00a2\u201a\u00c5\u201a\u00b7\u201a\u00a9? -message.action.reboot.instance=\u201a\u00b1\u201a\u00cc\u0192C\u0192\u201c\u0192X\u0192^\u0192\u201c\u0192X\u201a\u00f0\ufffd\u00c4\u2039N\u201c\u00ae\u201a\u00b5\u201a\u00c4\u201a\u00e0\u201a\u00e6\u201a\u00eb\u201a\u00b5\u201a\u00a2\u201a\u00c5\u201a\u00b7\u201a\u00a9? -message.action.reboot.router=\u201a\u00b1\u201a\u00cc\u2030\u00bc\u2018z\u0192\u2039\ufffd[\u0192^\ufffd[\u201a\u00c5\u2019\u00f1\u2039\u0178\u201a\u00b7\u201a\u00e9\u201a\u00b7\u201a\u00d7\u201a\u00c4\u201a\u00cc\u0192T\ufffd[\u0192r\u0192X\u201a\u00aa\u2019\u2020\u2019f\u201a\u00b3\u201a\u00ea\u201a\u00dc\u201a\u00b7\ufffdB\u201a\u00b1\u201a\u00cc\u0192\u2039\ufffd[\u0192^\ufffd[\u201a\u00f0\ufffd\u00c4\u2039N\u201c\u00ae\u201a\u00b5\u201a\u00c4\u201a\u00e0\u201a\u00e6\u201a\u00eb\u201a\u00b5\u201a\u00a2\u201a\u00c5\u201a\u00b7\u201a\u00a9? -message.action.reboot.systemvm=\u201a\u00b1\u201a\u00cc\u0192V\u0192X\u0192e\u0192\u20ac VM \u201a\u00f0\ufffd\u00c4\u2039N\u201c\u00ae\u201a\u00b5\u201a\u00c4\u201a\u00e0\u201a\u00e6\u201a\u00eb\u201a\u00b5\u201a\u00a2\u201a\u00c5\u201a\u00b7\u201a\u00a9? -message.action.release.ip=\u201a\u00b1\u201a\u00cc IP \u0192A\u0192h\u0192\u0152\u0192X\u201a\u00f0\u2030\u00f0\u2022\u00fa\u201a\u00b5\u201a\u00c4\u201a\u00e0\u201a\u00e6\u201a\u00eb\u201a\u00b5\u201a\u00a2\u201a\u00c5\u201a\u00b7\u201a\u00a9? -message.action.remove.host=\u201a\u00b1\u201a\u00cc\u0192z\u0192X\u0192g\u201a\u00f0\ufffd\u00ed\ufffd\u0153\u201a\u00b5\u201a\u00c4\u201a\u00e0\u201a\u00e6\u201a\u00eb\u201a\u00b5\u201a\u00a2\u201a\u00c5\u201a\u00b7\u201a\u00a9? -message.action.reset.password.off=\u0192C\u0192\u201c\u0192X\u0192^\u0192\u201c\u0192X\u201a\u00cd\u0152\u00bb\ufffd\u00dd\u201a\u00b1\u201a\u00cc\u2039@\u201d\\u201a\u00f0\u0192T\u0192|\ufffd[\u0192g\u201a\u00b5\u201a\u00c4\u201a\u00a2\u201a\u00dc\u201a\u00b9\u201a\u00f1\ufffdB -message.action.reset.password.warning=\u0152\u00bb\ufffd\u00dd\u201a\u00cc\u0192p\u0192X\u0192\ufffd\ufffd[\u0192h\u201a\u00f0\u2022\u00cf\ufffdX\u201a\u00b7\u201a\u00e9\u2018O\u201a\u00c9\u0192C\u0192\u201c\u0192X\u0192^\u0192\u201c\u0192X\u201a\u00f0\u2019\u00e2\u017d~\u201a\u00b7\u201a\u00e9\u2022K\u2014v\u201a\u00aa\u201a\u00a0\u201a\u00e8\u201a\u00dc\u201a\u00b7\ufffdB -message.action.restore.instance=\u201a\u00b1\u201a\u00cc\u0192C\u0192\u201c\u0192X\u0192^\u0192\u201c\u0192X\u201a\u00f0\u2022\u0153\u0152\u00b3\u201a\u00b5\u201a\u00c4\u201a\u00e0\u201a\u00e6\u201a\u00eb\u201a\u00b5\u201a\u00a2\u201a\u00c5\u201a\u00b7\u201a\u00a9? -message.action.start.instance=\u201a\u00b1\u201a\u00cc\u0192C\u0192\u201c\u0192X\u0192^\u0192\u201c\u0192X\u201a\u00f0\u2039N\u201c\u00ae\u201a\u00b5\u201a\u00c4\u201a\u00e0\u201a\u00e6\u201a\u00eb\u201a\u00b5\u201a\u00a2\u201a\u00c5\u201a\u00b7\u201a\u00a9? -message.action.start.router=\u201a\u00b1\u201a\u00cc\u0192\u2039\ufffd[\u0192^\ufffd[\u201a\u00f0\u2039N\u201c\u00ae\u201a\u00b5\u201a\u00c4\u201a\u00e0\u201a\u00e6\u201a\u00eb\u201a\u00b5\u201a\u00a2\u201a\u00c5\u201a\u00b7\u201a\u00a9? -message.action.start.systemvm=\u201a\u00b1\u201a\u00cc\u0192V\u0192X\u0192e\u0192\u20ac VM \u201a\u00f0\u2039N\u201c\u00ae\u201a\u00b5\u201a\u00c4\u201a\u00e0\u201a\u00e6\u201a\u00eb\u201a\u00b5\u201a\u00a2\u201a\u00c5\u201a\u00b7\u201a\u00a9? -message.action.stop.instance=\u201a\u00b1\u201a\u00cc\u0192C\u0192\u201c\u0192X\u0192^\u0192\u201c\u0192X\u201a\u00f0\u2019\u00e2\u017d~\u201a\u00b5\u201a\u00c4\u201a\u00e0\u201a\u00e6\u201a\u00eb\u201a\u00b5\u201a\u00a2\u201a\u00c5\u201a\u00b7\u201a\u00a9? -message.action.stop.router=\u201a\u00b1\u201a\u00cc\u2030\u00bc\u2018z\u0192\u2039\ufffd[\u0192^\ufffd[\u201a\u00c5\u2019\u00f1\u2039\u0178\u201a\u00b7\u201a\u00e9\u201a\u00b7\u201a\u00d7\u201a\u00c4\u201a\u00cc\u0192T\ufffd[\u0192r\u0192X\u201a\u00aa\u2019\u2020\u2019f\u201a\u00b3\u201a\u00ea\u201a\u00dc\u201a\u00b7\ufffdB\u201a\u00b1\u201a\u00cc\u0192\u2039\ufffd[\u0192^\ufffd[\u201a\u00f0\u2019\u00e2\u017d~\u201a\u00b5\u201a\u00c4\u201a\u00e0\u201a\u00e6\u201a\u00eb\u201a\u00b5\u201a\u00a2\u201a\u00c5\u201a\u00b7\u201a\u00a9? -message.action.stop.systemvm=\u201a\u00b1\u201a\u00cc\u0192V\u0192X\u0192e\u0192\u20ac VM \u201a\u00f0\u2019\u00e2\u017d~\u201a\u00b5\u201a\u00c4\u201a\u00e0\u201a\u00e6\u201a\u00eb\u201a\u00b5\u201a\u00a2\u201a\u00c5\u201a\u00b7\u201a\u00a9? -message.action.take.snapshot=\u201a\u00b1\u201a\u00cc\u0192{\u0192\u0160\u0192\u2026\ufffd[\u0192\u20ac\u201a\u00cc\u0192X\u0192i\u0192b\u0192v\u0192V\u0192\u2021\u0192b\u0192g\u201a\u00f0\ufffd\u00ec\ufffd\u00ac\u201a\u00b5\u201a\u00c4\u201a\u00e0\u201a\u00e6\u201a\u00eb\u201a\u00b5\u201a\u00a2\u201a\u00c5\u201a\u00b7\u201a\u00a9? -message.action.revert.snapshot=\ufffd\u0160\u2014L\u0192{\u0192\u0160\u0192\u2026\ufffd[\u0192\u20ac\u201a\u00f0\u201a\u00b1\u201a\u00cc\u0192X\u0192i\u0192b\u0192v\u0192V\u0192\u2021\u0192b\u0192g\u201a\u00c9\u2013\u00df\u201a\u00b5\u201a\u00c4\u201a\u00e0\u201a\u00e6\u201a\u00eb\u201a\u00b5\u201a\u00a2\u201a\u00c5\u201a\u00b7\u201a\u00a9? -message.action.unmanage.cluster=\u0192N\u0192\u2030\u0192X\u0192^\ufffd[\u201a\u00f0\u201d\u00f1\u0160\u00c7\u2014\ufffd\u2018\u00ce\ufffd\u00db\u201a\u00c9\u201a\u00b5\u201a\u00c4\u201a\u00e0\u201a\u00e6\u201a\u00eb\u201a\u00b5\u201a\u00a2\u201a\u00c5\u201a\u00b7\u201a\u00a9? -message.action.vmsnapshot.delete=\u201a\u00b1\u201a\u00cc VM \u0192X\u0192i\u0192b\u0192v\u0192V\u0192\u2021\u0192b\u0192g\u201a\u00f0\ufffd\u00ed\ufffd\u0153\u201a\u00b5\u201a\u00c4\u201a\u00e0\u201a\u00e6\u201a\u00eb\u201a\u00b5\u201a\u00a2\u201a\u00c5\u201a\u00b7\u201a\u00a9? -message.action.vmsnapshot.revert=VM \u0192X\u0192i\u0192b\u0192v\u0192V\u0192\u2021\u0192b\u0192g\u201a\u00f0\u0152\u00b3\u201a\u00c9\u2013\u00df\u201a\u00b7 -message.activate.project=\u201a\u00b1\u201a\u00cc\u0192v\u0192\ufffd\u0192W\u0192F\u0192N\u0192g\u201a\u00f0\u0192A\u0192N\u0192e\u0192B\u0192u\u201a\u00c9\u201a\u00b5\u201a\u00c4\u201a\u00e0\u201a\u00e6\u201a\u00eb\u201a\u00b5\u201a\u00a2\u201a\u00c5\u201a\u00b7\u201a\u00a9? -message.add.cluster.zone=\u0192]\ufffd[\u0192\u201c \u201a\u00c9\u0192n\u0192C\u0192p\ufffd[\u0192o\u0192C\u0192U\ufffd[\u201a\u00c5\u0160\u00c7\u2014\ufffd\u201a\u00b3\u201a\u00ea\u201a\u00e9\u0192N\u0192\u2030\u0192X\u0192^\ufffd[\u201a\u00f0\u2019\u00c7\u2030\u00c1\u201a\u00b5\u201a\u00dc\u201a\u00b7 -message.add.cluster=\u0192]\ufffd[\u0192\u201c \u201a\u00cc\u0192|\u0192b\u0192h \u201a\u00c9\u0192n\u0192C\u0192p\ufffd[\u0192o\u0192C\u0192U\ufffd[\u201a\u00c5\u0160\u00c7\u2014\ufffd\u201a\u00b3\u201a\u00ea\u201a\u00e9\u0192N\u0192\u2030\u0192X\u0192^\ufffd[\u201a\u00f0\u2019\u00c7\u2030\u00c1\u201a\u00b5\u201a\u00dc\u201a\u00b7 -message.add.disk.offering=\ufffdV\u201a\u00b5\u201a\u00a2\u0192f\u0192B\u0192X\u0192N \u0192I\u0192t\u0192@\u0192\u0160\u0192\u201c\u0192O\u201a\u00f0\u2019\u00c7\u2030\u00c1\u201a\u00b7\u201a\u00e9\u201a\u00bd\u201a\u00df\u201a\u00c9\ufffdA\u017d\u0178\u201a\u00cc\u0192p\u0192\u2030\u0192\ufffd\ufffd[\u0192^\ufffd[\u201a\u00f0\u017dw\u2019\u00e8\u201a\u00b5\u201a\u00c4\u201a\u00ad\u201a\u00be\u201a\u00b3\u201a\u00a2\ufffdB -message.add.domain=\u201a\u00b1\u201a\u00cc\u0192h\u0192\ufffd\u0192C\u0192\u201c\u201a\u00c9\ufffd\u00ec\ufffd\u00ac\u201a\u00b7\u201a\u00e9\u0192T\u0192u\u0192h\u0192\ufffd\u0192C\u0192\u201c\u201a\u00f0\u017dw\u2019\u00e8\u201a\u00b5\u201a\u00c4\u201a\u00ad\u201a\u00be\u201a\u00b3\u201a\u00a2\ufffdB -message.add.firewall=\u0192]\ufffd[\u0192\u201c\u201a\u00c9\u0192t\u0192@\u0192C\u0192A\u0192E\u0192H\ufffd[\u0192\u2039\u201a\u00f0\u2019\u00c7\u2030\u00c1\u201a\u00b5\u201a\u00dc\u201a\u00b7 -message.add.guest.network=\u0192Q\u0192X\u0192g \u0192l\u0192b\u0192g\u0192\ufffd\ufffd[\u0192N\u201a\u00f0\u2019\u00c7\u2030\u00c1\u201a\u00b5\u201a\u00c4\u201a\u00e0\u201a\u00e6\u201a\u00eb\u201a\u00b5\u201a\u00a2\u201a\u00c5\u201a\u00b7\u201a\u00a9? -message.add.host=\ufffdV\u201a\u00b5\u201a\u00a2\u0192z\u0192X\u0192g\u201a\u00f0\u2019\u00c7\u2030\u00c1\u201a\u00b7\u201a\u00e9\u201a\u00bd\u201a\u00df\u201a\u00c9\ufffdA\u017d\u0178\u201a\u00cc\u0192p\u0192\u2030\u0192\ufffd\ufffd[\u0192^\ufffd[\u201a\u00f0\u017dw\u2019\u00e8\u201a\u00b5\u201a\u00c4\u201a\u00ad\u201a\u00be\u201a\u00b3\u201a\u00a2\ufffdB -message.add.ip.range.direct.network=\u0192]\ufffd[\u0192\u201c \u201a\u00cc\u2019\u00bc\ufffd\u00da\u0192l\u0192b\u0192g\u0192\ufffd\ufffd[\u0192N \u201a\u00c9 IP \u0192A\u0192h\u0192\u0152\u0192X\u201a\u00cc\u201d\u00cd\u02c6\u00cd\u201a\u00f0\u2019\u00c7\u2030\u00c1\u201a\u00b5\u201a\u00dc\u201a\u00b7 -message.add.ip.range.to.pod=

\u0192|\u0192b\u0192h \u201a\u00c9 IP \u0192A\u0192h\u0192\u0152\u0192X\u201a\u00cc\u201d\u00cd\u02c6\u00cd\u201a\u00f0\u2019\u00c7\u2030\u00c1\u201a\u00b5\u201a\u00dc\u201a\u00b7

-message.add.ip.range=\u0192]\ufffd[\u0192\u201c\u201a\u00cc\u0192p\u0192u\u0192\u0160\u0192b\u0192N \u0192l\u0192b\u0192g\u0192\ufffd\ufffd[\u0192N\u201a\u00c9 IP \u0192A\u0192h\u0192\u0152\u0192X\u201a\u00cc\u201d\u00cd\u02c6\u00cd\u201a\u00f0\u2019\u00c7\u2030\u00c1\u201a\u00b5\u201a\u00dc\u201a\u00b7 -message.add.load.balancer.under.ip=\u0192\ufffd\ufffd[\u0192h \u0192o\u0192\u2030\u0192\u201c\u0192T\ufffd[\u2039K\u2018\u00a5\u201a\u00aa\u017d\u0178\u201a\u00cc IP \u0192A\u0192h\u0192\u0152\u0192X\u201a\u00c9\u2018\u00ce\u201a\u00b5\u201a\u00c4\u2019\u00c7\u2030\u00c1\u201a\u00b3\u201a\u00ea\u201a\u00dc\u201a\u00b5\u201a\u00bd\: -message.add.load.balancer=\u0192]\ufffd[\u0192\u201c\u201a\u00c9\u0192\ufffd\ufffd[\u0192h \u0192o\u0192\u2030\u0192\u201c\u0192T\ufffd[\u201a\u00f0\u2019\u00c7\u2030\u00c1\u201a\u00b5\u201a\u00dc\u201a\u00b7 -message.add.network=\u0192]\ufffd[\u0192\u201c \u201a\u00c9\ufffdV\u201a\u00b5\u201a\u00a2\u0192l\u0192b\u0192g\u0192\ufffd\ufffd[\u0192N\u201a\u00f0\u2019\u00c7\u2030\u00c1\u201a\u00b5\u201a\u00dc\u201a\u00b7 -message.add.new.gateway.to.vpc=\u201a\u00b1\u201a\u00cc VPC \u201a\u00c9\ufffdV\u201a\u00b5\u201a\u00a2\u0192Q\ufffd[\u0192g\u0192E\u0192F\u0192C\u201a\u00f0\u2019\u00c7\u2030\u00c1\u201a\u00b7\u201a\u00e9\u201a\u00bd\u201a\u00df\u201a\u00cc\ufffd\u00ee\u2022\u00f1\u201a\u00f0\u017dw\u2019\u00e8\u201a\u00b5\u201a\u00c4\u201a\u00ad\u201a\u00be\u201a\u00b3\u201a\u00a2\ufffdB -message.add.pod.during.zone.creation=\u0160e\u0192]\ufffd[\u0192\u201c\u201a\u00c9\u201a\u00cd 1 \u201a\u00c2\u02c6\u00c8\ufffd\u00e3\u201a\u00cc\u0192|\u0192b\u0192h\u201a\u00aa\u2022K\u2014v\u201a\u00c5\u201a\u00b7\ufffdB\ufffd\u00a1\u201a\u00b1\u201a\u00b1\u201a\u00c5\ufffd\u00c5\ufffd\u2030\u201a\u00cc\u0192|\u0192b\u0192h\u201a\u00f0\u2019\u00c7\u2030\u00c1\u201a\u00b5\u201a\u00dc\u201a\u00b7\ufffdB\u0192|\u0192b\u0192h\u201a\u00cd\u0192z\u0192X\u0192g\u201a\u00c6\u0192v\u0192\u2030\u0192C\u0192}\u0192\u0160 \u0192X\u0192g\u0192\u0152\ufffd[\u0192W \u0192T\ufffd[\u0192o\ufffd[\u201a\u00a9\u201a\u00e7\ufffd\\ufffd\u00ac\u201a\u00b3\u201a\u00ea\u201a\u00dc\u201a\u00b7\u201a\u00aa\ufffdA\u201a\u00b1\u201a\u00ea\u201a\u00e7\u201a\u00cd\u0152\u00e3\u201a\u00cc\u017d\u00e8\ufffd\u2021\u201a\u00c5\u2019\u00c7\u2030\u00c1\u201a\u00b5\u201a\u00dc\u201a\u00b7\ufffdB\ufffd\u00c5\ufffd\u2030\u201a\u00c9\ufffdACloudStack \u201a\u00cc\u201c\u00e0\u2022\u201d\u0160\u00c7\u2014\ufffd\u0192g\u0192\u2030\u0192t\u0192B\u0192b\u0192N\u201a\u00cc\u201a\u00bd\u201a\u00df\u201a\u00c9 IP \u0192A\u0192h\u0192\u0152\u0192X\u201a\u00cc\u201d\u00cd\u02c6\u00cd\u201a\u00f0\u2014\\u2013\u00f1\u201a\u00b5\u201a\u00dc\u201a\u00b7\ufffdBIP \u0192A\u0192h\u0192\u0152\u0192X\u201a\u00cc\u201d\u00cd\u02c6\u00cd\u201a\u00cd\ufffdA\u0192N\u0192\u2030\u0192E\u0192h\u201c\u00e0\u201a\u00cc\u0160e\u0192]\ufffd[\u0192\u201c\u201a\u00c5\ufffdd\u2022\u00a1\u201a\u00b5\u201a\u00c8\u201a\u00a2\u201a\u00e6\u201a\u00a4\u201a\u00c9\u2014\\u2013\u00f1\u201a\u00b7\u201a\u00e9\u2022K\u2014v\u201a\u00aa\u201a\u00a0\u201a\u00e8\u201a\u00dc\u201a\u00b7\ufffdB -message.add.pod=\u0192]\ufffd[\u0192\u201c \u201a\u00c9\ufffdV\u201a\u00b5\u201a\u00a2\u0192|\u0192b\u0192h\u201a\u00f0\u2019\u00c7\u2030\u00c1\u201a\u00b5\u201a\u00dc\u201a\u00b7 -message.add.primary.storage=\u0192]\ufffd[\u0192\u201c \u201a\u00cc\u0192|\u0192b\u0192h \u201a\u00c9\ufffdV\u201a\u00b5\u201a\u00a2\u0192v\u0192\u2030\u0192C\u0192}\u0192\u0160 \u0192X\u0192g\u0192\u0152\ufffd[\u0192W\u201a\u00f0\u2019\u00c7\u2030\u00c1\u201a\u00b5\u201a\u00dc\u201a\u00b7 -message.add.primary=\ufffdV\u201a\u00b5\u201a\u00a2\u0192v\u0192\u2030\u0192C\u0192}\u0192\u0160 \u0192X\u0192g\u0192\u0152\ufffd[\u0192W\u201a\u00f0\u2019\u00c7\u2030\u00c1\u201a\u00b7\u201a\u00e9\u201a\u00bd\u201a\u00df\u201a\u00c9\ufffdA\u017d\u0178\u201a\u00cc\u0192p\u0192\u2030\u0192\ufffd\ufffd[\u0192^\ufffd[\u201a\u00f0\u017dw\u2019\u00e8\u201a\u00b5\u201a\u00c4\u201a\u00ad\u201a\u00be\u201a\u00b3\u201a\u00a2\ufffdB -message.add.region=\ufffdV\u201a\u00b5\u201a\u00a2\u2014\u00cc\u02c6\u00e6\u201a\u00f0\u2019\u00c7\u2030\u00c1\u201a\u00b7\u201a\u00e9\u201a\u00bd\u201a\u00df\u201a\u00c9\u2022K\u2014v\u201a\u00c8\ufffd\u00ee\u2022\u00f1\u201a\u00f0\u017dw\u2019\u00e8\u201a\u00b5\u201a\u00c4\u201a\u00ad\u201a\u00be\u201a\u00b3\u201a\u00a2\ufffdB -message.add.secondary.storage=\u0192]\ufffd[\u0192\u201c \u201a\u00c9\ufffdV\u201a\u00b5\u201a\u00a2\u0192X\u0192g\u0192\u0152\ufffd[\u0192W\u201a\u00f0\u2019\u00c7\u2030\u00c1\u201a\u00b5\u201a\u00dc\u201a\u00b7 -message.add.service.offering=\ufffdV\u201a\u00b5\u201a\u00a2\u0192R\u0192\u201c\u0192s\u0192\u2026\ufffd[\u0192e\u0192B\u0192\u201c\u0192O \u0192I\u0192t\u0192@\u0192\u0160\u0192\u201c\u0192O\u201a\u00f0\u2019\u00c7\u2030\u00c1\u201a\u00b7\u201a\u00e9\u201a\u00bd\u201a\u00df\u201a\u00c9\ufffdA\u017d\u0178\u201a\u00cc\u0192f\ufffd[\u0192^\u201a\u00f0\u201c\u00fc\u2014\u00cd\u201a\u00b5\u201a\u00c4\u201a\u00ad\u201a\u00be\u201a\u00b3\u201a\u00a2\ufffdB -message.add.system.service.offering=\ufffdV\u201a\u00b5\u201a\u00a2\u0192V\u0192X\u0192e\u0192\u20ac \u0192T\ufffd[\u0192r\u0192X \u0192I\u0192t\u0192@\u0192\u0160\u0192\u201c\u0192O\u201a\u00f0\u2019\u00c7\u2030\u00c1\u201a\u00b7\u201a\u00e9\u201a\u00bd\u201a\u00df\u201a\u00c9\ufffdA\u017d\u0178\u201a\u00cc\u0192f\ufffd[\u0192^\u201a\u00f0\u201c\u00fc\u2014\u00cd\u201a\u00b5\u201a\u00c4\u201a\u00ad\u201a\u00be\u201a\u00b3\u201a\u00a2\ufffdB -message.add.template=\ufffdV\u201a\u00b5\u201a\u00a2\u0192e\u0192\u201c\u0192v\u0192\u0152\ufffd[\u0192g\u201a\u00f0\ufffd\u00ec\ufffd\u00ac\u201a\u00b7\u201a\u00e9\u201a\u00bd\u201a\u00df\u201a\u00c9\ufffdA\u017d\u0178\u201a\u00cc\u0192f\ufffd[\u0192^\u201a\u00f0\u201c\u00fc\u2014\u00cd\u201a\u00b5\u201a\u00c4\u201a\u00ad\u201a\u00be\u201a\u00b3\u201a\u00a2\ufffdB -message.add.volume=\ufffdV\u201a\u00b5\u201a\u00a2\u0192{\u0192\u0160\u0192\u2026\ufffd[\u0192\u20ac\u201a\u00f0\u2019\u00c7\u2030\u00c1\u201a\u00b7\u201a\u00e9\u201a\u00bd\u201a\u00df\u201a\u00c9\ufffdA\u017d\u0178\u201a\u00cc\u0192f\ufffd[\u0192^\u201a\u00f0\u201c\u00fc\u2014\u00cd\u201a\u00b5\u201a\u00c4\u201a\u00ad\u201a\u00be\u201a\u00b3\u201a\u00a2\ufffdB -message.add.VPN.gateway=VPN \u0192Q\ufffd[\u0192g\u0192E\u0192F\u0192C\u201a\u00f0\u2019\u00c7\u2030\u00c1\u201a\u00b5\u201a\u00c4\u201a\u00e0\u201a\u00e6\u201a\u00eb\u201a\u00b5\u201a\u00a2\u201a\u00c5\u201a\u00b7\u201a\u00a9? -message.adding.host=\u0192z\u0192X\u0192g\u201a\u00f0\u2019\u00c7\u2030\u00c1\u201a\u00b5\u201a\u00c4\u201a\u00a2\u201a\u00dc\u201a\u00b7 -message.adding.Netscaler.device=NetScaler \u0192f\u0192o\u0192C\u0192X\u201a\u00f0\u2019\u00c7\u2030\u00c1\u201a\u00b5\u201a\u00c4\u201a\u00a2\u201a\u00dc\u201a\u00b7 -message.adding.Netscaler.provider=NetScaler \u0192v\u0192\ufffd\u0192o\u0192C\u0192_\ufffd[\u201a\u00f0\u2019\u00c7\u2030\u00c1\u201a\u00b5\u201a\u00c4\u201a\u00a2\u201a\u00dc\u201a\u00b7 -message.additional.networks.desc=\u2030\u00bc\u2018z\u0192C\u0192\u201c\u0192X\u0192^\u0192\u201c\u0192X\u201a\u00aa\ufffd\u00da\u2018\u00b1\u201a\u00b7\u201a\u00e9\u2019\u00c7\u2030\u00c1\u201a\u00cc\u0192l\u0192b\u0192g\u0192\ufffd\ufffd[\u0192N\u201a\u00f0\u2018I\u2018\u00f0\u201a\u00b5\u201a\u00c4\u201a\u00ad\u201a\u00be\u201a\u00b3\u201a\u00a2\ufffdB -message.advanced.mode.desc=VLAN \u0192T\u0192|\ufffd[\u0192g\u201a\u00f0\u2014L\u0152\u00f8\u201a\u00c9\u201a\u00b7\u201a\u00e9\ufffd\u00ea\ufffd\u2021\u201a\u00cd\ufffdA\u201a\u00b1\u201a\u00cc\u0192l\u0192b\u0192g\u0192\ufffd\ufffd[\u0192N \u0192\u201a\u0192f\u0192\u2039\u201a\u00f0\u2018I\u2018\u00f0\u201a\u00b5\u201a\u00c4\u201a\u00ad\u201a\u00be\u201a\u00b3\u201a\u00a2\ufffdB\u201a\u00b1\u201a\u00cc\u0192\u201a\u0192f\u0192\u2039\u201a\u00c5\u201a\u00cd\ufffd\u00c5\u201a\u00e0\ufffd_\u201c\u00ee\u201a\u00c9\u0192J\u0192X\u0192^\u0192\u20ac \u0192l\u0192b\u0192g\u0192\ufffd\ufffd[\u0192N \u0192I\u0192t\u0192@\u0192\u0160\u0192\u201c\u0192O\u201a\u00f0\u2019\u00f1\u2039\u0178\u201a\u00c5\u201a\u00ab\ufffdA\u0192t\u0192@\u0192C\u0192A\u0192E\u0192H\ufffd[\u0192\u2039\ufffdAVPN\ufffdA\u0192\ufffd\ufffd[\u0192h \u0192o\u0192\u2030\u0192\u201c\u0192T\ufffd[\u201a\u00cc\u0192T\u0192|\ufffd[\u0192g\u201a\u00cc\u201a\u00d9\u201a\u00a9\u201a\u00c9\ufffdA\u2019\u00bc\ufffd\u00da\u0192l\u0192b\u0192g\u0192\ufffd\ufffd[\u0192N\u201a\u00c6\u2030\u00bc\u2018z\u0192l\u0192b\u0192g\u0192\ufffd\ufffd[\u0192N\u201a\u00e0\u2014L\u0152\u00f8\u201a\u00c9\u201a\u00b7\u201a\u00e9\u201a\u00b1\u201a\u00c6\u201a\u00aa\u201a\u00c5\u201a\u00ab\u201a\u00dc\u201a\u00b7\ufffdB -message.advanced.security.group=\u0192Q\u0192X\u0192g VM \u201a\u00f0\u2022\u00aa\u2014\u00a3\u201a\u00b7\u201a\u00e9\u201a\u00bd\u201a\u00df\u201a\u00c9\u0192Z\u0192L\u0192\u2026\u0192\u0160\u0192e\u0192B \u0192O\u0192\u2039\ufffd[\u0192v\u201a\u00f0\u017dg\u2014p\u201a\u00b7\u201a\u00e9\ufffd\u00ea\ufffd\u2021\u201a\u00cd\ufffdA\u201a\u00b1\u201a\u00cc\u0192I\u0192v\u0192V\u0192\u2021\u0192\u201c\u201a\u00f0\u2018I\u2018\u00f0\u201a\u00b5\u201a\u00c4\u201a\u00ad\u201a\u00be\u201a\u00b3\u201a\u00a2\ufffdB -message.advanced.virtual=\u0192Q\u0192X\u0192g VM \u201a\u00f0\u2022\u00aa\u2014\u00a3\u201a\u00b7\u201a\u00e9\u201a\u00bd\u201a\u00df\u201a\u00c9\u0192]\ufffd[\u0192\u201c\u2018S\u2018\u00cc\u201a\u00cc VLAN \u201a\u00f0\u017dg\u2014p\u201a\u00b7\u201a\u00e9\ufffd\u00ea\ufffd\u2021\u201a\u00cd\ufffdA\u201a\u00b1\u201a\u00cc\u0192I\u0192v\u0192V\u0192\u2021\u0192\u201c\u201a\u00f0\u2018I\u2018\u00f0\u201a\u00b5\u201a\u00c4\u201a\u00ad\u201a\u00be\u201a\u00b3\u201a\u00a2\ufffdB -message.after.enable.s3=S3 \u0192x\ufffd[\u0192X\u201a\u00cc\u0192Z\u0192J\u0192\u201c\u0192_\u0192\u0160 \u0192X\u0192g\u0192\u0152\ufffd[\u0192W\u201a\u00aa\ufffd\\ufffd\u00ac\u201a\u00b3\u201a\u00ea\u201a\u00dc\u201a\u00b5\u201a\u00bd\ufffdB\u2019\ufffd\: \u201a\u00b1\u201a\u00cc\u0192y\ufffd[\u0192W\u201a\u00f0\u2022\u00c2\u201a\u00b6\u201a\u00e9\u201a\u00c6\ufffdAS3 \u201a\u00f0\ufffd\u00c4\ufffd\\ufffd\u00ac\u201a\u00b7\u201a\u00e9\u201a\u00b1\u201a\u00c6\u201a\u00cd\u201a\u00c5\u201a\u00ab\u201a\u00dc\u201a\u00b9\u201a\u00f1\ufffdB -message.after.enable.swift=Swift \u201a\u00aa\ufffd\\ufffd\u00ac\u201a\u00b3\u201a\u00ea\u201a\u00dc\u201a\u00b5\u201a\u00bd\ufffdB\u2019\ufffd\: \u201a\u00b1\u201a\u00cc\u0192y\ufffd[\u0192W\u201a\u00f0\u2022\u00c2\u201a\u00b6\u201a\u00e9\u201a\u00c6\ufffdASwift \u201a\u00f0\ufffd\u00c4\ufffd\\ufffd\u00ac\u201a\u00b7\u201a\u00e9\u201a\u00b1\u201a\u00c6\u201a\u00cd\u201a\u00c5\u201a\u00ab\u201a\u00dc\u201a\u00b9\u201a\u00f1\ufffdB -message.alert.state.detected=\u0192A\u0192\u2030\ufffd[\u0192g\ufffd\u00f3\u2018\u00d4\u201a\u00aa\u0152\u0178\ufffdo\u201a\u00b3\u201a\u00ea\u201a\u00dc\u201a\u00b5\u201a\u00bd -message.allow.vpn.access=VPN \u0192A\u0192N\u0192Z\u0192X\u201a\u00f0\u2039\u2013\u2030\u00c2\u201a\u00b7\u201a\u00e9\u0192\u2020\ufffd[\u0192U\ufffd[\u201a\u00cc\u0192\u2020\ufffd[\u0192U\ufffd[\u2013\u00bc\u201a\u00c6\u0192p\u0192X\u0192\ufffd\ufffd[\u0192h\u201a\u00f0\u201c\u00fc\u2014\u00cd\u201a\u00b5\u201a\u00c4\u201a\u00ad\u201a\u00be\u201a\u00b3\u201a\u00a2\ufffdB -message.apply.snapshot.policy=\u0152\u00bb\ufffd\u00dd\u201a\u00cc\u0192X\u0192i\u0192b\u0192v\u0192V\u0192\u2021\u0192b\u0192g \u0192|\u0192\u0160\u0192V\ufffd[\u201a\u00f0\ufffdX\ufffdV\u201a\u00b5\u201a\u00dc\u201a\u00b5\u201a\u00bd\ufffdB -message.attach.iso.confirm=\u201a\u00b1\u201a\u00cc\u2030\u00bc\u2018z\u0192C\u0192\u201c\u0192X\u0192^\u0192\u201c\u0192X\u201a\u00c9 ISO \u0192t\u0192@\u0192C\u0192\u2039\u201a\u00f0\u0192A\u0192^\u0192b\u0192`\u201a\u00b5\u201a\u00c4\u201a\u00e0\u201a\u00e6\u201a\u00eb\u201a\u00b5\u201a\u00a2\u201a\u00c5\u201a\u00b7\u201a\u00a9? -message.attach.volume=\ufffdV\u201a\u00b5\u201a\u00a2\u0192{\u0192\u0160\u0192\u2026\ufffd[\u0192\u20ac\u201a\u00f0\u0192A\u0192^\u0192b\u0192`\u201a\u00b7\u201a\u00e9\u201a\u00bd\u201a\u00df\u201a\u00c9\ufffdA\u017d\u0178\u201a\u00cc\u0192f\ufffd[\u0192^\u201a\u00f0\u201c\u00fc\u2014\u00cd\u201a\u00b5\u201a\u00c4\u201a\u00ad\u201a\u00be\u201a\u00b3\u201a\u00a2\ufffdBWindows \u0192x\ufffd[\u0192X\u201a\u00cc\u2030\u00bc\u2018z\u0192}\u0192V\u0192\u201c\u201a\u00c9\u0192f\u0192B\u0192X\u0192N \u0192{\u0192\u0160\u0192\u2026\ufffd[\u0192\u20ac\u201a\u00f0\u0192A\u0192^\u0192b\u0192`\u201a\u00b7\u201a\u00e9\ufffd\u00ea\ufffd\u2021\u201a\u00cd\ufffdA\u0192A\u0192^\u0192b\u0192`\u201a\u00b5\u201a\u00bd\u0192f\u0192B\u0192X\u0192N\u201a\u00f0\u201dF\u017d\u00af\u201a\u00b7\u201a\u00e9\u201a\u00bd\u201a\u00df\u201a\u00c9\u0192C\u0192\u201c\u0192X\u0192^\u0192\u201c\u0192X\u201a\u00f0\ufffd\u00c4\u2039N\u201c\u00ae\u201a\u00b7\u201a\u00e9\u2022K\u2014v\u201a\u00aa\u201a\u00a0\u201a\u00e8\u201a\u00dc\u201a\u00b7\ufffdB -message.basic.mode.desc=VLAN \u0192T\u0192|\ufffd[\u0192g\u201a\u00aa\u2022s\u2014v\u201a\u00c5\u201a\u00a0\u201a\u00e9\ufffd\u00ea\ufffd\u2021\u201a\u00cd\ufffdA\u201a\u00b1\u201a\u00cc\u0192l\u0192b\u0192g\u0192\ufffd\ufffd[\u0192N \u0192\u201a\u0192f\u0192\u2039\u201a\u00f0\u2018I\u2018\u00f0\u201a\u00b5\u201a\u00c4\u201a\u00ad\u201a\u00be\u201a\u00b3\u201a\u00a2\ufffdB\u201a\u00b1\u201a\u00cc\u0192l\u0192b\u0192g\u0192\ufffd\ufffd[\u0192N \u0192\u201a\u0192f\u0192\u2039\u201a\u00c5\ufffd\u00ec\ufffd\u00ac\u201a\u00b3\u201a\u00ea\u201a\u00e9\u201a\u00b7\u201a\u00d7\u201a\u00c4\u201a\u00cc\u2030\u00bc\u2018z\u0192C\u0192\u201c\u0192X\u0192^\u0192\u201c\u0192X\u201a\u00c9\u0192l\u0192b\u0192g\u0192\ufffd\ufffd[\u0192N\u201a\u00a9\u201a\u00e7\u2019\u00bc\ufffd\u00da IP \u0192A\u0192h\u0192\u0152\u0192X\u201a\u00aa\u0160\u201e\u201a\u00e8\u201c\u2013\u201a\u00c4\u201a\u00e7\u201a\u00ea\ufffdA\u0192Z\u0192L\u0192\u2026\u0192\u0160\u0192e\u0192B \u0192O\u0192\u2039\ufffd[\u0192v\u201a\u00f0\u017dg\u2014p\u201a\u00b5\u201a\u00c4\u0192Z\u0192L\u0192\u2026\u0192\u0160\u0192e\u0192B\u201a\u00c6\u2022\u00aa\u2014\u00a3\u201a\u00aa\u2019\u00f1\u2039\u0178\u201a\u00b3\u201a\u00ea\u201a\u00dc\u201a\u00b7\ufffdB -message.change.offering.confirm=\u201a\u00b1\u201a\u00cc\u2030\u00bc\u2018z\u0192C\u0192\u201c\u0192X\u0192^\u0192\u201c\u0192X\u201a\u00cc\u0192T\ufffd[\u0192r\u0192X \u0192I\u0192t\u0192@\u0192\u0160\u0192\u201c\u0192O\u201a\u00f0\u2022\u00cf\ufffdX\u201a\u00b5\u201a\u00c4\u201a\u00e0\u201a\u00e6\u201a\u00eb\u201a\u00b5\u201a\u00a2\u201a\u00c5\u201a\u00b7\u201a\u00a9? -message.change.password=\u0192p\u0192X\u0192\ufffd\ufffd[\u0192h\u201a\u00f0\u2022\u00cf\ufffdX\u201a\u00b5\u201a\u00c4\u201a\u00ad\u201a\u00be\u201a\u00b3\u201a\u00a2\ufffdB -message.configure.all.traffic.types=\u2022\u00a1\ufffd\u201d\u201a\u00cc\u2022\u00a8\u2014\ufffd\u0192l\u0192b\u0192g\u0192\ufffd\ufffd[\u0192N\u201a\u00aa\u201a\u00a0\u201a\u00e8\u201a\u00dc\u201a\u00b7\ufffdB[\u2022\u00d2\ufffdW] \u201a\u00f0\u0192N\u0192\u0160\u0192b\u0192N\u201a\u00b5\u201a\u00c4\u0192g\u0192\u2030\u0192t\u0192B\u0192b\u0192N\u201a\u00cc\u017d\u00ed\u2014\u00de\u201a\u00b2\u201a\u00c6\u201a\u00c9\u0192\u2030\u0192x\u0192\u2039\u201a\u00f0\ufffd\\ufffd\u00ac\u201a\u00b5\u201a\u00c4\u201a\u00ad\u201a\u00be\u201a\u00b3\u201a\u00a2\ufffdB -message.configuring.guest.traffic=\u0192Q\u0192X\u0192g \u0192g\u0192\u2030\u0192t\u0192B\u0192b\u0192N\u201a\u00f0\ufffd\\ufffd\u00ac\u201a\u00b5\u201a\u00c4\u201a\u00a2\u201a\u00dc\u201a\u00b7 -message.configuring.physical.networks=\u2022\u00a8\u2014\ufffd\u0192l\u0192b\u0192g\u0192\ufffd\ufffd[\u0192N\u201a\u00f0\ufffd\\ufffd\u00ac\u201a\u00b5\u201a\u00c4\u201a\u00a2\u201a\u00dc\u201a\u00b7 -message.configuring.public.traffic=\u0192p\u0192u\u0192\u0160\u0192b\u0192N \u0192g\u0192\u2030\u0192t\u0192B\u0192b\u0192N\u201a\u00f0\ufffd\\ufffd\u00ac\u201a\u00b5\u201a\u00c4\u201a\u00a2\u201a\u00dc\u201a\u00b7 -message.configuring.storage.traffic=\u0192X\u0192g\u0192\u0152\ufffd[\u0192W \u0192g\u0192\u2030\u0192t\u0192B\u0192b\u0192N\u201a\u00f0\ufffd\\ufffd\u00ac\u201a\u00b5\u201a\u00c4\u201a\u00a2\u201a\u00dc\u201a\u00b7 -message.confirm.action.force.reconnect=\u201a\u00b1\u201a\u00cc\u0192z\u0192X\u0192g\u201a\u00f0\u2039\u00ad\ufffd\u00a7\ufffd\u00c4\ufffd\u00da\u2018\u00b1\u201a\u00b5\u201a\u00c4\u201a\u00e0\u201a\u00e6\u201a\u00eb\u201a\u00b5\u201a\u00a2\u201a\u00c5\u201a\u00b7\u201a\u00a9? -message.confirm.delete.F5=F5 \u201a\u00f0\ufffd\u00ed\ufffd\u0153\u201a\u00b5\u201a\u00c4\u201a\u00e0\u201a\u00e6\u201a\u00eb\u201a\u00b5\u201a\u00a2\u201a\u00c5\u201a\u00b7\u201a\u00a9? -message.confirm.delete.BrocadeVcs=Please confirm that you would like to delete Brocade Vcs Switch -message.confirm.delete.NetScaler=NetScaler \u201a\u00f0\ufffd\u00ed\ufffd\u0153\u201a\u00b5\u201a\u00c4\u201a\u00e0\u201a\u00e6\u201a\u00eb\u201a\u00b5\u201a\u00a2\u201a\u00c5\u201a\u00b7\u201a\u00a9? -message.confirm.delete.NuageVsp=Please confirm that you would like to delete Nuage Virtualized Services Directory -message.confirm.delete.SRX=SRX \u201a\u00f0\ufffd\u00ed\ufffd\u0153\u201a\u00b5\u201a\u00c4\u201a\u00e0\u201a\u00e6\u201a\u00eb\u201a\u00b5\u201a\u00a2\u201a\u00c5\u201a\u00b7\u201a\u00a9? -message.confirm.delete.PA=Palo Alto \u201a\u00f0\ufffd\u00ed\ufffd\u0153\u201a\u00b5\u201a\u00c4\u201a\u00e0\u201a\u00e6\u201a\u00eb\u201a\u00b5\u201a\u00a2\u201a\u00c5\u201a\u00b7\u201a\u00a9? -message.confirm.destroy.router=\u201a\u00b1\u201a\u00cc\u0192\u2039\ufffd[\u0192^\ufffd[\u201a\u00f0\u201dj\u0160\u00fc\u201a\u00b5\u201a\u00c4\u201a\u00e0\u201a\u00e6\u201a\u00eb\u201a\u00b5\u201a\u00a2\u201a\u00c5\u201a\u00b7\u201a\u00a9? -message.confirm.disable.provider=\u201a\u00b1\u201a\u00cc\u0192v\u0192\ufffd\u0192o\u0192C\u0192_\ufffd[\u201a\u00f0\u2013\u00b3\u0152\u00f8\u201a\u00c9\u201a\u00b5\u201a\u00c4\u201a\u00e0\u201a\u00e6\u201a\u00eb\u201a\u00b5\u201a\u00a2\u201a\u00c5\u201a\u00b7\u201a\u00a9? -message.confirm.enable.provider=\u201a\u00b1\u201a\u00cc\u0192v\u0192\ufffd\u0192o\u0192C\u0192_\ufffd[\u201a\u00f0\u2014L\u0152\u00f8\u201a\u00c9\u201a\u00b5\u201a\u00c4\u201a\u00e0\u201a\u00e6\u201a\u00eb\u201a\u00b5\u201a\u00a2\u201a\u00c5\u201a\u00b7\u201a\u00a9? -message.confirm.join.project=\u201a\u00b1\u201a\u00cc\u0192v\u0192\ufffd\u0192W\u0192F\u0192N\u0192g\u201a\u00c9\u017dQ\u2030\u00c1\u201a\u00b5\u201a\u00c4\u201a\u00e0\u201a\u00e6\u201a\u00eb\u201a\u00b5\u201a\u00a2\u201a\u00c5\u201a\u00b7\u201a\u00a9? -message.confirm.remove.IP.range=\u201a\u00b1\u201a\u00cc IP \u0192A\u0192h\u0192\u0152\u0192X\u201a\u00cc\u201d\u00cd\u02c6\u00cd\u201a\u00f0\ufffd\u00ed\ufffd\u0153\u201a\u00b5\u201a\u00c4\u201a\u00e0\u201a\u00e6\u201a\u00eb\u201a\u00b5\u201a\u00a2\u201a\u00c5\u201a\u00b7\u201a\u00a9? -message.confirm.shutdown.provider=\u201a\u00b1\u201a\u00cc\u0192v\u0192\ufffd\u0192o\u0192C\u0192_\ufffd[\u201a\u00f0\u0192V\u0192\u0192\u0192b\u0192g\u0192_\u0192E\u0192\u201c\u201a\u00b5\u201a\u00c4\u201a\u00e0\u201a\u00e6\u201a\u00eb\u201a\u00b5\u201a\u00a2\u201a\u00c5\u201a\u00b7\u201a\u00a9? -message.copy.iso.confirm=ISO \u201a\u00f0\u017d\u0178\u201a\u00cc\ufffd\u00ea\ufffd\u0160\u201a\u00c9\u0192R\u0192s\ufffd[\u201a\u00b5\u201a\u00c4\u201a\u00e0\u201a\u00e6\u201a\u00eb\u201a\u00b5\u201a\u00a2\u201a\u00c5\u201a\u00b7\u201a\u00a9? -message.copy.template=\u0192]\ufffd[\u0192\u201c \u201a\u00a9\u201a\u00e7\u0192e\u0192\u201c\u0192v\u0192\u0152\ufffd[\u0192g XXX \u201a\u00f0\u017d\u0178\u201a\u00cc\ufffd\u00ea\ufffd\u0160\u201a\u00c9\u0192R\u0192s\ufffd[\u201a\u00b5\u201a\u00dc\u201a\u00b7\: -message.create.template.vm=\u0192e\u0192\u201c\u0192v\u0192\u0152\ufffd[\u0192g \u201a\u00a9\u201a\u00e7 VM \u201a\u00f0\ufffd\u00ec\ufffd\u00ac\u201a\u00b5\u201a\u00dc\u201a\u00b7 -message.create.template.volume=\u0192f\u0192B\u0192X\u0192N \u0192{\u0192\u0160\u0192\u2026\ufffd[\u0192\u20ac \u201a\u00cc\u0192e\u0192\u201c\u0192v\u0192\u0152\ufffd[\u0192g\u201a\u00f0\ufffd\u00ec\ufffd\u00ac\u201a\u00b7\u201a\u00e9\u2018O\u201a\u00c9\ufffdA\u017d\u0178\u201a\u00cc\ufffd\u00ee\u2022\u00f1\u201a\u00f0\u017dw\u2019\u00e8\u201a\u00b5\u201a\u00c4\u201a\u00ad\u201a\u00be\u201a\u00b3\u201a\u00a2\ufffdB\u0192{\u0192\u0160\u0192\u2026\ufffd[\u0192\u20ac \u0192T\u0192C\u0192Y\u201a\u00c9\u201a\u00e6\u201a\u00c1\u201a\u00c4\u201a\u00cd\ufffdA\u0192e\u0192\u201c\u0192v\u0192\u0152\ufffd[\u0192g\u201a\u00cc\ufffd\u00ec\ufffd\u00ac\u201a\u00c9\u201a\u00cd\ufffd\u201d\u2022\u00aa\u02c6\u00c8\ufffd\u00e3\u201a\u00a9\u201a\u00a9\u201a\u00e9\u2030\u00c2\u201d\\ufffd\u00ab\u201a\u00aa\u201a\u00a0\u201a\u00e8\u201a\u00dc\u201a\u00b7\ufffdB -message.create.template=\u0192e\u0192\u201c\u0192v\u0192\u0152\ufffd[\u0192g\u201a\u00f0\ufffd\u00ec\ufffd\u00ac\u201a\u00b5\u201a\u00c4\u201a\u00e0\u201a\u00e6\u201a\u00eb\u201a\u00b5\u201a\u00a2\u201a\u00c5\u201a\u00b7\u201a\u00a9? -message.creating.cluster=\u0192N\u0192\u2030\u0192X\u0192^\ufffd[\u201a\u00f0\ufffd\u00ec\ufffd\u00ac\u201a\u00b5\u201a\u00c4\u201a\u00a2\u201a\u00dc\u201a\u00b7 -message.creating.guest.network=\u0192Q\u0192X\u0192g \u0192l\u0192b\u0192g\u0192\ufffd\ufffd[\u0192N\u201a\u00f0\ufffd\u00ec\ufffd\u00ac\u201a\u00b5\u201a\u00c4\u201a\u00a2\u201a\u00dc\u201a\u00b7 -message.creating.physical.networks=\u2022\u00a8\u2014\ufffd\u0192l\u0192b\u0192g\u0192\ufffd\ufffd[\u0192N\u201a\u00f0\ufffd\u00ec\ufffd\u00ac\u201a\u00b5\u201a\u00c4\u201a\u00a2\u201a\u00dc\u201a\u00b7 -message.creating.pod=\u0192|\u0192b\u0192h\u201a\u00f0\ufffd\u00ec\ufffd\u00ac\u201a\u00b5\u201a\u00c4\u201a\u00a2\u201a\u00dc\u201a\u00b7 -message.creating.primary.storage=\u0192v\u0192\u2030\u0192C\u0192}\u0192\u0160 \u0192X\u0192g\u0192\u0152\ufffd[\u0192W\u201a\u00f0\ufffd\u00ec\ufffd\u00ac\u201a\u00b5\u201a\u00c4\u201a\u00a2\u201a\u00dc\u201a\u00b7 -message.creating.secondary.storage=\u0192Z\u0192J\u0192\u201c\u0192_\u0192\u0160 \u0192X\u0192g\u0192\u0152\ufffd[\u0192W\u201a\u00f0\ufffd\u00ec\ufffd\u00ac\u201a\u00b5\u201a\u00c4\u201a\u00a2\u201a\u00dc\u201a\u00b7 -message.creating.zone=\u0192]\ufffd[\u0192\u201c\u201a\u00f0\ufffd\u00ec\ufffd\u00ac\u201a\u00b5\u201a\u00c4\u201a\u00a2\u201a\u00dc\u201a\u00b7 -message.decline.invitation=\u201a\u00b1\u201a\u00cc\u0192v\u0192\ufffd\u0192W\u0192F\u0192N\u0192g\u201a\u00d6\u201a\u00cc\ufffd\u00b5\u2018\u00d2\u201a\u00f0\u017d\u00ab\u2018\u00de\u201a\u00b5\u201a\u00c4\u201a\u00e0\u201a\u00e6\u201a\u00eb\u201a\u00b5\u201a\u00a2\u201a\u00c5\u201a\u00b7\u201a\u00a9? -message.dedicate.zone=\u0192]\ufffd[\u0192\u201c\u201a\u00f0\ufffd\u00ea\u2014p\u201a\u00c9\ufffd\u00dd\u2019\u00e8\u201a\u00b5\u201a\u00c4\u201a\u00a2\u201a\u00dc\u201a\u00b7 -message.delete.account=\u201a\u00b1\u201a\u00cc\u0192A\u0192J\u0192E\u0192\u201c\u0192g\u201a\u00f0\ufffd\u00ed\ufffd\u0153\u201a\u00b5\u201a\u00c4\u201a\u00e0\u201a\u00e6\u201a\u00eb\u201a\u00b5\u201a\u00a2\u201a\u00c5\u201a\u00b7\u201a\u00a9? -message.delete.affinity.group=\u201a\u00b1\u201a\u00cc\u0192A\u0192t\u0192B\u0192j\u0192e\u0192B \u0192O\u0192\u2039\ufffd[\u0192v\u201a\u00f0\ufffd\u00ed\ufffd\u0153\u201a\u00b5\u201a\u00c4\u201a\u00e0\u201a\u00e6\u201a\u00eb\u201a\u00b5\u201a\u00a2\u201a\u00c5\u201a\u00b7\u201a\u00a9? -message.delete.gateway=\u201a\u00b1\u201a\u00cc\u0192Q\ufffd[\u0192g\u0192E\u0192F\u0192C\u201a\u00f0\ufffd\u00ed\ufffd\u0153\u201a\u00b5\u201a\u00c4\u201a\u00e0\u201a\u00e6\u201a\u00eb\u201a\u00b5\u201a\u00a2\u201a\u00c5\u201a\u00b7\u201a\u00a9? -message.delete.project=\u201a\u00b1\u201a\u00cc\u0192v\u0192\ufffd\u0192W\u0192F\u0192N\u0192g\u201a\u00f0\ufffd\u00ed\ufffd\u0153\u201a\u00b5\u201a\u00c4\u201a\u00e0\u201a\u00e6\u201a\u00eb\u201a\u00b5\u201a\u00a2\u201a\u00c5\u201a\u00b7\u201a\u00a9? -message.delete.user=\u201a\u00b1\u201a\u00cc\u0192\u2020\ufffd[\u0192U\ufffd[\u201a\u00f0\ufffd\u00ed\ufffd\u0153\u201a\u00b5\u201a\u00c4\u201a\u00e0\u201a\u00e6\u201a\u00eb\u201a\u00b5\u201a\u00a2\u201a\u00c5\u201a\u00b7\u201a\u00a9? -message.delete.VPN.connection=VPN \ufffd\u00da\u2018\u00b1\u201a\u00f0\ufffd\u00ed\ufffd\u0153\u201a\u00b5\u201a\u00c4\u201a\u00e0\u201a\u00e6\u201a\u00eb\u201a\u00b5\u201a\u00a2\u201a\u00c5\u201a\u00b7\u201a\u00a9? -message.delete.VPN.customer.gateway=\u201a\u00b1\u201a\u00cc VPN \u0192J\u0192X\u0192^\u0192}\ufffd[ \u0192Q\ufffd[\u0192g\u0192E\u0192F\u0192C\u201a\u00f0\ufffd\u00ed\ufffd\u0153\u201a\u00b5\u201a\u00c4\u201a\u00e0\u201a\u00e6\u201a\u00eb\u201a\u00b5\u201a\u00a2\u201a\u00c5\u201a\u00b7\u201a\u00a9? -message.delete.VPN.gateway=\u201a\u00b1\u201a\u00cc VPN \u0192Q\ufffd[\u0192g\u0192E\u0192F\u0192C\u201a\u00f0\ufffd\u00ed\ufffd\u0153\u201a\u00b5\u201a\u00c4\u201a\u00e0\u201a\u00e6\u201a\u00eb\u201a\u00b5\u201a\u00a2\u201a\u00c5\u201a\u00b7\u201a\u00a9? -message.desc.advanced.zone=\u201a\u00e6\u201a\u00e8\ufffd\u00f4\u2014\u00fb\u201a\u00b3\u201a\u00ea\u201a\u00bd\u0192l\u0192b\u0192g\u0192\ufffd\ufffd[\u0192N\u2039Z\ufffdp\u201a\u00f0\u0192T\u0192|\ufffd[\u0192g\u201a\u00b5\u201a\u00dc\u201a\u00b7\ufffdB\u201a\u00b1\u201a\u00cc\u0192l\u0192b\u0192g\u0192\ufffd\ufffd[\u0192N \u0192\u201a\u0192f\u0192\u2039\u201a\u00f0\u2018I\u2018\u00f0\u201a\u00b7\u201a\u00e9\u201a\u00c6\ufffdA\u201a\u00e6\u201a\u00e8\ufffd_\u201c\u00ee\u201a\u00c9\u0192Q\u0192X\u0192g\u201a\u00cc\u0192l\u0192b\u0192g\u0192\ufffd\ufffd[\u0192N\u201a\u00f0\u2019\u00e8\u2039`\u201a\u00b5\ufffdA\u0192t\u0192@\u0192C\u0192A\u0192E\u0192H\ufffd[\u0192\u2039\ufffdAVPN\ufffdA\u0192\ufffd\ufffd[\u0192h \u0192o\u0192\u2030\u0192\u201c\u0192T\ufffd[\u201a\u00cc\u0192T\u0192|\ufffd[\u0192g\u201a\u00cc\u201a\u00e6\u201a\u00a4\u201a\u00c8\u0192J\u0192X\u0192^\u0192}\u0192C\u0192Y\u201a\u00b5\u201a\u00bd\u0192l\u0192b\u0192g\u0192\ufffd\ufffd[\u0192N \u0192I\u0192t\u0192@\u0192\u0160\u0192\u201c\u0192O\u201a\u00f0\u2019\u00f1\u2039\u0178\u201a\u00c5\u201a\u00ab\u201a\u00dc\u201a\u00b7\ufffdB -message.desc.basic.zone=\u0160e VM \u0192C\u0192\u201c\u0192X\u0192^\u0192\u201c\u0192X\u201a\u00c9 IP \u0192A\u0192h\u0192\u0152\u0192X\u201a\u00aa\u0192l\u0192b\u0192g\u0192\ufffd\ufffd[\u0192N\u201a\u00a9\u201a\u00e7\u2019\u00bc\ufffd\u00da\u0160\u201e\u201a\u00e8\u201c\u2013\u201a\u00c4\u201a\u00e7\u201a\u00ea\u201a\u00e9\ufffdA\u2019P\u02c6\u00ea\u201a\u00cc\u0192l\u0192b\u0192g\u0192\ufffd\ufffd[\u0192N\u201a\u00f0\u2019\u00f1\u2039\u0178\u201a\u00b5\u201a\u00dc\u201a\u00b7\ufffdB\u0192Z\u0192L\u0192\u2026\u0192\u0160\u0192e\u0192B \u0192O\u0192\u2039\ufffd[\u0192v (\u2018\u2014\ufffdM\u0152\u00b3 IP \u0192A\u0192h\u0192\u0152\u0192X\u201a\u00cc\u0192t\u0192B\u0192\u2039\u0192^\ufffd[) \u201a\u00cc\u201a\u00e6\u201a\u00a4\u201a\u00c8\u0192\u0152\u0192C\u0192\u201e\ufffd[ 3 \u0192\u0152\u0192x\u0192\u2039\u201a\u00cc\u2022\u00fb\u2013@\u201a\u00c5\u0192Q\u0192X\u0192g\u201a\u00f0\u2022\u00aa\u2014\u00a3\u201a\u00c5\u201a\u00ab\u201a\u00dc\u201a\u00b7\ufffdB -message.desc.cluster=\u0160e\u0192|\u0192b\u0192h\u201a\u00c9\u201a\u00cd 1 \u201a\u00c2\u02c6\u00c8\ufffd\u00e3\u201a\u00cc\u0192N\u0192\u2030\u0192X\u0192^\ufffd[\u201a\u00aa\u2022K\u2014v\u201a\u00c5\u201a\u00b7\ufffdB\ufffd\u00a1\u201a\u00b1\u201a\u00b1\u201a\u00c5\ufffd\u00c5\ufffd\u2030\u201a\u00cc\u0192N\u0192\u2030\u0192X\u0192^\ufffd[\u201a\u00f0\u2019\u00c7\u2030\u00c1\u201a\u00b5\u201a\u00dc\u201a\u00b7\ufffdB\u0192N\u0192\u2030\u0192X\u0192^\ufffd[\u201a\u00cd\u0192z\u0192X\u0192g\u201a\u00f0\u0192O\u0192\u2039\ufffd[\u0192v\u2030\u00bb\u201a\u00b7\u201a\u00e9\u2022\u00fb\u2013@\u201a\u00c5\u201a\u00b7\ufffdB1 \u201a\u00c2\u201a\u00cc\u0192N\u0192\u2030\u0192X\u0192^\ufffd[\u201c\u00e0\u201a\u00cc\u0192z\u0192X\u0192g\u201a\u00cd\u201a\u00b7\u201a\u00d7\u201a\u00c4\u201c\u00af\u02c6\u00ea\u201a\u00cc\u0192n\ufffd[\u0192h\u0192E\u0192F\u0192A\u201a\u00a9\u201a\u00e7\ufffd\\ufffd\u00ac\u201a\u00b3\u201a\u00ea\ufffdA\u201c\u00af\u201a\u00b6\u0192n\u0192C\u0192p\ufffd[\u0192o\u0192C\u0192U\ufffd[\u201a\u00f0\u017d\u00c0\ufffds\u201a\u00b5\ufffdA\u201c\u00af\u201a\u00b6\u0192T\u0192u\u0192l\u0192b\u0192g\ufffd\u00e3\u201a\u00c9\u201a\u00a0\u201a\u00e8\ufffdA\u201c\u00af\u201a\u00b6\u2039\u00a4\u2014L\u0192X\u0192g\u0192\u0152\ufffd[\u0192W\u201a\u00c9\u0192A\u0192N\u0192Z\u0192X\u201a\u00b5\u201a\u00dc\u201a\u00b7\ufffdB\u0160e\u0192N\u0192\u2030\u0192X\u0192^\ufffd[\u201a\u00cd 1 \u201a\u00c2\u02c6\u00c8\ufffd\u00e3\u201a\u00cc\u0192z\u0192X\u0192g\u201a\u00c6 1 \u201a\u00c2\u02c6\u00c8\ufffd\u00e3\u201a\u00cc\u0192v\u0192\u2030\u0192C\u0192}\u0192\u0160 \u0192X\u0192g\u0192\u0152\ufffd[\u0192W \u0192T\ufffd[\u0192o\ufffd[\u201a\u00a9\u201a\u00e7\ufffd\\ufffd\u00ac\u201a\u00b3\u201a\u00ea\u201a\u00dc\u201a\u00b7\ufffdB -message.desc.host=\u0160e\u0192N\u0192\u2030\u0192X\u0192^\ufffd[\u201a\u00c9\u201a\u00cd\ufffd\u00ad\u201a\u00c8\u201a\u00ad\u201a\u00c6\u201a\u00e0 1 \u201a\u00c2\ufffdA\u0192Q\u0192X\u0192g VM \u201a\u00f0\u017d\u00c0\ufffds\u201a\u00b7\u201a\u00e9\u201a\u00bd\u201a\u00df\u201a\u00cc\u0192z\u0192X\u0192g (\u0192R\u0192\u201c\u0192s\u0192\u2026\ufffd[\u0192^\ufffd[) \u201a\u00aa\u2022K\u2014v\u201a\u00c5\u201a\u00b7\ufffdB\ufffd\u00a1\u201a\u00b1\u201a\u00b1\u201a\u00c5\ufffd\u00c5\ufffd\u2030\u201a\u00cc\u0192z\u0192X\u0192g\u201a\u00f0\u2019\u00c7\u2030\u00c1\u201a\u00b5\u201a\u00dc\u201a\u00b7\ufffdBCloudStack \u201a\u00c5\u0192z\u0192X\u0192g\u201a\u00f0\u2039@\u201d\\u201a\u00b3\u201a\u00b9\u201a\u00e9\u201a\u00c9\u201a\u00cd\ufffdA\u0192z\u0192X\u0192g\u201a\u00c9\u0192n\u0192C\u0192p\ufffd[\u0192o\u0192C\u0192U\ufffd[\u201a\u00f0\u0192C\u0192\u201c\u0192X\u0192g\ufffd[\u0192\u2039\u201a\u00b5\u201a\u00c4 IP \u0192A\u0192h\u0192\u0152\u0192X\u201a\u00f0\u0160\u201e\u201a\u00e8\u201c\u2013\u201a\u00c4\ufffdA\u0192z\u0192X\u0192g\u201a\u00aa CloudStack \u0160\u00c7\u2014\ufffd\u0192T\ufffd[\u0192o\ufffd[\u201a\u00c9\ufffd\u00da\u2018\u00b1\u201a\u00b5\u201a\u00c4\u201a\u00a2\u201a\u00e9\u201a\u00b1\u201a\u00c6\u201a\u00f0\u0160m\u201dF\u201a\u00b5\u201a\u00dc\u201a\u00b7\ufffdB

\u0192z\u0192X\u0192g\u201a\u00cc DNS \u2013\u00bc\u201a\u00dc\u201a\u00bd\u201a\u00cd IP \u0192A\u0192h\u0192\u0152\u0192X\ufffdA\u0192\u2020\ufffd[\u0192U\ufffd[\u2013\u00bc (\u2019\u00ca\ufffd\u00ed\u201a\u00cd root) \u201a\u00c6\u0192p\u0192X\u0192\ufffd\ufffd[\u0192h\ufffdA\u201a\u00a8\u201a\u00e6\u201a\u00d1\u0192z\u0192X\u0192g\u201a\u00cc\u2022\u00aa\u2014\u00de\u201a\u00c9\u017dg\u2014p\u201a\u00b7\u201a\u00e9\u0192\u2030\u0192x\u0192\u2039\u201a\u00f0\u201c\u00fc\u2014\u00cd\u201a\u00b5\u201a\u00c4\u201a\u00ad\u201a\u00be\u201a\u00b3\u201a\u00a2\ufffdB -message.desc.primary.storage=\u0160e\u0192N\u0192\u2030\u0192X\u0192^\ufffd[\u201a\u00c9\u201a\u00cd\ufffd\u00ad\u201a\u00c8\u201a\u00ad\u201a\u00c6\u201a\u00e0 1 \u201a\u00c2\ufffdA\u0192v\u0192\u2030\u0192C\u0192}\u0192\u0160 \u0192X\u0192g\u0192\u0152\ufffd[\u0192W \u0192T\ufffd[\u0192o\ufffd[\u201a\u00aa\u2022K\u2014v\u201a\u00c5\u201a\u00b7\ufffdB\ufffd\u00a1\u201a\u00b1\u201a\u00b1\u201a\u00c5\ufffd\u00c5\ufffd\u2030\u201a\u00cc\u0192T\ufffd[\u0192o\ufffd[\u201a\u00f0\u2019\u00c7\u2030\u00c1\u201a\u00b5\u201a\u00dc\u201a\u00b7\ufffdB\u0192v\u0192\u2030\u0192C\u0192}\u0192\u0160 \u0192X\u0192g\u0192\u0152\ufffd[\u0192W\u201a\u00cd\ufffdA\u0192N\u0192\u2030\u0192X\u0192^\ufffd[\u201c\u00e0\u201a\u00cc\u0192z\u0192X\u0192g\ufffd\u00e3\u201a\u00c5\u201c\u00ae\ufffd\u00ec\u201a\u00b7\u201a\u00e9\u201a\u00b7\u201a\u00d7\u201a\u00c4\u201a\u00cc VM \u201a\u00cc\u0192f\u0192B\u0192X\u0192N \u0192{\u0192\u0160\u0192\u2026\ufffd[\u0192\u20ac\u201a\u00f0\u0160i\u201d[\u201a\u00b5\u201a\u00dc\u201a\u00b7\ufffdB\u0160\u00ee\u2018b\u201a\u00c6\u201a\u00c8\u201a\u00e9\u0192n\u0192C\u0192p\ufffd[\u0192o\u0192C\u0192U\ufffd[\u201a\u00c5\u0192T\u0192|\ufffd[\u0192g\u201a\u00b3\u201a\u00ea\u201a\u00e9\ufffdA\u2022W\ufffd\u20ac\u201a\u00c9\ufffd\u20ac\u2039\u2019\u201a\u00b5\u201a\u00bd\u0192v\u0192\ufffd\u0192g\u0192R\u0192\u2039\u201a\u00f0\u017dg\u2014p\u201a\u00b5\u201a\u00c4\u201a\u00ad\u201a\u00be\u201a\u00b3\u201a\u00a2\ufffdB -message.desc.secondary.storage=\u0160e\u0192]\ufffd[\u0192\u201c\u201a\u00c9\u201a\u00cd\ufffd\u00ad\u201a\u00c8\u201a\u00ad\u201a\u00c6\u201a\u00e0 1 \u201a\u00c2\ufffdANFS \u201a\u00c2\u201a\u00dc\u201a\u00e8\u0192Z\u0192J\u0192\u201c\u0192_\u0192\u0160 \u0192X\u0192g\u0192\u0152\ufffd[\u0192W \u0192T\ufffd[\u0192o\ufffd[\u201a\u00aa\u2022K\u2014v\u201a\u00c5\u201a\u00b7\ufffdB\ufffd\u00a1\u201a\u00b1\u201a\u00b1\u201a\u00c5\ufffd\u00c5\ufffd\u2030\u201a\u00cc\u0192T\ufffd[\u0192o\ufffd[\u201a\u00f0\u2019\u00c7\u2030\u00c1\u201a\u00b5\u201a\u00dc\u201a\u00b7\ufffdB\u0192Z\u0192J\u0192\u201c\u0192_\u0192\u0160 \u0192X\u0192g\u0192\u0152\ufffd[\u0192W\u201a\u00cd VM \u0192e\u0192\u201c\u0192v\u0192\u0152\ufffd[\u0192g\ufffdAISO \u0192C\u0192\ufffd\ufffd[\u0192W\ufffdA\u201a\u00a8\u201a\u00e6\u201a\u00d1VM \u0192f\u0192B\u0192X\u0192N \u0192{\u0192\u0160\u0192\u2026\ufffd[\u0192\u20ac\u201a\u00cc\u0192X\u0192i\u0192b\u0192v\u0192V\u0192\u2021\u0192b\u0192g\u201a\u00f0\u0160i\u201d[\u201a\u00b5\u201a\u00dc\u201a\u00b7\ufffdB\u201a\u00b1\u201a\u00cc\u0192T\ufffd[\u0192o\ufffd[\u201a\u00cd\u0192]\ufffd[\u0192\u201c\u201c\u00e0\u201a\u00cc\u201a\u00b7\u201a\u00d7\u201a\u00c4\u201a\u00cc\u0192z\u0192X\u0192g\u201a\u00c5\u017dg\u2014p\u201a\u00c5\u201a\u00ab\u201a\u00e9\u2022K\u2014v\u201a\u00aa\u201a\u00a0\u201a\u00e8\u201a\u00dc\u201a\u00b7\ufffdB

IP \u0192A\u0192h\u0192\u0152\u0192X\u201a\u00c6\u0192G\u0192N\u0192X\u0192|\ufffd[\u0192g\u201a\u00b3\u201a\u00ea\u201a\u00bd\u0192p\u0192X\u201a\u00f0\u201c\u00fc\u2014\u00cd\u201a\u00b5\u201a\u00c4\u201a\u00ad\u201a\u00be\u201a\u00b3\u201a\u00a2\ufffdB -message.desc.zone=\u0192]\ufffd[\u0192\u201c\u201a\u00cd CloudStack \u0160\u00c2\u2039\u00ab\u201c\u00e0\u201a\u00cc\ufffd\u00c5\u2018\u00e5\u201a\u00cc\u2018g\ufffdD\u2019P\u02c6\u00ca\u201a\u00c5\ufffdA\u2019\u00ca\ufffd\u00ed\ufffdA\u2019P\u02c6\u00ea\u201a\u00cc\u0192f\ufffd[\u0192^\u0192Z\u0192\u201c\u0192^\ufffd[\u201a\u00c9\u2018\u0160\u201c\u2013\u201a\u00b5\u201a\u00dc\u201a\u00b7\ufffdB\u0192]\ufffd[\u0192\u201c\u201a\u00c9\u201a\u00e6\u201a\u00c1\u201a\u00c4\u2022\u00a8\u2014\ufffd\u201cI\u201a\u00c8\u2022\u00aa\u2014\u00a3\u201a\u00c6\ufffd\u00e7\u2019\u00b7\ufffd\u00ab\u201a\u00aa\u2019\u00f1\u2039\u0178\u201a\u00b3\u201a\u00ea\u201a\u00dc\u201a\u00b7\ufffdB\u0192]\ufffd[\u0192\u201c\u201a\u00cd 1 \u201a\u00c2\u02c6\u00c8\ufffd\u00e3\u201a\u00cc\u0192|\u0192b\u0192h (\u0160e\u0192|\u0192b\u0192h\u201a\u00cd\u0192z\u0192X\u0192g\u201a\u00c6\u0192v\u0192\u2030\u0192C\u0192}\u0192\u0160 \u0192X\u0192g\u0192\u0152\ufffd[\u0192W \u0192T\ufffd[\u0192o\ufffd[\u201a\u00a9\u201a\u00e7\ufffd\\ufffd\u00ac\u201a\u00b3\u201a\u00ea\u201a\u00dc\u201a\u00b7) \u201a\u00c6\ufffdA\u0192]\ufffd[\u0192\u201c\u201c\u00e0\u201a\u00cc\u201a\u00b7\u201a\u00d7\u201a\u00c4\u201a\u00cc\u0192|\u0192b\u0192h\u201a\u00c5\u2039\u00a4\u2014L\u201a\u00b3\u201a\u00ea\u201a\u00e9\u0192Z\u0192J\u0192\u201c\u0192_\u0192\u0160 \u0192X\u0192g\u0192\u0152\ufffd[\u0192W \u0192T\ufffd[\u0192o\ufffd[\u201a\u00a9\u201a\u00e7\ufffd\\ufffd\u00ac\u201a\u00b3\u201a\u00ea\u201a\u00dc\u201a\u00b7\ufffdB -message.detach.disk=\u201a\u00b1\u201a\u00cc\u0192f\u0192B\u0192X\u0192N\u201a\u00f0\u0192f\u0192^\u0192b\u0192`\u201a\u00b5\u201a\u00c4\u201a\u00e0\u201a\u00e6\u201a\u00eb\u201a\u00b5\u201a\u00a2\u201a\u00c5\u201a\u00b7\u201a\u00a9? -message.detach.iso.confirm=\u201a\u00b1\u201a\u00cc\u2030\u00bc\u2018z\u0192C\u0192\u201c\u0192X\u0192^\u0192\u201c\u0192X\u201a\u00a9\u201a\u00e7 ISO \u0192t\u0192@\u0192C\u0192\u2039\u201a\u00f0\u0192f\u0192^\u0192b\u0192`\u201a\u00b5\u201a\u00c4\u201a\u00e0\u201a\u00e6\u201a\u00eb\u201a\u00b5\u201a\u00a2\u201a\u00c5\u201a\u00b7\u201a\u00a9? -message.disable.account=\u201a\u00b1\u201a\u00cc\u0192A\u0192J\u0192E\u0192\u201c\u0192g\u201a\u00f0\u2013\u00b3\u0152\u00f8\u201a\u00c9\u201a\u00b5\u201a\u00c4\u201a\u00e0\u201a\u00e6\u201a\u00eb\u201a\u00b5\u201a\u00a2\u201a\u00c5\u201a\u00b7\u201a\u00a9? \u201a\u00b1\u201a\u00cc\u0192A\u0192J\u0192E\u0192\u201c\u0192g\u201a\u00cc\u201a\u00b7\u201a\u00d7\u201a\u00c4\u201a\u00cc\u0192\u2020\ufffd[\u0192U\ufffd[\u201a\u00aa\u0192N\u0192\u2030\u0192E\u0192h \u0192\u0160\u0192\\ufffd[\u0192X\u201a\u00c9\u0192A\u0192N\u0192Z\u0192X\u201a\u00c5\u201a\u00ab\u201a\u00c8\u201a\u00ad\u201a\u00c8\u201a\u00e8\u201a\u00dc\u201a\u00b7\ufffdB\u017d\u00c0\ufffds\u2019\u2020\u201a\u00cc\u201a\u00b7\u201a\u00d7\u201a\u00c4\u201a\u00cc\u2030\u00bc\u2018z\u0192}\u0192V\u0192\u201c\u201a\u00aa\ufffd\u00a1\u201a\u00b7\u201a\u00ae\u201a\u00c9\u0192V\u0192\u0192\u0192b\u0192g\u0192_\u0192E\u0192\u201c\u201a\u00b3\u201a\u00ea\u201a\u00dc\u201a\u00b7\ufffdB -message.disable.snapshot.policy=\u0152\u00bb\ufffd\u00dd\u201a\u00cc\u0192X\u0192i\u0192b\u0192v\u0192V\u0192\u2021\u0192b\u0192g \u0192|\u0192\u0160\u0192V\ufffd[\u201a\u00f0\u2013\u00b3\u0152\u00f8\u201a\u00c9\u201a\u00b5\u201a\u00dc\u201a\u00b5\u201a\u00bd\ufffdB -message.disable.user=\u201a\u00b1\u201a\u00cc\u0192\u2020\ufffd[\u0192U\ufffd[\u201a\u00f0\u2013\u00b3\u0152\u00f8\u201a\u00c9\u201a\u00b5\u201a\u00c4\u201a\u00e0\u201a\u00e6\u201a\u00eb\u201a\u00b5\u201a\u00a2\u201a\u00c5\u201a\u00b7\u201a\u00a9? -message.disable.vpn.access=VPN \u0192A\u0192N\u0192Z\u0192X\u201a\u00f0\u2013\u00b3\u0152\u00f8\u201a\u00c9\u201a\u00b5\u201a\u00c4\u201a\u00e0\u201a\u00e6\u201a\u00eb\u201a\u00b5\u201a\u00a2\u201a\u00c5\u201a\u00b7\u201a\u00a9? -message.disable.vpn=VPN \u201a\u00f0\u2013\u00b3\u0152\u00f8\u201a\u00c9\u201a\u00b5\u201a\u00c4\u201a\u00e0\u201a\u00e6\u201a\u00eb\u201a\u00b5\u201a\u00a2\u201a\u00c5\u201a\u00b7\u201a\u00a9? -message.download.ISO=ISO \u201a\u00f0\u0192_\u0192E\u0192\u201c\u0192\ufffd\ufffd[\u0192h\u201a\u00b7\u201a\u00e9\u201a\u00c9\u201a\u00cd 00000 \u201a\u00f0\u0192N\u0192\u0160\u0192b\u0192N\u201a\u00b5\u201a\u00dc\u201a\u00b7 -message.download.template=\u0192e\u0192\u201c\u0192v\u0192\u0152\ufffd[\u0192g\u201a\u00f0\u0192_\u0192E\u0192\u201c\u0192\ufffd\ufffd[\u0192h\u201a\u00b7\u201a\u00e9\u201a\u00c9\u201a\u00cd 00000 \u201a\u00f0\u0192N\u0192\u0160\u0192b\u0192N\u201a\u00b5\u201a\u00dc\u201a\u00b7 -message.download.volume.confirm=\u201a\u00b1\u201a\u00cc\u0192{\u0192\u0160\u0192\u2026\ufffd[\u0192\u20ac\u201a\u00f0\u0192_\u0192E\u0192\u201c\u0192\ufffd\ufffd[\u0192h\u201a\u00b5\u201a\u00c4\u201a\u00e0\u201a\u00e6\u201a\u00eb\u201a\u00b5\u201a\u00a2\u201a\u00c5\u201a\u00b7\u201a\u00a9? -message.download.volume=\u0192{\u0192\u0160\u0192\u2026\ufffd[\u0192\u20ac\u201a\u00f0\u0192_\u0192E\u0192\u201c\u0192\ufffd\ufffd[\u0192h\u201a\u00b7\u201a\u00e9\u201a\u00c9\u201a\u00cd 00000 \u201a\u00f0\u0192N\u0192\u0160\u0192b\u0192N\u201a\u00b5\u201a\u00dc\u201a\u00b7 -message.edit.account=\u2022\u00d2\ufffdW (\ufffdu-1\ufffdv\u201a\u00cd\ufffdA\u0192\u0160\u0192\\ufffd[\u0192X\ufffd\u00ec\ufffd\u00ac\u201a\u00cc\u2014\u00ca\u201a\u00c9\ufffd\u00a7\u0152\u00c0\u201a\u00aa\u201a\u00c8\u201a\u00a2\u201a\u00b1\u201a\u00c6\u201a\u00f0\u017d\u00a6\u201a\u00b5\u201a\u00dc\u201a\u00b7) -message.edit.confirm=[\u2022\u00db\u2018\u00b6] \u201a\u00f0\u0192N\u0192\u0160\u0192b\u0192N\u201a\u00b7\u201a\u00e9\u2018O\u201a\u00c9\u2022\u00cf\ufffdX\u201c\u00e0\u2014e\u201a\u00f0\u0160m\u201dF\u201a\u00b5\u201a\u00c4\u201a\u00ad\u201a\u00be\u201a\u00b3\u201a\u00a2\ufffdB -message.edit.limits=\u017d\u0178\u201a\u00cc\u0192\u0160\u0192\\ufffd[\u0192X\u201a\u00c9\ufffd\u00a7\u0152\u00c0\u201a\u00f0\u017dw\u2019\u00e8\u201a\u00b5\u201a\u00c4\u201a\u00ad\u201a\u00be\u201a\u00b3\u201a\u00a2\ufffdB\ufffdu-1\ufffdv\u201a\u00cd\ufffdA\u0192\u0160\u0192\\ufffd[\u0192X\ufffd\u00ec\ufffd\u00ac\u201a\u00c9\ufffd\u00a7\u0152\u00c0\u201a\u00aa\u201a\u00c8\u201a\u00a2\u201a\u00b1\u201a\u00c6\u201a\u00f0\u017d\u00a6\u201a\u00b5\u201a\u00dc\u201a\u00b7\ufffdB -message.edit.traffic.type=\u201a\u00b1\u201a\u00cc\u0192g\u0192\u2030\u0192t\u0192B\u0192b\u0192N\u201a\u00cc\u017d\u00ed\u2014\u00de\u201a\u00c9\u0160\u00d6\u02dcA\u2022t\u201a\u00af\u201a\u00e9\u0192g\u0192\u2030\u0192t\u0192B\u0192b\u0192N \u0192\u2030\u0192x\u0192\u2039\u201a\u00f0\u017dw\u2019\u00e8\u201a\u00b5\u201a\u00c4\u201a\u00ad\u201a\u00be\u201a\u00b3\u201a\u00a2\ufffdB -message.enable.account=\u201a\u00b1\u201a\u00cc\u0192A\u0192J\u0192E\u0192\u201c\u0192g\u201a\u00f0\u2014L\u0152\u00f8\u201a\u00c9\u201a\u00b5\u201a\u00c4\u201a\u00e0\u201a\u00e6\u201a\u00eb\u201a\u00b5\u201a\u00a2\u201a\u00c5\u201a\u00b7\u201a\u00a9? -message.enable.user=\u201a\u00b1\u201a\u00cc\u0192\u2020\ufffd[\u0192U\ufffd[\u201a\u00f0\u2014L\u0152\u00f8\u201a\u00c9\u201a\u00b5\u201a\u00c4\u201a\u00e0\u201a\u00e6\u201a\u00eb\u201a\u00b5\u201a\u00a2\u201a\u00c5\u201a\u00b7\u201a\u00a9? -message.enable.vpn.access=\u0152\u00bb\ufffd\u00dd\u201a\u00b1\u201a\u00cc IP \u0192A\u0192h\u0192\u0152\u0192X\u201a\u00c9\u2018\u00ce\u201a\u00b7\u201a\u00e9 VPN \u201a\u00cd\u2013\u00b3\u0152\u00f8\u201a\u00c5\u201a\u00b7\ufffdBVPN \u0192A\u0192N\u0192Z\u0192X\u201a\u00f0\u2014L\u0152\u00f8\u201a\u00c9\u201a\u00b5\u201a\u00c4\u201a\u00e0\u201a\u00e6\u201a\u00eb\u201a\u00b5\u201a\u00a2\u201a\u00c5\u201a\u00b7\u201a\u00a9? -message.enable.vpn=\u201a\u00b1\u201a\u00cc IP \u0192A\u0192h\u0192\u0152\u0192X\u201a\u00c9\u2018\u00ce\u201a\u00b7\u201a\u00e9 VPN \u0192A\u0192N\u0192Z\u0192X\u201a\u00f0\u2014L\u0152\u00f8\u201a\u00c9\u201a\u00b5\u201a\u00c4\u201a\u00e0\u201a\u00e6\u201a\u00eb\u201a\u00b5\u201a\u00a2\u201a\u00c5\u201a\u00b7\u201a\u00a9? -message.enabled.vpn.ip.sec=IPSec \u017d\u2013\u2018O\u2039\u00a4\u2014L\u0192L\ufffd[: -message.enabled.vpn=\u0152\u00bb\ufffd\u00dd\ufffdAVPN \u0192A\u0192N\u0192Z\u0192X\u201a\u00aa\u2014L\u0152\u00f8\u201a\u00c9\u201a\u00c8\u201a\u00c1\u201a\u00c4\u201a\u00a2\u201a\u00dc\u201a\u00b7\ufffdB\u017d\u0178\u201a\u00cc IP \u0192A\u0192h\u0192\u0152\u0192X\u0152o\u2014R\u201a\u00c5\u0192A\u0192N\u0192Z\u0192X\u201a\u00c5\u201a\u00ab\u201a\u00dc\u201a\u00b7\ufffdB -message.enabling.security.group.provider=\u0192Z\u0192L\u0192\u2026\u0192\u0160\u0192e\u0192B \u0192O\u0192\u2039\ufffd[\u0192v \u0192v\u0192\ufffd\u0192o\u0192C\u0192_\ufffd[\u201a\u00f0\u2014L\u0152\u00f8\u201a\u00c9\u201a\u00b5\u201a\u00c4\u201a\u00a2\u201a\u00dc\u201a\u00b7 -message.enabling.zone=\u0192]\ufffd[\u0192\u201c\u201a\u00f0\u2014L\u0152\u00f8\u201a\u00c9\u201a\u00b5\u201a\u00c4\u201a\u00a2\u201a\u00dc\u201a\u00b7 -message.enter.token=\u201cd\u017dq\u0192\ufffd\ufffd[\u0192\u2039\u201a\u00cc\ufffd\u00b5\u2018\u00d2\ufffd\u00f3\u201a\u00c9\u2039L\ufffd\u00da\u201a\u00b3\u201a\u00ea\u201a\u00c4\u201a\u00a2\u201a\u00e9\u0192g\ufffd[\u0192N\u0192\u201c\u201a\u00f0\u201c\u00fc\u2014\u00cd\u201a\u00b5\u201a\u00c4\u201a\u00ad\u201a\u00be\u201a\u00b3\u201a\u00a2\ufffdB -message.generate.keys=\u201a\u00b1\u201a\u00cc\u0192\u2020\ufffd[\u0192U\ufffd[\u201a\u00c9\ufffdV\u201a\u00b5\u201a\u00a2\u0192L\ufffd[\u201a\u00f0\ufffd\u00b6\ufffd\u00ac\u201a\u00b5\u201a\u00c4\u201a\u00e0\u201a\u00e6\u201a\u00eb\u201a\u00b5\u201a\u00a2\u201a\u00c5\u201a\u00b7\u201a\u00a9? -message.guest.traffic.in.advanced.zone=\u0192Q\u0192X\u0192g \u0192l\u0192b\u0192g\u0192\ufffd\ufffd[\u0192N \u0192g\u0192\u2030\u0192t\u0192B\u0192b\u0192N\u201a\u00cd\ufffdA\u0192G\u0192\u201c\u0192h \u0192\u2020\ufffd[\u0192U\ufffd[\u201a\u00cc\u2030\u00bc\u2018z\u0192}\u0192V\u0192\u201c\u0160\u00d4\u201a\u00cc\u2019\u00ca\ufffdM\u201a\u00c5\u201a\u00b7\ufffdB\u0160e\u2022\u00a8\u2014\ufffd\u0192l\u0192b\u0192g\u0192\ufffd\ufffd[\u0192N\u201a\u00cc\u0192Q\u0192X\u0192g \u0192g\u0192\u2030\u0192t\u0192B\u0192b\u0192N\u201a\u00f0\u2019\u00ca\ufffdM\u201a\u00b7\u201a\u00e9\u201a\u00bd\u201a\u00df\u201a\u00cc VLAN ID \u201a\u00cc\u201d\u00cd\u02c6\u00cd\u201a\u00f0\u017dw\u2019\u00e8\u201a\u00b5\u201a\u00c4\u201a\u00ad\u201a\u00be\u201a\u00b3\u201a\u00a2\ufffdB -message.guest.traffic.in.basic.zone=\u0192Q\u0192X\u0192g \u0192l\u0192b\u0192g\u0192\ufffd\ufffd[\u0192N \u0192g\u0192\u2030\u0192t\u0192B\u0192b\u0192N\u201a\u00cd\ufffdA\u0192G\u0192\u201c\u0192h \u0192\u2020\ufffd[\u0192U\ufffd[\u201a\u00cc\u2030\u00bc\u2018z\u0192}\u0192V\u0192\u201c\u0160\u00d4\u201a\u00cc\u2019\u00ca\ufffdM\u201a\u00c5\u201a\u00b7\ufffdBCloudStack \u201a\u00c5\u0192Q\u0192X\u0192g VM \u201a\u00c9\u0160\u201e\u201a\u00e8\u201c\u2013\u201a\u00c4\u201a\u00e7\u201a\u00ea\u201a\u00e9 IP \u0192A\u0192h\u0192\u0152\u0192X\u201a\u00cc\u201d\u00cd\u02c6\u00cd\u201a\u00f0\u017dw\u2019\u00e8\u201a\u00b5\u201a\u00c4\u201a\u00ad\u201a\u00be\u201a\u00b3\u201a\u00a2\ufffdB\u201a\u00b1\u201a\u00cc\u201d\u00cd\u02c6\u00cd\u201a\u00aa\u2014\\u2013\u00f1\ufffd\u00cf\u201a\u00dd\u201a\u00cc\u0192V\u0192X\u0192e\u0192\u20ac IP \u0192A\u0192h\u0192\u0152\u0192X\u201a\u00cc\u201d\u00cd\u02c6\u00cd\u201a\u00c6\ufffdd\u2022\u00a1\u201a\u00b5\u201a\u00c8\u201a\u00a2\u201a\u00e6\u201a\u00a4\u201a\u00c9\u2019\ufffd\u02c6\u00d3\u201a\u00b5\u201a\u00c4\u201a\u00ad\u201a\u00be\u201a\u00b3\u201a\u00a2\ufffdB -message.installWizard.click.retry=\u2039N\u201c\u00ae\u201a\u00f0\ufffd\u00c4\u017d\u017d\ufffds\u201a\u00b7\u201a\u00e9\u201a\u00c9\u201a\u00cd\u0192{\u0192^\u0192\u201c\u201a\u00f0\u0192N\u0192\u0160\u0192b\u0192N\u201a\u00b5\u201a\u00c4\u201a\u00ad\u201a\u00be\u201a\u00b3\u201a\u00a2\ufffdB -message.installWizard.copy.whatIsACluster=\u0192N\u0192\u2030\u0192X\u0192^\ufffd[\u201a\u00cd\u0192z\u0192X\u0192g\u201a\u00f0\u0192O\u0192\u2039\ufffd[\u0192v\u2030\u00bb\u201a\u00b7\u201a\u00e9\u2022\u00fb\u2013@\u201a\u00c5\u201a\u00b7\ufffdB1 \u201a\u00c2\u201a\u00cc\u0192N\u0192\u2030\u0192X\u0192^\ufffd[\u201c\u00e0\u201a\u00cc\u0192z\u0192X\u0192g\u201a\u00cd\u201a\u00b7\u201a\u00d7\u201a\u00c4\u201c\u00af\u02c6\u00ea\u201a\u00cc\u0192n\ufffd[\u0192h\u0192E\u0192F\u0192A\u201a\u00a9\u201a\u00e7\ufffd\\ufffd\u00ac\u201a\u00b3\u201a\u00ea\ufffdA\u201c\u00af\u201a\u00b6\u0192n\u0192C\u0192p\ufffd[\u0192o\u0192C\u0192U\ufffd[\u201a\u00f0\u017d\u00c0\ufffds\u201a\u00b5\ufffdA\u201c\u00af\u201a\u00b6\u0192T\u0192u\u0192l\u0192b\u0192g\ufffd\u00e3\u201a\u00c9\u201a\u00a0\u201a\u00e8\ufffdA\u201c\u00af\u201a\u00b6\u2039\u00a4\u2014L\u0192X\u0192g\u0192\u0152\ufffd[\u0192W\u201a\u00c9\u0192A\u0192N\u0192Z\u0192X\u201a\u00b5\u201a\u00dc\u201a\u00b7\ufffdB\u201c\u00af\u201a\u00b6\u0192N\u0192\u2030\u0192X\u0192^\ufffd[\u201c\u00e0\u201a\u00cc\u0192z\u0192X\u0192g\u0160\u00d4\u201a\u00c5\u201a\u00cd\ufffdA\u0192\u2020\ufffd[\u0192U\ufffd[\u201a\u00d6\u201a\u00cc\u0192T\ufffd[\u0192r\u0192X\u201a\u00f0\u2019\u2020\u2019f\u201a\u00b9\u201a\u00b8\u201a\u00c9\ufffdA\u2030\u00bc\u2018z\u0192}\u0192V\u0192\u201c \u0192C\u0192\u201c\u0192X\u0192^\u0192\u201c\u0192X\u201a\u00f0\u0192\u2030\u0192C\u0192u \u0192}\u0192C\u0192O\u0192\u0152\ufffd[\u0192V\u0192\u2021\u0192\u201c\u201a\u00b7\u201a\u00e9\u201a\u00b1\u201a\u00c6\u201a\u00aa\u201a\u00c5\u201a\u00ab\u201a\u00dc\u201a\u00b7\ufffdB\u0192N\u0192\u2030\u0192X\u0192^\ufffd[\u201a\u00cd CloudStack&\#8482; \u0160\u00c2\u2039\u00ab\u201c\u00e0\u201a\u00cc 3 \u201d\u00d4\u2013\u00da\u201a\u00c9\u2018\u00e5\u201a\u00ab\u201a\u00c8\u2018g\ufffdD\u2019P\u02c6\u00ca\u201a\u00c5\u201a\u00b7\ufffdB\u0192N\u0192\u2030\u0192X\u0192^\ufffd[\u201a\u00cd\u0192|\u0192b\u0192h\u201a\u00c9\u0160\u00dc\u201a\u00dc\u201a\u00ea\ufffdA\u0192|\u0192b\u0192h\u201a\u00cd\u0192]\ufffd[\u0192\u201c\u201a\u00c9\u0160\u00dc\u201a\u00dc\u201a\u00ea\u201a\u00dc\u201a\u00b7\ufffdB

CloudStack&\#8482; \u201a\u00c5\u201a\u00cd 1 \u201a\u00c2\u201a\u00cc\u0192N\u0192\u2030\u0192E\u0192h\u0160\u00c2\u2039\u00ab\u201a\u00c9\u2022\u00a1\ufffd\u201d\u201a\u00cc\u0192N\u0192\u2030\u0192X\u0192^\ufffd[\u201a\u00f0\ufffd\u00dd\u2019\u00e8\u201a\u00c5\u201a\u00ab\u201a\u00dc\u201a\u00b7\u201a\u00aa\ufffdA\u0160\u00ee\u2013{\u0192C\u0192\u201c\u0192X\u0192g\ufffd[\u0192\u2039\u201a\u00c5\u201a\u00cd\u0192N\u0192\u2030\u0192X\u0192^\ufffd[\u201a\u00cd 1 \u201a\u00c2\u201a\u00c5\u201a\u00b7\ufffdB -message.installWizard.copy.whatIsAHost=\u0192z\u0192X\u0192g\u201a\u00cd\u2019P\u02c6\u00ea\u201a\u00cc\u0192R\u0192\u201c\u0192s\u0192\u2026\ufffd[\u0192^\ufffd[\u201a\u00c5\ufffdA\u0192Q\u0192X\u0192g\u2030\u00bc\u2018z\u0192}\u0192V\u0192\u201c\u201a\u00f0\u017d\u00c0\ufffds\u201a\u00b7\u201a\u00e9\u0192R\u0192\u201c\u0192s\u0192\u2026\ufffd[\u0192e\u0192B\u0192\u201c\u0192O \u0192\u0160\u0192\\ufffd[\u0192X\u201a\u00f0\u2019\u00f1\u2039\u0178\u201a\u00b5\u201a\u00dc\u201a\u00b7\ufffdB\u0192x\u0192A \u0192\ufffd\u0192^\u0192\u2039 \u0192z\u0192X\u0192g\u201a\u00f0\ufffd\u0153\u201a\u00a2\u201a\u00c4\ufffdA\u0160e\u0192z\u0192X\u0192g\u201a\u00c9\u201a\u00cd\u0192Q\u0192X\u0192g\u2030\u00bc\u2018z\u0192}\u0192V\u0192\u201c\u201a\u00f0\u0160\u00c7\u2014\ufffd\u201a\u00b7\u201a\u00e9\u201a\u00bd\u201a\u00df\u201a\u00cc\u0192n\u0192C\u0192p\ufffd[\u0192o\u0192C\u0192U\ufffd[ \u0192\\u0192t\u0192g\u0192E\u0192F\u0192A\u201a\u00f0\u0192C\u0192\u201c\u0192X\u0192g\ufffd[\u0192\u2039\u201a\u00b5\u201a\u00dc\u201a\u00b7\ufffdB\u0192x\u0192A \u0192\ufffd\u0192^\u0192\u2039 \u0192z\u0192X\u0192g\u201a\u00c9\u201a\u00c2\u201a\u00a2\u201a\u00c4\u201a\u00cd\ufffdA\ufffdw\u0192C\u0192\u201c\u0192X\u0192g\ufffd[\u0192\u2039\u0192K\u0192C\u0192h\ufffd\u00e3\u2039\u2030\u2022\u00d2\ufffdx\u201a\u00c5\u201c\u00c1\u017d\u00ea\u2014\u00e1\u201a\u00c6\u201a\u00b5\u201a\u00c4\ufffd\u00e0\u2013\u00be\u201a\u00b5\u201a\u00dc\u201a\u00b7\ufffdB\u201a\u00bd\u201a\u00c6\u201a\u00a6\u201a\u00ce\ufffdAKVM \u201a\u00aa\u2014L\u0152\u00f8\u201a\u00c8 Linux \u0192T\ufffd[\u0192o\ufffd[\ufffdACitrix XenServer \u201a\u00aa\u201c\u00ae\ufffd\u00ec\u201a\u00b7\u201a\u00e9\u0192T\ufffd[\u0192o\ufffd[\ufffdA\u201a\u00a8\u201a\u00e6\u201a\u00d1 ESXi \u0192T\ufffd[\u0192o\ufffd[\u201a\u00aa\u0192z\u0192X\u0192g\u201a\u00c5\u201a\u00b7\ufffdB\u0160\u00ee\u2013{\u0192C\u0192\u201c\u0192X\u0192g\ufffd[\u0192\u2039\u201a\u00c5\u201a\u00cd\ufffdAXenServer \u201a\u00dc\u201a\u00bd\u201a\u00cd KVM \u201a\u00f0\u017d\u00c0\ufffds\u201a\u00b7\u201a\u00e9\u2019P\u02c6\u00ea\u201a\u00cc\u0192z\u0192X\u0192g\u201a\u00f0\u017dg\u2014p\u201a\u00b5\u201a\u00dc\u201a\u00b7\ufffdB

\u0192z\u0192X\u0192g\u201a\u00cd CloudStack&\#8482; \u0160\u00c2\u2039\u00ab\u201c\u00e0\u201a\u00cc\ufffd\u00c5\ufffd\u00ac\u201a\u00cc\u2018g\ufffdD\u2019P\u02c6\u00ca\u201a\u00c5\u201a\u00b7\ufffdB\u0192z\u0192X\u0192g\u201a\u00cd\u0192N\u0192\u2030\u0192X\u0192^\ufffd[\u201a\u00c9\u0160\u00dc\u201a\u00dc\u201a\u00ea\ufffdA\u0192N\u0192\u2030\u0192X\u0192^\ufffd[\u201a\u00cd\u0192|\u0192b\u0192h\u201a\u00c9\u0160\u00dc\u201a\u00dc\u201a\u00ea\ufffdA\u0192|\u0192b\u0192h\u201a\u00cd\u0192]\ufffd[\u0192\u201c\u201a\u00c9\u0160\u00dc\u201a\u00dc\u201a\u00ea\u201a\u00dc\u201a\u00b7\ufffdB -message.installWizard.copy.whatIsAPod=\u2019\u00ca\ufffd\u00ed\ufffdA1 \u201a\u00c2\u201a\u00cc\u0192|\u0192b\u0192h\u201a\u00cd\u2019P\u02c6\u00ea\u201a\u00cc\u0192\u2030\u0192b\u0192N\u201a\u00f0\u2022\\u201a\u00b5\u201a\u00dc\u201a\u00b7\ufffdB\u201c\u00af\u201a\u00b6\u0192|\u0192b\u0192h\u201c\u00e0\u201a\u00cc\u0192z\u0192X\u0192g\u201a\u00cd\u201c\u00af\u201a\u00b6\u0192T\u0192u\u0192l\u0192b\u0192g\u201a\u00c9\u0160\u00dc\u201a\u00dc\u201a\u00ea\u201a\u00dc\u201a\u00b7\ufffdB

\u0192|\u0192b\u0192h\u201a\u00cd CloudStack&\#8482; \u0160\u00c2\u2039\u00ab\u201c\u00e0\u201a\u00cc 2 \u201d\u00d4\u2013\u00da\u201a\u00c9\u2018\u00e5\u201a\u00ab\u201a\u00c8\u2018g\ufffdD\u2019P\u02c6\u00ca\u201a\u00c5\u201a\u00b7\ufffdB\u0192|\u0192b\u0192h\u201a\u00cd\u0192]\ufffd[\u0192\u201c\u201a\u00c9\u0160\u00dc\u201a\u00dc\u201a\u00ea\u201a\u00dc\u201a\u00b7\ufffdB\u0160e\u0192]\ufffd[\u0192\u201c\u201a\u00cd 1 \u201a\u00c2\u02c6\u00c8\ufffd\u00e3\u201a\u00cc\u0192|\u0192b\u0192h\u201a\u00f0\u0160\u00dc\u201a\u00de\u201a\u00b1\u201a\u00c6\u201a\u00aa\u201a\u00c5\u201a\u00ab\u201a\u00dc\u201a\u00b7\ufffdB\u0160\u00ee\u2013{\u0192C\u0192\u201c\u0192X\u0192g\ufffd[\u0192\u2039\u201a\u00c5\u201a\u00cd\ufffdA\u0192]\ufffd[\u0192\u201c\u201c\u00e0\u201a\u00cc\u0192|\u0192b\u0192h\u201a\u00cd 1 \u201a\u00c2\u201a\u00c5\u201a\u00b7\ufffdB -message.installWizard.copy.whatIsAZone=\u0192]\ufffd[\u0192\u201c\u201a\u00cd CloudStack&\#8482; \u0160\u00c2\u2039\u00ab\u201c\u00e0\u201a\u00cc\ufffd\u00c5\u2018\u00e5\u201a\u00cc\u2018g\ufffdD\u2019P\u02c6\u00ca\u201a\u00c5\u201a\u00b7\ufffdB1 \u201a\u00c2\u201a\u00cc\u0192f\ufffd[\u0192^\u0192Z\u0192\u201c\u0192^\ufffd[\u201c\u00e0\u201a\u00c9\u2022\u00a1\ufffd\u201d\u201a\u00cc\u0192]\ufffd[\u0192\u201c\u201a\u00f0\ufffd\u00dd\u2019\u00e8\u201a\u00c5\u201a\u00ab\u201a\u00dc\u201a\u00b7\u201a\u00aa\ufffdA\u2019\u00ca\ufffd\u00ed\ufffdA\u0192]\ufffd[\u0192\u201c\u201a\u00cd\u2019P\u02c6\u00ea\u201a\u00cc\u0192f\ufffd[\u0192^\u0192Z\u0192\u201c\u0192^\ufffd[\u201a\u00c9\u2018\u0160\u201c\u2013\u201a\u00b5\u201a\u00dc\u201a\u00b7\ufffdB\u0192C\u0192\u201c\u0192t\u0192\u2030\u0192X\u0192g\u0192\u2030\u0192N\u0192`\u0192\u0192\u201a\u00f0\u0192]\ufffd[\u0192\u201c\u201a\u00c9\u2018g\ufffdD\u2030\u00bb\u201a\u00b7\u201a\u00e9\u201a\u00c6\ufffdA\u0192]\ufffd[\u0192\u201c\u201a\u00f0\u2022\u00a8\u2014\ufffd\u201cI\u201a\u00c9\u2022\u00aa\u2014\u00a3\u201a\u00b5\u201a\u00c4\ufffd\u00e7\u2019\u00b7\u2030\u00bb\u201a\u00b7\u201a\u00e9\u201a\u00b1\u201a\u00c6\u201a\u00aa\u201a\u00c5\u201a\u00ab\u201a\u00dc\u201a\u00b7\ufffdB\u201a\u00bd\u201a\u00c6\u201a\u00a6\u201a\u00ce\ufffdA\u0160e\u0192]\ufffd[\u0192\u201c\u201a\u00c9\u201cd\u0152\u00b9\u201a\u00c6\u0192l\u0192b\u0192g\u0192\ufffd\ufffd[\u0192N \u0192A\u0192b\u0192v\u0192\u0160\u0192\u201c\u0192N\u201a\u00f0\u201dz\u201d\u00f5\u201a\u00b5\u201a\u00dc\u201a\u00b7\ufffdB\u2022K\ufffd{\u201a\u00c5\u201a\u00cd\u201a\u00a0\u201a\u00e8\u201a\u00dc\u201a\u00b9\u201a\u00f1\u201a\u00aa\ufffdA\u0192]\ufffd[\u0192\u201c\u201a\u00cd\u2030\u201c\u0160u\u2019n\u201a\u00c9\u2022\u00aa\u017dU\u201a\u00b7\u201a\u00e9\u201a\u00b1\u201a\u00c6\u201a\u00aa\u201a\u00c5\u201a\u00ab\u201a\u00dc\u201a\u00b7\ufffdB -message.installWizard.copy.whatIsCloudStack=CloudStack&\#8482; \u201a\u00cd\u0192R\u0192\u201c\u0192s\u0192\u2026\ufffd[\u0192e\u0192B\u0192\u201c\u0192O \u0192\u0160\u0192\\ufffd[\u0192X\u201a\u00f0\u0192v\ufffd[\u0192\u2039\u201a\u00b7\u201a\u00e9\u0192\\u0192t\u0192g\u0192E\u0192F\u0192A \u0192v\u0192\u2030\u0192b\u0192g\u0192t\u0192H\ufffd[\u0192\u20ac\u201a\u00c5\ufffdA\u0192p\u0192u\u0192\u0160\u0192b\u0192N\ufffdA\u0192v\u0192\u2030\u0192C\u0192x\ufffd[\u0192g\ufffdA\u201a\u00a8\u201a\u00e6\u201a\u00d1\u0192n\u0192C\u0192u\u0192\u0160\u0192b\u0192h\u201a\u00cc Infrastructure as a Service (IaaS) \u0192N\u0192\u2030\u0192E\u0192h\u201a\u00f0\ufffd\\u2019z\u201a\u00b7\u201a\u00e9\u201a\u00b1\u201a\u00c6\u201a\u00aa\u201a\u00c5\u201a\u00ab\u201a\u00dc\u201a\u00b7\ufffdBCloudStack&\#8482; \u201a\u00f0\u017dg\u2014p\u201a\u00b5\u201a\u00c4\ufffdA\u0192N\u0192\u2030\u0192E\u0192h \u0192C\u0192\u201c\u0192t\u0192\u2030\u0192X\u0192g\u0192\u2030\u0192N\u0192`\u0192\u0192\u201a\u00f0\ufffd\\ufffd\u00ac\u201a\u00b7\u201a\u00e9\u0192l\u0192b\u0192g\u0192\ufffd\ufffd[\u0192N\ufffdA\u0192X\u0192g\u0192\u0152\ufffd[\u0192W\ufffdA\u201a\u00a8\u201a\u00e6\u201a\u00d1\u0192R\u0192\u201c\u0192s\u0192\u2026\ufffd[\u0192e\u0192B\u0192\u201c\u0192O \u0192m\ufffd[\u0192h\u201a\u00f0\u0160\u00c7\u2014\ufffd\u201a\u00b5\ufffdA\u0192N\u0192\u2030\u0192E\u0192h \u0192R\u0192\u201c\u0192s\u0192\u2026\ufffd[\u0192e\u0192B\u0192\u201c\u0192O\u0160\u00c2\u2039\u00ab\u201a\u00f0\u201cW\u0160J\ufffdA\u0160\u00c7\u2014\ufffd\ufffdA\u201a\u00a8\u201a\u00e6\u201a\u00d1\ufffd\\ufffd\u00ac\u201a\u00b5\u201a\u00dc\u201a\u00b7\ufffdB

CloudStack&\#8482; \u201a\u00cd\u0192R\u0192\u201a\u0192f\u0192B\u0192e\u0192B\u2030\u00bb\u201a\u00b5\u201a\u00bd\u0192n\ufffd[\u0192h\u0192E\u0192F\u0192A\ufffd\u00e3\u201a\u00c5\u201c\u00ae\ufffd\u00ec\u201a\u00b7\u201a\u00e9\u0152\u00c2\u2022\u00ca\u201a\u00cc\u2030\u00bc\u2018z\u0192}\u0192V\u0192\u201c \u0192C\u0192\ufffd\ufffd[\u0192W\u201a\u00f0\u2019\u00b4\u201a\u00a6\u201a\u00c4\u0160g\u2019\u00a3\u201a\u00b7\u201a\u00e9\u201a\u00b1\u201a\u00c6\u201a\u00aa\u201a\u00c5\u201a\u00ab\ufffdA\u0160\u00c8\u2019P\u201a\u00c8\ufffd\u00dd\u2019\u00e8\u201a\u00c5\u201c\u00ae\ufffd\u00ec\u201a\u00b7\u201a\u00e9\u0192N\u0192\u2030\u0192E\u0192h \u0192C\u0192\u201c\u0192t\u0192\u2030\u0192X\u0192g\u0192\u2030\u0192N\u0192`\u0192\u0192\u201a\u00cc\u0192\\u0192t\u0192g\u0192E\u0192F\u0192A \u0192X\u0192^\u0192b\u0192N\u201a\u00c9\u201a\u00e6\u201a\u00c1\u201a\u00c4\ufffdA\u2030\u00bc\u2018z\u0192f\ufffd[\u0192^\u0192Z\u0192\u201c\u0192^\ufffd[\u201a\u00c2\u201a\u00dc\u201a\u00e8\u2018\u00bd\u2018w\u0152^\u201a\u00cc\u0192}\u0192\u2039\u0192`\u0192e\u0192i\u0192\u201c\u0192g \u0192N\u0192\u2030\u0192E\u0192h \u0192A\u0192v\u0192\u0160\u0192P\ufffd[\u0192V\u0192\u2021\u0192\u201c\u201a\u00f0\u0192T\ufffd[\u0192r\u0192X\u201a\u00c6\u201a\u00b5\u201a\u00c4\ufffd\\u2019z\u201a\u00b5\ufffdA\u201cW\u0160J\u201a\u00b5\ufffdA\u0160\u00c7\u2014\ufffd\u201a\u00b7\u201a\u00e9\u201a\u00bd\u201a\u00df\u201a\u00c9\u2022s\u2030\u00c2\u0152\u2021\u201a\u00c8\u0192R\u0192\u201c\u0192|\ufffd[\u0192l\u0192\u201c\u0192g\u201a\u00aa\u201a\u00b7\u201a\u00d7\u201a\u00c4\u2019\u00f1\u2039\u0178\u201a\u00b3\u201a\u00ea\u201a\u00dc\u201a\u00b7\ufffdB\u0192I\ufffd[\u0192v\u0192\u201c \u0192\\ufffd[\u0192X \u0192o\ufffd[\u0192W\u0192\u2021\u0192\u201c\u201a\u00c6\u0192v\u0192\u0152\u0192~\u0192A\u0192\u20ac \u0192o\ufffd[\u0192W\u0192\u2021\u0192\u201c\u201a\u00cc\u2014\u00bc\u2022\u00fb\u201a\u00aa\u2019\u00f1\u2039\u0178\u201a\u00b3\u201a\u00ea\u201a\u00dc\u201a\u00b7\u201a\u00aa\ufffdA\u0192I\ufffd[\u0192v\u0192\u201c \u0192\\ufffd[\u0192X \u0192o\ufffd[\u0192W\u0192\u2021\u0192\u201c\u201a\u00c5\u201a\u00e0\u201a\u00d9\u201a\u00c6\u201a\u00f1\u201a\u00c7\u201a\u00cc\u2039@\u201d\\u201a\u00f0\u017dg\u2014p\u201a\u00c5\u201a\u00ab\u201a\u00dc\u201a\u00b7\ufffdB -message.installWizard.copy.whatIsPrimaryStorage=CloudStack&\#8482; \u201a\u00cc\u0192N\u0192\u2030\u0192E\u0192h \u0192C\u0192\u201c\u0192t\u0192\u2030\u0192X\u0192g\u0192\u2030\u0192N\u0192`\u0192\u0192\u201a\u00c5\u201a\u00cd\ufffdA\u0192v\u0192\u2030\u0192C\u0192}\u0192\u0160 \u0192X\u0192g\u0192\u0152\ufffd[\u0192W\u201a\u00c6\u0192Z\u0192J\u0192\u201c\u0192_\u0192\u0160 \u0192X\u0192g\u0192\u0152\ufffd[\u0192W\u201a\u00cc 2 \u017d\u00ed\u2014\u00de\u201a\u00cc\u0192X\u0192g\u0192\u0152\ufffd[\u0192W\u201a\u00f0\u017dg\u2014p\u201a\u00b5\u201a\u00dc\u201a\u00b7\ufffdB\u201a\u00c7\u201a\u00bf\u201a\u00e7\u201a\u00cc\u0192X\u0192g\u0192\u0152\ufffd[\u0192W\u201a\u00c9\u201a\u00e0\ufffdAiSCSI\ufffdANFS \u0192T\ufffd[\u0192o\ufffd[\ufffdA\u201a\u00dc\u201a\u00bd\u201a\u00cd\u0192\ufffd\ufffd[\u0192J\u0192\u2039 \u0192f\u0192B\u0192X\u0192N\u201a\u00f0\u017dg\u2014p\u201a\u00c5\u201a\u00ab\u201a\u00dc\u201a\u00b7\ufffdB

\u0192v\u0192\u2030\u0192C\u0192}\u0192\u0160 \u0192X\u0192g\u0192\u0152\ufffd[\u0192W\u201a\u00cd\u0192N\u0192\u2030\u0192X\u0192^\ufffd[\u201a\u00c9\u0160\u00d6\u02dcA\u2022t\u201a\u00af\u201a\u00e7\u201a\u00ea\ufffdA\u201a\u00bb\u201a\u00cc\u0192N\u0192\u2030\u0192X\u0192^\ufffd[\u201c\u00e0\u201a\u00cc\u0192z\u0192X\u0192g\u201a\u00c5\u201c\u00ae\ufffd\u00ec\u201a\u00b7\u201a\u00e9\u201a\u00b7\u201a\u00d7\u201a\u00c4\u201a\u00cc VM \u201a\u00cc\u0160e\u0192Q\u0192X\u0192g VM \u201a\u00cc\u0192f\u0192B\u0192X\u0192N \u0192{\u0192\u0160\u0192\u2026\ufffd[\u0192\u20ac\u201a\u00f0\u0160i\u201d[\u201a\u00b5\u201a\u00dc\u201a\u00b7\ufffdB\u2019\u00ca\ufffd\u00ed\ufffdA\u0192v\u0192\u2030\u0192C\u0192}\u0192\u0160 \u0192X\u0192g\u0192\u0152\ufffd[\u0192W \u0192T\ufffd[\u0192o\ufffd[\u201a\u00cd\u0192z\u0192X\u0192g\u201a\u00cc\u2039\u00df\u201a\u00ad\u201a\u00c9\ufffd\u00dd\u2019u\u201a\u00b5\u201a\u00dc\u201a\u00b7\ufffdB -message.installWizard.copy.whatIsSecondaryStorage=\u0192Z\u0192J\u0192\u201c\u0192_\u0192\u0160 \u0192X\u0192g\u0192\u0152\ufffd[\u0192W\u201a\u00cd\u0192]\ufffd[\u0192\u201c\u201a\u00c6\u0160\u00d6\u02dcA\u2022t\u201a\u00af\u201a\u00e7\u201a\u00ea\ufffdA\u017d\u0178\u201a\u00cc\ufffd\u20ac\u2013\u00da\u201a\u00f0\u0160i\u201d[\u201a\u00b5\u201a\u00dc\u201a\u00b7\ufffdB
  • \u0192e\u0192\u201c\u0192v\u0192\u0152\ufffd[\u0192g - VM \u201a\u00cc\u2039N\u201c\u00ae\u201a\u00c9\u017dg\u2014p\u201a\u00c5\u201a\u00ab\u201a\u00e9 OS \u0192C\u0192\ufffd\ufffd[\u0192W\u201a\u00c5\ufffdA\u0192A\u0192v\u0192\u0160\u0192P\ufffd[\u0192V\u0192\u2021\u0192\u201c\u201a\u00cc\u0192C\u0192\u201c\u0192X\u0192g\ufffd[\u0192\u2039\u201a\u00c8\u201a\u00c7\u2019\u00c7\u2030\u00c1\u201a\u00cc\ufffd\\ufffd\u00ac\u201a\u00f0\u0160\u00dc\u201a\u00df\u201a\u00e9\u201a\u00b1\u201a\u00c6\u201a\u00aa\u201a\u00c5\u201a\u00ab\u201a\u00dc\u201a\u00b7\ufffdB
  • ISO \u0192C\u0192\ufffd\ufffd[\u0192W - \u2039N\u201c\u00ae\u2030\u00c2\u201d\\u201a\u00dc\u201a\u00bd\u201a\u00cd\u2039N\u201c\u00ae\u2022s\u2030\u00c2\u201a\u00cc OS \u0192C\u0192\ufffd\ufffd[\u0192W\u201a\u00c5\u201a\u00b7\ufffdB
  • \u0192f\u0192B\u0192X\u0192N \u0192{\u0192\u0160\u0192\u2026\ufffd[\u0192\u20ac\u201a\u00cc\u0192X\u0192i\u0192b\u0192v\u0192V\u0192\u2021\u0192b\u0192g - VM \u0192f\ufffd[\u0192^\u201a\u00cc\u2022\u00db\u2018\u00b6\u0192R\u0192s\ufffd[\u201a\u00c5\u201a\u00b7\ufffdB\u0192f\ufffd[\u0192^\u201a\u00cc\u2022\u0153\u0152\u00b3\u201a\u00dc\u201a\u00bd\u201a\u00cd\ufffdV\u201a\u00b5\u201a\u00a2\u0192e\u0192\u201c\u0192v\u0192\u0152\ufffd[\u0192g\u201a\u00cc\ufffd\u00ec\ufffd\u00ac\u201a\u00c9\u017dg\u2014p\u201a\u00c5\u201a\u00ab\u201a\u00dc\u201a\u00b7\ufffdB
-message.installWizard.now.building=\u0192N\u0192\u2030\u0192E\u0192h\u201a\u00f0\ufffd\\u2019z\u201a\u00b5\u201a\u00c4\u201a\u00a2\u201a\u00dc\u201a\u00b7... -message.installWizard.tooltip.addCluster.name=\u0192N\u0192\u2030\u0192X\u0192^\ufffd[\u201a\u00cc\u2013\u00bc\u2018O\u201a\u00c5\u201a\u00b7\ufffdBCloudStack \u201a\u00c5\u017dg\u2014p\u201a\u00b3\u201a\u00ea\u201a\u00c4\u201a\u00a2\u201a\u00c8\u201a\u00a2\ufffdA\u201dC\u02c6\u00d3\u201a\u00cc\u0192e\u0192L\u0192X\u0192g\u201a\u00f0\u017dw\u2019\u00e8\u201a\u00c5\u201a\u00ab\u201a\u00dc\u201a\u00b7\ufffdB -message.installWizard.tooltip.addHost.hostname=\u0192z\u0192X\u0192g\u201a\u00cc DNS \u2013\u00bc\u201a\u00dc\u201a\u00bd\u201a\u00cd IP \u0192A\u0192h\u0192\u0152\u0192X\u201a\u00c5\u201a\u00b7\ufffdB -message.installWizard.tooltip.addHost.password=XenServer \u2018\u00a4\u201a\u00c5\u017dw\u2019\u00e8\u201a\u00b5\u201a\u00bd\ufffdA\ufffd\u00e3\u201a\u00cc\u0192\u2020\ufffd[\u0192U\ufffd[\u2013\u00bc\u201a\u00c9\u2018\u00ce\u201a\u00b7\u201a\u00e9\u0192p\u0192X\u0192\ufffd\ufffd[\u0192h\u201a\u00c5\u201a\u00b7\ufffdB -message.installWizard.tooltip.addHost.username=\u2019\u00ca\ufffd\u00ed\u201a\u00cd root \u201a\u00c5\u201a\u00b7\ufffdB -message.installWizard.tooltip.addPod.name=\u0192|\u0192b\u0192h\u201a\u00cc\u2013\u00bc\u2018O\u201a\u00c5\u201a\u00b7\ufffdB -message.installWizard.tooltip.addPod.reservedSystemEndIp=\u201a\u00b1\u201a\u00ea\u201a\u00cd\ufffdA\u0192Z\u0192J\u0192\u201c\u0192_\u0192\u0160 \u0192X\u0192g\u0192\u0152\ufffd[\u0192W VM \u201a\u00a8\u201a\u00e6\u201a\u00d1\u0192R\u0192\u201c\u0192\\ufffd[\u0192\u2039 \u0192v\u0192\ufffd\u0192L\u0192V VM \u201a\u00f0\u0160\u00c7\u2014\ufffd\u201a\u00b7\u201a\u00e9\u201a\u00bd\u201a\u00df\u201a\u00c9 CloudStack \u201a\u00c5\u017dg\u2014p\u201a\u00b7\u201a\u00e9\ufffdA\u0192v\u0192\u2030\u0192C\u0192x\ufffd[\u0192g \u0192l\u0192b\u0192g\u0192\ufffd\ufffd[\u0192N\u201c\u00e0\u201a\u00cc IP \u0192A\u0192h\u0192\u0152\u0192X\u201a\u00cc\u201d\u00cd\u02c6\u00cd\u201a\u00c5\u201a\u00b7\ufffdB\u201a\u00b1\u201a\u00ea\u201a\u00e7\u201a\u00cc IP \u0192A\u0192h\u0192\u0152\u0192X\u201a\u00cd\u0192R\u0192\u201c\u0192s\u0192\u2026\ufffd[\u0192e\u0192B\u0192\u201c\u0192O \u0192T\ufffd[\u0192o\ufffd[\u201a\u00c6\u201c\u00af\u201a\u00b6\u0192T\u0192u\u0192l\u0192b\u0192g\u201a\u00a9\u201a\u00e7\u0160\u201e\u201a\u00e8\u201c\u2013\u201a\u00c4\u201a\u00dc\u201a\u00b7\ufffdB -message.installWizard.tooltip.addPod.reservedSystemGateway=\u201a\u00b1\u201a\u00cc\u0192|\u0192b\u0192h\u201c\u00e0\u201a\u00cc\u0192z\u0192X\u0192g\u201a\u00cc\u0192Q\ufffd[\u0192g\u0192E\u0192F\u0192C\u201a\u00c5\u201a\u00b7\ufffdB -message.installWizard.tooltip.addPod.reservedSystemNetmask=\u0192Q\u0192X\u0192g\u201a\u00cc\u017dg\u2014p\u201a\u00b7\u201a\u00e9\u0192T\u0192u\u0192l\u0192b\u0192g\ufffd\u00e3\u201a\u00c5\u017dg\u2014p\u201a\u00b3\u201a\u00ea\u201a\u00e9\u0192l\u0192b\u0192g\u0192}\u0192X\u0192N\u201a\u00c5\u201a\u00b7\ufffdB -message.installWizard.tooltip.addPod.reservedSystemStartIp=\u201a\u00b1\u201a\u00ea\u201a\u00cd\ufffdA\u0192Z\u0192J\u0192\u201c\u0192_\u0192\u0160 \u0192X\u0192g\u0192\u0152\ufffd[\u0192W VM \u201a\u00a8\u201a\u00e6\u201a\u00d1\u0192R\u0192\u201c\u0192\\ufffd[\u0192\u2039 \u0192v\u0192\ufffd\u0192L\u0192V VM \u201a\u00f0\u0160\u00c7\u2014\ufffd\u201a\u00b7\u201a\u00e9\u201a\u00bd\u201a\u00df\u201a\u00c9 CloudStack \u201a\u00c5\u017dg\u2014p\u201a\u00b7\u201a\u00e9\ufffdA\u0192v\u0192\u2030\u0192C\u0192x\ufffd[\u0192g \u0192l\u0192b\u0192g\u0192\ufffd\ufffd[\u0192N\u201c\u00e0\u201a\u00cc IP \u0192A\u0192h\u0192\u0152\u0192X\u201a\u00cc\u201d\u00cd\u02c6\u00cd\u201a\u00c5\u201a\u00b7\ufffdB\u201a\u00b1\u201a\u00ea\u201a\u00e7\u201a\u00cc IP \u0192A\u0192h\u0192\u0152\u0192X\u201a\u00cd\u0192R\u0192\u201c\u0192s\u0192\u2026\ufffd[\u0192e\u0192B\u0192\u201c\u0192O \u0192T\ufffd[\u0192o\ufffd[\u201a\u00c6\u201c\u00af\u201a\u00b6\u0192T\u0192u\u0192l\u0192b\u0192g\u201a\u00a9\u201a\u00e7\u0160\u201e\u201a\u00e8\u201c\u2013\u201a\u00c4\u201a\u00dc\u201a\u00b7\ufffdB -message.installWizard.tooltip.addPrimaryStorage.name=\u0192X\u0192g\u0192\u0152\ufffd[\u0192W \u0192f\u0192o\u0192C\u0192X\u201a\u00cc\u2013\u00bc\u2018O\u201a\u00c5\u201a\u00b7\ufffdB -message.installWizard.tooltip.addPrimaryStorage.path=(NFS \u201a\u00cc\ufffd\u00ea\ufffd\u2021) \u0192T\ufffd[\u0192o\ufffd[\u201a\u00a9\u201a\u00e7\u0192G\u0192N\u0192X\u0192|\ufffd[\u0192g\u201a\u00b3\u201a\u00ea\u201a\u00bd\u0192p\u0192X\u201a\u00c5\u201a\u00b7\ufffdB(SharedMountPoint \u201a\u00cc\ufffd\u00ea\ufffd\u2021) \u0192p\u0192X\u201a\u00c5\u201a\u00b7\ufffdBKVM \u201a\u00c5\u201a\u00cd\u201a\u00b1\u201a\u00cc\u0192v\u0192\u2030\u0192C\u0192}\u0192\u0160 \u0192X\u0192g\u0192\u0152\ufffd[\u0192W\u201a\u00aa\u0192}\u0192E\u0192\u201c\u0192g\u201a\u00b3\u201a\u00ea\u201a\u00e9\u0160e\u0192z\u0192X\u0192g\ufffd\u00e3\u201a\u00cc\u0192p\u0192X\u201a\u00c5\u201a\u00b7\ufffdB\u201a\u00bd\u201a\u00c6\u201a\u00a6\u201a\u00ce\ufffdA/mnt/primary \u201a\u00c5\u201a\u00b7\ufffdB -message.installWizard.tooltip.addPrimaryStorage.server=(NFS\ufffdAiSCSI\ufffdA\u201a\u00dc\u201a\u00bd\u201a\u00cd PreSetup \u201a\u00cc\ufffd\u00ea\ufffd\u2021) \u0192X\u0192g\u0192\u0152\ufffd[\u0192W \u0192f\u0192o\u0192C\u0192X\u201a\u00cc IP \u0192A\u0192h\u0192\u0152\u0192X\u201a\u00dc\u201a\u00bd\u201a\u00cd DNS \u2013\u00bc\u201a\u00c5\u201a\u00b7\ufffdB -message.installWizard.tooltip.addSecondaryStorage.nfsServer=\u0192Z\u0192J\u0192\u201c\u0192_\u0192\u0160 \u0192X\u0192g\u0192\u0152\ufffd[\u0192W\u201a\u00f0\u0192z\u0192X\u0192g\u201a\u00b7\u201a\u00e9 NFS \u0192T\ufffd[\u0192o\ufffd[\u201a\u00cc IP \u0192A\u0192h\u0192\u0152\u0192X\u201a\u00c5\u201a\u00b7\ufffdB -message.installWizard.tooltip.addSecondaryStorage.path=\ufffd\u00e3\u201a\u00c9\u017dw\u2019\u00e8\u201a\u00b5\u201a\u00bd\u0192T\ufffd[\u0192o\ufffd[\u201a\u00c9\u2018\u00b6\ufffd\u00dd\u201a\u00b7\u201a\u00e9\ufffdA\u0192G\u0192N\u0192X\u0192|\ufffd[\u0192g\u201a\u00b3\u201a\u00ea\u201a\u00bd\u0192p\u0192X\u201a\u00c5\u201a\u00b7\ufffdB -message.installWizard.tooltip.addZone.dns1=\u0192]\ufffd[\u0192\u201c\u201c\u00e0\u201a\u00cc\u0192Q\u0192X\u0192g VM \u201a\u00c5\u017dg\u2014p\u201a\u00b7\u201a\u00e9 DNS \u0192T\ufffd[\u0192o\ufffd[\u201a\u00c5\u201a\u00b7\ufffdB\u201a\u00b1\u201a\u00ea\u201a\u00e7\u201a\u00cc DNS \u0192T\ufffd[\u0192o\ufffd[\u201a\u00c9\u201a\u00cd\ufffdA\u0152\u00e3\u201a\u00c5\u2019\u00c7\u2030\u00c1\u201a\u00b7\u201a\u00e9\u0192p\u0192u\u0192\u0160\u0192b\u0192N \u0192l\u0192b\u0192g\u0192\ufffd\ufffd[\u0192N\u0152o\u2014R\u201a\u00c5\u0192A\u0192N\u0192Z\u0192X\u201a\u00b5\u201a\u00dc\u201a\u00b7\ufffdB\u0192]\ufffd[\u0192\u201c\u201a\u00cc\u0192p\u0192u\u0192\u0160\u0192b\u0192N IP \u0192A\u0192h\u0192\u0152\u0192X\u201a\u00a9\u201a\u00e7\ufffdA\u201a\u00b1\u201a\u00b1\u201a\u00c5\u017dw\u2019\u00e8\u201a\u00b7\u201a\u00e9\u0192p\u0192u\u0192\u0160\u0192b\u0192N DNS \u0192T\ufffd[\u0192o\ufffd[\u201a\u00c9\u2019\u00ca\ufffdM\u201a\u00c5\u201a\u00ab\u201a\u00e9\u2022K\u2014v\u201a\u00aa\u201a\u00a0\u201a\u00e8\u201a\u00dc\u201a\u00b7\ufffdB -message.installWizard.tooltip.addZone.dns2=\u0192]\ufffd[\u0192\u201c\u201c\u00e0\u201a\u00cc\u0192Q\u0192X\u0192g VM \u201a\u00c5\u017dg\u2014p\u201a\u00b7\u201a\u00e9 DNS \u0192T\ufffd[\u0192o\ufffd[\u201a\u00c5\u201a\u00b7\ufffdB\u201a\u00b1\u201a\u00ea\u201a\u00e7\u201a\u00cc DNS \u0192T\ufffd[\u0192o\ufffd[\u201a\u00c9\u201a\u00cd\ufffdA\u0152\u00e3\u201a\u00c5\u2019\u00c7\u2030\u00c1\u201a\u00b7\u201a\u00e9\u0192p\u0192u\u0192\u0160\u0192b\u0192N \u0192l\u0192b\u0192g\u0192\ufffd\ufffd[\u0192N\u0152o\u2014R\u201a\u00c5\u0192A\u0192N\u0192Z\u0192X\u201a\u00b5\u201a\u00dc\u201a\u00b7\ufffdB\u0192]\ufffd[\u0192\u201c\u201a\u00cc\u0192p\u0192u\u0192\u0160\u0192b\u0192N IP \u0192A\u0192h\u0192\u0152\u0192X\u201a\u00a9\u201a\u00e7\ufffdA\u201a\u00b1\u201a\u00b1\u201a\u00c5\u017dw\u2019\u00e8\u201a\u00b7\u201a\u00e9\u0192p\u0192u\u0192\u0160\u0192b\u0192N DNS \u0192T\ufffd[\u0192o\ufffd[\u201a\u00c9\u2019\u00ca\ufffdM\u201a\u00c5\u201a\u00ab\u201a\u00e9\u2022K\u2014v\u201a\u00aa\u201a\u00a0\u201a\u00e8\u201a\u00dc\u201a\u00b7\ufffdB -message.installWizard.tooltip.addZone.internaldns1=\u0192]\ufffd[\u0192\u201c\u201c\u00e0\u201a\u00cc\u0192V\u0192X\u0192e\u0192\u20ac VM \u201a\u00c5\u017dg\u2014p\u201a\u00b7\u201a\u00e9 DNS \u0192T\ufffd[\u0192o\ufffd[\u201a\u00c5\u201a\u00b7\ufffdB\u201a\u00b1\u201a\u00ea\u201a\u00e7\u201a\u00cc DNS \u0192T\ufffd[\u0192o\ufffd[\u201a\u00cd\ufffdA\u0192V\u0192X\u0192e\u0192\u20ac VM \u201a\u00cc\u0192v\u0192\u2030\u0192C\u0192x\ufffd[\u0192g \u0192l\u0192b\u0192g\u0192\ufffd\ufffd[\u0192N \u0192C\u0192\u201c\u0192^\ufffd[\u0192t\u0192F\u0192C\u0192X\u201a\u00f0\u2030\u00ee\u201a\u00b5\u201a\u00c4\u0192A\u0192N\u0192Z\u0192X\u201a\u00b3\u201a\u00ea\u201a\u00dc\u201a\u00b7\ufffdB\u0192|\u0192b\u0192h\u201a\u00cc\u0192v\u0192\u2030\u0192C\u0192x\ufffd[\u0192g IP \u0192A\u0192h\u0192\u0152\u0192X\u201a\u00a9\u201a\u00e7\ufffdA\u201a\u00b1\u201a\u00b1\u201a\u00c5\u017dw\u2019\u00e8\u201a\u00b7\u201a\u00e9 DNS \u0192T\ufffd[\u0192o\ufffd[\u201a\u00c9\u2019\u00ca\ufffdM\u201a\u00c5\u201a\u00ab\u201a\u00e9\u2022K\u2014v\u201a\u00aa\u201a\u00a0\u201a\u00e8\u201a\u00dc\u201a\u00b7\ufffdB -message.installWizard.tooltip.addZone.internaldns2=\u0192]\ufffd[\u0192\u201c\u201c\u00e0\u201a\u00cc\u0192V\u0192X\u0192e\u0192\u20ac VM \u201a\u00c5\u017dg\u2014p\u201a\u00b7\u201a\u00e9 DNS \u0192T\ufffd[\u0192o\ufffd[\u201a\u00c5\u201a\u00b7\ufffdB\u201a\u00b1\u201a\u00ea\u201a\u00e7\u201a\u00cc DNS \u0192T\ufffd[\u0192o\ufffd[\u201a\u00cd\ufffdA\u0192V\u0192X\u0192e\u0192\u20ac VM \u201a\u00cc\u0192v\u0192\u2030\u0192C\u0192x\ufffd[\u0192g \u0192l\u0192b\u0192g\u0192\ufffd\ufffd[\u0192N \u0192C\u0192\u201c\u0192^\ufffd[\u0192t\u0192F\u0192C\u0192X\u201a\u00f0\u2030\u00ee\u201a\u00b5\u201a\u00c4\u0192A\u0192N\u0192Z\u0192X\u201a\u00b3\u201a\u00ea\u201a\u00dc\u201a\u00b7\ufffdB\u0192|\u0192b\u0192h\u201a\u00cc\u0192v\u0192\u2030\u0192C\u0192x\ufffd[\u0192g IP \u0192A\u0192h\u0192\u0152\u0192X\u201a\u00a9\u201a\u00e7\ufffdA\u201a\u00b1\u201a\u00b1\u201a\u00c5\u017dw\u2019\u00e8\u201a\u00b7\u201a\u00e9 DNS \u0192T\ufffd[\u0192o\ufffd[\u201a\u00c9\u2019\u00ca\ufffdM\u201a\u00c5\u201a\u00ab\u201a\u00e9\u2022K\u2014v\u201a\u00aa\u201a\u00a0\u201a\u00e8\u201a\u00dc\u201a\u00b7\ufffdB -message.installWizard.tooltip.addZone.name=\u0192]\ufffd[\u0192\u201c\u201a\u00cc\u2013\u00bc\u2018O\u201a\u00c5\u201a\u00b7\ufffdB -message.installWizard.tooltip.configureGuestTraffic.description=\u0192l\u0192b\u0192g\u0192\ufffd\ufffd[\u0192N\u201a\u00cc\ufffd\u00e0\u2013\u00be\u201a\u00c5\u201a\u00b7\ufffdB -message.installWizard.tooltip.configureGuestTraffic.guestEndIp=\u201a\u00b1\u201a\u00cc\u0192]\ufffd[\u0192\u201c\u201a\u00cc\u0192Q\u0192X\u0192g\u201a\u00c9\u0160\u201e\u201a\u00e8\u201c\u2013\u201a\u00c4\u201a\u00e9\u201a\u00b1\u201a\u00c6\u201a\u00aa\u201a\u00c5\u201a\u00ab\u201a\u00e9 IP \u0192A\u0192h\u0192\u0152\u0192X\u201a\u00cc\u201d\u00cd\u02c6\u00cd\u201a\u00c5\u201a\u00b7\ufffdB\u017dg\u2014p\u201a\u00b7\u201a\u00e9 NIC \u201a\u00aa 1 \u201a\u00c2\u201a\u00cc\ufffd\u00ea\ufffd\u2021\u201a\u00cd\ufffdA\u201a\u00b1\u201a\u00ea\u201a\u00e7\u201a\u00cc IP \u0192A\u0192h\u0192\u0152\u0192X\u201a\u00cd\u0192|\u0192b\u0192h\u201a\u00cc CIDR \u201a\u00c6\u201c\u00af\u201a\u00b6 CIDR \u201a\u00c9\u0160\u00dc\u201a\u00dc\u201a\u00ea\u201a\u00c4\u201a\u00a2\u201a\u00e9\u2022K\u2014v\u201a\u00aa\u201a\u00a0\u201a\u00e8\u201a\u00dc\u201a\u00b7\ufffdB -message.installWizard.tooltip.configureGuestTraffic.guestGateway=\u0192Q\u0192X\u0192g\u201a\u00cc\u017dg\u2014p\u201a\u00b7\u201a\u00e9\u0192Q\ufffd[\u0192g\u0192E\u0192F\u0192C\u201a\u00c5\u201a\u00b7\ufffdB -message.installWizard.tooltip.configureGuestTraffic.guestNetmask=\u0192Q\u0192X\u0192g\u201a\u00cc\u017dg\u2014p\u201a\u00b7\u201a\u00e9\u0192T\u0192u\u0192l\u0192b\u0192g\ufffd\u00e3\u201a\u00c5\u017dg\u2014p\u201a\u00b3\u201a\u00ea\u201a\u00e9\u0192l\u0192b\u0192g\u0192}\u0192X\u0192N\u201a\u00c5\u201a\u00b7\ufffdB -message.installWizard.tooltip.configureGuestTraffic.guestStartIp=\u201a\u00b1\u201a\u00cc\u0192]\ufffd[\u0192\u201c\u201a\u00cc\u0192Q\u0192X\u0192g\u201a\u00c9\u0160\u201e\u201a\u00e8\u201c\u2013\u201a\u00c4\u201a\u00e9\u201a\u00b1\u201a\u00c6\u201a\u00aa\u201a\u00c5\u201a\u00ab\u201a\u00e9 IP \u0192A\u0192h\u0192\u0152\u0192X\u201a\u00cc\u201d\u00cd\u02c6\u00cd\u201a\u00c5\u201a\u00b7\ufffdB\u017dg\u2014p\u201a\u00b7\u201a\u00e9 NIC \u201a\u00aa 1 \u201a\u00c2\u201a\u00cc\ufffd\u00ea\ufffd\u2021\u201a\u00cd\ufffdA\u201a\u00b1\u201a\u00ea\u201a\u00e7\u201a\u00cc IP \u0192A\u0192h\u0192\u0152\u0192X\u201a\u00cd\u0192|\u0192b\u0192h\u201a\u00cc CIDR \u201a\u00c6\u201c\u00af\u201a\u00b6 CIDR \u201a\u00c9\u0160\u00dc\u201a\u00dc\u201a\u00ea\u201a\u00c4\u201a\u00a2\u201a\u00e9\u2022K\u2014v\u201a\u00aa\u201a\u00a0\u201a\u00e8\u201a\u00dc\u201a\u00b7\ufffdB -message.installWizard.tooltip.configureGuestTraffic.name=\u0192l\u0192b\u0192g\u0192\ufffd\ufffd[\u0192N\u201a\u00cc\u2013\u00bc\u2018O\u201a\u00c5\u201a\u00b7\ufffdB -message.instanceWizard.noTemplates=\u017dg\u2014p\u2030\u00c2\u201d\\u201a\u00c8\u0192e\u0192\u201c\u0192v\u0192\u0152\ufffd[\u0192g\u201a\u00aa\u201a\u00a0\u201a\u00e8\u201a\u00dc\u201a\u00b9\u201a\u00f1\ufffdB\u0152\u00dd\u0160\u00b7\ufffd\u00ab\u201a\u00cc\u201a\u00a0\u201a\u00e9\u0192e\u0192\u201c\u0192v\u0192\u0152\ufffd[\u0192g\u201a\u00f0\u2019\u00c7\u2030\u00c1\u201a\u00b5\u201a\u00c4\ufffdA\u0192C\u0192\u201c\u0192X\u0192^\u0192\u201c\u0192X \u0192E\u0192B\u0192U\ufffd[\u0192h\u201a\u00f0\ufffd\u00c4\u2039N\u201c\u00ae\u201a\u00b5\u201a\u00c4\u201a\u00ad\u201a\u00be\u201a\u00b3\u201a\u00a2\ufffdB -message.ip.address.changed=\u201a\u00a8\u017dg\u201a\u00a2\u201a\u00cc IP \u0192A\u0192h\u0192\u0152\u0192X\u201a\u00aa\u2022\u00cf\ufffdX\u201a\u00b3\u201a\u00ea\u201a\u00c4\u201a\u00a2\u201a\u00e9\u2030\u00c2\u201d\\ufffd\u00ab\u201a\u00aa\u201a\u00a0\u201a\u00e8\u201a\u00dc\u201a\u00b7\ufffdB\u02c6\u00ea\u2014\u2014\u201a\u00f0\ufffdX\ufffdV\u201a\u00b5\u201a\u00dc\u201a\u00b7\u201a\u00a9? \u201a\u00bb\u201a\u00cc\ufffd\u00ea\ufffd\u2021\u201a\u00cd\ufffdA\ufffd\u00da\ufffd\u00d7\u0192y\u0192C\u0192\u201c\u201a\u00aa\u2022\u00c2\u201a\u00b6\u201a\u00e9\u201a\u00b1\u201a\u00c6\u201a\u00c9\u2019\ufffd\u02c6\u00d3\u201a\u00b5\u201a\u00c4\u201a\u00ad\u201a\u00be\u201a\u00b3\u201a\u00a2\ufffdB -message.iso.desc=\u0192f\ufffd[\u0192^\u201a\u00dc\u201a\u00bd\u201a\u00cd OS \u2039N\u201c\u00ae\u2030\u00c2\u201d\\u0192\ufffd\u0192f\u0192B\u0192A\u201a\u00f0\u0160\u00dc\u201a\u00de\u0192f\u0192B\u0192X\u0192N \u0192C\u0192\ufffd\ufffd[\u0192W -message.join.project=\u201a\u00b1\u201a\u00ea\u201a\u00c5\ufffdA\u0192v\u0192\ufffd\u0192W\u0192F\u0192N\u0192g\u201a\u00c9\u017dQ\u2030\u00c1\u201a\u00b5\u201a\u00dc\u201a\u00b5\u201a\u00bd\ufffdB\u0192v\u0192\ufffd\u0192W\u0192F\u0192N\u0192g\u201a\u00f0\u017dQ\ufffd\u00c6\u201a\u00b7\u201a\u00e9\u201a\u00c9\u201a\u00cd\u0192v\u0192\ufffd\u0192W\u0192F\u0192N\u0192g \u0192r\u0192\u2026\ufffd[\u201a\u00c9\ufffd\u00d8\u201a\u00e8\u2018\u00d6\u201a\u00a6\u201a\u00c4\u201a\u00ad\u201a\u00be\u201a\u00b3\u201a\u00a2\ufffdB -message.launch.vm.on.private.network=\u0192v\u0192\u2030\u0192C\u0192x\ufffd[\u0192g\u201a\u00c8\ufffd\u00ea\u2014p\u0192l\u0192b\u0192g\u0192\ufffd\ufffd[\u0192N\u201a\u00c5\u0192C\u0192\u201c\u0192X\u0192^\u0192\u201c\u0192X\u201a\u00f0\u2039N\u201c\u00ae\u201a\u00b5\u201a\u00dc\u201a\u00b7\u201a\u00a9? -message.launch.zone=\u0192]\ufffd[\u0192\u201c\u201a\u00f0\u2039N\u201c\u00ae\u201a\u00b7\u201a\u00e9\ufffd\u20ac\u201d\u00f5\u201a\u00aa\u201a\u00c5\u201a\u00ab\u201a\u00dc\u201a\u00b5\u201a\u00bd\ufffdB\u017d\u0178\u201a\u00cc\u017d\u00e8\ufffd\u2021\u201a\u00c9\ufffdi\u201a\u00f1\u201a\u00c5\u201a\u00ad\u201a\u00be\u201a\u00b3\u201a\u00a2\ufffdB -message.lock.account=\u201a\u00b1\u201a\u00cc\u0192A\u0192J\u0192E\u0192\u201c\u0192g\u201a\u00f0\u0192\ufffd\u0192b\u0192N\u201a\u00b5\u201a\u00c4\u201a\u00e0\u201a\u00e6\u201a\u00eb\u201a\u00b5\u201a\u00a2\u201a\u00c5\u201a\u00b7\u201a\u00a9? \u201a\u00b1\u201a\u00cc\u0192A\u0192J\u0192E\u0192\u201c\u0192g\u201a\u00cc\u201a\u00b7\u201a\u00d7\u201a\u00c4\u201a\u00cc\u0192\u2020\ufffd[\u0192U\ufffd[\u201a\u00aa\u0192N\u0192\u2030\u0192E\u0192h \u0192\u0160\u0192\\ufffd[\u0192X\u201a\u00f0\u0160\u00c7\u2014\ufffd\u201a\u00c5\u201a\u00ab\u201a\u00c8\u201a\u00ad\u201a\u00c8\u201a\u00e8\u201a\u00dc\u201a\u00b7\ufffdB\u201a\u00bb\u201a\u00cc\u0152\u00e3\u201a\u00e0\u0160\u00f9\u2018\u00b6\u201a\u00cc\u0192\u0160\u0192\\ufffd[\u0192X\u201a\u00c9\u201a\u00cd\u0192A\u0192N\u0192Z\u0192X\u201a\u00c5\u201a\u00ab\u201a\u00dc\u201a\u00b7\ufffdB -message.migrate.instance.confirm=\u2030\u00bc\u2018z\u0192C\u0192\u201c\u0192X\u0192^\u0192\u201c\u0192X\u201a\u00cc\u02c6\u00da\ufffds\ufffd\u00e6\u201a\u00cd\u017d\u0178\u201a\u00cc\u0192z\u0192X\u0192g\u201a\u00c5\u201a\u00e6\u201a\u00eb\u201a\u00b5\u201a\u00a2\u201a\u00c5\u201a\u00b7\u201a\u00a9? -message.migrate.instance.to.host=\u2022\u00ca\u201a\u00cc\u0192z\u0192X\u0192g\u201a\u00c9\u0192C\u0192\u201c\u0192X\u0192^\u0192\u201c\u0192X\u201a\u00f0\u02c6\u00da\ufffds\u201a\u00b5\u201a\u00c4\u201a\u00e0\u201a\u00e6\u201a\u00eb\u201a\u00b5\u201a\u00a2\u201a\u00c5\u201a\u00b7\u201a\u00a9? -message.migrate.instance.to.ps=\u2022\u00ca\u201a\u00cc\u0192v\u0192\u2030\u0192C\u0192}\u0192\u0160 \u0192X\u0192g\u0192\u0152\ufffd[\u0192W\u201a\u00c9\u0192C\u0192\u201c\u0192X\u0192^\u0192\u201c\u0192X\u201a\u00f0\u02c6\u00da\ufffds\u201a\u00b5\u201a\u00c4\u201a\u00e0\u201a\u00e6\u201a\u00eb\u201a\u00b5\u201a\u00a2\u201a\u00c5\u201a\u00b7\u201a\u00a9? -message.migrate.router.confirm=\u0192\u2039\ufffd[\u0192^\ufffd[\u201a\u00cc\u02c6\u00da\ufffds\ufffd\u00e6\u201a\u00cd\u017d\u0178\u201a\u00cc\u0192z\u0192X\u0192g\u201a\u00c5\u201a\u00e6\u201a\u00eb\u201a\u00b5\u201a\u00a2\u201a\u00c5\u201a\u00b7\u201a\u00a9? -message.migrate.systemvm.confirm=\u0192V\u0192X\u0192e\u0192\u20ac VM \u201a\u00cc\u02c6\u00da\ufffds\ufffd\u00e6\u201a\u00cd\u017d\u0178\u201a\u00cc\u0192z\u0192X\u0192g\u201a\u00c5\u201a\u00e6\u201a\u00eb\u201a\u00b5\u201a\u00a2\u201a\u00c5\u201a\u00b7\u201a\u00a9? -message.migrate.volume=\u2022\u00ca\u201a\u00cc\u0192v\u0192\u2030\u0192C\u0192}\u0192\u0160 \u0192X\u0192g\u0192\u0152\ufffd[\u0192W\u201a\u00c9\u0192{\u0192\u0160\u0192\u2026\ufffd[\u0192\u20ac\u201a\u00f0\u02c6\u00da\ufffds\u201a\u00b5\u201a\u00c4\u201a\u00e0\u201a\u00e6\u201a\u00eb\u201a\u00b5\u201a\u00a2\u201a\u00c5\u201a\u00b7\u201a\u00a9? -message.new.user=\u0192A\u0192J\u0192E\u0192\u201c\u0192g\u201a\u00c9\ufffdV\u201a\u00b5\u201a\u00a2\u0192\u2020\ufffd[\u0192U\ufffd[\u201a\u00f0\u2019\u00c7\u2030\u00c1\u201a\u00b7\u201a\u00e9\u201a\u00bd\u201a\u00df\u201a\u00c9\ufffdA\u017d\u0178\u201a\u00cc\ufffd\u00ee\u2022\u00f1\u201a\u00f0\u017dw\u2019\u00e8\u201a\u00b5\u201a\u00c4\u201a\u00ad\u201a\u00be\u201a\u00b3\u201a\u00a2\ufffdB -message.no.network.support.configuration.not.true=\u0192Z\u0192L\u0192\u2026\u0192\u0160\u0192e\u0192B \u0192O\u0192\u2039\ufffd[\u0192v\u201a\u00aa\u2014L\u0152\u00f8\u201a\u00c8\u0192]\ufffd[\u0192\u201c\u201a\u00aa\u2013\u00b3\u201a\u00a2\u201a\u00bd\u201a\u00df\ufffdA\u2019\u00c7\u2030\u00c1\u201a\u00cc\u0192l\u0192b\u0192g\u0192\ufffd\ufffd[\u0192N\u2039@\u201d\\u201a\u00cd\u201a\u00a0\u201a\u00e8\u201a\u00dc\u201a\u00b9\u201a\u00f1\ufffdB\u017d\u00e8\ufffd\u2021 5. \u201a\u00c9\ufffdi\u201a\u00f1\u201a\u00c5\u201a\u00ad\u201a\u00be\u201a\u00b3\u201a\u00a2\ufffdB -message.no.network.support=\u0192n\u0192C\u0192p\ufffd[\u0192o\u0192C\u0192U\ufffd[\u201a\u00c6\u201a\u00b5\u201a\u00c4 vSphere \u201a\u00f0\u2018I\u2018\u00f0\u201a\u00b5\u201a\u00dc\u201a\u00b5\u201a\u00bd\u201a\u00aa\ufffdA\u201a\u00b1\u201a\u00cc\u0192n\u0192C\u0192p\ufffd[\u0192o\u0192C\u0192U\ufffd[\u201a\u00c9\u2019\u00c7\u2030\u00c1\u201a\u00cc\u0192l\u0192b\u0192g\u0192\ufffd\ufffd[\u0192N\u2039@\u201d\\u201a\u00cd\u201a\u00a0\u201a\u00e8\u201a\u00dc\u201a\u00b9\u201a\u00f1\ufffdB\u017d\u00e8\ufffd\u2021 5. \u201a\u00c9\ufffdi\u201a\u00f1\u201a\u00c5\u201a\u00ad\u201a\u00be\u201a\u00b3\u201a\u00a2\ufffdB -message.no.projects.adminOnly=\u0192v\u0192\ufffd\u0192W\u0192F\u0192N\u0192g\u201a\u00aa\u201a\u00a0\u201a\u00e8\u201a\u00dc\u201a\u00b9\u201a\u00f1\ufffdB
\u0160\u00c7\u2014\ufffd\u017d\u00d2\u201a\u00c9\ufffdV\u201a\u00b5\u201a\u00a2\u0192v\u0192\ufffd\u0192W\u0192F\u0192N\u0192g\u201a\u00cc\ufffd\u00ec\ufffd\u00ac\u201a\u00f0\u02c6\u00cb\u2014\u0160\u201a\u00b5\u201a\u00c4\u201a\u00ad\u201a\u00be\u201a\u00b3\u201a\u00a2\ufffdB -message.no.projects=\u0192v\u0192\ufffd\u0192W\u0192F\u0192N\u0192g\u201a\u00aa\u201a\u00a0\u201a\u00e8\u201a\u00dc\u201a\u00b9\u201a\u00f1\ufffdB
\u0192v\u0192\ufffd\u0192W\u0192F\u0192N\u0192g \u0192Z\u0192N\u0192V\u0192\u2021\u0192\u201c\u201a\u00a9\u201a\u00e7\ufffdV\u201a\u00b5\u201a\u00a2\u0192v\u0192\ufffd\u0192W\u0192F\u0192N\u0192g\u201a\u00f0\ufffd\u00ec\ufffd\u00ac\u201a\u00b5\u201a\u00c4\u201a\u00ad\u201a\u00be\u201a\u00b3\u201a\u00a2\ufffdB -message.number.clusters=

\u0192N\u0192\u2030\u0192X\u0192^\ufffd[\ufffd\u201d

-message.number.hosts=

\u0192z\u0192X\u0192g\ufffd\u201d

-message.number.pods=

\u0192|\u0192b\u0192h\ufffd\u201d

-message.number.storage=

\u0192v\u0192\u2030\u0192C\u0192}\u0192\u0160 \u0192X\u0192g\u0192\u0152\ufffd[\u0192W \u0192{\u0192\u0160\u0192\u2026\ufffd[\u0192\u20ac\ufffd\u201d

-message.number.zones=

\u0192]\ufffd[\u0192\u201c\ufffd\u201d

-message.pending.projects.1=\u2022\u00db\u2014\u00af\u2019\u2020\u201a\u00cc\u0192v\u0192\ufffd\u0192W\u0192F\u0192N\u0192g\ufffd\u00b5\u2018\u00d2\ufffd\u00f3\u201a\u00aa\u201a\u00a0\u201a\u00e8\u201a\u00dc\u201a\u00b7\ufffdB -message.pending.projects.2=\u2022\\u017d\u00a6\u201a\u00b7\u201a\u00e9\u201a\u00c9\u201a\u00cd\u0192v\u0192\ufffd\u0192W\u0192F\u0192N\u0192g \u0192Z\u0192N\u0192V\u0192\u2021\u0192\u201c\u201a\u00c9\u02c6\u00da\u201c\u00ae\u201a\u00b5\u201a\u00c4\ufffdA\u02c6\u00ea\u2014\u2014\u201a\u00a9\u201a\u00e7\ufffd\u00b5\u2018\u00d2\ufffd\u00f3\u201a\u00f0\u2018I\u2018\u00f0\u201a\u00b5\u201a\u00dc\u201a\u00b7\ufffdB -message.please.add.at.lease.one.traffic.range=\ufffd\u00ad\u201a\u00c8\u201a\u00ad\u201a\u00c6\u201a\u00e0 1 \u201a\u00c2\u0192g\u0192\u2030\u0192t\u0192B\u0192b\u0192N\u201a\u00cc\u201d\u00cd\u02c6\u00cd\u201a\u00f0\u2019\u00c7\u2030\u00c1\u201a\u00b5\u201a\u00c4\u201a\u00ad\u201a\u00be\u201a\u00b3\u201a\u00a2\ufffdB -message.please.proceed=\u017d\u0178\u201a\u00cc\u017d\u00e8\ufffd\u2021\u201a\u00c9\ufffdi\u201a\u00f1\u201a\u00c5\u201a\u00ad\u201a\u00be\u201a\u00b3\u201a\u00a2\ufffdB -message.please.select.a.configuration.for.your.zone=\u0192]\ufffd[\u0192\u201c\u201a\u00cc\ufffd\\ufffd\u00ac\u201a\u00f0\u2018I\u2018\u00f0\u201a\u00b5\u201a\u00c4\u201a\u00ad\u201a\u00be\u201a\u00b3\u201a\u00a2\ufffdB -message.please.select.a.different.public.and.management.network.before.removing=\ufffd\u00ed\ufffd\u0153\u201a\u00cc\u2018O\u201a\u00c9\u02c6\u00d9\u201a\u00c8\u201a\u00e9\u0192p\u0192u\u0192\u0160\u0192b\u0192N\u201a\u00a8\u201a\u00e6\u201a\u00d1\u0160\u00c7\u2014\ufffd\u0192l\u0192b\u0192g\u0192\ufffd\ufffd[\u0192N\u201a\u00f0\u2018I\u2018\u00f0\u201a\u00b5\u201a\u00c4\u201a\u00ad\u201a\u00be\u201a\u00b3\u201a\u00a2\ufffdB -message.please.select.networks=\u2030\u00bc\u2018z\u0192}\u0192V\u0192\u201c\u201a\u00cc\u0192l\u0192b\u0192g\u0192\ufffd\ufffd[\u0192N\u201a\u00f0\u2018I\u2018\u00f0\u201a\u00b5\u201a\u00c4\u201a\u00ad\u201a\u00be\u201a\u00b3\u201a\u00a2\ufffdB -message.please.wait.while.zone.is.being.created=\u0192]\ufffd[\u0192\u201c\u201a\u00aa\ufffd\u00ec\ufffd\u00ac\u201a\u00b3\u201a\u00ea\u201a\u00e9\u201a\u00dc\u201a\u00c5\u201a\u00b5\u201a\u00ce\u201a\u00e7\u201a\u00ad\u201a\u00a8\u2018\u00d2\u201a\u00bf\u201a\u00ad\u201a\u00be\u201a\u00b3\u201a\u00a2... -message.project.invite.sent=\u0192\u2020\ufffd[\u0192U\ufffd[\u201a\u00c9\ufffd\u00b5\u2018\u00d2\ufffd\u00f3\u201a\u00aa\u2018\u2014\ufffdM\u201a\u00b3\u201a\u00ea\u201a\u00dc\u201a\u00b5\u201a\u00bd\ufffdB\u0192\u2020\ufffd[\u0192U\ufffd[\u201a\u00aa\ufffd\u00b5\u2018\u00d2\u201a\u00f0\ufffd\u00b3\u2018\u00f8\u201a\u00b7\u201a\u00e9\u201a\u00c6\ufffdA\u0192v\u0192\ufffd\u0192W\u0192F\u0192N\u0192g\u201a\u00c9\u2019\u00c7\u2030\u00c1\u201a\u00b3\u201a\u00ea\u201a\u00dc\u201a\u00b7\ufffdB -message.public.traffic.in.advanced.zone=\u0192N\u0192\u2030\u0192E\u0192h\u201c\u00e0\u201a\u00cc VM \u201a\u00aa\u0192C\u0192\u201c\u0192^\ufffd[\u0192l\u0192b\u0192g\u201a\u00c9\u0192A\u0192N\u0192Z\u0192X\u201a\u00b7\u201a\u00e9\u201a\u00c6\ufffdA\u0192p\u0192u\u0192\u0160\u0192b\u0192N \u0192g\u0192\u2030\u0192t\u0192B\u0192b\u0192N\u201a\u00aa\ufffd\u00b6\ufffd\u00ac\u201a\u00b3\u201a\u00ea\u201a\u00dc\u201a\u00b7\ufffdB\u201a\u00b1\u201a\u00cc\u201a\u00bd\u201a\u00df\u201a\u00c9\ufffdA\u02c6\u00ea\u201d\u00ca\u201a\u00c9\u0192A\u0192N\u0192Z\u0192X\u2030\u00c2\u201d\\u201a\u00c8 IP \u0192A\u0192h\u0192\u0152\u0192X\u201a\u00f0\u0160\u201e\u201a\u00e8\u201c\u2013\u201a\u00c4\u201a\u00e9\u2022K\u2014v\u201a\u00aa\u201a\u00a0\u201a\u00e8\u201a\u00dc\u201a\u00b7\ufffdB\u0192G\u0192\u201c\u0192h \u0192\u2020\ufffd[\u0192U\ufffd[\u201a\u00cd CloudStack \u201a\u00cc\u0192\u2020\ufffd[\u0192U\ufffd[ \u0192C\u0192\u201c\u0192^\ufffd[\u0192t\u0192F\u0192C\u0192X\u201a\u00f0\u017dg\u2014p\u201a\u00b5\u201a\u00c4\u201a\u00b1\u201a\u00ea\u201a\u00e7\u201a\u00cc IP \u0192A\u0192h\u0192\u0152\u0192X\u201a\u00f0\u017d\u00e6\u201c\u00be\u201a\u00b5\ufffdA\u0192Q\u0192X\u0192g \u0192l\u0192b\u0192g\u0192\ufffd\ufffd[\u0192N\u201a\u00c6\u0192p\u0192u\u0192\u0160\u0192b\u0192N \u0192l\u0192b\u0192g\u0192\ufffd\ufffd[\u0192N\u201a\u00cc\u0160\u00d4\u201a\u00c9 NAT \u201a\u00f0\u017d\u00c0\u2018\u2022\u201a\u00b7\u201a\u00e9\u201a\u00b1\u201a\u00c6\u201a\u00aa\u201a\u00c5\u201a\u00ab\u201a\u00dc\u201a\u00b7\ufffdB

\u0192C\u0192\u201c\u0192^\ufffd[\u0192l\u0192b\u0192g \u0192g\u0192\u2030\u0192t\u0192B\u0192b\u0192N\u201a\u00cc\u201a\u00bd\u201a\u00df\u201a\u00c9\ufffdA\ufffd\u00ad\u201a\u00c8\u201a\u00ad\u201a\u00c6\u201a\u00e0 1 \u201a\u00c2 IP \u0192A\u0192h\u0192\u0152\u0192X\u201a\u00cc\u201d\u00cd\u02c6\u00cd\u201a\u00f0\u201c\u00fc\u2014\u00cd\u201a\u00b5\u201a\u00c4\u201a\u00ad\u201a\u00be\u201a\u00b3\u201a\u00a2\ufffdB -message.public.traffic.in.basic.zone=\u0192N\u0192\u2030\u0192E\u0192h\u201c\u00e0\u201a\u00cc VM \u201a\u00aa\u0192C\u0192\u201c\u0192^\ufffd[\u0192l\u0192b\u0192g\u201a\u00c9\u0192A\u0192N\u0192Z\u0192X\u201a\u00b7\u201a\u00e9\u201a\u00a9\u0192C\u0192\u201c\u0192^\ufffd[\u0192l\u0192b\u0192g\u0152o\u2014R\u201a\u00c5\u0192N\u0192\u2030\u0192C\u0192A\u0192\u201c\u0192g\u201a\u00c9\u0192T\ufffd[\u0192r\u0192X\u201a\u00f0\u2019\u00f1\u2039\u0178\u201a\u00b7\u201a\u00e9\u201a\u00c6\ufffdA\u0192p\u0192u\u0192\u0160\u0192b\u0192N \u0192g\u0192\u2030\u0192t\u0192B\u0192b\u0192N\u201a\u00aa\ufffd\u00b6\ufffd\u00ac\u201a\u00b3\u201a\u00ea\u201a\u00dc\u201a\u00b7\ufffdB\u201a\u00b1\u201a\u00cc\u201a\u00bd\u201a\u00df\u201a\u00c9\ufffdA\u02c6\u00ea\u201d\u00ca\u201a\u00c9\u0192A\u0192N\u0192Z\u0192X\u2030\u00c2\u201d\\u201a\u00c8 IP \u0192A\u0192h\u0192\u0152\u0192X\u201a\u00f0\u0160\u201e\u201a\u00e8\u201c\u2013\u201a\u00c4\u201a\u00e9\u2022K\u2014v\u201a\u00aa\u201a\u00a0\u201a\u00e8\u201a\u00dc\u201a\u00b7\ufffdB\u0192C\u0192\u201c\u0192X\u0192^\u0192\u201c\u0192X\u201a\u00f0\ufffd\u00ec\ufffd\u00ac\u201a\u00b7\u201a\u00e9\u201a\u00c6\ufffdA\u0192Q\u0192X\u0192g IP \u0192A\u0192h\u0192\u0152\u0192X\u201a\u00cc\u201a\u00d9\u201a\u00a9\u201a\u00c9\u201a\u00b1\u201a\u00cc\u0192p\u0192u\u0192\u0160\u0192b\u0192N IP \u0192A\u0192h\u0192\u0152\u0192X\u201a\u00cc\u201d\u00cd\u02c6\u00cd\u201a\u00a9\u201a\u00e7\u0192A\u0192h\u0192\u0152\u0192X\u201a\u00aa 1 \u201a\u00c2\u0192C\u0192\u201c\u0192X\u0192^\u0192\u201c\u0192X\u201a\u00c9\u0160\u201e\u201a\u00e8\u201c\u2013\u201a\u00c4\u201a\u00e7\u201a\u00ea\u201a\u00dc\u201a\u00b7\ufffdB\u0192p\u0192u\u0192\u0160\u0192b\u0192N IP \u0192A\u0192h\u0192\u0152\u0192X\u201a\u00c6\u0192Q\u0192X\u0192g IP \u0192A\u0192h\u0192\u0152\u0192X\u201a\u00cc\u0160\u00d4\u201a\u00c9\ufffdA\ufffd\u00c3\u201cI\u201a\u00c8 1 \u2018\u00ce 1 \u201a\u00cc NAT \u201a\u00aa\u017d\u00a9\u201c\u00ae\u201cI\u201a\u00c9\u0192Z\u0192b\u0192g\u0192A\u0192b\u0192v\u201a\u00b3\u201a\u00ea\u201a\u00dc\u201a\u00b7\ufffdB\u0192G\u0192\u201c\u0192h \u0192\u2020\ufffd[\u0192U\ufffd[\u201a\u00cd CloudStack \u201a\u00cc\u0192\u2020\ufffd[\u0192U\ufffd[ \u0192C\u0192\u201c\u0192^\ufffd[\u0192t\u0192F\u0192C\u0192X\u201a\u00f0\u017dg\u2014p\u201a\u00b5\u201a\u00c4\u2019\u00c7\u2030\u00c1\u201a\u00cc IP \u0192A\u0192h\u0192\u0152\u0192X\u201a\u00f0\u017d\u00e6\u201c\u00be\u201a\u00b5\ufffdA\u0192C\u0192\u201c\u0192X\u0192^\u0192\u201c\u0192X\u201a\u00c6\u0192p\u0192u\u0192\u0160\u0192b\u0192N IP \u0192A\u0192h\u0192\u0152\u0192X\u201a\u00cc\u0160\u00d4\u201a\u00c9\ufffd\u00c3\u201cI NAT \u201a\u00f0\u017d\u00c0\u2018\u2022\u201a\u00b7\u201a\u00e9\u201a\u00b1\u201a\u00c6\u201a\u00e0\u201a\u00c5\u201a\u00ab\u201a\u00dc\u201a\u00b7\ufffdB -message.redirecting.region=\u2014\u00cc\u02c6\u00e6\u201a\u00c9\u0192\u0160\u0192_\u0192C\u0192\u0152\u0192N\u0192g\u201a\u00b5\u201a\u00c4\u201a\u00a2\u201a\u00dc\u201a\u00b7... -message.remove.region=\u201a\u00b1\u201a\u00cc\u0160\u00c7\u2014\ufffd\u0192T\ufffd[\u0192o\ufffd[\u201a\u00a9\u201a\u00e7\u201a\u00b1\u201a\u00cc\u2014\u00cc\u02c6\u00e6\u201a\u00f0\ufffd\u00ed\ufffd\u0153\u201a\u00b5\u201a\u00c4\u201a\u00e0\u201a\u00e6\u201a\u00eb\u201a\u00b5\u201a\u00a2\u201a\u00c5\u201a\u00b7\u201a\u00a9? -message.remove.vpc=VPC \u201a\u00f0\ufffd\u00ed\ufffd\u0153\u201a\u00b5\u201a\u00c4\u201a\u00e0\u201a\u00e6\u201a\u00eb\u201a\u00b5\u201a\u00a2\u201a\u00c5\u201a\u00b7\u201a\u00a9? -message.remove.vpn.access=\u017d\u0178\u201a\u00cc\u0192\u2020\ufffd[\u0192U\ufffd[\u201a\u00a9\u201a\u00e7 VPN \u0192A\u0192N\u0192Z\u0192X\u201a\u00f0\ufffd\u00ed\ufffd\u0153\u201a\u00b5\u201a\u00c4\u201a\u00e0\u201a\u00e6\u201a\u00eb\u201a\u00b5\u201a\u00a2\u201a\u00c5\u201a\u00b7\u201a\u00a9? -message.reset.password.warning.notPasswordEnabled=\u201a\u00b1\u201a\u00cc\u0192C\u0192\u201c\u0192X\u0192^\u0192\u201c\u0192X\u201a\u00cc\u0192e\u0192\u201c\u0192v\u0192\u0152\ufffd[\u0192g\u201a\u00cd\ufffdA\u0192p\u0192X\u0192\ufffd\ufffd[\u0192h\u0160\u00c7\u2014\ufffd\u201a\u00f0\u2014L\u0152\u00f8\u201a\u00c9\u201a\u00b9\u201a\u00b8\u201a\u00c9\ufffd\u00ec\ufffd\u00ac\u201a\u00b3\u201a\u00ea\u201a\u00dc\u201a\u00b5\u201a\u00bd\ufffdB -message.reset.password.warning.notStopped=\u0152\u00bb\ufffd\u00dd\u201a\u00cc\u0192p\u0192X\u0192\ufffd\ufffd[\u0192h\u201a\u00f0\u2022\u00cf\ufffdX\u201a\u00b7\u201a\u00e9\u2018O\u201a\u00c9\u0192C\u0192\u201c\u0192X\u0192^\u0192\u201c\u0192X\u201a\u00f0\u2019\u00e2\u017d~\u201a\u00b7\u201a\u00e9\u2022K\u2014v\u201a\u00aa\u201a\u00a0\u201a\u00e8\u201a\u00dc\u201a\u00b7\ufffdB -message.reset.VPN.connection=VPN \ufffd\u00da\u2018\u00b1\u201a\u00f0\u0192\u0160\u0192Z\u0192b\u0192g\u201a\u00b5\u201a\u00c4\u201a\u00e0\u201a\u00e6\u201a\u00eb\u201a\u00b5\u201a\u00a2\u201a\u00c5\u201a\u00b7\u201a\u00a9? -message.restart.mgmt.server=\ufffdV\u201a\u00b5\u201a\u00a2\ufffd\u00dd\u2019\u00e8\u201a\u00f0\u2014L\u0152\u00f8\u201a\u00c9\u201a\u00b7\u201a\u00e9\u201a\u00bd\u201a\u00df\u201a\u00c9\ufffdA\u0160\u00c7\u2014\ufffd\u0192T\ufffd[\u0192o\ufffd[\u201a\u00f0\ufffd\u00c4\u2039N\u201c\u00ae\u201a\u00b5\u201a\u00c4\u201a\u00ad\u201a\u00be\u201a\u00b3\u201a\u00a2\ufffdB -message.restart.mgmt.usage.server=\ufffdV\u201a\u00b5\u201a\u00a2\ufffd\u00dd\u2019\u00e8\u201a\u00f0\u2014L\u0152\u00f8\u201a\u00c9\u201a\u00b7\u201a\u00e9\u201a\u00bd\u201a\u00df\u201a\u00c9\ufffdA\u0160\u00c7\u2014\ufffd\u0192T\ufffd[\u0192o\ufffd[\u201a\u00c6\u017dg\u2014p\ufffd\u00f3\u2039\u00b5\u2018\u00aa\u2019\u00e8\u0192T\ufffd[\u0192o\ufffd[\u201a\u00f0\ufffd\u00c4\u2039N\u201c\u00ae\u201a\u00b5\u201a\u00c4\u201a\u00ad\u201a\u00be\u201a\u00b3\u201a\u00a2\ufffdB -message.restart.network=\u201a\u00b1\u201a\u00cc\u0192l\u0192b\u0192g\u0192\ufffd\ufffd[\u0192N\u201a\u00c5\u2019\u00f1\u2039\u0178\u201a\u00b7\u201a\u00e9\u201a\u00b7\u201a\u00d7\u201a\u00c4\u201a\u00cc\u0192T\ufffd[\u0192r\u0192X\u201a\u00aa\u2019\u2020\u2019f\u201a\u00b3\u201a\u00ea\u201a\u00dc\u201a\u00b7\ufffdB\u201a\u00b1\u201a\u00cc\u0192l\u0192b\u0192g\u0192\ufffd\ufffd[\u0192N\u201a\u00f0\ufffd\u00c4\u2039N\u201c\u00ae\u201a\u00b5\u201a\u00c4\u201a\u00e0\u201a\u00e6\u201a\u00eb\u201a\u00b5\u201a\u00a2\u201a\u00c5\u201a\u00b7\u201a\u00a9? -message.restart.vpc=VPC \u201a\u00f0\ufffd\u00c4\u2039N\u201c\u00ae\u201a\u00b5\u201a\u00c4\u201a\u00e0\u201a\u00e6\u201a\u00eb\u201a\u00b5\u201a\u00a2\u201a\u00c5\u201a\u00b7\u201a\u00a9? -message.security.group.usage=(\u0160Y\u201c\u2013\u201a\u00b7\u201a\u00e9\u0192Z\u0192L\u0192\u2026\u0192\u0160\u0192e\u0192B \u0192O\u0192\u2039\ufffd[\u0192v\u201a\u00f0\u201a\u00b7\u201a\u00d7\u201a\u00c4\u2018I\u2018\u00f0\u201a\u00b7\u201a\u00e9\u201a\u00c9\u201a\u00cd\ufffdACtrl \u0192L\ufffd[\u201a\u00f0\u2030\u0178\u201a\u00b5\u201a\u00c8\u201a\u00aa\u201a\u00e7\u0192N\u0192\u0160\u0192b\u0192N\u201a\u00b5\u201a\u00c4\u201a\u00ad\u201a\u00be\u201a\u00b3\u201a\u00a2) -message.select.a.zone=\u0192]\ufffd[\u0192\u201c\u201a\u00cd\u2019\u00ca\ufffd\u00ed\ufffdA\u2019P\u02c6\u00ea\u201a\u00cc\u0192f\ufffd[\u0192^\u0192Z\u0192\u201c\u0192^\ufffd[\u201a\u00c9\u2018\u0160\u201c\u2013\u201a\u00b5\u201a\u00dc\u201a\u00b7\ufffdB\u2022\u00a1\ufffd\u201d\u201a\u00cc\u0192]\ufffd[\u0192\u201c\u201a\u00f0\ufffd\u00dd\u2019\u00e8\u201a\u00b5\ufffdA\u2022\u00a8\u2014\ufffd\u201cI\u201a\u00c9\u2022\u00aa\u2014\u00a3\u201a\u00b5\u201a\u00c4\ufffd\u00e7\u2019\u00b7\ufffd\u00ab\u201a\u00f0\u017d\ufffd\u201a\u00bd\u201a\u00b9\u201a\u00e9\u201a\u00b1\u201a\u00c6\u201a\u00c9\u201a\u00e6\u201a\u00e8\ufffdA\u0192N\u0192\u2030\u0192E\u0192h\u201a\u00cc\ufffdM\u2014\u0160\ufffd\u00ab\u201a\u00f0\ufffd\u201a\u201a\u00df\u201a\u00dc\u201a\u00b7\ufffdB -message.select.instance=\u0192C\u0192\u201c\u0192X\u0192^\u0192\u201c\u0192X\u201a\u00f0\u2018I\u2018\u00f0\u201a\u00b5\u201a\u00c4\u201a\u00ad\u201a\u00be\u201a\u00b3\u201a\u00a2\ufffdB -message.select.iso=\ufffdV\u201a\u00b5\u201a\u00a2\u2030\u00bc\u2018z\u0192C\u0192\u201c\u0192X\u0192^\u0192\u201c\u0192X\u201a\u00cc ISO \u201a\u00f0\u2018I\u2018\u00f0\u201a\u00b5\u201a\u00c4\u201a\u00ad\u201a\u00be\u201a\u00b3\u201a\u00a2\ufffdB -message.select.item=\ufffd\u20ac\u2013\u00da\u201a\u00f0\u2018I\u2018\u00f0\u201a\u00b5\u201a\u00c4\u201a\u00ad\u201a\u00be\u201a\u00b3\u201a\u00a2\ufffdB -message.select.security.groups=\ufffdV\u201a\u00b5\u201a\u00a2\u2030\u00bc\u2018z\u0192}\u0192V\u0192\u201c\u201a\u00cc\u0192Z\u0192L\u0192\u2026\u0192\u0160\u0192e\u0192B \u0192O\u0192\u2039\ufffd[\u0192v\u201a\u00f0\u2018I\u2018\u00f0\u201a\u00b5\u201a\u00c4\u201a\u00ad\u201a\u00be\u201a\u00b3\u201a\u00a2\ufffdB -message.select.template=\ufffdV\u201a\u00b5\u201a\u00a2\u2030\u00bc\u2018z\u0192C\u0192\u201c\u0192X\u0192^\u0192\u201c\u0192X\u201a\u00cc\u0192e\u0192\u201c\u0192v\u0192\u0152\ufffd[\u0192g\u201a\u00f0\u2018I\u2018\u00f0\u201a\u00b5\u201a\u00c4\u201a\u00ad\u201a\u00be\u201a\u00b3\u201a\u00a2\ufffdB -message.setup.physical.network.during.zone.creation.basic=\u0160\u00ee\u2013{\u0192]\ufffd[\u0192\u201c\u201a\u00f0\u2019\u00c7\u2030\u00c1\u201a\u00b7\u201a\u00e9\u201a\u00c6\u201a\u00ab\u201a\u00cd\ufffdA\u0192n\u0192C\u0192p\ufffd[\u0192o\u0192C\u0192U\ufffd[\ufffd\u00e3\u201a\u00cc NIC \u201a\u00c9\u2018\u00ce\u2030\u017e\u201a\u00b7\u201a\u00e9 1 \u201a\u00c2\u201a\u00cc\u2022\u00a8\u2014\ufffd\u0192l\u0192b\u0192g\u0192\ufffd\ufffd[\u0192N\u201a\u00f0\u0192Z\u0192b\u0192g\u0192A\u0192b\u0192v\u201a\u00c5\u201a\u00ab\u201a\u00dc\u201a\u00b7\ufffdB\u0192l\u0192b\u0192g\u0192\ufffd\ufffd[\u0192N\u201a\u00cd\u201a\u00a2\u201a\u00ad\u201a\u00c2\u201a\u00a9\u201a\u00cc\u017d\u00ed\u2014\u00de\u201a\u00cc\u0192g\u0192\u2030\u0192t\u0192B\u0192b\u0192N\u201a\u00f0\u201c`\u2018\u2014\u201a\u00b5\u201a\u00dc\u201a\u00b7\ufffdB

\u2022\u00a8\u2014\ufffd\u0192l\u0192b\u0192g\u0192\ufffd\ufffd[\u0192N\u201a\u00c9\u201a\u00d9\u201a\u00a9\u201a\u00cc\u0192g\u0192\u2030\u0192t\u0192B\u0192b\u0192N\u201a\u00cc\u017d\u00ed\u2014\u00de\u201a\u00f0\u0192h\u0192\u2030\u0192b\u0192O \u0192A\u0192\u201c\u0192h \u0192h\u0192\ufffd\u0192b\u0192v\u201a\u00b7\u201a\u00e9\u201a\u00b1\u201a\u00c6\u201a\u00e0\u201a\u00c5\u201a\u00ab\u201a\u00dc\u201a\u00b7\ufffdB -message.setup.physical.network.during.zone.creation=\u0160g\u2019\u00a3\u0192]\ufffd[\u0192\u201c\u201a\u00f0\u2019\u00c7\u2030\u00c1\u201a\u00b7\u201a\u00e9\u201a\u00c6\u201a\u00ab\u201a\u00cd\ufffdA1 \u201a\u00c2\u02c6\u00c8\ufffd\u00e3\u201a\u00cc\u2022\u00a8\u2014\ufffd\u0192l\u0192b\u0192g\u0192\ufffd\ufffd[\u0192N\u201a\u00f0\u0192Z\u0192b\u0192g\u0192A\u0192b\u0192v\u201a\u00b7\u201a\u00e9\u2022K\u2014v\u201a\u00aa\u201a\u00a0\u201a\u00e8\u201a\u00dc\u201a\u00b7\ufffdB\u0160e\u0192l\u0192b\u0192g\u0192\ufffd\ufffd[\u0192N\u201a\u00cd\u0192n\u0192C\u0192p\ufffd[\u0192o\u0192C\u0192U\ufffd[\ufffd\u00e3\u201a\u00cc 1 \u201a\u00c2\u201a\u00cc NIC \u201a\u00c9\u2018\u00ce\u2030\u017e\u201a\u00b5\u201a\u00dc\u201a\u00b7\ufffdB\u0160e\u2022\u00a8\u2014\ufffd\u0192l\u0192b\u0192g\u0192\ufffd\ufffd[\u0192N\u201a\u00c5\u201a\u00cd\ufffdA\u2018g\u201a\u00dd\ufffd\u2021\u201a\u00ed\u201a\u00b9\u201a\u00c9\ufffd\u00a7\u0152\u00c0\u201a\u00aa\u201a\u00a0\u201a\u00e8\u201a\u00dc\u201a\u00b7\u201a\u00aa\ufffdA1 \u201a\u00c2\u02c6\u00c8\ufffd\u00e3\u201a\u00cc\u017d\u00ed\u2014\u00de\u201a\u00cc\u0192g\u0192\u2030\u0192t\u0192B\u0192b\u0192N\u201a\u00f0\u2019\u00ca\ufffdM\u201a\u00c5\u201a\u00ab\u201a\u00dc\u201a\u00b7\ufffdB

\u0160e\u2022\u00a8\u2014\ufffd\u0192l\u0192b\u0192g\u0192\ufffd\ufffd[\u0192N\u201a\u00c9\u2018\u00ce\u201a\u00b5\u201a\u00c4\u0192g\u0192\u2030\u0192t\u0192B\u0192b\u0192N\u201a\u00cc\u017d\u00ed\u2014\u00de\u201a\u00f0\u0192h\u0192\u2030\u0192b\u0192O \u0192A\u0192\u201c\u0192h \u0192h\u0192\ufffd\u0192b\u0192v\u201a\u00b5\u201a\u00c4\u201a\u00ad\u201a\u00be\u201a\u00b3\u201a\u00a2\ufffdB -message.setup.successful=\u0192N\u0192\u2030\u0192E\u0192h\u201a\u00aa\u0192Z\u0192b\u0192g\u0192A\u0192b\u0192v\u201a\u00b3\u201a\u00ea\u201a\u00dc\u201a\u00b5\u201a\u00bd\ufffdB -message.snapshot.schedule=\u017d\u0178\u201a\u00cc\u0192I\u0192v\u0192V\u0192\u2021\u0192\u201c\u201a\u00a9\u201a\u00e7\u2018I\u2018\u00f0\u201a\u00b5\u201a\u00c4\u0192|\u0192\u0160\u0192V\ufffd[\u201a\u00cc\u0160\u00ee\u2013{\ufffd\u00dd\u2019\u00e8\u201a\u00f0\u201cK\u2014p\u201a\u00b7\u201a\u00e9\u201a\u00b1\u201a\u00c6\u201a\u00c9\u201a\u00e6\u201a\u00e8\ufffdA\u2019\u00e8\u0160\u00fa\u0192X\u0192i\u0192b\u0192v\u0192V\u0192\u2021\u0192b\u0192g\u201a\u00cc\u0192X\u0192P\u0192W\u0192\u2026\ufffd[\u0192\u2039\u201a\u00f0\u0192Z\u0192b\u0192g\u0192A\u0192b\u0192v\u201a\u00c5\u201a\u00ab\u201a\u00dc\u201a\u00b7\ufffdB -message.specify.url=URL \u201a\u00f0\u017dw\u2019\u00e8\u201a\u00b5\u201a\u00c4\u201a\u00ad\u201a\u00be\u201a\u00b3\u201a\u00a2 -message.step.1.continue=\u2018\u00b1\ufffds\u201a\u00b7\u201a\u00e9\u201a\u00c9\u201a\u00cd\u0192e\u0192\u201c\u0192v\u0192\u0152\ufffd[\u0192g\u201a\u00dc\u201a\u00bd\u201a\u00cd ISO \u201a\u00f0\u2018I\u2018\u00f0\u201a\u00b5\u201a\u00c4\u201a\u00ad\u201a\u00be\u201a\u00b3\u201a\u00a2 -message.step.1.desc=\ufffdV\u201a\u00b5\u201a\u00a2\u2030\u00bc\u2018z\u0192C\u0192\u201c\u0192X\u0192^\u0192\u201c\u0192X\u2014p\u201a\u00cc\u0192e\u0192\u201c\u0192v\u0192\u0152\ufffd[\u0192g\u201a\u00f0\u2018I\u2018\u00f0\u201a\u00b5\u201a\u00c4\u201a\u00ad\u201a\u00be\u201a\u00b3\u201a\u00a2\ufffdBISO \u201a\u00f0\u0192C\u0192\u201c\u0192X\u0192g\ufffd[\u0192\u2039\u201a\u00c5\u201a\u00ab\u201a\u00e9\u2039\u00f3\u201d\u2019\u201a\u00cc\u0192e\u0192\u201c\u0192v\u0192\u0152\ufffd[\u0192g\u201a\u00f0\u2018I\u2018\u00f0\u201a\u00b7\u201a\u00e9\u201a\u00b1\u201a\u00c6\u201a\u00e0\u201a\u00c5\u201a\u00ab\u201a\u00dc\u201a\u00b7\ufffdB -message.step.2.continue=\u2018\u00b1\ufffds\u201a\u00b7\u201a\u00e9\u201a\u00c9\u201a\u00cd\u0192T\ufffd[\u0192r\u0192X \u0192I\u0192t\u0192@\u0192\u0160\u0192\u201c\u0192O\u201a\u00f0\u2018I\u2018\u00f0\u201a\u00b5\u201a\u00c4\u201a\u00ad\u201a\u00be\u201a\u00b3\u201a\u00a2 +label.vgpu.type=vGPU \u306e\u7a2e\u985e +label.vgpu.video.ram=\u30d3\u30c7\u30aa RAM +label.vgpu.max.resolution=\u6700\u5927\u89e3\u50cf\u5ea6 +label.vgpu.max.vgpu.per.gpu=GPU \u3042\u305f\u308a\u306e vGPU \u6570 +label.vgpu.remaining.capacity=\u6b8b\u5b58\u51e6\u7406\u80fd\u529b +managed.state=\u7ba1\u7406\u5bfe\u8c61\u72b6\u614b +message.acquire.new.ip.vpc=\u3053\u306e VPC \u306e\u65b0\u3057\u3044 IP \u30a2\u30c9\u30ec\u30b9\u3092\u53d6\u5f97\u3057\u3066\u3082\u3088\u308d\u3057\u3044\u3067\u3059\u304b? +message.acquire.new.ip=\u3053\u306e\u30cd\u30c3\u30c8\u30ef\u30fc\u30af\u306e\u65b0\u3057\u3044 IP \u30a2\u30c9\u30ec\u30b9\u3092\u53d6\u5f97\u3057\u3066\u3082\u3088\u308d\u3057\u3044\u3067\u3059\u304b? +message.acquire.public.ip=\u65b0\u3057\u3044 IP \u30a2\u30c9\u30ec\u30b9\u3092\u53d6\u5f97\u3059\u308b\u30be\u30fc\u30f3\u3092\u9078\u629e\u3057\u3066\u304f\u3060\u3055\u3044\u3002 +message.action.cancel.maintenance.mode=\u3053\u306e\u4fdd\u5b88\u3092\u30ad\u30e3\u30f3\u30bb\u30eb\u3057\u3066\u3082\u3088\u308d\u3057\u3044\u3067\u3059\u304b? +message.action.cancel.maintenance=\u30db\u30b9\u30c8\u306e\u4fdd\u5b88\u306f\u6b63\u5e38\u306b\u30ad\u30e3\u30f3\u30bb\u30eb\u3055\u308c\u307e\u3057\u305f\u3002\u3053\u306e\u51e6\u7406\u306b\u306f\u6570\u5206\u304b\u304b\u308b\u53ef\u80fd\u6027\u304c\u3042\u308a\u307e\u3059\u3002 +message.action.change.service.warning.for.instance=\u73fe\u5728\u306e\u30b5\u30fc\u30d3\u30b9 \u30aa\u30d5\u30a1\u30ea\u30f3\u30b0\u3092\u5909\u66f4\u3059\u308b\u524d\u306b\u30a4\u30f3\u30b9\u30bf\u30f3\u30b9\u3092\u505c\u6b62\u3059\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002 +message.action.change.service.warning.for.router=\u73fe\u5728\u306e\u30b5\u30fc\u30d3\u30b9 \u30aa\u30d5\u30a1\u30ea\u30f3\u30b0\u3092\u5909\u66f4\u3059\u308b\u524d\u306b\u30eb\u30fc\u30bf\u30fc\u3092\u505c\u6b62\u3059\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002 +message.action.delete.cluster=\u3053\u306e\u30af\u30e9\u30b9\u30bf\u30fc\u3092\u524a\u9664\u3057\u3066\u3082\u3088\u308d\u3057\u3044\u3067\u3059\u304b? +message.action.delete.disk.offering=\u3053\u306e\u30c7\u30a3\u30b9\u30af \u30aa\u30d5\u30a1\u30ea\u30f3\u30b0\u3092\u524a\u9664\u3057\u3066\u3082\u3088\u308d\u3057\u3044\u3067\u3059\u304b? +message.action.delete.domain=\u3053\u306e\u30c9\u30e1\u30a4\u30f3\u3092\u524a\u9664\u3057\u3066\u3082\u3088\u308d\u3057\u3044\u3067\u3059\u304b? +message.action.delete.external.firewall=\u3053\u306e\u5916\u90e8\u30d5\u30a1\u30a4\u30a2\u30a6\u30a9\u30fc\u30eb\u3092\u524a\u9664\u3057\u3066\u3082\u3088\u308d\u3057\u3044\u3067\u3059\u304b? \u8b66\u544a\: \u540c\u3058\u5916\u90e8\u30d5\u30a1\u30a4\u30a2\u30a6\u30a9\u30fc\u30eb\u3092\u518d\u5ea6\u8ffd\u52a0\u3059\u308b\u4e88\u5b9a\u3067\u3042\u308b\u5834\u5408\u306f\u3001\u30c7\u30d0\u30a4\u30b9\u306e\u4f7f\u7528\u72b6\u6cc1\u30c7\u30fc\u30bf\u3092\u30ea\u30bb\u30c3\u30c8\u3059\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002 +message.action.delete.external.load.balancer=\u3053\u306e\u5916\u90e8\u30ed\u30fc\u30c9 \u30d0\u30e9\u30f3\u30b5\u30fc\u3092\u524a\u9664\u3057\u3066\u3082\u3088\u308d\u3057\u3044\u3067\u3059\u304b? \u8b66\u544a\: \u540c\u3058\u5916\u90e8\u30ed\u30fc\u30c9 \u30d0\u30e9\u30f3\u30b5\u30fc\u3092\u518d\u5ea6\u8ffd\u52a0\u3059\u308b\u4e88\u5b9a\u3067\u3042\u308b\u5834\u5408\u306f\u3001\u30c7\u30d0\u30a4\u30b9\u306e\u4f7f\u7528\u72b6\u6cc1\u30c7\u30fc\u30bf\u3092\u30ea\u30bb\u30c3\u30c8\u3059\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002 +message.action.delete.ingress.rule=\u3053\u306e\u53d7\u4fe1\u898f\u5247\u3092\u524a\u9664\u3057\u3066\u3082\u3088\u308d\u3057\u3044\u3067\u3059\u304b? +message.action.delete.ISO.for.all.zones=\u305d\u306e ISO \u306f\u3059\u3079\u3066\u306e\u30be\u30fc\u30f3\u3067\u4f7f\u7528\u3055\u308c\u3066\u3044\u307e\u3059\u3002\u3059\u3079\u3066\u306e\u30be\u30fc\u30f3\u304b\u3089\u524a\u9664\u3057\u3066\u3082\u3088\u308d\u3057\u3044\u3067\u3059\u304b? +message.action.delete.ISO=\u3053\u306e ISO \u3092\u524a\u9664\u3057\u3066\u3082\u3088\u308d\u3057\u3044\u3067\u3059\u304b? +message.action.delete.network=\u3053\u306e\u30cd\u30c3\u30c8\u30ef\u30fc\u30af\u3092\u524a\u9664\u3057\u3066\u3082\u3088\u308d\u3057\u3044\u3067\u3059\u304b? +message.action.delete.nexusVswitch=\u3053\u306e Nexus 1000V \u3092\u524a\u9664\u3057\u3066\u3082\u3088\u308d\u3057\u3044\u3067\u3059\u304b? +message.action.delete.physical.network=\u3053\u306e\u7269\u7406\u30cd\u30c3\u30c8\u30ef\u30fc\u30af\u3092\u524a\u9664\u3057\u3066\u3082\u3088\u308d\u3057\u3044\u3067\u3059\u304b? +message.action.delete.pod=\u3053\u306e\u30dd\u30c3\u30c9\u3092\u524a\u9664\u3057\u3066\u3082\u3088\u308d\u3057\u3044\u3067\u3059\u304b? +message.action.delete.primary.storage=\u3053\u306e\u30d7\u30e9\u30a4\u30de\u30ea \u30b9\u30c8\u30ec\u30fc\u30b8\u3092\u524a\u9664\u3057\u3066\u3082\u3088\u308d\u3057\u3044\u3067\u3059\u304b? +message.action.delete.secondary.storage=\u3053\u306e\u30bb\u30ab\u30f3\u30c0\u30ea \u30b9\u30c8\u30ec\u30fc\u30b8\u3092\u524a\u9664\u3057\u3066\u3082\u3088\u308d\u3057\u3044\u3067\u3059\u304b? +message.action.delete.security.group=\u3053\u306e\u30bb\u30ad\u30e5\u30ea\u30c6\u30a3 \u30b0\u30eb\u30fc\u30d7\u3092\u524a\u9664\u3057\u3066\u3082\u3088\u308d\u3057\u3044\u3067\u3059\u304b? +message.action.delete.service.offering=\u3053\u306e\u30b5\u30fc\u30d3\u30b9 \u30aa\u30d5\u30a1\u30ea\u30f3\u30b0\u3092\u524a\u9664\u3057\u3066\u3082\u3088\u308d\u3057\u3044\u3067\u3059\u304b? +message.action.delete.snapshot=\u3053\u306e\u30b9\u30ca\u30c3\u30d7\u30b7\u30e7\u30c3\u30c8\u3092\u524a\u9664\u3057\u3066\u3082\u3088\u308d\u3057\u3044\u3067\u3059\u304b? +message.action.delete.system.service.offering=\u3053\u306e\u30b7\u30b9\u30c6\u30e0 \u30b5\u30fc\u30d3\u30b9 \u30aa\u30d5\u30a1\u30ea\u30f3\u30b0\u3092\u524a\u9664\u3057\u3066\u3082\u3088\u308d\u3057\u3044\u3067\u3059\u304b? +message.action.delete.template.for.all.zones=\u305d\u306e\u30c6\u30f3\u30d7\u30ec\u30fc\u30c8\u306f\u3059\u3079\u3066\u306e\u30be\u30fc\u30f3\u3067\u4f7f\u7528\u3055\u308c\u3066\u3044\u307e\u3059\u3002\u3059\u3079\u3066\u306e\u30be\u30fc\u30f3\u304b\u3089\u524a\u9664\u3057\u3066\u3082\u3088\u308d\u3057\u3044\u3067\u3059\u304b? +message.action.delete.template=\u3053\u306e\u30c6\u30f3\u30d7\u30ec\u30fc\u30c8\u3092\u524a\u9664\u3057\u3066\u3082\u3088\u308d\u3057\u3044\u3067\u3059\u304b? +message.action.delete.volume=\u3053\u306e\u30dc\u30ea\u30e5\u30fc\u30e0\u3092\u524a\u9664\u3057\u3066\u3082\u3088\u308d\u3057\u3044\u3067\u3059\u304b? +message.action.delete.zone=\u3053\u306e\u30be\u30fc\u30f3\u3092\u524a\u9664\u3057\u3066\u3082\u3088\u308d\u3057\u3044\u3067\u3059\u304b? +message.action.destroy.instance=\u3053\u306e\u30a4\u30f3\u30b9\u30bf\u30f3\u30b9\u3092\u7834\u68c4\u3057\u3066\u3082\u3088\u308d\u3057\u3044\u3067\u3059\u304b? +message.action.destroy.systemvm=\u3053\u306e\u30b7\u30b9\u30c6\u30e0 VM \u3092\u7834\u68c4\u3057\u3066\u3082\u3088\u308d\u3057\u3044\u3067\u3059\u304b? +message.action.disable.cluster=\u3053\u306e\u30af\u30e9\u30b9\u30bf\u30fc\u3092\u7121\u52b9\u306b\u3057\u3066\u3082\u3088\u308d\u3057\u3044\u3067\u3059\u304b? +message.action.disable.nexusVswitch=\u3053\u306e Nexus 1000V \u3092\u7121\u52b9\u306b\u3057\u3066\u3082\u3088\u308d\u3057\u3044\u3067\u3059\u304b? +message.action.disable.physical.network=\u3053\u306e\u7269\u7406\u30cd\u30c3\u30c8\u30ef\u30fc\u30af\u3092\u7121\u52b9\u306b\u3057\u3066\u3082\u3088\u308d\u3057\u3044\u3067\u3059\u304b? +message.action.disable.pod=\u3053\u306e\u30dd\u30c3\u30c9\u3092\u7121\u52b9\u306b\u3057\u3066\u3082\u3088\u308d\u3057\u3044\u3067\u3059\u304b? +message.action.disable.static.NAT=\u9759\u7684 NAT \u3092\u7121\u52b9\u306b\u3057\u3066\u3082\u3088\u308d\u3057\u3044\u3067\u3059\u304b? +message.action.disable.zone=\u3053\u306e\u30be\u30fc\u30f3\u3092\u7121\u52b9\u306b\u3057\u3066\u3082\u3088\u308d\u3057\u3044\u3067\u3059\u304b? +message.action.download.iso=\u3053\u306e ISO \u3092\u30c0\u30a6\u30f3\u30ed\u30fc\u30c9\u3057\u3066\u3082\u3088\u308d\u3057\u3044\u3067\u3059\u304b? +message.action.download.template=\u3053\u306e\u30c6\u30f3\u30d7\u30ec\u30fc\u30c8\u3092\u30c0\u30a6\u30f3\u30ed\u30fc\u30c9\u3057\u3066\u3082\u3088\u308d\u3057\u3044\u3067\u3059\u304b? +message.action.enable.cluster=\u3053\u306e\u30af\u30e9\u30b9\u30bf\u30fc\u3092\u6709\u52b9\u306b\u3057\u3066\u3082\u3088\u308d\u3057\u3044\u3067\u3059\u304b? +message.action.enable.maintenance=\u30db\u30b9\u30c8\u3092\u4fdd\u5b88\u3059\u308b\u6e96\u5099\u304c\u3067\u304d\u307e\u3057\u305f\u3002\u3053\u306e\u30db\u30b9\u30c8\u4e0a\u306e VM \u6570\u306b\u3088\u3063\u3066\u306f\u3001\u3053\u306e\u51e6\u7406\u306b\u306f\u6570\u5206\u4ee5\u4e0a\u304b\u304b\u308b\u53ef\u80fd\u6027\u304c\u3042\u308a\u307e\u3059\u3002 +message.action.enable.nexusVswitch=\u3053\u306e Nexus 1000V \u3092\u6709\u52b9\u306b\u3057\u3066\u3082\u3088\u308d\u3057\u3044\u3067\u3059\u304b? +message.action.enable.physical.network=\u3053\u306e\u7269\u7406\u30cd\u30c3\u30c8\u30ef\u30fc\u30af\u3092\u6709\u52b9\u306b\u3057\u3066\u3082\u3088\u308d\u3057\u3044\u3067\u3059\u304b? +message.action.enable.pod=\u3053\u306e\u30dd\u30c3\u30c9\u3092\u6709\u52b9\u306b\u3057\u3066\u3082\u3088\u308d\u3057\u3044\u3067\u3059\u304b? +message.action.enable.zone=\u3053\u306e\u30be\u30fc\u30f3\u3092\u6709\u52b9\u306b\u3057\u3066\u3082\u3088\u308d\u3057\u3044\u3067\u3059\u304b? +message.action.expunge.instance=\u3053\u306e\u30a4\u30f3\u30b9\u30bf\u30f3\u30b9\u3092\u62b9\u6d88\u3057\u3066\u3082\u3088\u308d\u3057\u3044\u3067\u3059\u304b? +message.action.force.reconnect=\u30db\u30b9\u30c8\u306f\u5f37\u5236\u7684\u306b\u518d\u63a5\u7d9a\u3057\u307e\u3057\u305f\u3002\u3053\u306e\u51e6\u7406\u306b\u306f\u6570\u5206\u304b\u304b\u308b\u53ef\u80fd\u6027\u304c\u3042\u308a\u307e\u3059\u3002 +message.action.host.enable.maintenance.mode=\u4fdd\u5b88\u30e2\u30fc\u30c9\u3092\u6709\u52b9\u306b\u3059\u308b\u3068\u3001\u3053\u306e\u30db\u30b9\u30c8\u3067\u5b9f\u884c\u4e2d\u306e\u3059\u3079\u3066\u306e\u30a4\u30f3\u30b9\u30bf\u30f3\u30b9\u304c\u307b\u304b\u306e\u4f7f\u7528\u3067\u304d\u308b\u30db\u30b9\u30c8\u306b\u30e9\u30a4\u30d6 \u30de\u30a4\u30b0\u30ec\u30fc\u30b7\u30e7\u30f3\u3055\u308c\u307e\u3059\u3002 +message.action.instance.reset.password=\u3053\u306e\u4eee\u60f3\u30de\u30b7\u30f3\u306e\u30eb\u30fc\u30c8 \u30d1\u30b9\u30ef\u30fc\u30c9\u3092\u5909\u66f4\u3057\u3066\u3082\u3088\u308d\u3057\u3044\u3067\u3059\u304b? +message.action.manage.cluster=\u30af\u30e9\u30b9\u30bf\u30fc\u3092\u7ba1\u7406\u5bfe\u8c61\u306b\u3057\u3066\u3082\u3088\u308d\u3057\u3044\u3067\u3059\u304b? +message.action.primarystorage.enable.maintenance.mode=\u8b66\u544a\: \u30d7\u30e9\u30a4\u30de\u30ea \u30b9\u30c8\u30ec\u30fc\u30b8\u3092\u4fdd\u5b88\u30e2\u30fc\u30c9\u306b\u3059\u308b\u3068\u3001\u305d\u306e\u30b9\u30c8\u30ec\u30fc\u30b8\u4e0a\u306e\u30dc\u30ea\u30e5\u30fc\u30e0\u3092\u4f7f\u7528\u3059\u308b\u3059\u3079\u3066\u306e VM \u304c\u505c\u6b62\u3057\u307e\u3059\u3002\u7d9a\u884c\u3057\u3066\u3082\u3088\u308d\u3057\u3044\u3067\u3059\u304b? +message.action.reboot.instance=\u3053\u306e\u30a4\u30f3\u30b9\u30bf\u30f3\u30b9\u3092\u518d\u8d77\u52d5\u3057\u3066\u3082\u3088\u308d\u3057\u3044\u3067\u3059\u304b? +message.action.reboot.router=\u3053\u306e\u4eee\u60f3\u30eb\u30fc\u30bf\u30fc\u3067\u63d0\u4f9b\u3059\u308b\u3059\u3079\u3066\u306e\u30b5\u30fc\u30d3\u30b9\u304c\u4e2d\u65ad\u3055\u308c\u307e\u3059\u3002\u3053\u306e\u30eb\u30fc\u30bf\u30fc\u3092\u518d\u8d77\u52d5\u3057\u3066\u3082\u3088\u308d\u3057\u3044\u3067\u3059\u304b? +message.action.reboot.systemvm=\u3053\u306e\u30b7\u30b9\u30c6\u30e0 VM \u3092\u518d\u8d77\u52d5\u3057\u3066\u3082\u3088\u308d\u3057\u3044\u3067\u3059\u304b? +message.action.release.ip=\u3053\u306e IP \u30a2\u30c9\u30ec\u30b9\u3092\u89e3\u653e\u3057\u3066\u3082\u3088\u308d\u3057\u3044\u3067\u3059\u304b? +message.action.remove.host=\u3053\u306e\u30db\u30b9\u30c8\u3092\u524a\u9664\u3057\u3066\u3082\u3088\u308d\u3057\u3044\u3067\u3059\u304b? +message.action.reset.password.off=\u30a4\u30f3\u30b9\u30bf\u30f3\u30b9\u306f\u73fe\u5728\u3053\u306e\u6a5f\u80fd\u3092\u30b5\u30dd\u30fc\u30c8\u3057\u3066\u3044\u307e\u305b\u3093\u3002 +message.action.reset.password.warning=\u73fe\u5728\u306e\u30d1\u30b9\u30ef\u30fc\u30c9\u3092\u5909\u66f4\u3059\u308b\u524d\u306b\u30a4\u30f3\u30b9\u30bf\u30f3\u30b9\u3092\u505c\u6b62\u3059\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002 +message.action.restore.instance=\u3053\u306e\u30a4\u30f3\u30b9\u30bf\u30f3\u30b9\u3092\u5fa9\u5143\u3057\u3066\u3082\u3088\u308d\u3057\u3044\u3067\u3059\u304b? +message.action.start.instance=\u3053\u306e\u30a4\u30f3\u30b9\u30bf\u30f3\u30b9\u3092\u8d77\u52d5\u3057\u3066\u3082\u3088\u308d\u3057\u3044\u3067\u3059\u304b? +message.action.start.router=\u3053\u306e\u30eb\u30fc\u30bf\u30fc\u3092\u8d77\u52d5\u3057\u3066\u3082\u3088\u308d\u3057\u3044\u3067\u3059\u304b? +message.action.start.systemvm=\u3053\u306e\u30b7\u30b9\u30c6\u30e0 VM \u3092\u8d77\u52d5\u3057\u3066\u3082\u3088\u308d\u3057\u3044\u3067\u3059\u304b? +message.action.stop.instance=\u3053\u306e\u30a4\u30f3\u30b9\u30bf\u30f3\u30b9\u3092\u505c\u6b62\u3057\u3066\u3082\u3088\u308d\u3057\u3044\u3067\u3059\u304b? +message.action.stop.router=\u3053\u306e\u4eee\u60f3\u30eb\u30fc\u30bf\u30fc\u3067\u63d0\u4f9b\u3059\u308b\u3059\u3079\u3066\u306e\u30b5\u30fc\u30d3\u30b9\u304c\u4e2d\u65ad\u3055\u308c\u307e\u3059\u3002\u3053\u306e\u30eb\u30fc\u30bf\u30fc\u3092\u505c\u6b62\u3057\u3066\u3082\u3088\u308d\u3057\u3044\u3067\u3059\u304b? +message.action.stop.systemvm=\u3053\u306e\u30b7\u30b9\u30c6\u30e0 VM \u3092\u505c\u6b62\u3057\u3066\u3082\u3088\u308d\u3057\u3044\u3067\u3059\u304b? +message.action.take.snapshot=\u3053\u306e\u30dc\u30ea\u30e5\u30fc\u30e0\u306e\u30b9\u30ca\u30c3\u30d7\u30b7\u30e7\u30c3\u30c8\u3092\u4f5c\u6210\u3057\u3066\u3082\u3088\u308d\u3057\u3044\u3067\u3059\u304b? +message.action.revert.snapshot=\u6240\u6709\u30dc\u30ea\u30e5\u30fc\u30e0\u3092\u3053\u306e\u30b9\u30ca\u30c3\u30d7\u30b7\u30e7\u30c3\u30c8\u306b\u623b\u3057\u3066\u3082\u3088\u308d\u3057\u3044\u3067\u3059\u304b? +message.action.unmanage.cluster=\u30af\u30e9\u30b9\u30bf\u30fc\u3092\u975e\u7ba1\u7406\u5bfe\u8c61\u306b\u3057\u3066\u3082\u3088\u308d\u3057\u3044\u3067\u3059\u304b? +message.action.vmsnapshot.delete=\u3053\u306e VM \u30b9\u30ca\u30c3\u30d7\u30b7\u30e7\u30c3\u30c8\u3092\u524a\u9664\u3057\u3066\u3082\u3088\u308d\u3057\u3044\u3067\u3059\u304b? +message.action.vmsnapshot.revert=VM \u30b9\u30ca\u30c3\u30d7\u30b7\u30e7\u30c3\u30c8\u3092\u5143\u306b\u623b\u3059 +message.activate.project=\u3053\u306e\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u3092\u30a2\u30af\u30c6\u30a3\u30d6\u306b\u3057\u3066\u3082\u3088\u308d\u3057\u3044\u3067\u3059\u304b? +message.add.cluster.zone=\u30be\u30fc\u30f3 \u306b\u30cf\u30a4\u30d1\u30fc\u30d0\u30a4\u30b6\u30fc\u3067\u7ba1\u7406\u3055\u308c\u308b\u30af\u30e9\u30b9\u30bf\u30fc\u3092\u8ffd\u52a0\u3057\u307e\u3059 +message.add.cluster=\u30be\u30fc\u30f3 \u306e\u30dd\u30c3\u30c9 \u306b\u30cf\u30a4\u30d1\u30fc\u30d0\u30a4\u30b6\u30fc\u3067\u7ba1\u7406\u3055\u308c\u308b\u30af\u30e9\u30b9\u30bf\u30fc\u3092\u8ffd\u52a0\u3057\u307e\u3059 +message.add.disk.offering=\u65b0\u3057\u3044\u30c7\u30a3\u30b9\u30af \u30aa\u30d5\u30a1\u30ea\u30f3\u30b0\u3092\u8ffd\u52a0\u3059\u308b\u305f\u3081\u306b\u3001\u6b21\u306e\u30d1\u30e9\u30e1\u30fc\u30bf\u30fc\u3092\u6307\u5b9a\u3057\u3066\u304f\u3060\u3055\u3044\u3002 +message.add.domain=\u3053\u306e\u30c9\u30e1\u30a4\u30f3\u306b\u4f5c\u6210\u3059\u308b\u30b5\u30d6\u30c9\u30e1\u30a4\u30f3\u3092\u6307\u5b9a\u3057\u3066\u304f\u3060\u3055\u3044\u3002 +message.add.firewall=\u30be\u30fc\u30f3\u306b\u30d5\u30a1\u30a4\u30a2\u30a6\u30a9\u30fc\u30eb\u3092\u8ffd\u52a0\u3057\u307e\u3059 +message.add.guest.network=\u30b2\u30b9\u30c8 \u30cd\u30c3\u30c8\u30ef\u30fc\u30af\u3092\u8ffd\u52a0\u3057\u3066\u3082\u3088\u308d\u3057\u3044\u3067\u3059\u304b? +message.add.host=\u65b0\u3057\u3044\u30db\u30b9\u30c8\u3092\u8ffd\u52a0\u3059\u308b\u305f\u3081\u306b\u3001\u6b21\u306e\u30d1\u30e9\u30e1\u30fc\u30bf\u30fc\u3092\u6307\u5b9a\u3057\u3066\u304f\u3060\u3055\u3044\u3002 +message.add.ip.range.direct.network=\u30be\u30fc\u30f3 \u306e\u76f4\u63a5\u30cd\u30c3\u30c8\u30ef\u30fc\u30af \u306b IP \u30a2\u30c9\u30ec\u30b9\u306e\u7bc4\u56f2\u3092\u8ffd\u52a0\u3057\u307e\u3059 +message.add.ip.range.to.pod=

\u30dd\u30c3\u30c9 \u306b IP \u30a2\u30c9\u30ec\u30b9\u306e\u7bc4\u56f2\u3092\u8ffd\u52a0\u3057\u307e\u3059

+message.add.ip.range=\u30be\u30fc\u30f3\u306e\u30d1\u30d6\u30ea\u30c3\u30af \u30cd\u30c3\u30c8\u30ef\u30fc\u30af\u306b IP \u30a2\u30c9\u30ec\u30b9\u306e\u7bc4\u56f2\u3092\u8ffd\u52a0\u3057\u307e\u3059 +message.add.load.balancer.under.ip=\u30ed\u30fc\u30c9 \u30d0\u30e9\u30f3\u30b5\u30fc\u898f\u5247\u304c\u6b21\u306e IP \u30a2\u30c9\u30ec\u30b9\u306b\u5bfe\u3057\u3066\u8ffd\u52a0\u3055\u308c\u307e\u3057\u305f\: +message.add.load.balancer=\u30be\u30fc\u30f3\u306b\u30ed\u30fc\u30c9 \u30d0\u30e9\u30f3\u30b5\u30fc\u3092\u8ffd\u52a0\u3057\u307e\u3059 +message.add.network=\u30be\u30fc\u30f3 \u306b\u65b0\u3057\u3044\u30cd\u30c3\u30c8\u30ef\u30fc\u30af\u3092\u8ffd\u52a0\u3057\u307e\u3059 +message.add.new.gateway.to.vpc=\u3053\u306e VPC \u306b\u65b0\u3057\u3044\u30b2\u30fc\u30c8\u30a6\u30a7\u30a4\u3092\u8ffd\u52a0\u3059\u308b\u305f\u3081\u306e\u60c5\u5831\u3092\u6307\u5b9a\u3057\u3066\u304f\u3060\u3055\u3044\u3002 +message.add.pod.during.zone.creation=\u5404\u30be\u30fc\u30f3\u306b\u306f 1 \u3064\u4ee5\u4e0a\u306e\u30dd\u30c3\u30c9\u304c\u5fc5\u8981\u3067\u3059\u3002\u4eca\u3053\u3053\u3067\u6700\u521d\u306e\u30dd\u30c3\u30c9\u3092\u8ffd\u52a0\u3057\u307e\u3059\u3002\u30dd\u30c3\u30c9\u306f\u30db\u30b9\u30c8\u3068\u30d7\u30e9\u30a4\u30de\u30ea \u30b9\u30c8\u30ec\u30fc\u30b8 \u30b5\u30fc\u30d0\u30fc\u304b\u3089\u69cb\u6210\u3055\u308c\u307e\u3059\u304c\u3001\u3053\u308c\u3089\u306f\u5f8c\u306e\u624b\u9806\u3067\u8ffd\u52a0\u3057\u307e\u3059\u3002\u6700\u521d\u306b\u3001CloudStack \u306e\u5185\u90e8\u7ba1\u7406\u30c8\u30e9\u30d5\u30a3\u30c3\u30af\u306e\u305f\u3081\u306b IP \u30a2\u30c9\u30ec\u30b9\u306e\u7bc4\u56f2\u3092\u4e88\u7d04\u3057\u307e\u3059\u3002IP \u30a2\u30c9\u30ec\u30b9\u306e\u7bc4\u56f2\u306f\u3001\u30af\u30e9\u30a6\u30c9\u5185\u306e\u5404\u30be\u30fc\u30f3\u3067\u91cd\u8907\u3057\u306a\u3044\u3088\u3046\u306b\u4e88\u7d04\u3059\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002 +message.add.pod=\u30be\u30fc\u30f3 \u306b\u65b0\u3057\u3044\u30dd\u30c3\u30c9\u3092\u8ffd\u52a0\u3057\u307e\u3059 +message.add.primary.storage=\u30be\u30fc\u30f3 \u306e\u30dd\u30c3\u30c9 \u306b\u65b0\u3057\u3044\u30d7\u30e9\u30a4\u30de\u30ea \u30b9\u30c8\u30ec\u30fc\u30b8\u3092\u8ffd\u52a0\u3057\u307e\u3059 +message.add.primary=\u65b0\u3057\u3044\u30d7\u30e9\u30a4\u30de\u30ea \u30b9\u30c8\u30ec\u30fc\u30b8\u3092\u8ffd\u52a0\u3059\u308b\u305f\u3081\u306b\u3001\u6b21\u306e\u30d1\u30e9\u30e1\u30fc\u30bf\u30fc\u3092\u6307\u5b9a\u3057\u3066\u304f\u3060\u3055\u3044\u3002 +message.add.region=\u65b0\u3057\u3044\u9818\u57df\u3092\u8ffd\u52a0\u3059\u308b\u305f\u3081\u306b\u5fc5\u8981\u306a\u60c5\u5831\u3092\u6307\u5b9a\u3057\u3066\u304f\u3060\u3055\u3044\u3002 +message.add.secondary.storage=\u30be\u30fc\u30f3 \u306b\u65b0\u3057\u3044\u30b9\u30c8\u30ec\u30fc\u30b8\u3092\u8ffd\u52a0\u3057\u307e\u3059 +message.add.service.offering=\u65b0\u3057\u3044\u30b3\u30f3\u30d4\u30e5\u30fc\u30c6\u30a3\u30f3\u30b0 \u30aa\u30d5\u30a1\u30ea\u30f3\u30b0\u3092\u8ffd\u52a0\u3059\u308b\u305f\u3081\u306b\u3001\u6b21\u306e\u30c7\u30fc\u30bf\u3092\u5165\u529b\u3057\u3066\u304f\u3060\u3055\u3044\u3002 +message.add.system.service.offering=\u65b0\u3057\u3044\u30b7\u30b9\u30c6\u30e0 \u30b5\u30fc\u30d3\u30b9 \u30aa\u30d5\u30a1\u30ea\u30f3\u30b0\u3092\u8ffd\u52a0\u3059\u308b\u305f\u3081\u306b\u3001\u6b21\u306e\u30c7\u30fc\u30bf\u3092\u5165\u529b\u3057\u3066\u304f\u3060\u3055\u3044\u3002 +message.add.template=\u65b0\u3057\u3044\u30c6\u30f3\u30d7\u30ec\u30fc\u30c8\u3092\u4f5c\u6210\u3059\u308b\u305f\u3081\u306b\u3001\u6b21\u306e\u30c7\u30fc\u30bf\u3092\u5165\u529b\u3057\u3066\u304f\u3060\u3055\u3044\u3002 +message.add.volume=\u65b0\u3057\u3044\u30dc\u30ea\u30e5\u30fc\u30e0\u3092\u8ffd\u52a0\u3059\u308b\u305f\u3081\u306b\u3001\u6b21\u306e\u30c7\u30fc\u30bf\u3092\u5165\u529b\u3057\u3066\u304f\u3060\u3055\u3044\u3002 +message.add.VPN.gateway=VPN \u30b2\u30fc\u30c8\u30a6\u30a7\u30a4\u3092\u8ffd\u52a0\u3057\u3066\u3082\u3088\u308d\u3057\u3044\u3067\u3059\u304b? +message.adding.host=\u30db\u30b9\u30c8\u3092\u8ffd\u52a0\u3057\u3066\u3044\u307e\u3059 +message.adding.Netscaler.device=NetScaler \u30c7\u30d0\u30a4\u30b9\u3092\u8ffd\u52a0\u3057\u3066\u3044\u307e\u3059 +message.adding.Netscaler.provider=NetScaler \u30d7\u30ed\u30d0\u30a4\u30c0\u30fc\u3092\u8ffd\u52a0\u3057\u3066\u3044\u307e\u3059 +message.additional.networks.desc=\u4eee\u60f3\u30a4\u30f3\u30b9\u30bf\u30f3\u30b9\u304c\u63a5\u7d9a\u3059\u308b\u8ffd\u52a0\u306e\u30cd\u30c3\u30c8\u30ef\u30fc\u30af\u3092\u9078\u629e\u3057\u3066\u304f\u3060\u3055\u3044\u3002 +message.advanced.mode.desc=VLAN \u30b5\u30dd\u30fc\u30c8\u3092\u6709\u52b9\u306b\u3059\u308b\u5834\u5408\u306f\u3001\u3053\u306e\u30cd\u30c3\u30c8\u30ef\u30fc\u30af \u30e2\u30c7\u30eb\u3092\u9078\u629e\u3057\u3066\u304f\u3060\u3055\u3044\u3002\u3053\u306e\u30e2\u30c7\u30eb\u3067\u306f\u6700\u3082\u67d4\u8edf\u306b\u30ab\u30b9\u30bf\u30e0 \u30cd\u30c3\u30c8\u30ef\u30fc\u30af \u30aa\u30d5\u30a1\u30ea\u30f3\u30b0\u3092\u63d0\u4f9b\u3067\u304d\u3001\u30d5\u30a1\u30a4\u30a2\u30a6\u30a9\u30fc\u30eb\u3001VPN\u3001\u30ed\u30fc\u30c9 \u30d0\u30e9\u30f3\u30b5\u30fc\u306e\u30b5\u30dd\u30fc\u30c8\u306e\u307b\u304b\u306b\u3001\u76f4\u63a5\u30cd\u30c3\u30c8\u30ef\u30fc\u30af\u3068\u4eee\u60f3\u30cd\u30c3\u30c8\u30ef\u30fc\u30af\u3082\u6709\u52b9\u306b\u3059\u308b\u3053\u3068\u304c\u3067\u304d\u307e\u3059\u3002 +message.advanced.security.group=\u30b2\u30b9\u30c8 VM \u3092\u5206\u96e2\u3059\u308b\u305f\u3081\u306b\u30bb\u30ad\u30e5\u30ea\u30c6\u30a3 \u30b0\u30eb\u30fc\u30d7\u3092\u4f7f\u7528\u3059\u308b\u5834\u5408\u306f\u3001\u3053\u306e\u30aa\u30d7\u30b7\u30e7\u30f3\u3092\u9078\u629e\u3057\u3066\u304f\u3060\u3055\u3044\u3002 +message.advanced.virtual=\u30b2\u30b9\u30c8 VM \u3092\u5206\u96e2\u3059\u308b\u305f\u3081\u306b\u30be\u30fc\u30f3\u5168\u4f53\u306e VLAN \u3092\u4f7f\u7528\u3059\u308b\u5834\u5408\u306f\u3001\u3053\u306e\u30aa\u30d7\u30b7\u30e7\u30f3\u3092\u9078\u629e\u3057\u3066\u304f\u3060\u3055\u3044\u3002 +message.after.enable.s3=S3 \u30d9\u30fc\u30b9\u306e\u30bb\u30ab\u30f3\u30c0\u30ea \u30b9\u30c8\u30ec\u30fc\u30b8\u304c\u69cb\u6210\u3055\u308c\u307e\u3057\u305f\u3002\u6ce8\: \u3053\u306e\u30da\u30fc\u30b8\u3092\u9589\u3058\u308b\u3068\u3001S3 \u3092\u518d\u69cb\u6210\u3059\u308b\u3053\u3068\u306f\u3067\u304d\u307e\u305b\u3093\u3002 +message.after.enable.swift=Swift \u304c\u69cb\u6210\u3055\u308c\u307e\u3057\u305f\u3002\u6ce8\: \u3053\u306e\u30da\u30fc\u30b8\u3092\u9589\u3058\u308b\u3068\u3001Swift \u3092\u518d\u69cb\u6210\u3059\u308b\u3053\u3068\u306f\u3067\u304d\u307e\u305b\u3093\u3002 +message.alert.state.detected=\u30a2\u30e9\u30fc\u30c8\u72b6\u614b\u304c\u691c\u51fa\u3055\u308c\u307e\u3057\u305f +message.allow.vpn.access=VPN \u30a2\u30af\u30bb\u30b9\u3092\u8a31\u53ef\u3059\u308b\u30e6\u30fc\u30b6\u30fc\u306e\u30e6\u30fc\u30b6\u30fc\u540d\u3068\u30d1\u30b9\u30ef\u30fc\u30c9\u3092\u5165\u529b\u3057\u3066\u304f\u3060\u3055\u3044\u3002 +message.apply.snapshot.policy=\u73fe\u5728\u306e\u30b9\u30ca\u30c3\u30d7\u30b7\u30e7\u30c3\u30c8 \u30dd\u30ea\u30b7\u30fc\u3092\u66f4\u65b0\u3057\u307e\u3057\u305f\u3002 +message.attach.iso.confirm=\u3053\u306e\u4eee\u60f3\u30a4\u30f3\u30b9\u30bf\u30f3\u30b9\u306b ISO \u30d5\u30a1\u30a4\u30eb\u3092\u30a2\u30bf\u30c3\u30c1\u3057\u3066\u3082\u3088\u308d\u3057\u3044\u3067\u3059\u304b? +message.attach.volume=\u65b0\u3057\u3044\u30dc\u30ea\u30e5\u30fc\u30e0\u3092\u30a2\u30bf\u30c3\u30c1\u3059\u308b\u305f\u3081\u306b\u3001\u6b21\u306e\u30c7\u30fc\u30bf\u3092\u5165\u529b\u3057\u3066\u304f\u3060\u3055\u3044\u3002Windows \u30d9\u30fc\u30b9\u306e\u4eee\u60f3\u30de\u30b7\u30f3\u306b\u30c7\u30a3\u30b9\u30af \u30dc\u30ea\u30e5\u30fc\u30e0\u3092\u30a2\u30bf\u30c3\u30c1\u3059\u308b\u5834\u5408\u306f\u3001\u30a2\u30bf\u30c3\u30c1\u3057\u305f\u30c7\u30a3\u30b9\u30af\u3092\u8a8d\u8b58\u3059\u308b\u305f\u3081\u306b\u30a4\u30f3\u30b9\u30bf\u30f3\u30b9\u3092\u518d\u8d77\u52d5\u3059\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002 +message.basic.mode.desc=VLAN \u30b5\u30dd\u30fc\u30c8\u304c\u4e0d\u8981\u3067\u3042\u308b\u5834\u5408\u306f\u3001\u3053\u306e\u30cd\u30c3\u30c8\u30ef\u30fc\u30af \u30e2\u30c7\u30eb\u3092\u9078\u629e\u3057\u3066\u304f\u3060\u3055\u3044\u3002\u3053\u306e\u30cd\u30c3\u30c8\u30ef\u30fc\u30af \u30e2\u30c7\u30eb\u3067\u4f5c\u6210\u3055\u308c\u308b\u3059\u3079\u3066\u306e\u4eee\u60f3\u30a4\u30f3\u30b9\u30bf\u30f3\u30b9\u306b\u30cd\u30c3\u30c8\u30ef\u30fc\u30af\u304b\u3089\u76f4\u63a5 IP \u30a2\u30c9\u30ec\u30b9\u304c\u5272\u308a\u5f53\u3066\u3089\u308c\u3001\u30bb\u30ad\u30e5\u30ea\u30c6\u30a3 \u30b0\u30eb\u30fc\u30d7\u3092\u4f7f\u7528\u3057\u3066\u30bb\u30ad\u30e5\u30ea\u30c6\u30a3\u3068\u5206\u96e2\u304c\u63d0\u4f9b\u3055\u308c\u307e\u3059\u3002 +message.change.offering.confirm=\u3053\u306e\u4eee\u60f3\u30a4\u30f3\u30b9\u30bf\u30f3\u30b9\u306e\u30b5\u30fc\u30d3\u30b9 \u30aa\u30d5\u30a1\u30ea\u30f3\u30b0\u3092\u5909\u66f4\u3057\u3066\u3082\u3088\u308d\u3057\u3044\u3067\u3059\u304b? +message.change.password=\u30d1\u30b9\u30ef\u30fc\u30c9\u3092\u5909\u66f4\u3057\u3066\u304f\u3060\u3055\u3044\u3002 +message.configure.all.traffic.types=\u8907\u6570\u306e\u7269\u7406\u30cd\u30c3\u30c8\u30ef\u30fc\u30af\u304c\u3042\u308a\u307e\u3059\u3002[\u7de8\u96c6] \u3092\u30af\u30ea\u30c3\u30af\u3057\u3066\u30c8\u30e9\u30d5\u30a3\u30c3\u30af\u306e\u7a2e\u985e\u3054\u3068\u306b\u30e9\u30d9\u30eb\u3092\u69cb\u6210\u3057\u3066\u304f\u3060\u3055\u3044\u3002 +message.configuring.guest.traffic=\u30b2\u30b9\u30c8 \u30c8\u30e9\u30d5\u30a3\u30c3\u30af\u3092\u69cb\u6210\u3057\u3066\u3044\u307e\u3059 +message.configuring.physical.networks=\u7269\u7406\u30cd\u30c3\u30c8\u30ef\u30fc\u30af\u3092\u69cb\u6210\u3057\u3066\u3044\u307e\u3059 +message.configuring.public.traffic=\u30d1\u30d6\u30ea\u30c3\u30af \u30c8\u30e9\u30d5\u30a3\u30c3\u30af\u3092\u69cb\u6210\u3057\u3066\u3044\u307e\u3059 +message.configuring.storage.traffic=\u30b9\u30c8\u30ec\u30fc\u30b8 \u30c8\u30e9\u30d5\u30a3\u30c3\u30af\u3092\u69cb\u6210\u3057\u3066\u3044\u307e\u3059 +message.confirm.action.force.reconnect=\u3053\u306e\u30db\u30b9\u30c8\u3092\u5f37\u5236\u518d\u63a5\u7d9a\u3057\u3066\u3082\u3088\u308d\u3057\u3044\u3067\u3059\u304b? +message.confirm.delete.F5=F5 \u3092\u524a\u9664\u3057\u3066\u3082\u3088\u308d\u3057\u3044\u3067\u3059\u304b? +message.confirm.delete.BrocadeVcs=Brocade VCS \u30b9\u30a4\u30c3\u30c1\u3092\u524a\u9664\u3057\u3066\u3082\u3088\u308d\u3057\u3044\u3067\u3059\u304b? +message.confirm.delete.NetScaler=NetScaler \u3092\u524a\u9664\u3057\u3066\u3082\u3088\u308d\u3057\u3044\u3067\u3059\u304b? +message.confirm.delete.NuageVsp=Nuage Virtualized Services Directory \u3092\u524a\u9664\u3057\u3066\u3082\u3088\u308d\u3057\u3044\u3067\u3059\u304b? +message.confirm.delete.SRX=SRX \u3092\u524a\u9664\u3057\u3066\u3082\u3088\u308d\u3057\u3044\u3067\u3059\u304b? +message.confirm.delete.PA=Palo Alto \u3092\u524a\u9664\u3057\u3066\u3082\u3088\u308d\u3057\u3044\u3067\u3059\u304b? +message.confirm.destroy.router=\u3053\u306e\u30eb\u30fc\u30bf\u30fc\u3092\u7834\u68c4\u3057\u3066\u3082\u3088\u308d\u3057\u3044\u3067\u3059\u304b? +message.confirm.disable.provider=\u3053\u306e\u30d7\u30ed\u30d0\u30a4\u30c0\u30fc\u3092\u7121\u52b9\u306b\u3057\u3066\u3082\u3088\u308d\u3057\u3044\u3067\u3059\u304b? +message.confirm.enable.provider=\u3053\u306e\u30d7\u30ed\u30d0\u30a4\u30c0\u30fc\u3092\u6709\u52b9\u306b\u3057\u3066\u3082\u3088\u308d\u3057\u3044\u3067\u3059\u304b? +message.confirm.join.project=\u3053\u306e\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u306b\u53c2\u52a0\u3057\u3066\u3082\u3088\u308d\u3057\u3044\u3067\u3059\u304b? +message.confirm.remove.IP.range=\u3053\u306e IP \u30a2\u30c9\u30ec\u30b9\u306e\u7bc4\u56f2\u3092\u524a\u9664\u3057\u3066\u3082\u3088\u308d\u3057\u3044\u3067\u3059\u304b? +message.confirm.shutdown.provider=\u3053\u306e\u30d7\u30ed\u30d0\u30a4\u30c0\u30fc\u3092\u30b7\u30e3\u30c3\u30c8\u30c0\u30a6\u30f3\u3057\u3066\u3082\u3088\u308d\u3057\u3044\u3067\u3059\u304b? +message.copy.iso.confirm=ISO \u3092\u6b21\u306e\u5834\u6240\u306b\u30b3\u30d4\u30fc\u3057\u3066\u3082\u3088\u308d\u3057\u3044\u3067\u3059\u304b? +message.copy.template=\u30be\u30fc\u30f3 \u304b\u3089\u30c6\u30f3\u30d7\u30ec\u30fc\u30c8 XXX \u3092\u6b21\u306e\u5834\u6240\u306b\u30b3\u30d4\u30fc\u3057\u307e\u3059\: +message.create.template.vm=\u30c6\u30f3\u30d7\u30ec\u30fc\u30c8 \u304b\u3089 VM \u3092\u4f5c\u6210\u3057\u307e\u3059 +message.create.template.volume=\u30c7\u30a3\u30b9\u30af \u30dc\u30ea\u30e5\u30fc\u30e0 \u306e\u30c6\u30f3\u30d7\u30ec\u30fc\u30c8\u3092\u4f5c\u6210\u3059\u308b\u524d\u306b\u3001\u6b21\u306e\u60c5\u5831\u3092\u6307\u5b9a\u3057\u3066\u304f\u3060\u3055\u3044\u3002\u30dc\u30ea\u30e5\u30fc\u30e0 \u30b5\u30a4\u30ba\u306b\u3088\u3063\u3066\u306f\u3001\u30c6\u30f3\u30d7\u30ec\u30fc\u30c8\u306e\u4f5c\u6210\u306b\u306f\u6570\u5206\u4ee5\u4e0a\u304b\u304b\u308b\u53ef\u80fd\u6027\u304c\u3042\u308a\u307e\u3059\u3002 +message.create.template=\u30c6\u30f3\u30d7\u30ec\u30fc\u30c8\u3092\u4f5c\u6210\u3057\u3066\u3082\u3088\u308d\u3057\u3044\u3067\u3059\u304b? +message.creating.cluster=\u30af\u30e9\u30b9\u30bf\u30fc\u3092\u4f5c\u6210\u3057\u3066\u3044\u307e\u3059 +message.creating.guest.network=\u30b2\u30b9\u30c8 \u30cd\u30c3\u30c8\u30ef\u30fc\u30af\u3092\u4f5c\u6210\u3057\u3066\u3044\u307e\u3059 +message.creating.physical.networks=\u7269\u7406\u30cd\u30c3\u30c8\u30ef\u30fc\u30af\u3092\u4f5c\u6210\u3057\u3066\u3044\u307e\u3059 +message.creating.pod=\u30dd\u30c3\u30c9\u3092\u4f5c\u6210\u3057\u3066\u3044\u307e\u3059 +message.creating.primary.storage=\u30d7\u30e9\u30a4\u30de\u30ea \u30b9\u30c8\u30ec\u30fc\u30b8\u3092\u4f5c\u6210\u3057\u3066\u3044\u307e\u3059 +message.creating.secondary.storage=\u30bb\u30ab\u30f3\u30c0\u30ea \u30b9\u30c8\u30ec\u30fc\u30b8\u3092\u4f5c\u6210\u3057\u3066\u3044\u307e\u3059 +message.creating.zone=\u30be\u30fc\u30f3\u3092\u4f5c\u6210\u3057\u3066\u3044\u307e\u3059 +message.decline.invitation=\u3053\u306e\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u3078\u306e\u62db\u5f85\u3092\u8f9e\u9000\u3057\u3066\u3082\u3088\u308d\u3057\u3044\u3067\u3059\u304b? +message.dedicate.zone=\u30be\u30fc\u30f3\u3092\u5c02\u7528\u306b\u8a2d\u5b9a\u3057\u3066\u3044\u307e\u3059 +message.delete.account=\u3053\u306e\u30a2\u30ab\u30a6\u30f3\u30c8\u3092\u524a\u9664\u3057\u3066\u3082\u3088\u308d\u3057\u3044\u3067\u3059\u304b? +message.delete.affinity.group=\u3053\u306e\u30a2\u30d5\u30a3\u30cb\u30c6\u30a3 \u30b0\u30eb\u30fc\u30d7\u3092\u524a\u9664\u3057\u3066\u3082\u3088\u308d\u3057\u3044\u3067\u3059\u304b? +message.delete.gateway=\u3053\u306e\u30b2\u30fc\u30c8\u30a6\u30a7\u30a4\u3092\u524a\u9664\u3057\u3066\u3082\u3088\u308d\u3057\u3044\u3067\u3059\u304b? +message.delete.project=\u3053\u306e\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u3092\u524a\u9664\u3057\u3066\u3082\u3088\u308d\u3057\u3044\u3067\u3059\u304b? +message.delete.user=\u3053\u306e\u30e6\u30fc\u30b6\u30fc\u3092\u524a\u9664\u3057\u3066\u3082\u3088\u308d\u3057\u3044\u3067\u3059\u304b? +message.delete.VPN.connection=VPN \u63a5\u7d9a\u3092\u524a\u9664\u3057\u3066\u3082\u3088\u308d\u3057\u3044\u3067\u3059\u304b? +message.delete.VPN.customer.gateway=\u3053\u306e VPN \u30ab\u30b9\u30bf\u30de\u30fc \u30b2\u30fc\u30c8\u30a6\u30a7\u30a4\u3092\u524a\u9664\u3057\u3066\u3082\u3088\u308d\u3057\u3044\u3067\u3059\u304b? +message.delete.VPN.gateway=\u3053\u306e VPN \u30b2\u30fc\u30c8\u30a6\u30a7\u30a4\u3092\u524a\u9664\u3057\u3066\u3082\u3088\u308d\u3057\u3044\u3067\u3059\u304b? +message.desc.advanced.zone=\u3088\u308a\u6d17\u7df4\u3055\u308c\u305f\u30cd\u30c3\u30c8\u30ef\u30fc\u30af\u6280\u8853\u3092\u30b5\u30dd\u30fc\u30c8\u3057\u307e\u3059\u3002\u3053\u306e\u30cd\u30c3\u30c8\u30ef\u30fc\u30af \u30e2\u30c7\u30eb\u3092\u9078\u629e\u3059\u308b\u3068\u3001\u3088\u308a\u67d4\u8edf\u306b\u30b2\u30b9\u30c8\u306e\u30cd\u30c3\u30c8\u30ef\u30fc\u30af\u3092\u5b9a\u7fa9\u3057\u3001\u30d5\u30a1\u30a4\u30a2\u30a6\u30a9\u30fc\u30eb\u3001VPN\u3001\u30ed\u30fc\u30c9 \u30d0\u30e9\u30f3\u30b5\u30fc\u306e\u30b5\u30dd\u30fc\u30c8\u306e\u3088\u3046\u306a\u30ab\u30b9\u30bf\u30de\u30a4\u30ba\u3057\u305f\u30cd\u30c3\u30c8\u30ef\u30fc\u30af \u30aa\u30d5\u30a1\u30ea\u30f3\u30b0\u3092\u63d0\u4f9b\u3067\u304d\u307e\u3059\u3002 +message.desc.basic.zone=\u5404 VM \u30a4\u30f3\u30b9\u30bf\u30f3\u30b9\u306b IP \u30a2\u30c9\u30ec\u30b9\u304c\u30cd\u30c3\u30c8\u30ef\u30fc\u30af\u304b\u3089\u76f4\u63a5\u5272\u308a\u5f53\u3066\u3089\u308c\u308b\u3001\u5358\u4e00\u306e\u30cd\u30c3\u30c8\u30ef\u30fc\u30af\u3092\u63d0\u4f9b\u3057\u307e\u3059\u3002\u30bb\u30ad\u30e5\u30ea\u30c6\u30a3 \u30b0\u30eb\u30fc\u30d7 (\u9001\u4fe1\u5143 IP \u30a2\u30c9\u30ec\u30b9\u306e\u30d5\u30a3\u30eb\u30bf\u30fc) \u306e\u3088\u3046\u306a\u30ec\u30a4\u30e4\u30fc 3 \u30ec\u30d9\u30eb\u306e\u65b9\u6cd5\u3067\u30b2\u30b9\u30c8\u3092\u5206\u96e2\u3067\u304d\u307e\u3059\u3002 +message.desc.cluster=\u5404\u30dd\u30c3\u30c9\u306b\u306f 1 \u3064\u4ee5\u4e0a\u306e\u30af\u30e9\u30b9\u30bf\u30fc\u304c\u5fc5\u8981\u3067\u3059\u3002\u4eca\u3053\u3053\u3067\u6700\u521d\u306e\u30af\u30e9\u30b9\u30bf\u30fc\u3092\u8ffd\u52a0\u3057\u307e\u3059\u3002\u30af\u30e9\u30b9\u30bf\u30fc\u306f\u30db\u30b9\u30c8\u3092\u30b0\u30eb\u30fc\u30d7\u5316\u3059\u308b\u65b9\u6cd5\u3067\u3059\u30021 \u3064\u306e\u30af\u30e9\u30b9\u30bf\u30fc\u5185\u306e\u30db\u30b9\u30c8\u306f\u3059\u3079\u3066\u540c\u4e00\u306e\u30cf\u30fc\u30c9\u30a6\u30a7\u30a2\u304b\u3089\u69cb\u6210\u3055\u308c\u3001\u540c\u3058\u30cf\u30a4\u30d1\u30fc\u30d0\u30a4\u30b6\u30fc\u3092\u5b9f\u884c\u3057\u3001\u540c\u3058\u30b5\u30d6\u30cd\u30c3\u30c8\u4e0a\u306b\u3042\u308a\u3001\u540c\u3058\u5171\u6709\u30b9\u30c8\u30ec\u30fc\u30b8\u306b\u30a2\u30af\u30bb\u30b9\u3057\u307e\u3059\u3002\u5404\u30af\u30e9\u30b9\u30bf\u30fc\u306f 1 \u3064\u4ee5\u4e0a\u306e\u30db\u30b9\u30c8\u3068 1 \u3064\u4ee5\u4e0a\u306e\u30d7\u30e9\u30a4\u30de\u30ea \u30b9\u30c8\u30ec\u30fc\u30b8 \u30b5\u30fc\u30d0\u30fc\u304b\u3089\u69cb\u6210\u3055\u308c\u307e\u3059\u3002 +message.desc.host=\u5404\u30af\u30e9\u30b9\u30bf\u30fc\u306b\u306f\u5c11\u306a\u304f\u3068\u3082 1 \u3064\u3001\u30b2\u30b9\u30c8 VM \u3092\u5b9f\u884c\u3059\u308b\u305f\u3081\u306e\u30db\u30b9\u30c8 (\u30b3\u30f3\u30d4\u30e5\u30fc\u30bf\u30fc) \u304c\u5fc5\u8981\u3067\u3059\u3002\u4eca\u3053\u3053\u3067\u6700\u521d\u306e\u30db\u30b9\u30c8\u3092\u8ffd\u52a0\u3057\u307e\u3059\u3002CloudStack \u3067\u30db\u30b9\u30c8\u3092\u6a5f\u80fd\u3055\u305b\u308b\u306b\u306f\u3001\u30db\u30b9\u30c8\u306b\u30cf\u30a4\u30d1\u30fc\u30d0\u30a4\u30b6\u30fc\u3092\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\u3057\u3066 IP \u30a2\u30c9\u30ec\u30b9\u3092\u5272\u308a\u5f53\u3066\u3001\u30db\u30b9\u30c8\u304c CloudStack \u7ba1\u7406\u30b5\u30fc\u30d0\u30fc\u306b\u63a5\u7d9a\u3057\u3066\u3044\u308b\u3053\u3068\u3092\u78ba\u8a8d\u3057\u307e\u3059\u3002

\u30db\u30b9\u30c8\u306e DNS \u540d\u307e\u305f\u306f IP \u30a2\u30c9\u30ec\u30b9\u3001\u30e6\u30fc\u30b6\u30fc\u540d (\u901a\u5e38\u306f root) \u3068\u30d1\u30b9\u30ef\u30fc\u30c9\u3001\u304a\u3088\u3073\u30db\u30b9\u30c8\u306e\u5206\u985e\u306b\u4f7f\u7528\u3059\u308b\u30e9\u30d9\u30eb\u3092\u5165\u529b\u3057\u3066\u304f\u3060\u3055\u3044\u3002 +message.desc.primary.storage=\u5404\u30af\u30e9\u30b9\u30bf\u30fc\u306b\u306f\u5c11\u306a\u304f\u3068\u3082 1 \u3064\u3001\u30d7\u30e9\u30a4\u30de\u30ea \u30b9\u30c8\u30ec\u30fc\u30b8 \u30b5\u30fc\u30d0\u30fc\u304c\u5fc5\u8981\u3067\u3059\u3002\u4eca\u3053\u3053\u3067\u6700\u521d\u306e\u30b5\u30fc\u30d0\u30fc\u3092\u8ffd\u52a0\u3057\u307e\u3059\u3002\u30d7\u30e9\u30a4\u30de\u30ea \u30b9\u30c8\u30ec\u30fc\u30b8\u306f\u3001\u30af\u30e9\u30b9\u30bf\u30fc\u5185\u306e\u30db\u30b9\u30c8\u4e0a\u3067\u52d5\u4f5c\u3059\u308b\u3059\u3079\u3066\u306e VM \u306e\u30c7\u30a3\u30b9\u30af \u30dc\u30ea\u30e5\u30fc\u30e0\u3092\u683c\u7d0d\u3057\u307e\u3059\u3002\u57fa\u790e\u3068\u306a\u308b\u30cf\u30a4\u30d1\u30fc\u30d0\u30a4\u30b6\u30fc\u3067\u30b5\u30dd\u30fc\u30c8\u3055\u308c\u308b\u3001\u6a19\u6e96\u306b\u6e96\u62e0\u3057\u305f\u30d7\u30ed\u30c8\u30b3\u30eb\u3092\u4f7f\u7528\u3057\u3066\u304f\u3060\u3055\u3044\u3002 +message.desc.secondary.storage=\u5404\u30be\u30fc\u30f3\u306b\u306f\u5c11\u306a\u304f\u3068\u3082 1 \u3064\u3001NFS \u3064\u307e\u308a\u30bb\u30ab\u30f3\u30c0\u30ea \u30b9\u30c8\u30ec\u30fc\u30b8 \u30b5\u30fc\u30d0\u30fc\u304c\u5fc5\u8981\u3067\u3059\u3002\u4eca\u3053\u3053\u3067\u6700\u521d\u306e\u30b5\u30fc\u30d0\u30fc\u3092\u8ffd\u52a0\u3057\u307e\u3059\u3002\u30bb\u30ab\u30f3\u30c0\u30ea \u30b9\u30c8\u30ec\u30fc\u30b8\u306f VM \u30c6\u30f3\u30d7\u30ec\u30fc\u30c8\u3001ISO \u30a4\u30e1\u30fc\u30b8\u3001\u304a\u3088\u3073VM \u30c7\u30a3\u30b9\u30af \u30dc\u30ea\u30e5\u30fc\u30e0\u306e\u30b9\u30ca\u30c3\u30d7\u30b7\u30e7\u30c3\u30c8\u3092\u683c\u7d0d\u3057\u307e\u3059\u3002\u3053\u306e\u30b5\u30fc\u30d0\u30fc\u306f\u30be\u30fc\u30f3\u5185\u306e\u3059\u3079\u3066\u306e\u30db\u30b9\u30c8\u3067\u4f7f\u7528\u3067\u304d\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002

IP \u30a2\u30c9\u30ec\u30b9\u3068\u30a8\u30af\u30b9\u30dd\u30fc\u30c8\u3055\u308c\u305f\u30d1\u30b9\u3092\u5165\u529b\u3057\u3066\u304f\u3060\u3055\u3044\u3002 +message.desc.zone=\u30be\u30fc\u30f3\u306f CloudStack \u74b0\u5883\u5185\u306e\u6700\u5927\u306e\u7d44\u7e54\u5358\u4f4d\u3067\u3001\u901a\u5e38\u3001\u5358\u4e00\u306e\u30c7\u30fc\u30bf\u30bb\u30f3\u30bf\u30fc\u306b\u76f8\u5f53\u3057\u307e\u3059\u3002\u30be\u30fc\u30f3\u306b\u3088\u3063\u3066\u7269\u7406\u7684\u306a\u5206\u96e2\u3068\u5197\u9577\u6027\u304c\u63d0\u4f9b\u3055\u308c\u307e\u3059\u3002\u30be\u30fc\u30f3\u306f 1 \u3064\u4ee5\u4e0a\u306e\u30dd\u30c3\u30c9 (\u5404\u30dd\u30c3\u30c9\u306f\u30db\u30b9\u30c8\u3068\u30d7\u30e9\u30a4\u30de\u30ea \u30b9\u30c8\u30ec\u30fc\u30b8 \u30b5\u30fc\u30d0\u30fc\u304b\u3089\u69cb\u6210\u3055\u308c\u307e\u3059) \u3068\u3001\u30be\u30fc\u30f3\u5185\u306e\u3059\u3079\u3066\u306e\u30dd\u30c3\u30c9\u3067\u5171\u6709\u3055\u308c\u308b\u30bb\u30ab\u30f3\u30c0\u30ea \u30b9\u30c8\u30ec\u30fc\u30b8 \u30b5\u30fc\u30d0\u30fc\u304b\u3089\u69cb\u6210\u3055\u308c\u307e\u3059\u3002 +message.detach.disk=\u3053\u306e\u30c7\u30a3\u30b9\u30af\u3092\u30c7\u30bf\u30c3\u30c1\u3057\u3066\u3082\u3088\u308d\u3057\u3044\u3067\u3059\u304b? +message.detach.iso.confirm=\u3053\u306e\u4eee\u60f3\u30a4\u30f3\u30b9\u30bf\u30f3\u30b9\u304b\u3089 ISO \u30d5\u30a1\u30a4\u30eb\u3092\u30c7\u30bf\u30c3\u30c1\u3057\u3066\u3082\u3088\u308d\u3057\u3044\u3067\u3059\u304b? +message.disable.account=\u3053\u306e\u30a2\u30ab\u30a6\u30f3\u30c8\u3092\u7121\u52b9\u306b\u3057\u3066\u3082\u3088\u308d\u3057\u3044\u3067\u3059\u304b? \u3053\u306e\u30a2\u30ab\u30a6\u30f3\u30c8\u306e\u3059\u3079\u3066\u306e\u30e6\u30fc\u30b6\u30fc\u304c\u30af\u30e9\u30a6\u30c9 \u30ea\u30bd\u30fc\u30b9\u306b\u30a2\u30af\u30bb\u30b9\u3067\u304d\u306a\u304f\u306a\u308a\u307e\u3059\u3002\u5b9f\u884c\u4e2d\u306e\u3059\u3079\u3066\u306e\u4eee\u60f3\u30de\u30b7\u30f3\u304c\u4eca\u3059\u3050\u306b\u30b7\u30e3\u30c3\u30c8\u30c0\u30a6\u30f3\u3055\u308c\u307e\u3059\u3002 +message.disable.snapshot.policy=\u73fe\u5728\u306e\u30b9\u30ca\u30c3\u30d7\u30b7\u30e7\u30c3\u30c8 \u30dd\u30ea\u30b7\u30fc\u3092\u7121\u52b9\u306b\u3057\u307e\u3057\u305f\u3002 +message.disable.user=\u3053\u306e\u30e6\u30fc\u30b6\u30fc\u3092\u7121\u52b9\u306b\u3057\u3066\u3082\u3088\u308d\u3057\u3044\u3067\u3059\u304b? +message.disable.vpn.access=VPN \u30a2\u30af\u30bb\u30b9\u3092\u7121\u52b9\u306b\u3057\u3066\u3082\u3088\u308d\u3057\u3044\u3067\u3059\u304b? +message.disable.vpn=VPN \u3092\u7121\u52b9\u306b\u3057\u3066\u3082\u3088\u308d\u3057\u3044\u3067\u3059\u304b? +message.download.ISO=ISO \u3092\u30c0\u30a6\u30f3\u30ed\u30fc\u30c9\u3059\u308b\u306b\u306f 00000 \u3092\u30af\u30ea\u30c3\u30af\u3057\u307e\u3059 +message.download.template=\u30c6\u30f3\u30d7\u30ec\u30fc\u30c8\u3092\u30c0\u30a6\u30f3\u30ed\u30fc\u30c9\u3059\u308b\u306b\u306f 00000 \u3092\u30af\u30ea\u30c3\u30af\u3057\u307e\u3059 +message.download.volume.confirm=\u3053\u306e\u30dc\u30ea\u30e5\u30fc\u30e0\u3092\u30c0\u30a6\u30f3\u30ed\u30fc\u30c9\u3057\u3066\u3082\u3088\u308d\u3057\u3044\u3067\u3059\u304b? +message.download.volume=\u30dc\u30ea\u30e5\u30fc\u30e0\u3092\u30c0\u30a6\u30f3\u30ed\u30fc\u30c9\u3059\u308b\u306b\u306f 00000 \u3092\u30af\u30ea\u30c3\u30af\u3057\u307e\u3059 +message.edit.account=\u7de8\u96c6 (\u300c-1\u300d\u306f\u3001\u30ea\u30bd\u30fc\u30b9\u4f5c\u6210\u306e\u91cf\u306b\u5236\u9650\u304c\u306a\u3044\u3053\u3068\u3092\u793a\u3057\u307e\u3059) +message.edit.confirm=[\u4fdd\u5b58] \u3092\u30af\u30ea\u30c3\u30af\u3059\u308b\u524d\u306b\u5909\u66f4\u5185\u5bb9\u3092\u78ba\u8a8d\u3057\u3066\u304f\u3060\u3055\u3044\u3002 +message.edit.limits=\u6b21\u306e\u30ea\u30bd\u30fc\u30b9\u306b\u5236\u9650\u3092\u6307\u5b9a\u3057\u3066\u304f\u3060\u3055\u3044\u3002\u300c-1\u300d\u306f\u3001\u30ea\u30bd\u30fc\u30b9\u4f5c\u6210\u306b\u5236\u9650\u304c\u306a\u3044\u3053\u3068\u3092\u793a\u3057\u307e\u3059\u3002 +message.edit.traffic.type=\u3053\u306e\u30c8\u30e9\u30d5\u30a3\u30c3\u30af\u306e\u7a2e\u985e\u306b\u95a2\u9023\u4ed8\u3051\u308b\u30c8\u30e9\u30d5\u30a3\u30c3\u30af \u30e9\u30d9\u30eb\u3092\u6307\u5b9a\u3057\u3066\u304f\u3060\u3055\u3044\u3002 +message.enable.account=\u3053\u306e\u30a2\u30ab\u30a6\u30f3\u30c8\u3092\u6709\u52b9\u306b\u3057\u3066\u3082\u3088\u308d\u3057\u3044\u3067\u3059\u304b? +message.enable.user=\u3053\u306e\u30e6\u30fc\u30b6\u30fc\u3092\u6709\u52b9\u306b\u3057\u3066\u3082\u3088\u308d\u3057\u3044\u3067\u3059\u304b? +message.enable.vpn.access=\u73fe\u5728\u3053\u306e IP \u30a2\u30c9\u30ec\u30b9\u306b\u5bfe\u3059\u308b VPN \u306f\u7121\u52b9\u3067\u3059\u3002VPN \u30a2\u30af\u30bb\u30b9\u3092\u6709\u52b9\u306b\u3057\u3066\u3082\u3088\u308d\u3057\u3044\u3067\u3059\u304b? +message.enable.vpn=\u3053\u306e IP \u30a2\u30c9\u30ec\u30b9\u306b\u5bfe\u3059\u308b VPN \u30a2\u30af\u30bb\u30b9\u3092\u6709\u52b9\u306b\u3057\u3066\u3082\u3088\u308d\u3057\u3044\u3067\u3059\u304b? +message.enabled.vpn.ip.sec=IPSec \u4e8b\u524d\u5171\u6709\u30ad\u30fc: +message.enabled.vpn=\u73fe\u5728\u3001VPN \u30a2\u30af\u30bb\u30b9\u304c\u6709\u52b9\u306b\u306a\u3063\u3066\u3044\u307e\u3059\u3002\u6b21\u306e IP \u30a2\u30c9\u30ec\u30b9\u7d4c\u7531\u3067\u30a2\u30af\u30bb\u30b9\u3067\u304d\u307e\u3059\u3002 +message.enabling.security.group.provider=\u30bb\u30ad\u30e5\u30ea\u30c6\u30a3 \u30b0\u30eb\u30fc\u30d7 \u30d7\u30ed\u30d0\u30a4\u30c0\u30fc\u3092\u6709\u52b9\u306b\u3057\u3066\u3044\u307e\u3059 +message.enabling.zone=\u30be\u30fc\u30f3\u3092\u6709\u52b9\u306b\u3057\u3066\u3044\u307e\u3059 +message.enter.token=\u96fb\u5b50\u30e1\u30fc\u30eb\u306e\u62db\u5f85\u72b6\u306b\u8a18\u8f09\u3055\u308c\u3066\u3044\u308b\u30c8\u30fc\u30af\u30f3\u3092\u5165\u529b\u3057\u3066\u304f\u3060\u3055\u3044\u3002 +message.generate.keys=\u3053\u306e\u30e6\u30fc\u30b6\u30fc\u306b\u65b0\u3057\u3044\u30ad\u30fc\u3092\u751f\u6210\u3057\u3066\u3082\u3088\u308d\u3057\u3044\u3067\u3059\u304b? +message.guest.traffic.in.advanced.zone=\u30b2\u30b9\u30c8 \u30cd\u30c3\u30c8\u30ef\u30fc\u30af \u30c8\u30e9\u30d5\u30a3\u30c3\u30af\u306f\u3001\u30a8\u30f3\u30c9 \u30e6\u30fc\u30b6\u30fc\u306e\u4eee\u60f3\u30de\u30b7\u30f3\u9593\u306e\u901a\u4fe1\u3067\u3059\u3002\u5404\u7269\u7406\u30cd\u30c3\u30c8\u30ef\u30fc\u30af\u306e\u30b2\u30b9\u30c8 \u30c8\u30e9\u30d5\u30a3\u30c3\u30af\u3092\u901a\u4fe1\u3059\u308b\u305f\u3081\u306e VLAN ID \u306e\u7bc4\u56f2\u3092\u6307\u5b9a\u3057\u3066\u304f\u3060\u3055\u3044\u3002 +message.guest.traffic.in.basic.zone=\u30b2\u30b9\u30c8 \u30cd\u30c3\u30c8\u30ef\u30fc\u30af \u30c8\u30e9\u30d5\u30a3\u30c3\u30af\u306f\u3001\u30a8\u30f3\u30c9 \u30e6\u30fc\u30b6\u30fc\u306e\u4eee\u60f3\u30de\u30b7\u30f3\u9593\u306e\u901a\u4fe1\u3067\u3059\u3002CloudStack \u3067\u30b2\u30b9\u30c8 VM \u306b\u5272\u308a\u5f53\u3066\u3089\u308c\u308b IP \u30a2\u30c9\u30ec\u30b9\u306e\u7bc4\u56f2\u3092\u6307\u5b9a\u3057\u3066\u304f\u3060\u3055\u3044\u3002\u3053\u306e\u7bc4\u56f2\u304c\u4e88\u7d04\u6e08\u307f\u306e\u30b7\u30b9\u30c6\u30e0 IP \u30a2\u30c9\u30ec\u30b9\u306e\u7bc4\u56f2\u3068\u91cd\u8907\u3057\u306a\u3044\u3088\u3046\u306b\u6ce8\u610f\u3057\u3066\u304f\u3060\u3055\u3044\u3002 +message.installWizard.click.retry=\u8d77\u52d5\u3092\u518d\u8a66\u884c\u3059\u308b\u306b\u306f\u30dc\u30bf\u30f3\u3092\u30af\u30ea\u30c3\u30af\u3057\u3066\u304f\u3060\u3055\u3044\u3002 +message.installWizard.copy.whatIsACluster=\u30af\u30e9\u30b9\u30bf\u30fc\u306f\u30db\u30b9\u30c8\u3092\u30b0\u30eb\u30fc\u30d7\u5316\u3059\u308b\u65b9\u6cd5\u3067\u3059\u30021 \u3064\u306e\u30af\u30e9\u30b9\u30bf\u30fc\u5185\u306e\u30db\u30b9\u30c8\u306f\u3059\u3079\u3066\u540c\u4e00\u306e\u30cf\u30fc\u30c9\u30a6\u30a7\u30a2\u304b\u3089\u69cb\u6210\u3055\u308c\u3001\u540c\u3058\u30cf\u30a4\u30d1\u30fc\u30d0\u30a4\u30b6\u30fc\u3092\u5b9f\u884c\u3057\u3001\u540c\u3058\u30b5\u30d6\u30cd\u30c3\u30c8\u4e0a\u306b\u3042\u308a\u3001\u540c\u3058\u5171\u6709\u30b9\u30c8\u30ec\u30fc\u30b8\u306b\u30a2\u30af\u30bb\u30b9\u3057\u307e\u3059\u3002\u540c\u3058\u30af\u30e9\u30b9\u30bf\u30fc\u5185\u306e\u30db\u30b9\u30c8\u9593\u3067\u306f\u3001\u30e6\u30fc\u30b6\u30fc\u3078\u306e\u30b5\u30fc\u30d3\u30b9\u3092\u4e2d\u65ad\u305b\u305a\u306b\u3001\u4eee\u60f3\u30de\u30b7\u30f3 \u30a4\u30f3\u30b9\u30bf\u30f3\u30b9\u3092\u30e9\u30a4\u30d6 \u30de\u30a4\u30b0\u30ec\u30fc\u30b7\u30e7\u30f3\u3059\u308b\u3053\u3068\u304c\u3067\u304d\u307e\u3059\u3002\u30af\u30e9\u30b9\u30bf\u30fc\u306f CloudStack&\#8482; \u74b0\u5883\u5185\u306e 3 \u756a\u76ee\u306b\u5927\u304d\u306a\u7d44\u7e54\u5358\u4f4d\u3067\u3059\u3002\u30af\u30e9\u30b9\u30bf\u30fc\u306f\u30dd\u30c3\u30c9\u306b\u542b\u307e\u308c\u3001\u30dd\u30c3\u30c9\u306f\u30be\u30fc\u30f3\u306b\u542b\u307e\u308c\u307e\u3059\u3002

CloudStack&\#8482; \u3067\u306f 1 \u3064\u306e\u30af\u30e9\u30a6\u30c9\u74b0\u5883\u306b\u8907\u6570\u306e\u30af\u30e9\u30b9\u30bf\u30fc\u3092\u8a2d\u5b9a\u3067\u304d\u307e\u3059\u304c\u3001\u57fa\u672c\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\u3067\u306f\u30af\u30e9\u30b9\u30bf\u30fc\u306f 1 \u3064\u3067\u3059\u3002 +message.installWizard.copy.whatIsAHost=\u30db\u30b9\u30c8\u306f\u5358\u4e00\u306e\u30b3\u30f3\u30d4\u30e5\u30fc\u30bf\u30fc\u3067\u3001\u30b2\u30b9\u30c8\u4eee\u60f3\u30de\u30b7\u30f3\u3092\u5b9f\u884c\u3059\u308b\u30b3\u30f3\u30d4\u30e5\u30fc\u30c6\u30a3\u30f3\u30b0 \u30ea\u30bd\u30fc\u30b9\u3092\u63d0\u4f9b\u3057\u307e\u3059\u3002\u30d9\u30a2 \u30e1\u30bf\u30eb \u30db\u30b9\u30c8\u3092\u9664\u3044\u3066\u3001\u5404\u30db\u30b9\u30c8\u306b\u306f\u30b2\u30b9\u30c8\u4eee\u60f3\u30de\u30b7\u30f3\u3092\u7ba1\u7406\u3059\u308b\u305f\u3081\u306e\u30cf\u30a4\u30d1\u30fc\u30d0\u30a4\u30b6\u30fc \u30bd\u30d5\u30c8\u30a6\u30a7\u30a2\u3092\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\u3057\u307e\u3059\u3002\u30d9\u30a2 \u30e1\u30bf\u30eb \u30db\u30b9\u30c8\u306b\u3064\u3044\u3066\u306f\u3001\u300e\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\u30ac\u30a4\u30c9\u4e0a\u7d1a\u7de8\u300f\u3067\u7279\u6b8a\u4f8b\u3068\u3057\u3066\u8aac\u660e\u3057\u307e\u3059\u3002\u305f\u3068\u3048\u3070\u3001KVM \u304c\u6709\u52b9\u306a Linux \u30b5\u30fc\u30d0\u30fc\u3001Citrix XenServer \u304c\u52d5\u4f5c\u3059\u308b\u30b5\u30fc\u30d0\u30fc\u3001\u304a\u3088\u3073 ESXi \u30b5\u30fc\u30d0\u30fc\u304c\u30db\u30b9\u30c8\u3067\u3059\u3002\u57fa\u672c\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\u3067\u306f\u3001XenServer \u307e\u305f\u306f KVM \u3092\u5b9f\u884c\u3059\u308b\u5358\u4e00\u306e\u30db\u30b9\u30c8\u3092\u4f7f\u7528\u3057\u307e\u3059\u3002

\u30db\u30b9\u30c8\u306f CloudStack&\#8482; \u74b0\u5883\u5185\u306e\u6700\u5c0f\u306e\u7d44\u7e54\u5358\u4f4d\u3067\u3059\u3002\u30db\u30b9\u30c8\u306f\u30af\u30e9\u30b9\u30bf\u30fc\u306b\u542b\u307e\u308c\u3001\u30af\u30e9\u30b9\u30bf\u30fc\u306f\u30dd\u30c3\u30c9\u306b\u542b\u307e\u308c\u3001\u30dd\u30c3\u30c9\u306f\u30be\u30fc\u30f3\u306b\u542b\u307e\u308c\u307e\u3059\u3002 +message.installWizard.copy.whatIsAPod=\u901a\u5e38\u30011 \u3064\u306e\u30dd\u30c3\u30c9\u306f\u5358\u4e00\u306e\u30e9\u30c3\u30af\u3092\u8868\u3057\u307e\u3059\u3002\u540c\u3058\u30dd\u30c3\u30c9\u5185\u306e\u30db\u30b9\u30c8\u306f\u540c\u3058\u30b5\u30d6\u30cd\u30c3\u30c8\u306b\u542b\u307e\u308c\u307e\u3059\u3002

\u30dd\u30c3\u30c9\u306f CloudStack&\#8482; \u74b0\u5883\u5185\u306e 2 \u756a\u76ee\u306b\u5927\u304d\u306a\u7d44\u7e54\u5358\u4f4d\u3067\u3059\u3002\u30dd\u30c3\u30c9\u306f\u30be\u30fc\u30f3\u306b\u542b\u307e\u308c\u307e\u3059\u3002\u5404\u30be\u30fc\u30f3\u306f 1 \u3064\u4ee5\u4e0a\u306e\u30dd\u30c3\u30c9\u3092\u542b\u3080\u3053\u3068\u304c\u3067\u304d\u307e\u3059\u3002\u57fa\u672c\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\u3067\u306f\u3001\u30be\u30fc\u30f3\u5185\u306e\u30dd\u30c3\u30c9\u306f 1 \u3064\u3067\u3059\u3002 +message.installWizard.copy.whatIsAZone=\u30be\u30fc\u30f3\u306f CloudStack&\#8482; \u74b0\u5883\u5185\u306e\u6700\u5927\u306e\u7d44\u7e54\u5358\u4f4d\u3067\u3059\u30021 \u3064\u306e\u30c7\u30fc\u30bf\u30bb\u30f3\u30bf\u30fc\u5185\u306b\u8907\u6570\u306e\u30be\u30fc\u30f3\u3092\u8a2d\u5b9a\u3067\u304d\u307e\u3059\u304c\u3001\u901a\u5e38\u3001\u30be\u30fc\u30f3\u306f\u5358\u4e00\u306e\u30c7\u30fc\u30bf\u30bb\u30f3\u30bf\u30fc\u306b\u76f8\u5f53\u3057\u307e\u3059\u3002\u30a4\u30f3\u30d5\u30e9\u30b9\u30c8\u30e9\u30af\u30c1\u30e3\u3092\u30be\u30fc\u30f3\u306b\u7d44\u7e54\u5316\u3059\u308b\u3068\u3001\u30be\u30fc\u30f3\u3092\u7269\u7406\u7684\u306b\u5206\u96e2\u3057\u3066\u5197\u9577\u5316\u3059\u308b\u3053\u3068\u304c\u3067\u304d\u307e\u3059\u3002\u305f\u3068\u3048\u3070\u3001\u5404\u30be\u30fc\u30f3\u306b\u96fb\u6e90\u3068\u30cd\u30c3\u30c8\u30ef\u30fc\u30af \u30a2\u30c3\u30d7\u30ea\u30f3\u30af\u3092\u914d\u5099\u3057\u307e\u3059\u3002\u5fc5\u9808\u3067\u306f\u3042\u308a\u307e\u305b\u3093\u304c\u3001\u30be\u30fc\u30f3\u306f\u9060\u9694\u5730\u306b\u5206\u6563\u3059\u308b\u3053\u3068\u304c\u3067\u304d\u307e\u3059\u3002 +message.installWizard.copy.whatIsCloudStack=CloudStack&\#8482; \u306f\u30b3\u30f3\u30d4\u30e5\u30fc\u30c6\u30a3\u30f3\u30b0 \u30ea\u30bd\u30fc\u30b9\u3092\u30d7\u30fc\u30eb\u3059\u308b\u30bd\u30d5\u30c8\u30a6\u30a7\u30a2 \u30d7\u30e9\u30c3\u30c8\u30d5\u30a9\u30fc\u30e0\u3067\u3001\u30d1\u30d6\u30ea\u30c3\u30af\u3001\u30d7\u30e9\u30a4\u30d9\u30fc\u30c8\u3001\u304a\u3088\u3073\u30cf\u30a4\u30d6\u30ea\u30c3\u30c9\u306e Infrastructure as a Service (IaaS) \u30af\u30e9\u30a6\u30c9\u3092\u69cb\u7bc9\u3059\u308b\u3053\u3068\u304c\u3067\u304d\u307e\u3059\u3002CloudStack&\#8482; \u3092\u4f7f\u7528\u3057\u3066\u3001\u30af\u30e9\u30a6\u30c9 \u30a4\u30f3\u30d5\u30e9\u30b9\u30c8\u30e9\u30af\u30c1\u30e3\u3092\u69cb\u6210\u3059\u308b\u30cd\u30c3\u30c8\u30ef\u30fc\u30af\u3001\u30b9\u30c8\u30ec\u30fc\u30b8\u3001\u304a\u3088\u3073\u30b3\u30f3\u30d4\u30e5\u30fc\u30c6\u30a3\u30f3\u30b0 \u30ce\u30fc\u30c9\u3092\u7ba1\u7406\u3057\u3001\u30af\u30e9\u30a6\u30c9 \u30b3\u30f3\u30d4\u30e5\u30fc\u30c6\u30a3\u30f3\u30b0\u74b0\u5883\u3092\u5c55\u958b\u3001\u7ba1\u7406\u3001\u304a\u3088\u3073\u69cb\u6210\u3057\u307e\u3059\u3002

CloudStack&\#8482; \u306f\u30b3\u30e2\u30c7\u30a3\u30c6\u30a3\u5316\u3057\u305f\u30cf\u30fc\u30c9\u30a6\u30a7\u30a2\u4e0a\u3067\u52d5\u4f5c\u3059\u308b\u500b\u5225\u306e\u4eee\u60f3\u30de\u30b7\u30f3 \u30a4\u30e1\u30fc\u30b8\u3092\u8d85\u3048\u3066\u62e1\u5f35\u3059\u308b\u3053\u3068\u304c\u3067\u304d\u3001\u7c21\u5358\u306a\u8a2d\u5b9a\u3067\u52d5\u4f5c\u3059\u308b\u30af\u30e9\u30a6\u30c9 \u30a4\u30f3\u30d5\u30e9\u30b9\u30c8\u30e9\u30af\u30c1\u30e3\u306e\u30bd\u30d5\u30c8\u30a6\u30a7\u30a2 \u30b9\u30bf\u30c3\u30af\u306b\u3088\u3063\u3066\u3001\u4eee\u60f3\u30c7\u30fc\u30bf\u30bb\u30f3\u30bf\u30fc\u3064\u307e\u308a\u591a\u5c64\u578b\u306e\u30de\u30eb\u30c1\u30c6\u30ca\u30f3\u30c8 \u30af\u30e9\u30a6\u30c9 \u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u3092\u30b5\u30fc\u30d3\u30b9\u3068\u3057\u3066\u69cb\u7bc9\u3057\u3001\u5c55\u958b\u3057\u3001\u7ba1\u7406\u3059\u308b\u305f\u3081\u306b\u4e0d\u53ef\u6b20\u306a\u30b3\u30f3\u30dd\u30fc\u30cd\u30f3\u30c8\u304c\u3059\u3079\u3066\u63d0\u4f9b\u3055\u308c\u307e\u3059\u3002\u30aa\u30fc\u30d7\u30f3 \u30bd\u30fc\u30b9 \u30d0\u30fc\u30b8\u30e7\u30f3\u3068\u30d7\u30ec\u30df\u30a2\u30e0 \u30d0\u30fc\u30b8\u30e7\u30f3\u306e\u4e21\u65b9\u304c\u63d0\u4f9b\u3055\u308c\u307e\u3059\u304c\u3001\u30aa\u30fc\u30d7\u30f3 \u30bd\u30fc\u30b9 \u30d0\u30fc\u30b8\u30e7\u30f3\u3067\u3082\u307b\u3068\u3093\u3069\u306e\u6a5f\u80fd\u3092\u4f7f\u7528\u3067\u304d\u307e\u3059\u3002 +message.installWizard.copy.whatIsPrimaryStorage=CloudStack&\#8482; \u306e\u30af\u30e9\u30a6\u30c9 \u30a4\u30f3\u30d5\u30e9\u30b9\u30c8\u30e9\u30af\u30c1\u30e3\u3067\u306f\u3001\u30d7\u30e9\u30a4\u30de\u30ea \u30b9\u30c8\u30ec\u30fc\u30b8\u3068\u30bb\u30ab\u30f3\u30c0\u30ea \u30b9\u30c8\u30ec\u30fc\u30b8\u306e 2 \u7a2e\u985e\u306e\u30b9\u30c8\u30ec\u30fc\u30b8\u3092\u4f7f\u7528\u3057\u307e\u3059\u3002\u3069\u3061\u3089\u306e\u30b9\u30c8\u30ec\u30fc\u30b8\u306b\u3082\u3001iSCSI\u3001NFS \u30b5\u30fc\u30d0\u30fc\u3001\u307e\u305f\u306f\u30ed\u30fc\u30ab\u30eb \u30c7\u30a3\u30b9\u30af\u3092\u4f7f\u7528\u3067\u304d\u307e\u3059\u3002

\u30d7\u30e9\u30a4\u30de\u30ea \u30b9\u30c8\u30ec\u30fc\u30b8\u306f\u30af\u30e9\u30b9\u30bf\u30fc\u306b\u95a2\u9023\u4ed8\u3051\u3089\u308c\u3001\u305d\u306e\u30af\u30e9\u30b9\u30bf\u30fc\u5185\u306e\u30db\u30b9\u30c8\u3067\u52d5\u4f5c\u3059\u308b\u3059\u3079\u3066\u306e VM \u306e\u5404\u30b2\u30b9\u30c8 VM \u306e\u30c7\u30a3\u30b9\u30af \u30dc\u30ea\u30e5\u30fc\u30e0\u3092\u683c\u7d0d\u3057\u307e\u3059\u3002\u901a\u5e38\u3001\u30d7\u30e9\u30a4\u30de\u30ea \u30b9\u30c8\u30ec\u30fc\u30b8 \u30b5\u30fc\u30d0\u30fc\u306f\u30db\u30b9\u30c8\u306e\u8fd1\u304f\u306b\u8a2d\u7f6e\u3057\u307e\u3059\u3002 +message.installWizard.copy.whatIsSecondaryStorage=\u30bb\u30ab\u30f3\u30c0\u30ea \u30b9\u30c8\u30ec\u30fc\u30b8\u306f\u30be\u30fc\u30f3\u3068\u95a2\u9023\u4ed8\u3051\u3089\u308c\u3001\u6b21\u306e\u9805\u76ee\u3092\u683c\u7d0d\u3057\u307e\u3059\u3002
  • \u30c6\u30f3\u30d7\u30ec\u30fc\u30c8 - VM \u306e\u8d77\u52d5\u306b\u4f7f\u7528\u3067\u304d\u308b OS \u30a4\u30e1\u30fc\u30b8\u3067\u3001\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u306e\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\u306a\u3069\u8ffd\u52a0\u306e\u69cb\u6210\u3092\u542b\u3081\u308b\u3053\u3068\u304c\u3067\u304d\u307e\u3059\u3002
  • ISO \u30a4\u30e1\u30fc\u30b8 - \u8d77\u52d5\u53ef\u80fd\u307e\u305f\u306f\u8d77\u52d5\u4e0d\u53ef\u306e OS \u30a4\u30e1\u30fc\u30b8\u3067\u3059\u3002
  • \u30c7\u30a3\u30b9\u30af \u30dc\u30ea\u30e5\u30fc\u30e0\u306e\u30b9\u30ca\u30c3\u30d7\u30b7\u30e7\u30c3\u30c8 - VM \u30c7\u30fc\u30bf\u306e\u4fdd\u5b58\u30b3\u30d4\u30fc\u3067\u3059\u3002\u30c7\u30fc\u30bf\u306e\u5fa9\u5143\u307e\u305f\u306f\u65b0\u3057\u3044\u30c6\u30f3\u30d7\u30ec\u30fc\u30c8\u306e\u4f5c\u6210\u306b\u4f7f\u7528\u3067\u304d\u307e\u3059\u3002
+message.installWizard.now.building=\u30af\u30e9\u30a6\u30c9\u3092\u69cb\u7bc9\u3057\u3066\u3044\u307e\u3059... +message.installWizard.tooltip.addCluster.name=\u30af\u30e9\u30b9\u30bf\u30fc\u306e\u540d\u524d\u3067\u3059\u3002CloudStack \u3067\u4f7f\u7528\u3055\u308c\u3066\u3044\u306a\u3044\u3001\u4efb\u610f\u306e\u30c6\u30ad\u30b9\u30c8\u3092\u6307\u5b9a\u3067\u304d\u307e\u3059\u3002 +message.installWizard.tooltip.addHost.hostname=\u30db\u30b9\u30c8\u306e DNS \u540d\u307e\u305f\u306f IP \u30a2\u30c9\u30ec\u30b9\u3067\u3059\u3002 +message.installWizard.tooltip.addHost.password=XenServer \u5074\u3067\u6307\u5b9a\u3057\u305f\u3001\u4e0a\u306e\u30e6\u30fc\u30b6\u30fc\u540d\u306b\u5bfe\u3059\u308b\u30d1\u30b9\u30ef\u30fc\u30c9\u3067\u3059\u3002 +message.installWizard.tooltip.addHost.username=\u901a\u5e38\u306f root \u3067\u3059\u3002 +message.installWizard.tooltip.addPod.name=\u30dd\u30c3\u30c9\u306e\u540d\u524d\u3067\u3059\u3002 +message.installWizard.tooltip.addPod.reservedSystemEndIp=\u3053\u308c\u306f\u3001\u30bb\u30ab\u30f3\u30c0\u30ea \u30b9\u30c8\u30ec\u30fc\u30b8 VM \u304a\u3088\u3073\u30b3\u30f3\u30bd\u30fc\u30eb \u30d7\u30ed\u30ad\u30b7 VM \u3092\u7ba1\u7406\u3059\u308b\u305f\u3081\u306b CloudStack \u3067\u4f7f\u7528\u3059\u308b\u3001\u30d7\u30e9\u30a4\u30d9\u30fc\u30c8 \u30cd\u30c3\u30c8\u30ef\u30fc\u30af\u5185\u306e IP \u30a2\u30c9\u30ec\u30b9\u306e\u7bc4\u56f2\u3067\u3059\u3002\u3053\u308c\u3089\u306e IP \u30a2\u30c9\u30ec\u30b9\u306f\u30b3\u30f3\u30d4\u30e5\u30fc\u30c6\u30a3\u30f3\u30b0 \u30b5\u30fc\u30d0\u30fc\u3068\u540c\u3058\u30b5\u30d6\u30cd\u30c3\u30c8\u304b\u3089\u5272\u308a\u5f53\u3066\u307e\u3059\u3002 +message.installWizard.tooltip.addPod.reservedSystemGateway=\u3053\u306e\u30dd\u30c3\u30c9\u5185\u306e\u30db\u30b9\u30c8\u306e\u30b2\u30fc\u30c8\u30a6\u30a7\u30a4\u3067\u3059\u3002 +message.installWizard.tooltip.addPod.reservedSystemNetmask=\u30b2\u30b9\u30c8\u306e\u4f7f\u7528\u3059\u308b\u30b5\u30d6\u30cd\u30c3\u30c8\u4e0a\u3067\u4f7f\u7528\u3055\u308c\u308b\u30cd\u30c3\u30c8\u30de\u30b9\u30af\u3067\u3059\u3002 +message.installWizard.tooltip.addPod.reservedSystemStartIp=\u3053\u308c\u306f\u3001\u30bb\u30ab\u30f3\u30c0\u30ea \u30b9\u30c8\u30ec\u30fc\u30b8 VM \u304a\u3088\u3073\u30b3\u30f3\u30bd\u30fc\u30eb \u30d7\u30ed\u30ad\u30b7 VM \u3092\u7ba1\u7406\u3059\u308b\u305f\u3081\u306b CloudStack \u3067\u4f7f\u7528\u3059\u308b\u3001\u30d7\u30e9\u30a4\u30d9\u30fc\u30c8 \u30cd\u30c3\u30c8\u30ef\u30fc\u30af\u5185\u306e IP \u30a2\u30c9\u30ec\u30b9\u306e\u7bc4\u56f2\u3067\u3059\u3002\u3053\u308c\u3089\u306e IP \u30a2\u30c9\u30ec\u30b9\u306f\u30b3\u30f3\u30d4\u30e5\u30fc\u30c6\u30a3\u30f3\u30b0 \u30b5\u30fc\u30d0\u30fc\u3068\u540c\u3058\u30b5\u30d6\u30cd\u30c3\u30c8\u304b\u3089\u5272\u308a\u5f53\u3066\u307e\u3059\u3002 +message.installWizard.tooltip.addPrimaryStorage.name=\u30b9\u30c8\u30ec\u30fc\u30b8 \u30c7\u30d0\u30a4\u30b9\u306e\u540d\u524d\u3067\u3059\u3002 +message.installWizard.tooltip.addPrimaryStorage.path=(NFS \u306e\u5834\u5408) \u30b5\u30fc\u30d0\u30fc\u304b\u3089\u30a8\u30af\u30b9\u30dd\u30fc\u30c8\u3055\u308c\u305f\u30d1\u30b9\u3067\u3059\u3002(SharedMountPoint \u306e\u5834\u5408) \u30d1\u30b9\u3067\u3059\u3002KVM \u3067\u306f\u3053\u306e\u30d7\u30e9\u30a4\u30de\u30ea \u30b9\u30c8\u30ec\u30fc\u30b8\u304c\u30de\u30a6\u30f3\u30c8\u3055\u308c\u308b\u5404\u30db\u30b9\u30c8\u4e0a\u306e\u30d1\u30b9\u3067\u3059\u3002\u305f\u3068\u3048\u3070\u3001/mnt/primary \u3067\u3059\u3002 +message.installWizard.tooltip.addPrimaryStorage.server=(NFS\u3001iSCSI\u3001\u307e\u305f\u306f PreSetup \u306e\u5834\u5408) \u30b9\u30c8\u30ec\u30fc\u30b8 \u30c7\u30d0\u30a4\u30b9\u306e IP \u30a2\u30c9\u30ec\u30b9\u307e\u305f\u306f DNS \u540d\u3067\u3059\u3002 +message.installWizard.tooltip.addSecondaryStorage.nfsServer=\u30bb\u30ab\u30f3\u30c0\u30ea \u30b9\u30c8\u30ec\u30fc\u30b8\u3092\u30db\u30b9\u30c8\u3059\u308b NFS \u30b5\u30fc\u30d0\u30fc\u306e IP \u30a2\u30c9\u30ec\u30b9\u3067\u3059\u3002 +message.installWizard.tooltip.addSecondaryStorage.path=\u4e0a\u306b\u6307\u5b9a\u3057\u305f\u30b5\u30fc\u30d0\u30fc\u306b\u5b58\u5728\u3059\u308b\u3001\u30a8\u30af\u30b9\u30dd\u30fc\u30c8\u3055\u308c\u305f\u30d1\u30b9\u3067\u3059\u3002 +message.installWizard.tooltip.addZone.dns1=\u30be\u30fc\u30f3\u5185\u306e\u30b2\u30b9\u30c8 VM \u3067\u4f7f\u7528\u3059\u308b DNS \u30b5\u30fc\u30d0\u30fc\u3067\u3059\u3002\u3053\u308c\u3089\u306e DNS \u30b5\u30fc\u30d0\u30fc\u306b\u306f\u3001\u5f8c\u3067\u8ffd\u52a0\u3059\u308b\u30d1\u30d6\u30ea\u30c3\u30af \u30cd\u30c3\u30c8\u30ef\u30fc\u30af\u7d4c\u7531\u3067\u30a2\u30af\u30bb\u30b9\u3057\u307e\u3059\u3002\u30be\u30fc\u30f3\u306e\u30d1\u30d6\u30ea\u30c3\u30af IP \u30a2\u30c9\u30ec\u30b9\u304b\u3089\u3001\u3053\u3053\u3067\u6307\u5b9a\u3059\u308b\u30d1\u30d6\u30ea\u30c3\u30af DNS \u30b5\u30fc\u30d0\u30fc\u306b\u901a\u4fe1\u3067\u304d\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002 +message.installWizard.tooltip.addZone.dns2=\u30be\u30fc\u30f3\u5185\u306e\u30b2\u30b9\u30c8 VM \u3067\u4f7f\u7528\u3059\u308b DNS \u30b5\u30fc\u30d0\u30fc\u3067\u3059\u3002\u3053\u308c\u3089\u306e DNS \u30b5\u30fc\u30d0\u30fc\u306b\u306f\u3001\u5f8c\u3067\u8ffd\u52a0\u3059\u308b\u30d1\u30d6\u30ea\u30c3\u30af \u30cd\u30c3\u30c8\u30ef\u30fc\u30af\u7d4c\u7531\u3067\u30a2\u30af\u30bb\u30b9\u3057\u307e\u3059\u3002\u30be\u30fc\u30f3\u306e\u30d1\u30d6\u30ea\u30c3\u30af IP \u30a2\u30c9\u30ec\u30b9\u304b\u3089\u3001\u3053\u3053\u3067\u6307\u5b9a\u3059\u308b\u30d1\u30d6\u30ea\u30c3\u30af DNS \u30b5\u30fc\u30d0\u30fc\u306b\u901a\u4fe1\u3067\u304d\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002 +message.installWizard.tooltip.addZone.internaldns1=\u30be\u30fc\u30f3\u5185\u306e\u30b7\u30b9\u30c6\u30e0 VM \u3067\u4f7f\u7528\u3059\u308b DNS \u30b5\u30fc\u30d0\u30fc\u3067\u3059\u3002\u3053\u308c\u3089\u306e DNS \u30b5\u30fc\u30d0\u30fc\u306f\u3001\u30b7\u30b9\u30c6\u30e0 VM \u306e\u30d7\u30e9\u30a4\u30d9\u30fc\u30c8 \u30cd\u30c3\u30c8\u30ef\u30fc\u30af \u30a4\u30f3\u30bf\u30fc\u30d5\u30a7\u30a4\u30b9\u3092\u4ecb\u3057\u3066\u30a2\u30af\u30bb\u30b9\u3055\u308c\u307e\u3059\u3002\u30dd\u30c3\u30c9\u306e\u30d7\u30e9\u30a4\u30d9\u30fc\u30c8 IP \u30a2\u30c9\u30ec\u30b9\u304b\u3089\u3001\u3053\u3053\u3067\u6307\u5b9a\u3059\u308b DNS \u30b5\u30fc\u30d0\u30fc\u306b\u901a\u4fe1\u3067\u304d\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002 +message.installWizard.tooltip.addZone.internaldns2=\u30be\u30fc\u30f3\u5185\u306e\u30b7\u30b9\u30c6\u30e0 VM \u3067\u4f7f\u7528\u3059\u308b DNS \u30b5\u30fc\u30d0\u30fc\u3067\u3059\u3002\u3053\u308c\u3089\u306e DNS \u30b5\u30fc\u30d0\u30fc\u306f\u3001\u30b7\u30b9\u30c6\u30e0 VM \u306e\u30d7\u30e9\u30a4\u30d9\u30fc\u30c8 \u30cd\u30c3\u30c8\u30ef\u30fc\u30af \u30a4\u30f3\u30bf\u30fc\u30d5\u30a7\u30a4\u30b9\u3092\u4ecb\u3057\u3066\u30a2\u30af\u30bb\u30b9\u3055\u308c\u307e\u3059\u3002\u30dd\u30c3\u30c9\u306e\u30d7\u30e9\u30a4\u30d9\u30fc\u30c8 IP \u30a2\u30c9\u30ec\u30b9\u304b\u3089\u3001\u3053\u3053\u3067\u6307\u5b9a\u3059\u308b DNS \u30b5\u30fc\u30d0\u30fc\u306b\u901a\u4fe1\u3067\u304d\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002 +message.installWizard.tooltip.addZone.name=\u30be\u30fc\u30f3\u306e\u540d\u524d\u3067\u3059\u3002 +message.installWizard.tooltip.configureGuestTraffic.description=\u30cd\u30c3\u30c8\u30ef\u30fc\u30af\u306e\u8aac\u660e\u3067\u3059\u3002 +message.installWizard.tooltip.configureGuestTraffic.guestEndIp=\u3053\u306e\u30be\u30fc\u30f3\u306e\u30b2\u30b9\u30c8\u306b\u5272\u308a\u5f53\u3066\u308b\u3053\u3068\u304c\u3067\u304d\u308b IP \u30a2\u30c9\u30ec\u30b9\u306e\u7bc4\u56f2\u3067\u3059\u3002\u4f7f\u7528\u3059\u308b NIC \u304c 1 \u3064\u306e\u5834\u5408\u306f\u3001\u3053\u308c\u3089\u306e IP \u30a2\u30c9\u30ec\u30b9\u306f\u30dd\u30c3\u30c9\u306e CIDR \u3068\u540c\u3058 CIDR \u306b\u542b\u307e\u308c\u3066\u3044\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002 +message.installWizard.tooltip.configureGuestTraffic.guestGateway=\u30b2\u30b9\u30c8\u306e\u4f7f\u7528\u3059\u308b\u30b2\u30fc\u30c8\u30a6\u30a7\u30a4\u3067\u3059\u3002 +message.installWizard.tooltip.configureGuestTraffic.guestNetmask=\u30b2\u30b9\u30c8\u306e\u4f7f\u7528\u3059\u308b\u30b5\u30d6\u30cd\u30c3\u30c8\u4e0a\u3067\u4f7f\u7528\u3055\u308c\u308b\u30cd\u30c3\u30c8\u30de\u30b9\u30af\u3067\u3059\u3002 +message.installWizard.tooltip.configureGuestTraffic.guestStartIp=\u3053\u306e\u30be\u30fc\u30f3\u306e\u30b2\u30b9\u30c8\u306b\u5272\u308a\u5f53\u3066\u308b\u3053\u3068\u304c\u3067\u304d\u308b IP \u30a2\u30c9\u30ec\u30b9\u306e\u7bc4\u56f2\u3067\u3059\u3002\u4f7f\u7528\u3059\u308b NIC \u304c 1 \u3064\u306e\u5834\u5408\u306f\u3001\u3053\u308c\u3089\u306e IP \u30a2\u30c9\u30ec\u30b9\u306f\u30dd\u30c3\u30c9\u306e CIDR \u3068\u540c\u3058 CIDR \u306b\u542b\u307e\u308c\u3066\u3044\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002 +message.installWizard.tooltip.configureGuestTraffic.name=\u30cd\u30c3\u30c8\u30ef\u30fc\u30af\u306e\u540d\u524d\u3067\u3059\u3002 +message.instanceWizard.noTemplates=\u4f7f\u7528\u53ef\u80fd\u306a\u30c6\u30f3\u30d7\u30ec\u30fc\u30c8\u304c\u3042\u308a\u307e\u305b\u3093\u3002\u4e92\u63db\u6027\u306e\u3042\u308b\u30c6\u30f3\u30d7\u30ec\u30fc\u30c8\u3092\u8ffd\u52a0\u3057\u3066\u3001\u30a4\u30f3\u30b9\u30bf\u30f3\u30b9 \u30a6\u30a3\u30b6\u30fc\u30c9\u3092\u518d\u8d77\u52d5\u3057\u3066\u304f\u3060\u3055\u3044\u3002 +message.ip.address.changed=\u304a\u4f7f\u3044\u306e IP \u30a2\u30c9\u30ec\u30b9\u304c\u5909\u66f4\u3055\u308c\u3066\u3044\u308b\u53ef\u80fd\u6027\u304c\u3042\u308a\u307e\u3059\u3002\u4e00\u89a7\u3092\u66f4\u65b0\u3057\u307e\u3059\u304b? \u305d\u306e\u5834\u5408\u306f\u3001\u8a73\u7d30\u30da\u30a4\u30f3\u304c\u9589\u3058\u308b\u3053\u3068\u306b\u6ce8\u610f\u3057\u3066\u304f\u3060\u3055\u3044\u3002 +message.iso.desc=\u30c7\u30fc\u30bf\u307e\u305f\u306f OS \u8d77\u52d5\u53ef\u80fd\u30e1\u30c7\u30a3\u30a2\u3092\u542b\u3080\u30c7\u30a3\u30b9\u30af \u30a4\u30e1\u30fc\u30b8 +message.join.project=\u3053\u308c\u3067\u3001\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u306b\u53c2\u52a0\u3057\u307e\u3057\u305f\u3002\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u3092\u53c2\u7167\u3059\u308b\u306b\u306f\u30d7\u30ed\u30b8\u30a7\u30af\u30c8 \u30d3\u30e5\u30fc\u306b\u5207\u308a\u66ff\u3048\u3066\u304f\u3060\u3055\u3044\u3002 +message.launch.vm.on.private.network=\u30d7\u30e9\u30a4\u30d9\u30fc\u30c8\u306a\u5c02\u7528\u30cd\u30c3\u30c8\u30ef\u30fc\u30af\u3067\u30a4\u30f3\u30b9\u30bf\u30f3\u30b9\u3092\u8d77\u52d5\u3057\u307e\u3059\u304b? +message.launch.zone=\u30be\u30fc\u30f3\u3092\u8d77\u52d5\u3059\u308b\u6e96\u5099\u304c\u3067\u304d\u307e\u3057\u305f\u3002\u6b21\u306e\u624b\u9806\u306b\u9032\u3093\u3067\u304f\u3060\u3055\u3044\u3002 +message.lock.account=\u3053\u306e\u30a2\u30ab\u30a6\u30f3\u30c8\u3092\u30ed\u30c3\u30af\u3057\u3066\u3082\u3088\u308d\u3057\u3044\u3067\u3059\u304b? \u3053\u306e\u30a2\u30ab\u30a6\u30f3\u30c8\u306e\u3059\u3079\u3066\u306e\u30e6\u30fc\u30b6\u30fc\u304c\u30af\u30e9\u30a6\u30c9 \u30ea\u30bd\u30fc\u30b9\u3092\u7ba1\u7406\u3067\u304d\u306a\u304f\u306a\u308a\u307e\u3059\u3002\u305d\u306e\u5f8c\u3082\u65e2\u5b58\u306e\u30ea\u30bd\u30fc\u30b9\u306b\u306f\u30a2\u30af\u30bb\u30b9\u3067\u304d\u307e\u3059\u3002 +message.migrate.instance.confirm=\u4eee\u60f3\u30a4\u30f3\u30b9\u30bf\u30f3\u30b9\u306e\u79fb\u884c\u5148\u306f\u6b21\u306e\u30db\u30b9\u30c8\u3067\u3088\u308d\u3057\u3044\u3067\u3059\u304b? +message.migrate.instance.to.host=\u5225\u306e\u30db\u30b9\u30c8\u306b\u30a4\u30f3\u30b9\u30bf\u30f3\u30b9\u3092\u79fb\u884c\u3057\u3066\u3082\u3088\u308d\u3057\u3044\u3067\u3059\u304b? +message.migrate.instance.to.ps=\u5225\u306e\u30d7\u30e9\u30a4\u30de\u30ea \u30b9\u30c8\u30ec\u30fc\u30b8\u306b\u30a4\u30f3\u30b9\u30bf\u30f3\u30b9\u3092\u79fb\u884c\u3057\u3066\u3082\u3088\u308d\u3057\u3044\u3067\u3059\u304b? +message.migrate.router.confirm=\u30eb\u30fc\u30bf\u30fc\u306e\u79fb\u884c\u5148\u306f\u6b21\u306e\u30db\u30b9\u30c8\u3067\u3088\u308d\u3057\u3044\u3067\u3059\u304b? +message.migrate.systemvm.confirm=\u30b7\u30b9\u30c6\u30e0 VM \u306e\u79fb\u884c\u5148\u306f\u6b21\u306e\u30db\u30b9\u30c8\u3067\u3088\u308d\u3057\u3044\u3067\u3059\u304b? +message.migrate.volume=\u5225\u306e\u30d7\u30e9\u30a4\u30de\u30ea \u30b9\u30c8\u30ec\u30fc\u30b8\u306b\u30dc\u30ea\u30e5\u30fc\u30e0\u3092\u79fb\u884c\u3057\u3066\u3082\u3088\u308d\u3057\u3044\u3067\u3059\u304b? +message.new.user=\u30a2\u30ab\u30a6\u30f3\u30c8\u306b\u65b0\u3057\u3044\u30e6\u30fc\u30b6\u30fc\u3092\u8ffd\u52a0\u3059\u308b\u305f\u3081\u306b\u3001\u6b21\u306e\u60c5\u5831\u3092\u6307\u5b9a\u3057\u3066\u304f\u3060\u3055\u3044\u3002 +message.no.network.support.configuration.not.true=\u30bb\u30ad\u30e5\u30ea\u30c6\u30a3 \u30b0\u30eb\u30fc\u30d7\u304c\u6709\u52b9\u306a\u30be\u30fc\u30f3\u304c\u7121\u3044\u305f\u3081\u3001\u8ffd\u52a0\u306e\u30cd\u30c3\u30c8\u30ef\u30fc\u30af\u6a5f\u80fd\u306f\u3042\u308a\u307e\u305b\u3093\u3002\u624b\u9806 5. \u306b\u9032\u3093\u3067\u304f\u3060\u3055\u3044\u3002 +message.no.network.support=\u30cf\u30a4\u30d1\u30fc\u30d0\u30a4\u30b6\u30fc\u3068\u3057\u3066 vSphere \u3092\u9078\u629e\u3057\u307e\u3057\u305f\u304c\u3001\u3053\u306e\u30cf\u30a4\u30d1\u30fc\u30d0\u30a4\u30b6\u30fc\u306b\u8ffd\u52a0\u306e\u30cd\u30c3\u30c8\u30ef\u30fc\u30af\u6a5f\u80fd\u306f\u3042\u308a\u307e\u305b\u3093\u3002\u624b\u9806 5. \u306b\u9032\u3093\u3067\u304f\u3060\u3055\u3044\u3002 +message.no.projects.adminOnly=\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u304c\u3042\u308a\u307e\u305b\u3093\u3002
\u7ba1\u7406\u8005\u306b\u65b0\u3057\u3044\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u306e\u4f5c\u6210\u3092\u4f9d\u983c\u3057\u3066\u304f\u3060\u3055\u3044\u3002 +message.no.projects=\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u304c\u3042\u308a\u307e\u305b\u3093\u3002
\u30d7\u30ed\u30b8\u30a7\u30af\u30c8 \u30bb\u30af\u30b7\u30e7\u30f3\u304b\u3089\u65b0\u3057\u3044\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u3092\u4f5c\u6210\u3057\u3066\u304f\u3060\u3055\u3044\u3002 +message.number.clusters=

\u30af\u30e9\u30b9\u30bf\u30fc\u6570

+message.number.hosts=

\u30db\u30b9\u30c8\u6570

+message.number.pods=

\u30dd\u30c3\u30c9\u6570

+message.number.storage=

\u30d7\u30e9\u30a4\u30de\u30ea \u30b9\u30c8\u30ec\u30fc\u30b8 \u30dc\u30ea\u30e5\u30fc\u30e0\u6570

+message.number.zones=

\u30be\u30fc\u30f3\u6570

+message.pending.projects.1=\u4fdd\u7559\u4e2d\u306e\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u62db\u5f85\u72b6\u304c\u3042\u308a\u307e\u3059\u3002 +message.pending.projects.2=\u8868\u793a\u3059\u308b\u306b\u306f\u30d7\u30ed\u30b8\u30a7\u30af\u30c8 \u30bb\u30af\u30b7\u30e7\u30f3\u306b\u79fb\u52d5\u3057\u3066\u3001\u4e00\u89a7\u304b\u3089\u62db\u5f85\u72b6\u3092\u9078\u629e\u3057\u307e\u3059\u3002 +message.please.add.at.lease.one.traffic.range=\u5c11\u306a\u304f\u3068\u3082 1 \u3064\u30c8\u30e9\u30d5\u30a3\u30c3\u30af\u306e\u7bc4\u56f2\u3092\u8ffd\u52a0\u3057\u3066\u304f\u3060\u3055\u3044\u3002 +message.please.proceed=\u6b21\u306e\u624b\u9806\u306b\u9032\u3093\u3067\u304f\u3060\u3055\u3044\u3002 +message.please.select.a.configuration.for.your.zone=\u30be\u30fc\u30f3\u306e\u69cb\u6210\u3092\u9078\u629e\u3057\u3066\u304f\u3060\u3055\u3044\u3002 +message.please.select.a.different.public.and.management.network.before.removing=\u524a\u9664\u306e\u524d\u306b\u7570\u306a\u308b\u30d1\u30d6\u30ea\u30c3\u30af\u304a\u3088\u3073\u7ba1\u7406\u30cd\u30c3\u30c8\u30ef\u30fc\u30af\u3092\u9078\u629e\u3057\u3066\u304f\u3060\u3055\u3044\u3002 +message.please.select.networks=\u4eee\u60f3\u30de\u30b7\u30f3\u306e\u30cd\u30c3\u30c8\u30ef\u30fc\u30af\u3092\u9078\u629e\u3057\u3066\u304f\u3060\u3055\u3044\u3002 +message.please.wait.while.zone.is.being.created=\u30be\u30fc\u30f3\u304c\u4f5c\u6210\u3055\u308c\u308b\u307e\u3067\u3057\u3070\u3089\u304f\u304a\u5f85\u3061\u304f\u3060\u3055\u3044... +message.project.invite.sent=\u30e6\u30fc\u30b6\u30fc\u306b\u62db\u5f85\u72b6\u304c\u9001\u4fe1\u3055\u308c\u307e\u3057\u305f\u3002\u30e6\u30fc\u30b6\u30fc\u304c\u62db\u5f85\u3092\u627f\u8afe\u3059\u308b\u3068\u3001\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u306b\u8ffd\u52a0\u3055\u308c\u307e\u3059\u3002 +message.public.traffic.in.advanced.zone=\u30af\u30e9\u30a6\u30c9\u5185\u306e VM \u304c\u30a4\u30f3\u30bf\u30fc\u30cd\u30c3\u30c8\u306b\u30a2\u30af\u30bb\u30b9\u3059\u308b\u3068\u3001\u30d1\u30d6\u30ea\u30c3\u30af \u30c8\u30e9\u30d5\u30a3\u30c3\u30af\u304c\u751f\u6210\u3055\u308c\u307e\u3059\u3002\u3053\u306e\u305f\u3081\u306b\u3001\u4e00\u822c\u306b\u30a2\u30af\u30bb\u30b9\u53ef\u80fd\u306a IP \u30a2\u30c9\u30ec\u30b9\u3092\u5272\u308a\u5f53\u3066\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002\u30a8\u30f3\u30c9 \u30e6\u30fc\u30b6\u30fc\u306f CloudStack \u306e\u30e6\u30fc\u30b6\u30fc \u30a4\u30f3\u30bf\u30fc\u30d5\u30a7\u30a4\u30b9\u3092\u4f7f\u7528\u3057\u3066\u3053\u308c\u3089\u306e IP \u30a2\u30c9\u30ec\u30b9\u3092\u53d6\u5f97\u3057\u3001\u30b2\u30b9\u30c8 \u30cd\u30c3\u30c8\u30ef\u30fc\u30af\u3068\u30d1\u30d6\u30ea\u30c3\u30af \u30cd\u30c3\u30c8\u30ef\u30fc\u30af\u306e\u9593\u306b NAT \u3092\u5b9f\u88c5\u3059\u308b\u3053\u3068\u304c\u3067\u304d\u307e\u3059\u3002

\u30a4\u30f3\u30bf\u30fc\u30cd\u30c3\u30c8 \u30c8\u30e9\u30d5\u30a3\u30c3\u30af\u306e\u305f\u3081\u306b\u3001\u5c11\u306a\u304f\u3068\u3082 1 \u3064 IP \u30a2\u30c9\u30ec\u30b9\u306e\u7bc4\u56f2\u3092\u5165\u529b\u3057\u3066\u304f\u3060\u3055\u3044\u3002 +message.public.traffic.in.basic.zone=\u30af\u30e9\u30a6\u30c9\u5185\u306e VM \u304c\u30a4\u30f3\u30bf\u30fc\u30cd\u30c3\u30c8\u306b\u30a2\u30af\u30bb\u30b9\u3059\u308b\u304b\u30a4\u30f3\u30bf\u30fc\u30cd\u30c3\u30c8\u7d4c\u7531\u3067\u30af\u30e9\u30a4\u30a2\u30f3\u30c8\u306b\u30b5\u30fc\u30d3\u30b9\u3092\u63d0\u4f9b\u3059\u308b\u3068\u3001\u30d1\u30d6\u30ea\u30c3\u30af \u30c8\u30e9\u30d5\u30a3\u30c3\u30af\u304c\u751f\u6210\u3055\u308c\u307e\u3059\u3002\u3053\u306e\u305f\u3081\u306b\u3001\u4e00\u822c\u306b\u30a2\u30af\u30bb\u30b9\u53ef\u80fd\u306a IP \u30a2\u30c9\u30ec\u30b9\u3092\u5272\u308a\u5f53\u3066\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002\u30a4\u30f3\u30b9\u30bf\u30f3\u30b9\u3092\u4f5c\u6210\u3059\u308b\u3068\u3001\u30b2\u30b9\u30c8 IP \u30a2\u30c9\u30ec\u30b9\u306e\u307b\u304b\u306b\u3053\u306e\u30d1\u30d6\u30ea\u30c3\u30af IP \u30a2\u30c9\u30ec\u30b9\u306e\u7bc4\u56f2\u304b\u3089\u30a2\u30c9\u30ec\u30b9\u304c 1 \u3064\u30a4\u30f3\u30b9\u30bf\u30f3\u30b9\u306b\u5272\u308a\u5f53\u3066\u3089\u308c\u307e\u3059\u3002\u30d1\u30d6\u30ea\u30c3\u30af IP \u30a2\u30c9\u30ec\u30b9\u3068\u30b2\u30b9\u30c8 IP \u30a2\u30c9\u30ec\u30b9\u306e\u9593\u306b\u3001\u9759\u7684\u306a 1 \u5bfe 1 \u306e NAT \u304c\u81ea\u52d5\u7684\u306b\u30bb\u30c3\u30c8\u30a2\u30c3\u30d7\u3055\u308c\u307e\u3059\u3002\u30a8\u30f3\u30c9 \u30e6\u30fc\u30b6\u30fc\u306f CloudStack \u306e\u30e6\u30fc\u30b6\u30fc \u30a4\u30f3\u30bf\u30fc\u30d5\u30a7\u30a4\u30b9\u3092\u4f7f\u7528\u3057\u3066\u8ffd\u52a0\u306e IP \u30a2\u30c9\u30ec\u30b9\u3092\u53d6\u5f97\u3057\u3001\u30a4\u30f3\u30b9\u30bf\u30f3\u30b9\u3068\u30d1\u30d6\u30ea\u30c3\u30af IP \u30a2\u30c9\u30ec\u30b9\u306e\u9593\u306b\u9759\u7684 NAT \u3092\u5b9f\u88c5\u3059\u308b\u3053\u3068\u3082\u3067\u304d\u307e\u3059\u3002 +message.redirecting.region=\u9818\u57df\u306b\u30ea\u30c0\u30a4\u30ec\u30af\u30c8\u3057\u3066\u3044\u307e\u3059... +message.remove.region=\u3053\u306e\u7ba1\u7406\u30b5\u30fc\u30d0\u30fc\u304b\u3089\u3053\u306e\u9818\u57df\u3092\u524a\u9664\u3057\u3066\u3082\u3088\u308d\u3057\u3044\u3067\u3059\u304b? +message.remove.vpc=VPC \u3092\u524a\u9664\u3057\u3066\u3082\u3088\u308d\u3057\u3044\u3067\u3059\u304b? +message.remove.vpn.access=\u6b21\u306e\u30e6\u30fc\u30b6\u30fc\u304b\u3089 VPN \u30a2\u30af\u30bb\u30b9\u3092\u524a\u9664\u3057\u3066\u3082\u3088\u308d\u3057\u3044\u3067\u3059\u304b? +message.reset.password.warning.notPasswordEnabled=\u3053\u306e\u30a4\u30f3\u30b9\u30bf\u30f3\u30b9\u306e\u30c6\u30f3\u30d7\u30ec\u30fc\u30c8\u306f\u3001\u30d1\u30b9\u30ef\u30fc\u30c9\u7ba1\u7406\u3092\u6709\u52b9\u306b\u305b\u305a\u306b\u4f5c\u6210\u3055\u308c\u307e\u3057\u305f\u3002 +message.reset.password.warning.notStopped=\u73fe\u5728\u306e\u30d1\u30b9\u30ef\u30fc\u30c9\u3092\u5909\u66f4\u3059\u308b\u524d\u306b\u30a4\u30f3\u30b9\u30bf\u30f3\u30b9\u3092\u505c\u6b62\u3059\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002 +message.reset.VPN.connection=VPN \u63a5\u7d9a\u3092\u30ea\u30bb\u30c3\u30c8\u3057\u3066\u3082\u3088\u308d\u3057\u3044\u3067\u3059\u304b? +message.restart.mgmt.server=\u65b0\u3057\u3044\u8a2d\u5b9a\u3092\u6709\u52b9\u306b\u3059\u308b\u305f\u3081\u306b\u3001\u7ba1\u7406\u30b5\u30fc\u30d0\u30fc\u3092\u518d\u8d77\u52d5\u3057\u3066\u304f\u3060\u3055\u3044\u3002 +message.restart.mgmt.usage.server=\u65b0\u3057\u3044\u8a2d\u5b9a\u3092\u6709\u52b9\u306b\u3059\u308b\u305f\u3081\u306b\u3001\u7ba1\u7406\u30b5\u30fc\u30d0\u30fc\u3068\u4f7f\u7528\u72b6\u6cc1\u6e2c\u5b9a\u30b5\u30fc\u30d0\u30fc\u3092\u518d\u8d77\u52d5\u3057\u3066\u304f\u3060\u3055\u3044\u3002 +message.restart.network=\u3053\u306e\u30cd\u30c3\u30c8\u30ef\u30fc\u30af\u3067\u63d0\u4f9b\u3059\u308b\u3059\u3079\u3066\u306e\u30b5\u30fc\u30d3\u30b9\u304c\u4e2d\u65ad\u3055\u308c\u307e\u3059\u3002\u3053\u306e\u30cd\u30c3\u30c8\u30ef\u30fc\u30af\u3092\u518d\u8d77\u52d5\u3057\u3066\u3082\u3088\u308d\u3057\u3044\u3067\u3059\u304b? +message.restart.vpc=VPC \u3092\u518d\u8d77\u52d5\u3057\u3066\u3082\u3088\u308d\u3057\u3044\u3067\u3059\u304b? +message.security.group.usage=(\u8a72\u5f53\u3059\u308b\u30bb\u30ad\u30e5\u30ea\u30c6\u30a3 \u30b0\u30eb\u30fc\u30d7\u3092\u3059\u3079\u3066\u9078\u629e\u3059\u308b\u306b\u306f\u3001Ctrl \u30ad\u30fc\u3092\u62bc\u3057\u306a\u304c\u3089\u30af\u30ea\u30c3\u30af\u3057\u3066\u304f\u3060\u3055\u3044) +message.select.a.zone=\u30be\u30fc\u30f3\u306f\u901a\u5e38\u3001\u5358\u4e00\u306e\u30c7\u30fc\u30bf\u30bb\u30f3\u30bf\u30fc\u306b\u76f8\u5f53\u3057\u307e\u3059\u3002\u8907\u6570\u306e\u30be\u30fc\u30f3\u3092\u8a2d\u5b9a\u3057\u3001\u7269\u7406\u7684\u306b\u5206\u96e2\u3057\u3066\u5197\u9577\u6027\u3092\u6301\u305f\u305b\u308b\u3053\u3068\u306b\u3088\u308a\u3001\u30af\u30e9\u30a6\u30c9\u306e\u4fe1\u983c\u6027\u3092\u9ad8\u3081\u307e\u3059\u3002 +message.select.instance=\u30a4\u30f3\u30b9\u30bf\u30f3\u30b9\u3092\u9078\u629e\u3057\u3066\u304f\u3060\u3055\u3044\u3002 +message.select.iso=\u65b0\u3057\u3044\u4eee\u60f3\u30a4\u30f3\u30b9\u30bf\u30f3\u30b9\u306e ISO \u3092\u9078\u629e\u3057\u3066\u304f\u3060\u3055\u3044\u3002 +message.select.item=\u9805\u76ee\u3092\u9078\u629e\u3057\u3066\u304f\u3060\u3055\u3044\u3002 +message.select.security.groups=\u65b0\u3057\u3044\u4eee\u60f3\u30de\u30b7\u30f3\u306e\u30bb\u30ad\u30e5\u30ea\u30c6\u30a3 \u30b0\u30eb\u30fc\u30d7\u3092\u9078\u629e\u3057\u3066\u304f\u3060\u3055\u3044\u3002 +message.select.template=\u65b0\u3057\u3044\u4eee\u60f3\u30a4\u30f3\u30b9\u30bf\u30f3\u30b9\u306e\u30c6\u30f3\u30d7\u30ec\u30fc\u30c8\u3092\u9078\u629e\u3057\u3066\u304f\u3060\u3055\u3044\u3002 +message.setup.physical.network.during.zone.creation.basic=\u57fa\u672c\u30be\u30fc\u30f3\u3092\u8ffd\u52a0\u3059\u308b\u3068\u304d\u306f\u3001\u30cf\u30a4\u30d1\u30fc\u30d0\u30a4\u30b6\u30fc\u4e0a\u306e NIC \u306b\u5bfe\u5fdc\u3059\u308b 1 \u3064\u306e\u7269\u7406\u30cd\u30c3\u30c8\u30ef\u30fc\u30af\u3092\u30bb\u30c3\u30c8\u30a2\u30c3\u30d7\u3067\u304d\u307e\u3059\u3002\u30cd\u30c3\u30c8\u30ef\u30fc\u30af\u306f\u3044\u304f\u3064\u304b\u306e\u7a2e\u985e\u306e\u30c8\u30e9\u30d5\u30a3\u30c3\u30af\u3092\u4f1d\u9001\u3057\u307e\u3059\u3002

\u7269\u7406\u30cd\u30c3\u30c8\u30ef\u30fc\u30af\u306b\u307b\u304b\u306e\u30c8\u30e9\u30d5\u30a3\u30c3\u30af\u306e\u7a2e\u985e\u3092\u30c9\u30e9\u30c3\u30b0 \u30a2\u30f3\u30c9 \u30c9\u30ed\u30c3\u30d7\u3059\u308b\u3053\u3068\u3082\u3067\u304d\u307e\u3059\u3002 +message.setup.physical.network.during.zone.creation=\u62e1\u5f35\u30be\u30fc\u30f3\u3092\u8ffd\u52a0\u3059\u308b\u3068\u304d\u306f\u30011 \u3064\u4ee5\u4e0a\u306e\u7269\u7406\u30cd\u30c3\u30c8\u30ef\u30fc\u30af\u3092\u30bb\u30c3\u30c8\u30a2\u30c3\u30d7\u3059\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002\u5404\u30cd\u30c3\u30c8\u30ef\u30fc\u30af\u306f\u30cf\u30a4\u30d1\u30fc\u30d0\u30a4\u30b6\u30fc\u4e0a\u306e 1 \u3064\u306e NIC \u306b\u5bfe\u5fdc\u3057\u307e\u3059\u3002\u5404\u7269\u7406\u30cd\u30c3\u30c8\u30ef\u30fc\u30af\u3067\u306f\u3001\u7d44\u307f\u5408\u308f\u305b\u306b\u5236\u9650\u304c\u3042\u308a\u307e\u3059\u304c\u30011 \u3064\u4ee5\u4e0a\u306e\u7a2e\u985e\u306e\u30c8\u30e9\u30d5\u30a3\u30c3\u30af\u3092\u901a\u4fe1\u3067\u304d\u307e\u3059\u3002

\u5404\u7269\u7406\u30cd\u30c3\u30c8\u30ef\u30fc\u30af\u306b\u5bfe\u3057\u3066\u30c8\u30e9\u30d5\u30a3\u30c3\u30af\u306e\u7a2e\u985e\u3092\u30c9\u30e9\u30c3\u30b0 \u30a2\u30f3\u30c9 \u30c9\u30ed\u30c3\u30d7\u3057\u3066\u304f\u3060\u3055\u3044\u3002 +message.setup.successful=\u30af\u30e9\u30a6\u30c9\u304c\u30bb\u30c3\u30c8\u30a2\u30c3\u30d7\u3055\u308c\u307e\u3057\u305f\u3002 +message.snapshot.schedule=\u6b21\u306e\u30aa\u30d7\u30b7\u30e7\u30f3\u304b\u3089\u9078\u629e\u3057\u3066\u30dd\u30ea\u30b7\u30fc\u306e\u57fa\u672c\u8a2d\u5b9a\u3092\u9069\u7528\u3059\u308b\u3053\u3068\u306b\u3088\u308a\u3001\u5b9a\u671f\u30b9\u30ca\u30c3\u30d7\u30b7\u30e7\u30c3\u30c8\u306e\u30b9\u30b1\u30b8\u30e5\u30fc\u30eb\u3092\u30bb\u30c3\u30c8\u30a2\u30c3\u30d7\u3067\u304d\u307e\u3059\u3002 +message.specify.url=URL \u3092\u6307\u5b9a\u3057\u3066\u304f\u3060\u3055\u3044 +message.step.1.continue=\u7d9a\u884c\u3059\u308b\u306b\u306f\u30c6\u30f3\u30d7\u30ec\u30fc\u30c8\u307e\u305f\u306f ISO \u3092\u9078\u629e\u3057\u3066\u304f\u3060\u3055\u3044 +message.step.1.desc=\u65b0\u3057\u3044\u4eee\u60f3\u30a4\u30f3\u30b9\u30bf\u30f3\u30b9\u7528\u306e\u30c6\u30f3\u30d7\u30ec\u30fc\u30c8\u3092\u9078\u629e\u3057\u3066\u304f\u3060\u3055\u3044\u3002ISO \u3092\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\u3067\u304d\u308b\u7a7a\u767d\u306e\u30c6\u30f3\u30d7\u30ec\u30fc\u30c8\u3092\u9078\u629e\u3059\u308b\u3053\u3068\u3082\u3067\u304d\u307e\u3059\u3002 +message.step.2.continue=\u7d9a\u884c\u3059\u308b\u306b\u306f\u30b5\u30fc\u30d3\u30b9 \u30aa\u30d5\u30a1\u30ea\u30f3\u30b0\u3092\u9078\u629e\u3057\u3066\u304f\u3060\u3055\u3044 message.step.2.desc= -message.step.3.continue=Please select a disk offering to continue +message.step.3.continue=\u7d9a\u884c\u3059\u308b\u306b\u306f\u30c7\u30a3\u30b9\u30af \u30aa\u30d5\u30a1\u30ea\u30f3\u30b0\u3092\u9078\u629e\u3057\u3066\u304f\u3060\u3055\u3044 message.step.3.desc= -message.step.4.continue=Please select at least one network to continue -message.step.4.desc=\u2030\u00bc\u2018z\u0192C\u0192\u201c\u0192X\u0192^\u0192\u201c\u0192X\u201a\u00aa\ufffd\u00da\u2018\u00b1\u201a\u00b7\u201a\u00e9\u0192v\u0192\u2030\u0192C\u0192}\u0192\u0160 \u0192l\u0192b\u0192g\u0192\ufffd\ufffd[\u0192N\u201a\u00f0\u2018I\u2018\u00f0\u201a\u00b5\u201a\u00c4\u201a\u00ad\u201a\u00be\u201a\u00b3\u201a\u00a2\ufffdB -message.storage.traffic=\u0192z\u0192X\u0192g\u201a\u00e2 CloudStack \u0192V\u0192X\u0192e\u0192\u20ac VM \u201a\u00c8\u201a\u00c7\ufffdA\u0160\u00c7\u2014\ufffd\u0192T\ufffd[\u0192o\ufffd[\u201a\u00c6\u2019\u00ca\ufffdM\u201a\u00b7\u201a\u00e9 CloudStack \u201a\u00cc\u201c\u00e0\u2022\u201d\u0192\u0160\u0192\\ufffd[\u0192X\u0160\u00d4\u201a\u00cc\u0192g\u0192\u2030\u0192t\u0192B\u0192b\u0192N\u201a\u00c5\u201a\u00b7\ufffdB\u201a\u00b1\u201a\u00b1\u201a\u00c5\u0192X\u0192g\u0192\u0152\ufffd[\u0192W \u0192g\u0192\u2030\u0192t\u0192B\u0192b\u0192N\u201a\u00f0\ufffd\\ufffd\u00ac\u201a\u00b5\u201a\u00c4\u201a\u00ad\u201a\u00be\u201a\u00b3\u201a\u00a2\ufffdB -message.suspend.project=\u201a\u00b1\u201a\u00cc\u0192v\u0192\ufffd\u0192W\u0192F\u0192N\u0192g\u201a\u00f0\u02c6\u00ea\u017d\u017e\u2019\u00e2\u017d~\u201a\u00b5\u201a\u00c4\u201a\u00e0\u201a\u00e6\u201a\u00eb\u201a\u00b5\u201a\u00a2\u201a\u00c5\u201a\u00b7\u201a\u00a9? -message.template.desc=VM \u201a\u00cc\u2039N\u201c\u00ae\u201a\u00c9\u017dg\u2014p\u201a\u00c5\u201a\u00ab\u201a\u00e9 OS \u0192C\u0192\ufffd\ufffd[\u0192W -message.tooltip.dns.1=\u0192]\ufffd[\u0192\u201c\u201c\u00e0\u201a\u00cc VM \u201a\u00c5\u017dg\u2014p\u201a\u00b7\u201a\u00e9 DNS \u0192T\ufffd[\u0192o\ufffd[\u201a\u00cc\u2013\u00bc\u2018O\u201a\u00c5\u201a\u00b7\ufffdB\u0192]\ufffd[\u0192\u201c\u201a\u00cc\u0192p\u0192u\u0192\u0160\u0192b\u0192N IP \u0192A\u0192h\u0192\u0152\u0192X\u201a\u00a9\u201a\u00e7\ufffdA\u201a\u00b1\u201a\u00cc\u0192T\ufffd[\u0192o\ufffd[\u201a\u00c9\u2019\u00ca\ufffdM\u201a\u00c5\u201a\u00ab\u201a\u00e9\u2022K\u2014v\u201a\u00aa\u201a\u00a0\u201a\u00e8\u201a\u00dc\u201a\u00b7\ufffdB -message.tooltip.dns.2=\u0192]\ufffd[\u0192\u201c\u201c\u00e0\u201a\u00cc VM \u201a\u00c5\u017dg\u2014p\u201a\u00b7\u201a\u00e9 2 \u201d\u00d4\u2013\u00da\u201a\u00cc DNS \u0192T\ufffd[\u0192o\ufffd[\u201a\u00cc\u2013\u00bc\u2018O\u201a\u00c5\u201a\u00b7\ufffdB\u0192]\ufffd[\u0192\u201c\u201a\u00cc\u0192p\u0192u\u0192\u0160\u0192b\u0192N IP \u0192A\u0192h\u0192\u0152\u0192X\u201a\u00a9\u201a\u00e7\ufffdA\u201a\u00b1\u201a\u00cc\u0192T\ufffd[\u0192o\ufffd[\u201a\u00c9\u2019\u00ca\ufffdM\u201a\u00c5\u201a\u00ab\u201a\u00e9\u2022K\u2014v\u201a\u00aa\u201a\u00a0\u201a\u00e8\u201a\u00dc\u201a\u00b7\ufffdB -message.tooltip.internal.dns.1=\u0192]\ufffd[\u0192\u201c\u201c\u00e0\u201a\u00cc CloudStack \u201c\u00e0\u2022\u201d\u0192V\u0192X\u0192e\u0192\u20ac VM \u201a\u00c5\u017dg\u2014p\u201a\u00b7\u201a\u00e9 DNS \u0192T\ufffd[\u0192o\ufffd[\u201a\u00cc\u2013\u00bc\u2018O\u201a\u00c5\u201a\u00b7\ufffdB\u0192|\u0192b\u0192h\u201a\u00cc\u0192v\u0192\u2030\u0192C\u0192x\ufffd[\u0192g IP \u0192A\u0192h\u0192\u0152\u0192X\u201a\u00a9\u201a\u00e7\ufffdA\u201a\u00b1\u201a\u00cc\u0192T\ufffd[\u0192o\ufffd[\u201a\u00c9\u2019\u00ca\ufffdM\u201a\u00c5\u201a\u00ab\u201a\u00e9\u2022K\u2014v\u201a\u00aa\u201a\u00a0\u201a\u00e8\u201a\u00dc\u201a\u00b7\ufffdB -message.tooltip.internal.dns.2=\u0192]\ufffd[\u0192\u201c\u201c\u00e0\u201a\u00cc CloudStack \u201c\u00e0\u2022\u201d\u0192V\u0192X\u0192e\u0192\u20ac VM \u201a\u00c5\u017dg\u2014p\u201a\u00b7\u201a\u00e9 DNS \u0192T\ufffd[\u0192o\ufffd[\u201a\u00cc\u2013\u00bc\u2018O\u201a\u00c5\u201a\u00b7\ufffdB\u0192|\u0192b\u0192h\u201a\u00cc\u0192v\u0192\u2030\u0192C\u0192x\ufffd[\u0192g IP \u0192A\u0192h\u0192\u0152\u0192X\u201a\u00a9\u201a\u00e7\ufffdA\u201a\u00b1\u201a\u00cc\u0192T\ufffd[\u0192o\ufffd[\u201a\u00c9\u2019\u00ca\ufffdM\u201a\u00c5\u201a\u00ab\u201a\u00e9\u2022K\u2014v\u201a\u00aa\u201a\u00a0\u201a\u00e8\u201a\u00dc\u201a\u00b7\ufffdB -message.tooltip.network.domain=DNS \u0192T\u0192t\u0192B\u0192b\u0192N\u0192X\u201a\u00c5\u201a\u00b7\ufffdB\u201a\u00b1\u201a\u00cc\u0192T\u0192t\u0192B\u0192b\u0192N\u0192X\u201a\u00a9\u201a\u00e7\u0192Q\u0192X\u0192g VM \u201a\u00c5\u0192A\u0192N\u0192Z\u0192X\u201a\u00b7\u201a\u00e9\u0192l\u0192b\u0192g\u0192\ufffd\ufffd[\u0192N\u201a\u00cc\u0192J\u0192X\u0192^\u0192\u20ac \u0192h\u0192\ufffd\u0192C\u0192\u201c\u2013\u00bc\u201a\u00aa\ufffd\u00ec\ufffd\u00ac\u201a\u00b3\u201a\u00ea\u201a\u00dc\u201a\u00b7\ufffdB -message.tooltip.pod.name=\u201a\u00b1\u201a\u00cc\u0192|\u0192b\u0192h\u201a\u00cc\u2013\u00bc\u2018O\u201a\u00c5\u201a\u00b7\ufffdB -message.tooltip.reserved.system.gateway=\u0192|\u0192b\u0192h\u201c\u00e0\u201a\u00cc\u0192z\u0192X\u0192g\u201a\u00cc\u0192Q\ufffd[\u0192g\u0192E\u0192F\u0192C\u201a\u00c5\u201a\u00b7\ufffdB -message.tooltip.reserved.system.netmask=\u0192|\u0192b\u0192h\u201a\u00cc\u0192T\u0192u\u0192l\u0192b\u0192g\u201a\u00f0\u2019\u00e8\u2039`\u201a\u00b7\u201a\u00e9\u0192l\u0192b\u0192g\u0192\ufffd\ufffd[\u0192N \u0192v\u0192\u0152\u0192t\u0192B\u0192b\u0192N\u0192X\u201a\u00c5\u201a\u00b7\ufffdBCIDR \u2022\\u2039L\u201a\u00f0\u017dg\u2014p\u201a\u00b5\u201a\u00dc\u201a\u00b7\ufffdB -message.tooltip.zone.name=\u0192]\ufffd[\u0192\u201c\u201a\u00cc\u2013\u00bc\u2018O\u201a\u00c5\u201a\u00b7\ufffdB -message.update.os.preference=\u201a\u00b1\u201a\u00cc\u0192z\u0192X\u0192g\u201a\u00cc OS \u0160\u00ee\u2013{\ufffd\u00dd\u2019\u00e8\u201a\u00f0\u2018I\u2018\u00f0\u201a\u00b5\u201a\u00c4\u201a\u00ad\u201a\u00be\u201a\u00b3\u201a\u00a2\ufffdB\u201c\u00af\u2014l\u201a\u00cc\u0160\u00ee\u2013{\ufffd\u00dd\u2019\u00e8\u201a\u00f0\u017d\ufffd\u201a\u00c2\u201a\u00b7\u201a\u00d7\u201a\u00c4\u201a\u00cc\u2030\u00bc\u2018z\u0192C\u0192\u201c\u0192X\u0192^\u0192\u201c\u0192X\u201a\u00cd\ufffdA\u2022\u00ca\u201a\u00cc\u0192z\u0192X\u0192g\u201a\u00f0\u2018I\u2018\u00f0\u201a\u00b7\u201a\u00e9\u2018O\u201a\u00c9\u201a\u00dc\u201a\u00b8\u201a\u00b1\u201a\u00cc\u0192z\u0192X\u0192g\u201a\u00c9\u0160\u201e\u201a\u00e8\u201c\u2013\u201a\u00c4\u201a\u00e7\u201a\u00ea\u201a\u00dc\u201a\u00b7\ufffdB -message.update.resource.count=\u201a\u00b1\u201a\u00cc\u0192A\u0192J\u0192E\u0192\u201c\u0192g\u201a\u00cc\u0192\u0160\u0192\\ufffd[\u0192X\ufffd\u201d\u201a\u00f0\ufffdX\ufffdV\u201a\u00b5\u201a\u00c4\u201a\u00e0\u201a\u00e6\u201a\u00eb\u201a\u00b5\u201a\u00a2\u201a\u00c5\u201a\u00b7\u201a\u00a9? -message.update.ssl=\u0160e\u0192R\u0192\u201c\u0192\\ufffd[\u0192\u2039 \u0192v\u0192\ufffd\u0192L\u0192V\u201a\u00a8\u201a\u00e6\u201a\u00d1\u0192Z\u0192J\u0192\u201c\u0192_\u0192\u0160 \u0192X\u0192g\u0192\u0152\ufffd[\u0192W\u201a\u00cc\u2030\u00bc\u2018z\u0192C\u0192\u201c\u0192X\u0192^\u0192\u201c\u0192X\u201a\u00c5\ufffdX\ufffdV\u201a\u00b7\u201a\u00e9\ufffdAX.509 \ufffd\u20ac\u2039\u2019\u201a\u00cc\ufffdV\u201a\u00b5\u201a\u00a2 SSL \ufffd\u00d8\u2013\u00be\ufffd\u2018\u201a\u00f0\u2018\u2014\ufffdM\u201a\u00b5\u201a\u00c4\u201a\u00ad\u201a\u00be\u201a\u00b3\u201a\u00a2\: -message.validate.instance.name=\u0192C\u0192\u201c\u0192X\u0192^\u0192\u201c\u0192X\u2013\u00bc\u201a\u00cd 63 \u2022\u00b6\u017d\u0161\u02c6\u00c8\u201c\u00e0\u201a\u00c5\u017dw\u2019\u00e8\u201a\u00b5\u201a\u00c4\u201a\u00ad\u201a\u00be\u201a\u00b3\u201a\u00a2\ufffdBASCII \u2022\u00b6\u017d\u0161\u201a\u00cc a\ufffd`z\ufffdAA\ufffd`Z\ufffdA\ufffd\u201d\u017d\u0161\u201a\u00cc 0\ufffd`9\ufffdA\u201a\u00a8\u201a\u00e6\u201a\u00d1\u0192n\u0192C\u0192t\u0192\u201c\u201a\u00cc\u201a\u00dd\u201a\u00f0\u017dg\u2014p\u201a\u00c5\u201a\u00ab\u201a\u00dc\u201a\u00b7\ufffdB\u2022\u00b6\u017d\u0161\u201a\u00c5\u017dn\u201a\u00dc\u201a\u00e8\ufffdA\u2022\u00b6\u017d\u0161\u201a\u00dc\u201a\u00bd\u201a\u00cd\ufffd\u201d\u017d\u0161\u201a\u00c5\ufffdI\u201a\u00ed\u201a\u00e9\u2022K\u2014v\u201a\u00aa\u201a\u00a0\u201a\u00e8\u201a\u00dc\u201a\u00b7\ufffdB -message.virtual.network.desc=\u0192A\u0192J\u0192E\u0192\u201c\u0192g\u201a\u00cc\ufffd\u00ea\u2014p\u2030\u00bc\u2018z\u0192l\u0192b\u0192g\u0192\ufffd\ufffd[\u0192N\u201a\u00c5\u201a\u00b7\ufffdB\u0192u\u0192\ufffd\ufffd[\u0192h\u0192L\u0192\u0192\u0192X\u0192g \u0192h\u0192\ufffd\u0192C\u0192\u201c\u201a\u00cd VLAN \u201c\u00e0\u201a\u00c9\u201dz\u2019u\u201a\u00b3\u201a\u00ea\ufffdA\u0192p\u0192u\u0192\u0160\u0192b\u0192N \u0192l\u0192b\u0192g\u0192\ufffd\ufffd[\u0192N\u201a\u00d6\u201a\u00cc\u0192A\u0192N\u0192Z\u0192X\u201a\u00cd\u201a\u00b7\u201a\u00d7\u201a\u00c4\u2030\u00bc\u2018z\u0192\u2039\ufffd[\u0192^\ufffd[\u201a\u00c9\u201a\u00e6\u201a\u00c1\u201a\u00c4\u0192\u2039\ufffd[\u0192e\u0192B\u0192\u201c\u0192O\u201a\u00b3\u201a\u00ea\u201a\u00dc\u201a\u00b7\ufffdB -message.vm.create.template.confirm=\u0192e\u0192\u201c\u0192v\u0192\u0152\ufffd[\u0192g\u201a\u00f0\ufffd\u00ec\ufffd\u00ac\u201a\u00b7\u201a\u00e9\u201a\u00c6 VM \u201a\u00aa\u017d\u00a9\u201c\u00ae\u201cI\u201a\u00c9\ufffd\u00c4\u2039N\u201c\u00ae\u201a\u00b3\u201a\u00ea\u201a\u00dc\u201a\u00b7\ufffdB -message.vm.review.launch=\u017d\u0178\u201a\u00cc\ufffd\u00ee\u2022\u00f1\u201a\u00f0\u017dQ\ufffd\u00c6\u201a\u00b5\u201a\u00c4\ufffdA\u2030\u00bc\u2018z\u0192C\u0192\u201c\u0192X\u0192^\u0192\u201c\u0192X\u201a\u00f0\ufffd\u00b3\u201a\u00b5\u201a\u00ad\ufffd\u00dd\u2019\u00e8\u201a\u00b5\u201a\u00bd\u201a\u00b1\u201a\u00c6\u201a\u00f0\u0160m\u201dF\u201a\u00b5\u201a\u00c4\u201a\u00a9\u201a\u00e7\u2039N\u201c\u00ae\u201a\u00b5\u201a\u00c4\u201a\u00ad\u201a\u00be\u201a\u00b3\u201a\u00a2\ufffdB -message.volume.create.template.confirm=\u201a\u00b1\u201a\u00cc\u0192f\u0192B\u0192X\u0192N \u0192{\u0192\u0160\u0192\u2026\ufffd[\u0192\u20ac\u201a\u00cc\u0192e\u0192\u201c\u0192v\u0192\u0152\ufffd[\u0192g\u201a\u00f0\ufffd\u00ec\ufffd\u00ac\u201a\u00b5\u201a\u00c4\u201a\u00e0\u201a\u00e6\u201a\u00eb\u201a\u00b5\u201a\u00a2\u201a\u00c5\u201a\u00b7\u201a\u00a9? \u0192{\u0192\u0160\u0192\u2026\ufffd[\u0192\u20ac \u0192T\u0192C\u0192Y\u201a\u00c9\u201a\u00e6\u201a\u00c1\u201a\u00c4\u201a\u00cd\ufffdA\u0192e\u0192\u201c\u0192v\u0192\u0152\ufffd[\u0192g\u201a\u00cc\ufffd\u00ec\ufffd\u00ac\u201a\u00c9\u201a\u00cd\ufffd\u201d\u2022\u00aa\u02c6\u00c8\ufffd\u00e3\u201a\u00a9\u201a\u00a9\u201a\u00e9\u2030\u00c2\u201d\\ufffd\u00ab\u201a\u00aa\u201a\u00a0\u201a\u00e8\u201a\u00dc\u201a\u00b7\ufffdB -message.you.must.have.at.least.one.physical.network=\ufffd\u00ad\u201a\u00c8\u201a\u00ad\u201a\u00c6\u201a\u00e0 1 \u201a\u00c2\u2022\u00a8\u2014\ufffd\u0192l\u0192b\u0192g\u0192\ufffd\ufffd[\u0192N\u201a\u00aa\u2022K\u2014v\u201a\u00c5\u201a\u00b7 -message.zone.creation.complete.would.you.like.to.enable.this.zone=\u0192]\ufffd[\u0192\u201c\u201a\u00aa\ufffd\u00ec\ufffd\u00ac\u201a\u00b3\u201a\u00ea\u201a\u00dc\u201a\u00b5\u201a\u00bd\ufffdB\u201a\u00b1\u201a\u00cc\u0192]\ufffd[\u0192\u201c\u201a\u00f0\u2014L\u0152\u00f8\u201a\u00c9\u201a\u00b5\u201a\u00c4\u201a\u00e0\u201a\u00e6\u201a\u00eb\u201a\u00b5\u201a\u00a2\u201a\u00c5\u201a\u00b7\u201a\u00a9? -message.Zone.creation.complete=\u0192]\ufffd[\u0192\u201c\u201a\u00aa\ufffd\u00ec\ufffd\u00ac\u201a\u00b3\u201a\u00ea\u201a\u00dc\u201a\u00b5\u201a\u00bd -message.zone.no.network.selection=\u2018I\u2018\u00f0\u201a\u00b5\u201a\u00bd\u0192]\ufffd[\u0192\u201c\u201a\u00c5\u201a\u00cd\ufffdA\u0192l\u0192b\u0192g\u0192\ufffd\ufffd[\u0192N\u201a\u00f0\u2018I\u2018\u00f0\u201a\u00c5\u201a\u00ab\u201a\u00dc\u201a\u00b9\u201a\u00f1\ufffdB -message.zone.step.1.desc=\u0192]\ufffd[\u0192\u201c\u201a\u00cc\u0192l\u0192b\u0192g\u0192\ufffd\ufffd[\u0192N \u0192\u201a\u0192f\u0192\u2039\u201a\u00f0\u2018I\u2018\u00f0\u201a\u00b5\u201a\u00c4\u201a\u00ad\u201a\u00be\u201a\u00b3\u201a\u00a2\ufffdB -message.zone.step.2.desc=\ufffdV\u201a\u00b5\u201a\u00a2\u0192]\ufffd[\u0192\u201c\u201a\u00f0\u2019\u00c7\u2030\u00c1\u201a\u00b7\u201a\u00e9\u201a\u00bd\u201a\u00df\u201a\u00c9\ufffdA\u017d\u0178\u201a\u00cc\ufffd\u00ee\u2022\u00f1\u201a\u00f0\u201c\u00fc\u2014\u00cd\u201a\u00b5\u201a\u00c4\u201a\u00ad\u201a\u00be\u201a\u00b3\u201a\u00a2\ufffdB -message.zone.step.3.desc=\ufffdV\u201a\u00b5\u201a\u00a2\u0192|\u0192b\u0192h\u201a\u00f0\u2019\u00c7\u2030\u00c1\u201a\u00b7\u201a\u00e9\u201a\u00bd\u201a\u00df\u201a\u00c9\ufffdA\u017d\u0178\u201a\u00cc\ufffd\u00ee\u2022\u00f1\u201a\u00f0\u201c\u00fc\u2014\u00cd\u201a\u00b5\u201a\u00c4\u201a\u00ad\u201a\u00be\u201a\u00b3\u201a\u00a2\ufffdB -message.zoneWizard.enable.local.storage=\u0152x\ufffd\ufffd\: \u201a\u00b1\u201a\u00cc\u0192]\ufffd[\u0192\u201c\u201a\u00cc\u0192\ufffd\ufffd[\u0192J\u0192\u2039 \u0192X\u0192g\u0192\u0152\ufffd[\u0192W\u201a\u00f0\u2014L\u0152\u00f8\u201a\u00c9\u201a\u00b7\u201a\u00e9\ufffd\u00ea\ufffd\u2021\u201a\u00cd\ufffdA\u0192V\u0192X\u0192e\u0192\u20ac VM \u201a\u00cc\u2039N\u201c\u00ae\ufffd\u00ea\ufffd\u0160\u201a\u00c9\u2030\u017e\u201a\u00b6\u201a\u00c4\u017d\u0178\u201a\u00cc\u2018\u20ac\ufffd\u00ec\u201a\u00aa\u2022K\u2014v\u201a\u00c5\u201a\u00b7\ufffdB

1. \u0192V\u0192X\u0192e\u0192\u20ac VM \u201a\u00f0\u2039\u00a4\u2014L\u0192v\u0192\u2030\u0192C\u0192}\u0192\u0160 \u0192X\u0192g\u0192\u0152\ufffd[\u0192W\u201a\u00c5\u2039N\u201c\u00ae\u201a\u00b7\u201a\u00e9\u2022K\u2014v\u201a\u00aa\u201a\u00a0\u201a\u00e9\ufffd\u00ea\ufffd\u2021\u201a\u00cd\ufffdA\u2039\u00a4\u2014L\u0192v\u0192\u2030\u0192C\u0192}\u0192\u0160 \u0192X\u0192g\u0192\u0152\ufffd[\u0192W\u201a\u00f0\ufffd\u00ec\ufffd\u00ac\u201a\u00b5\u201a\u00bd\u0152\u00e3\u201a\u00c5\u0192]\ufffd[\u0192\u201c\u201a\u00c9\u2019\u00c7\u2030\u00c1\u201a\u00b7\u201a\u00e9\u2022K\u2014v\u201a\u00aa\u201a\u00a0\u201a\u00e8\u201a\u00dc\u201a\u00b7\ufffdB\u0192]\ufffd[\u0192\u201c\u201a\u00f0\u2013\u00b3\u0152\u00f8\ufffd\u00f3\u2018\u00d4\u201a\u00a9\u201a\u00e7\u0160J\u017dn\u201a\u00b7\u201a\u00e9\u2022K\u2014v\u201a\u00e0\u201a\u00a0\u201a\u00e8\u201a\u00dc\u201a\u00b7\ufffdB

2. \u0192V\u0192X\u0192e\u0192\u20ac VM \u201a\u00f0\u0192\ufffd\ufffd[\u0192J\u0192\u2039 \u0192v\u0192\u2030\u0192C\u0192}\u0192\u0160 \u0192X\u0192g\u0192\u0152\ufffd[\u0192W\u201a\u00c5\u2039N\u201c\u00ae\u201a\u00b7\u201a\u00e9\u2022K\u2014v\u201a\u00aa\u201a\u00a0\u201a\u00e9\ufffd\u00ea\ufffd\u2021\u201a\u00cd\ufffdA\u0192]\ufffd[\u0192\u201c\u201a\u00f0\u2014L\u0152\u00f8\u201a\u00c9\u201a\u00b7\u201a\u00e9\u2018O\u201a\u00c9 system.vm.use.local.storage \u201a\u00f0 true \u201a\u00c9\ufffd\u00dd\u2019\u00e8\u201a\u00b7\u201a\u00e9\u2022K\u2014v\u201a\u00aa\u201a\u00a0\u201a\u00e8\u201a\u00dc\u201a\u00b7\ufffdB


\u2018\u00b1\ufffds\u201a\u00b5\u201a\u00c4\u201a\u00e0\u201a\u00e6\u201a\u00eb\u201a\u00b5\u201a\u00a2\u201a\u00c5\u201a\u00b7\u201a\u00a9? -message.validate.fieldrequired=\u201a\u00b1\u201a\u00ea\u201a\u00cd\u2022K\ufffd{\u201a\u00cc\u0192t\u0192B\ufffd[\u0192\u2039\u0192h\u201a\u00c5\u201a\u00b7\ufffdB -message.validate.fixfield=\u201a\u00b1\u201a\u00cc\u0192t\u0192B\ufffd[\u0192\u2039\u0192h\u201a\u00f0\ufffdC\ufffd\u00b3\u201a\u00b5\u201a\u00c4\u201a\u00ad\u201a\u00be\u201a\u00b3\u201a\u00a2\ufffdB -message.validate.email.address=\u0192\ufffd\ufffd[\u0192\u2039 \u0192A\u0192h\u0192\u0152\u0192X\u201a\u00f0\ufffd\u00b3\u201a\u00b5\u201a\u00ad\u201c\u00fc\u2014\u00cd\u201a\u00b5\u201a\u00c4\u201a\u00ad\u201a\u00be\u201a\u00b3\u201a\u00a2\ufffdB -message.validate.URL=URL \u201a\u00f0\ufffd\u00b3\u201a\u00b5\u201a\u00ad\u201c\u00fc\u2014\u00cd\u201a\u00b5\u201a\u00c4\u201a\u00ad\u201a\u00be\u201a\u00b3\u201a\u00a2\ufffdB -message.validate.date=\u201c\u00fa\u2022t\u201a\u00f0\ufffd\u00b3\u201a\u00b5\u201a\u00ad\u201c\u00fc\u2014\u00cd\u201a\u00b5\u201a\u00c4\u201a\u00ad\u201a\u00be\u201a\u00b3\u201a\u00a2\ufffdB -message.validate.date.ISO=\u201c\u00fa\u2022t\u201a\u00f0\ufffd\u00b3\u201a\u00b5\u201a\u00ad\u201c\u00fc\u2014\u00cd\u201a\u00b5\u201a\u00c4\u201a\u00ad\u201a\u00be\u201a\u00b3\u201a\u00a2 (ISO)\ufffdB -message.validate.number=\ufffd\u201d\u2019l\u201a\u00f0\ufffd\u00b3\u201a\u00b5\u201a\u00ad\u201c\u00fc\u2014\u00cd\u201a\u00b5\u201a\u00c4\u201a\u00ad\u201a\u00be\u201a\u00b3\u201a\u00a2\ufffdB -message.validate.digits=\ufffd\u201d\u017d\u0161\u201a\u00cc\u201a\u00dd\u201a\u00f0\u201c\u00fc\u2014\u00cd\u201a\u00b5\u201a\u00c4\u201a\u00ad\u201a\u00be\u201a\u00b3\u201a\u00a2\ufffdB -message.validate.creditcard=\u0192N\u0192\u0152\u0192W\u0192b\u0192g \u0192J\ufffd[\u0192h\u201d\u00d4\ufffd\u2020\u201a\u00f0\ufffd\u00b3\u201a\u00b5\u201a\u00ad\u201c\u00fc\u2014\u00cd\u201a\u00b5\u201a\u00c4\u201a\u00ad\u201a\u00be\u201a\u00b3\u201a\u00a2\ufffdB -message.validate.equalto=\u201c\u00af\u201a\u00b6\u2019l\u201a\u00f0\ufffd\u00c4\u201c\u00fc\u2014\u00cd\u201a\u00b5\u201a\u00c4\u201a\u00ad\u201a\u00be\u201a\u00b3\u201a\u00a2\ufffdB -message.validate.accept=\u2014L\u0152\u00f8\u201a\u00c8\u0160g\u2019\u00a3\u017dq\u201a\u00f0\u017d\ufffd\u201a\u00c2\u2019l\u201a\u00f0\u201c\u00fc\u2014\u00cd\u201a\u00b5\u201a\u00c4\u201a\u00ad\u201a\u00be\u201a\u00b3\u201a\u00a2\ufffdB -message.validate.maxlength={0} \u2022\u00b6\u017d\u0161\u02c6\u00c8\u2030\u00ba\u201a\u00c5\u201c\u00fc\u2014\u00cd\u201a\u00b5\u201a\u00c4\u201a\u00ad\u201a\u00be\u201a\u00b3\u201a\u00a2\ufffdB -message.validate.minlength={0} \u2022\u00b6\u017d\u0161\u02c6\u00c8\ufffd\u00e3\u201a\u00c5\u201c\u00fc\u2014\u00cd\u201a\u00b5\u201a\u00c4\u201a\u00ad\u201a\u00be\u201a\u00b3\u201a\u00a2\ufffdB -message.validate.range.length={0} \ufffd` {1} \u2022\u00b6\u017d\u0161\u201a\u00c5\u201c\u00fc\u2014\u00cd\u201a\u00b5\u201a\u00c4\u201a\u00ad\u201a\u00be\u201a\u00b3\u201a\u00a2\ufffdB -message.validate.range={0} \ufffd` {1} \u201a\u00cc\u2019l\u201a\u00f0\u201c\u00fc\u2014\u00cd\u201a\u00b5\u201a\u00c4\u201a\u00ad\u201a\u00be\u201a\u00b3\u201a\u00a2\ufffdB -message.validate.max={0} \u02c6\u00c8\u2030\u00ba\u201a\u00cc\u2019l\u201a\u00f0\u201c\u00fc\u2014\u00cd\u201a\u00b5\u201a\u00c4\u201a\u00ad\u201a\u00be\u201a\u00b3\u201a\u00a2\ufffdB -messgae.validate.min={0} \u02c6\u00c8\ufffd\u00e3\u201a\u00cc\u2019l\u201a\u00f0\u201c\u00fc\u2014\u00cd\u201a\u00b5\u201a\u00c4\u201a\u00ad\u201a\u00be\u201a\u00b3\u201a\u00a2\ufffdB -message.creating.systemVM=\u0192V\u0192X\u0192e\u0192\u20ac VM \u201a\u00f0\ufffd\u00ec\ufffd\u00ac\u201a\u00b5\u201a\u00c4\u201a\u00a2\u201a\u00dc\u201a\u00b7 (\u201a\u00b5\u201a\u00ce\u201a\u00e7\u201a\u00ad\u201a\u00a8\u2018\u00d2\u201a\u00bf\u201a\u00ad\u201a\u00be\u201a\u00b3\u201a\u00a2) -message.enabling.zone.dots=\u0192]\ufffd[\u0192\u201c\u201a\u00f0\u2014L\u0152\u00f8\u201a\u00c9\u201a\u00b5\u201a\u00c4\u201a\u00a2\u201a\u00dc\u201a\u00b7... -message.restoreVM=VM \u201a\u00f0\u2022\u0153\u0152\u00b3\u201a\u00b5\u201a\u00c4\u201a\u00e0\u201a\u00e6\u201a\u00eb\u201a\u00b5\u201a\u00a2\u201a\u00c5\u201a\u00b7\u201a\u00a9? -message.no.host.available=\u02c6\u00da\ufffds\u201a\u00c9\u017dg\u2014p\u201a\u00c5\u201a\u00ab\u201a\u00e9\u0192z\u0192X\u0192g\u201a\u00cd\u201a\u00a0\u201a\u00e8\u201a\u00dc\u201a\u00b9\u201a\u00f1 -message.network.addVM.desc=\u201a\u00b1\u201a\u00cc VM \u201a\u00f0\u2019\u00c7\u2030\u00c1\u201a\u00b7\u201a\u00e9\u0192l\u0192b\u0192g\u0192\ufffd\ufffd[\u0192N\u201a\u00f0\u017dw\u2019\u00e8\u201a\u00b5\u201a\u00c4\u201a\u00ad\u201a\u00be\u201a\u00b3\u201a\u00a2\ufffdB\u201a\u00b1\u201a\u00cc\u0192l\u0192b\u0192g\u0192\ufffd\ufffd[\u0192N\u201a\u00cc\u201a\u00bd\u201a\u00df\u201a\u00cc\ufffdV\u201a\u00b5\u201a\u00a2 NIC \u201a\u00aa\u2019\u00c7\u2030\u00c1\u201a\u00b3\u201a\u00ea\u201a\u00dc\u201a\u00b7\ufffdB -message.network.addVMNIC=\u201a\u00b1\u201a\u00cc\u0192l\u0192b\u0192g\u0192\ufffd\ufffd[\u0192N\u201a\u00cc\ufffdV\u201a\u00b5\u201a\u00a2 VM NIC \u201a\u00f0\u2019\u00c7\u2030\u00c1\u201a\u00b5\u201a\u00c4\u201a\u00e0\u201a\u00e6\u201a\u00eb\u201a\u00b5\u201a\u00a2\u201a\u00c5\u201a\u00b7\u201a\u00a9? -message.set.default.NIC=\u201a\u00b1\u201a\u00cc NIC \u201a\u00f0\u201a\u00b1\u201a\u00cc VM \u201a\u00cc\u0192f\u0192t\u0192H\u0192\u2039\u0192g\u201a\u00c9\ufffd\u00dd\u2019\u00e8\u201a\u00b5\u201a\u00c4\u201a\u00e0\u201a\u00e6\u201a\u00eb\u201a\u00b5\u201a\u00a2\u201a\u00c5\u201a\u00b7\u201a\u00a9? -message.set.default.NIC.manual=\ufffd\u00a1\u201a\u00b7\u201a\u00ae\u201a\u00c9\u201a\u00b1\u201a\u00cc VM \u201a\u00cc\u0192f\u0192t\u0192H\u0192\u2039\u0192g NIC \u201a\u00f0\u017d\u00e8\u201c\u00ae\u201a\u00c5\ufffdX\ufffdV\u201a\u00b5\u201a\u00c4\u201a\u00ad\u201a\u00be\u201a\u00b3\u201a\u00a2\ufffdB -message.instance.scaled.up.confirm=\u0192C\u0192\u201c\u0192X\u0192^\u0192\u201c\u0192X\u201a\u00cc\u0192T\u0192C\u0192Y\u201a\u00f0\u0160g\u2018\u00e5\u201a\u00b5\u201a\u00c4\u201a\u00e0\u201a\u00e6\u201a\u00eb\u201a\u00b5\u201a\u00a2\u201a\u00c5\u201a\u00b7\u201a\u00a9? -message.copy.template.confirm=\u0192e\u0192\u201c\u0192v\u0192\u0152\ufffd[\u0192g\u201a\u00f0\u0192R\u0192s\ufffd[\u201a\u00b5\u201a\u00c4\u201a\u00e0\u201a\u00e6\u201a\u00eb\u201a\u00b5\u201a\u00a2\u201a\u00c5\u201a\u00b7\u201a\u00a9? -message.template.copying=\u0192e\u0192\u201c\u0192v\u0192\u0152\ufffd[\u0192g\u201a\u00f0\u0192R\u0192s\ufffd[\u201a\u00b5\u201a\u00c4\u201a\u00a2\u201a\u00dc\u201a\u00b7\ufffdB -message.XSTools61plus.update.failed=Failed to update Original XS Version is 6.1\+ field. Error\: -message.gslb.delete.confirm=\u201a\u00b1\u201a\u00cc GSLB \u201a\u00f0\ufffd\u00ed\ufffd\u0153\u201a\u00b5\u201a\u00c4\u201a\u00e0\u201a\u00e6\u201a\u00eb\u201a\u00b5\u201a\u00a2\u201a\u00c5\u201a\u00b7\u201a\u00a9? -message.portable.ip.delete.confirm=\u201a\u00b1\u201a\u00cc\u0192|\ufffd[\u0192^\u0192u\u0192\u2039 IP \u0192A\u0192h\u0192\u0152\u0192X\u201a\u00cc\u201d\u00cd\u02c6\u00cd\u201a\u00f0\ufffd\u00ed\ufffd\u0153\u201a\u00b5\u201a\u00c4\u201a\u00e0\u201a\u00e6\u201a\u00eb\u201a\u00b5\u201a\u00a2\u201a\u00c5\u201a\u00b7\u201a\u00a9? -message.gslb.lb.remove.confirm=GSLB \u201a\u00a9\u201a\u00e7\u2022\u2030\u2030\u00d7\u2022\u00aa\u017dU\u201a\u00f0\ufffd\u00ed\ufffd\u0153\u201a\u00b5\u201a\u00c4\u201a\u00e0\u201a\u00e6\u201a\u00eb\u201a\u00b5\u201a\u00a2\u201a\u00c5\u201a\u00b7\u201a\u00a9? -message.admin.guide.read=VMware \u0192x\ufffd[\u0192X\u201a\u00cc VM \u201a\u00c9\u201a\u00c2\u201a\u00a2\u201a\u00c4\u201a\u00cd\ufffdA\u0192T\u0192C\u0192Y\u2022\u00cf\ufffdX\u201a\u00cc\u2018O\u201a\u00c9\u0160\u00c7\u2014\ufffd\u017d\u00d2\u0192K\u0192C\u0192h\u201a\u00cc\u201c\u00ae\u201cI\u201a\u00c8\u0192T\u0192C\u0192Y\u2022\u00cf\ufffdX\u201a\u00cc\u0192Z\u0192N\u0192V\u0192\u2021\u0192\u201c\u201a\u00f0\u201a\u00a8\u201c\u00c7\u201a\u00dd\u201a\u00ad\u201a\u00be\u201a\u00b3\u201a\u00a2\ufffdB\u2018\u00b1\ufffds\u201a\u00b5\u201a\u00c4\u201a\u00e0\u201a\u00e6\u201a\u00eb\u201a\u00b5\u201a\u00a2\u201a\u00c5\u201a\u00b7\u201a\u00a9?\, -message.tier.required=\u0160K\u2018w\u201a\u00cd\u2022K\ufffd{\u201a\u00c5\u201a\u00b7 -message.remove.ldap=LDAP \ufffd\\ufffd\u00ac\u201a\u00f0\ufffd\u00ed\ufffd\u0153\u201a\u00b5\u201a\u00c4\u201a\u00e0\u201a\u00e6\u201a\u00eb\u201a\u00b5\u201a\u00a2\u201a\u00c5\u201a\u00b7\u201a\u00a9? -message.action.downloading.template=\u0192e\u0192\u201c\u0192v\u0192\u0152\ufffd[\u0192g\u201a\u00f0\u0192_\u0192E\u0192\u201c\u0192\ufffd\ufffd[\u0192h\u201a\u00b5\u201a\u00c4\u201a\u00a2\u201a\u00dc\u201a\u00b7\ufffdB -message.configure.ldap=LDAP \u201a\u00f0\ufffd\\ufffd\u00ac\u201a\u00b5\u201a\u00c4\u201a\u00e0\u201a\u00e6\u201a\u00eb\u201a\u00b5\u201a\u00a2\u201a\u00c5\u201a\u00b7\u201a\u00a9? -message.confirm.delete.ciscovnmc.resource=Cisco VNMC \u0192\u0160\u0192\\ufffd[\u0192X\u201a\u00f0\ufffd\u00ed\ufffd\u0153\u201a\u00b5\u201a\u00c4\u201a\u00e0\u201a\u00e6\u201a\u00eb\u201a\u00b5\u201a\u00a2\u201a\u00c5\u201a\u00b7\u201a\u00a9? -message.confirm.add.vnmc.provider=VNMC \u0192v\u0192\ufffd\u0192o\u0192C\u0192_\ufffd[\u201a\u00f0\u2019\u00c7\u2030\u00c1\u201a\u00b5\u201a\u00c4\u201a\u00e0\u201a\u00e6\u201a\u00eb\u201a\u00b5\u201a\u00a2\u201a\u00c5\u201a\u00b7\u201a\u00a9? -message.confirm.enable.vnmc.provider=VNMC \u0192v\u0192\ufffd\u0192o\u0192C\u0192_\ufffd[\u201a\u00f0\u2014L\u0152\u00f8\u201a\u00c9\u201a\u00b5\u201a\u00c4\u201a\u00e0\u201a\u00e6\u201a\u00eb\u201a\u00b5\u201a\u00a2\u201a\u00c5\u201a\u00b7\u201a\u00a9? -message.confirm.disable.vnmc.provider=VNMC \u0192v\u0192\ufffd\u0192o\u0192C\u0192_\ufffd[\u201a\u00f0\u2013\u00b3\u0152\u00f8\u201a\u00c9\u201a\u00b5\u201a\u00c4\u201a\u00e0\u201a\u00e6\u201a\u00eb\u201a\u00b5\u201a\u00a2\u201a\u00c5\u201a\u00b7\u201a\u00a9? -message.vnmc.available.list=\u0192v\u0192\ufffd\u0192o\u0192C\u0192_\ufffd[\u02c6\u00ea\u2014\u2014\u201a\u00c5 VNMC \u201a\u00f0\u2014\u02dc\u2014p\u201a\u00c5\u201a\u00ab\u201a\u00dc\u201a\u00b9\u201a\u00f1\ufffdB -message.vnmc.not.available.list=\u0192v\u0192\ufffd\u0192o\u0192C\u0192_\ufffd[\u02c6\u00ea\u2014\u2014\u201a\u00c5 VNMC \u201a\u00f0\u2014\u02dc\u2014p\u201a\u00c5\u201a\u00ab\u201a\u00dc\u201a\u00b9\u201a\u00f1\ufffdB -message.confirm.release.dedicate.vlan.range=\ufffd\u00ea\u2014p VLAN \u201a\u00cc\u201d\u00cd\u02c6\u00cd\u201a\u00f0\u2030\u00f0\u2022\u00fa\u201a\u00b5\u201a\u00c4\u201a\u00e0\u201a\u00e6\u201a\u00eb\u201a\u00b5\u201a\u00a2\u201a\u00c5\u201a\u00b7\u201a\u00a9? -message.confirm.start.lb.vm=LB VM \u201a\u00f0\u2039N\u201c\u00ae\u201a\u00b5\u201a\u00c4\u201a\u00e0\u201a\u00e6\u201a\u00eb\u201a\u00b5\u201a\u00a2\u201a\u00c5\u201a\u00b7\u201a\u00a9? -message.confirm.stop.lb.vm=LB VM \u201a\u00f0\u2019\u00e2\u017d~\u201a\u00b5\u201a\u00c4\u201a\u00e0\u201a\u00e6\u201a\u00eb\u201a\u00b5\u201a\u00a2\u201a\u00c5\u201a\u00b7\u201a\u00a9? -message.confirm.remove.vmware.datacenter=VMware \u0192f\ufffd[\u0192^\u0192Z\u0192\u201c\u0192^\ufffd[\u201a\u00f0\ufffd\u00ed\ufffd\u0153\u201a\u00b5\u201a\u00c4\u201a\u00e0\u201a\u00e6\u201a\u00eb\u201a\u00b5\u201a\u00a2\u201a\u00c5\u201a\u00b7\u201a\u00a9? -message.confirm.dedicate.zone=\u201a\u00b1\u201a\u00cc\u0192]\ufffd[\u0192\u201c\u201a\u00f0\u0192h\u0192\ufffd\u0192C\u0192\u201c/\u0192A\u0192J\u0192E\u0192\u201c\u0192g\ufffd\u00ea\u2014p\u201a\u00c9\ufffd\u00dd\u2019\u00e8\u201a\u00b5\u201a\u00c4\u201a\u00e0\u201a\u00e6\u201a\u00eb\u201a\u00b5\u201a\u00a2\u201a\u00c5\u201a\u00b7\u201a\u00a9? -message.confirm.release.dedicated.zone=\u201a\u00b1\u201a\u00cc\ufffd\u00ea\u2014p\u0192]\ufffd[\u0192\u201c\u201a\u00f0\u2030\u00f0\u2022\u00fa\u201a\u00b5\u201a\u00c4\u201a\u00e0\u201a\u00e6\u201a\u00eb\u201a\u00b5\u201a\u00a2\u201a\u00c5\u201a\u00b7\u201a\u00a9? -message.dedicated.zone.released=\ufffd\u00ea\u2014p\u0192]\ufffd[\u0192\u201c\u201a\u00aa\u2030\u00f0\u2022\u00fa\u201a\u00b3\u201a\u00ea\u201a\u00dc\u201a\u00b5\u201a\u00bd -message.read.admin.guide.scaling.up=\u0192T\u0192C\u0192Y\u201a\u00f0\u0160g\u2018\u00e5\u201a\u00b7\u201a\u00e9\u2018O\u201a\u00c9\u0160\u00c7\u2014\ufffd\u017d\u00d2\u0192K\u0192C\u0192h\u201a\u00cc\u201c\u00ae\u201cI\u201a\u00c8\u0192T\u0192C\u0192Y\u2022\u00cf\ufffdX\u201a\u00cc\u0192Z\u0192N\u0192V\u0192\u2021\u0192\u201c\u201a\u00f0\u201a\u00a8\u201c\u00c7\u201a\u00dd\u201a\u00ad\u201a\u00be\u201a\u00b3\u201a\u00a2\ufffdB -message.confirm.scale.up.system.vm=\u0192V\u0192X\u0192e\u0192\u20ac VM \u201a\u00cc\u0192T\u0192C\u0192Y\u201a\u00f0\u0160g\u2018\u00e5\u201a\u00b5\u201a\u00c4\u201a\u00e0\u201a\u00e6\u201a\u00eb\u201a\u00b5\u201a\u00a2\u201a\u00c5\u201a\u00b7\u201a\u00a9? -message.confirm.upgrade.router.newer.template=\u0192\u2039\ufffd[\u0192^\ufffd[\u201a\u00f0\u0192A\u0192b\u0192v\u0192O\u0192\u0152\ufffd[\u0192h\u201a\u00b5\u201a\u00c4\ufffdV\u201a\u00b5\u201a\u00a2\u0192e\u0192\u201c\u0192v\u0192\u0152\ufffd[\u0192g\u201a\u00f0\u017dg\u2014p\u201a\u00b5\u201a\u00c4\u201a\u00e0\u201a\u00e6\u201a\u00eb\u201a\u00b5\u201a\u00a2\u201a\u00c5\u201a\u00b7\u201a\u00a9? -message.confirm.scale.up.router.vm=\u0192\u2039\ufffd[\u0192^\ufffd[ VM \u201a\u00cc\u0192T\u0192C\u0192Y\u201a\u00f0\u0160g\u2018\u00e5\u201a\u00b5\u201a\u00c4\u201a\u00e0\u201a\u00e6\u201a\u00eb\u201a\u00b5\u201a\u00a2\u201a\u00c5\u201a\u00b7\u201a\u00a9? -message.confirm.upgrade.routers.newtemplate=\u201a\u00b1\u201a\u00cc\u0192]\ufffd[\u0192\u201c\u201a\u00cc\u201a\u00b7\u201a\u00d7\u201a\u00c4\u201a\u00cc\u0192\u2039\ufffd[\u0192^\ufffd[\u201a\u00f0\u0192A\u0192b\u0192v\u0192O\u0192\u0152\ufffd[\u0192h\u201a\u00b5\u201a\u00c4\ufffdV\u201a\u00b5\u201a\u00a2\u0192e\u0192\u201c\u0192v\u0192\u0152\ufffd[\u0192g\u201a\u00f0\u017dg\u2014p\u201a\u00b5\u201a\u00c4\u201a\u00e0\u201a\u00e6\u201a\u00eb\u201a\u00b5\u201a\u00a2\u201a\u00c5\u201a\u00b7\u201a\u00a9? -message.confirm.upgrade.routers.pod.newtemplate=\u201a\u00b1\u201a\u00cc\u0192|\u0192b\u0192h\u201a\u00cc\u201a\u00b7\u201a\u00d7\u201a\u00c4\u201a\u00cc\u0192\u2039\ufffd[\u0192^\ufffd[\u201a\u00f0\u0192A\u0192b\u0192v\u0192O\u0192\u0152\ufffd[\u0192h\u201a\u00b5\u201a\u00c4\ufffdV\u201a\u00b5\u201a\u00a2\u0192e\u0192\u201c\u0192v\u0192\u0152\ufffd[\u0192g\u201a\u00f0\u017dg\u2014p\u201a\u00b5\u201a\u00c4\u201a\u00e0\u201a\u00e6\u201a\u00eb\u201a\u00b5\u201a\u00a2\u201a\u00c5\u201a\u00b7\u201a\u00a9? -message.confirm.upgrade.routers.cluster.newtemplate=\u201a\u00b1\u201a\u00cc\u0192N\u0192\u2030\u0192X\u0192^\ufffd[\u201a\u00cc\u201a\u00b7\u201a\u00d7\u201a\u00c4\u201a\u00cc\u0192\u2039\ufffd[\u0192^\ufffd[\u201a\u00f0\u0192A\u0192b\u0192v\u0192O\u0192\u0152\ufffd[\u0192h\u201a\u00b5\u201a\u00c4\ufffdV\u201a\u00b5\u201a\u00a2\u0192e\u0192\u201c\u0192v\u0192\u0152\ufffd[\u0192g\u201a\u00f0\u017dg\u2014p\u201a\u00b5\u201a\u00c4\u201a\u00e0\u201a\u00e6\u201a\u00eb\u201a\u00b5\u201a\u00a2\u201a\u00c5\u201a\u00b7\u201a\u00a9? -message.confirm.upgrade.routers.account.newtemplate=\u201a\u00b1\u201a\u00cc\u0192A\u0192J\u0192E\u0192\u201c\u0192g\u201a\u00cc\u201a\u00b7\u201a\u00d7\u201a\u00c4\u201a\u00cc\u0192\u2039\ufffd[\u0192^\ufffd[\u201a\u00f0\u0192A\u0192b\u0192v\u0192O\u0192\u0152\ufffd[\u0192h\u201a\u00b5\u201a\u00c4\ufffdV\u201a\u00b5\u201a\u00a2\u0192e\u0192\u201c\u0192v\u0192\u0152\ufffd[\u0192g\u201a\u00f0\u017dg\u2014p\u201a\u00b5\u201a\u00c4\u201a\u00e0\u201a\u00e6\u201a\u00eb\u201a\u00b5\u201a\u00a2\u201a\u00c5\u201a\u00b7\u201a\u00a9? -message.confirm.dedicate.pod.domain.account=\u201a\u00b1\u201a\u00cc\u0192|\u0192b\u0192h\u201a\u00f0\u0192h\u0192\ufffd\u0192C\u0192\u201c/\u0192A\u0192J\u0192E\u0192\u201c\u0192g\ufffd\u00ea\u2014p\u201a\u00c9\ufffd\u00dd\u2019\u00e8\u201a\u00b5\u201a\u00c4\u201a\u00e0\u201a\u00e6\u201a\u00eb\u201a\u00b5\u201a\u00a2\u201a\u00c5\u201a\u00b7\u201a\u00a9? -message.confirm.release.dedicated.pod=\u201a\u00b1\u201a\u00cc\ufffd\u00ea\u2014p\u0192|\u0192b\u0192h\u201a\u00f0\u2030\u00f0\u2022\u00fa\u201a\u00b5\u201a\u00c4\u201a\u00e0\u201a\u00e6\u201a\u00eb\u201a\u00b5\u201a\u00a2\u201a\u00c5\u201a\u00b7\u201a\u00a9? -message.pod.dedication.released=\ufffd\u00ea\u2014p\u0192|\u0192b\u0192h\u201a\u00aa\u2030\u00f0\u2022\u00fa\u201a\u00b3\u201a\u00ea\u201a\u00dc\u201a\u00b5\u201a\u00bd -message.confirm.dedicate.cluster.domain.account=\u201a\u00b1\u201a\u00cc\u0192N\u0192\u2030\u0192X\u0192^\ufffd[\u201a\u00f0\u0192h\u0192\ufffd\u0192C\u0192\u201c/\u0192A\u0192J\u0192E\u0192\u201c\u0192g\ufffd\u00ea\u2014p\u201a\u00c9\ufffd\u00dd\u2019\u00e8\u201a\u00b5\u201a\u00c4\u201a\u00e0\u201a\u00e6\u201a\u00eb\u201a\u00b5\u201a\u00a2\u201a\u00c5\u201a\u00b7\u201a\u00a9? -message.cluster.dedicated=\u0192N\u0192\u2030\u0192X\u0192^\ufffd[\u201a\u00f0\ufffd\u00ea\u2014p\u201a\u00c9\ufffd\u00dd\u2019\u00e8\u201a\u00b5\u201a\u00dc\u201a\u00b5\u201a\u00bd -message.confirm.release.dedicated.cluster=\u201a\u00b1\u201a\u00cc\ufffd\u00ea\u2014p\u0192N\u0192\u2030\u0192X\u0192^\ufffd[\u201a\u00f0\u2030\u00f0\u2022\u00fa\u201a\u00b5\u201a\u00c4\u201a\u00e0\u201a\u00e6\u201a\u00eb\u201a\u00b5\u201a\u00a2\u201a\u00c5\u201a\u00b7\u201a\u00a9? -message.cluster.dedication.released=\ufffd\u00ea\u2014p\u0192N\u0192\u2030\u0192X\u0192^\ufffd[\u201a\u00aa\u2030\u00f0\u2022\u00fa\u201a\u00b3\u201a\u00ea\u201a\u00dc\u201a\u00b5\u201a\u00bd -message.confirm.dedicate.host.domain.account=\u201a\u00b1\u201a\u00cc\u0192z\u0192X\u0192g\u201a\u00f0\u0192h\u0192\ufffd\u0192C\u0192\u201c/\u0192A\u0192J\u0192E\u0192\u201c\u0192g\ufffd\u00ea\u2014p\u201a\u00c9\ufffd\u00dd\u2019\u00e8\u201a\u00b5\u201a\u00c4\u201a\u00e0\u201a\u00e6\u201a\u00eb\u201a\u00b5\u201a\u00a2\u201a\u00c5\u201a\u00b7\u201a\u00a9? -message.host.dedicated=\u0192z\u0192X\u0192g\u201a\u00f0\ufffd\u00ea\u2014p\u201a\u00c9\ufffd\u00dd\u2019\u00e8\u201a\u00b5\u201a\u00dc\u201a\u00b5\u201a\u00bd -message.confirm.release.dedicated.host=\u201a\u00b1\u201a\u00cc\ufffd\u00ea\u2014p\u0192z\u0192X\u0192g\u201a\u00f0\u2030\u00f0\u2022\u00fa\u201a\u00b5\u201a\u00c4\u201a\u00e0\u201a\u00e6\u201a\u00eb\u201a\u00b5\u201a\u00a2\u201a\u00c5\u201a\u00b7\u201a\u00a9? -message.host.dedication.released=\ufffd\u00ea\u2014p\u0192z\u0192X\u0192g\u201a\u00aa\u2030\u00f0\u2022\u00fa\u201a\u00b3\u201a\u00ea\u201a\u00dc\u201a\u00b5\u201a\u00bd -message.confirm.delete.ucs.manager=UCS Manager \u201a\u00f0\ufffd\u00ed\ufffd\u0153\u201a\u00b5\u201a\u00c4\u201a\u00e0\u201a\u00e6\u201a\u00eb\u201a\u00b5\u201a\u00a2\u201a\u00c5\u201a\u00b7\u201a\u00a9? -message.confirm.refresh.blades=\u0192u\u0192\u0152\ufffd[\u0192h\u201a\u00f0\ufffdX\ufffdV\u201a\u00b5\u201a\u00c4\u201a\u00e0\u201a\u00e6\u201a\u00eb\u201a\u00b5\u201a\u00a2\u201a\u00c5\u201a\u00b7\u201a\u00a9? -message.confirm.delete.secondary.staging.store=\u0192Z\u0192J\u0192\u201c\u0192_\u0192\u0160 \u0192X\u0192e\ufffd[\u0192W\u0192\u201c\u0192O \u0192X\u0192g\u0192A\u201a\u00f0\ufffd\u00ed\ufffd\u0153\u201a\u00b5\u201a\u00c4\u201a\u00e0\u201a\u00e6\u201a\u00eb\u201a\u00b5\u201a\u00a2\u201a\u00c5\u201a\u00b7\u201a\u00a9? -message.select.tier=\u0160K\u2018w\u201a\u00f0\u2018I\u2018\u00f0\u201a\u00b5\u201a\u00c4\u201a\u00ad\u201a\u00be\u201a\u00b3\u201a\u00a2\ufffdB -message.disallowed.characters=\u2039\u2013\u2030\u00c2\u201a\u00b3\u201a\u00ea\u201a\u00c8\u201a\u00a2\u2022\u00b6\u017d\u0161: \<\,\> -message.waiting.for.builtin.templates.to.load=\u2018g\u201a\u00dd\ufffd\u017e\u201a\u00dd\u0192e\u0192\u201c\u0192v\u0192\u0152\ufffd[\u0192g\u201a\u00cc\u0192\ufffd\ufffd[\u0192h\u201a\u00f0\u2018\u00d2\u2039@\u201a\u00b5\u201a\u00c4\u201a\u00a2\u201a\u00dc\u201a\u00b7... -message.systems.vms.ready=\u0192V\u0192X\u0192e\u0192\u20ac VM \u201a\u00cc\ufffd\u20ac\u201d\u00f5\u201a\u00aa\u201a\u00c5\u201a\u00ab\u201a\u00dc\u201a\u00b5\u201a\u00bd\ufffdB -message.your.cloudstack.is.ready=CloudStack \u201a\u00cc\ufffd\u20ac\u201d\u00f5\u201a\u00aa\u201a\u00c5\u201a\u00ab\u201a\u00dc\u201a\u00b5\u201a\u00bd\! -message.specifiy.tag.key.value=\u0192^\u0192O \u0192L\ufffd[\u201a\u00a8\u201a\u00e6\u201a\u00d1\u2019l\u201a\u00f0\u017dw\u2019\u00e8\u201a\u00b5\u201a\u00c4\u201a\u00ad\u201a\u00be\u201a\u00b3\u201a\u00a2 -message.enter.seperated.list.multiple.cidrs=CIDR \u201a\u00aa\u2022\u00a1\ufffd\u201d\u201a\u00a0\u201a\u00e9\ufffd\u00ea\ufffd\u2021\u201a\u00cd\ufffdA\u0192R\u0192\u201c\u0192}\u2039\u00e6\ufffd\u00d8\u201a\u00e8\u201a\u00cc\u02c6\u00ea\u2014\u2014\u201a\u00f0\u201c\u00fc\u2014\u00cd\u201a\u00b5\u201a\u00c4\u201a\u00ad\u201a\u00be\u201a\u00b3\u201a\u00a2 -message.disabling.network.offering=\u0192l\u0192b\u0192g\u0192\ufffd\ufffd[\u0192N \u0192I\u0192t\u0192@\u0192\u0160\u0192\u201c\u0192O\u201a\u00f0\u2013\u00b3\u0152\u00f8\u201a\u00c9\u201a\u00b5\u201a\u00c4\u201a\u00a2\u201a\u00dc\u201a\u00b7 -message.confirm.enable.network.offering=\u201a\u00b1\u201a\u00cc\u0192l\u0192b\u0192g\u0192\ufffd\ufffd[\u0192N \u0192I\u0192t\u0192@\u0192\u0160\u0192\u201c\u0192O\u201a\u00f0\u2014L\u0152\u00f8\u201a\u00c9\u201a\u00b5\u201a\u00c4\u201a\u00e0\u201a\u00e6\u201a\u00eb\u201a\u00b5\u201a\u00a2\u201a\u00c5\u201a\u00b7\u201a\u00a9? -message.enabling.network.offering=\u0192l\u0192b\u0192g\u0192\ufffd\ufffd[\u0192N \u0192I\u0192t\u0192@\u0192\u0160\u0192\u201c\u0192O\u201a\u00f0\u2014L\u0152\u00f8\u201a\u00c9\u201a\u00b5\u201a\u00c4\u201a\u00a2\u201a\u00dc\u201a\u00b7 -message.confirm.remove.network.offering=\u201a\u00b1\u201a\u00cc\u0192l\u0192b\u0192g\u0192\ufffd\ufffd[\u0192N \u0192I\u0192t\u0192@\u0192\u0160\u0192\u201c\u0192O\u201a\u00f0\ufffd\u00ed\ufffd\u0153\u201a\u00b5\u201a\u00c4\u201a\u00e0\u201a\u00e6\u201a\u00eb\u201a\u00b5\u201a\u00a2\u201a\u00c5\u201a\u00b7\u201a\u00a9? -message.confirm.disable.network.offering=\u201a\u00b1\u201a\u00cc\u0192l\u0192b\u0192g\u0192\ufffd\ufffd[\u0192N \u0192I\u0192t\u0192@\u0192\u0160\u0192\u201c\u0192O\u201a\u00f0\u2013\u00b3\u0152\u00f8\u201a\u00c9\u201a\u00b5\u201a\u00c4\u201a\u00e0\u201a\u00e6\u201a\u00eb\u201a\u00b5\u201a\u00a2\u201a\u00c5\u201a\u00b7\u201a\u00a9? -message.disabling.vpc.offering=VPC \u0192I\u0192t\u0192@\u0192\u0160\u0192\u201c\u0192O\u201a\u00f0\u2013\u00b3\u0152\u00f8\u201a\u00c9\u201a\u00b5\u201a\u00c4\u201a\u00a2\u201a\u00dc\u201a\u00b7 -message.confirm.enable.vpc.offering=\u201a\u00b1\u201a\u00cc VPC \u0192I\u0192t\u0192@\u0192\u0160\u0192\u201c\u0192O\u201a\u00f0\u2014L\u0152\u00f8\u201a\u00c9\u201a\u00b5\u201a\u00c4\u201a\u00e0\u201a\u00e6\u201a\u00eb\u201a\u00b5\u201a\u00a2\u201a\u00c5\u201a\u00b7\u201a\u00a9? -message.enabling.vpc.offering=VPC \u0192I\u0192t\u0192@\u0192\u0160\u0192\u201c\u0192O\u201a\u00f0\u2014L\u0152\u00f8\u201a\u00c9\u201a\u00b5\u201a\u00c4\u201a\u00a2\u201a\u00dc\u201a\u00b7 -message.confirm.remove.vpc.offering=\u201a\u00b1\u201a\u00cc VPC \u0192I\u0192t\u0192@\u0192\u0160\u0192\u201c\u0192O\u201a\u00f0\ufffd\u00ed\ufffd\u0153\u201a\u00b5\u201a\u00c4\u201a\u00e0\u201a\u00e6\u201a\u00eb\u201a\u00b5\u201a\u00a2\u201a\u00c5\u201a\u00b7\u201a\u00a9? -message.confirm.disable.vpc.offering=\u201a\u00b1\u201a\u00cc VPC \u0192I\u0192t\u0192@\u0192\u0160\u0192\u201c\u0192O\u201a\u00f0\u2013\u00b3\u0152\u00f8\u201a\u00c9\u201a\u00b5\u201a\u00c4\u201a\u00e0\u201a\u00e6\u201a\u00eb\u201a\u00b5\u201a\u00a2\u201a\u00c5\u201a\u00b7\u201a\u00a9? -mode=\u0192\u201a\ufffd[\u0192h -network.rate=\u0192l\u0192b\u0192g\u0192\ufffd\ufffd[\u0192N\u2018\u00ac\u201cx -notification.reboot.instance=\u0192C\u0192\u201c\u0192X\u0192^\u0192\u201c\u0192X\u201a\u00cc\ufffd\u00c4\u2039N\u201c\u00ae -notification.start.instance=\u0192C\u0192\u201c\u0192X\u0192^\u0192\u201c\u0192X\u201a\u00cc\u2039N\u201c\u00ae -notification.stop.instance=\u0192C\u0192\u201c\u0192X\u0192^\u0192\u201c\u0192X\u201a\u00cc\u2019\u00e2\u017d~ -side.by.side=\u2022\u00c0\u2014\u00f1 -state.Accepted=\ufffd\u00b3\u2018\u00f8\ufffd\u00cf\u201a\u00dd -state.Active=\u0192A\u0192N\u0192e\u0192B\u0192u -state.Allocated=\u0160\u201e\u201a\u00e8\u201c\u2013\u201a\u00c4\ufffd\u00cf\u201a\u00dd -state.Allocating=\u0160\u201e\u201a\u00e8\u201c\u2013\u201a\u00c4\u2019\u2020 -state.BackedUp=\u0192o\u0192b\u0192N\u0192A\u0192b\u0192v\ufffd\u00cf\u201a\u00dd -state.BackingUp=\u0192o\u0192b\u0192N\u0192A\u0192b\u0192v\u2019\u2020 -state.Completed=\u0160\u00ae\u2014\u00b9 -state.Creating=\ufffd\u00ec\ufffd\u00ac\u2019\u2020 -state.Declined=\u017d\u00ab\u2018\u00de -state.Destroyed=\u201dj\u0160\u00fc\ufffd\u00cf\u201a\u00dd -state.Disabled=\u2013\u00b3\u0152\u00f8 -state.Enabled=\u2014L\u0152\u00f8 -state.enabled=\u2014L\u0152\u00f8 -state.Error=\u0192G\u0192\u2030\ufffd[ -state.Expunging=\u2013\u2022\ufffd\u00c1\u2019\u2020 -state.Migrating=\u02c6\u00da\ufffds\u2019\u2020 -state.Pending=\u2022\u00db\u2014\u00af -state.Ready=\ufffd\u20ac\u201d\u00f5\u0160\u00ae\u2014\u00b9 -state.ready=\ufffd\u20ac\u201d\u00f5\u0160\u00ae\u2014\u00b9 -state.Running=\u017d\u00c0\ufffds\u2019\u2020 -state.Starting=\u0160J\u017dn\u2019\u2020 -state.Stopped=\u2019\u00e2\u017d~\ufffd\u00cf\u201a\u00dd -state.Stopping=\u2019\u00e2\u017d~\u201a\u00b5\u201a\u00c4\u201a\u00a2\u201a\u00dc\u201a\u00b7 -state.Suspended=\u02c6\u00ea\u017d\u017e\u2019\u00e2\u017d~ -ui.listView.filters.all=\u201a\u00b7\u201a\u00d7\u201a\u00c4 -ui.listView.filters.mine=\u017d\u00a9\u2022\u00aa\u201a\u00cc\u201a\u00e0\u201a\u00cc +message.step.4.continue=\u7d9a\u884c\u3059\u308b\u306b\u306f\u5c11\u306a\u304f\u3068\u3082 1 \u3064\u30cd\u30c3\u30c8\u30ef\u30fc\u30af\u3092\u9078\u629e\u3057\u3066\u304f\u3060\u3055\u3044 +message.step.4.desc=\u4eee\u60f3\u30a4\u30f3\u30b9\u30bf\u30f3\u30b9\u304c\u63a5\u7d9a\u3059\u308b\u30d7\u30e9\u30a4\u30de\u30ea \u30cd\u30c3\u30c8\u30ef\u30fc\u30af\u3092\u9078\u629e\u3057\u3066\u304f\u3060\u3055\u3044\u3002 +message.storage.traffic=\u30db\u30b9\u30c8\u3084 CloudStack \u30b7\u30b9\u30c6\u30e0 VM \u306a\u3069\u3001\u7ba1\u7406\u30b5\u30fc\u30d0\u30fc\u3068\u901a\u4fe1\u3059\u308b CloudStack \u306e\u5185\u90e8\u30ea\u30bd\u30fc\u30b9\u9593\u306e\u30c8\u30e9\u30d5\u30a3\u30c3\u30af\u3067\u3059\u3002\u3053\u3053\u3067\u30b9\u30c8\u30ec\u30fc\u30b8 \u30c8\u30e9\u30d5\u30a3\u30c3\u30af\u3092\u69cb\u6210\u3057\u3066\u304f\u3060\u3055\u3044\u3002 +message.suspend.project=\u3053\u306e\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u3092\u4e00\u6642\u505c\u6b62\u3057\u3066\u3082\u3088\u308d\u3057\u3044\u3067\u3059\u304b? +message.template.desc=VM \u306e\u8d77\u52d5\u306b\u4f7f\u7528\u3067\u304d\u308b OS \u30a4\u30e1\u30fc\u30b8 +message.tooltip.dns.1=\u30be\u30fc\u30f3\u5185\u306e VM \u3067\u4f7f\u7528\u3059\u308b DNS \u30b5\u30fc\u30d0\u30fc\u306e\u540d\u524d\u3067\u3059\u3002\u30be\u30fc\u30f3\u306e\u30d1\u30d6\u30ea\u30c3\u30af IP \u30a2\u30c9\u30ec\u30b9\u304b\u3089\u3001\u3053\u306e\u30b5\u30fc\u30d0\u30fc\u306b\u901a\u4fe1\u3067\u304d\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002 +message.tooltip.dns.2=\u30be\u30fc\u30f3\u5185\u306e VM \u3067\u4f7f\u7528\u3059\u308b 2 \u756a\u76ee\u306e DNS \u30b5\u30fc\u30d0\u30fc\u306e\u540d\u524d\u3067\u3059\u3002\u30be\u30fc\u30f3\u306e\u30d1\u30d6\u30ea\u30c3\u30af IP \u30a2\u30c9\u30ec\u30b9\u304b\u3089\u3001\u3053\u306e\u30b5\u30fc\u30d0\u30fc\u306b\u901a\u4fe1\u3067\u304d\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002 +message.tooltip.internal.dns.1=\u30be\u30fc\u30f3\u5185\u306e CloudStack \u5185\u90e8\u30b7\u30b9\u30c6\u30e0 VM \u3067\u4f7f\u7528\u3059\u308b DNS \u30b5\u30fc\u30d0\u30fc\u306e\u540d\u524d\u3067\u3059\u3002\u30dd\u30c3\u30c9\u306e\u30d7\u30e9\u30a4\u30d9\u30fc\u30c8 IP \u30a2\u30c9\u30ec\u30b9\u304b\u3089\u3001\u3053\u306e\u30b5\u30fc\u30d0\u30fc\u306b\u901a\u4fe1\u3067\u304d\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002 +message.tooltip.internal.dns.2=\u30be\u30fc\u30f3\u5185\u306e CloudStack \u5185\u90e8\u30b7\u30b9\u30c6\u30e0 VM \u3067\u4f7f\u7528\u3059\u308b DNS \u30b5\u30fc\u30d0\u30fc\u306e\u540d\u524d\u3067\u3059\u3002\u30dd\u30c3\u30c9\u306e\u30d7\u30e9\u30a4\u30d9\u30fc\u30c8 IP \u30a2\u30c9\u30ec\u30b9\u304b\u3089\u3001\u3053\u306e\u30b5\u30fc\u30d0\u30fc\u306b\u901a\u4fe1\u3067\u304d\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002 +message.tooltip.network.domain=DNS \u30b5\u30d5\u30a3\u30c3\u30af\u30b9\u3067\u3059\u3002\u3053\u306e\u30b5\u30d5\u30a3\u30c3\u30af\u30b9\u304b\u3089\u30b2\u30b9\u30c8 VM \u3067\u30a2\u30af\u30bb\u30b9\u3059\u308b\u30cd\u30c3\u30c8\u30ef\u30fc\u30af\u306e\u30ab\u30b9\u30bf\u30e0 \u30c9\u30e1\u30a4\u30f3\u540d\u304c\u4f5c\u6210\u3055\u308c\u307e\u3059\u3002 +message.tooltip.pod.name=\u3053\u306e\u30dd\u30c3\u30c9\u306e\u540d\u524d\u3067\u3059\u3002 +message.tooltip.reserved.system.gateway=\u30dd\u30c3\u30c9\u5185\u306e\u30db\u30b9\u30c8\u306e\u30b2\u30fc\u30c8\u30a6\u30a7\u30a4\u3067\u3059\u3002 +message.tooltip.reserved.system.netmask=\u30dd\u30c3\u30c9\u306e\u30b5\u30d6\u30cd\u30c3\u30c8\u3092\u5b9a\u7fa9\u3059\u308b\u30cd\u30c3\u30c8\u30ef\u30fc\u30af \u30d7\u30ec\u30d5\u30a3\u30c3\u30af\u30b9\u3067\u3059\u3002CIDR \u8868\u8a18\u3092\u4f7f\u7528\u3057\u307e\u3059\u3002 +message.tooltip.zone.name=\u30be\u30fc\u30f3\u306e\u540d\u524d\u3067\u3059\u3002 +message.update.os.preference=\u3053\u306e\u30db\u30b9\u30c8\u306e OS \u57fa\u672c\u8a2d\u5b9a\u3092\u9078\u629e\u3057\u3066\u304f\u3060\u3055\u3044\u3002\u540c\u69d8\u306e\u57fa\u672c\u8a2d\u5b9a\u3092\u6301\u3064\u3059\u3079\u3066\u306e\u4eee\u60f3\u30a4\u30f3\u30b9\u30bf\u30f3\u30b9\u306f\u3001\u5225\u306e\u30db\u30b9\u30c8\u3092\u9078\u629e\u3059\u308b\u524d\u306b\u307e\u305a\u3053\u306e\u30db\u30b9\u30c8\u306b\u5272\u308a\u5f53\u3066\u3089\u308c\u307e\u3059\u3002 +message.update.resource.count=\u3053\u306e\u30a2\u30ab\u30a6\u30f3\u30c8\u306e\u30ea\u30bd\u30fc\u30b9\u6570\u3092\u66f4\u65b0\u3057\u3066\u3082\u3088\u308d\u3057\u3044\u3067\u3059\u304b? +message.update.ssl=\u5404\u30b3\u30f3\u30bd\u30fc\u30eb \u30d7\u30ed\u30ad\u30b7\u304a\u3088\u3073\u30bb\u30ab\u30f3\u30c0\u30ea \u30b9\u30c8\u30ec\u30fc\u30b8\u306e\u4eee\u60f3\u30a4\u30f3\u30b9\u30bf\u30f3\u30b9\u3067\u66f4\u65b0\u3059\u308b\u3001X.509 \u6e96\u62e0\u306e\u65b0\u3057\u3044 SSL \u8a3c\u660e\u66f8\u3092\u9001\u4fe1\u3057\u3066\u304f\u3060\u3055\u3044\: +message.validate.instance.name=\u30a4\u30f3\u30b9\u30bf\u30f3\u30b9\u540d\u306f 63 \u6587\u5b57\u4ee5\u5185\u3067\u6307\u5b9a\u3057\u3066\u304f\u3060\u3055\u3044\u3002ASCII \u6587\u5b57\u306e a\uff5ez\u3001A\uff5eZ\u3001\u6570\u5b57\u306e 0\uff5e9\u3001\u304a\u3088\u3073\u30cf\u30a4\u30d5\u30f3\u306e\u307f\u3092\u4f7f\u7528\u3067\u304d\u307e\u3059\u3002\u6587\u5b57\u3067\u59cb\u307e\u308a\u3001\u6587\u5b57\u307e\u305f\u306f\u6570\u5b57\u3067\u7d42\u308f\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002 +message.virtual.network.desc=\u30a2\u30ab\u30a6\u30f3\u30c8\u306e\u5c02\u7528\u4eee\u60f3\u30cd\u30c3\u30c8\u30ef\u30fc\u30af\u3067\u3059\u3002\u30d6\u30ed\u30fc\u30c9\u30ad\u30e3\u30b9\u30c8 \u30c9\u30e1\u30a4\u30f3\u306f VLAN \u5185\u306b\u914d\u7f6e\u3055\u308c\u3001\u30d1\u30d6\u30ea\u30c3\u30af \u30cd\u30c3\u30c8\u30ef\u30fc\u30af\u3078\u306e\u30a2\u30af\u30bb\u30b9\u306f\u3059\u3079\u3066\u4eee\u60f3\u30eb\u30fc\u30bf\u30fc\u306b\u3088\u3063\u3066\u30eb\u30fc\u30c6\u30a3\u30f3\u30b0\u3055\u308c\u307e\u3059\u3002 +message.vm.create.template.confirm=\u30c6\u30f3\u30d7\u30ec\u30fc\u30c8\u3092\u4f5c\u6210\u3059\u308b\u3068 VM \u304c\u81ea\u52d5\u7684\u306b\u518d\u8d77\u52d5\u3055\u308c\u307e\u3059\u3002 +message.vm.review.launch=\u6b21\u306e\u60c5\u5831\u3092\u53c2\u7167\u3057\u3066\u3001\u4eee\u60f3\u30a4\u30f3\u30b9\u30bf\u30f3\u30b9\u3092\u6b63\u3057\u304f\u8a2d\u5b9a\u3057\u305f\u3053\u3068\u3092\u78ba\u8a8d\u3057\u3066\u304b\u3089\u8d77\u52d5\u3057\u3066\u304f\u3060\u3055\u3044\u3002 +message.volume.create.template.confirm=\u3053\u306e\u30c7\u30a3\u30b9\u30af \u30dc\u30ea\u30e5\u30fc\u30e0\u306e\u30c6\u30f3\u30d7\u30ec\u30fc\u30c8\u3092\u4f5c\u6210\u3057\u3066\u3082\u3088\u308d\u3057\u3044\u3067\u3059\u304b? \u30dc\u30ea\u30e5\u30fc\u30e0 \u30b5\u30a4\u30ba\u306b\u3088\u3063\u3066\u306f\u3001\u30c6\u30f3\u30d7\u30ec\u30fc\u30c8\u306e\u4f5c\u6210\u306b\u306f\u6570\u5206\u4ee5\u4e0a\u304b\u304b\u308b\u53ef\u80fd\u6027\u304c\u3042\u308a\u307e\u3059\u3002 +message.you.must.have.at.least.one.physical.network=\u5c11\u306a\u304f\u3068\u3082 1 \u3064\u7269\u7406\u30cd\u30c3\u30c8\u30ef\u30fc\u30af\u304c\u5fc5\u8981\u3067\u3059 +message.zone.creation.complete.would.you.like.to.enable.this.zone=\u30be\u30fc\u30f3\u304c\u4f5c\u6210\u3055\u308c\u307e\u3057\u305f\u3002\u3053\u306e\u30be\u30fc\u30f3\u3092\u6709\u52b9\u306b\u3057\u3066\u3082\u3088\u308d\u3057\u3044\u3067\u3059\u304b? +message.Zone.creation.complete=\u30be\u30fc\u30f3\u304c\u4f5c\u6210\u3055\u308c\u307e\u3057\u305f +message.zone.no.network.selection=\u9078\u629e\u3057\u305f\u30be\u30fc\u30f3\u3067\u306f\u3001\u30cd\u30c3\u30c8\u30ef\u30fc\u30af\u3092\u9078\u629e\u3067\u304d\u307e\u305b\u3093\u3002 +message.zone.step.1.desc=\u30be\u30fc\u30f3\u306e\u30cd\u30c3\u30c8\u30ef\u30fc\u30af \u30e2\u30c7\u30eb\u3092\u9078\u629e\u3057\u3066\u304f\u3060\u3055\u3044\u3002 +message.zone.step.2.desc=\u65b0\u3057\u3044\u30be\u30fc\u30f3\u3092\u8ffd\u52a0\u3059\u308b\u305f\u3081\u306b\u3001\u6b21\u306e\u60c5\u5831\u3092\u5165\u529b\u3057\u3066\u304f\u3060\u3055\u3044\u3002 +message.zone.step.3.desc=\u65b0\u3057\u3044\u30dd\u30c3\u30c9\u3092\u8ffd\u52a0\u3059\u308b\u305f\u3081\u306b\u3001\u6b21\u306e\u60c5\u5831\u3092\u5165\u529b\u3057\u3066\u304f\u3060\u3055\u3044\u3002 +message.zoneWizard.enable.local.storage=\u8b66\u544a\: \u3053\u306e\u30be\u30fc\u30f3\u306e\u30ed\u30fc\u30ab\u30eb \u30b9\u30c8\u30ec\u30fc\u30b8\u3092\u6709\u52b9\u306b\u3059\u308b\u5834\u5408\u306f\u3001\u30b7\u30b9\u30c6\u30e0 VM \u306e\u8d77\u52d5\u5834\u6240\u306b\u5fdc\u3058\u3066\u6b21\u306e\u64cd\u4f5c\u304c\u5fc5\u8981\u3067\u3059\u3002

1. \u30b7\u30b9\u30c6\u30e0 VM \u3092\u5171\u6709\u30d7\u30e9\u30a4\u30de\u30ea \u30b9\u30c8\u30ec\u30fc\u30b8\u3067\u8d77\u52d5\u3059\u308b\u5fc5\u8981\u304c\u3042\u308b\u5834\u5408\u306f\u3001\u5171\u6709\u30d7\u30e9\u30a4\u30de\u30ea \u30b9\u30c8\u30ec\u30fc\u30b8\u3092\u4f5c\u6210\u3057\u305f\u5f8c\u3067\u30be\u30fc\u30f3\u306b\u8ffd\u52a0\u3059\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002\u30be\u30fc\u30f3\u3092\u7121\u52b9\u72b6\u614b\u304b\u3089\u958b\u59cb\u3059\u308b\u5fc5\u8981\u3082\u3042\u308a\u307e\u3059\u3002

2. \u30b7\u30b9\u30c6\u30e0 VM \u3092\u30ed\u30fc\u30ab\u30eb \u30d7\u30e9\u30a4\u30de\u30ea \u30b9\u30c8\u30ec\u30fc\u30b8\u3067\u8d77\u52d5\u3059\u308b\u5fc5\u8981\u304c\u3042\u308b\u5834\u5408\u306f\u3001\u30be\u30fc\u30f3\u3092\u6709\u52b9\u306b\u3059\u308b\u524d\u306b system.vm.use.local.storage \u3092 true \u306b\u8a2d\u5b9a\u3059\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002


\u7d9a\u884c\u3057\u3066\u3082\u3088\u308d\u3057\u3044\u3067\u3059\u304b? +message.validate.fieldrequired=\u3053\u308c\u306f\u5fc5\u9808\u306e\u30d5\u30a3\u30fc\u30eb\u30c9\u3067\u3059\u3002 +message.validate.fixfield=\u3053\u306e\u30d5\u30a3\u30fc\u30eb\u30c9\u3092\u4fee\u6b63\u3057\u3066\u304f\u3060\u3055\u3044\u3002 +message.validate.email.address=\u30e1\u30fc\u30eb \u30a2\u30c9\u30ec\u30b9\u3092\u6b63\u3057\u304f\u5165\u529b\u3057\u3066\u304f\u3060\u3055\u3044\u3002 +message.validate.URL=URL \u3092\u6b63\u3057\u304f\u5165\u529b\u3057\u3066\u304f\u3060\u3055\u3044\u3002 +message.validate.date=\u65e5\u4ed8\u3092\u6b63\u3057\u304f\u5165\u529b\u3057\u3066\u304f\u3060\u3055\u3044\u3002 +message.validate.date.ISO=\u65e5\u4ed8\u3092\u6b63\u3057\u304f\u5165\u529b\u3057\u3066\u304f\u3060\u3055\u3044 (ISO)\u3002 +message.validate.number=\u6570\u5024\u3092\u6b63\u3057\u304f\u5165\u529b\u3057\u3066\u304f\u3060\u3055\u3044\u3002 +message.validate.digits=\u6570\u5b57\u306e\u307f\u3092\u5165\u529b\u3057\u3066\u304f\u3060\u3055\u3044\u3002 +message.validate.creditcard=\u30af\u30ec\u30b8\u30c3\u30c8 \u30ab\u30fc\u30c9\u756a\u53f7\u3092\u6b63\u3057\u304f\u5165\u529b\u3057\u3066\u304f\u3060\u3055\u3044\u3002 +message.validate.equalto=\u540c\u3058\u5024\u3092\u518d\u5165\u529b\u3057\u3066\u304f\u3060\u3055\u3044\u3002 +message.validate.accept=\u6709\u52b9\u306a\u62e1\u5f35\u5b50\u3092\u6301\u3064\u5024\u3092\u5165\u529b\u3057\u3066\u304f\u3060\u3055\u3044\u3002 +message.validate.maxlength={0} \u6587\u5b57\u4ee5\u4e0b\u3067\u5165\u529b\u3057\u3066\u304f\u3060\u3055\u3044\u3002 +message.validate.minlength={0} \u6587\u5b57\u4ee5\u4e0a\u3067\u5165\u529b\u3057\u3066\u304f\u3060\u3055\u3044\u3002 +message.validate.range.length={0} \uff5e {1} \u6587\u5b57\u3067\u5165\u529b\u3057\u3066\u304f\u3060\u3055\u3044\u3002 +message.validate.range={0} \uff5e {1} \u306e\u5024\u3092\u5165\u529b\u3057\u3066\u304f\u3060\u3055\u3044\u3002 +message.validate.max={0} \u4ee5\u4e0b\u306e\u5024\u3092\u5165\u529b\u3057\u3066\u304f\u3060\u3055\u3044\u3002 +messgae.validate.min={0} \u4ee5\u4e0a\u306e\u5024\u3092\u5165\u529b\u3057\u3066\u304f\u3060\u3055\u3044\u3002 +message.creating.systemVM=\u30b7\u30b9\u30c6\u30e0 VM \u3092\u4f5c\u6210\u3057\u3066\u3044\u307e\u3059 (\u3057\u3070\u3089\u304f\u304a\u5f85\u3061\u304f\u3060\u3055\u3044) +message.enabling.zone.dots=\u30be\u30fc\u30f3\u3092\u6709\u52b9\u306b\u3057\u3066\u3044\u307e\u3059... +message.restoreVM=VM \u3092\u5fa9\u5143\u3057\u3066\u3082\u3088\u308d\u3057\u3044\u3067\u3059\u304b? +message.no.host.available=\u79fb\u884c\u306b\u4f7f\u7528\u3067\u304d\u308b\u30db\u30b9\u30c8\u306f\u3042\u308a\u307e\u305b\u3093 +message.network.addVM.desc=\u3053\u306e VM \u3092\u8ffd\u52a0\u3059\u308b\u30cd\u30c3\u30c8\u30ef\u30fc\u30af\u3092\u6307\u5b9a\u3057\u3066\u304f\u3060\u3055\u3044\u3002\u3053\u306e\u30cd\u30c3\u30c8\u30ef\u30fc\u30af\u306e\u305f\u3081\u306e\u65b0\u3057\u3044 NIC \u304c\u8ffd\u52a0\u3055\u308c\u307e\u3059\u3002 +message.network.addVMNIC=\u3053\u306e\u30cd\u30c3\u30c8\u30ef\u30fc\u30af\u306e\u65b0\u3057\u3044 VM NIC \u3092\u8ffd\u52a0\u3057\u3066\u3082\u3088\u308d\u3057\u3044\u3067\u3059\u304b? +message.set.default.NIC=\u3053\u306e NIC \u3092\u3053\u306e VM \u306e\u30c7\u30d5\u30a9\u30eb\u30c8\u306b\u8a2d\u5b9a\u3057\u3066\u3082\u3088\u308d\u3057\u3044\u3067\u3059\u304b? +message.set.default.NIC.manual=\u4eca\u3059\u3050\u306b\u3053\u306e VM \u306e\u30c7\u30d5\u30a9\u30eb\u30c8 NIC \u3092\u624b\u52d5\u3067\u66f4\u65b0\u3057\u3066\u304f\u3060\u3055\u3044\u3002 +message.instance.scaled.up.confirm=\u30a4\u30f3\u30b9\u30bf\u30f3\u30b9\u306e\u30b5\u30a4\u30ba\u3092\u62e1\u5927\u3057\u3066\u3082\u3088\u308d\u3057\u3044\u3067\u3059\u304b? +message.copy.template.confirm=\u30c6\u30f3\u30d7\u30ec\u30fc\u30c8\u3092\u30b3\u30d4\u30fc\u3057\u3066\u3082\u3088\u308d\u3057\u3044\u3067\u3059\u304b? +message.template.copying=\u30c6\u30f3\u30d7\u30ec\u30fc\u30c8\u3092\u30b3\u30d4\u30fc\u3057\u3066\u3044\u307e\u3059\u3002 +message.XSTools61plus.update.failed=[\u5143\u306e XS \u30d0\u30fc\u30b8\u30e7\u30f3\u306f 6.1 \u4ee5\u964d] \u30d5\u30a3\u30fc\u30eb\u30c9\u3092\u66f4\u65b0\u3067\u304d\u307e\u305b\u3093\u3067\u3057\u305f\u3002\u30a8\u30e9\u30fc\: +message.gslb.delete.confirm=\u3053\u306e GSLB \u3092\u524a\u9664\u3057\u3066\u3082\u3088\u308d\u3057\u3044\u3067\u3059\u304b? +message.portable.ip.delete.confirm=\u3053\u306e\u30dd\u30fc\u30bf\u30d6\u30eb IP \u30a2\u30c9\u30ec\u30b9\u306e\u7bc4\u56f2\u3092\u524a\u9664\u3057\u3066\u3082\u3088\u308d\u3057\u3044\u3067\u3059\u304b? +message.gslb.lb.remove.confirm=GSLB \u304b\u3089\u8ca0\u8377\u5206\u6563\u3092\u524a\u9664\u3057\u3066\u3082\u3088\u308d\u3057\u3044\u3067\u3059\u304b? +message.admin.guide.read=VMware \u30d9\u30fc\u30b9\u306e VM \u306b\u3064\u3044\u3066\u306f\u3001\u30b5\u30a4\u30ba\u5909\u66f4\u306e\u524d\u306b\u7ba1\u7406\u8005\u30ac\u30a4\u30c9\u306e\u52d5\u7684\u306a\u30b5\u30a4\u30ba\u5909\u66f4\u306e\u30bb\u30af\u30b7\u30e7\u30f3\u3092\u304a\u8aad\u307f\u304f\u3060\u3055\u3044\u3002\u7d9a\u884c\u3057\u3066\u3082\u3088\u308d\u3057\u3044\u3067\u3059\u304b?\, +message.tier.required=\u968e\u5c64\u306f\u5fc5\u9808\u3067\u3059 +message.remove.ldap=LDAP \u69cb\u6210\u3092\u524a\u9664\u3057\u3066\u3082\u3088\u308d\u3057\u3044\u3067\u3059\u304b? +message.action.downloading.template=\u30c6\u30f3\u30d7\u30ec\u30fc\u30c8\u3092\u30c0\u30a6\u30f3\u30ed\u30fc\u30c9\u3057\u3066\u3044\u307e\u3059\u3002 +message.configure.ldap=LDAP \u3092\u69cb\u6210\u3057\u3066\u3082\u3088\u308d\u3057\u3044\u3067\u3059\u304b? +message.confirm.delete.ciscovnmc.resource=Cisco VNMC \u30ea\u30bd\u30fc\u30b9\u3092\u524a\u9664\u3057\u3066\u3082\u3088\u308d\u3057\u3044\u3067\u3059\u304b? +message.confirm.add.vnmc.provider=VNMC \u30d7\u30ed\u30d0\u30a4\u30c0\u30fc\u3092\u8ffd\u52a0\u3057\u3066\u3082\u3088\u308d\u3057\u3044\u3067\u3059\u304b? +message.confirm.enable.vnmc.provider=VNMC \u30d7\u30ed\u30d0\u30a4\u30c0\u30fc\u3092\u6709\u52b9\u306b\u3057\u3066\u3082\u3088\u308d\u3057\u3044\u3067\u3059\u304b? +message.confirm.disable.vnmc.provider=VNMC \u30d7\u30ed\u30d0\u30a4\u30c0\u30fc\u3092\u7121\u52b9\u306b\u3057\u3066\u3082\u3088\u308d\u3057\u3044\u3067\u3059\u304b? +message.vnmc.available.list=\u30d7\u30ed\u30d0\u30a4\u30c0\u30fc\u4e00\u89a7\u3067 VNMC \u3092\u5229\u7528\u3067\u304d\u307e\u305b\u3093\u3002 +message.vnmc.not.available.list=\u30d7\u30ed\u30d0\u30a4\u30c0\u30fc\u4e00\u89a7\u3067 VNMC \u3092\u5229\u7528\u3067\u304d\u307e\u305b\u3093\u3002 +message.confirm.release.dedicate.vlan.range=\u5c02\u7528 VLAN \u306e\u7bc4\u56f2\u3092\u89e3\u653e\u3057\u3066\u3082\u3088\u308d\u3057\u3044\u3067\u3059\u304b? +message.confirm.start.lb.vm=LB VM \u3092\u8d77\u52d5\u3057\u3066\u3082\u3088\u308d\u3057\u3044\u3067\u3059\u304b? +message.confirm.stop.lb.vm=LB VM \u3092\u505c\u6b62\u3057\u3066\u3082\u3088\u308d\u3057\u3044\u3067\u3059\u304b? +message.confirm.remove.vmware.datacenter=VMware \u30c7\u30fc\u30bf\u30bb\u30f3\u30bf\u30fc\u3092\u524a\u9664\u3057\u3066\u3082\u3088\u308d\u3057\u3044\u3067\u3059\u304b? +message.confirm.dedicate.zone=\u3053\u306e\u30be\u30fc\u30f3\u3092\u30c9\u30e1\u30a4\u30f3/\u30a2\u30ab\u30a6\u30f3\u30c8\u5c02\u7528\u306b\u8a2d\u5b9a\u3057\u3066\u3082\u3088\u308d\u3057\u3044\u3067\u3059\u304b? +message.confirm.release.dedicated.zone=\u3053\u306e\u5c02\u7528\u30be\u30fc\u30f3\u3092\u89e3\u653e\u3057\u3066\u3082\u3088\u308d\u3057\u3044\u3067\u3059\u304b? +message.dedicated.zone.released=\u5c02\u7528\u30be\u30fc\u30f3\u304c\u89e3\u653e\u3055\u308c\u307e\u3057\u305f +message.read.admin.guide.scaling.up=\u30b5\u30a4\u30ba\u3092\u62e1\u5927\u3059\u308b\u524d\u306b\u7ba1\u7406\u8005\u30ac\u30a4\u30c9\u306e\u52d5\u7684\u306a\u30b5\u30a4\u30ba\u5909\u66f4\u306e\u30bb\u30af\u30b7\u30e7\u30f3\u3092\u304a\u8aad\u307f\u304f\u3060\u3055\u3044\u3002 +message.confirm.scale.up.system.vm=\u30b7\u30b9\u30c6\u30e0 VM \u306e\u30b5\u30a4\u30ba\u3092\u62e1\u5927\u3057\u3066\u3082\u3088\u308d\u3057\u3044\u3067\u3059\u304b? +message.confirm.upgrade.router.newer.template=\u30eb\u30fc\u30bf\u30fc\u3092\u30a2\u30c3\u30d7\u30b0\u30ec\u30fc\u30c9\u3057\u3066\u65b0\u3057\u3044\u30c6\u30f3\u30d7\u30ec\u30fc\u30c8\u3092\u4f7f\u7528\u3057\u3066\u3082\u3088\u308d\u3057\u3044\u3067\u3059\u304b? +message.confirm.scale.up.router.vm=\u30eb\u30fc\u30bf\u30fc VM \u306e\u30b5\u30a4\u30ba\u3092\u62e1\u5927\u3057\u3066\u3082\u3088\u308d\u3057\u3044\u3067\u3059\u304b? +message.confirm.upgrade.routers.newtemplate=\u3053\u306e\u30be\u30fc\u30f3\u306e\u3059\u3079\u3066\u306e\u30eb\u30fc\u30bf\u30fc\u3092\u30a2\u30c3\u30d7\u30b0\u30ec\u30fc\u30c9\u3057\u3066\u65b0\u3057\u3044\u30c6\u30f3\u30d7\u30ec\u30fc\u30c8\u3092\u4f7f\u7528\u3057\u3066\u3082\u3088\u308d\u3057\u3044\u3067\u3059\u304b? +message.confirm.upgrade.routers.pod.newtemplate=\u3053\u306e\u30dd\u30c3\u30c9\u306e\u3059\u3079\u3066\u306e\u30eb\u30fc\u30bf\u30fc\u3092\u30a2\u30c3\u30d7\u30b0\u30ec\u30fc\u30c9\u3057\u3066\u65b0\u3057\u3044\u30c6\u30f3\u30d7\u30ec\u30fc\u30c8\u3092\u4f7f\u7528\u3057\u3066\u3082\u3088\u308d\u3057\u3044\u3067\u3059\u304b? +message.confirm.upgrade.routers.cluster.newtemplate=\u3053\u306e\u30af\u30e9\u30b9\u30bf\u30fc\u306e\u3059\u3079\u3066\u306e\u30eb\u30fc\u30bf\u30fc\u3092\u30a2\u30c3\u30d7\u30b0\u30ec\u30fc\u30c9\u3057\u3066\u65b0\u3057\u3044\u30c6\u30f3\u30d7\u30ec\u30fc\u30c8\u3092\u4f7f\u7528\u3057\u3066\u3082\u3088\u308d\u3057\u3044\u3067\u3059\u304b? +message.confirm.upgrade.routers.account.newtemplate=\u3053\u306e\u30a2\u30ab\u30a6\u30f3\u30c8\u306e\u3059\u3079\u3066\u306e\u30eb\u30fc\u30bf\u30fc\u3092\u30a2\u30c3\u30d7\u30b0\u30ec\u30fc\u30c9\u3057\u3066\u65b0\u3057\u3044\u30c6\u30f3\u30d7\u30ec\u30fc\u30c8\u3092\u4f7f\u7528\u3057\u3066\u3082\u3088\u308d\u3057\u3044\u3067\u3059\u304b? +message.confirm.dedicate.pod.domain.account=\u3053\u306e\u30dd\u30c3\u30c9\u3092\u30c9\u30e1\u30a4\u30f3/\u30a2\u30ab\u30a6\u30f3\u30c8\u5c02\u7528\u306b\u8a2d\u5b9a\u3057\u3066\u3082\u3088\u308d\u3057\u3044\u3067\u3059\u304b? +message.confirm.release.dedicated.pod=\u3053\u306e\u5c02\u7528\u30dd\u30c3\u30c9\u3092\u89e3\u653e\u3057\u3066\u3082\u3088\u308d\u3057\u3044\u3067\u3059\u304b? +message.pod.dedication.released=\u5c02\u7528\u30dd\u30c3\u30c9\u304c\u89e3\u653e\u3055\u308c\u307e\u3057\u305f +message.confirm.dedicate.cluster.domain.account=\u3053\u306e\u30af\u30e9\u30b9\u30bf\u30fc\u3092\u30c9\u30e1\u30a4\u30f3/\u30a2\u30ab\u30a6\u30f3\u30c8\u5c02\u7528\u306b\u8a2d\u5b9a\u3057\u3066\u3082\u3088\u308d\u3057\u3044\u3067\u3059\u304b? +message.cluster.dedicated=\u30af\u30e9\u30b9\u30bf\u30fc\u3092\u5c02\u7528\u306b\u8a2d\u5b9a\u3057\u307e\u3057\u305f +message.confirm.release.dedicated.cluster=\u3053\u306e\u5c02\u7528\u30af\u30e9\u30b9\u30bf\u30fc\u3092\u89e3\u653e\u3057\u3066\u3082\u3088\u308d\u3057\u3044\u3067\u3059\u304b? +message.cluster.dedication.released=\u5c02\u7528\u30af\u30e9\u30b9\u30bf\u30fc\u304c\u89e3\u653e\u3055\u308c\u307e\u3057\u305f +message.confirm.dedicate.host.domain.account=\u3053\u306e\u30db\u30b9\u30c8\u3092\u30c9\u30e1\u30a4\u30f3/\u30a2\u30ab\u30a6\u30f3\u30c8\u5c02\u7528\u306b\u8a2d\u5b9a\u3057\u3066\u3082\u3088\u308d\u3057\u3044\u3067\u3059\u304b? +message.host.dedicated=\u30db\u30b9\u30c8\u3092\u5c02\u7528\u306b\u8a2d\u5b9a\u3057\u307e\u3057\u305f +message.confirm.release.dedicated.host=\u3053\u306e\u5c02\u7528\u30db\u30b9\u30c8\u3092\u89e3\u653e\u3057\u3066\u3082\u3088\u308d\u3057\u3044\u3067\u3059\u304b? +message.host.dedication.released=\u5c02\u7528\u30db\u30b9\u30c8\u304c\u89e3\u653e\u3055\u308c\u307e\u3057\u305f +message.confirm.delete.ucs.manager=UCS Manager \u3092\u524a\u9664\u3057\u3066\u3082\u3088\u308d\u3057\u3044\u3067\u3059\u304b? +message.confirm.refresh.blades=\u30d6\u30ec\u30fc\u30c9\u3092\u66f4\u65b0\u3057\u3066\u3082\u3088\u308d\u3057\u3044\u3067\u3059\u304b? +message.confirm.delete.secondary.staging.store=\u30bb\u30ab\u30f3\u30c0\u30ea \u30b9\u30c6\u30fc\u30b8\u30f3\u30b0 \u30b9\u30c8\u30a2\u3092\u524a\u9664\u3057\u3066\u3082\u3088\u308d\u3057\u3044\u3067\u3059\u304b? +message.select.tier=\u968e\u5c64\u3092\u9078\u629e\u3057\u3066\u304f\u3060\u3055\u3044\u3002 +message.disallowed.characters=\u8a31\u53ef\u3055\u308c\u306a\u3044\u6587\u5b57: \<\,\> +message.waiting.for.builtin.templates.to.load=\u7d44\u307f\u8fbc\u307f\u30c6\u30f3\u30d7\u30ec\u30fc\u30c8\u306e\u30ed\u30fc\u30c9\u3092\u5f85\u6a5f\u3057\u3066\u3044\u307e\u3059... +message.systems.vms.ready=\u30b7\u30b9\u30c6\u30e0 VM \u306e\u6e96\u5099\u304c\u3067\u304d\u307e\u3057\u305f\u3002 +message.your.cloudstack.is.ready=CloudStack \u306e\u6e96\u5099\u304c\u3067\u304d\u307e\u3057\u305f\! +message.specifiy.tag.key.value=\u30bf\u30b0 \u30ad\u30fc\u304a\u3088\u3073\u5024\u3092\u6307\u5b9a\u3057\u3066\u304f\u3060\u3055\u3044 +message.enter.seperated.list.multiple.cidrs=CIDR \u304c\u8907\u6570\u3042\u308b\u5834\u5408\u306f\u3001\u30b3\u30f3\u30de\u533a\u5207\u308a\u306e\u4e00\u89a7\u3092\u5165\u529b\u3057\u3066\u304f\u3060\u3055\u3044 +message.disabling.network.offering=\u30cd\u30c3\u30c8\u30ef\u30fc\u30af \u30aa\u30d5\u30a1\u30ea\u30f3\u30b0\u3092\u7121\u52b9\u306b\u3057\u3066\u3044\u307e\u3059 +message.confirm.enable.network.offering=\u3053\u306e\u30cd\u30c3\u30c8\u30ef\u30fc\u30af \u30aa\u30d5\u30a1\u30ea\u30f3\u30b0\u3092\u6709\u52b9\u306b\u3057\u3066\u3082\u3088\u308d\u3057\u3044\u3067\u3059\u304b? +message.enabling.network.offering=\u30cd\u30c3\u30c8\u30ef\u30fc\u30af \u30aa\u30d5\u30a1\u30ea\u30f3\u30b0\u3092\u6709\u52b9\u306b\u3057\u3066\u3044\u307e\u3059 +message.confirm.remove.network.offering=\u3053\u306e\u30cd\u30c3\u30c8\u30ef\u30fc\u30af \u30aa\u30d5\u30a1\u30ea\u30f3\u30b0\u3092\u524a\u9664\u3057\u3066\u3082\u3088\u308d\u3057\u3044\u3067\u3059\u304b? +message.confirm.disable.network.offering=\u3053\u306e\u30cd\u30c3\u30c8\u30ef\u30fc\u30af \u30aa\u30d5\u30a1\u30ea\u30f3\u30b0\u3092\u7121\u52b9\u306b\u3057\u3066\u3082\u3088\u308d\u3057\u3044\u3067\u3059\u304b? +message.disabling.vpc.offering=VPC \u30aa\u30d5\u30a1\u30ea\u30f3\u30b0\u3092\u7121\u52b9\u306b\u3057\u3066\u3044\u307e\u3059 +message.confirm.enable.vpc.offering=\u3053\u306e VPC \u30aa\u30d5\u30a1\u30ea\u30f3\u30b0\u3092\u6709\u52b9\u306b\u3057\u3066\u3082\u3088\u308d\u3057\u3044\u3067\u3059\u304b? +message.enabling.vpc.offering=VPC \u30aa\u30d5\u30a1\u30ea\u30f3\u30b0\u3092\u6709\u52b9\u306b\u3057\u3066\u3044\u307e\u3059 +message.confirm.remove.vpc.offering=\u3053\u306e VPC \u30aa\u30d5\u30a1\u30ea\u30f3\u30b0\u3092\u524a\u9664\u3057\u3066\u3082\u3088\u308d\u3057\u3044\u3067\u3059\u304b? +message.confirm.disable.vpc.offering=\u3053\u306e VPC \u30aa\u30d5\u30a1\u30ea\u30f3\u30b0\u3092\u7121\u52b9\u306b\u3057\u3066\u3082\u3088\u308d\u3057\u3044\u3067\u3059\u304b? +mode=\u30e2\u30fc\u30c9 +network.rate=\u30cd\u30c3\u30c8\u30ef\u30fc\u30af\u901f\u5ea6 +notification.reboot.instance=\u30a4\u30f3\u30b9\u30bf\u30f3\u30b9\u306e\u518d\u8d77\u52d5 +notification.start.instance=\u30a4\u30f3\u30b9\u30bf\u30f3\u30b9\u306e\u8d77\u52d5 +notification.stop.instance=\u30a4\u30f3\u30b9\u30bf\u30f3\u30b9\u306e\u505c\u6b62 +side.by.side=\u4e26\u5217 +state.Accepted=\u627f\u8afe\u6e08\u307f +state.Active=\u30a2\u30af\u30c6\u30a3\u30d6 +state.Allocated=\u5272\u308a\u5f53\u3066\u6e08\u307f +state.Allocating=\u5272\u308a\u5f53\u3066\u4e2d +state.BackedUp=\u30d0\u30c3\u30af\u30a2\u30c3\u30d7\u6e08\u307f +state.BackingUp=\u30d0\u30c3\u30af\u30a2\u30c3\u30d7\u4e2d +state.Completed=\u5b8c\u4e86 +state.Creating=\u4f5c\u6210\u4e2d +state.Declined=\u8f9e\u9000 +state.Destroyed=\u7834\u68c4\u6e08\u307f +state.Disabled=\u7121\u52b9 +state.Enabled=\u6709\u52b9 +state.enabled=\u6709\u52b9 +state.Error=\u30a8\u30e9\u30fc +state.Expunging=\u62b9\u6d88\u4e2d +state.Migrating=\u79fb\u884c\u4e2d +state.Pending=\u4fdd\u7559 +state.Ready=\u6e96\u5099\u5b8c\u4e86 +state.ready=\u6e96\u5099\u5b8c\u4e86 +state.Running=\u5b9f\u884c\u4e2d +state.Starting=\u958b\u59cb\u4e2d +state.Stopped=\u505c\u6b62\u6e08\u307f +state.Stopping=\u505c\u6b62\u3057\u3066\u3044\u307e\u3059 +state.Suspended=\u4e00\u6642\u505c\u6b62 +ui.listView.filters.all=\u3059\u3079\u3066 +ui.listView.filters.mine=\u81ea\u5206\u306e\u3082\u306e diff --git a/client/WEB-INF/classes/resources/messages_zh_CN.properties b/client/WEB-INF/classes/resources/messages_zh_CN.properties index 2f8922d6fdb..ebba5e0bb07 100644 --- a/client/WEB-INF/classes/resources/messages_zh_CN.properties +++ b/client/WEB-INF/classes/resources/messages_zh_CN.properties @@ -14,1948 +14,1949 @@ # KIND, either express or implied. See the License for the # specific language governing permissions and limitations # under the License. -label.vm.ip=VM IP Address -message.listView.subselect.multi=(\u00b0\u00b4\u00d7\u00a1 Ctrl/Cmd \u00b2\u00a2\u00b5\u00a5\u00bb\u00f7) -label.use.vm.ips=\u00ca\u00b9\u00d3\u00c3 VM IP -label.reinstall.vm=\u00d6\u00d8\u00d0\u00c2\u00b0\u00b2\u00d7\u00b0 VM -message.reinstall.vm=\u00d7\u00a2\u00d2\u00e2: \u00c7\u00eb\u00bd\u00f7\u00c9\u00f7\u00b2\u00d9\u00d7\u00f7\u00a1\u00a3\u00d5\u00e2\u00bd\u00ab\u00b5\u00bc\u00d6\u00c2\u00b4\u00d3\u00c4\u00a3\u00b0\u00e5\u00d6\u00d8\u00d0\u00c2\u00b0\u00b2\u00d7\u00b0 VM\u00a3\u00ac\u00b2\u00a2\u00c7\u00d2\u00d2\u00fd\u00b5\u00bc\u00b4\u00c5\u00c5\u00cc\u00c9\u00cf\u00b4\u00e6\u00b4\u00a2\u00b5\u00c4\u00ca\u00fd\u00be\u00dd\u00bd\u00ab\u00b6\u00aa\u00ca\u00a7\u00a1\u00a3\u00b6\u00ee\u00cd\u00e2\u00b5\u00c4\u00ca\u00fd\u00be\u00dd\u00be\u00ed(\u00c8\u00e7\u00b9\u00fb\u00b4\u00e6\u00d4\u00da)\u00bd\u00ab\u00ce\u00de\u00b7\u00a8\u00b7\u00c3\u00ce\u00ca\u00a1\u00a3 -label.recover.vm=\u00bb\u00d6\u00b8\u00b4 VM -message.recover.vm=\u00c7\u00eb\u00c8\u00b7\u00c8\u00cf\u00c4\u00fa\u00c8\u00b7\u00ca\u00b5\u00d2\u00aa\u00bb\u00d6\u00b8\u00b4\u00b4\u00cb VM\u00a1\u00a3 -label.port=\u00b6\u00cb\u00bf\u00da -label.remove.ldap=\u00c9\u00be\u00b3\u00fd LDAP -label.configure.ldap=\u00c5\u00e4\u00d6\u00c3 LDAP -label.ldap.configuration=LDAP \u00c5\u00e4\u00d6\u00c3 -label.ldap.port=LDAP \u00b6\u00cb\u00bf\u00da -label.create.nfs.secondary.staging.store=\u00b4\u00b4\u00bd\u00a8 NFS \u00b6\u00fe\u00bc\u00b6\u00d4\u00dd\u00b4\u00e6\u00b4\u00e6\u00b4\u00a2 -label.volatile=\u00bf\u00c9\u00b1\u00e4 -label.planner.mode=\u00b9\u00e6\u00bb\u00ae\u00c6\u00f7\u00c4\u00a3\u00ca\u00bd -label.deployment.planner=\u00b2\u00bf\u00ca\u00f0\u00b9\u00e6\u00bb\u00ae\u00c6\u00f7 -label.quiesce.vm=\u00be\u00b2\u00c4\u00ac VM -label.smb.username=SMB \u00d3\u00c3\u00bb\u00a7\u00c3\u00fb -label.smb.password=SMB \u00c3\u00dc\u00c2\u00eb -label.smb.domain=SMB \u00d3\u00f2 -label.hypervisors=\u00d0\u00e9\u00c4\u00e2\u00bb\u00fa\u00b9\u00dc\u00c0\u00ed\u00b3\u00cc\u00d0\u00f2 -label.home=\u00ca\u00d7\u00d2\u00b3 -label.sockets=CPU \u00b2\u00e5\u00b2\u00db -label.root.disk.size=\u00b8\u00f9\u00b4\u00c5\u00c5\u00cc\u00b4\u00f3\u00d0\u00a1 -label.s3.nfs.server=S3 NFS \u00b7\u00fe\u00ce\u00f1\u00c6\u00f7 -label.s3.nfs.path=S3 NFS \u00c2\u00b7\u00be\u00b6 -label.delete.events=\u00c9\u00be\u00b3\u00fd\u00ca\u00c2\u00bc\u00fe -label.delete.alerts=\u00c9\u00be\u00b3\u00fd\u00be\u00af\u00b1\u00a8 -label.archive.alerts=\u00b4\u00e6\u00b5\u00b5\u00be\u00af\u00b1\u00a8 -label.archive.events=\u00b4\u00e6\u00b5\u00b5\u00ca\u00c2\u00bc\u00fe -label.by.alert.type=\u00b0\u00b4\u00be\u00af\u00b1\u00a8\u00c0\u00e0\u00d0\u00cd -label.by.event.type=\u00b0\u00b4\u00ca\u00c2\u00bc\u00fe\u00c0\u00e0\u00d0\u00cd -label.by.date.start=\u00b0\u00b4\u00c8\u00d5\u00c6\u00da(\u00bf\u00aa\u00ca\u00bc\u00c8\u00d5\u00c6\u00da) -label.by.date.end=\u00b0\u00b4\u00c8\u00d5\u00c6\u00da(\u00bd\u00e1\u00ca\u00f8\u00c8\u00d5\u00c6\u00da) -label.switch.type=\u00bd\u00bb\u00bb\u00bb\u00bb\u00fa\u00c0\u00e0\u00d0\u00cd -label.service.state=\u00b7\u00fe\u00ce\u00f1\u00d7\u00b4\u00cc\u00ac -label.egress.default.policy=\u00b3\u00f6\u00bf\u00da\u00c4\u00ac\u00c8\u00cf\u00b2\u00df\u00c2\u00d4 -label.routing=\u00d5\u00fd\u00d4\u00da\u00c2\u00b7\u00d3\u00c9 +label.vm.ip=VM IP \u5730\u5740 +message.listView.subselect.multi=(\u6309\u4f4f Ctrl/Cmd \u5e76\u5355\u51fb) +label.use.vm.ips=\u4f7f\u7528 VM IP +label.reinstall.vm=\u91cd\u65b0\u5b89\u88c5 VM +message.reinstall.vm=\u6ce8\u610f: \u8bf7\u8c28\u614e\u64cd\u4f5c\u3002\u8fd9\u5c06\u5bfc\u81f4\u4ece\u6a21\u677f\u91cd\u65b0\u5b89\u88c5 VM\uff0c\u5e76\u4e14\u5f15\u5bfc\u78c1\u76d8\u4e0a\u5b58\u50a8\u7684\u6570\u636e\u5c06\u4e22\u5931\u3002\u989d\u5916\u7684\u6570\u636e\u5377(\u5982\u679c\u5b58\u5728)\u5c06\u65e0\u6cd5\u8bbf\u95ee\u3002 +label.recover.vm=\u6062\u590d VM +message.recover.vm=\u8bf7\u786e\u8ba4\u60a8\u786e\u5b9e\u8981\u6062\u590d\u6b64 VM\u3002 +label.port=\u7aef\u53e3 +label.remove.ldap=\u5220\u9664 LDAP +label.configure.ldap=\u914d\u7f6e LDAP +label.ldap.configuration=LDAP \u914d\u7f6e +label.ldap.port=LDAP \u7aef\u53e3 +label.create.nfs.secondary.staging.store=\u521b\u5efa NFS \u4e8c\u7ea7\u6682\u5b58\u5b58\u50a8 +label.volatile=\u53ef\u53d8 +label.planner.mode=\u89c4\u5212\u5668\u6a21\u5f0f +label.deployment.planner=\u90e8\u7f72\u89c4\u5212\u5668 +label.quiesce.vm=\u9759\u9ed8 VM +label.smb.username=SMB \u7528\u6237\u540d +label.smb.password=SMB \u5bc6\u7801 +label.smb.domain=SMB \u57df +label.hypervisors=\u865a\u62df\u673a\u7ba1\u7406\u7a0b\u5e8f +label.home=\u9996\u9875 +label.sockets=CPU \u63d2\u69fd +label.root.disk.size=\u6839\u78c1\u76d8\u5927\u5c0f +label.s3.nfs.server=S3 NFS \u670d\u52a1\u5668 +label.s3.nfs.path=S3 NFS \u8def\u5f84 +label.delete.events=\u5220\u9664\u4e8b\u4ef6 +label.delete.alerts=\u5220\u9664\u8b66\u62a5 +label.archive.alerts=\u5b58\u6863\u8b66\u62a5 +label.archive.events=\u5b58\u6863\u4e8b\u4ef6 +label.by.alert.type=\u6309\u8b66\u62a5\u7c7b\u578b +label.by.event.type=\u6309\u4e8b\u4ef6\u7c7b\u578b +label.by.date.start=\u6309\u65e5\u671f(\u5f00\u59cb\u65e5\u671f) +label.by.date.end=\u6309\u65e5\u671f(\u7ed3\u675f\u65e5\u671f) +label.switch.type=\u4ea4\u6362\u673a\u7c7b\u578b +label.service.state=\u670d\u52a1\u72b6\u6001 +label.egress.default.policy=\u51fa\u53e3\u9ed8\u8ba4\u7b56\u7565 +label.routing=\u6b63\u5728\u8def\u7531 label.hvm=HVM -label.about=\u00b9\u00d8\u00d3\u00da +label.about=\u5173\u4e8e label.app.name=CloudStack -label.about.app=\u00b9\u00d8\u00d3\u00da CloudStack -label.custom.disk.iops=\u00d7\u00d4\u00b6\u00a8\u00d2\u00e5 IOPS -label.disk.iops.min=\u00d7\u00ee\u00d0\u00a1 IOPS -label.disk.iops.max=\u00d7\u00ee\u00b4\u00f3 IOPS -label.disk.iops.total=\u00d7\u00dc IOPS -label.hypervisor.snapshot.reserve=\u00d0\u00e9\u00c4\u00e2\u00bb\u00fa\u00b9\u00dc\u00c0\u00ed\u00b3\u00cc\u00d0\u00f2\u00bf\u00ec\u00d5\u00d5\u00d4\u00a4\u00c1\u00f4 -label.view.secondary.ips=\u00b2\u00e9\u00bf\u00b4\u00b6\u00fe\u00bc\u00b6 IP -message.validate.invalid.characters=\u00b2\u00e9\u00d5\u00d2\u00b5\u00bd\u00ce\u00de\u00d0\u00a7\u00d7\u00d6\u00b7\u00fb\u00a3\u00ac\u00c7\u00eb\u00b8\u00fc\u00d5\u00fd\u00a1\u00a3 -message.acquire.ip.nic=\u00c7\u00eb\u00c8\u00b7\u00c8\u00cf\u00c4\u00fa\u00c8\u00b7\u00ca\u00b5\u00d2\u00aa\u00bb\u00f1\u00c8\u00a1\u00b4\u00cb NIC \u00b5\u00c4\u00d0\u00c2\u00b6\u00fe\u00bc\u00b6 IP\u00a1\u00a3
\u00d7\u00a2\u00d2\u00e2: \u00c4\u00fa\u00d0\u00e8\u00d2\u00aa\u00d4\u00da\u00d0\u00e9\u00c4\u00e2\u00bb\u00fa\u00c4\u00da\u00b2\u00bf\u00ca\u00d6\u00b6\u00af\u00c5\u00e4\u00d6\u00c3\u00d0\u00c2\u00bb\u00f1\u00c8\u00a1\u00b5\u00c4\u00b6\u00fe\u00bc\u00b6 IP\u00a1\u00a3 -message.select.affinity.groups=\u00c7\u00eb\u00d1\u00a1\u00d4\u00f1\u00c4\u00fa\u00cf\u00a3\u00cd\u00fb\u00b4\u00cb VM \u00cb\u00f9\u00ca\u00f4\u00b5\u00c4\u00c8\u00ce\u00ba\u00ce\u00b9\u00d8\u00c1\u00aa\u00d0\u00d4\u00d7\u00e9: -message.no.affinity.groups=\u00c4\u00fa\u00c3\u00bb\u00d3\u00d0\u00c8\u00ce\u00ba\u00ce\u00b9\u00d8\u00c1\u00aa\u00d0\u00d4\u00d7\u00e9\u00a1\u00a3\u00c7\u00eb\u00bc\u00cc\u00d0\u00f8\u00d6\u00b4\u00d0\u00d0\u00cf\u00c2\u00d2\u00bb\u00b2\u00bd\u00b2\u00d9\u00d7\u00f7\u00a1\u00a3 -label.action.delete.nic=\u00d2\u00c6\u00b3\u00fd NIC -message.action.delete.nic=\u00c7\u00eb\u00c8\u00b7\u00c8\u00cf\u00c4\u00fa\u00c8\u00b7\u00ca\u00b5\u00d2\u00aa\u00d2\u00c6\u00b3\u00fd\u00b4\u00cb NIC\u00a3\u00ac\u00b4\u00cb\u00b2\u00d9\u00d7\u00f7\u00bb\u00b9\u00bd\u00ab\u00b4\u00d3 VM \u00d6\u00d0\u00d2\u00c6\u00b3\u00fd\u00b9\u00d8\u00c1\u00aa\u00b5\u00c4\u00cd\u00f8\u00c2\u00e7\u00a1\u00a3 -changed.item.properties=\u00b8\u00fc\u00b8\u00c4\u00cf\u00ee\u00c4\u00bf\u00ca\u00f4\u00d0\u00d4 -confirm.enable.s3=\u00c7\u00eb\u00cc\u00ee\u00d0\u00b4\u00d2\u00d4\u00cf\u00c2\u00d0\u00c5\u00cf\u00a2\u00d2\u00d4\u00c6\u00f4\u00d3\u00c3\u00b6\u00d4 S3 \u00d6\u00a7\u00b3\u00d6\u00b5\u00c4\u00b6\u00fe\u00bc\u00b6\u00b4\u00e6\u00b4\u00a2\u00b5\u00c4\u00d6\u00a7\u00b3\u00d6 -confirm.enable.swift=\u00c7\u00eb\u00cc\u00ee\u00d0\u00b4\u00d2\u00d4\u00cf\u00c2\u00d0\u00c5\u00cf\u00a2\u00d2\u00d4\u00c6\u00f4\u00d3\u00c3\u00b6\u00d4 SWIFT \u00b5\u00c4\u00d6\u00a7\u00b3\u00d6 -error.could.not.change.your.password.because.ldap.is.enabled=\u00b4\u00ed\u00ce\u00f3\u00a1\u00a3LDAP \u00b4\u00a6\u00d3\u00da\u00c6\u00f4\u00d3\u00c3\u00d7\u00b4\u00cc\u00ac\u00a3\u00ac\u00ce\u00de\u00b7\u00a8\u00b8\u00fc\u00b8\u00c4\u00c4\u00fa\u00b5\u00c4\u00c3\u00dc\u00c2\u00eb\u00a1\u00a3 -error.could.not.enable.zone=\u00ce\u00de\u00b7\u00a8\u00c6\u00f4\u00d3\u00c3\u00d7\u00ca\u00d4\u00b4\u00d3\u00f2 -error.installWizard.message=\u00b3\u00f6\u00cf\u00d6\u00ce\u00ca\u00cc\u00e2\u00a3\u00bb\u00c7\u00eb\u00b7\u00b5\u00bb\u00d8\u00b2\u00a2\u00b8\u00fc\u00d5\u00fd\u00c8\u00ce\u00ba\u00ce\u00b4\u00ed\u00ce\u00f3 -error.invalid.username.password=\u00d3\u00c3\u00bb\u00a7\u00c3\u00fb\u00bb\u00f2\u00c3\u00dc\u00c2\u00eb\u00ce\u00de\u00d0\u00a7 -error.login=\u00c4\u00fa\u00b5\u00c4\u00d3\u00c3\u00bb\u00a7\u00c3\u00fb/\u00c3\u00dc\u00c2\u00eb\u00d3\u00eb\u00ce\u00d2\u00c3\u00c7\u00b5\u00c4\u00bc\u00c7\u00c2\u00bc\u00b2\u00bb\u00d2\u00bb\u00d6\u00c2\u00a1\u00a3 -error.menu.select=\u00d5\u00fd\u00d4\u00da\u00d1\u00a1\u00d4\u00f1\u00cf\u00ee\u00c4\u00bf\u00a3\u00ac\u00ce\u00de\u00b7\u00a8\u00d6\u00b4\u00d0\u00d0\u00b2\u00d9\u00d7\u00f7\u00a1\u00a3 -error.mgmt.server.inaccessible=\u00ce\u00de\u00b7\u00a8\u00b7\u00c3\u00ce\u00ca\u00b9\u00dc\u00c0\u00ed\u00b7\u00fe\u00ce\u00f1\u00c6\u00f7\u00a1\u00a3\u00c7\u00eb\u00c9\u00d4\u00ba\u00f3\u00d4\u00d9\u00ca\u00d4\u00a1\u00a3 -error.password.not.match=\u00c3\u00dc\u00c2\u00eb\u00d7\u00d6\u00b6\u00ce\u00b2\u00bb\u00d2\u00bb\u00d6\u00c2 -error.please.specify.physical.network.tags=\u00cd\u00f8\u00c2\u00e7\u00b7\u00bd\u00b0\u00b8\u00d4\u00da\u00c4\u00fa\u00ce\u00aa\u00b4\u00cb\u00ce\u00ef\u00c0\u00ed\u00cd\u00f8\u00c2\u00e7\u00d6\u00b8\u00b6\u00a8\u00b1\u00ea\u00c7\u00a9\u00d6\u00ae\u00ba\u00f3\u00b2\u00c5\u00bf\u00c9\u00d3\u00c3\u00a1\u00a3 -error.session.expired=\u00c4\u00fa\u00b5\u00c4\u00bb\u00e1\u00bb\u00b0\u00d2\u00d1\u00b9\u00fd\u00c6\u00da\u00a1\u00a3 -error.something.went.wrong.please.correct.the.following=\u00b3\u00f6\u00cf\u00d6\u00ce\u00ca\u00cc\u00e2\u00a3\u00bb\u00c7\u00eb\u00b8\u00fc\u00d5\u00fd\u00d2\u00d4\u00cf\u00c2\u00b8\u00f7\u00cf\u00ee -error.unable.to.reach.management.server=\u00ce\u00de\u00b7\u00a8\u00b7\u00c3\u00ce\u00ca\u00b9\u00dc\u00c0\u00ed\u00b7\u00fe\u00ce\u00f1\u00c6\u00f7 -error.unresolved.internet.name=\u00ce\u00de\u00b7\u00a8\u00bd\u00e2\u00ce\u00f6\u00c4\u00fa\u00b5\u00c4 Internet \u00c3\u00fb\u00b3\u00c6\u00a1\u00a3 -extractable=\u00bf\u00c9\u00cc\u00e1\u00c8\u00a1 -force.delete.domain.warning=\u00be\u00af\u00b8\u00e6\: \u00d1\u00a1\u00d4\u00f1\u00b4\u00cb\u00d1\u00a1\u00cf\u00ee\u00bd\u00ab\u00b5\u00bc\u00d6\u00c2\u00c9\u00be\u00b3\u00fd\u00cb\u00f9\u00d3\u00d0\u00d7\u00d3\u00d3\u00f2\u00d2\u00d4\u00bc\u00b0\u00cb\u00f9\u00d3\u00d0\u00cf\u00e0\u00b9\u00d8\u00c1\u00aa\u00b5\u00c4\u00d5\u00ca\u00bb\u00a7\u00bc\u00b0\u00c6\u00e4\u00d7\u00ca\u00d4\u00b4\u00a1\u00a3 -force.delete=\u00c7\u00bf\u00d6\u00c6\u00c9\u00be\u00b3\u00fd -force.remove.host.warning=\u00be\u00af\u00b8\u00e6\: \u00d1\u00a1\u00d4\u00f1\u00b4\u00cb\u00d1\u00a1\u00cf\u00ee\u00bd\u00ab\u00b5\u00bc\u00d6\u00c2 CloudStack \u00d4\u00da\u00b4\u00d3\u00c8\u00ba\u00bc\u00af\u00d6\u00d0\u00d2\u00c6\u00b3\u00fd\u00b4\u00cb\u00d6\u00f7\u00bb\u00fa\u00d6\u00ae\u00c7\u00b0\u00a3\u00ac\u00c7\u00bf\u00d6\u00c6\u00cd\u00a3\u00d6\u00b9\u00cb\u00f9\u00d3\u00d0\u00d5\u00fd\u00d4\u00da\u00d4\u00cb\u00d0\u00d0\u00b5\u00c4\u00d0\u00e9\u00c4\u00e2\u00bb\u00fa\u00a1\u00a3 -force.remove=\u00c7\u00bf\u00d6\u00c6\u00d2\u00c6\u00b3\u00fd -force.stop.instance.warning=\u00be\u00af\u00b8\u00e6\: \u00b3\u00fd\u00b7\u00c7\u00cd\u00f2\u00b2\u00bb\u00b5\u00c3\u00d2\u00d1\u00a3\u00ac\u00b7\u00f1\u00d4\u00f2\u00b2\u00bb\u00d3\u00a6\u00c7\u00bf\u00d6\u00c6\u00cd\u00a3\u00d6\u00b9\u00b4\u00cb\u00ca\u00b5\u00c0\u00fd\u00a1\u00a3\u00cd\u00a3\u00d6\u00b9\u00b4\u00cb\u00ca\u00b5\u00c0\u00fd\u00bf\u00c9\u00c4\u00dc\u00bb\u00e1\u00b5\u00bc\u00d6\u00c2\u00ca\u00fd\u00be\u00dd\u00b6\u00aa\u00ca\u00a7\u00d2\u00d4\u00bc\u00b0\u00d6\u00c2\u00ca\u00b9\u00d0\u00e9\u00c4\u00e2\u00bb\u00fa\u00d7\u00b4\u00cc\u00ac\u00b2\u00bb\u00d2\u00bb\u00d6\u00c2\u00a1\u00a3 -force.stop=\u00c7\u00bf\u00d6\u00c6\u00cd\u00a3\u00d6\u00b9 -ICMP.code=ICMP \u00b4\u00fa\u00c2\u00eb -ICMP.type=ICMP \u00c0\u00e0\u00d0\u00cd -image.directory=\u00cd\u00bc\u00c6\u00ac\u00c4\u00bf\u00c2\u00bc -inline=\u00c4\u00da\u00c1\u00aa -instances.actions.reboot.label=\u00d6\u00d8\u00d0\u00c2\u00c6\u00f4\u00b6\u00af\u00ca\u00b5\u00c0\u00fd -label.accept.project.invitation=\u00bd\u00d3\u00ca\u00dc\u00cf\u00ee\u00c4\u00bf\u00d1\u00fb\u00c7\u00eb -label.account.and.security.group=\u00d5\u00ca\u00bb\u00a7\u00a1\u00a2\u00b0\u00b2\u00c8\u00ab\u00d7\u00e9 -label.account.id=\u00d5\u00ca\u00bb\u00a7 ID -label.account.name=\u00d5\u00ca\u00bb\u00a7\u00c3\u00fb\u00b3\u00c6 -label.account.specific=\u00d5\u00ca\u00bb\u00a7\u00d7\u00a8\u00d3\u00c3 -label.account=\u00d5\u00ca\u00bb\u00a7 -label.accounts=\u00d5\u00ca\u00bb\u00a7 -label.acquire.new.ip=\u00bb\u00f1\u00c8\u00a1\u00d0\u00c2 IP -label.acquire.new.secondary.ip=\u00bb\u00f1\u00c8\u00a1\u00d0\u00c2\u00b6\u00fe\u00bc\u00b6 IP -label.action.attach.disk.processing=\u00d5\u00fd\u00d4\u00da\u00b8\u00bd\u00bc\u00d3\u00b4\u00c5\u00c5\u00cc... -label.action.attach.disk=\u00b8\u00bd\u00bc\u00d3\u00b4\u00c5\u00c5\u00cc -label.action.attach.iso.processing=\u00d5\u00fd\u00d4\u00da\u00b8\u00bd\u00bc\u00d3 ISO... -label.action.attach.iso=\u00b8\u00bd\u00bc\u00d3 ISO -label.action.cancel.maintenance.mode.processing=\u00d5\u00fd\u00d4\u00da\u00c8\u00a1\u00cf\u00fb\u00ce\u00ac\u00bb\u00a4\u00c4\u00a3\u00ca\u00bd... -label.action.cancel.maintenance.mode=\u00c8\u00a1\u00cf\u00fb\u00ce\u00ac\u00bb\u00a4\u00c4\u00a3\u00ca\u00bd -label.action.change.password=\u00b8\u00fc\u00b8\u00c4\u00c3\u00dc\u00c2\u00eb -label.action.change.service.processing=\u00d5\u00fd\u00d4\u00da\u00b8\u00fc\u00b8\u00c4\u00b7\u00fe\u00ce\u00f1... -label.action.change.service=\u00b8\u00fc\u00b8\u00c4\u00b7\u00fe\u00ce\u00f1 -label.action.copy.ISO.processing=\u00d5\u00fd\u00d4\u00da\u00b8\u00b4\u00d6\u00c6 ISO... -label.action.copy.ISO=\u00b8\u00b4\u00d6\u00c6 ISO -label.action.copy.template.processing=\u00d5\u00fd\u00d4\u00da\u00b8\u00b4\u00d6\u00c6\u00c4\u00a3\u00b0\u00e5... -label.action.copy.template=\u00b8\u00b4\u00d6\u00c6\u00c4\u00a3\u00b0\u00e5 -label.action.create.template.from.vm=\u00bb\u00f9\u00d3\u00da VM \u00b4\u00b4\u00bd\u00a8\u00c4\u00a3\u00b0\u00e5 -label.action.create.template.from.volume=\u00bb\u00f9\u00d3\u00da\u00be\u00ed\u00b4\u00b4\u00bd\u00a8\u00c4\u00a3\u00b0\u00e5 -label.action.create.template.processing=\u00d5\u00fd\u00d4\u00da\u00b4\u00b4\u00bd\u00a8\u00c4\u00a3\u00b0\u00e5... -label.action.create.template=\u00b4\u00b4\u00bd\u00a8\u00c4\u00a3\u00b0\u00e5 -label.action.create.vm.processing=\u00d5\u00fd\u00d4\u00da\u00b4\u00b4\u00bd\u00a8 VM... -label.action.create.vm=\u00b4\u00b4\u00bd\u00a8 VM -label.action.create.volume.processing=\u00d5\u00fd\u00d4\u00da\u00b4\u00b4\u00bd\u00a8\u00be\u00ed... -label.action.create.volume=\u00b4\u00b4\u00bd\u00a8\u00be\u00ed -label.action.delete.account.processing=\u00d5\u00fd\u00d4\u00da\u00c9\u00be\u00b3\u00fd\u00d5\u00ca\u00bb\u00a7... -label.action.delete.account=\u00c9\u00be\u00b3\u00fd\u00d5\u00ca\u00bb\u00a7 -label.action.delete.cluster.processing=\u00d5\u00fd\u00d4\u00da\u00c9\u00be\u00b3\u00fd\u00c8\u00ba\u00bc\u00af... -label.action.delete.cluster=\u00c9\u00be\u00b3\u00fd\u00c8\u00ba\u00bc\u00af -label.action.delete.disk.offering.processing=\u00d5\u00fd\u00d4\u00da\u00c9\u00be\u00b3\u00fd\u00b4\u00c5\u00c5\u00cc\u00b7\u00bd\u00b0\u00b8... -label.action.delete.disk.offering=\u00c9\u00be\u00b3\u00fd\u00b4\u00c5\u00c5\u00cc\u00b7\u00bd\u00b0\u00b8 -label.action.delete.domain.processing=\u00d5\u00fd\u00d4\u00da\u00c9\u00be\u00b3\u00fd\u00d3\u00f2... -label.action.delete.domain=\u00c9\u00be\u00b3\u00fd\u00d3\u00f2 -label.action.delete.firewall.processing=\u00d5\u00fd\u00d4\u00da\u00c9\u00be\u00b3\u00fd\u00b7\u00c0\u00bb\u00f0\u00c7\u00bd... -label.action.delete.firewall=\u00c9\u00be\u00b3\u00fd\u00b7\u00c0\u00bb\u00f0\u00c7\u00bd\u00b9\u00e6\u00d4\u00f2 -label.action.delete.ingress.rule.processing=\u00d5\u00fd\u00d4\u00da\u00c9\u00be\u00b3\u00fd\u00c8\u00eb\u00bf\u00da\u00b9\u00e6\u00d4\u00f2... -label.action.delete.ingress.rule=\u00c9\u00be\u00b3\u00fd\u00c8\u00eb\u00bf\u00da\u00b9\u00e6\u00d4\u00f2 -label.action.delete.IP.range.processing=\u00d5\u00fd\u00d4\u00da\u00c9\u00be\u00b3\u00fd IP \u00b7\u00b6\u00ce\u00a7... -label.action.delete.IP.range=\u00c9\u00be\u00b3\u00fd IP \u00b7\u00b6\u00ce\u00a7 -label.action.delete.ISO.processing=\u00d5\u00fd\u00d4\u00da\u00c9\u00be\u00b3\u00fd ISO... -label.action.delete.ISO=\u00c9\u00be\u00b3\u00fd ISO -label.action.delete.load.balancer.processing=\u00d5\u00fd\u00d4\u00da\u00c9\u00be\u00b3\u00fd\u00b8\u00ba\u00d4\u00d8\u00c6\u00bd\u00ba\u00e2\u00c6\u00f7... -label.action.delete.load.balancer=\u00c9\u00be\u00b3\u00fd\u00b8\u00ba\u00d4\u00d8\u00c6\u00bd\u00ba\u00e2\u00c6\u00f7\u00b9\u00e6\u00d4\u00f2 -label.action.delete.network.processing=\u00d5\u00fd\u00d4\u00da\u00c9\u00be\u00b3\u00fd\u00cd\u00f8\u00c2\u00e7... -label.action.delete.network=\u00c9\u00be\u00b3\u00fd\u00cd\u00f8\u00c2\u00e7 -label.action.delete.nexusVswitch=\u00c9\u00be\u00b3\u00fd Nexus 1000v -label.action.delete.physical.network=\u00c9\u00be\u00b3\u00fd\u00ce\u00ef\u00c0\u00ed\u00cd\u00f8\u00c2\u00e7 -label.action.delete.pod.processing=\u00d5\u00fd\u00d4\u00da\u00c9\u00be\u00b3\u00fd\u00cc\u00e1\u00b9\u00a9\u00b5\u00e3... -label.action.delete.pod=\u00c9\u00be\u00b3\u00fd\u00cc\u00e1\u00b9\u00a9\u00b5\u00e3 -label.action.delete.primary.storage.processing=\u00d5\u00fd\u00d4\u00da\u00c9\u00be\u00b3\u00fd\u00d6\u00f7\u00b4\u00e6\u00b4\u00a2... -label.action.delete.primary.storage=\u00c9\u00be\u00b3\u00fd\u00d6\u00f7\u00b4\u00e6\u00b4\u00a2 -label.action.delete.secondary.storage.processing=\u00d5\u00fd\u00d4\u00da\u00c9\u00be\u00b3\u00fd\u00b6\u00fe\u00bc\u00b6\u00b4\u00e6\u00b4\u00a2... -label.action.delete.secondary.storage=\u00c9\u00be\u00b3\u00fd\u00b6\u00fe\u00bc\u00b6\u00b4\u00e6\u00b4\u00a2 -label.action.delete.security.group.processing=\u00d5\u00fd\u00d4\u00da\u00c9\u00be\u00b3\u00fd\u00b0\u00b2\u00c8\u00ab\u00d7\u00e9... -label.action.delete.security.group=\u00c9\u00be\u00b3\u00fd\u00b0\u00b2\u00c8\u00ab\u00d7\u00e9 -label.action.delete.service.offering.processing=\u00d5\u00fd\u00d4\u00da\u00c9\u00be\u00b3\u00fd\u00b7\u00fe\u00ce\u00f1\u00b7\u00bd\u00b0\u00b8... -label.action.delete.service.offering=\u00c9\u00be\u00b3\u00fd\u00b7\u00fe\u00ce\u00f1\u00b7\u00bd\u00b0\u00b8 -label.action.delete.snapshot.processing=\u00d5\u00fd\u00d4\u00da\u00c9\u00be\u00b3\u00fd\u00bf\u00ec\u00d5\u00d5... -label.action.delete.snapshot=\u00c9\u00be\u00b3\u00fd\u00bf\u00ec\u00d5\u00d5 -label.action.delete.system.service.offering=\u00c9\u00be\u00b3\u00fd\u00cf\u00b5\u00cd\u00b3\u00b7\u00fe\u00ce\u00f1\u00b7\u00bd\u00b0\u00b8 -label.action.delete.template.processing=\u00d5\u00fd\u00d4\u00da\u00c9\u00be\u00b3\u00fd\u00c4\u00a3\u00b0\u00e5... -label.action.delete.template=\u00c9\u00be\u00b3\u00fd\u00c4\u00a3\u00b0\u00e5 -label.action.delete.user.processing=\u00d5\u00fd\u00d4\u00da\u00c9\u00be\u00b3\u00fd\u00d3\u00c3\u00bb\u00a7... -label.action.delete.user=\u00c9\u00be\u00b3\u00fd\u00d3\u00c3\u00bb\u00a7 -label.action.delete.volume.processing=\u00d5\u00fd\u00d4\u00da\u00c9\u00be\u00b3\u00fd\u00be\u00ed... -label.action.delete.volume=\u00c9\u00be\u00b3\u00fd\u00be\u00ed -label.action.delete.zone.processing=\u00d5\u00fd\u00d4\u00da\u00c9\u00be\u00b3\u00fd\u00d7\u00ca\u00d4\u00b4\u00d3\u00f2... -label.action.delete.zone=\u00c9\u00be\u00b3\u00fd\u00d7\u00ca\u00d4\u00b4\u00d3\u00f2 -label.action.destroy.instance.processing=\u00d5\u00fd\u00d4\u00da\u00cf\u00fa\u00bb\u00d9\u00ca\u00b5\u00c0\u00fd... -label.action.destroy.instance=\u00cf\u00fa\u00bb\u00d9\u00ca\u00b5\u00c0\u00fd -label.action.destroy.systemvm.processing=\u00d5\u00fd\u00d4\u00da\u00cf\u00fa\u00bb\u00d9\u00cf\u00b5\u00cd\u00b3 VM... -label.action.destroy.systemvm=\u00cf\u00fa\u00bb\u00d9\u00cf\u00b5\u00cd\u00b3 VM -label.action.detach.disk.processing=\u00d5\u00fd\u00d4\u00da\u00c8\u00a1\u00cf\u00fb\u00b8\u00bd\u00bc\u00d3\u00b4\u00c5\u00c5\u00cc... -label.action.detach.disk=\u00c8\u00a1\u00cf\u00fb\u00b8\u00bd\u00bc\u00d3\u00b4\u00c5\u00c5\u00cc -label.action.detach.iso.processing=\u00d5\u00fd\u00d4\u00da\u00c8\u00a1\u00cf\u00fb\u00b8\u00bd\u00bc\u00d3 ISO... -label.action.detach.iso=\u00c8\u00a1\u00cf\u00fb\u00b8\u00bd\u00bc\u00d3 ISO -label.action.disable.account.processing=\u00d5\u00fd\u00d4\u00da\u00bd\u00fb\u00d3\u00c3\u00d5\u00ca\u00bb\u00a7... -label.action.disable.account=\u00bd\u00fb\u00d3\u00c3\u00d5\u00ca\u00bb\u00a7 -label.action.disable.cluster.processing=\u00d5\u00fd\u00d4\u00da\u00bd\u00fb\u00d3\u00c3\u00c8\u00ba\u00bc\u00af... -label.action.disable.cluster=\u00bd\u00fb\u00d3\u00c3\u00c8\u00ba\u00bc\u00af -label.action.disable.nexusVswitch=\u00bd\u00fb\u00d3\u00c3 Nexus 1000v -label.action.disable.physical.network=\u00bd\u00fb\u00d3\u00c3\u00ce\u00ef\u00c0\u00ed\u00cd\u00f8\u00c2\u00e7 -label.action.disable.pod.processing=\u00d5\u00fd\u00d4\u00da\u00bd\u00fb\u00d3\u00c3\u00cc\u00e1\u00b9\u00a9\u00b5\u00e3... -label.action.disable.pod=\u00bd\u00fb\u00d3\u00c3\u00cc\u00e1\u00b9\u00a9\u00b5\u00e3 -label.action.disable.static.NAT.processing=\u00d5\u00fd\u00d4\u00da\u00bd\u00fb\u00d3\u00c3\u00be\u00b2\u00cc\u00ac NAT... -label.action.disable.static.NAT=\u00bd\u00fb\u00d3\u00c3\u00be\u00b2\u00cc\u00ac NAT -label.action.disable.user.processing=\u00d5\u00fd\u00d4\u00da\u00bd\u00fb\u00d3\u00c3\u00d3\u00c3\u00bb\u00a7... -label.action.disable.user=\u00bd\u00fb\u00d3\u00c3\u00d3\u00c3\u00bb\u00a7 -label.action.disable.zone.processing=\u00d5\u00fd\u00d4\u00da\u00bd\u00fb\u00d3\u00c3\u00d7\u00ca\u00d4\u00b4\u00d3\u00f2... -label.action.disable.zone=\u00bd\u00fb\u00d3\u00c3\u00d7\u00ca\u00d4\u00b4\u00d3\u00f2 -label.action.download.ISO=\u00cf\u00c2\u00d4\u00d8 ISO -label.action.download.template=\u00cf\u00c2\u00d4\u00d8\u00c4\u00a3\u00b0\u00e5 -label.action.download.volume.processing=\u00d5\u00fd\u00d4\u00da\u00cf\u00c2\u00d4\u00d8\u00be\u00ed... -label.action.download.volume=\u00cf\u00c2\u00d4\u00d8\u00be\u00ed -label.action.edit.account=\u00b1\u00e0\u00bc\u00ad\u00d5\u00ca\u00bb\u00a7 -label.action.edit.disk.offering=\u00b1\u00e0\u00bc\u00ad\u00b4\u00c5\u00c5\u00cc\u00b7\u00bd\u00b0\u00b8 -label.action.edit.domain=\u00b1\u00e0\u00bc\u00ad\u00d3\u00f2 -label.action.edit.global.setting=\u00b1\u00e0\u00bc\u00ad\u00c8\u00ab\u00be\u00d6\u00c9\u00e8\u00d6\u00c3 -label.action.edit.host=\u00b1\u00e0\u00bc\u00ad\u00d6\u00f7\u00bb\u00fa -label.action.edit.instance=\u00b1\u00e0\u00bc\u00ad\u00ca\u00b5\u00c0\u00fd -label.action.edit.ISO=\u00b1\u00e0\u00bc\u00ad ISO -label.action.edit.network.offering=\u00b1\u00e0\u00bc\u00ad\u00cd\u00f8\u00c2\u00e7\u00b7\u00bd\u00b0\u00b8 -label.action.edit.network.processing=\u00d5\u00fd\u00d4\u00da\u00b1\u00e0\u00bc\u00ad\u00cd\u00f8\u00c2\u00e7... -label.action.edit.network=\u00b1\u00e0\u00bc\u00ad\u00cd\u00f8\u00c2\u00e7 -label.action.edit.pod=\u00b1\u00e0\u00bc\u00ad\u00cc\u00e1\u00b9\u00a9\u00b5\u00e3 -label.action.edit.primary.storage=\u00b1\u00e0\u00bc\u00ad\u00d6\u00f7\u00b4\u00e6\u00b4\u00a2 -label.action.edit.resource.limits=\u00b1\u00e0\u00bc\u00ad\u00d7\u00ca\u00d4\u00b4\u00cf\u00de\u00d6\u00c6 -label.action.edit.service.offering=\u00b1\u00e0\u00bc\u00ad\u00b7\u00fe\u00ce\u00f1\u00b7\u00bd\u00b0\u00b8 -label.action.edit.template=\u00b1\u00e0\u00bc\u00ad\u00c4\u00a3\u00b0\u00e5 -label.action.edit.user=\u00b1\u00e0\u00bc\u00ad\u00d3\u00c3\u00bb\u00a7 -label.action.edit.zone=\u00b1\u00e0\u00bc\u00ad\u00d7\u00ca\u00d4\u00b4\u00d3\u00f2 -label.action.enable.account.processing=\u00d5\u00fd\u00d4\u00da\u00c6\u00f4\u00d3\u00c3\u00d5\u00ca\u00bb\u00a7... -label.action.enable.account=\u00c6\u00f4\u00d3\u00c3\u00d5\u00ca\u00bb\u00a7 -label.action.enable.cluster.processing=\u00d5\u00fd\u00d4\u00da\u00c6\u00f4\u00d3\u00c3\u00c8\u00ba\u00bc\u00af... -label.action.enable.cluster=\u00c6\u00f4\u00d3\u00c3\u00c8\u00ba\u00bc\u00af -label.action.enable.maintenance.mode.processing=\u00d5\u00fd\u00d4\u00da\u00c6\u00f4\u00d3\u00c3\u00ce\u00ac\u00bb\u00a4\u00c4\u00a3\u00ca\u00bd... -label.action.enable.maintenance.mode=\u00c6\u00f4\u00d3\u00c3\u00ce\u00ac\u00bb\u00a4\u00c4\u00a3\u00ca\u00bd -label.action.enable.nexusVswitch=\u00c6\u00f4\u00d3\u00c3 Nexus 1000v -label.action.enable.physical.network=\u00c6\u00f4\u00d3\u00c3\u00ce\u00ef\u00c0\u00ed\u00cd\u00f8\u00c2\u00e7 -label.action.enable.pod.processing=\u00d5\u00fd\u00d4\u00da\u00c6\u00f4\u00d3\u00c3\u00cc\u00e1\u00b9\u00a9\u00b5\u00e3... -label.action.enable.pod=\u00c6\u00f4\u00d3\u00c3\u00cc\u00e1\u00b9\u00a9\u00b5\u00e3 -label.action.enable.static.NAT.processing=\u00d5\u00fd\u00d4\u00da\u00c6\u00f4\u00d3\u00c3\u00be\u00b2\u00cc\u00ac NAT... -label.action.enable.static.NAT=\u00c6\u00f4\u00d3\u00c3\u00be\u00b2\u00cc\u00ac NAT -label.action.enable.user.processing=\u00d5\u00fd\u00d4\u00da\u00c6\u00f4\u00d3\u00c3\u00d3\u00c3\u00bb\u00a7... -label.action.enable.user=\u00c6\u00f4\u00d3\u00c3\u00d3\u00c3\u00bb\u00a7 -label.action.enable.zone.processing=\u00d5\u00fd\u00d4\u00da\u00c6\u00f4\u00d3\u00c3\u00d7\u00ca\u00d4\u00b4\u00d3\u00f2... -label.action.enable.zone=\u00c6\u00f4\u00d3\u00c3\u00d7\u00ca\u00d4\u00b4\u00d3\u00f2 -label.action.expunge.instance=\u00c9\u00be\u00b3\u00fd\u00ca\u00b5\u00c0\u00fd -label.action.expunge.instance.processing=\u00d5\u00fd\u00d4\u00da\u00c9\u00be\u00b3\u00fd\u00ca\u00b5\u00c0\u00fd... -label.action.force.reconnect.processing=\u00d5\u00fd\u00d4\u00da\u00d6\u00d8\u00d0\u00c2\u00c1\u00ac\u00bd\u00d3... -label.action.force.reconnect=\u00c7\u00bf\u00d6\u00c6\u00d6\u00d8\u00d0\u00c2\u00c1\u00ac\u00bd\u00d3 -label.action.generate.keys.processing=\u00d5\u00fd\u00d4\u00da\u00c9\u00fa\u00b3\u00c9\u00c3\u00dc\u00d4\u00bf... -label.action.generate.keys=\u00c9\u00fa\u00b3\u00c9\u00c3\u00dc\u00d4\u00bf -label.action.list.nexusVswitch=\u00c1\u00d0\u00b3\u00f6 Nexus 1000v -label.action.lock.account.processing=\u00d5\u00fd\u00d4\u00da\u00cb\u00f8\u00b6\u00a8\u00d5\u00ca\u00bb\u00a7... -label.action.lock.account=\u00cb\u00f8\u00b6\u00a8\u00d5\u00ca\u00bb\u00a7 -label.action.manage.cluster.processing=\u00d5\u00fd\u00d4\u00da\u00cd\u00d0\u00b9\u00dc\u00c8\u00ba\u00bc\u00af... -label.action.manage.cluster=\u00cd\u00d0\u00b9\u00dc\u00c8\u00ba\u00bc\u00af -label.action.migrate.instance.processing=\u00d5\u00fd\u00d4\u00da\u00c7\u00a8\u00d2\u00c6\u00ca\u00b5\u00c0\u00fd... -label.action.migrate.instance=\u00c7\u00a8\u00d2\u00c6\u00ca\u00b5\u00c0\u00fd -label.action.migrate.router.processing=\u00d5\u00fd\u00d4\u00da\u00c7\u00a8\u00d2\u00c6\u00c2\u00b7\u00d3\u00c9\u00c6\u00f7... -label.action.migrate.router=\u00c7\u00a8\u00d2\u00c6\u00c2\u00b7\u00d3\u00c9\u00c6\u00f7 -label.action.migrate.systemvm.processing=\u00d5\u00fd\u00d4\u00da\u00c7\u00a8\u00d2\u00c6\u00cf\u00b5\u00cd\u00b3 VM... -label.action.migrate.systemvm=\u00c7\u00a8\u00d2\u00c6\u00cf\u00b5\u00cd\u00b3 VM -label.action.reboot.instance.processing=\u00d5\u00fd\u00d4\u00da\u00d6\u00d8\u00d0\u00c2\u00c6\u00f4\u00b6\u00af\u00ca\u00b5\u00c0\u00fd... -label.action.reboot.instance=\u00d6\u00d8\u00d0\u00c2\u00c6\u00f4\u00b6\u00af\u00ca\u00b5\u00c0\u00fd -label.action.reboot.router.processing=\u00d5\u00fd\u00d4\u00da\u00d6\u00d8\u00d0\u00c2\u00c6\u00f4\u00b6\u00af\u00c2\u00b7\u00d3\u00c9\u00c6\u00f7... -label.action.reboot.router=\u00d6\u00d8\u00d0\u00c2\u00c6\u00f4\u00b6\u00af\u00c2\u00b7\u00d3\u00c9\u00c6\u00f7 -label.action.reboot.systemvm.processing=\u00d5\u00fd\u00d4\u00da\u00d6\u00d8\u00d0\u00c2\u00c6\u00f4\u00b6\u00af\u00cf\u00b5\u00cd\u00b3 VM... -label.action.reboot.systemvm=\u00d6\u00d8\u00d0\u00c2\u00c6\u00f4\u00b6\u00af\u00cf\u00b5\u00cd\u00b3 VM -label.action.recurring.snapshot=\u00d6\u00d8\u00cf\u00d6\u00bf\u00ec\u00d5\u00d5 -label.action.register.iso=\u00d7\u00a2\u00b2\u00e1 ISO -label.action.register.template=\u00d7\u00a2\u00b2\u00e1\u00c4\u00a3\u00b0\u00e5 -label.action.release.ip.processing=\u00d5\u00fd\u00d4\u00da\u00ca\u00cd\u00b7\u00c5 IP... -label.action.release.ip=\u00ca\u00cd\u00b7\u00c5 IP -label.action.remove.host.processing=\u00d5\u00fd\u00d4\u00da\u00c9\u00be\u00b3\u00fd\u00d6\u00f7\u00bb\u00fa... -label.action.remove.host=\u00c9\u00be\u00b3\u00fd\u00d6\u00f7\u00bb\u00fa -label.action.reset.password.processing=\u00d5\u00fd\u00d4\u00da\u00d6\u00d8\u00d6\u00c3\u00c3\u00dc\u00c2\u00eb... -label.action.reset.password=\u00d6\u00d8\u00d6\u00c3\u00c3\u00dc\u00c2\u00eb -label.action.resize.volume.processing=\u00d5\u00fd\u00d4\u00da\u00b5\u00f7\u00d5\u00fb\u00be\u00ed\u00b4\u00f3\u00d0\u00a1.... -label.action.resize.volume=\u00b5\u00f7\u00d5\u00fb\u00be\u00ed\u00b4\u00f3\u00d0\u00a1 -label.action.resource.limits=\u00d7\u00ca\u00d4\u00b4\u00cf\u00de\u00d6\u00c6 -label.action.restore.instance.processing=\u00d5\u00fd\u00d4\u00da\u00bb\u00b9\u00d4\u00ad\u00ca\u00b5\u00c0\u00fd... -label.action.restore.instance=\u00bb\u00b9\u00d4\u00ad\u00ca\u00b5\u00c0\u00fd -label.action.start.instance.processing=\u00d5\u00fd\u00d4\u00da\u00c6\u00f4\u00b6\u00af\u00ca\u00b5\u00c0\u00fd... -label.action.start.instance=\u00c6\u00f4\u00b6\u00af\u00ca\u00b5\u00c0\u00fd -label.action.start.router.processing=\u00d5\u00fd\u00d4\u00da\u00c6\u00f4\u00b6\u00af\u00c2\u00b7\u00d3\u00c9\u00c6\u00f7... -label.action.start.router=\u00c6\u00f4\u00b6\u00af\u00c2\u00b7\u00d3\u00c9\u00c6\u00f7 -label.action.start.systemvm.processing=\u00d5\u00fd\u00d4\u00da\u00c6\u00f4\u00b6\u00af\u00cf\u00b5\u00cd\u00b3 VM... -label.action.start.systemvm=\u00c6\u00f4\u00b6\u00af\u00cf\u00b5\u00cd\u00b3 VM -label.action.stop.instance.processing=\u00d5\u00fd\u00d4\u00da\u00cd\u00a3\u00d6\u00b9\u00ca\u00b5\u00c0\u00fd... -label.action.stop.instance=\u00cd\u00a3\u00d6\u00b9\u00ca\u00b5\u00c0\u00fd -label.action.stop.router.processing=\u00d5\u00fd\u00d4\u00da\u00cd\u00a3\u00d6\u00b9\u00c2\u00b7\u00d3\u00c9\u00c6\u00f7... -label.action.stop.router=\u00cd\u00a3\u00d6\u00b9\u00c2\u00b7\u00d3\u00c9\u00c6\u00f7 -label.action.stop.systemvm.processing=\u00d5\u00fd\u00d4\u00da\u00cd\u00a3\u00d6\u00b9\u00cf\u00b5\u00cd\u00b3 VM... -label.action.stop.systemvm=\u00cd\u00a3\u00d6\u00b9\u00cf\u00b5\u00cd\u00b3 VM -label.action.take.snapshot.processing=\u00d5\u00fd\u00d4\u00da\u00b4\u00b4\u00bd\u00a8\u00bf\u00ec\u00d5\u00d5... -label.action.take.snapshot=\u00b4\u00b4\u00bd\u00a8\u00bf\u00ec\u00d5\u00d5 -label.action.revert.snapshot.processing=\u00d5\u00fd\u00d4\u00da\u00bb\u00b9\u00d4\u00ad\u00b5\u00bd\u00bf\u00ec\u00d5\u00d5... -label.action.revert.snapshot=\u00bb\u00b9\u00d4\u00ad\u00b5\u00bd\u00bf\u00ec\u00d5\u00d5 -label.action.unmanage.cluster.processing=\u00d5\u00fd\u00d4\u00da\u00c8\u00a1\u00cf\u00fb\u00cd\u00d0\u00b9\u00dc\u00c8\u00ba\u00bc\u00af... -label.action.unmanage.cluster=\u00c8\u00a1\u00cf\u00fb\u00cd\u00d0\u00b9\u00dc\u00c8\u00ba\u00bc\u00af -label.action.update.OS.preference.processing=\u00d5\u00fd\u00d4\u00da\u00b8\u00fc\u00d0\u00c2\u00b2\u00d9\u00d7\u00f7\u00cf\u00b5\u00cd\u00b3\u00ca\u00d7\u00d1\u00a1\u00cf\u00ee... -label.action.update.OS.preference=\u00b8\u00fc\u00d0\u00c2\u00b2\u00d9\u00d7\u00f7\u00cf\u00b5\u00cd\u00b3\u00ca\u00d7\u00d1\u00a1\u00cf\u00ee -label.action.update.resource.count.processing=\u00d5\u00fd\u00d4\u00da\u00b8\u00fc\u00d0\u00c2\u00d7\u00ca\u00d4\u00b4\u00ca\u00fd\u00c1\u00bf... -label.action.update.resource.count=\u00b8\u00fc\u00d0\u00c2\u00d7\u00ca\u00d4\u00b4\u00ca\u00fd\u00c1\u00bf -label.action.vmsnapshot.create=\u00b4\u00b4\u00bd\u00a8 VM \u00bf\u00ec\u00d5\u00d5 -label.action.vmsnapshot.delete=\u00c9\u00be\u00b3\u00fd VM \u00bf\u00ec\u00d5\u00d5 -label.action.vmsnapshot.revert=\u00bb\u00b9\u00d4\u00ad\u00b5\u00bd VM \u00bf\u00ec\u00d5\u00d5 -label.actions=\u00b2\u00d9\u00d7\u00f7 -label.activate.project=\u00bc\u00a4\u00bb\u00ee\u00cf\u00ee\u00c4\u00bf -label.active.sessions=\u00bb\u00ee\u00b6\u00af\u00bb\u00e1\u00bb\u00b0 -label.add.account.to.project=\u00cf\u00f2\u00cf\u00ee\u00c4\u00bf\u00d6\u00d0\u00cc\u00ed\u00bc\u00d3\u00d5\u00ca\u00bb\u00a7 -label.add.account=\u00cc\u00ed\u00bc\u00d3\u00d5\u00ca\u00bb\u00a7 -label.add.accounts.to=\u00cc\u00ed\u00bc\u00d3\u00d5\u00ca\u00bb\u00a7\u00d6\u00c1 -label.add.accounts=\u00cc\u00ed\u00bc\u00d3\u00d5\u00ca\u00bb\u00a7 -label.add.ACL=\u00cc\u00ed\u00bc\u00d3 ACL -label.add.affinity.group=\u00cc\u00ed\u00bc\u00d3\u00d0\u00c2\u00b9\u00d8\u00c1\u00aa\u00d0\u00d4\u00d7\u00e9 -label.add.BigSwitchVns.device=\u00cc\u00ed\u00bc\u00d3 BigSwitch Vns \u00bf\u00d8\u00d6\u00c6\u00c6\u00f7 -label.add.by.cidr=\u00b0\u00b4 CIDR \u00cc\u00ed\u00bc\u00d3 -label.add.by.group=\u00b0\u00b4\u00d7\u00e9\u00cc\u00ed\u00bc\u00d3 -label.add.by=\u00cc\u00ed\u00bc\u00d3\u00b7\u00bd\u00ca\u00bd -label.add.cluster=\u00cc\u00ed\u00bc\u00d3\u00c8\u00ba\u00bc\u00af -label.add.compute.offering=\u00cc\u00ed\u00bc\u00d3\u00bc\u00c6\u00cb\u00e3\u00b7\u00bd\u00b0\u00b8 -label.add.direct.iprange=Add Direct Ip Range -label.add.disk.offering=\u00cc\u00ed\u00bc\u00d3\u00b4\u00c5\u00c5\u00cc\u00b7\u00bd\u00b0\u00b8 -label.add.domain=\u00cc\u00ed\u00bc\u00d3\u00d3\u00f2 -label.add.egress.rule=\u00cc\u00ed\u00bc\u00d3\u00b3\u00f6\u00bf\u00da\u00b9\u00e6\u00d4\u00f2 -label.add.F5.device=\u00cc\u00ed\u00bc\u00d3 F5 \u00c9\u00e8\u00b1\u00b8 -label.add.firewall=\u00cc\u00ed\u00bc\u00d3\u00b7\u00c0\u00bb\u00f0\u00c7\u00bd\u00b9\u00e6\u00d4\u00f2 -label.add.guest.network=\u00cc\u00ed\u00bc\u00d3\u00c0\u00b4\u00b1\u00f6\u00cd\u00f8\u00c2\u00e7 -label.add.host=\u00cc\u00ed\u00bc\u00d3\u00d6\u00f7\u00bb\u00fa -label.add.ingress.rule=\u00cc\u00ed\u00bc\u00d3\u00c8\u00eb\u00bf\u00da\u00b9\u00e6\u00d4\u00f2 -label.add.intermediate.certificate=Add intermediate certificate -label.add.ip.range=\u00cc\u00ed\u00bc\u00d3 IP \u00b7\u00b6\u00ce\u00a7 -label.add.load.balancer=\u00cc\u00ed\u00bc\u00d3\u00b8\u00ba\u00d4\u00d8\u00c6\u00bd\u00ba\u00e2\u00c6\u00f7 -label.add.more=\u00cc\u00ed\u00bc\u00d3\u00b8\u00fc\u00b6\u00e0 -label.add.netScaler.device=Add Netscaler device -label.add.network.ACL=\u00cc\u00ed\u00bc\u00d3\u00cd\u00f8\u00c2\u00e7 ACL -label.add.network.device=\u00cc\u00ed\u00bc\u00d3\u00cd\u00f8\u00c2\u00e7\u00c9\u00e8\u00b1\u00b8 -label.add.network.offering=\u00cc\u00ed\u00bc\u00d3\u00cd\u00f8\u00c2\u00e7\u00b7\u00bd\u00b0\u00b8 -label.add.network=\u00cc\u00ed\u00bc\u00d3\u00cd\u00f8\u00c2\u00e7 -label.add.new.F5=\u00cc\u00ed\u00bc\u00d3\u00d0\u00c2 F5 -label.add.new.gateway=\u00cc\u00ed\u00bc\u00d3\u00d0\u00c2\u00cd\u00f8\u00b9\u00d8 -label.add.new.NetScaler=\u00cc\u00ed\u00bc\u00d3\u00d0\u00c2 NetScaler -label.add.new.SRX=\u00cc\u00ed\u00bc\u00d3\u00d0\u00c2 SRX -label.add.new.PA=\u00cc\u00ed\u00bc\u00d3\u00d0\u00c2 Palo Alto -label.add.new.tier=\u00cc\u00ed\u00bc\u00d3\u00d0\u00c2\u00b2\u00e3 -label.add.NiciraNvp.device=Add Nvp Controller -label.add.NuageVsp.device=Add Nuage Virtualized Services Directory (VSD) -label.add.BrocadeVcs.device=Add Brocade Vcs Switch -label.add.physical.network=\u00cc\u00ed\u00bc\u00d3\u00ce\u00ef\u00c0\u00ed\u00cd\u00f8\u00c2\u00e7 -label.add.pod=\u00cc\u00ed\u00bc\u00d3\u00cc\u00e1\u00b9\u00a9\u00b5\u00e3 -label.add.port.forwarding.rule=\u00cc\u00ed\u00bc\u00d3\u00b6\u00cb\u00bf\u00da\u00d7\u00aa\u00b7\u00a2\u00b9\u00e6\u00d4\u00f2 -label.add.primary.storage=\u00cc\u00ed\u00bc\u00d3\u00d6\u00f7\u00b4\u00e6\u00b4\u00a2 -label.add.region=\u00cc\u00ed\u00bc\u00d3\u00b5\u00d8\u00c0\u00ed\u00c7\u00f8\u00d3\u00f2 -label.add.resources=\u00cc\u00ed\u00bc\u00d3\u00d7\u00ca\u00d4\u00b4 -label.add.route=\u00cc\u00ed\u00bc\u00d3\u00c2\u00b7\u00d3\u00c9 -label.add.rule=\u00cc\u00ed\u00bc\u00d3\u00b9\u00e6\u00d4\u00f2 -label.add.secondary.storage=\u00cc\u00ed\u00bc\u00d3\u00b6\u00fe\u00bc\u00b6\u00b4\u00e6\u00b4\u00a2 -label.add.security.group=\u00cc\u00ed\u00bc\u00d3\u00b0\u00b2\u00c8\u00ab\u00d7\u00e9 -label.add.service.offering=\u00cc\u00ed\u00bc\u00d3\u00b7\u00fe\u00ce\u00f1\u00b7\u00bd\u00b0\u00b8 -label.add.SRX.device=\u00cc\u00ed\u00bc\u00d3 SRX \u00c9\u00e8\u00b1\u00b8 -label.add.PA.device=\u00cc\u00ed\u00bc\u00d3 Palo Alto \u00c9\u00e8\u00b1\u00b8 -label.add.static.nat.rule=\u00cc\u00ed\u00bc\u00d3\u00be\u00b2\u00cc\u00ac NAT \u00b9\u00e6\u00d4\u00f2 -label.add.static.route=\u00cc\u00ed\u00bc\u00d3\u00be\u00b2\u00cc\u00ac\u00c2\u00b7\u00d3\u00c9 -label.add.system.service.offering=\u00cc\u00ed\u00bc\u00d3\u00cf\u00b5\u00cd\u00b3\u00b7\u00fe\u00ce\u00f1\u00b7\u00bd\u00b0\u00b8 -label.add.template=\u00cc\u00ed\u00bc\u00d3\u00c4\u00a3\u00b0\u00e5 -label.add.to.group=\u00cc\u00ed\u00bc\u00d3\u00b5\u00bd\u00d7\u00e9 -label.add.user=\u00cc\u00ed\u00bc\u00d3\u00d3\u00c3\u00bb\u00a7 -label.add.vlan=\u00cc\u00ed\u00bc\u00d3 VLAN -label.add.vxlan=\u00cc\u00ed\u00bc\u00d3 VXLAN -label.add.VM.to.tier=\u00cf\u00f2\u00b2\u00e3\u00d6\u00d0\u00cc\u00ed\u00bc\u00d3 VM -label.add.vm=\u00cc\u00ed\u00bc\u00d3 VM -label.add.vms.to.lb=\u00cf\u00f2\u00b8\u00ba\u00d4\u00d8\u00c6\u00bd\u00ba\u00e2\u00c6\u00f7\u00b9\u00e6\u00d4\u00f2\u00d6\u00d0\u00cc\u00ed\u00bc\u00d3 VM -label.add.vms=\u00cc\u00ed\u00bc\u00d3 VM -label.add.volume=\u00cc\u00ed\u00bc\u00d3\u00be\u00ed -label.add.vpc=\u00cc\u00ed\u00bc\u00d3 VPC -label.add.vpn.customer.gateway=\u00cc\u00ed\u00bc\u00d3 VPN \u00bf\u00cd\u00bb\u00a7\u00cd\u00f8\u00b9\u00d8 -label.add.VPN.gateway=\u00cc\u00ed\u00bc\u00d3 VPN \u00cd\u00f8\u00b9\u00d8 -label.add.vpn.user=\u00cc\u00ed\u00bc\u00d3 VPN \u00d3\u00c3\u00bb\u00a7 -label.add.zone=\u00cc\u00ed\u00bc\u00d3\u00d7\u00ca\u00d4\u00b4\u00d3\u00f2 -label.add=\u00cc\u00ed\u00bc\u00d3 -label.adding.cluster=\u00d5\u00fd\u00d4\u00da\u00cc\u00ed\u00bc\u00d3\u00c8\u00ba\u00bc\u00af -label.adding.failed=\u00cc\u00ed\u00bc\u00d3\u00ca\u00a7\u00b0\u00dc -label.adding.pod=\u00d5\u00fd\u00d4\u00da\u00cc\u00ed\u00bc\u00d3\u00cc\u00e1\u00b9\u00a9\u00b5\u00e3 -label.adding.processing=\u00d5\u00fd\u00d4\u00da\u00cc\u00ed\u00bc\u00d3... -label.adding.succeeded=\u00d2\u00d1\u00b3\u00c9\u00b9\u00a6\u00cc\u00ed\u00bc\u00d3 -label.adding.user=\u00d5\u00fd\u00d4\u00da\u00cc\u00ed\u00bc\u00d3\u00d3\u00c3\u00bb\u00a7 -label.adding.zone=\u00d5\u00fd\u00d4\u00da\u00cc\u00ed\u00bc\u00d3\u00d7\u00ca\u00d4\u00b4\u00d3\u00f2 -label.adding=\u00d5\u00fd\u00d4\u00da\u00cc\u00ed\u00bc\u00d3 -label.additional.networks=\u00c6\u00e4\u00cb\u00fb\u00cd\u00f8\u00c2\u00e7 -label.admin.accounts=\u00b9\u00dc\u00c0\u00ed\u00d4\u00b1\u00d5\u00ca\u00bb\u00a7 -label.admin=\u00b9\u00dc\u00c0\u00ed\u00d4\u00b1 -label.advanced.mode=\u00b8\u00df\u00bc\u00b6\u00c4\u00a3\u00ca\u00bd -label.advanced.search=\u00b8\u00df\u00bc\u00b6\u00cb\u00d1\u00cb\u00f7 -label.advanced=\u00b8\u00df\u00bc\u00b6 -label.affinity.group=\u00b9\u00d8\u00c1\u00aa\u00d0\u00d4\u00d7\u00e9 -label.affinity.groups=\u00b9\u00d8\u00c1\u00aa\u00d0\u00d4\u00d7\u00e9 -label.affinity=\u00b9\u00d8\u00c1\u00aa\u00d0\u00d4 -label.agent.password=\u00b4\u00fa\u00c0\u00ed\u00c3\u00dc\u00c2\u00eb -label.agent.username=\u00b4\u00fa\u00c0\u00ed\u00d3\u00c3\u00bb\u00a7\u00c3\u00fb -label.agree=\u00cd\u00ac\u00d2\u00e2 -label.alert=\u00be\u00af\u00b1\u00a8 -label.algorithm=\u00cb\u00e3\u00b7\u00a8 -label.allocated=\u00d2\u00d1\u00b7\u00d6\u00c5\u00e4 -label.allocation.state=\u00b7\u00d6\u00c5\u00e4\u00d7\u00b4\u00cc\u00ac -label.anti.affinity.group=\u00b7\u00b4\u00b9\u00d8\u00c1\u00aa\u00d0\u00d4\u00d7\u00e9 -label.anti.affinity.groups=\u00b7\u00b4\u00b9\u00d8\u00c1\u00aa\u00d0\u00d4\u00d7\u00e9 -label.anti.affinity=\u00b7\u00b4\u00b9\u00d8\u00c1\u00aa\u00d0\u00d4 -label.api.key=API \u00c3\u00dc\u00d4\u00bf -label.api.version=API Version -label.apply=\u00d3\u00a6\u00d3\u00c3 -label.assign.to.load.balancer=\u00d5\u00fd\u00d4\u00da\u00bd\u00ab\u00ca\u00b5\u00c0\u00fd\u00b7\u00d6\u00c5\u00e4\u00b8\u00f8\u00b8\u00ba\u00d4\u00d8\u00c6\u00bd\u00ba\u00e2\u00c6\u00f7 -label.assign=\u00b7\u00d6\u00c5\u00e4 -label.associated.network.id=\u00d2\u00d1\u00b9\u00d8\u00c1\u00aa\u00cd\u00f8\u00c2\u00e7 ID -label.associated.network=\u00b9\u00d8\u00c1\u00aa\u00cd\u00f8\u00c2\u00e7 -label.attached.iso=\u00d2\u00d1\u00b8\u00bd\u00bc\u00d3 ISO -label.author.email=\u00d7\u00f7\u00d5\u00df\u00b5\u00e7\u00d7\u00d3\u00d3\u00ca\u00bc\u00fe -label.author.name=\u00d7\u00f7\u00d5\u00df\u00d0\u00d5\u00c3\u00fb -label.availability.zone=\u00bf\u00c9\u00d3\u00c3\u00d7\u00ca\u00d4\u00b4\u00d3\u00f2 -label.availability=\u00bf\u00c9\u00d3\u00c3\u00d0\u00d4 -label.available.public.ips=\u00bf\u00c9\u00d3\u00c3\u00b9\u00ab\u00d3\u00c3 IP \u00b5\u00d8\u00d6\u00b7 -label.available=\u00bf\u00c9\u00d3\u00c3 -label.back=\u00ba\u00f3\u00cd\u00cb -label.bandwidth=\u00b4\u00f8\u00bf\u00ed -label.basic.mode=\u00bb\u00f9\u00b1\u00be\u00c4\u00a3\u00ca\u00bd -label.basic=\u00bb\u00f9\u00b1\u00be -label.bigswitch.controller.address=BigSwitch Vns Controller Address -label.bootable=\u00bf\u00c9\u00c6\u00f4\u00b6\u00af -label.broadcast.domain.range=\u00b9\u00e3\u00b2\u00a5\u00d3\u00f2\u00b7\u00b6\u00ce\u00a7 -label.broadcast.domain.type=\u00b9\u00e3\u00b2\u00a5\u00d3\u00f2\u00c0\u00e0\u00d0\u00cd -label.broadcast.uri=\u00b9\u00e3\u00b2\u00a5 URI -label.by.account=\u00b0\u00b4\u00d5\u00ca\u00bb\u00a7 -label.by.availability=\u00b0\u00b4\u00bf\u00c9\u00d3\u00c3\u00d0\u00d4 -label.by.domain=\u00b0\u00b4\u00d3\u00f2 -label.by.end.date=\u00b0\u00b4\u00bd\u00e1\u00ca\u00f8\u00c8\u00d5\u00c6\u00da -label.by.level=\u00b0\u00b4\u00bc\u00b6\u00b1\u00f0 -label.by.pod=\u00b0\u00b4\u00cc\u00e1\u00b9\u00a9\u00b5\u00e3 -label.by.role=\u00b0\u00b4\u00bd\u00c7\u00c9\u00ab -label.by.start.date=\u00b0\u00b4\u00bf\u00aa\u00ca\u00bc\u00c8\u00d5\u00c6\u00da -label.by.state=\u00b0\u00b4\u00d7\u00b4\u00cc\u00ac -label.by.traffic.type=\u00b0\u00b4\u00c1\u00f7\u00c1\u00bf\u00c0\u00e0\u00d0\u00cd -label.by.type.id=\u00b0\u00b4\u00c0\u00e0\u00d0\u00cd ID -label.by.type=\u00b0\u00b4\u00c0\u00e0\u00d0\u00cd -label.by.zone=\u00b0\u00b4\u00d7\u00ca\u00d4\u00b4\u00d3\u00f2 -label.bytes.received=\u00bd\u00d3\u00ca\u00d5\u00b5\u00c4\u00d7\u00d6\u00bd\u00da\u00ca\u00fd -label.bytes.sent=\u00b7\u00a2\u00cb\u00cd\u00b5\u00c4\u00d7\u00d6\u00bd\u00da\u00ca\u00fd -label.cancel=\u00c8\u00a1\u00cf\u00fb -label.capacity=\u00c8\u00dd\u00c1\u00bf -label.capacity.bytes=Capacity Bytes -label.capacity.iops=Capacity IOPS -label.certificate=Server certificate -label.change.service.offering=\u00b8\u00fc\u00b8\u00c4\u00b7\u00fe\u00ce\u00f1\u00b7\u00bd\u00b0\u00b8 -label.change.value=\u00b8\u00fc\u00b8\u00c4\u00d6\u00b5 -label.character=\u00d7\u00d6\u00b7\u00fb -label.checksum=MD5 \u00d0\u00a3\u00d1\u00e9\u00ba\u00cd -label.cidr.account=CIDR \u00bb\u00f2\u00d5\u00ca\u00bb\u00a7/\u00b0\u00b2\u00c8\u00ab\u00d7\u00e9 -label.CIDR.list=CIDR \u00c1\u00d0\u00b1\u00ed -label.cidr.list=\u00d4\u00b4 CIDR -label.CIDR.of.destination.network=\u00c4\u00bf\u00b5\u00c4\u00b5\u00d8\u00cd\u00f8\u00c2\u00e7\u00b5\u00c4 CIDR +label.about.app=\u5173\u4e8e CloudStack +label.custom.disk.iops=\u81ea\u5b9a\u4e49 IOPS +label.disk.iops.min=\u6700\u5c0f IOPS +label.disk.iops.max=\u6700\u5927 IOPS +label.disk.iops.total=\u603b IOPS +label.hypervisor.snapshot.reserve=\u865a\u62df\u673a\u7ba1\u7406\u7a0b\u5e8f\u5feb\u7167\u9884\u7559 +label.view.secondary.ips=\u67e5\u770b\u4e8c\u7ea7 IP +message.validate.invalid.characters=\u67e5\u627e\u5230\u65e0\u6548\u5b57\u7b26\uff0c\u8bf7\u66f4\u6b63\u3002 +message.acquire.ip.nic=\u8bf7\u786e\u8ba4\u60a8\u786e\u5b9e\u8981\u83b7\u53d6\u6b64 NIC \u7684\u65b0\u4e8c\u7ea7 IP\u3002
\u6ce8\u610f: \u60a8\u9700\u8981\u5728\u865a\u62df\u673a\u5185\u90e8\u624b\u52a8\u914d\u7f6e\u65b0\u83b7\u53d6\u7684\u4e8c\u7ea7 IP\u3002 +message.select.affinity.groups=\u8bf7\u9009\u62e9\u60a8\u5e0c\u671b\u6b64 VM \u6240\u5c5e\u7684\u4efb\u4f55\u5173\u8054\u6027\u7ec4: +message.no.affinity.groups=\u60a8\u6ca1\u6709\u4efb\u4f55\u5173\u8054\u6027\u7ec4\u3002\u8bf7\u7ee7\u7eed\u6267\u884c\u4e0b\u4e00\u6b65\u64cd\u4f5c\u3002 +label.action.delete.nic=\u79fb\u9664 NIC +message.action.delete.nic=\u8bf7\u786e\u8ba4\u60a8\u786e\u5b9e\u8981\u79fb\u9664\u6b64 NIC\uff0c\u6b64\u64cd\u4f5c\u8fd8\u5c06\u4ece VM \u4e2d\u79fb\u9664\u5173\u8054\u7684\u7f51\u7edc\u3002 +changed.item.properties=\u66f4\u6539\u9879\u76ee\u5c5e\u6027 +confirm.enable.s3=\u8bf7\u586b\u5199\u4ee5\u4e0b\u4fe1\u606f\u4ee5\u542f\u7528\u5bf9 S3 \u652f\u6301\u7684\u4e8c\u7ea7\u5b58\u50a8\u7684\u652f\u6301 +confirm.enable.swift=\u8bf7\u586b\u5199\u4ee5\u4e0b\u4fe1\u606f\u4ee5\u542f\u7528\u5bf9 SWIFT \u7684\u652f\u6301 +error.could.not.change.your.password.because.ldap.is.enabled=\u9519\u8bef\u3002LDAP \u5904\u4e8e\u542f\u7528\u72b6\u6001\uff0c\u65e0\u6cd5\u66f4\u6539\u60a8\u7684\u5bc6\u7801\u3002 +error.could.not.enable.zone=\u65e0\u6cd5\u542f\u7528\u8d44\u6e90\u57df +error.installWizard.message=\u51fa\u73b0\u95ee\u9898\uff1b\u8bf7\u8fd4\u56de\u5e76\u66f4\u6b63\u4efb\u4f55\u9519\u8bef +error.invalid.username.password=\u7528\u6237\u540d\u6216\u5bc6\u7801\u65e0\u6548 +error.login=\u60a8\u7684\u7528\u6237\u540d/\u5bc6\u7801\u4e0e\u6211\u4eec\u7684\u8bb0\u5f55\u4e0d\u4e00\u81f4\u3002 +error.menu.select=\u6b63\u5728\u9009\u62e9\u9879\u76ee\uff0c\u65e0\u6cd5\u6267\u884c\u64cd\u4f5c\u3002 +error.mgmt.server.inaccessible=\u65e0\u6cd5\u8bbf\u95ee\u7ba1\u7406\u670d\u52a1\u5668\u3002\u8bf7\u7a0d\u540e\u518d\u8bd5\u3002 +error.password.not.match=\u5bc6\u7801\u5b57\u6bb5\u4e0d\u4e00\u81f4 +error.please.specify.physical.network.tags=\u7f51\u7edc\u65b9\u6848\u5728\u60a8\u4e3a\u6b64\u7269\u7406\u7f51\u7edc\u6307\u5b9a\u6807\u7b7e\u4e4b\u540e\u624d\u53ef\u7528\u3002 +error.session.expired=\u60a8\u7684\u4f1a\u8bdd\u5df2\u8fc7\u671f\u3002 +error.something.went.wrong.please.correct.the.following=\u51fa\u73b0\u95ee\u9898\uff1b\u8bf7\u66f4\u6b63\u4ee5\u4e0b\u5404\u9879 +error.unable.to.reach.management.server=\u65e0\u6cd5\u8bbf\u95ee\u7ba1\u7406\u670d\u52a1\u5668 +error.unresolved.internet.name=\u65e0\u6cd5\u89e3\u6790\u60a8\u7684 Internet \u540d\u79f0\u3002 +label.extractable=\u53ef\u63d0\u53d6 +force.delete.domain.warning=\u8b66\u544a\: \u9009\u62e9\u6b64\u9009\u9879\u5c06\u5bfc\u81f4\u5220\u9664\u6240\u6709\u5b50\u57df\u4ee5\u53ca\u6240\u6709\u76f8\u5173\u8054\u7684\u5e10\u6237\u53ca\u5176\u8d44\u6e90\u3002 +force.delete=\u5f3a\u5236\u5220\u9664 +force.remove.host.warning=\u8b66\u544a\: \u9009\u62e9\u6b64\u9009\u9879\u5c06\u5bfc\u81f4 CloudStack \u5728\u4ece\u7fa4\u96c6\u4e2d\u79fb\u9664\u6b64\u4e3b\u673a\u4e4b\u524d\uff0c\u5f3a\u5236\u505c\u6b62\u6240\u6709\u6b63\u5728\u8fd0\u884c\u7684\u865a\u62df\u673a\u3002 +force.remove=\u5f3a\u5236\u79fb\u9664 +force.stop.instance.warning=\u8b66\u544a\: \u9664\u975e\u4e07\u4e0d\u5f97\u5df2\uff0c\u5426\u5219\u4e0d\u5e94\u5f3a\u5236\u505c\u6b62\u6b64\u5b9e\u4f8b\u3002\u505c\u6b62\u6b64\u5b9e\u4f8b\u53ef\u80fd\u4f1a\u5bfc\u81f4\u6570\u636e\u4e22\u5931\u4ee5\u53ca\u81f4\u4f7f\u865a\u62df\u673a\u72b6\u6001\u4e0d\u4e00\u81f4\u3002 +force.stop=\u5f3a\u5236\u505c\u6b62 +ICMP.code=ICMP \u4ee3\u7801 +ICMP.type=ICMP \u7c7b\u578b +image.directory=\u56fe\u7247\u76ee\u5f55 +inline=\u5185\u8054 +instances.actions.reboot.label=\u91cd\u65b0\u542f\u52a8\u5b9e\u4f8b +label.accept.project.invitation=\u63a5\u53d7\u9879\u76ee\u9080\u8bf7 +label.account.and.security.group=\u5e10\u6237\u3001\u5b89\u5168\u7ec4 +label.account.id=\u5e10\u6237 ID +label.account.name=\u5e10\u6237\u540d\u79f0 +label.account.specific=\u5e10\u6237\u4e13\u7528 +label.account=\u5e10\u6237 +label.accounts=\u5e10\u6237 +label.acquire.new.ip=\u83b7\u53d6\u65b0 IP +label.acquire.new.secondary.ip=\u83b7\u53d6\u65b0\u4e8c\u7ea7 IP +label.action.attach.disk.processing=\u6b63\u5728\u9644\u52a0\u78c1\u76d8... +label.action.attach.disk=\u9644\u52a0\u78c1\u76d8 +label.action.attach.iso.processing=\u6b63\u5728\u9644\u52a0 ISO... +label.action.attach.iso=\u9644\u52a0 ISO +label.action.cancel.maintenance.mode.processing=\u6b63\u5728\u53d6\u6d88\u7ef4\u62a4\u6a21\u5f0f... +label.action.cancel.maintenance.mode=\u53d6\u6d88\u7ef4\u62a4\u6a21\u5f0f +label.action.change.password=\u66f4\u6539\u5bc6\u7801 +label.action.change.service.processing=\u6b63\u5728\u66f4\u6539\u670d\u52a1... +label.action.change.service=\u66f4\u6539\u670d\u52a1 +label.action.copy.ISO.processing=\u6b63\u5728\u590d\u5236 ISO... +label.action.copy.ISO=\u590d\u5236 ISO +label.action.copy.template.processing=\u6b63\u5728\u590d\u5236\u6a21\u677f... +label.action.copy.template=\u590d\u5236\u6a21\u677f +label.action.create.template.from.vm=\u57fa\u4e8e VM \u521b\u5efa\u6a21\u677f +label.action.create.template.from.volume=\u57fa\u4e8e\u5377\u521b\u5efa\u6a21\u677f +label.action.create.template.processing=\u6b63\u5728\u521b\u5efa\u6a21\u677f... +label.action.create.template=\u521b\u5efa\u6a21\u677f +label.action.create.vm.processing=\u6b63\u5728\u521b\u5efa VM... +label.action.create.vm=\u521b\u5efa VM +label.action.create.volume.processing=\u6b63\u5728\u521b\u5efa\u5377... +label.action.create.volume=\u521b\u5efa\u5377 +label.action.delete.account.processing=\u6b63\u5728\u5220\u9664\u5e10\u6237... +label.action.delete.account=\u5220\u9664\u5e10\u6237 +label.action.delete.cluster.processing=\u6b63\u5728\u5220\u9664\u7fa4\u96c6... +label.action.delete.cluster=\u5220\u9664\u7fa4\u96c6 +label.action.delete.disk.offering.processing=\u6b63\u5728\u5220\u9664\u78c1\u76d8\u65b9\u6848... +label.action.delete.disk.offering=\u5220\u9664\u78c1\u76d8\u65b9\u6848 +label.action.delete.domain.processing=\u6b63\u5728\u5220\u9664\u57df... +label.action.delete.domain=\u5220\u9664\u57df +label.action.delete.firewall.processing=\u6b63\u5728\u5220\u9664\u9632\u706b\u5899... +label.action.delete.firewall=\u5220\u9664\u9632\u706b\u5899\u89c4\u5219 +label.action.delete.ingress.rule.processing=\u6b63\u5728\u5220\u9664\u5165\u53e3\u89c4\u5219... +label.action.delete.ingress.rule=\u5220\u9664\u5165\u53e3\u89c4\u5219 +label.action.delete.IP.range.processing=\u6b63\u5728\u5220\u9664 IP \u8303\u56f4... +label.action.delete.IP.range=\u5220\u9664 IP \u8303\u56f4 +label.action.delete.ISO.processing=\u6b63\u5728\u5220\u9664 ISO... +label.action.delete.ISO=\u5220\u9664 ISO +label.action.delete.load.balancer.processing=\u6b63\u5728\u5220\u9664\u8d1f\u8f7d\u5e73\u8861\u5668... +label.action.delete.load.balancer=\u5220\u9664\u8d1f\u8f7d\u5e73\u8861\u5668\u89c4\u5219 +label.action.delete.network.processing=\u6b63\u5728\u5220\u9664\u7f51\u7edc... +label.action.delete.network=\u5220\u9664\u7f51\u7edc +label.action.delete.nexusVswitch=\u5220\u9664 Nexus 1000v +label.action.delete.physical.network=\u5220\u9664\u7269\u7406\u7f51\u7edc +label.action.delete.pod.processing=\u6b63\u5728\u5220\u9664\u63d0\u4f9b\u70b9... +label.action.delete.pod=\u5220\u9664\u63d0\u4f9b\u70b9 +label.action.delete.primary.storage.processing=\u6b63\u5728\u5220\u9664\u4e3b\u5b58\u50a8... +label.action.delete.primary.storage=\u5220\u9664\u4e3b\u5b58\u50a8 +label.action.delete.secondary.storage.processing=\u6b63\u5728\u5220\u9664\u4e8c\u7ea7\u5b58\u50a8... +label.action.delete.secondary.storage=\u5220\u9664\u4e8c\u7ea7\u5b58\u50a8 +label.action.delete.security.group.processing=\u6b63\u5728\u5220\u9664\u5b89\u5168\u7ec4... +label.action.delete.security.group=\u5220\u9664\u5b89\u5168\u7ec4 +label.action.delete.service.offering.processing=\u6b63\u5728\u5220\u9664\u670d\u52a1\u65b9\u6848... +label.action.delete.service.offering=\u5220\u9664\u670d\u52a1\u65b9\u6848 +label.action.delete.snapshot.processing=\u6b63\u5728\u5220\u9664\u5feb\u7167... +label.action.delete.snapshot=\u5220\u9664\u5feb\u7167 +label.action.delete.system.service.offering=\u5220\u9664\u7cfb\u7edf\u670d\u52a1\u65b9\u6848 +label.action.delete.template.processing=\u6b63\u5728\u5220\u9664\u6a21\u677f... +label.action.delete.template=\u5220\u9664\u6a21\u677f +label.action.delete.user.processing=\u6b63\u5728\u5220\u9664\u7528\u6237... +label.action.delete.user=\u5220\u9664\u7528\u6237 +label.action.delete.volume.processing=\u6b63\u5728\u5220\u9664\u5377... +label.action.delete.volume=\u5220\u9664\u5377 +label.action.delete.zone.processing=\u6b63\u5728\u5220\u9664\u8d44\u6e90\u57df... +label.action.delete.zone=\u5220\u9664\u8d44\u6e90\u57df +label.action.destroy.instance.processing=\u6b63\u5728\u9500\u6bc1\u5b9e\u4f8b... +label.action.destroy.instance=\u9500\u6bc1\u5b9e\u4f8b +label.action.destroy.systemvm.processing=\u6b63\u5728\u9500\u6bc1\u7cfb\u7edf VM... +label.action.destroy.systemvm=\u9500\u6bc1\u7cfb\u7edf VM +label.action.detach.disk.processing=\u6b63\u5728\u53d6\u6d88\u9644\u52a0\u78c1\u76d8... +label.action.detach.disk=\u53d6\u6d88\u9644\u52a0\u78c1\u76d8 +label.action.detach.iso.processing=\u6b63\u5728\u53d6\u6d88\u9644\u52a0 ISO... +label.action.detach.iso=\u53d6\u6d88\u9644\u52a0 ISO +label.action.disable.account.processing=\u6b63\u5728\u7981\u7528\u5e10\u6237... +label.action.disable.account=\u7981\u7528\u5e10\u6237 +label.action.disable.cluster.processing=\u6b63\u5728\u7981\u7528\u7fa4\u96c6... +label.action.disable.cluster=\u7981\u7528\u7fa4\u96c6 +label.action.disable.nexusVswitch=\u7981\u7528 Nexus 1000v +label.action.disable.physical.network=\u7981\u7528\u7269\u7406\u7f51\u7edc +label.action.disable.pod.processing=\u6b63\u5728\u7981\u7528\u63d0\u4f9b\u70b9... +label.action.disable.pod=\u7981\u7528\u63d0\u4f9b\u70b9 +label.action.disable.static.NAT.processing=\u6b63\u5728\u7981\u7528\u9759\u6001 NAT... +label.action.disable.static.NAT=\u7981\u7528\u9759\u6001 NAT +label.action.disable.user.processing=\u6b63\u5728\u7981\u7528\u7528\u6237... +label.action.disable.user=\u7981\u7528\u7528\u6237 +label.action.disable.zone.processing=\u6b63\u5728\u7981\u7528\u8d44\u6e90\u57df... +label.action.disable.zone=\u7981\u7528\u8d44\u6e90\u57df +label.action.download.ISO=\u4e0b\u8f7d ISO +label.action.download.template=\u4e0b\u8f7d\u6a21\u677f +label.action.download.volume.processing=\u6b63\u5728\u4e0b\u8f7d\u5377... +label.action.download.volume=\u4e0b\u8f7d\u5377 +label.action.edit.account=\u7f16\u8f91\u5e10\u6237 +label.action.edit.disk.offering=\u7f16\u8f91\u78c1\u76d8\u65b9\u6848 +label.action.edit.domain=\u7f16\u8f91\u57df +label.action.edit.global.setting=\u7f16\u8f91\u5168\u5c40\u8bbe\u7f6e +label.action.edit.host=\u7f16\u8f91\u4e3b\u673a +label.action.edit.instance=\u7f16\u8f91\u5b9e\u4f8b +label.action.edit.ISO=\u7f16\u8f91 ISO +label.action.edit.network.offering=\u7f16\u8f91\u7f51\u7edc\u65b9\u6848 +label.action.edit.network.processing=\u6b63\u5728\u7f16\u8f91\u7f51\u7edc... +label.action.edit.network=\u7f16\u8f91\u7f51\u7edc +label.action.edit.pod=\u7f16\u8f91\u63d0\u4f9b\u70b9 +label.action.edit.primary.storage=\u7f16\u8f91\u4e3b\u5b58\u50a8 +label.action.edit.resource.limits=\u7f16\u8f91\u8d44\u6e90\u9650\u5236 +label.action.edit.service.offering=\u7f16\u8f91\u670d\u52a1\u65b9\u6848 +label.action.edit.template=\u7f16\u8f91\u6a21\u677f +label.action.edit.user=\u7f16\u8f91\u7528\u6237 +label.action.edit.zone=\u7f16\u8f91\u8d44\u6e90\u57df +label.action.enable.account.processing=\u6b63\u5728\u542f\u7528\u5e10\u6237... +label.action.enable.account=\u542f\u7528\u5e10\u6237 +label.action.enable.cluster.processing=\u6b63\u5728\u542f\u7528\u7fa4\u96c6... +label.action.enable.cluster=\u542f\u7528\u7fa4\u96c6 +label.action.enable.maintenance.mode.processing=\u6b63\u5728\u542f\u7528\u7ef4\u62a4\u6a21\u5f0f... +label.action.enable.maintenance.mode=\u542f\u7528\u7ef4\u62a4\u6a21\u5f0f +label.action.enable.nexusVswitch=\u542f\u7528 Nexus 1000v +label.action.enable.physical.network=\u542f\u7528\u7269\u7406\u7f51\u7edc +label.action.enable.pod.processing=\u6b63\u5728\u542f\u7528\u63d0\u4f9b\u70b9... +label.action.enable.pod=\u542f\u7528\u63d0\u4f9b\u70b9 +label.action.enable.static.NAT.processing=\u6b63\u5728\u542f\u7528\u9759\u6001 NAT... +label.action.enable.static.NAT=\u542f\u7528\u9759\u6001 NAT +label.action.enable.user.processing=\u6b63\u5728\u542f\u7528\u7528\u6237... +label.action.enable.user=\u542f\u7528\u7528\u6237 +label.action.enable.zone.processing=\u6b63\u5728\u542f\u7528\u8d44\u6e90\u57df... +label.action.enable.zone=\u542f\u7528\u8d44\u6e90\u57df +label.action.expunge.instance=\u5220\u9664\u5b9e\u4f8b +label.action.expunge.instance.processing=\u6b63\u5728\u5220\u9664\u5b9e\u4f8b... +label.action.force.reconnect.processing=\u6b63\u5728\u91cd\u65b0\u8fde\u63a5... +label.action.force.reconnect=\u5f3a\u5236\u91cd\u65b0\u8fde\u63a5 +label.action.generate.keys.processing=\u6b63\u5728\u751f\u6210\u5bc6\u94a5... +label.action.generate.keys=\u751f\u6210\u5bc6\u94a5 +label.action.list.nexusVswitch=\u5217\u51fa Nexus 1000v +label.action.lock.account.processing=\u6b63\u5728\u9501\u5b9a\u5e10\u6237... +label.action.lock.account=\u9501\u5b9a\u5e10\u6237 +label.action.manage.cluster.processing=\u6b63\u5728\u6258\u7ba1\u7fa4\u96c6... +label.action.manage.cluster=\u6258\u7ba1\u7fa4\u96c6 +label.action.migrate.instance.processing=\u6b63\u5728\u8fc1\u79fb\u5b9e\u4f8b... +label.action.migrate.instance=\u8fc1\u79fb\u5b9e\u4f8b +label.action.migrate.router.processing=\u6b63\u5728\u8fc1\u79fb\u8def\u7531\u5668... +label.action.migrate.router=\u8fc1\u79fb\u8def\u7531\u5668 +label.action.migrate.systemvm.processing=\u6b63\u5728\u8fc1\u79fb\u7cfb\u7edf VM... +label.action.migrate.systemvm=\u8fc1\u79fb\u7cfb\u7edf VM +label.action.reboot.instance.processing=\u6b63\u5728\u91cd\u65b0\u542f\u52a8\u5b9e\u4f8b... +label.action.reboot.instance=\u91cd\u65b0\u542f\u52a8\u5b9e\u4f8b +label.action.reboot.router.processing=\u6b63\u5728\u91cd\u65b0\u542f\u52a8\u8def\u7531\u5668... +label.action.reboot.router=\u91cd\u65b0\u542f\u52a8\u8def\u7531\u5668 +label.action.reboot.systemvm.processing=\u6b63\u5728\u91cd\u65b0\u542f\u52a8\u7cfb\u7edf VM... +label.action.reboot.systemvm=\u91cd\u65b0\u542f\u52a8\u7cfb\u7edf VM +label.action.recurring.snapshot=\u91cd\u73b0\u5feb\u7167 +label.action.register.iso=\u6ce8\u518c ISO +label.action.register.template=\u6ce8\u518c\u6a21\u677f +label.action.release.ip.processing=\u6b63\u5728\u91ca\u653e IP... +label.action.release.ip=\u91ca\u653e IP +label.action.remove.host.processing=\u6b63\u5728\u5220\u9664\u4e3b\u673a... +label.action.remove.host=\u5220\u9664\u4e3b\u673a +label.action.reset.password.processing=\u6b63\u5728\u91cd\u7f6e\u5bc6\u7801... +label.action.reset.password=\u91cd\u7f6e\u5bc6\u7801 +label.action.resize.volume.processing=\u6b63\u5728\u8c03\u6574\u5377\u5927\u5c0f.... +label.action.resize.volume=\u8c03\u6574\u5377\u5927\u5c0f +label.action.resource.limits=\u8d44\u6e90\u9650\u5236 +label.action.restore.instance.processing=\u6b63\u5728\u8fd8\u539f\u5b9e\u4f8b... +label.action.restore.instance=\u8fd8\u539f\u5b9e\u4f8b +label.action.start.instance.processing=\u6b63\u5728\u542f\u52a8\u5b9e\u4f8b... +label.action.start.instance=\u542f\u52a8\u5b9e\u4f8b +label.action.start.router.processing=\u6b63\u5728\u542f\u52a8\u8def\u7531\u5668... +label.action.start.router=\u542f\u52a8\u8def\u7531\u5668 +label.action.start.systemvm.processing=\u6b63\u5728\u542f\u52a8\u7cfb\u7edf VM... +label.action.start.systemvm=\u542f\u52a8\u7cfb\u7edf VM +label.action.stop.instance.processing=\u6b63\u5728\u505c\u6b62\u5b9e\u4f8b... +label.action.stop.instance=\u505c\u6b62\u5b9e\u4f8b +label.action.stop.router.processing=\u6b63\u5728\u505c\u6b62\u8def\u7531\u5668... +label.action.stop.router=\u505c\u6b62\u8def\u7531\u5668 +label.action.stop.systemvm.processing=\u6b63\u5728\u505c\u6b62\u7cfb\u7edf VM... +label.action.stop.systemvm=\u505c\u6b62\u7cfb\u7edf VM +label.action.take.snapshot.processing=\u6b63\u5728\u521b\u5efa\u5feb\u7167... +label.action.take.snapshot=\u521b\u5efa\u5feb\u7167 +label.action.revert.snapshot.processing=\u6b63\u5728\u8fd8\u539f\u5230\u5feb\u7167... +label.action.revert.snapshot=\u8fd8\u539f\u5230\u5feb\u7167 +label.action.unmanage.cluster.processing=\u6b63\u5728\u53d6\u6d88\u6258\u7ba1\u7fa4\u96c6... +label.action.unmanage.cluster=\u53d6\u6d88\u6258\u7ba1\u7fa4\u96c6 +label.action.update.OS.preference.processing=\u6b63\u5728\u66f4\u65b0\u64cd\u4f5c\u7cfb\u7edf\u9996\u9009\u9879... +label.action.update.OS.preference=\u66f4\u65b0\u64cd\u4f5c\u7cfb\u7edf\u9996\u9009\u9879 +label.action.update.resource.count.processing=\u6b63\u5728\u66f4\u65b0\u8d44\u6e90\u6570\u91cf... +label.action.update.resource.count=\u66f4\u65b0\u8d44\u6e90\u6570\u91cf +label.action.vmsnapshot.create=\u521b\u5efa VM \u5feb\u7167 +label.action.vmsnapshot.delete=\u5220\u9664 VM \u5feb\u7167 +label.action.vmsnapshot.revert=\u8fd8\u539f\u5230 VM \u5feb\u7167 +label.actions=\u64cd\u4f5c +label.activate.project=\u6fc0\u6d3b\u9879\u76ee +label.active.sessions=\u6d3b\u52a8\u4f1a\u8bdd +label.add.account.to.project=\u5411\u9879\u76ee\u4e2d\u6dfb\u52a0\u5e10\u6237 +label.add.account=\u6dfb\u52a0\u5e10\u6237 +label.add.accounts.to=\u6dfb\u52a0\u5e10\u6237\u81f3 +label.add.accounts=\u6dfb\u52a0\u5e10\u6237 +label.add.ACL=\u6dfb\u52a0 ACL +label.add.affinity.group=\u6dfb\u52a0\u65b0\u5173\u8054\u6027\u7ec4 +label.add.BigSwitchVns.device=\u6dfb\u52a0 BigSwitch Vns \u63a7\u5236\u5668 +label.add.by.cidr=\u6309 CIDR \u6dfb\u52a0 +label.add.by.group=\u6309\u7ec4\u6dfb\u52a0 +label.add.by=\u6dfb\u52a0\u65b9\u5f0f +label.add.cluster=\u6dfb\u52a0\u7fa4\u96c6 +label.add.compute.offering=\u6dfb\u52a0\u8ba1\u7b97\u65b9\u6848 +label.add.direct.iprange=\u6dfb\u52a0\u76f4\u63a5 IP \u8303\u56f4 +label.add.disk.offering=\u6dfb\u52a0\u78c1\u76d8\u65b9\u6848 +label.add.domain=\u6dfb\u52a0\u57df +label.add.egress.rule=\u6dfb\u52a0\u51fa\u53e3\u89c4\u5219 +label.add.F5.device=\u6dfb\u52a0 F5 \u8bbe\u5907 +label.add.firewall=\u6dfb\u52a0\u9632\u706b\u5899\u89c4\u5219 +label.add.guest.network=\u6dfb\u52a0\u6765\u5bbe\u7f51\u7edc +label.add.host=\u6dfb\u52a0\u4e3b\u673a +label.add.ingress.rule=\u6dfb\u52a0\u5165\u53e3\u89c4\u5219 +label.add.intermediate.certificate=\u6dfb\u52a0\u4e2d\u95f4\u8bc1\u4e66 +label.add.ip.range=\u6dfb\u52a0 IP \u8303\u56f4 +label.add.load.balancer=\u6dfb\u52a0\u8d1f\u8f7d\u5e73\u8861\u5668 +label.add.more=\u6dfb\u52a0\u66f4\u591a +label.add.netScaler.device=\u6dfb\u52a0 Netscaler \u8bbe\u5907 +label.add.network.ACL=\u6dfb\u52a0\u7f51\u7edc ACL +label.add.network.device=\u6dfb\u52a0\u7f51\u7edc\u8bbe\u5907 +label.add.network.offering=\u6dfb\u52a0\u7f51\u7edc\u65b9\u6848 +label.add.network=\u6dfb\u52a0\u7f51\u7edc +label.add.new.F5=\u6dfb\u52a0\u65b0 F5 +label.add.new.gateway=\u6dfb\u52a0\u65b0\u7f51\u5173 +label.add.new.NetScaler=\u6dfb\u52a0\u65b0 NetScaler +label.add.new.SRX=\u6dfb\u52a0\u65b0 SRX +label.add.new.PA=\u6dfb\u52a0\u65b0 Palo Alto +label.add.new.tier=\u6dfb\u52a0\u65b0\u5c42 +label.add.NiciraNvp.device=\u6dfb\u52a0 Nvp \u63a7\u5236\u5668 +label.add.NuageVsp.device=\u6dfb\u52a0 Nuage \u865a\u62df\u670d\u52a1\u76ee\u5f55(VSD) +label.add.BrocadeVcs.device=\u6dfb\u52a0 Brocade Vcs \u4ea4\u6362\u673a +label.add.physical.network=\u6dfb\u52a0\u7269\u7406\u7f51\u7edc +label.add.pod=\u6dfb\u52a0\u63d0\u4f9b\u70b9 +label.add.port.forwarding.rule=\u6dfb\u52a0\u7aef\u53e3\u8f6c\u53d1\u89c4\u5219 +label.add.primary.storage=\u6dfb\u52a0\u4e3b\u5b58\u50a8 +label.add.region=\u6dfb\u52a0\u5730\u7406\u533a\u57df +label.add.resources=\u6dfb\u52a0\u8d44\u6e90 +label.add.route=\u6dfb\u52a0\u8def\u7531 +label.add.rule=\u6dfb\u52a0\u89c4\u5219 +label.add.secondary.storage=\u6dfb\u52a0\u4e8c\u7ea7\u5b58\u50a8 +label.add.security.group=\u6dfb\u52a0\u5b89\u5168\u7ec4 +label.add.service.offering=\u6dfb\u52a0\u670d\u52a1\u65b9\u6848 +label.add.SRX.device=\u6dfb\u52a0 SRX \u8bbe\u5907 +label.add.PA.device=\u6dfb\u52a0 Palo Alto \u8bbe\u5907 +label.add.static.nat.rule=\u6dfb\u52a0\u9759\u6001 NAT \u89c4\u5219 +label.add.static.route=\u6dfb\u52a0\u9759\u6001\u8def\u7531 +label.add.system.service.offering=\u6dfb\u52a0\u7cfb\u7edf\u670d\u52a1\u65b9\u6848 +label.add.template=\u6dfb\u52a0\u6a21\u677f +label.add.to.group=\u6dfb\u52a0\u5230\u7ec4 +label.add.user=\u6dfb\u52a0\u7528\u6237 +label.add.vlan=\u6dfb\u52a0 VLAN +label.add.vxlan=\u6dfb\u52a0 VXLAN +label.add.VM.to.tier=\u5411\u5c42\u4e2d\u6dfb\u52a0 VM +label.add.vm=\u6dfb\u52a0 VM +label.add.vms.to.lb=\u5411\u8d1f\u8f7d\u5e73\u8861\u5668\u89c4\u5219\u4e2d\u6dfb\u52a0 VM +label.add.vms=\u6dfb\u52a0 VM +label.add.volume=\u6dfb\u52a0\u5377 +label.add.vpc=\u6dfb\u52a0 VPC +label.add.vpn.customer.gateway=\u6dfb\u52a0 VPN \u5ba2\u6237\u7f51\u5173 +label.add.VPN.gateway=\u6dfb\u52a0 VPN \u7f51\u5173 +label.add.vpn.user=\u6dfb\u52a0 VPN \u7528\u6237 +label.add.zone=\u6dfb\u52a0\u8d44\u6e90\u57df +label.add=\u6dfb\u52a0 +label.adding.cluster=\u6b63\u5728\u6dfb\u52a0\u7fa4\u96c6 +label.adding.failed=\u6dfb\u52a0\u5931\u8d25 +label.adding.pod=\u6b63\u5728\u6dfb\u52a0\u63d0\u4f9b\u70b9 +label.adding.processing=\u6b63\u5728\u6dfb\u52a0... +label.adding.succeeded=\u5df2\u6210\u529f\u6dfb\u52a0 +label.adding.user=\u6b63\u5728\u6dfb\u52a0\u7528\u6237 +label.adding.zone=\u6b63\u5728\u6dfb\u52a0\u8d44\u6e90\u57df +label.adding=\u6b63\u5728\u6dfb\u52a0 +label.additional.networks=\u5176\u4ed6\u7f51\u7edc +label.admin.accounts=\u7ba1\u7406\u5458\u5e10\u6237 +label.admin=\u7ba1\u7406\u5458 +label.advanced.mode=\u9ad8\u7ea7\u6a21\u5f0f +label.advanced.search=\u9ad8\u7ea7\u641c\u7d22 +label.advanced=\u9ad8\u7ea7 +label.affinity.group=\u5173\u8054\u6027\u7ec4 +label.affinity.groups=\u5173\u8054\u6027\u7ec4 +label.affinity=\u5173\u8054\u6027 +label.agent.password=\u4ee3\u7406\u5bc6\u7801 +label.agent.username=\u4ee3\u7406\u7528\u6237\u540d +label.agree=\u540c\u610f +label.alert=\u8b66\u62a5 +label.algorithm=\u7b97\u6cd5 +label.allocated=\u5df2\u5206\u914d +label.allocation.state=\u5206\u914d\u72b6\u6001 +label.anti.affinity.group=\u53cd\u5173\u8054\u6027\u7ec4 +label.anti.affinity.groups=\u53cd\u5173\u8054\u6027\u7ec4 +label.anti.affinity=\u53cd\u5173\u8054\u6027 +label.api.key=API \u5bc6\u94a5 +label.api.version=API \u7248\u672c +label.apply=\u5e94\u7528 +label.assign.to.load.balancer=\u6b63\u5728\u5c06\u5b9e\u4f8b\u5206\u914d\u7ed9\u8d1f\u8f7d\u5e73\u8861\u5668 +label.assign=\u5206\u914d +label.associated.network.id=\u5df2\u5173\u8054\u7f51\u7edc ID +label.associated.network=\u5173\u8054\u7f51\u7edc +label.attached.iso=\u5df2\u9644\u52a0 ISO +label.author.email=\u4f5c\u8005\u7535\u5b50\u90ae\u4ef6 +label.author.name=\u4f5c\u8005\u59d3\u540d +label.availability.zone=\u53ef\u7528\u8d44\u6e90\u57df +label.availability=\u53ef\u7528\u6027 +label.available.public.ips=\u53ef\u7528\u516c\u7528 IP \u5730\u5740 +label.available=\u53ef\u7528 +label.back=\u540e\u9000 +label.bandwidth=\u5e26\u5bbd +label.basic.mode=\u57fa\u672c\u6a21\u5f0f +label.basic=\u57fa\u672c +label.bigswitch.controller.address=BigSwitch Vns \u63a7\u5236\u5668\u5730\u5740 +label.bootable=\u53ef\u542f\u52a8 +label.broadcast.domain.range=\u5e7f\u64ad\u57df\u8303\u56f4 +label.broadcast.domain.type=\u5e7f\u64ad\u57df\u7c7b\u578b +label.broadcast.uri=\u5e7f\u64ad URI +label.by.account=\u6309\u5e10\u6237 +label.by.availability=\u6309\u53ef\u7528\u6027 +label.by.domain=\u6309\u57df +label.by.end.date=\u6309\u7ed3\u675f\u65e5\u671f +label.by.level=\u6309\u7ea7\u522b +label.by.pod=\u6309\u63d0\u4f9b\u70b9 +label.by.role=\u6309\u89d2\u8272 +label.by.start.date=\u6309\u5f00\u59cb\u65e5\u671f +label.by.state=\u6309\u72b6\u6001 +label.by.traffic.type=\u6309\u6d41\u91cf\u7c7b\u578b +label.by.type.id=\u6309\u7c7b\u578b ID +label.by.type=\u6309\u7c7b\u578b +label.by.zone=\u6309\u8d44\u6e90\u57df +label.bytes.received=\u63a5\u6536\u7684\u5b57\u8282\u6570 +label.bytes.sent=\u53d1\u9001\u7684\u5b57\u8282\u6570 +label.cancel=\u53d6\u6d88 +label.capacity=\u5bb9\u91cf +label.capacity.bytes=\u5bb9\u91cf(\u5b57\u8282) +label.capacity.iops=\u5bb9\u91cf IOPS +label.certificate=\u670d\u52a1\u5668\u8bc1\u4e66 +label.change.service.offering=\u66f4\u6539\u670d\u52a1\u65b9\u6848 +label.change.value=\u66f4\u6539\u503c +label.character=\u5b57\u7b26 +label.md5.checksum=MD5 \u6821\u9a8c\u548c +label.cidr.account=CIDR \u6216\u5e10\u6237/\u5b89\u5168\u7ec4 +label.CIDR.list=CIDR \u5217\u8868 +label.cidr.list=\u6e90 CIDR +label.CIDR.of.destination.network=\u76ee\u7684\u5730\u7f51\u7edc\u7684 CIDR label.cidr=CIDR -label.clean.up=\u00c7\u00e5\u00c0\u00ed -label.clear.list=\u00c7\u00e5\u00b3\u00fd\u00c1\u00d0\u00b1\u00ed -label.close=\u00b9\u00d8\u00b1\u00d5 -label.cloud.console=\u00d4\u00c6\u00b9\u00dc\u00c0\u00ed\u00bf\u00d8\u00d6\u00c6\u00cc\u00a8 -label.cloud.managed=\u00d3\u00c9 Cloud.com \u00b9\u00dc\u00c0\u00ed -label.cluster.name=\u00c8\u00ba\u00bc\u00af\u00c3\u00fb\u00b3\u00c6 -label.cluster.type=\u00c8\u00ba\u00bc\u00af\u00c0\u00e0\u00d0\u00cd -label.cluster=\u00c8\u00ba\u00bc\u00af -label.clusters=\u00c8\u00ba\u00bc\u00af +label.clean.up=\u6e05\u7406 +label.clear.list=\u6e05\u9664\u5217\u8868 +label.close=\u5173\u95ed +label.cloud.console=\u4e91\u7ba1\u7406\u63a7\u5236\u53f0 +label.cloud.managed=\u7531 Cloud.com \u7ba1\u7406 +label.cluster.name=\u7fa4\u96c6\u540d\u79f0 +label.cluster.type=\u7fa4\u96c6\u7c7b\u578b +label.cluster=\u7fa4\u96c6 +label.clusters=\u7fa4\u96c6 label.clvm=CLVM label.rbd=RBD -label.rbd.monitor=Ceph \u00bc\u00e0\u00ca\u00d3\u00c6\u00f7 -label.rbd.pool=Ceph \u00b3\u00d8 -label.rbd.id=Cephx \u00d3\u00c3\u00bb\u00a7 -label.rbd.secret=Cephx \u00c3\u00dc\u00d4\u00bf -label.code=\u00b4\u00fa\u00c2\u00eb -label.community=\u00c9\u00e7\u00c7\u00f8 -label.compute.and.storage=\u00bc\u00c6\u00cb\u00e3\u00d3\u00eb\u00b4\u00e6\u00b4\u00a2 -label.compute.offering=\u00bc\u00c6\u00cb\u00e3\u00b7\u00bd\u00b0\u00b8 -label.compute.offerings=\u00bc\u00c6\u00cb\u00e3\u00b7\u00bd\u00b0\u00b8 -label.compute=\u00bc\u00c6\u00cb\u00e3 -label.configuration=\u00c5\u00e4\u00d6\u00c3 -label.configure.network.ACLs=\u00c5\u00e4\u00d6\u00c3\u00cd\u00f8\u00c2\u00e7 ACL -label.configure.vpc=\u00c5\u00e4\u00d6\u00c3 VPC -label.configure=\u00c5\u00e4\u00d6\u00c3 -label.confirm.password=\u00c8\u00b7\u00c8\u00cf\u00c3\u00dc\u00c2\u00eb -label.confirmation=\u00c8\u00b7\u00c8\u00cf -label.congratulations=\u00d7\u00a3\u00ba\u00d8\u00c4\u00fa\! -label.conserve.mode=\u00b1\u00a3\u00bb\u00a4\u00c4\u00a3\u00ca\u00bd -label.console.proxy=\u00bf\u00d8\u00d6\u00c6\u00cc\u00a8\u00b4\u00fa\u00c0\u00ed -label.continue.basic.install=\u00bc\u00cc\u00d0\u00f8\u00d6\u00b4\u00d0\u00d0\u00bb\u00f9\u00b1\u00be\u00b0\u00b2\u00d7\u00b0 -label.continue=\u00bc\u00cc\u00d0\u00f8 -label.corrections.saved=\u00d2\u00d1\u00b1\u00a3\u00b4\u00e6\u00d0\u00de\u00d5\u00fd -label.cpu.allocated.for.VMs=\u00d2\u00d1\u00b7\u00d6\u00c5\u00e4\u00b8\u00f8 VM \u00b5\u00c4 CPU -label.cpu.allocated=\u00d2\u00d1\u00b7\u00d6\u00c5\u00e4\u00b5\u00c4 CPU -label.CPU.cap=CPU \u00c9\u00cf\u00cf\u00de -label.cpu.limits=CPU \u00cf\u00de\u00d6\u00c6 +label.rbd.monitor=Ceph \u76d1\u89c6\u5668 +label.rbd.pool=Ceph \u6c60 +label.rbd.id=Cephx \u7528\u6237 +label.rbd.secret=Cephx \u5bc6\u94a5 +label.code=\u4ee3\u7801 +label.community=\u793e\u533a +label.compute.and.storage=\u8ba1\u7b97\u4e0e\u5b58\u50a8 +label.compute.offering=\u8ba1\u7b97\u65b9\u6848 +label.compute.offerings=\u8ba1\u7b97\u65b9\u6848 +label.compute=\u8ba1\u7b97 +label.configuration=\u914d\u7f6e +label.configure.network.ACLs=\u914d\u7f6e\u7f51\u7edc ACL +label.configure.vpc=\u914d\u7f6e VPC +label.configure=\u914d\u7f6e +label.confirm.password=\u786e\u8ba4\u5bc6\u7801 +label.confirmation=\u786e\u8ba4 +label.congratulations=\u795d\u8d3a\u60a8\! +label.conserve.mode=\u4fdd\u62a4\u6a21\u5f0f +label.console.proxy=\u63a7\u5236\u53f0\u4ee3\u7406 +label.continue.basic.install=\u7ee7\u7eed\u6267\u884c\u57fa\u672c\u5b89\u88c5 +label.continue=\u7ee7\u7eed +label.corrections.saved=\u5df2\u4fdd\u5b58\u4fee\u6b63 +label.cpu.allocated.for.VMs=\u5df2\u5206\u914d\u7ed9 VM \u7684 CPU +label.cpu.allocated=\u5df2\u5206\u914d\u7684 CPU +label.CPU.cap=CPU \u4e0a\u9650 +label.cpu.limits=CPU \u9650\u5236 label.cpu.mhz=CPU (MHz) -label.cpu.utilized=CPU \u00c0\u00fb\u00d3\u00c3\u00c2\u00ca +label.cpu.utilized=CPU \u5229\u7528\u7387 label.cpu=CPU -label.create.project=\u00b4\u00b4\u00bd\u00a8\u00cf\u00ee\u00c4\u00bf -label.create.template=\u00b4\u00b4\u00bd\u00a8\u00c4\u00a3\u00b0\u00e5 -label.create.VPN.connection=\u00b4\u00b4\u00bd\u00a8 VPN \u00c1\u00ac\u00bd\u00d3 -label.created.by.system=\u00d3\u00c9\u00cf\u00b5\u00cd\u00b3\u00b4\u00b4\u00bd\u00a8 -label.created=\u00b4\u00b4\u00bd\u00a8\u00c8\u00d5\u00c6\u00da -label.cross.zones=\u00bf\u00e7\u00d7\u00ca\u00d4\u00b4\u00d3\u00f2 -label.custom.disk.size=\u00d7\u00d4\u00b6\u00a8\u00d2\u00e5\u00b4\u00c5\u00c5\u00cc\u00b4\u00f3\u00d0\u00a1 -label.daily=\u00c3\u00bf\u00cc\u00ec -label.data.disk.offering=\u00ca\u00fd\u00be\u00dd\u00b4\u00c5\u00c5\u00cc\u00b7\u00bd\u00b0\u00b8 -label.date=\u00c8\u00d5\u00c6\u00da -label.day.of.month=\u00c8\u00d5\u00c6\u00da -label.day.of.week=\u00d0\u00c7\u00c6\u00da -label.dead.peer.detection=\u00ca\u00a7\u00d0\u00a7\u00b6\u00d4\u00b5\u00c8\u00cc\u00e5\u00bc\u00ec\u00b2\u00e2 -label.decline.invitation=\u00be\u00dc\u00be\u00f8\u00d1\u00fb\u00c7\u00eb -label.dedicated=\u00d7\u00a8\u00d3\u00c3 -label.default.use=\u00c4\u00ac\u00c8\u00cf\u00ca\u00b9\u00d3\u00c3 -label.default.view=\u00c4\u00ac\u00c8\u00cf\u00ca\u00d3\u00cd\u00bc -label.default=\u00c4\u00ac\u00c8\u00cf\u00c9\u00e8\u00d6\u00c3 -label.delete.affinity.group=\u00c9\u00be\u00b3\u00fd\u00b9\u00d8\u00c1\u00aa\u00d0\u00d4\u00d7\u00e9 -label.delete.BigSwitchVns=\u00d2\u00c6\u00b3\u00fd BigSwitch Vns \u00bf\u00d8\u00d6\u00c6\u00c6\u00f7 -label.delete.F5=\u00c9\u00be\u00b3\u00fd F5 -label.delete.gateway=\u00c9\u00be\u00b3\u00fd\u00cd\u00f8\u00b9\u00d8 -label.delete.NetScaler=\u00c9\u00be\u00b3\u00fd NetScaler -label.delete.NiciraNvp=Remove Nvp Controller -label.delete.NuageVsp=Remove Nuage VSD -label.delete.BrocadeVcs=Remove Brocade Vcs Switch -label.delete.project=\u00c9\u00be\u00b3\u00fd\u00cf\u00ee\u00c4\u00bf -label.delete.SRX=\u00c9\u00be\u00b3\u00fd SRX -label.delete.PA=\u00c9\u00be\u00b3\u00fd Palo Alto -label.delete.VPN.connection=\u00c9\u00be\u00b3\u00fd VPN \u00c1\u00ac\u00bd\u00d3 -label.delete.VPN.customer.gateway=\u00c9\u00be\u00b3\u00fd VPN \u00bf\u00cd\u00bb\u00a7\u00cd\u00f8\u00b9\u00d8 -label.delete.VPN.gateway=\u00c9\u00be\u00b3\u00fd VPN \u00cd\u00f8\u00b9\u00d8 -label.delete.vpn.user=\u00c9\u00be\u00b3\u00fd VPN \u00d3\u00c3\u00bb\u00a7 -label.delete=\u00c9\u00be\u00b3\u00fd -label.deleting.failed=\u00c9\u00be\u00b3\u00fd\u00ca\u00a7\u00b0\u00dc -label.deleting.processing=\u00d5\u00fd\u00d4\u00da\u00c9\u00be\u00b3\u00fd... -label.description=\u00cb\u00b5\u00c3\u00f7 -label.destination.physical.network.id=\u00c4\u00bf\u00b1\u00ea\u00ce\u00ef\u00c0\u00ed\u00cd\u00f8\u00c2\u00e7 ID -label.destination.zone=\u00c4\u00bf\u00b1\u00ea\u00d7\u00ca\u00d4\u00b4\u00d3\u00f2 -label.destroy.router=\u00cf\u00fa\u00bb\u00d9\u00c2\u00b7\u00d3\u00c9\u00c6\u00f7 -label.destroy=\u00cf\u00fa\u00bb\u00d9 -label.detaching.disk=\u00d5\u00fd\u00d4\u00da\u00c8\u00a1\u00cf\u00fb\u00b8\u00bd\u00bc\u00d3\u00b4\u00c5\u00c5\u00cc -label.details=\u00cf\u00ea\u00cf\u00b8\u00d0\u00c5\u00cf\u00a2 -label.device.id=\u00c9\u00e8\u00b1\u00b8 ID -label.devices=\u00c9\u00e8\u00b1\u00b8 -label.DHCP.server.type=DHCP \u00b7\u00fe\u00ce\u00f1\u00c6\u00f7\u00c0\u00e0\u00d0\u00cd +label.create.project=\u521b\u5efa\u9879\u76ee +label.create.template=\u521b\u5efa\u6a21\u677f +label.create.VPN.connection=\u521b\u5efa VPN \u8fde\u63a5 +label.created.by.system=\u7531\u7cfb\u7edf\u521b\u5efa +label.created=\u521b\u5efa\u65e5\u671f +label.cross.zones=\u8de8\u8d44\u6e90\u57df +label.custom.disk.size=\u81ea\u5b9a\u4e49\u78c1\u76d8\u5927\u5c0f +label.daily=\u6bcf\u5929 +label.data.disk.offering=\u6570\u636e\u78c1\u76d8\u65b9\u6848 +label.date=\u65e5\u671f +label.day.of.month=\u65e5\u671f +label.day.of.week=\u661f\u671f +label.dead.peer.detection=\u5931\u6548\u5bf9\u7b49\u4f53\u68c0\u6d4b +label.decline.invitation=\u62d2\u7edd\u9080\u8bf7 +label.dedicated=\u4e13\u7528 +label.default.use=\u9ed8\u8ba4\u4f7f\u7528 +label.default.view=\u9ed8\u8ba4\u89c6\u56fe +label.default=\u9ed8\u8ba4\u8bbe\u7f6e +label.delete.affinity.group=\u5220\u9664\u5173\u8054\u6027\u7ec4 +label.delete.BigSwitchVns=\u79fb\u9664 BigSwitch Vns \u63a7\u5236\u5668 +label.delete.F5=\u5220\u9664 F5 +label.delete.gateway=\u5220\u9664\u7f51\u5173 +label.delete.NetScaler=\u5220\u9664 NetScaler +label.delete.NiciraNvp=\u5220\u9664 Nvp \u63a7\u5236\u5668 +label.delete.NuageVsp=\u5220\u9664 Nuage VSD +label.delete.BrocadeVcs=\u5220\u9664 Brocade Vcs \u4ea4\u6362\u673a +label.delete.project=\u5220\u9664\u9879\u76ee +label.delete.SRX=\u5220\u9664 SRX +label.delete.PA=\u5220\u9664 Palo Alto +label.delete.VPN.connection=\u5220\u9664 VPN \u8fde\u63a5 +label.delete.VPN.customer.gateway=\u5220\u9664 VPN \u5ba2\u6237\u7f51\u5173 +label.delete.VPN.gateway=\u5220\u9664 VPN \u7f51\u5173 +label.delete.vpn.user=\u5220\u9664 VPN \u7528\u6237 +label.delete=\u5220\u9664 +label.deleting.failed=\u5220\u9664\u5931\u8d25 +label.deleting.processing=\u6b63\u5728\u5220\u9664... +label.description=\u8bf4\u660e +label.destination.physical.network.id=\u76ee\u6807\u7269\u7406\u7f51\u7edc ID +label.destination.zone=\u76ee\u6807\u8d44\u6e90\u57df +label.destroy.router=\u9500\u6bc1\u8def\u7531\u5668 +label.destroy=\u9500\u6bc1 +label.detaching.disk=\u6b63\u5728\u53d6\u6d88\u9644\u52a0\u78c1\u76d8 +label.details=\u8be6\u7ec6\u4fe1\u606f +label.device.id=\u8bbe\u5907 ID +label.devices=\u8bbe\u5907 +label.DHCP.server.type=DHCP \u670d\u52a1\u5668\u7c7b\u578b label.dhcp=DHCP -label.direct.ips=\u00b9\u00b2\u00cf\u00ed\u00cd\u00f8\u00c2\u00e7 IP -label.disable.provider=\u00bd\u00fb\u00d3\u00c3\u00cc\u00e1\u00b9\u00a9\u00b3\u00cc\u00d0\u00f2 -label.disable.vpn=\u00bd\u00fb\u00d3\u00c3 VPN -label.disabled=\u00d2\u00d1\u00bd\u00fb\u00d3\u00c3 -label.disabling.vpn.access=\u00d5\u00fd\u00d4\u00da\u00bd\u00fb\u00d3\u00c3 VPN \u00b7\u00c3\u00ce\u00ca -label.disk.allocated=\u00d2\u00d1\u00b7\u00d6\u00c5\u00e4\u00b5\u00c4\u00b4\u00c5\u00c5\u00cc -label.disk.bytes.read.rate=\u00b4\u00c5\u00c5\u00cc\u00b6\u00c1\u00c8\u00a1\u00cb\u00d9\u00b6\u00c8(BPS) -label.disk.bytes.write.rate=\u00b4\u00c5\u00c5\u00cc\u00d0\u00b4\u00c8\u00eb\u00cb\u00d9\u00b6\u00c8(BPS) -label.disk.iops.read.rate=\u00b4\u00c5\u00c5\u00cc\u00b6\u00c1\u00c8\u00a1\u00cb\u00d9\u00b6\u00c8(IOPS) -label.disk.iops.write.rate=\u00b4\u00c5\u00c5\u00cc\u00d0\u00b4\u00c8\u00eb\u00cb\u00d9\u00b6\u00c8(IOPS) -label.disk.offering=\u00b4\u00c5\u00c5\u00cc\u00b7\u00bd\u00b0\u00b8 -label.disk.provisioningtype=Provisioning Type -label.disk.read.bytes=\u00b4\u00c5\u00c5\u00cc\u00b6\u00c1\u00c8\u00a1(\u00d7\u00d6\u00bd\u00da) -label.disk.read.io=\u00b4\u00c5\u00c5\u00cc\u00b6\u00c1\u00c8\u00a1(IO) -label.disk.size.gb=\u00b4\u00c5\u00c5\u00cc\u00b4\u00f3\u00d0\u00a1(GB) -label.disk.size=\u00b4\u00c5\u00c5\u00cc\u00b4\u00f3\u00d0\u00a1 -label.disk.total=\u00b4\u00c5\u00c5\u00cc\u00d7\u00dc\u00c1\u00bf -label.disk.volume=\u00b4\u00c5\u00c5\u00cc\u00be\u00ed -label.disk.write.bytes=\u00b4\u00c5\u00c5\u00cc\u00d0\u00b4\u00c8\u00eb(\u00d7\u00d6\u00bd\u00da) -label.disk.write.io=\u00b4\u00c5\u00c5\u00cc\u00d0\u00b4\u00c8\u00eb(IO) -label.display.name=\u00cf\u00d4\u00ca\u00be\u00c3\u00fb\u00b3\u00c6 -label.display.text=\u00cf\u00d4\u00ca\u00be\u00ce\u00c4\u00b1\u00be +label.direct.ips=\u5171\u4eab\u7f51\u7edc IP +label.disable.provider=\u7981\u7528\u63d0\u4f9b\u7a0b\u5e8f +label.disable.vpn=\u7981\u7528 VPN +label.disabled=\u5df2\u7981\u7528 +label.disabling.vpn.access=\u6b63\u5728\u7981\u7528 VPN \u8bbf\u95ee +label.disk.allocated=\u5df2\u5206\u914d\u7684\u78c1\u76d8 +label.disk.bytes.read.rate=\u78c1\u76d8\u8bfb\u53d6\u901f\u5ea6(BPS) +label.disk.bytes.write.rate=\u78c1\u76d8\u5199\u5165\u901f\u5ea6(BPS) +label.disk.iops.read.rate=\u78c1\u76d8\u8bfb\u53d6\u901f\u5ea6(IOPS) +label.disk.iops.write.rate=\u78c1\u76d8\u5199\u5165\u901f\u5ea6(IOPS) +label.disk.offering=\u78c1\u76d8\u65b9\u6848 +label.disk.provisioningtype=\u7f6e\u5907\u7c7b\u578b +label.disk.read.bytes=\u78c1\u76d8\u8bfb\u53d6(\u5b57\u8282) +label.disk.read.io=\u78c1\u76d8\u8bfb\u53d6(IO) +label.disk.size.gb=\u78c1\u76d8\u5927\u5c0f(GB) +label.disk.size=\u78c1\u76d8\u5927\u5c0f +label.disk.total=\u78c1\u76d8\u603b\u91cf +label.disk.volume=\u78c1\u76d8\u5377 +label.disk.write.bytes=\u78c1\u76d8\u5199\u5165(\u5b57\u8282) +label.disk.write.io=\u78c1\u76d8\u5199\u5165(IO) +label.display.name=\u663e\u793a\u540d\u79f0 +label.display.text=\u663e\u793a\u6587\u672c label.dns.1=DNS 1 label.dns.2=DNS 2 -label.DNS.domain.for.guest.networks=\u00c0\u00b4\u00b1\u00f6\u00cd\u00f8\u00c2\u00e7\u00b5\u00c4 DNS \u00d3\u00f2 +label.DNS.domain.for.guest.networks=\u6765\u5bbe\u7f51\u7edc\u7684 DNS \u57df label.dns=DNS -label.domain.admin=\u00d3\u00f2\u00b9\u00dc\u00c0\u00ed\u00d4\u00b1 -label.domain.id=\u00d3\u00f2 ID -label.domain.name=\u00d3\u00f2\u00c3\u00fb -label.domain.router=\u00d3\u00f2\u00c2\u00b7\u00d3\u00c9\u00c6\u00f7 -label.domain.suffix=DNS \u00d3\u00f2\u00ba\u00f3\u00d7\u00ba(\u00c0\u00fd\u00c8\u00e7 xyz.com) -label.domain=\u00d3\u00f2 -label.done=\u00cd\u00ea\u00b3\u00c9 -label.double.quotes.are.not.allowed=\u00b2\u00bb\u00d4\u00ca\u00d0\u00ed\u00ca\u00b9\u00d3\u00c3\u00cb\u00ab\u00d2\u00fd\u00ba\u00c5 -label.download.progress=\u00cf\u00c2\u00d4\u00d8\u00bd\u00f8\u00b6\u00c8 -label.drag.new.position=\u00cd\u00cf\u00b6\u00af\u00b5\u00bd\u00d0\u00c2\u00ce\u00bb\u00d6\u00c3 -label.edit.affinity.group=\u00b1\u00e0\u00bc\u00ad\u00b9\u00d8\u00c1\u00aa\u00d0\u00d4\u00d7\u00e9 -label.edit.lb.rule=\u00b1\u00e0\u00bc\u00ad\u00b8\u00ba\u00d4\u00d8\u00c6\u00bd\u00ba\u00e2\u00c6\u00f7\u00b9\u00e6\u00d4\u00f2 -label.edit.network.details=\u00b1\u00e0\u00bc\u00ad\u00cd\u00f8\u00c2\u00e7\u00cf\u00ea\u00c7\u00e9 -label.edit.project.details=\u00b1\u00e0\u00bc\u00ad\u00cf\u00ee\u00c4\u00bf\u00cf\u00ea\u00c7\u00e9 -label.edit.tags=\u00b1\u00e0\u00bc\u00ad\u00b1\u00ea\u00c7\u00a9 -label.edit.traffic.type=\u00b1\u00e0\u00bc\u00ad\u00c1\u00f7\u00c1\u00bf\u00c0\u00e0\u00d0\u00cd -label.edit.vpc=\u00b1\u00e0\u00bc\u00ad VPC -label.edit=\u00b1\u00e0\u00bc\u00ad -label.egress.rule=\u00b3\u00f6\u00bf\u00da\u00b9\u00e6\u00d4\u00f2 -label.egress.rules=\u00b3\u00f6\u00bf\u00da\u00b9\u00e6\u00d4\u00f2 -label.elastic.IP=\u00b5\u00af\u00d0\u00d4 IP -label.elastic.LB=\u00b5\u00af\u00d0\u00d4\u00b8\u00ba\u00d4\u00d8\u00c6\u00bd\u00ba\u00e2\u00c6\u00f7 -label.elastic=\u00b5\u00af\u00d0\u00d4 -label.email=\u00b5\u00e7\u00d7\u00d3\u00d3\u00ca\u00bc\u00fe -label.enable.provider=\u00c6\u00f4\u00d3\u00c3\u00cc\u00e1\u00b9\u00a9\u00b3\u00cc\u00d0\u00f2 -label.enable.s3=\u00c6\u00f4\u00d3\u00c3 S3 \u00d6\u00a7\u00b3\u00d6\u00b5\u00c4\u00b6\u00fe\u00bc\u00b6\u00b4\u00e6\u00b4\u00a2 -label.enable.swift=\u00c6\u00f4\u00d3\u00c3 SWIFT -label.enable.vpn=\u00c6\u00f4\u00d3\u00c3 VPN -label.enabling.vpn.access=\u00d5\u00fd\u00d4\u00da\u00c6\u00f4\u00d3\u00c3 VPN \u00b7\u00c3\u00ce\u00ca -label.enabling.vpn=\u00d5\u00fd\u00d4\u00da\u00c6\u00f4\u00d3\u00c3 VPN -label.end.IP=\u00bd\u00e1\u00ca\u00f8 IP -label.end.port=\u00bd\u00e1\u00ca\u00f8\u00b6\u00cb\u00bf\u00da -label.end.reserved.system.IP=\u00bd\u00e1\u00ca\u00f8\u00d4\u00a4\u00c1\u00f4\u00cf\u00b5\u00cd\u00b3 IP -label.end.vlan=End Vlan -label.end.vxlan=End Vxlan -label.endpoint.or.operation=\u00b6\u00cb\u00b5\u00e3\u00bb\u00f2\u00b2\u00d9\u00d7\u00f7 -label.endpoint=\u00b6\u00cb\u00b5\u00e3 -label.enter.token=\u00ca\u00e4\u00c8\u00eb\u00c1\u00ee\u00c5\u00c6 -label.error.code=\u00b4\u00ed\u00ce\u00f3\u00b4\u00fa\u00c2\u00eb -label.error=\u00b4\u00ed\u00ce\u00f3 -label.ESP.encryption=ESP \u00bc\u00d3\u00c3\u00dc\u00cb\u00e3\u00b7\u00a8 -label.ESP.hash=ESP \u00b9\u00fe\u00cf\u00a3\u00cb\u00e3\u00b7\u00a8 -label.ESP.lifetime=ESP \u00ca\u00b9\u00d3\u00c3\u00c6\u00da\u00cf\u00de(\u00b5\u00da\u00b6\u00fe\u00bd\u00d7\u00b6\u00ce) -label.ESP.policy=ESP \u00b2\u00df\u00c2\u00d4 -label.esx.host=ESX/ESXi \u00d6\u00f7\u00bb\u00fa -label.example=\u00ca\u00be\u00c0\u00fd -label.expunge=\u00c9\u00be\u00b3\u00fd -label.external.link=\u00cd\u00e2\u00b2\u00bf\u00c1\u00b4\u00bd\u00d3 +label.domain.admin=\u57df\u7ba1\u7406\u5458 +label.domain.id=\u57df ID +label.domain.name=\u57df\u540d +label.domain.router=\u57df\u8def\u7531\u5668 +label.domain.suffix=DNS \u57df\u540e\u7f00(\u4f8b\u5982 xyz.com) +label.domain=\u57df +label.done=\u5b8c\u6210 +label.double.quotes.are.not.allowed=\u4e0d\u5141\u8bb8\u4f7f\u7528\u53cc\u5f15\u53f7 +label.download.progress=\u4e0b\u8f7d\u8fdb\u5ea6 +label.drag.new.position=\u62d6\u52a8\u5230\u65b0\u4f4d\u7f6e +label.edit.affinity.group=\u7f16\u8f91\u5173\u8054\u6027\u7ec4 +label.edit.lb.rule=\u7f16\u8f91\u8d1f\u8f7d\u5e73\u8861\u5668\u89c4\u5219 +label.edit.network.details=\u7f16\u8f91\u7f51\u7edc\u8be6\u60c5 +label.edit.project.details=\u7f16\u8f91\u9879\u76ee\u8be6\u60c5 +label.edit.tags=\u7f16\u8f91\u6807\u7b7e +label.edit.traffic.type=\u7f16\u8f91\u6d41\u91cf\u7c7b\u578b +label.edit.vpc=\u7f16\u8f91 VPC +label.edit=\u7f16\u8f91 +label.egress.rule=\u51fa\u53e3\u89c4\u5219 +label.egress.rules=\u51fa\u53e3\u89c4\u5219 +label.elastic.IP=\u5f39\u6027 IP +label.elastic.LB=\u5f39\u6027\u8d1f\u8f7d\u5e73\u8861\u5668 +label.elastic=\u5f39\u6027 +label.email=\u7535\u5b50\u90ae\u4ef6 +label.enable.provider=\u542f\u7528\u63d0\u4f9b\u7a0b\u5e8f +label.enable.s3=\u542f\u7528 S3 \u652f\u6301\u7684\u4e8c\u7ea7\u5b58\u50a8 +label.enable.swift=\u542f\u7528 SWIFT +label.enable.vpn=\u542f\u7528 VPN +label.enabling.vpn.access=\u6b63\u5728\u542f\u7528 VPN \u8bbf\u95ee +label.enabling.vpn=\u6b63\u5728\u542f\u7528 VPN +label.end.IP=\u7ed3\u675f IP +label.end.port=\u7ed3\u675f\u7aef\u53e3 +label.end.reserved.system.IP=\u7ed3\u675f\u9884\u7559\u7cfb\u7edf IP +label.end.vlan=\u7ed3\u675f Vlan +label.end.vxlan=\u7ed3\u675f Vxlan +label.endpoint.or.operation=\u7aef\u70b9\u6216\u64cd\u4f5c +label.endpoint=\u7aef\u70b9 +label.enter.token=\u8f93\u5165\u4ee4\u724c +label.error.code=\u9519\u8bef\u4ee3\u7801 +label.error=\u9519\u8bef +label.ESP.encryption=ESP \u52a0\u5bc6\u7b97\u6cd5 +label.ESP.hash=ESP \u54c8\u5e0c\u7b97\u6cd5 +label.ESP.lifetime=ESP \u4f7f\u7528\u671f\u9650(\u7b2c\u4e8c\u9636\u6bb5) +label.ESP.policy=ESP \u7b56\u7565 +label.esx.host=ESX/ESXi \u4e3b\u673a +label.example=\u793a\u4f8b +label.expunge=\u5220\u9664 +label.external.link=\u5916\u90e8\u94fe\u63a5 label.f5=F5 -label.failed=\u00ca\u00a7\u00b0\u00dc -label.featured=\u00be\u00ab\u00d1\u00a1 -label.fetch.latest=\u00cc\u00e1\u00c8\u00a1\u00d7\u00ee\u00d0\u00c2\u00c4\u00da\u00c8\u00dd -label.filterBy=\u00b9\u00fd\u00c2\u00cb\u00d2\u00c0\u00be\u00dd -label.firewall=\u00b7\u00c0\u00bb\u00f0\u00c7\u00bd -label.first.name=\u00c3\u00fb\u00d7\u00d6 -label.format=\u00b8\u00f1\u00ca\u00bd -label.friday=\u00d0\u00c7\u00c6\u00da\u00ce\u00e5 -label.full.path=\u00cd\u00ea\u00d5\u00fb\u00c2\u00b7\u00be\u00b6 -label.full=\u00c2\u00fa\u00d4\u00d8 -label.gateway=\u00cd\u00f8\u00b9\u00d8 -label.general.alerts=\u00b3\u00a3\u00b9\u00e6\u00be\u00af\u00b1\u00a8 -label.generating.url=\u00d5\u00fd\u00d4\u00da\u00c9\u00fa\u00b3\u00c9 URL -label.gluster.volume=\u00be\u00ed -label.go.step.2=\u00d7\u00aa\u00d6\u00c1\u00b2\u00bd\u00d6\u00e8 2 -label.go.step.3=\u00d7\u00aa\u00d6\u00c1\u00b2\u00bd\u00d6\u00e8 3 -label.go.step.4=\u00d7\u00aa\u00d6\u00c1\u00b2\u00bd\u00d6\u00e8 4 -label.go.step.5=\u00d7\u00aa\u00d6\u00c1\u00b2\u00bd\u00d6\u00e8 5 -label.group.optional=\u00d7\u00e9(\u00bf\u00c9\u00d1\u00a1) -label.group=\u00d7\u00e9 -label.guest.cidr=\u00c0\u00b4\u00b1\u00f6 CIDR -label.guest.end.ip=\u00c0\u00b4\u00b1\u00f6\u00bd\u00e1\u00ca\u00f8 IP -label.guest.gateway=\u00c0\u00b4\u00b1\u00f6\u00cd\u00f8\u00b9\u00d8 -label.guest.ip.range=\u00c0\u00b4\u00b1\u00f6 IP \u00b7\u00b6\u00ce\u00a7 -label.guest.ip=\u00c0\u00b4\u00b1\u00f6 IP \u00b5\u00d8\u00d6\u00b7 -label.guest.netmask=\u00c0\u00b4\u00b1\u00f6\u00cd\u00f8\u00c2\u00e7\u00d1\u00da\u00c2\u00eb -label.guest.networks=\u00c0\u00b4\u00b1\u00f6\u00cd\u00f8\u00c2\u00e7 -label.guest.start.ip=\u00c0\u00b4\u00b1\u00f6\u00c6\u00f0\u00ca\u00bc IP -label.guest.traffic=\u00c0\u00b4\u00b1\u00f6\u00c1\u00f7\u00c1\u00bf -label.guest.type=\u00c0\u00b4\u00b1\u00f6\u00c0\u00e0\u00d0\u00cd -label.guest=\u00c0\u00b4\u00b1\u00f6 -label.ha.enabled=\u00d2\u00d1\u00c6\u00f4\u00d3\u00c3\u00b8\u00df\u00bf\u00c9\u00d3\u00c3\u00d0\u00d4 -label.help=\u00b0\u00ef\u00d6\u00fa -label.hide.ingress.rule=\u00d2\u00fe\u00b2\u00d8\u00c8\u00eb\u00bf\u00da\u00b9\u00e6\u00d4\u00f2 -label.hints=\u00cc\u00e1\u00ca\u00be -label.host.alerts=\u00d6\u00f7\u00bb\u00fa\u00be\u00af\u00b1\u00a8 -label.host.MAC=\u00d6\u00f7\u00bb\u00fa MAC -label.host.name=\u00d6\u00f7\u00bb\u00fa\u00c3\u00fb\u00b3\u00c6 -label.host.tags=\u00d6\u00f7\u00bb\u00fa\u00b1\u00ea\u00c7\u00a9 -label.host=\u00d6\u00f7\u00bb\u00fa -label.hosts=\u00d6\u00f7\u00bb\u00fa -label.hourly=\u00c3\u00bf\u00d0\u00a1\u00ca\u00b1 -label.hypervisor.capabilities=\u00d0\u00e9\u00c4\u00e2\u00bb\u00fa\u00b9\u00dc\u00c0\u00ed\u00b3\u00cc\u00d0\u00f2\u00b9\u00a6\u00c4\u00dc -label.hypervisor.type=\u00d0\u00e9\u00c4\u00e2\u00bb\u00fa\u00b9\u00dc\u00c0\u00ed\u00b3\u00cc\u00d0\u00f2\u00c0\u00e0\u00d0\u00cd -label.hypervisor.version=\u00d0\u00e9\u00c4\u00e2\u00bb\u00fa\u00b9\u00dc\u00c0\u00ed\u00b3\u00cc\u00d0\u00f2\u00b0\u00e6\u00b1\u00be -label.hypervisor=\u00d0\u00e9\u00c4\u00e2\u00bb\u00fa\u00b9\u00dc\u00c0\u00ed\u00b3\u00cc\u00d0\u00f2 +label.failed=\u5931\u8d25 +label.featured=\u7cbe\u9009 +label.fetch.latest=\u63d0\u53d6\u6700\u65b0\u5185\u5bb9 +label.filterBy=\u8fc7\u6ee4\u4f9d\u636e +label.firewall=\u9632\u706b\u5899 +label.first.name=\u540d\u5b57 +label.format=\u683c\u5f0f +label.friday=\u661f\u671f\u4e94 +label.full.path=\u5b8c\u6574\u8def\u5f84 +label.full=\u6ee1\u8f7d +label.gateway=\u7f51\u5173 +label.general.alerts=\u5e38\u89c4\u8b66\u62a5 +label.generating.url=\u6b63\u5728\u751f\u6210 URL +label.gluster.volume=\u5377 +label.go.step.2=\u8f6c\u81f3\u6b65\u9aa4 2 +label.go.step.3=\u8f6c\u81f3\u6b65\u9aa4 3 +label.go.step.4=\u8f6c\u81f3\u6b65\u9aa4 4 +label.go.step.5=\u8f6c\u81f3\u6b65\u9aa4 5 +label.group.optional=\u7ec4(\u53ef\u9009) +label.group=\u7ec4 +label.guest.cidr=\u6765\u5bbe CIDR +label.guest.end.ip=\u6765\u5bbe\u7ed3\u675f IP +label.guest.gateway=\u6765\u5bbe\u7f51\u5173 +label.guest.ip.range=\u6765\u5bbe IP \u8303\u56f4 +label.guest.ip=\u6765\u5bbe IP \u5730\u5740 +label.guest.netmask=\u6765\u5bbe\u7f51\u7edc\u63a9\u7801 +label.guest.networks=\u6765\u5bbe\u7f51\u7edc +label.guest.start.ip=\u6765\u5bbe\u8d77\u59cb IP +label.guest.traffic=\u6765\u5bbe\u6d41\u91cf +label.guest.type=\u6765\u5bbe\u7c7b\u578b +label.guest=\u6765\u5bbe +label.ha.enabled=\u5df2\u542f\u7528\u9ad8\u53ef\u7528\u6027 +label.help=\u5e2e\u52a9 +label.hide.ingress.rule=\u9690\u85cf\u5165\u53e3\u89c4\u5219 +label.hints=\u63d0\u793a +label.host.alerts=\u4e3b\u673a\u8b66\u62a5 +label.host.MAC=\u4e3b\u673a MAC +label.host.name=\u4e3b\u673a\u540d\u79f0 +label.host.tags=\u4e3b\u673a\u6807\u7b7e +label.host=\u4e3b\u673a +label.hosts=\u4e3b\u673a +label.hourly=\u6bcf\u5c0f\u65f6 +label.hypervisor.capabilities=\u865a\u62df\u673a\u7ba1\u7406\u7a0b\u5e8f\u529f\u80fd +label.hypervisor.type=\u865a\u62df\u673a\u7ba1\u7406\u7a0b\u5e8f\u7c7b\u578b +label.hypervisor.version=\u865a\u62df\u673a\u7ba1\u7406\u7a0b\u5e8f\u7248\u672c +label.hypervisor=\u865a\u62df\u673a\u7ba1\u7406\u7a0b\u5e8f label.id=ID -label.IKE.DH=IKE DH \u00cb\u00e3\u00b7\u00a8 -label.IKE.encryption=IKE \u00bc\u00d3\u00c3\u00dc\u00cb\u00e3\u00b7\u00a8 -label.IKE.hash=IKE \u00b9\u00fe\u00cf\u00a3\u00cb\u00e3\u00b7\u00a8 -label.IKE.lifetime=IKE \u00ca\u00b9\u00d3\u00c3\u00c6\u00da\u00cf\u00de(\u00b5\u00da\u00b6\u00fe\u00bd\u00d7\u00b6\u00ce) -label.IKE.policy=IKE \u00b2\u00df\u00c2\u00d4 -label.info=\u00d0\u00c5\u00cf\u00a2 -label.ingress.rule=\u00c8\u00eb\u00bf\u00da\u00b9\u00e6\u00d4\u00f2 -label.initiated.by=\u00c6\u00f4\u00b6\u00af\u00d5\u00df -label.installWizard.addClusterIntro.subtitle=\u00ca\u00b2\u00c3\u00b4\u00ca\u00c7\u00c8\u00ba\u00bc\u00af? -label.installWizard.addClusterIntro.title=\u00cc\u00ed\u00bc\u00d3\u00d2\u00bb\u00b8\u00f6\u00c8\u00ba\u00bc\u00af -label.installWizard.addHostIntro.subtitle=\u00ca\u00b2\u00c3\u00b4\u00ca\u00c7\u00d6\u00f7\u00bb\u00fa? -label.installWizard.addHostIntro.title=\u00cc\u00ed\u00bc\u00d3\u00d2\u00bb\u00b8\u00f6\u00d6\u00f7\u00bb\u00fa -label.installWizard.addPodIntro.subtitle=\u00ca\u00b2\u00c3\u00b4\u00ca\u00c7\u00cc\u00e1\u00b9\u00a9\u00b5\u00e3? -label.installWizard.addPodIntro.title=\u00cc\u00ed\u00bc\u00d3\u00d2\u00bb\u00b8\u00f6\u00cc\u00e1\u00b9\u00a9\u00b5\u00e3 -label.installWizard.addPrimaryStorageIntro.subtitle=\u00ca\u00b2\u00c3\u00b4\u00ca\u00c7\u00d6\u00f7\u00b4\u00e6\u00b4\u00a2? -label.installWizard.addPrimaryStorageIntro.title=\u00cc\u00ed\u00bc\u00d3\u00d2\u00bb\u00b8\u00f6\u00d6\u00f7\u00b4\u00e6\u00b4\u00a2 -label.installWizard.addSecondaryStorageIntro.subtitle=\u00ca\u00b2\u00c3\u00b4\u00ca\u00c7\u00b6\u00fe\u00bc\u00b6\u00b4\u00e6\u00b4\u00a2? -label.installWizard.addSecondaryStorageIntro.title=\u00cc\u00ed\u00bc\u00d3\u00d2\u00bb\u00b8\u00f6\u00b6\u00fe\u00bc\u00b6\u00b4\u00e6\u00b4\u00a2 -label.installWizard.addZone.title=\u00cc\u00ed\u00bc\u00d3\u00d7\u00ca\u00d4\u00b4\u00d3\u00f2 -label.installWizard.addZoneIntro.subtitle=\u00ca\u00b2\u00c3\u00b4\u00ca\u00c7\u00d7\u00ca\u00d4\u00b4\u00d3\u00f2? -label.installWizard.addZoneIntro.title=\u00cc\u00ed\u00bc\u00d3\u00d2\u00bb\u00b8\u00f6\u00d7\u00ca\u00d4\u00b4\u00d3\u00f2 -label.installWizard.click.launch=\u00c7\u00eb\u00b5\u00a5\u00bb\u00f7\u00a1\u00b0\u00c6\u00f4\u00b6\u00af\u00a1\u00b1\u00b0\u00b4\u00c5\u00a5\u00a1\u00a3 -label.installWizard.subtitle=\u00b4\u00cb\u00bd\u00cc\u00b3\u00cc\u00bd\u00ab\u00b0\u00ef\u00d6\u00fa\u00c4\u00fa\u00c9\u00e8\u00d6\u00c3 CloudStack&\#8482 \u00b0\u00b2\u00d7\u00b0 -label.installWizard.title=\u00c4\u00fa\u00ba\u00c3\u00a3\u00ac\u00bb\u00b6\u00d3\u00ad\u00ca\u00b9\u00d3\u00c3 CloudStack&\#8482 -label.instance.limits=\u00ca\u00b5\u00c0\u00fd\u00cf\u00de\u00d6\u00c6 -label.instance.name=\u00ca\u00b5\u00c0\u00fd\u00c3\u00fb\u00b3\u00c6 -label.instance=\u00ca\u00b5\u00c0\u00fd -label.instances=\u00ca\u00b5\u00c0\u00fd -label.intermediate.certificate=Intermediate certificate {0} -label.internal.dns.1=\u00c4\u00da\u00b2\u00bf DNS 1 -label.internal.dns.2=\u00c4\u00da\u00b2\u00bf DNS 2 -label.internal.name=\u00c4\u00da\u00b2\u00bf\u00c3\u00fb\u00b3\u00c6 -label.interval.type=\u00bc\u00e4\u00b8\u00f4\u00c0\u00e0\u00d0\u00cd -label.introduction.to.cloudstack=CloudStack&\#8482 \u00bc\u00f2\u00bd\u00e9 -label.invalid.integer=\u00ce\u00de\u00d0\u00a7\u00d5\u00fb\u00ca\u00fd -label.invalid.number=\u00ce\u00de\u00d0\u00a7\u00ca\u00fd\u00d7\u00d6 -label.invitations=\u00d1\u00fb\u00c7\u00eb -label.invite.to=\u00d1\u00fb\u00c7\u00eb\u00bc\u00d3\u00c8\u00eb -label.invite=\u00d1\u00fb\u00c7\u00eb -label.invited.accounts=\u00d2\u00d1\u00d1\u00fb\u00c7\u00eb\u00b5\u00c4\u00d5\u00ca\u00bb\u00a7 -label.ip.address=IP \u00b5\u00d8\u00d6\u00b7 -label.ip.allocations=IP \u00b7\u00d6\u00c5\u00e4 -label.ip.limits=\u00b9\u00ab\u00d3\u00c3 IP \u00cf\u00de\u00d6\u00c6 -label.ip.or.fqdn=IP \u00bb\u00f2 FQDN -label.ip.range=IP \u00b7\u00b6\u00ce\u00a7 -label.ip.ranges=IP \u00b7\u00b6\u00ce\u00a7 +label.IKE.DH=IKE DH \u7b97\u6cd5 +label.IKE.encryption=IKE \u52a0\u5bc6\u7b97\u6cd5 +label.IKE.hash=IKE \u54c8\u5e0c\u7b97\u6cd5 +label.IKE.lifetime=IKE \u4f7f\u7528\u671f\u9650(\u7b2c\u4e8c\u9636\u6bb5) +label.IKE.policy=IKE \u7b56\u7565 +label.info=\u4fe1\u606f +label.ingress.rule=\u5165\u53e3\u89c4\u5219 +label.initiated.by=\u542f\u52a8\u8005 +label.installWizard.addClusterIntro.subtitle=\u4ec0\u4e48\u662f\u7fa4\u96c6? +label.installWizard.addClusterIntro.title=\u6dfb\u52a0\u4e00\u4e2a\u7fa4\u96c6 +label.installWizard.addHostIntro.subtitle=\u4ec0\u4e48\u662f\u4e3b\u673a? +label.installWizard.addHostIntro.title=\u6dfb\u52a0\u4e00\u4e2a\u4e3b\u673a +label.installWizard.addPodIntro.subtitle=\u4ec0\u4e48\u662f\u63d0\u4f9b\u70b9? +label.installWizard.addPodIntro.title=\u6dfb\u52a0\u4e00\u4e2a\u63d0\u4f9b\u70b9 +label.installWizard.addPrimaryStorageIntro.subtitle=\u4ec0\u4e48\u662f\u4e3b\u5b58\u50a8? +label.installWizard.addPrimaryStorageIntro.title=\u6dfb\u52a0\u4e00\u4e2a\u4e3b\u5b58\u50a8 +label.installWizard.addSecondaryStorageIntro.subtitle=\u4ec0\u4e48\u662f\u4e8c\u7ea7\u5b58\u50a8? +label.installWizard.addSecondaryStorageIntro.title=\u6dfb\u52a0\u4e00\u4e2a\u4e8c\u7ea7\u5b58\u50a8 +label.installWizard.addZone.title=\u6dfb\u52a0\u8d44\u6e90\u57df +label.installWizard.addZoneIntro.subtitle=\u4ec0\u4e48\u662f\u8d44\u6e90\u57df? +label.installWizard.addZoneIntro.title=\u6dfb\u52a0\u4e00\u4e2a\u8d44\u6e90\u57df +label.installWizard.click.launch=\u8bf7\u5355\u51fb\u201c\u542f\u52a8\u201d\u6309\u94ae\u3002 +label.installWizard.subtitle=\u6b64\u6559\u7a0b\u5c06\u5e2e\u52a9\u60a8\u8bbe\u7f6e CloudStack&\#8482 \u5b89\u88c5 +label.installWizard.title=\u60a8\u597d\uff0c\u6b22\u8fce\u4f7f\u7528 CloudStack&\#8482 +label.instance.limits=\u5b9e\u4f8b\u9650\u5236 +label.instance.name=\u5b9e\u4f8b\u540d\u79f0 +label.instance=\u5b9e\u4f8b +label.instances=\u5b9e\u4f8b +label.intermediate.certificate=\u4e2d\u95f4\u8bc1\u4e66 {0} +label.internal.dns.1=\u5185\u90e8 DNS 1 +label.internal.dns.2=\u5185\u90e8 DNS 2 +label.internal.name=\u5185\u90e8\u540d\u79f0 +label.interval.type=\u95f4\u9694\u7c7b\u578b +label.introduction.to.cloudstack=CloudStack&\#8482 \u7b80\u4ecb +label.invalid.integer=\u65e0\u6548\u6574\u6570 +label.invalid.number=\u65e0\u6548\u6570\u5b57 +label.invitations=\u9080\u8bf7 +label.invite.to=\u9080\u8bf7\u52a0\u5165 +label.invite=\u9080\u8bf7 +label.invited.accounts=\u5df2\u9080\u8bf7\u7684\u5e10\u6237 +label.ip.address=IP \u5730\u5740 +label.ip.allocations=IP \u5206\u914d +label.ip.limits=\u516c\u7528 IP \u9650\u5236 +label.ip.or.fqdn=IP \u6216 FQDN +label.ip.range=IP \u8303\u56f4 +label.ip.ranges=IP \u8303\u56f4 label.ip=IP -label.ipaddress=IP \u00b5\u00d8\u00d6\u00b7 +label.ipaddress=IP \u5730\u5740 label.ips=IP -label.IPsec.preshared.key=IPsec \u00d4\u00a4\u00b9\u00b2\u00cf\u00ed\u00c3\u00dc\u00d4\u00bf -label.is.default=\u00ca\u00c7\u00b7\u00f1\u00ce\u00aa\u00c4\u00ac\u00c8\u00cf\u00c9\u00e8\u00d6\u00c3 -label.is.redundant.router=\u00c8\u00df\u00d3\u00e0 -label.is.shared=\u00ca\u00c7\u00b7\u00f1\u00b9\u00b2\u00cf\u00ed -label.is.system=\u00ca\u00c7\u00b7\u00f1\u00ce\u00aa\u00cf\u00b5\u00cd\u00b3 +label.IPsec.preshared.key=IPsec \u9884\u5171\u4eab\u5bc6\u94a5 +label.is.default=\u662f\u5426\u4e3a\u9ed8\u8ba4\u8bbe\u7f6e +label.is.redundant.router=\u5197\u4f59 +label.is.shared=\u662f\u5426\u5171\u4eab +label.is.system=\u662f\u5426\u4e3a\u7cfb\u7edf label.iscsi=iSCSI -label.iso.boot=ISO \u00c6\u00f4\u00b6\u00af +label.iso.boot=ISO \u542f\u52a8 label.iso=ISO -label.isolated.networks=\u00b8\u00f4\u00c0\u00eb\u00cd\u00f8\u00c2\u00e7 -label.isolation.method=\u00b8\u00f4\u00c0\u00eb\u00b7\u00bd\u00b7\u00a8 -label.isolation.mode=\u00b8\u00f4\u00c0\u00eb\u00c4\u00a3\u00ca\u00bd -label.isolation.uri=\u00b8\u00f4\u00c0\u00eb URI -label.item.listing=\u00cf\u00ee\u00c4\u00bf\u00c1\u00d0\u00b1\u00ed -label.keep=\u00b1\u00a3\u00c1\u00f4 -label.key=\u00c3\u00dc\u00d4\u00bf -label.keyboard.type=\u00bc\u00fc\u00c5\u00cc\u00c0\u00e0\u00d0\u00cd -label.kvm.traffic.label=KVM \u00c1\u00f7\u00c1\u00bf\u00b1\u00ea\u00c7\u00a9 -label.label=\u00b1\u00ea\u00c7\u00a9 -label.lang.arabic=\u00b0\u00a2\u00c0\u00ad\u00b2\u00ae\u00d3\u00ef -label.lang.brportugese=\u00c6\u00cf\u00cc\u00d1\u00d1\u00c0\u00d3\u00ef(\u00b0\u00cd\u00ce\u00f7) -label.lang.catalan=\u00bc\u00d3\u00cc\u00a9\u00c2\u00de\u00c4\u00e1\u00d1\u00c7\u00d3\u00ef -label.lang.chinese=\u00bc\u00f2\u00cc\u00e5\u00d6\u00d0\u00ce\u00c4 -label.lang.dutch=\u00ba\u00c9\u00c0\u00bc\u00d3\u00ef(\u00ba\u00c9\u00c0\u00bc) -label.lang.english=\u00d3\u00a2\u00d3\u00ef -label.lang.french=\u00b7\u00a8\u00d3\u00ef -label.lang.german=\u00b5\u00c2\u00d3\u00ef -label.lang.italian=\u00d2\u00e2\u00b4\u00f3\u00c0\u00fb\u00d3\u00ef -label.lang.japanese=\u00c8\u00d5\u00d3\u00ef -label.lang.korean=\u00ba\u00ab\u00d3\u00ef -label.lang.norwegian=\u00c5\u00b2\u00cd\u00fe\u00d3\u00ef -label.lang.polish=\u00b2\u00a8\u00c0\u00bc\u00d3\u00ef -label.lang.russian=\u00b6\u00ed\u00d3\u00ef -label.lang.spanish=\u00ce\u00f7\u00b0\u00e0\u00d1\u00c0\u00d3\u00ef -label.last.disconnected=\u00c9\u00cf\u00b4\u00ce\u00b6\u00cf\u00bf\u00aa\u00c1\u00ac\u00bd\u00d3\u00ca\u00b1\u00bc\u00e4 -label.last.name=\u00d0\u00d5\u00ca\u00cf -label.latest.events=\u00d7\u00ee\u00d0\u00c2\u00ca\u00c2\u00bc\u00fe -label.launch.vm=\u00c6\u00f4\u00b6\u00af VM -label.launch.zone=\u00c6\u00f4\u00b6\u00af\u00d7\u00ca\u00d4\u00b4\u00d3\u00f2 -label.launch=\u00c6\u00f4\u00b6\u00af -label.LB.isolation=\u00b8\u00ba\u00d4\u00d8\u00c6\u00bd\u00ba\u00e2\u00c6\u00f7\u00b8\u00f4\u00c0\u00eb -label.least.connections=\u00d7\u00ee\u00c9\u00d9\u00c1\u00ac\u00bd\u00d3\u00cb\u00e3\u00b7\u00a8 -label.level=\u00bc\u00b6\u00b1\u00f0 -label.linklocal.ip=\u00c1\u00b4\u00bd\u00d3\u00b1\u00be\u00b5\u00d8 IP \u00b5\u00d8\u00d6\u00b7 -label.load.balancer=\u00b8\u00ba\u00d4\u00d8\u00c6\u00bd\u00ba\u00e2\u00c6\u00f7 -label.load.balancing.policies=\u00b8\u00ba\u00d4\u00d8\u00c6\u00bd\u00ba\u00e2\u00b2\u00df\u00c2\u00d4 -label.load.balancing=\u00b8\u00ba\u00d4\u00d8\u00c6\u00bd\u00ba\u00e2 -label.loading=\u00d5\u00fd\u00d4\u00da\u00bc\u00d3\u00d4\u00d8 -label.local.storage.enabled=\u00d2\u00d1\u00c6\u00f4\u00d3\u00c3\u00b1\u00be\u00b5\u00d8\u00b4\u00e6\u00b4\u00a2 -label.local.storage=\u00b1\u00be\u00b5\u00d8\u00b4\u00e6\u00b4\u00a2 -label.local=\u00b1\u00be\u00b5\u00d8 -label.login=\u00b5\u00c7\u00c2\u00bc -label.logout=\u00d7\u00a2\u00cf\u00fa -label.LUN.number=LUN \u00ba\u00c5 +label.isolated.networks=\u9694\u79bb\u7f51\u7edc +label.isolation.method=\u9694\u79bb\u65b9\u6cd5 +label.isolation.mode=\u9694\u79bb\u6a21\u5f0f +label.isolation.uri=\u9694\u79bb URI +label.item.listing=\u9879\u76ee\u5217\u8868 +label.keep=\u4fdd\u7559 +label.key=\u5bc6\u94a5 +label.keyboard.type=\u952e\u76d8\u7c7b\u578b +label.kvm.traffic.label=KVM \u6d41\u91cf\u6807\u7b7e +label.label=\u6807\u7b7e +label.lang.arabic=\u963f\u62c9\u4f2f\u8bed +label.lang.brportugese=\u8461\u8404\u7259\u8bed(\u5df4\u897f) +label.lang.catalan=\u52a0\u6cf0\u7f57\u5c3c\u4e9a\u8bed +label.lang.chinese=\u7b80\u4f53\u4e2d\u6587 +label.lang.dutch=\u8377\u5170\u8bed(\u8377\u5170) +label.lang.english=\u82f1\u8bed +label.lang.french=\u6cd5\u8bed +label.lang.german=\u5fb7\u8bed +label.lang.italian=\u610f\u5927\u5229\u8bed +label.lang.japanese=\u65e5\u8bed +label.lang.korean=\u97e9\u8bed +label.lang.norwegian=\u632a\u5a01\u8bed +label.lang.polish=\u6ce2\u5170\u8bed +label.lang.russian=\u4fc4\u8bed +label.lang.spanish=\u897f\u73ed\u7259\u8bed +label.last.disconnected=\u4e0a\u6b21\u65ad\u5f00\u8fde\u63a5\u65f6\u95f4 +label.last.name=\u59d3\u6c0f +label.latest.events=\u6700\u65b0\u4e8b\u4ef6 +label.launch.vm=\u542f\u52a8 VM +label.launch.zone=\u542f\u52a8\u8d44\u6e90\u57df +label.launch=\u542f\u52a8 +label.LB.isolation=\u8d1f\u8f7d\u5e73\u8861\u5668\u9694\u79bb +label.least.connections=\u6700\u5c11\u8fde\u63a5\u7b97\u6cd5 +label.level=\u7ea7\u522b +label.linklocal.ip=\u94fe\u63a5\u672c\u5730 IP \u5730\u5740 +label.load.balancer=\u8d1f\u8f7d\u5e73\u8861\u5668 +label.load.balancing.policies=\u8d1f\u8f7d\u5e73\u8861\u7b56\u7565 +label.load.balancing=\u8d1f\u8f7d\u5e73\u8861 +label.loading=\u6b63\u5728\u52a0\u8f7d +label.local.storage.enabled=\u5df2\u542f\u7528\u672c\u5730\u5b58\u50a8 +label.local.storage=\u672c\u5730\u5b58\u50a8 +label.local=\u672c\u5730 +label.login=\u767b\u5f55 +label.logout=\u6ce8\u9500 +label.LUN.number=LUN \u53f7 label.lun=LUN -label.make.project.owner=\u00c9\u00e8\u00ce\u00aa\u00d5\u00ca\u00bb\u00a7\u00cf\u00ee\u00c4\u00bf\u00cb\u00f9\u00d3\u00d0\u00d5\u00df -label.manage.resources=\u00b9\u00dc\u00c0\u00ed\u00d7\u00ca\u00d4\u00b4 -label.manage=\u00cd\u00d0\u00b9\u00dc -label.managed=Managed -label.management.ips=\u00b9\u00dc\u00c0\u00ed\u00c0\u00e0 IP \u00b5\u00d8\u00d6\u00b7 -label.management=\u00b9\u00dc\u00c0\u00ed -label.max.cpus=\u00d7\u00ee\u00b4\u00f3 CPU \u00c4\u00da\u00ba\u00cb\u00ca\u00fd -label.max.guest.limit=\u00d7\u00ee\u00b4\u00f3\u00c0\u00b4\u00b1\u00f6\u00ca\u00fd\u00cf\u00de\u00d6\u00c6 -label.max.memory=\u00d7\u00ee\u00b4\u00f3\u00c4\u00da\u00b4\u00e6(MiB) -label.max.networks=\u00d7\u00ee\u00b4\u00f3\u00cd\u00f8\u00c2\u00e7\u00ca\u00fd -label.max.primary.storage=\u00d7\u00ee\u00b4\u00f3\u00d6\u00f7\u00b4\u00e6\u00b4\u00a2(GiB) -label.max.public.ips=\u00d7\u00ee\u00b4\u00f3\u00b9\u00ab\u00d3\u00c3 IP \u00ca\u00fd -label.max.secondary.storage=\u00d7\u00ee\u00b4\u00f3\u00b6\u00fe\u00bc\u00b6\u00b4\u00e6\u00b4\u00a2(GiB) -label.max.snapshots=\u00d7\u00ee\u00b4\u00f3\u00bf\u00ec\u00d5\u00d5\u00ca\u00fd -label.max.templates=\u00d7\u00ee\u00b4\u00f3\u00c4\u00a3\u00b0\u00e5\u00ca\u00fd -label.max.vms=\u00d7\u00ee\u00b4\u00f3\u00d3\u00c3\u00bb\u00a7 VM \u00ca\u00fd -label.max.volumes=\u00d7\u00ee\u00b4\u00f3\u00be\u00ed\u00ca\u00fd -label.max.vpcs=\u00d7\u00ee\u00b4\u00f3 VPC \u00ca\u00fd -label.maximum=\u00d7\u00ee\u00b4\u00f3\u00d6\u00b5 -label.may.continue=\u00c4\u00fa\u00cf\u00d6\u00d4\u00da\u00bf\u00c9\u00d2\u00d4\u00bc\u00cc\u00d0\u00f8\u00bd\u00f8\u00d0\u00d0\u00b2\u00d9\u00d7\u00f7\u00a1\u00a3 -label.memory.allocated=\u00d2\u00d1\u00b7\u00d6\u00c5\u00e4\u00b5\u00c4\u00c4\u00da\u00b4\u00e6 -label.memory.limits=\u00c4\u00da\u00b4\u00e6\u00cf\u00de\u00d6\u00c6(MiB) -label.memory.mb=\u00c4\u00da\u00b4\u00e6(MB) -label.memory.total=\u00c4\u00da\u00b4\u00e6\u00d7\u00dc\u00c1\u00bf -label.memory.used=\u00d2\u00d1\u00ca\u00b9\u00d3\u00c3\u00b5\u00c4\u00c4\u00da\u00b4\u00e6 -label.memory=\u00c4\u00da\u00b4\u00e6 -label.menu.accounts=\u00d5\u00ca\u00bb\u00a7 -label.menu.alerts=\u00be\u00af\u00b1\u00a8 -label.menu.all.accounts=\u00cb\u00f9\u00d3\u00d0\u00d5\u00ca\u00bb\u00a7 -label.menu.all.instances=\u00cb\u00f9\u00d3\u00d0\u00ca\u00b5\u00c0\u00fd -label.menu.community.isos=\u00c9\u00e7\u00c7\u00f8 ISO -label.menu.community.templates=\u00c9\u00e7\u00c7\u00f8\u00c4\u00a3\u00b0\u00e5 -label.menu.configuration=\u00c5\u00e4\u00d6\u00c3 -label.menu.dashboard=\u00bf\u00d8\u00d6\u00c6\u00b0\u00e5 -label.menu.destroyed.instances=\u00d2\u00d1\u00cf\u00fa\u00bb\u00d9\u00b5\u00c4\u00ca\u00b5\u00c0\u00fd -label.menu.disk.offerings=\u00b4\u00c5\u00c5\u00cc\u00b7\u00bd\u00b0\u00b8 -label.menu.domains=\u00d3\u00f2 -label.menu.events=\u00ca\u00c2\u00bc\u00fe -label.menu.featured.isos=\u00be\u00ab\u00d1\u00a1 ISO -label.menu.featured.templates=\u00be\u00ab\u00d1\u00a1\u00c4\u00a3\u00b0\u00e5 -label.menu.global.settings=\u00c8\u00ab\u00be\u00d6\u00c9\u00e8\u00d6\u00c3 -label.menu.infrastructure=\u00bb\u00f9\u00b4\u00a1\u00bc\u00dc\u00b9\u00b9 -label.menu.instances=\u00ca\u00b5\u00c0\u00fd -label.menu.ipaddresses=IP \u00b5\u00d8\u00d6\u00b7 +label.make.project.owner=\u8bbe\u4e3a\u5e10\u6237\u9879\u76ee\u6240\u6709\u8005 +label.manage.resources=\u7ba1\u7406\u8d44\u6e90 +label.management.server=Management Server +label.manage=\u6258\u7ba1 +label.managed=\u6258\u7ba1 +label.management.ips=\u7ba1\u7406\u7c7b IP \u5730\u5740 +label.management=\u7ba1\u7406 +label.max.cpus=\u6700\u5927 CPU \u5185\u6838\u6570 +label.max.guest.limit=\u6700\u5927\u6765\u5bbe\u6570\u9650\u5236 +label.max.memory=\u6700\u5927\u5185\u5b58(MiB) +label.max.networks=\u6700\u5927\u7f51\u7edc\u6570 +label.max.primary.storage=\u6700\u5927\u4e3b\u5b58\u50a8(GiB) +label.max.public.ips=\u6700\u5927\u516c\u7528 IP \u6570 +label.max.secondary.storage=\u6700\u5927\u4e8c\u7ea7\u5b58\u50a8(GiB) +label.max.snapshots=\u6700\u5927\u5feb\u7167\u6570 +label.max.templates=\u6700\u5927\u6a21\u677f\u6570 +label.max.vms=\u6700\u5927\u7528\u6237 VM \u6570 +label.max.volumes=\u6700\u5927\u5377\u6570 +label.max.vpcs=\u6700\u5927 VPC \u6570 +label.maximum=\u6700\u5927\u503c +label.may.continue=\u60a8\u73b0\u5728\u53ef\u4ee5\u7ee7\u7eed\u8fdb\u884c\u64cd\u4f5c\u3002 +label.memory.allocated=\u5df2\u5206\u914d\u7684\u5185\u5b58 +label.memory.limits=\u5185\u5b58\u9650\u5236(MiB) +label.memory.mb=\u5185\u5b58(MB) +label.memory.total=\u5185\u5b58\u603b\u91cf +label.memory.used=\u5df2\u4f7f\u7528\u7684\u5185\u5b58 +label.memory=\u5185\u5b58 +label.menu.accounts=\u5e10\u6237 +label.menu.alerts=\u8b66\u62a5 +label.menu.all.accounts=\u6240\u6709\u5e10\u6237 +label.menu.all.instances=\u6240\u6709\u5b9e\u4f8b +label.menu.community.isos=\u793e\u533a ISO +label.menu.community.templates=\u793e\u533a\u6a21\u677f +label.menu.configuration=\u914d\u7f6e +label.menu.dashboard=\u63a7\u5236\u677f +label.menu.destroyed.instances=\u5df2\u9500\u6bc1\u7684\u5b9e\u4f8b +label.menu.disk.offerings=\u78c1\u76d8\u65b9\u6848 +label.menu.domains=\u57df +label.menu.events=\u4e8b\u4ef6 +label.menu.featured.isos=\u7cbe\u9009 ISO +label.menu.featured.templates=\u7cbe\u9009\u6a21\u677f +label.menu.global.settings=\u5168\u5c40\u8bbe\u7f6e +label.menu.infrastructure=\u57fa\u7840\u67b6\u6784 +label.menu.instances=\u5b9e\u4f8b +label.menu.ipaddresses=IP \u5730\u5740 label.menu.isos=ISO -label.menu.my.accounts=\u00ce\u00d2\u00b5\u00c4\u00d5\u00ca\u00bb\u00a7 -label.menu.my.instances=\u00ce\u00d2\u00b5\u00c4\u00ca\u00b5\u00c0\u00fd -label.menu.my.isos=\u00ce\u00d2\u00b5\u00c4 ISO -label.menu.my.templates=\u00ce\u00d2\u00b5\u00c4\u00c4\u00a3\u00b0\u00e5 -label.menu.network.offerings=\u00cd\u00f8\u00c2\u00e7\u00b7\u00bd\u00b0\u00b8 -label.menu.network=\u00cd\u00f8\u00c2\u00e7 -label.menu.physical.resources=\u00ce\u00ef\u00c0\u00ed\u00d7\u00ca\u00d4\u00b4 -label.menu.regions=\u00b5\u00d8\u00c0\u00ed\u00c7\u00f8\u00d3\u00f2 -label.menu.running.instances=\u00d5\u00fd\u00d4\u00da\u00d4\u00cb\u00d0\u00d0\u00b5\u00c4\u00ca\u00b5\u00c0\u00fd -label.menu.security.groups=\u00b0\u00b2\u00c8\u00ab\u00d7\u00e9 -label.menu.service.offerings=\u00b7\u00fe\u00ce\u00f1\u00b7\u00bd\u00b0\u00b8 -label.menu.snapshots=\u00bf\u00ec\u00d5\u00d5 -label.menu.stopped.instances=\u00d2\u00d1\u00cd\u00a3\u00d6\u00b9\u00b5\u00c4\u00ca\u00b5\u00c0\u00fd -label.menu.storage=\u00b4\u00e6\u00b4\u00a2 -label.menu.system.service.offerings=\u00cf\u00b5\u00cd\u00b3\u00b7\u00bd\u00b0\u00b8 -label.menu.system.vms=\u00cf\u00b5\u00cd\u00b3 VM -label.menu.system=\u00cf\u00b5\u00cd\u00b3 -label.menu.templates=\u00c4\u00a3\u00b0\u00e5 -label.menu.virtual.appliances=\u00d0\u00e9\u00c4\u00e2\u00c9\u00e8\u00b1\u00b8 -label.menu.virtual.resources=\u00d0\u00e9\u00c4\u00e2\u00d7\u00ca\u00d4\u00b4 -label.menu.volumes=\u00be\u00ed -label.migrate.instance.to.host=\u00bd\u00ab\u00ca\u00b5\u00c0\u00fd\u00c7\u00a8\u00d2\u00c6\u00b5\u00bd\u00c6\u00e4\u00cb\u00fb\u00d6\u00f7\u00bb\u00fa -label.migrate.instance.to.ps=\u00bd\u00ab\u00ca\u00b5\u00c0\u00fd\u00c7\u00a8\u00d2\u00c6\u00b5\u00bd\u00c6\u00e4\u00cb\u00fb\u00d6\u00f7\u00b4\u00e6\u00b4\u00a2 -label.migrate.instance.to=\u00c7\u00a8\u00d2\u00c6\u00ca\u00b5\u00c0\u00fd\u00d6\u00c1 -label.migrate.router.to=\u00c7\u00a8\u00d2\u00c6\u00c2\u00b7\u00d3\u00c9\u00c6\u00f7\u00d6\u00c1 -label.migrate.systemvm.to=\u00c7\u00a8\u00d2\u00c6\u00cf\u00b5\u00cd\u00b3 VM \u00d6\u00c1 -label.migrate.to.host=\u00c7\u00a8\u00d2\u00c6\u00b5\u00bd\u00d6\u00f7\u00bb\u00fa -label.migrate.to.storage=\u00c7\u00a8\u00d2\u00c6\u00b5\u00bd\u00b4\u00e6\u00b4\u00a2 -label.migrate.volume=\u00bd\u00ab\u00be\u00ed\u00c7\u00a8\u00d2\u00c6\u00b5\u00bd\u00c6\u00e4\u00cb\u00fb\u00d6\u00f7\u00b4\u00e6\u00b4\u00a2 -label.minimum=\u00d7\u00ee\u00d0\u00a1\u00d6\u00b5 -label.minute.past.hour=\u00b7\u00d6 -label.monday=\u00d0\u00c7\u00c6\u00da\u00d2\u00bb -label.monthly=\u00c3\u00bf\u00d4\u00c2 -label.more.templates=\u00b8\u00fc\u00b6\u00e0\u00c4\u00a3\u00b0\u00e5 -label.move.down.row=\u00cf\u00f2\u00cf\u00c2\u00d2\u00c6\u00b6\u00af\u00d2\u00bb\u00d0\u00d0 -label.move.to.bottom=\u00d2\u00c6\u00d6\u00c1\u00b5\u00d7\u00b2\u00bf -label.move.to.top=\u00d2\u00c6\u00d6\u00c1\u00b6\u00a5\u00b2\u00bf -label.move.up.row=\u00cf\u00f2\u00c9\u00cf\u00d2\u00c6\u00b6\u00af\u00d2\u00bb\u00d0\u00d0 -label.my.account=\u00ce\u00d2\u00b5\u00c4\u00d5\u00ca\u00bb\u00a7 -label.my.network=\u00ce\u00d2\u00b5\u00c4\u00cd\u00f8\u00c2\u00e7 -label.my.templates=\u00ce\u00d2\u00b5\u00c4\u00c4\u00a3\u00b0\u00e5 -label.name.optional=\u00c3\u00fb\u00b3\u00c6(\u00bf\u00c9\u00d1\u00a1) -label.name=\u00c3\u00fb\u00b3\u00c6 -label.nat.port.range=NAT \u00b6\u00cb\u00bf\u00da\u00b7\u00b6\u00ce\u00a7 -label.netmask=\u00cd\u00f8\u00c2\u00e7\u00d1\u00da\u00c2\u00eb +label.menu.my.accounts=\u6211\u7684\u5e10\u6237 +label.menu.my.instances=\u6211\u7684\u5b9e\u4f8b +label.menu.my.isos=\u6211\u7684 ISO +label.menu.my.templates=\u6211\u7684\u6a21\u677f +label.menu.network.offerings=\u7f51\u7edc\u65b9\u6848 +label.menu.network=\u7f51\u7edc +label.menu.physical.resources=\u7269\u7406\u8d44\u6e90 +label.menu.regions=\u5730\u7406\u533a\u57df +label.menu.running.instances=\u6b63\u5728\u8fd0\u884c\u7684\u5b9e\u4f8b +label.menu.security.groups=\u5b89\u5168\u7ec4 +label.menu.service.offerings=\u670d\u52a1\u65b9\u6848 +label.menu.snapshots=\u5feb\u7167 +label.menu.stopped.instances=\u5df2\u505c\u6b62\u7684\u5b9e\u4f8b +label.menu.storage=\u5b58\u50a8 +label.menu.system.service.offerings=\u7cfb\u7edf\u65b9\u6848 +label.menu.system.vms=\u7cfb\u7edf VM +label.menu.system=\u7cfb\u7edf +label.menu.templates=\u6a21\u677f +label.menu.virtual.appliances=\u865a\u62df\u8bbe\u5907 +label.menu.virtual.resources=\u865a\u62df\u8d44\u6e90 +label.menu.volumes=\u5377 +label.migrate.instance.to.host=\u5c06\u5b9e\u4f8b\u8fc1\u79fb\u5230\u5176\u4ed6\u4e3b\u673a +label.migrate.instance.to.ps=\u5c06\u5b9e\u4f8b\u8fc1\u79fb\u5230\u5176\u4ed6\u4e3b\u5b58\u50a8 +label.migrate.instance.to=\u8fc1\u79fb\u5b9e\u4f8b\u81f3 +label.migrate.router.to=\u8fc1\u79fb\u8def\u7531\u5668\u81f3 +label.migrate.systemvm.to=\u8fc1\u79fb\u7cfb\u7edf VM \u81f3 +label.migrate.to.host=\u8fc1\u79fb\u5230\u4e3b\u673a +label.migrate.to.storage=\u8fc1\u79fb\u5230\u5b58\u50a8 +label.migrate.volume=\u5c06\u5377\u8fc1\u79fb\u5230\u5176\u4ed6\u4e3b\u5b58\u50a8 +label.minimum=\u6700\u5c0f\u503c +label.minute.past.hour=\u5206 +label.monday=\u661f\u671f\u4e00 +label.monthly=\u6bcf\u6708 +label.more.templates=\u66f4\u591a\u6a21\u677f +label.move.down.row=\u5411\u4e0b\u79fb\u52a8\u4e00\u884c +label.move.to.bottom=\u79fb\u81f3\u5e95\u90e8 +label.move.to.top=\u79fb\u81f3\u9876\u90e8 +label.move.up.row=\u5411\u4e0a\u79fb\u52a8\u4e00\u884c +label.my.account=\u6211\u7684\u5e10\u6237 +label.my.network=\u6211\u7684\u7f51\u7edc +label.my.templates=\u6211\u7684\u6a21\u677f +label.name.optional=\u540d\u79f0(\u53ef\u9009) +label.name=\u540d\u79f0 +label.nat.port.range=NAT \u7aef\u53e3\u8303\u56f4 +label.netmask=\u7f51\u7edc\u63a9\u7801 label.netScaler=NetScaler -label.network.ACL.total=\u00cd\u00f8\u00c2\u00e7 ACL \u00d7\u00dc\u00ca\u00fd -label.network.ACL=\u00cd\u00f8\u00c2\u00e7 ACL -label.network.ACLs=\u00cd\u00f8\u00c2\u00e7 ACL -label.network.desc=\u00cd\u00f8\u00c2\u00e7\u00c3\u00e8\u00ca\u00f6 -label.network.device.type=\u00cd\u00f8\u00c2\u00e7\u00c9\u00e8\u00b1\u00b8\u00c0\u00e0\u00d0\u00cd -label.network.device=\u00cd\u00f8\u00c2\u00e7\u00c9\u00e8\u00b1\u00b8 -label.network.domain.text=\u00cd\u00f8\u00c2\u00e7\u00d3\u00f2 -label.network.domain=\u00cd\u00f8\u00c2\u00e7\u00d3\u00f2 -label.network.id=\u00cd\u00f8\u00c2\u00e7 ID -label.network.label.display.for.blank.value=\u00ca\u00b9\u00d3\u00c3\u00c4\u00ac\u00c8\u00cf\u00cd\u00f8\u00b9\u00d8 -label.network.limits=\u00cd\u00f8\u00c2\u00e7\u00cf\u00de\u00d6\u00c6 -label.network.name=\u00cd\u00f8\u00c2\u00e7\u00c3\u00fb\u00b3\u00c6 -label.network.offering.display.text=\u00cd\u00f8\u00c2\u00e7\u00b7\u00bd\u00b0\u00b8\u00cf\u00d4\u00ca\u00be\u00ce\u00c4\u00b1\u00be -label.network.offering.id=\u00cd\u00f8\u00c2\u00e7\u00b7\u00bd\u00b0\u00b8 ID -label.network.offering.name=\u00cd\u00f8\u00c2\u00e7\u00b7\u00bd\u00b0\u00b8\u00c3\u00fb\u00b3\u00c6 -label.network.offering=\u00cd\u00f8\u00c2\u00e7\u00b7\u00bd\u00b0\u00b8 -label.network.rate.megabytes=\u00cd\u00f8\u00c2\u00e7\u00cb\u00d9\u00c2\u00ca(MB/\u00c3\u00eb) -label.network.rate=\u00cd\u00f8\u00c2\u00e7\u00cb\u00d9\u00c2\u00ca(MB/\u00c3\u00eb) -label.network.read=\u00cd\u00f8\u00c2\u00e7\u00b6\u00c1\u00c8\u00a1\u00c1\u00bf -label.network.service.providers=\u00cd\u00f8\u00c2\u00e7\u00b7\u00fe\u00ce\u00f1\u00cc\u00e1\u00b9\u00a9\u00b3\u00cc\u00d0\u00f2 -label.network.type=\u00cd\u00f8\u00c2\u00e7\u00c0\u00e0\u00d0\u00cd -label.network.write=\u00cd\u00f8\u00c2\u00e7\u00d0\u00b4\u00c8\u00eb\u00c1\u00bf -label.network=\u00cd\u00f8\u00c2\u00e7 -label.networking.and.security=\u00cd\u00f8\u00c2\u00e7\u00c1\u00ac\u00bd\u00d3\u00d3\u00eb\u00b0\u00b2\u00c8\u00ab -label.networks=\u00cd\u00f8\u00c2\u00e7 -label.new.password=\u00d0\u00c2\u00c3\u00dc\u00c2\u00eb -label.new.project=\u00d0\u00c2\u00bd\u00a8\u00cf\u00ee\u00c4\u00bf -label.new.vm=\u00d0\u00c2\u00bd\u00a8 VM -label.new=\u00d0\u00c2\u00bd\u00a8 -label.next=\u00cf\u00c2\u00d2\u00bb\u00b2\u00bd +label.network.ACL.total=\u7f51\u7edc ACL \u603b\u6570 +label.network.ACL=\u7f51\u7edc ACL +label.network.ACLs=\u7f51\u7edc ACL +label.network.desc=\u7f51\u7edc\u63cf\u8ff0 +label.network.device.type=\u7f51\u7edc\u8bbe\u5907\u7c7b\u578b +label.network.device=\u7f51\u7edc\u8bbe\u5907 +label.network.domain.text=\u7f51\u7edc\u57df +label.network.domain=\u7f51\u7edc\u57df +label.network.id=\u7f51\u7edc ID +label.network.label.display.for.blank.value=\u4f7f\u7528\u9ed8\u8ba4\u7f51\u5173 +label.network.limits=\u7f51\u7edc\u9650\u5236 +label.network.name=\u7f51\u7edc\u540d\u79f0 +label.network.offering.display.text=\u7f51\u7edc\u65b9\u6848\u663e\u793a\u6587\u672c +label.network.offering.id=\u7f51\u7edc\u65b9\u6848 ID +label.network.offering.name=\u7f51\u7edc\u65b9\u6848\u540d\u79f0 +label.network.offering=\u7f51\u7edc\u65b9\u6848 +label.network.rate.megabytes=\u7f51\u7edc\u901f\u7387(MB/\u79d2) +label.network.rate=\u7f51\u7edc\u901f\u7387(MB/\u79d2) +label.network.read=\u7f51\u7edc\u8bfb\u53d6\u91cf +label.network.service.providers=\u7f51\u7edc\u670d\u52a1\u63d0\u4f9b\u7a0b\u5e8f +label.network.type=\u7f51\u7edc\u7c7b\u578b +label.network.write=\u7f51\u7edc\u5199\u5165\u91cf +label.network=\u7f51\u7edc +label.networking.and.security=\u7f51\u7edc\u8fde\u63a5\u4e0e\u5b89\u5168 +label.networks=\u7f51\u7edc +label.new.password=\u65b0\u5bc6\u7801 +label.new.project=\u65b0\u5efa\u9879\u76ee +label.new.vm=\u65b0\u5efa VM +label.new=\u65b0\u5efa +label.next=\u4e0b\u4e00\u6b65 label.nexusVswitch=Nexus 1000v -label.nfs.server=NFS \u00b7\u00fe\u00ce\u00f1\u00c6\u00f7 -label.nfs.storage=NFS \u00b4\u00e6\u00b4\u00a2 +label.nfs.server=NFS \u670d\u52a1\u5668 +label.nfs.storage=NFS \u5b58\u50a8 label.nfs=NFS -label.nic.adapter.type=NIC \u00ca\u00ca\u00c5\u00e4\u00c6\u00f7\u00c0\u00e0\u00d0\u00cd -label.nicira.controller.address=\u00bf\u00d8\u00d6\u00c6\u00c6\u00f7\u00b5\u00d8\u00d6\u00b7 +label.nic.adapter.type=NIC \u9002\u914d\u5668\u7c7b\u578b +label.nicira.controller.address=\u63a7\u5236\u5668\u5730\u5740 label.nicira.l3gatewayserviceuuid=L3 Gateway Service UUID -label.nicira.transportzoneuuid=Transport Zone Uuid -label.brocade.vcs.address=Vcs Switch Address +label.nicira.transportzoneuuid=\u4f20\u8f93\u8d44\u6e90\u57df UUID +label.brocade.vcs.address=Vcs \u4ea4\u6362\u673a\u5730\u5740 label.nics=NIC -label.no.actions=\u00ce\u00de\u00bf\u00c9\u00d3\u00c3\u00b2\u00d9\u00d7\u00f7 -label.no.alerts=\u00ce\u00de\u00d7\u00ee\u00bd\u00fc\u00b7\u00a2\u00b3\u00f6\u00b5\u00c4\u00be\u00af\u00b1\u00a8 -label.no.data=\u00ce\u00de\u00bf\u00c9\u00cf\u00d4\u00ca\u00be\u00b5\u00c4\u00ca\u00fd\u00be\u00dd -label.no.errors=\u00ce\u00de\u00d7\u00ee\u00bd\u00fc\u00b3\u00f6\u00cf\u00d6\u00b5\u00c4\u00b4\u00ed\u00ce\u00f3 -label.no.isos=\u00ce\u00de\u00bf\u00c9\u00d3\u00c3 ISO -label.no.items=\u00ce\u00de\u00bf\u00c9\u00d3\u00c3\u00cf\u00ee\u00c4\u00bf -label.no.security.groups=\u00ce\u00de\u00bf\u00c9\u00d3\u00c3\u00b0\u00b2\u00c8\u00ab\u00d7\u00e9 -label.no.thanks=\u00b2\u00bb\u00a3\u00ac\u00d0\u00bb\u00d0\u00bb -label.no=\u00b7\u00f1 -label.none=\u00ce\u00de -label.not.found=\u00ce\u00b4\u00d5\u00d2\u00b5\u00bd -label.notifications=\u00cd\u00a8\u00d6\u00aa -label.num.cpu.cores=CPU \u00c4\u00da\u00ba\u00cb\u00ca\u00fd -label.number.of.clusters=\u00c8\u00ba\u00bc\u00af\u00ca\u00fd\u00c1\u00bf -label.number.of.hosts=\u00d6\u00f7\u00bb\u00fa\u00ca\u00fd\u00c1\u00bf -label.number.of.pods=\u00cc\u00e1\u00b9\u00a9\u00b5\u00e3\u00ca\u00fd\u00c1\u00bf -label.number.of.system.vms=\u00cf\u00b5\u00cd\u00b3 VM \u00ca\u00fd -label.number.of.virtual.routers=\u00d0\u00e9\u00c4\u00e2\u00c2\u00b7\u00d3\u00c9\u00c6\u00f7\u00ca\u00fd -label.number.of.zones=\u00d7\u00ca\u00d4\u00b4\u00d3\u00f2\u00ca\u00fd\u00c1\u00bf -label.numretries=\u00d6\u00d8\u00ca\u00d4\u00b4\u00ce\u00ca\u00fd +label.no.actions=\u65e0\u53ef\u7528\u64cd\u4f5c +label.no.alerts=\u65e0\u6700\u8fd1\u53d1\u51fa\u7684\u8b66\u62a5 +label.no.data=\u65e0\u53ef\u663e\u793a\u7684\u6570\u636e +label.no.errors=\u65e0\u6700\u8fd1\u51fa\u73b0\u7684\u9519\u8bef +label.no.isos=\u65e0\u53ef\u7528 ISO +label.no.items=\u65e0\u53ef\u7528\u9879\u76ee +label.no.security.groups=\u65e0\u53ef\u7528\u5b89\u5168\u7ec4 +label.no.thanks=\u4e0d\uff0c\u8c22\u8c22 +label.no=\u5426 +label.none=\u65e0 +label.not.found=\u672a\u627e\u5230 +label.notifications=\u901a\u77e5 +label.num.cpu.cores=CPU \u5185\u6838\u6570 +label.number.of.clusters=\u7fa4\u96c6\u6570\u91cf +label.number.of.hosts=\u4e3b\u673a\u6570\u91cf +label.number.of.pods=\u63d0\u4f9b\u70b9\u6570\u91cf +label.number.of.system.vms=\u7cfb\u7edf VM \u6570 +label.number.of.virtual.routers=\u865a\u62df\u8def\u7531\u5668\u6570 +label.number.of.zones=\u8d44\u6e90\u57df\u6570\u91cf +label.numretries=\u91cd\u8bd5\u6b21\u6570 label.ocfs2=OCFS2 -label.offer.ha=\u00cc\u00e1\u00b9\u00a9\u00b8\u00df\u00bf\u00c9\u00d3\u00c3\u00d0\u00d4 -label.ok=\u00c8\u00b7\u00b6\u00a8 -label.optional=\u00bf\u00c9\u00d1\u00a1 -label.order=\u00c5\u00c5\u00d0\u00f2 -label.os.preference=\u00b2\u00d9\u00d7\u00f7\u00cf\u00b5\u00cd\u00b3\u00ca\u00d7\u00d1\u00a1\u00cf\u00ee -label.os.type=\u00b2\u00d9\u00d7\u00f7\u00cf\u00b5\u00cd\u00b3\u00c0\u00e0\u00d0\u00cd -label.owned.public.ips=\u00d3\u00b5\u00d3\u00d0\u00b5\u00c4\u00b9\u00ab\u00d3\u00c3 IP \u00b5\u00d8\u00d6\u00b7\u00ca\u00fd -label.owner.account=\u00cb\u00f9\u00d3\u00d0\u00d5\u00df\u00d5\u00ca\u00bb\u00a7 -label.owner.domain=\u00cb\u00f9\u00d3\u00d0\u00d5\u00df\u00d3\u00f2 -label.PA.log.profile=Palo Alto \u00c8\u00d5\u00d6\u00be\u00c5\u00e4\u00d6\u00c3\u00ce\u00c4\u00bc\u00fe -label.PA.threat.profile=Palo Alto \u00cd\u00fe\u00d0\u00b2\u00c5\u00e4\u00d6\u00c3\u00ce\u00c4\u00bc\u00fe -label.parent.domain=\u00b8\u00b8\u00d3\u00f2 -label.password.enabled=\u00d2\u00d1\u00c6\u00f4\u00d3\u00c3\u00c3\u00dc\u00c2\u00eb -label.password=\u00c3\u00dc\u00c2\u00eb -label.path=\u00c2\u00b7\u00be\u00b6 -label.perfect.forward.secrecy=\u00cd\u00ea\u00c8\u00ab\u00d5\u00fd\u00cf\u00f2\u00b1\u00a3\u00c3\u00dc -label.physical.network.ID=\u00ce\u00ef\u00c0\u00ed\u00cd\u00f8\u00c2\u00e7 ID -label.physical.network=\u00ce\u00ef\u00c0\u00ed\u00cd\u00f8\u00c2\u00e7 -label.PING.CIFS.password=PING CIFS \u00c3\u00dc\u00c2\u00eb -label.PING.CIFS.username=PING CIFS \u00d3\u00c3\u00bb\u00a7\u00c3\u00fb -label.PING.dir=PING \u00c4\u00bf\u00c2\u00bc -label.PING.storage.IP=PING \u00b4\u00e6\u00b4\u00a2 IP -label.please.specify.netscaler.info=\u00c7\u00eb\u00d6\u00b8\u00b6\u00a8 NetScaler \u00d0\u00c5\u00cf\u00a2 -label.please.wait=\u00c7\u00eb\u00c9\u00d4\u00ba\u00f2 -label.plugin.details=\u00b2\u00e5\u00bc\u00fe\u00cf\u00ea\u00cf\u00b8\u00d0\u00c5\u00cf\u00a2 -label.plugins=\u00b2\u00e5\u00bc\u00fe -label.pod.name=Pod name -label.pod=\u00cc\u00e1\u00b9\u00a9\u00b5\u00e3 -label.pods=\u00cc\u00e1\u00b9\u00a9\u00b5\u00e3 -label.port.forwarding.policies=\u00b6\u00cb\u00bf\u00da\u00d7\u00aa\u00b7\u00a2\u00b2\u00df\u00c2\u00d4 -label.port.forwarding=\u00b6\u00cb\u00bf\u00da\u00d7\u00aa\u00b7\u00a2 -label.port.range=\u00b6\u00cb\u00bf\u00da\u00b7\u00b6\u00ce\u00a7 +label.offer.ha=\u63d0\u4f9b\u9ad8\u53ef\u7528\u6027 +label.ok=\u786e\u5b9a +label.optional=\u53ef\u9009 +label.order=\u6392\u5e8f +label.os.preference=\u64cd\u4f5c\u7cfb\u7edf\u9996\u9009\u9879 +label.os.type=\u64cd\u4f5c\u7cfb\u7edf\u7c7b\u578b +label.owned.public.ips=\u62e5\u6709\u7684\u516c\u7528 IP \u5730\u5740\u6570 +label.owner.account=\u6240\u6709\u8005\u5e10\u6237 +label.owner.domain=\u6240\u6709\u8005\u57df +label.PA.log.profile=Palo Alto \u65e5\u5fd7\u914d\u7f6e\u6587\u4ef6 +label.PA.threat.profile=Palo Alto \u5a01\u80c1\u914d\u7f6e\u6587\u4ef6 +label.parent.domain=\u7236\u57df +label.password.enabled=\u5df2\u542f\u7528\u5bc6\u7801 +label.password=\u5bc6\u7801 +label.path=\u8def\u5f84 +label.perfect.forward.secrecy=\u5b8c\u5168\u6b63\u5411\u4fdd\u5bc6 +label.physical.network.ID=\u7269\u7406\u7f51\u7edc ID +label.physical.network=\u7269\u7406\u7f51\u7edc +label.PING.CIFS.password=PING CIFS \u5bc6\u7801 +label.PING.CIFS.username=PING CIFS \u7528\u6237\u540d +label.PING.dir=PING \u76ee\u5f55 +label.PING.storage.IP=PING \u5b58\u50a8 IP +label.please.specify.netscaler.info=\u8bf7\u6307\u5b9a NetScaler \u4fe1\u606f +label.please.wait=\u8bf7\u7a0d\u5019 +label.plugin.details=\u63d2\u4ef6\u8be6\u7ec6\u4fe1\u606f +label.plugins=\u63d2\u4ef6 +label.pod.name=\u63d0\u4f9b\u70b9\u540d\u79f0 +label.pod=\u63d0\u4f9b\u70b9 +label.pods=\u63d0\u4f9b\u70b9 +label.port.forwarding.policies=\u7aef\u53e3\u8f6c\u53d1\u7b56\u7565 +label.port.forwarding=\u7aef\u53e3\u8f6c\u53d1 +label.port.range=\u7aef\u53e3\u8303\u56f4 label.PreSetup=PreSetup -label.prev=\u00c9\u00cf\u00d2\u00bb\u00d2\u00b3 -label.previous=\u00c9\u00cf\u00d2\u00bb\u00b2\u00bd -label.primary.allocated=\u00d2\u00d1\u00b7\u00d6\u00c5\u00e4\u00b5\u00c4\u00d6\u00f7\u00b4\u00e6\u00b4\u00a2 -label.primary.network=\u00d6\u00f7\u00cd\u00f8\u00c2\u00e7 -label.primary.storage.count=\u00d6\u00f7\u00b4\u00e6\u00b4\u00a2\u00b3\u00d8 -label.primary.storage.limits=\u00d6\u00f7\u00b4\u00e6\u00b4\u00a2\u00cf\u00de\u00d6\u00c6(GiB) -label.primary.storage=\u00d6\u00f7\u00b4\u00e6\u00b4\u00a2 -label.primary.used=\u00d2\u00d1\u00ca\u00b9\u00d3\u00c3\u00b5\u00c4\u00d6\u00f7\u00b4\u00e6\u00b4\u00a2 -label.private.Gateway=\u00d7\u00a8\u00d3\u00c3\u00cd\u00f8\u00b9\u00d8 -label.private.interface=\u00d7\u00a8\u00d3\u00c3\u00bd\u00d3\u00bf\u00da -label.private.ip.range=\u00d7\u00a8\u00d3\u00c3 IP \u00b7\u00b6\u00ce\u00a7 -label.private.ip=\u00d7\u00a8\u00d3\u00c3 IP \u00b5\u00d8\u00d6\u00b7 -label.private.ips=\u00d7\u00a8\u00d3\u00c3 IP \u00b5\u00d8\u00d6\u00b7 -label.private.network=\u00d7\u00a8\u00d3\u00c3\u00cd\u00f8\u00c2\u00e7 -label.private.port=\u00d7\u00a8\u00d3\u00c3\u00b6\u00cb\u00bf\u00da -label.private.zone=\u00d7\u00a8\u00d3\u00c3\u00d7\u00ca\u00d4\u00b4\u00d3\u00f2 -label.privatekey=PKCS\#8 \u00cb\u00bd\u00d4\u00bf -label.project.dashboard=\u00cf\u00ee\u00c4\u00bf\u00bf\u00d8\u00d6\u00c6\u00b0\u00e5 -label.project.id=\u00cf\u00ee\u00c4\u00bf ID -label.project.invite=\u00d1\u00fb\u00c7\u00eb\u00bc\u00d3\u00c8\u00eb\u00cf\u00ee\u00c4\u00bf -label.project.name=\u00cf\u00ee\u00c4\u00bf\u00c3\u00fb\u00b3\u00c6 -label.project.view=\u00cf\u00ee\u00c4\u00bf\u00ca\u00d3\u00cd\u00bc -label.project=\u00cf\u00ee\u00c4\u00bf -label.projects=\u00cf\u00ee\u00c4\u00bf -label.protocol=\u00d0\u00ad\u00d2\u00e9 -label.provider=\u00cc\u00e1\u00b9\u00a9\u00b3\u00cc\u00d0\u00f2 -label.providers=\u00cc\u00e1\u00b9\u00a9\u00b3\u00cc\u00d0\u00f2 -label.public.interface=\u00b9\u00ab\u00d3\u00c3\u00bd\u00d3\u00bf\u00da -label.public.ip=\u00b9\u00ab\u00d3\u00c3 IP \u00b5\u00d8\u00d6\u00b7 -label.public.ips=\u00b9\u00ab\u00d3\u00c3 IP \u00b5\u00d8\u00d6\u00b7 -label.public.network=\u00b9\u00ab\u00d3\u00c3\u00cd\u00f8\u00c2\u00e7 -label.public.port=\u00b9\u00ab\u00d3\u00c3\u00b6\u00cb\u00bf\u00da -label.public.traffic=\u00b9\u00ab\u00b9\u00b2\u00c1\u00f7\u00c1\u00bf -label.public.zone=\u00b9\u00ab\u00d3\u00c3\u00d7\u00ca\u00d4\u00b4\u00d3\u00f2 -label.public=\u00b9\u00ab\u00d3\u00c3 -label.purpose=\u00c4\u00bf\u00b5\u00c4 -label.Pxe.server.type=Pxe Server Type -label.quickview=\u00bf\u00ec\u00cb\u00d9\u00b2\u00e9\u00bf\u00b4 -label.reboot=\u00d6\u00d8\u00d0\u00c2\u00c6\u00f4\u00b6\u00af -label.recent.errors=\u00d7\u00ee\u00bd\u00fc\u00b3\u00f6\u00cf\u00d6\u00b5\u00c4\u00b4\u00ed\u00ce\u00f3 -label.redundant.router.capability=\u00c8\u00df\u00d3\u00e0\u00c2\u00b7\u00d3\u00c9\u00c6\u00f7\u00b9\u00a6\u00c4\u00dc -label.redundant.router=\u00c8\u00df\u00d3\u00e0\u00c2\u00b7\u00d3\u00c9\u00c6\u00f7 -label.redundant.state=\u00c8\u00df\u00d3\u00e0\u00d7\u00b4\u00cc\u00ac -label.refresh=\u00cb\u00a2\u00d0\u00c2 -label.region=\u00b5\u00d8\u00c0\u00ed\u00c7\u00f8\u00d3\u00f2 -label.related=\u00cf\u00e0\u00b9\u00d8\u00c1\u00aa -label.remind.later=\u00d2\u00d4\u00ba\u00f3\u00cc\u00e1\u00d0\u00d1\u00ce\u00d2 -label.remove.ACL=\u00c9\u00be\u00b3\u00fd ACL -label.remove.egress.rule=\u00c9\u00be\u00b3\u00fd\u00b3\u00f6\u00bf\u00da\u00b9\u00e6\u00d4\u00f2 -label.remove.from.load.balancer=\u00d5\u00fd\u00d4\u00da\u00b4\u00d3\u00b8\u00ba\u00d4\u00d8\u00c6\u00bd\u00ba\u00e2\u00c6\u00f7\u00d6\u00d0\u00c9\u00be\u00b3\u00fd\u00ca\u00b5\u00c0\u00fd -label.remove.ingress.rule=\u00c9\u00be\u00b3\u00fd\u00c8\u00eb\u00bf\u00da\u00b9\u00e6\u00d4\u00f2 -label.remove.ip.range=\u00c9\u00be\u00b3\u00fd IP \u00b7\u00b6\u00ce\u00a7 -label.remove.pf=\u00c9\u00be\u00b3\u00fd\u00b6\u00cb\u00bf\u00da\u00d7\u00aa\u00b7\u00a2\u00b9\u00e6\u00d4\u00f2 -label.remove.project.account=\u00b4\u00d3\u00cf\u00ee\u00c4\u00bf\u00d6\u00d0\u00c9\u00be\u00b3\u00fd\u00d5\u00ca\u00bb\u00a7 -label.remove.region=\u00c9\u00be\u00b3\u00fd\u00b5\u00d8\u00c0\u00ed\u00c7\u00f8\u00d3\u00f2 -label.remove.rule=\u00c9\u00be\u00b3\u00fd\u00b9\u00e6\u00d4\u00f2 -label.remove.static.nat.rule=\u00c9\u00be\u00b3\u00fd\u00be\u00b2\u00cc\u00ac NAT \u00b9\u00e6\u00d4\u00f2 -label.remove.static.route=\u00c9\u00be\u00b3\u00fd\u00be\u00b2\u00cc\u00ac\u00c2\u00b7\u00d3\u00c9 -label.remove.tier=\u00c9\u00be\u00b3\u00fd\u00b2\u00e3 -label.remove.vm.from.lb=\u00b4\u00d3\u00b8\u00ba\u00d4\u00d8\u00c6\u00bd\u00ba\u00e2\u00c6\u00f7\u00b9\u00e6\u00d4\u00f2\u00d6\u00d0\u00c9\u00be\u00b3\u00fd VM -label.remove.vpc=\u00c9\u00be\u00b3\u00fd VPC -label.removing.user=\u00d5\u00fd\u00d4\u00da\u00c9\u00be\u00b3\u00fd\u00d3\u00c3\u00bb\u00a7 -label.removing=\u00d5\u00fd\u00d4\u00da\u00c9\u00be\u00b3\u00fd -label.required=\u00b1\u00d8\u00cc\u00ee\u00cf\u00ee -label.reserved.system.gateway=\u00d4\u00a4\u00c1\u00f4\u00b5\u00c4\u00cf\u00b5\u00cd\u00b3\u00cd\u00f8\u00b9\u00d8 -label.reserved.system.ip=\u00d4\u00a4\u00c1\u00f4\u00b5\u00c4\u00cf\u00b5\u00cd\u00b3 IP -label.reserved.system.netmask=\u00d4\u00a4\u00c1\u00f4\u00b5\u00c4\u00cf\u00b5\u00cd\u00b3\u00cd\u00f8\u00c2\u00e7\u00d1\u00da\u00c2\u00eb -label.reset.VPN.connection=\u00d6\u00d8\u00d6\u00c3 VPN \u00c1\u00ac\u00bd\u00d3 -label.resize.new.offering.id=\u00d0\u00c2\u00b7\u00bd\u00b0\u00b8 -label.resize.new.size=\u00d0\u00c2\u00bd\u00a8\u00b4\u00f3\u00d0\u00a1(GB) -label.resize.shrink.ok=\u00ca\u00c7\u00b7\u00f1\u00c8\u00b7\u00ca\u00b5\u00d2\u00aa\u00cb\u00f5\u00d0\u00a1\u00be\u00ed\u00b4\u00f3\u00d0\u00a1 -label.resource.limits=\u00d7\u00ca\u00d4\u00b4\u00cf\u00de\u00d6\u00c6 -label.resource.state=\u00d7\u00ca\u00d4\u00b4\u00d7\u00b4\u00cc\u00ac -label.resource=\u00d7\u00ca\u00d4\u00b4 -label.resources=\u00d7\u00ca\u00d4\u00b4 -label.restart.network=\u00d6\u00d8\u00d0\u00c2\u00c6\u00f4\u00b6\u00af\u00cd\u00f8\u00c2\u00e7 -label.restart.required=\u00d0\u00e8\u00d2\u00aa\u00d6\u00d8\u00d0\u00c2\u00c6\u00f4\u00b6\u00af -label.restart.vpc=\u00d6\u00d8\u00d0\u00c2\u00c6\u00f4\u00b6\u00af VPC -label.restore=\u00bb\u00b9\u00d4\u00ad -label.retry.interval=Retry Interval -label.review=\u00ba\u00cb\u00b6\u00d4 -label.revoke.project.invite=\u00b3\u00b7\u00cf\u00fa\u00d1\u00fb\u00c7\u00eb -label.role=\u00bd\u00c7\u00c9\u00ab -label.root.certificate=Root certificate -label.root.disk.controller=\u00b8\u00f9\u00b4\u00c5\u00c5\u00cc\u00bf\u00d8\u00d6\u00c6\u00c6\u00f7 -label.root.disk.offering=\u00b8\u00f9\u00b4\u00c5\u00c5\u00cc\u00b7\u00bd\u00b0\u00b8 -label.round.robin=Round-robin -label.rules=\u00b9\u00e6\u00d4\u00f2 -label.running.vms=\u00d5\u00fd\u00d4\u00da\u00d4\u00cb\u00d0\u00d0\u00b5\u00c4 VM -label.s3.access_key=\u00b7\u00c3\u00ce\u00ca\u00c3\u00dc\u00d4\u00bf -label.s3.bucket=\u00b4\u00e6\u00b4\u00a2\u00cd\u00b0 -label.s3.connection_timeout=\u00c1\u00ac\u00bd\u00d3\u00b3\u00ac\u00ca\u00b1 -label.s3.endpoint=\u00b6\u00cb\u00b5\u00e3 -label.s3.max_error_retry=\u00d7\u00ee\u00b4\u00f3\u00b4\u00ed\u00ce\u00f3\u00d6\u00d8\u00ca\u00d4\u00b4\u00ce\u00ca\u00fd -label.s3.secret_key=\u00c3\u00dc\u00d4\u00bf -label.s3.socket_timeout=\u00cc\u00d7\u00bd\u00d3\u00d7\u00d6\u00b3\u00ac\u00ca\u00b1 -label.s3.use_https=\u00ca\u00b9\u00d3\u00c3 HTTPS -label.saturday=\u00d0\u00c7\u00c6\u00da\u00c1\u00f9 -label.save.and.continue=\u00b1\u00a3\u00b4\u00e6\u00b2\u00a2\u00bc\u00cc\u00d0\u00f8 -label.save=\u00b1\u00a3\u00b4\u00e6 -label.saving.processing=\u00d5\u00fd\u00d4\u00da\u00b1\u00a3\u00b4\u00e6... -label.scope=\u00b7\u00b6\u00ce\u00a7 -label.search=\u00cb\u00d1\u00cb\u00f7 -label.secondary.storage.count=\u00b6\u00fe\u00bc\u00b6\u00b4\u00e6\u00b4\u00a2\u00b3\u00d8 -label.secondary.storage.limits=\u00b6\u00fe\u00bc\u00b6\u00b4\u00e6\u00b4\u00a2\u00cf\u00de\u00d6\u00c6(GiB) -label.secondary.storage.vm=\u00b6\u00fe\u00bc\u00b6\u00b4\u00e6\u00b4\u00a2 VM -label.secondary.storage=\u00b6\u00fe\u00bc\u00b6\u00b4\u00e6\u00b4\u00a2 -label.secondary.used=\u00d2\u00d1\u00ca\u00b9\u00d3\u00c3\u00b5\u00c4\u00b6\u00fe\u00bc\u00b6\u00b4\u00e6\u00b4\u00a2 -label.secret.key=\u00c3\u00dc\u00d4\u00bf -label.security.group.name=\u00b0\u00b2\u00c8\u00ab\u00d7\u00e9\u00c3\u00fb\u00b3\u00c6 -label.security.group=\u00b0\u00b2\u00c8\u00ab\u00d7\u00e9 -label.security.groups.enabled=\u00d2\u00d1\u00c6\u00f4\u00d3\u00c3\u00b0\u00b2\u00c8\u00ab\u00d7\u00e9 -label.security.groups=\u00b0\u00b2\u00c8\u00ab\u00d7\u00e9 -label.select-view=\u00d1\u00a1\u00d4\u00f1\u00ca\u00d3\u00cd\u00bc -label.select.a.template=\u00d1\u00a1\u00d4\u00f1\u00d2\u00bb\u00b8\u00f6\u00c4\u00a3\u00b0\u00e5 -label.select.a.zone=\u00d1\u00a1\u00d4\u00f1\u00d2\u00bb\u00b8\u00f6\u00d7\u00ca\u00d4\u00b4\u00d3\u00f2 -label.select.instance.to.attach.volume.to=\u00d1\u00a1\u00d4\u00f1\u00d2\u00aa\u00bd\u00ab\u00be\u00ed\u00b8\u00bd\u00bc\u00d3\u00b5\u00bd\u00b5\u00c4\u00ca\u00b5\u00c0\u00fd -label.select.instance=\u00d1\u00a1\u00d4\u00f1\u00ca\u00b5\u00c0\u00fd -label.select.iso.or.template=\u00d1\u00a1\u00d4\u00f1 ISO \u00bb\u00f2\u00c4\u00a3\u00b0\u00e5 -label.select.offering=\u00d1\u00a1\u00d4\u00f1\u00b7\u00bd\u00b0\u00b8 -label.select.project=\u00d1\u00a1\u00d4\u00f1\u00cf\u00ee\u00c4\u00bf -label.select.tier=\u00d1\u00a1\u00d4\u00f1\u00b2\u00e3 -label.select.vm.for.static.nat=\u00ce\u00aa\u00be\u00b2\u00cc\u00ac NAT \u00d1\u00a1\u00d4\u00f1 VM -label.select=\u00d1\u00a1\u00d4\u00f1 -label.sent=\u00d2\u00d1\u00b7\u00a2\u00cb\u00cd -label.server=\u00b7\u00fe\u00ce\u00f1\u00c6\u00f7 -label.service.capabilities=\u00b7\u00fe\u00ce\u00f1\u00b9\u00a6\u00c4\u00dc -label.service.offering=\u00b7\u00fe\u00ce\u00f1\u00b7\u00bd\u00b0\u00b8 -label.session.expired=\u00bb\u00e1\u00bb\u00b0\u00d2\u00d1\u00b9\u00fd\u00c6\u00da -label.set.up.zone.type=\u00c9\u00e8\u00d6\u00c3\u00d7\u00ca\u00d4\u00b4\u00d3\u00f2\u00c0\u00e0\u00d0\u00cd -label.setup.network=\u00c9\u00e8\u00d6\u00c3\u00cd\u00f8\u00c2\u00e7 -label.setup.zone=\u00c9\u00e8\u00d6\u00c3\u00d7\u00ca\u00d4\u00b4\u00d3\u00f2 -label.setup=\u00c9\u00e8\u00d6\u00c3 -label.shared=\u00d2\u00d1\u00b9\u00b2\u00cf\u00ed +label.prev=\u4e0a\u4e00\u9875 +label.previous=\u4e0a\u4e00\u6b65 +label.primary.allocated=\u5df2\u5206\u914d\u7684\u4e3b\u5b58\u50a8 +label.primary.network=\u4e3b\u7f51\u7edc +label.primary.storage.count=\u4e3b\u5b58\u50a8\u6c60 +label.primary.storage.limits=\u4e3b\u5b58\u50a8\u9650\u5236(GiB) +label.primary.storage=\u4e3b\u5b58\u50a8 +label.primary.used=\u5df2\u4f7f\u7528\u7684\u4e3b\u5b58\u50a8 +label.private.Gateway=\u4e13\u7528\u7f51\u5173 +label.private.interface=\u4e13\u7528\u63a5\u53e3 +label.private.ip.range=\u4e13\u7528 IP \u8303\u56f4 +label.private.ip=\u4e13\u7528 IP \u5730\u5740 +label.private.ips=\u4e13\u7528 IP \u5730\u5740 +label.private.network=\u4e13\u7528\u7f51\u7edc +label.private.port=\u4e13\u7528\u7aef\u53e3 +label.private.zone=\u4e13\u7528\u8d44\u6e90\u57df +label.privatekey=PKCS\#8 \u79c1\u94a5 +label.project.dashboard=\u9879\u76ee\u63a7\u5236\u677f +label.project.id=\u9879\u76ee ID +label.project.invite=\u9080\u8bf7\u52a0\u5165\u9879\u76ee +label.project.name=\u9879\u76ee\u540d\u79f0 +label.project.view=\u9879\u76ee\u89c6\u56fe +label.project=\u9879\u76ee +label.projects=\u9879\u76ee +label.protocol=\u534f\u8bae +label.provider=\u63d0\u4f9b\u7a0b\u5e8f +label.providers=\u63d0\u4f9b\u7a0b\u5e8f +label.public.interface=\u516c\u7528\u63a5\u53e3 +label.public.ip=\u516c\u7528 IP \u5730\u5740 +label.public.ips=\u516c\u7528 IP \u5730\u5740 +label.public.network=\u516c\u7528\u7f51\u7edc +label.public.port=\u516c\u7528\u7aef\u53e3 +label.public.traffic=\u516c\u5171\u6d41\u91cf +label.public.zone=\u516c\u7528\u8d44\u6e90\u57df +label.public=\u516c\u7528 +label.purpose=\u76ee\u7684 +label.Pxe.server.type=Pxe \u670d\u52a1\u5668\u7c7b\u578b +label.quickview=\u5feb\u901f\u67e5\u770b +label.reboot=\u91cd\u65b0\u542f\u52a8 +label.recent.errors=\u6700\u8fd1\u51fa\u73b0\u7684\u9519\u8bef +label.redundant.router.capability=\u5197\u4f59\u8def\u7531\u5668\u529f\u80fd +label.redundant.router=\u5197\u4f59\u8def\u7531\u5668 +label.redundant.state=\u5197\u4f59\u72b6\u6001 +label.refresh=\u5237\u65b0 +label.region=\u5730\u7406\u533a\u57df +label.related=\u76f8\u5173\u8054 +label.remind.later=\u4ee5\u540e\u63d0\u9192\u6211 +label.remove.ACL=\u5220\u9664 ACL +label.remove.egress.rule=\u5220\u9664\u51fa\u53e3\u89c4\u5219 +label.remove.from.load.balancer=\u6b63\u5728\u4ece\u8d1f\u8f7d\u5e73\u8861\u5668\u4e2d\u5220\u9664\u5b9e\u4f8b +label.remove.ingress.rule=\u5220\u9664\u5165\u53e3\u89c4\u5219 +label.remove.ip.range=\u5220\u9664 IP \u8303\u56f4 +label.remove.pf=\u5220\u9664\u7aef\u53e3\u8f6c\u53d1\u89c4\u5219 +label.remove.project.account=\u4ece\u9879\u76ee\u4e2d\u5220\u9664\u5e10\u6237 +label.remove.region=\u5220\u9664\u5730\u7406\u533a\u57df +label.remove.rule=\u5220\u9664\u89c4\u5219 +label.remove.static.nat.rule=\u5220\u9664\u9759\u6001 NAT \u89c4\u5219 +label.remove.static.route=\u5220\u9664\u9759\u6001\u8def\u7531 +label.remove.tier=\u5220\u9664\u5c42 +label.remove.vm.from.lb=\u4ece\u8d1f\u8f7d\u5e73\u8861\u5668\u89c4\u5219\u4e2d\u5220\u9664 VM +label.remove.vpc=\u5220\u9664 VPC +label.removing.user=\u6b63\u5728\u5220\u9664\u7528\u6237 +label.removing=\u6b63\u5728\u5220\u9664 +label.required=\u5fc5\u586b\u9879 +label.reserved.system.gateway=\u9884\u7559\u7684\u7cfb\u7edf\u7f51\u5173 +label.reserved.system.ip=\u9884\u7559\u7684\u7cfb\u7edf IP +label.reserved.system.netmask=\u9884\u7559\u7684\u7cfb\u7edf\u7f51\u7edc\u63a9\u7801 +label.reset.VPN.connection=\u91cd\u7f6e VPN \u8fde\u63a5 +label.resize.new.offering.id=\u65b0\u65b9\u6848 +label.resize.new.size=\u65b0\u5efa\u5927\u5c0f(GB) +label.resize.shrink.ok=\u662f\u5426\u786e\u5b9e\u8981\u7f29\u5c0f\u5377\u5927\u5c0f +label.resource.limits=\u8d44\u6e90\u9650\u5236 +label.resource.state=\u8d44\u6e90\u72b6\u6001 +label.resource=\u8d44\u6e90 +label.resources=\u8d44\u6e90 +label.restart.network=\u91cd\u65b0\u542f\u52a8\u7f51\u7edc +label.restart.required=\u9700\u8981\u91cd\u65b0\u542f\u52a8 +label.restart.vpc=\u91cd\u65b0\u542f\u52a8 VPC +label.restore=\u8fd8\u539f +label.retry.interval=\u91cd\u8bd5\u65f6\u95f4\u95f4\u9694 +label.review=\u6838\u5bf9 +label.revoke.project.invite=\u64a4\u9500\u9080\u8bf7 +label.role=\u89d2\u8272 +label.root.certificate=\u6839\u8bc1\u4e66 +label.root.disk.controller=\u6839\u78c1\u76d8\u63a7\u5236\u5668 +label.root.disk.offering=\u6839\u78c1\u76d8\u65b9\u6848 +label.round.robin=\u8f6e\u5faa +label.rules=\u89c4\u5219 +label.running.vms=\u6b63\u5728\u8fd0\u884c\u7684 VM +label.s3.access_key=\u8bbf\u95ee\u5bc6\u94a5 +label.s3.bucket=\u5b58\u50a8\u6876 +label.s3.connection_timeout=\u8fde\u63a5\u8d85\u65f6 +label.s3.endpoint=\u7aef\u70b9 +label.s3.max_error_retry=\u6700\u5927\u9519\u8bef\u91cd\u8bd5\u6b21\u6570 +label.s3.secret_key=\u5bc6\u94a5 +label.s3.socket_timeout=\u5957\u63a5\u5b57\u8d85\u65f6 +label.s3.use_https=\u4f7f\u7528 HTTPS +label.saturday=\u661f\u671f\u516d +label.save.and.continue=\u4fdd\u5b58\u5e76\u7ee7\u7eed +label.save=\u4fdd\u5b58 +label.saving.processing=\u6b63\u5728\u4fdd\u5b58... +label.scope=\u8303\u56f4 +label.search=\u641c\u7d22 +label.secondary.storage.count=\u4e8c\u7ea7\u5b58\u50a8\u6c60 +label.secondary.storage.limits=\u4e8c\u7ea7\u5b58\u50a8\u9650\u5236(GiB) +label.secondary.storage.vm=\u4e8c\u7ea7\u5b58\u50a8 VM +label.secondary.storage=\u4e8c\u7ea7\u5b58\u50a8 +label.secondary.used=\u5df2\u4f7f\u7528\u7684\u4e8c\u7ea7\u5b58\u50a8 +label.secret.key=\u5bc6\u94a5 +label.security.group.name=\u5b89\u5168\u7ec4\u540d\u79f0 +label.security.group=\u5b89\u5168\u7ec4 +label.security.groups.enabled=\u5df2\u542f\u7528\u5b89\u5168\u7ec4 +label.security.groups=\u5b89\u5168\u7ec4 +label.select-view=\u9009\u62e9\u89c6\u56fe +label.select.a.template=\u9009\u62e9\u4e00\u4e2a\u6a21\u677f +label.select.a.zone=\u9009\u62e9\u4e00\u4e2a\u8d44\u6e90\u57df +label.select.instance.to.attach.volume.to=\u9009\u62e9\u8981\u5c06\u5377\u9644\u52a0\u5230\u7684\u5b9e\u4f8b +label.select.instance=\u9009\u62e9\u5b9e\u4f8b +label.select.iso.or.template=\u9009\u62e9 ISO \u6216\u6a21\u677f +label.select.offering=\u9009\u62e9\u65b9\u6848 +label.select.project=\u9009\u62e9\u9879\u76ee +label.select.tier=\u9009\u62e9\u5c42 +label.select.vm.for.static.nat=\u4e3a\u9759\u6001 NAT \u9009\u62e9 VM +label.select=\u9009\u62e9 +label.sent=\u5df2\u53d1\u9001 +label.server=\u670d\u52a1\u5668 +label.service.capabilities=\u670d\u52a1\u529f\u80fd +label.service.offering=\u670d\u52a1\u65b9\u6848 +label.session.expired=\u4f1a\u8bdd\u5df2\u8fc7\u671f +label.set.up.zone.type=\u8bbe\u7f6e\u8d44\u6e90\u57df\u7c7b\u578b +label.setup.network=\u8bbe\u7f6e\u7f51\u7edc +label.setup.zone=\u8bbe\u7f6e\u8d44\u6e90\u57df +label.setup=\u8bbe\u7f6e +label.shared=\u5df2\u5171\u4eab label.SharedMountPoint=SharedMountPoint -label.show.ingress.rule=\u00cf\u00d4\u00ca\u00be\u00c8\u00eb\u00bf\u00da\u00b9\u00e6\u00d4\u00f2 -label.shutdown.provider=\u00b9\u00d8\u00b1\u00d5\u00cc\u00e1\u00b9\u00a9\u00b3\u00cc\u00d0\u00f2 -label.site.to.site.VPN=\u00b5\u00e3\u00b6\u00d4\u00b5\u00e3 VPN -label.size=\u00b4\u00f3\u00d0\u00a1 -label.skip.guide=\u00ce\u00d2\u00d2\u00d4\u00c7\u00b0\u00ca\u00b9\u00d3\u00c3\u00b9\u00fd CloudStack\u00a3\u00ac\u00cc\u00f8\u00b9\u00fd\u00b4\u00cb\u00d6\u00b8\u00c4\u00cf -label.snapshot.limits=\u00bf\u00ec\u00d5\u00d5\u00cf\u00de\u00d6\u00c6 -label.snapshot.name=\u00bf\u00ec\u00d5\u00d5\u00c3\u00fb\u00b3\u00c6 -label.snapshot.s=\u00bf\u00ec\u00d5\u00d5 -label.snapshot.schedule=\u00c9\u00e8\u00d6\u00c3\u00d6\u00d8\u00cf\u00d6\u00bf\u00ec\u00d5\u00d5 -label.snapshot=\u00bf\u00ec\u00d5\u00d5 -label.snapshots=\u00bf\u00ec\u00d5\u00d5 -label.source.nat=\u00d4\u00b4 NAT -label.source=\u00d4\u00b4\u00cb\u00e3\u00b7\u00a8 -label.specify.IP.ranges=\u00d6\u00b8\u00b6\u00a8 IP \u00b7\u00b6\u00ce\u00a7 -label.specify.vlan=\u00d6\u00b8\u00b6\u00a8 VLAN -label.specify.vxlan=\u00d6\u00b8\u00b6\u00a8 VXLAN -label.SR.name=SR \u00c3\u00fb\u00b3\u00c6\u00b1\u00ea\u00c7\u00a9 +label.show.ingress.rule=\u663e\u793a\u5165\u53e3\u89c4\u5219 +label.shutdown.provider=\u5173\u95ed\u63d0\u4f9b\u7a0b\u5e8f +label.site.to.site.VPN=\u70b9\u5bf9\u70b9 VPN +label.size=\u5927\u5c0f +label.skip.guide=\u6211\u4ee5\u524d\u4f7f\u7528\u8fc7 CloudStack\uff0c\u8df3\u8fc7\u6b64\u6307\u5357 +label.snapshot.limits=\u5feb\u7167\u9650\u5236 +label.snapshot.name=\u5feb\u7167\u540d\u79f0 +label.snapshot.s=\u5feb\u7167 +label.snapshot.schedule=\u8bbe\u7f6e\u91cd\u73b0\u5feb\u7167 +label.snapshot=\u5feb\u7167 +label.snapshots=\u5feb\u7167 +label.source.nat=\u6e90 NAT +label.source=\u6e90\u7b97\u6cd5 +label.specify.IP.ranges=\u6307\u5b9a IP \u8303\u56f4 +label.specify.vlan=\u6307\u5b9a VLAN +label.specify.vxlan=\u6307\u5b9a VXLAN +label.SR.name=SR \u540d\u79f0\u6807\u7b7e label.srx=SRX label.PA=Palo Alto -label.start.IP=\u00c6\u00f0\u00ca\u00bc IP -label.start.port=\u00c6\u00f0\u00ca\u00bc\u00b6\u00cb\u00bf\u00da -label.start.reserved.system.IP=\u00c6\u00f0\u00ca\u00bc\u00d4\u00a4\u00c1\u00f4\u00cf\u00b5\u00cd\u00b3 IP -label.start.vlan=Start Vlan -label.start.vxlan=Start Vxlan -label.state=\u00d7\u00b4\u00cc\u00ac -label.static.nat.enabled=\u00d2\u00d1\u00c6\u00f4\u00d3\u00c3\u00be\u00b2\u00cc\u00ac NAT -label.static.nat.to=\u00be\u00b2\u00cc\u00ac NAT \u00c4\u00bf\u00b1\u00ea -label.static.nat.vm.details=\u00be\u00b2\u00cc\u00ac NAT VM \u00cf\u00ea\u00c7\u00e9 -label.static.nat=\u00be\u00b2\u00cc\u00ac NAT -label.statistics=\u00cd\u00b3\u00bc\u00c6\u00ca\u00fd\u00be\u00dd -label.status=\u00d7\u00b4\u00cc\u00ac -label.step.1.title=\u00b2\u00bd\u00d6\u00e8 1\: \u00d1\u00a1\u00d4\u00f1\u00d2\u00bb\u00b8\u00f6\u00c4\u00a3\u00b0\u00e5 -label.step.1=\u00b2\u00bd\u00d6\u00e8 1 -label.step.2.title=\u00b2\u00bd\u00d6\u00e8 2\: \u00b7\u00fe\u00ce\u00f1\u00b7\u00bd\u00b0\u00b8 -label.step.2=\u00b2\u00bd\u00d6\u00e8 2 -label.step.3.title=\u00b2\u00bd\u00d6\u00e8 3\: \u00d1\u00a1\u00d4\u00f1\u00d2\u00bb\u00d6\u00d6\u00b4\u00c5\u00c5\u00cc\u00b7\u00bd\u00b0\u00b8 -label.step.3=\u00b2\u00bd\u00d6\u00e8 3 -label.step.4.title=\u00b2\u00bd\u00d6\u00e8 4\: \u00cd\u00f8\u00c2\u00e7 -label.step.4=\u00b2\u00bd\u00d6\u00e8 4 -label.step.5.title=\u00b2\u00bd\u00d6\u00e8 5\: \u00ba\u00cb\u00b6\u00d4 -label.step.5=\u00b2\u00bd\u00d6\u00e8 5 -label.stickiness=\u00d5\u00b3\u00d0\u00d4 -label.sticky.cookie-name=Cookie \u00c3\u00fb\u00b3\u00c6 -label.sticky.domain=\u00d3\u00f2 -label.sticky.expire=\u00b9\u00fd\u00c6\u00da\u00c8\u00d5\u00c6\u00da -label.sticky.holdtime=\u00b3\u00d6\u00d0\u00f8\u00ca\u00b1\u00bc\u00e4 +label.start.IP=\u8d77\u59cb IP +label.start.port=\u8d77\u59cb\u7aef\u53e3 +label.start.reserved.system.IP=\u8d77\u59cb\u9884\u7559\u7cfb\u7edf IP +label.start.vlan=\u542f\u52a8 Vlan +label.start.vxlan=\u542f\u52a8 Vxlan +label.state=\u72b6\u6001 +label.static.nat.enabled=\u5df2\u542f\u7528\u9759\u6001 NAT +label.static.nat.to=\u9759\u6001 NAT \u76ee\u6807 +label.static.nat.vm.details=\u9759\u6001 NAT VM \u8be6\u60c5 +label.static.nat=\u9759\u6001 NAT +label.statistics=\u7edf\u8ba1\u6570\u636e +label.status=\u72b6\u6001 +label.step.1.title=\u6b65\u9aa4 1\: \u9009\u62e9\u4e00\u4e2a\u6a21\u677f +label.step.1=\u6b65\u9aa4 1 +label.step.2.title=\u6b65\u9aa4 2\: \u670d\u52a1\u65b9\u6848 +label.step.2=\u6b65\u9aa4 2 +label.step.3.title=\u6b65\u9aa4 3\: \u9009\u62e9\u4e00\u79cd\u78c1\u76d8\u65b9\u6848 +label.step.3=\u6b65\u9aa4 3 +label.step.4.title=\u6b65\u9aa4 4\: \u7f51\u7edc +label.step.4=\u6b65\u9aa4 4 +label.step.5.title=\u6b65\u9aa4 5\: \u6838\u5bf9 +label.step.5=\u6b65\u9aa4 5 +label.stickiness=\u7c98\u6027 +label.sticky.cookie-name=Cookie \u540d\u79f0 +label.sticky.domain=\u57df +label.sticky.expire=\u8fc7\u671f\u65e5\u671f +label.sticky.holdtime=\u6301\u7eed\u65f6\u95f4 label.sticky.indirect=indirect -label.sticky.length=\u00b3\u00a4\u00b6\u00c8 -label.sticky.mode=\u00c4\u00a3\u00ca\u00bd +label.sticky.length=\u957f\u5ea6 +label.sticky.mode=\u6a21\u5f0f label.sticky.nocache=nocache label.sticky.postonly=postonly label.sticky.prefix=prefix label.sticky.request-learn=request-learn -label.sticky.tablesize=\u00b1\u00ed\u00b4\u00f3\u00d0\u00a1 -label.stop=\u00cd\u00a3\u00d6\u00b9 -label.stopped.vms=\u00d2\u00d1\u00cd\u00a3\u00d6\u00b9\u00b5\u00c4 VM -label.storage.tags=\u00b4\u00e6\u00b4\u00a2\u00b1\u00ea\u00c7\u00a9 -label.storage.traffic=\u00b4\u00e6\u00b4\u00a2\u00c1\u00f7\u00c1\u00bf -label.storage.type=\u00b4\u00e6\u00b4\u00a2\u00c0\u00e0\u00d0\u00cd -label.qos.type=QoS \u00c0\u00e0\u00d0\u00cd -label.cache.mode=\u00d0\u00b4\u00c8\u00eb\u00bb\u00ba\u00b4\u00e6\u00c0\u00e0\u00d0\u00cd -label.storage=\u00b4\u00e6\u00b4\u00a2 -label.subdomain.access=\u00d7\u00d3\u00d3\u00f2\u00b7\u00c3\u00ce\u00ca -label.submit=\u00cc\u00e1\u00bd\u00bb -label.submitted.by=[\u00cc\u00e1\u00bd\u00bb\u00d5\u00df\: ] -label.succeeded=\u00b3\u00c9\u00b9\u00a6 -label.sunday=\u00d0\u00c7\u00c6\u00da\u00c8\u00d5 -label.super.cidr.for.guest.networks=\u00c0\u00b4\u00b1\u00f6\u00cd\u00f8\u00c2\u00e7\u00b5\u00c4\u00b3\u00ac\u00bc\u00b6 CIDR -label.supported.services=\u00d6\u00a7\u00b3\u00d6\u00b5\u00c4\u00b7\u00fe\u00ce\u00f1 -label.supported.source.NAT.type=\u00d6\u00a7\u00b3\u00d6\u00b5\u00c4\u00d4\u00b4 NAT \u00c0\u00e0\u00d0\u00cd -label.suspend.project=\u00d4\u00dd\u00cd\u00a3\u00cf\u00ee\u00c4\u00bf -label.system.capacity=\u00cf\u00b5\u00cd\u00b3\u00c8\u00dd\u00c1\u00bf -label.system.offering=\u00cf\u00b5\u00cd\u00b3\u00b7\u00bd\u00b0\u00b8 -label.system.service.offering=\u00cf\u00b5\u00cd\u00b3\u00b7\u00fe\u00ce\u00f1\u00b7\u00bd\u00b0\u00b8 -label.system.vm.type=\u00cf\u00b5\u00cd\u00b3 VM \u00c0\u00e0\u00d0\u00cd -label.system.vm=\u00cf\u00b5\u00cd\u00b3 VM -label.system.vms=\u00cf\u00b5\u00cd\u00b3 VM -label.system.wide.capacity=\u00d5\u00fb\u00b8\u00f6\u00cf\u00b5\u00cd\u00b3\u00b5\u00c4\u00c8\u00dd\u00c1\u00bf -label.tagged=\u00d2\u00d1\u00b1\u00ea\u00bc\u00c7 -label.tags=\u00b1\u00ea\u00c7\u00a9 -label.target.iqn=\u00c4\u00bf\u00b1\u00ea IQN -label.task.completed=\u00d2\u00d1\u00cd\u00ea\u00b3\u00c9\u00c8\u00ce\u00ce\u00f1 -label.template.limits=\u00c4\u00a3\u00b0\u00e5\u00cf\u00de\u00d6\u00c6 -label.template=\u00c4\u00a3\u00b0\u00e5 -label.TFTP.dir=TFTP \u00c4\u00bf\u00c2\u00bc -label.theme.default=\u00c4\u00ac\u00c8\u00cf\u00d6\u00f7\u00cc\u00e2 -label.theme.grey=\u00d7\u00d4\u00b6\u00a8\u00d2\u00e5 - \u00bb\u00d2\u00c9\u00ab -label.theme.lightblue=\u00d7\u00d4\u00b6\u00a8\u00d2\u00e5 - \u00b5\u00ad\u00c0\u00b6\u00c9\u00ab -label.thursday=\u00d0\u00c7\u00c6\u00da\u00cb\u00c4 -label.tier.details=\u00b2\u00e3\u00cf\u00ea\u00cf\u00b8\u00d0\u00c5\u00cf\u00a2 -label.tier=\u00b2\u00e3 -label.time.zone=\u00ca\u00b1\u00c7\u00f8 -label.time=\u00ca\u00b1\u00bc\u00e4 -label.timeout.in.second = \u00b3\u00ac\u00ca\u00b1(\u00c3\u00eb) -label.timeout=\u00b3\u00ac\u00ca\u00b1 -label.timezone=\u00ca\u00b1\u00c7\u00f8 -label.token=\u00c1\u00ee\u00c5\u00c6 -label.total.CPU=CPU \u00d7\u00dc\u00c1\u00bf -label.total.cpu=CPU \u00d7\u00dc\u00c1\u00bf -label.total.hosts=\u00d7\u00dc\u00d6\u00f7\u00bb\u00fa\u00ca\u00fd -label.total.memory=\u00c4\u00da\u00b4\u00e6\u00d7\u00dc\u00c1\u00bf -label.total.of.ip=\u00d7\u00dc IP \u00b5\u00d8\u00d6\u00b7\u00ca\u00fd -label.total.of.vm=\u00d7\u00dc VM \u00ca\u00fd -label.total.storage=\u00b4\u00e6\u00b4\u00a2\u00d7\u00dc\u00c1\u00bf -label.total.vms=\u00d7\u00dc VM \u00ca\u00fd -label.traffic.label=\u00c1\u00f7\u00c1\u00bf\u00b1\u00ea\u00c7\u00a9 -label.traffic.type=\u00c1\u00f7\u00c1\u00bf\u00c0\u00e0\u00d0\u00cd -label.traffic.types=\u00c1\u00f7\u00c1\u00bf\u00c0\u00e0\u00d0\u00cd -label.tuesday=\u00d0\u00c7\u00c6\u00da\u00b6\u00fe -label.type.id=\u00c0\u00e0\u00d0\u00cd ID -label.type=\u00c0\u00e0\u00d0\u00cd -label.unavailable=\u00b2\u00bb\u00bf\u00c9\u00d3\u00c3 -label.unlimited=\u00ce\u00de\u00cf\u00de\u00d6\u00c6 -label.untagged=\u00d2\u00d1\u00c8\u00a1\u00cf\u00fb\u00b1\u00ea\u00bc\u00c7 -label.update.project.resources=\u00b8\u00fc\u00d0\u00c2\u00cf\u00ee\u00c4\u00bf\u00d7\u00ca\u00d4\u00b4 -label.update.ssl.cert= SSL \u00d6\u00a4\u00ca\u00e9 -label.update.ssl= SSL \u00d6\u00a4\u00ca\u00e9 -label.updating=\u00d5\u00fd\u00d4\u00da\u00b8\u00fc\u00d0\u00c2 -label.upload.volume=\u00c9\u00cf\u00d4\u00d8\u00be\u00ed -label.upload=\u00c9\u00cf\u00d4\u00d8 +label.sticky.tablesize=\u8868\u5927\u5c0f +label.stop=\u505c\u6b62 +label.stopped.vms=\u5df2\u505c\u6b62\u7684 VM +label.storage.tags=\u5b58\u50a8\u6807\u7b7e +label.storage.traffic=\u5b58\u50a8\u6d41\u91cf +label.storage.type=\u5b58\u50a8\u7c7b\u578b +label.qos.type=QoS \u7c7b\u578b +label.cache.mode=\u5199\u5165\u7f13\u5b58\u7c7b\u578b +label.storage=\u5b58\u50a8 +label.subdomain.access=\u5b50\u57df\u8bbf\u95ee +label.submit=\u63d0\u4ea4 +label.submitted.by=[\u63d0\u4ea4\u8005\: ] +label.succeeded=\u6210\u529f +label.sunday=\u661f\u671f\u65e5 +label.super.cidr.for.guest.networks=\u6765\u5bbe\u7f51\u7edc\u7684\u8d85\u7ea7 CIDR +label.supported.services=\u652f\u6301\u7684\u670d\u52a1 +label.supported.source.NAT.type=\u652f\u6301\u7684\u6e90 NAT \u7c7b\u578b +label.suspend.project=\u6682\u505c\u9879\u76ee +label.system.capacity=\u7cfb\u7edf\u5bb9\u91cf +label.system.offering=\u7cfb\u7edf\u65b9\u6848 +label.system.service.offering=\u7cfb\u7edf\u670d\u52a1\u65b9\u6848 +label.system.vm.type=\u7cfb\u7edf VM \u7c7b\u578b +label.system.vm=\u7cfb\u7edf VM +label.system.vms=\u7cfb\u7edf VM +label.system.wide.capacity=\u6574\u4e2a\u7cfb\u7edf\u7684\u5bb9\u91cf +label.tagged=\u5df2\u6807\u8bb0 +label.tags=\u6807\u7b7e +label.target.iqn=\u76ee\u6807 IQN +label.task.completed=\u5df2\u5b8c\u6210\u4efb\u52a1 +label.template.limits=\u6a21\u677f\u9650\u5236 +label.template=\u6a21\u677f +label.TFTP.dir=TFTP \u76ee\u5f55 +label.theme.default=\u9ed8\u8ba4\u4e3b\u9898 +label.theme.grey=\u81ea\u5b9a\u4e49 - \u7070\u8272 +label.theme.lightblue=\u81ea\u5b9a\u4e49 - \u6de1\u84dd\u8272 +label.thursday=\u661f\u671f\u56db +label.tier.details=\u5c42\u8be6\u7ec6\u4fe1\u606f +label.tier=\u5c42 +label.time.zone=\u65f6\u533a +label.time=\u65f6\u95f4 +label.timeout.in.second = \u8d85\u65f6(\u79d2) +label.timeout=\u8d85\u65f6 +label.timezone=\u65f6\u533a +label.token=\u4ee4\u724c +label.total.CPU=CPU \u603b\u91cf +label.total.cpu=CPU \u603b\u91cf +label.total.hosts=\u603b\u4e3b\u673a\u6570 +label.total.memory=\u5185\u5b58\u603b\u91cf +label.total.of.ip=\u603b IP \u5730\u5740\u6570 +label.total.of.vm=\u603b VM \u6570 +label.total.storage=\u5b58\u50a8\u603b\u91cf +label.total.vms=\u603b VM \u6570 +label.traffic.label=\u6d41\u91cf\u6807\u7b7e +label.traffic.type=\u6d41\u91cf\u7c7b\u578b +label.traffic.types=\u6d41\u91cf\u7c7b\u578b +label.tuesday=\u661f\u671f\u4e8c +label.type.id=\u7c7b\u578b ID +label.type=\u7c7b\u578b +label.unavailable=\u4e0d\u53ef\u7528 +label.unlimited=\u65e0\u9650\u5236 +label.untagged=\u5df2\u53d6\u6d88\u6807\u8bb0 +label.update.project.resources=\u66f4\u65b0\u9879\u76ee\u8d44\u6e90 +label.update.ssl.cert= SSL \u8bc1\u4e66 +label.update.ssl= SSL \u8bc1\u4e66 +label.updating=\u6b63\u5728\u66f4\u65b0 +label.upload.volume=\u4e0a\u8f7d\u5377 +label.upload=\u4e0a\u8f7d label.url=URL -label.usage.interface=\u00ca\u00b9\u00d3\u00c3\u00bd\u00e7\u00c3\u00e6 -label.use.vm.ip=\u00ca\u00b9\u00d3\u00c3 VM IP\: -label.used=\u00d2\u00d1\u00ca\u00b9\u00d3\u00c3 -label.user=\u00d3\u00c3\u00bb\u00a7 -label.username=\u00d3\u00c3\u00bb\u00a7\u00c3\u00fb -label.users=\u00d3\u00c3\u00bb\u00a7 -label.value=\u00d6\u00b5 -label.vcdcname=vCenter DC \u00c3\u00fb\u00b3\u00c6 -label.vcenter.cluster=vCenter \u00c8\u00ba\u00bc\u00af -label.vcenter.datacenter=vCenter \u00ca\u00fd\u00be\u00dd\u00d6\u00d0\u00d0\u00c4 -label.vcenter.datastore=vCenter \u00ca\u00fd\u00be\u00dd\u00b4\u00e6\u00b4\u00a2 -label.vcenter.host=vCenter \u00d6\u00f7\u00bb\u00fa -label.vcenter.password=vCenter \u00c3\u00dc\u00c2\u00eb -label.vcenter.username=vCenter \u00d3\u00c3\u00bb\u00a7\u00c3\u00fb -label.vcipaddress=vCenter IP \u00b5\u00d8\u00d6\u00b7 -label.version=\u00b0\u00e6\u00b1\u00be -label.view.all=\u00b2\u00e9\u00bf\u00b4\u00c8\u00ab\u00b2\u00bf -label.view.console=\u00b2\u00e9\u00bf\u00b4\u00bf\u00d8\u00d6\u00c6\u00cc\u00a8 -label.view.more=\u00b2\u00e9\u00bf\u00b4\u00b8\u00fc\u00b6\u00e0 -label.view=\u00b2\u00e9\u00bf\u00b4 -label.viewing=\u00b2\u00e9\u00bf\u00b4 -label.virtual.appliance=\u00d0\u00e9\u00c4\u00e2\u00c9\u00e8\u00b1\u00b8 -label.virtual.appliances=\u00d0\u00e9\u00c4\u00e2\u00c9\u00e8\u00b1\u00b8 -label.virtual.machines=\u00d0\u00e9\u00c4\u00e2\u00bb\u00fa -label.virtual.network=\u00d0\u00e9\u00c4\u00e2\u00cd\u00f8\u00c2\u00e7 -label.virtual.router=\u00d0\u00e9\u00c4\u00e2\u00c2\u00b7\u00d3\u00c9\u00c6\u00f7 -label.virtual.routers=\u00d0\u00e9\u00c4\u00e2\u00c2\u00b7\u00d3\u00c9\u00c6\u00f7 +label.usage.interface=\u4f7f\u7528\u754c\u9762 +label.use.vm.ip=\u4f7f\u7528 VM IP\: +label.used=\u5df2\u4f7f\u7528 +label.user=\u7528\u6237 +label.username=\u7528\u6237\u540d +label.users=\u7528\u6237 +label.value=\u503c +label.vcdcname=vCenter DC \u540d\u79f0 +label.vcenter.cluster=vCenter \u7fa4\u96c6 +label.vcenter.datacenter=vCenter \u6570\u636e\u4e2d\u5fc3 +label.vcenter.datastore=vCenter \u6570\u636e\u5b58\u50a8 +label.vcenter.host=vCenter \u4e3b\u673a +label.vcenter.password=vCenter \u5bc6\u7801 +label.vcenter.username=vCenter \u7528\u6237\u540d +label.vcipaddress=vCenter IP \u5730\u5740 +label.version=\u7248\u672c +label.view.all=\u67e5\u770b\u5168\u90e8 +label.view.console=\u67e5\u770b\u63a7\u5236\u53f0 +label.view.more=\u67e5\u770b\u66f4\u591a +label.view=\u67e5\u770b +label.viewing=\u67e5\u770b +label.virtual.appliance=\u865a\u62df\u8bbe\u5907 +label.virtual.appliances=\u865a\u62df\u8bbe\u5907 +label.virtual.machines=\u865a\u62df\u673a +label.virtual.network=\u865a\u62df\u7f51\u7edc +label.virtual.router=\u865a\u62df\u8def\u7531\u5668 +label.virtual.routers=\u865a\u62df\u8def\u7531\u5668 label.vlan.id=VLAN/VNI ID -label.vlan.range=VLAN/VNI \u00b7\u00b6\u00ce\u00a7 +label.vlan.range=VLAN/VNI \u8303\u56f4 label.vlan=VLAN/VNI label.vnet=VLAN/VNI label.vnet.id=VLAN/VNI ID label.vxlan.id=VXLAN ID -label.vxlan.range=VXLAN \u00b7\u00b6\u00ce\u00a7 +label.vxlan.range=VXLAN \u8303\u56f4 label.vxlan=VXLAN -label.vm.add=\u00cc\u00ed\u00bc\u00d3\u00ca\u00b5\u00c0\u00fd -label.vm.destroy=\u00cf\u00fa\u00bb\u00d9 -label.vm.display.name=VM \u00cf\u00d4\u00ca\u00be\u00c3\u00fb\u00b3\u00c6 -label.vm.name=VM \u00c3\u00fb\u00b3\u00c6 -label.vm.reboot=\u00d6\u00d8\u00d0\u00c2\u00c6\u00f4\u00b6\u00af -label.vm.start=\u00c6\u00f4\u00b6\u00af -label.vm.state=VM \u00d7\u00b4\u00cc\u00ac -label.vm.stop=\u00cd\u00a3\u00d6\u00b9 -label.VMFS.datastore=VMFS \u00ca\u00fd\u00be\u00dd\u00b4\u00e6\u00b4\u00a2 +label.vm.add=\u6dfb\u52a0\u5b9e\u4f8b +label.vm.destroy=\u9500\u6bc1 +label.vm.display.name=VM \u663e\u793a\u540d\u79f0 +label.vm.name=VM \u540d\u79f0 +label.vm.reboot=\u91cd\u65b0\u542f\u52a8 +label.vm.start=\u542f\u52a8 +label.vm.state=VM \u72b6\u6001 +label.vm.stop=\u505c\u6b62 +label.VMFS.datastore=VMFS \u6570\u636e\u5b58\u50a8 label.vmfs=VMFS -label.VMs.in.tier=\u00b2\u00e3\u00d6\u00d0\u00b5\u00c4 VM +label.VMs.in.tier=\u5c42\u4e2d\u7684 VM label.vms=VM -label.vmsnapshot.current=\u00d7\u00ee\u00d0\u00c2\u00b0\u00e6\u00b1\u00be -label.vmsnapshot.memory=\u00bf\u00ec\u00d5\u00d5\u00c4\u00da\u00b4\u00e6 -label.vmsnapshot.parentname=\u00b8\u00b8\u00c3\u00fb\u00b3\u00c6 -label.vmsnapshot.type=\u00c0\u00e0\u00d0\u00cd -label.vmsnapshot=VM \u00bf\u00ec\u00d5\u00d5 -label.vmware.traffic.label=VMware \u00c1\u00f7\u00c1\u00bf\u00b1\u00ea\u00c7\u00a9 -label.volgroup=\u00be\u00ed\u00d7\u00e9 -label.volume.limits=\u00be\u00ed\u00cf\u00de\u00d6\u00c6 -label.volume.name=\u00be\u00ed\u00c3\u00fb\u00b3\u00c6 -label.volume=\u00be\u00ed -label.volumes=\u00be\u00ed +label.vmsnapshot.current=\u6700\u65b0\u7248\u672c +label.vmsnapshot.memory=\u5feb\u7167\u5185\u5b58 +label.vmsnapshot.parentname=\u7236\u540d\u79f0 +label.vmsnapshot.type=\u7c7b\u578b +label.vmsnapshot=VM \u5feb\u7167 +label.vmware.traffic.label=VMware \u6d41\u91cf\u6807\u7b7e +label.volgroup=\u5377\u7ec4 +label.volume.limits=\u5377\u9650\u5236 +label.volume.name=\u5377\u540d\u79f0 +label.volume=\u5377 +label.volumes=\u5377 label.vpc.id=VPC ID -label.VPC.router.details=VPC \u00c2\u00b7\u00d3\u00c9\u00c6\u00f7\u00cf\u00ea\u00cf\u00b8\u00d0\u00c5\u00cf\u00a2 +label.VPC.router.details=VPC \u8def\u7531\u5668\u8be6\u7ec6\u4fe1\u606f label.vpc=VPC -label.VPN.connection=VPN \u00c1\u00ac\u00bd\u00d3 -label.VPN.customer.gateway=VPN \u00bf\u00cd\u00bb\u00a7\u00cd\u00f8\u00b9\u00d8 -label.vpn.customer.gateway=VPN \u00bf\u00cd\u00bb\u00a7\u00cd\u00f8\u00b9\u00d8 -label.VPN.gateway=VPN \u00cd\u00f8\u00b9\u00d8 +label.VPN.connection=VPN \u8fde\u63a5 +label.VPN.customer.gateway=VPN \u5ba2\u6237\u7f51\u5173 +label.vpn.customer.gateway=VPN \u5ba2\u6237\u7f51\u5173 +label.VPN.gateway=VPN \u7f51\u5173 label.vpn=VPN -label.vsmctrlvlanid=\u00bf\u00d8\u00d6\u00c6 VLAN ID -label.vsmpktvlanid=\u00ca\u00fd\u00be\u00dd\u00b0\u00fc VLAN ID -label.vsmstoragevlanid=\u00b4\u00e6\u00b4\u00a2 VLAN ID -label.vsphere.managed=\u00d3\u00c9 vSphere \u00b9\u00dc\u00c0\u00ed -label.waiting=\u00d5\u00fd\u00d4\u00da\u00b5\u00c8\u00b4\u00fd -label.warn=\u00be\u00af\u00b8\u00e6 -label.wednesday=\u00d0\u00c7\u00c6\u00da\u00c8\u00fd -label.weekly=\u00c3\u00bf\u00d6\u00dc -label.welcome.cloud.console=\u00bb\u00b6\u00d3\u00ad\u00ca\u00b9\u00d3\u00c3\u00b9\u00dc\u00c0\u00ed\u00bf\u00d8\u00d6\u00c6\u00cc\u00a8 -label.welcome=\u00bb\u00b6\u00d3\u00ad -label.what.is.cloudstack=\u00ca\u00b2\u00c3\u00b4\u00ca\u00c7 CloudStack&\#8482? -label.xenserver.traffic.label=XenServer \u00c1\u00f7\u00c1\u00bf\u00b1\u00ea\u00c7\u00a9 -label.yes=\u00ca\u00c7 -label.zone.details=\u00d7\u00ca\u00d4\u00b4\u00d3\u00f2\u00cf\u00ea\u00cf\u00b8\u00d0\u00c5\u00cf\u00a2 -label.zone.id=\u00d7\u00ca\u00d4\u00b4\u00d3\u00f2 ID -label.zone.name=Zone name -label.zone.step.1.title=\u00b2\u00bd\u00d6\u00e8 1\: \u00d1\u00a1\u00d4\u00f1\u00d2\u00bb\u00b8\u00f6\u00cd\u00f8\u00c2\u00e7 -label.zone.step.2.title=\u00b2\u00bd\u00d6\u00e8 2\: \u00cc\u00ed\u00bc\u00d3\u00d2\u00bb\u00b8\u00f6\u00d7\u00ca\u00d4\u00b4\u00d3\u00f2 -label.zone.step.3.title=\u00b2\u00bd\u00d6\u00e8 3\: \u00cc\u00ed\u00bc\u00d3\u00d2\u00bb\u00b8\u00f6\u00cc\u00e1\u00b9\u00a9\u00b5\u00e3 -label.zone.step.4.title=\u00b2\u00bd\u00d6\u00e8 4\: \u00cc\u00ed\u00bc\u00d3\u00d2\u00bb\u00b8\u00f6 IP \u00b7\u00b6\u00ce\u00a7 -label.zone.type=\u00d7\u00ca\u00d4\u00b4\u00d3\u00f2\u00c0\u00e0\u00d0\u00cd -label.zone.wide=\u00d5\u00fb\u00b8\u00f6\u00d7\u00ca\u00d4\u00b4\u00d3\u00f2 -label.zone=\u00d7\u00ca\u00d4\u00b4\u00d3\u00f2 -label.zones=\u00d7\u00ca\u00d4\u00b4\u00d3\u00f2 -label.zoneWizard.trafficType.guest=\u00c0\u00b4\u00b1\u00f6\: \u00d7\u00ee\u00d6\u00d5\u00d3\u00c3\u00bb\u00a7\u00d0\u00e9\u00c4\u00e2\u00bb\u00fa\u00d6\u00ae\u00bc\u00e4\u00b5\u00c4\u00c1\u00f7\u00c1\u00bf -label.zoneWizard.trafficType.management=\u00b9\u00dc\u00c0\u00ed\: CloudStack \u00b5\u00c4\u00c4\u00da\u00b2\u00bf\u00d7\u00ca\u00d4\u00b4(\u00b0\u00fc\u00c0\u00a8\u00d3\u00eb\u00b9\u00dc\u00c0\u00ed\u00b7\u00fe\u00ce\u00f1\u00c6\u00f7\u00cd\u00a8\u00d0\u00c5\u00b5\u00c4\u00c8\u00ce\u00ba\u00ce\u00d7\u00e9\u00bc\u00fe\u00a3\u00ac\u00c0\u00fd\u00c8\u00e7\u00d6\u00f7\u00bb\u00fa\u00ba\u00cd CloudStack \u00cf\u00b5\u00cd\u00b3 VM)\u00d6\u00ae\u00bc\u00e4\u00b5\u00c4\u00c1\u00f7\u00c1\u00bf -label.zoneWizard.trafficType.public=\u00b9\u00ab\u00d3\u00c3\: \u00d4\u00c6\u00d6\u00d0 Internet \u00d3\u00eb\u00d0\u00e9\u00c4\u00e2\u00bb\u00fa\u00d6\u00ae\u00bc\u00e4\u00b5\u00c4\u00c1\u00f7\u00c1\u00bf\u00a1\u00a3 -label.zoneWizard.trafficType.storage=\u00b4\u00e6\u00b4\u00a2\: \u00d6\u00f7\u00b4\u00e6\u00b4\u00a2\u00b7\u00fe\u00ce\u00f1\u00c6\u00f7\u00d3\u00eb\u00b6\u00fe\u00bc\u00b6\u00b4\u00e6\u00b4\u00a2\u00b7\u00fe\u00ce\u00f1\u00c6\u00f7(\u00c0\u00fd\u00c8\u00e7 VM \u00c4\u00a3\u00b0\u00e5\u00d3\u00eb\u00bf\u00ec\u00d5\u00d5)\u00d6\u00ae\u00bc\u00e4\u00b5\u00c4\u00c1\u00f7\u00c1\u00bf -label.ldap.group.name=LDAP \u00d7\u00e9 -label.password.reset.confirm=\u00c3\u00dc\u00c2\u00eb\u00d2\u00d1\u00d6\u00d8\u00d6\u00c3\u00ce\u00aa -label.provider=\u00cc\u00e1\u00b9\u00a9\u00b3\u00cc\u00d0\u00f2 -label.resetVM=\u00d6\u00d8\u00d6\u00c3 VM +label.vsmctrlvlanid=\u63a7\u5236 VLAN ID +label.vsmpktvlanid=\u6570\u636e\u5305 VLAN ID +label.vsmstoragevlanid=\u5b58\u50a8 VLAN ID +label.vsphere.managed=\u7531 vSphere \u7ba1\u7406 +label.waiting=\u6b63\u5728\u7b49\u5f85 +label.warn=\u8b66\u544a +label.wednesday=\u661f\u671f\u4e09 +label.weekly=\u6bcf\u5468 +label.welcome.cloud.console=\u6b22\u8fce\u4f7f\u7528\u7ba1\u7406\u63a7\u5236\u53f0 +label.welcome=\u6b22\u8fce +label.what.is.cloudstack=\u4ec0\u4e48\u662f CloudStack&\#8482? +label.xenserver.traffic.label=XenServer \u6d41\u91cf\u6807\u7b7e +label.yes=\u662f +label.zone.details=\u8d44\u6e90\u57df\u8be6\u7ec6\u4fe1\u606f +label.zone.id=\u8d44\u6e90\u57df ID +label.zone.name=\u8d44\u6e90\u57df\u540d\u79f0 +label.zone.step.1.title=\u6b65\u9aa4 1\: \u9009\u62e9\u4e00\u4e2a\u7f51\u7edc +label.zone.step.2.title=\u6b65\u9aa4 2\: \u6dfb\u52a0\u4e00\u4e2a\u8d44\u6e90\u57df +label.zone.step.3.title=\u6b65\u9aa4 3\: \u6dfb\u52a0\u4e00\u4e2a\u63d0\u4f9b\u70b9 +label.zone.step.4.title=\u6b65\u9aa4 4\: \u6dfb\u52a0\u4e00\u4e2a IP \u8303\u56f4 +label.zone.type=\u8d44\u6e90\u57df\u7c7b\u578b +label.zone.wide=\u6574\u4e2a\u8d44\u6e90\u57df +label.zone=\u8d44\u6e90\u57df +label.zones=\u8d44\u6e90\u57df +label.zoneWizard.trafficType.guest=\u6765\u5bbe\: \u6700\u7ec8\u7528\u6237\u865a\u62df\u673a\u4e4b\u95f4\u7684\u6d41\u91cf +label.zoneWizard.trafficType.management=\u7ba1\u7406\: CloudStack \u7684\u5185\u90e8\u8d44\u6e90(\u5305\u62ec\u4e0e\u7ba1\u7406\u670d\u52a1\u5668\u901a\u4fe1\u7684\u4efb\u4f55\u7ec4\u4ef6\uff0c\u4f8b\u5982\u4e3b\u673a\u548c CloudStack \u7cfb\u7edf VM)\u4e4b\u95f4\u7684\u6d41\u91cf +label.zoneWizard.trafficType.public=\u516c\u7528\: \u4e91\u4e2d Internet \u4e0e\u865a\u62df\u673a\u4e4b\u95f4\u7684\u6d41\u91cf\u3002 +label.zoneWizard.trafficType.storage=\u5b58\u50a8\: \u4e3b\u5b58\u50a8\u670d\u52a1\u5668\u4e0e\u4e8c\u7ea7\u5b58\u50a8\u670d\u52a1\u5668(\u4f8b\u5982 VM \u6a21\u677f\u4e0e\u5feb\u7167)\u4e4b\u95f4\u7684\u6d41\u91cf +label.ldap.group.name=LDAP \u7ec4 +label.password.reset.confirm=\u5bc6\u7801\u5df2\u91cd\u7f6e\u4e3a +label.provider=\u63d0\u4f9b\u7a0b\u5e8f +label.resetVM=\u91cd\u7f6e VM label.openDaylight=OpenDaylight -label.assign.instance.another=\u00bd\u00ab\u00ca\u00b5\u00c0\u00fd\u00b7\u00d6\u00c5\u00e4\u00b8\u00f8\u00c6\u00e4\u00cb\u00fb\u00d5\u00ca\u00bb\u00a7 -label.network.addVM=\u00bd\u00ab\u00cd\u00f8\u00c2\u00e7\u00cc\u00ed\u00bc\u00d3\u00b5\u00bd VM -label.set.default.NIC=\u00c9\u00e8\u00d6\u00c3\u00c4\u00ac\u00c8\u00cf NIC -label.Xenserver.Tools.Version61plus=Original XS Version is 6.1\+ -label.supportsstrechedl2subnet=\u00d6\u00a7\u00b3\u00d6\u00c0\u00a9\u00d5\u00b9\u00b6\u00fe\u00bc\u00b6\u00d7\u00d3\u00cd\u00f8 -label.menu.vpc.offerings=VPC \u00b7\u00bd\u00b0\u00b8 -label.vpc.offering=VPC \u00b7\u00bd\u00b0\u00b8 -label.regionlevelvpc=\u00b5\u00d8\u00c0\u00ed\u00c7\u00f8\u00d3\u00f2\u00bc\u00b6 VPC -label.add.vpc.offering=\u00cc\u00ed\u00bc\u00d3 VPC \u00b7\u00bd\u00b0\u00b8 -label.distributedrouter=\u00b7\u00d6\u00b2\u00bc\u00ca\u00bd\u00c2\u00b7\u00d3\u00c9\u00c6\u00f7 -label.vpc.offering.details=VPC \u00b7\u00bd\u00b0\u00b8\u00cf\u00ea\u00cf\u00b8\u00d0\u00c5\u00cf\u00a2 -label.disable.vpc.offering=\u00bd\u00fb\u00d3\u00c3 VPC \u00b7\u00bd\u00b0\u00b8 -label.enable.vpc.offering=\u00c6\u00f4\u00d3\u00c3 VPC \u00b7\u00bd\u00b0\u00b8 -label.remove.vpc.offering=\u00c9\u00be\u00b3\u00fd VPC \u00b7\u00bd\u00b0\u00b8 -label.vpc.distributedvpcrouter=\u00b7\u00d6\u00b2\u00bc\u00ca\u00bd VPC \u00c2\u00b7\u00d3\u00c9\u00c6\u00f7 -label.vpc.supportsregionlevelvpc=\u00d6\u00a7\u00b3\u00d6\u00b5\u00d8\u00c0\u00ed\u00c7\u00f8\u00d3\u00f2\u00bc\u00b6 VPC -label.dynamically.scalable=\u00bf\u00c9\u00b6\u00af\u00cc\u00ac\u00c0\u00a9\u00d5\u00b9 -label.instance.scaled.up=\u00d2\u00d1\u00c0\u00a9\u00d5\u00b9\u00ca\u00b5\u00c0\u00fd -label.tag.key=\u00b1\u00ea\u00bc\u00c7\u00c3\u00dc\u00d4\u00bf -label.tag.value=\u00b1\u00ea\u00bc\u00c7\u00d6\u00b5 -label.ipv6.address=IPv6 IP \u00b5\u00d8\u00d6\u00b7 -label.ipv6.gateway=IPv6 \u00cd\u00f8\u00b9\u00d8 +label.assign.instance.another=\u5c06\u5b9e\u4f8b\u5206\u914d\u7ed9\u5176\u4ed6\u5e10\u6237 +label.network.addVM=\u5c06\u7f51\u7edc\u6dfb\u52a0\u5230 VM +label.set.default.NIC=\u8bbe\u7f6e\u9ed8\u8ba4 NIC +label.Xenserver.Tools.Version61plus=\u539f\u59cb XS \u7248\u672c\u4e3a 6.1\+ +label.supportsstrechedl2subnet=\u652f\u6301\u6269\u5c55\u4e8c\u7ea7\u5b50\u7f51 +label.menu.vpc.offerings=VPC \u65b9\u6848 +label.vpc.offering=VPC \u65b9\u6848 +label.regionlevelvpc=\u5730\u7406\u533a\u57df\u7ea7 VPC +label.add.vpc.offering=\u6dfb\u52a0 VPC \u65b9\u6848 +label.distributedrouter=\u5206\u5e03\u5f0f\u8def\u7531\u5668 +label.vpc.offering.details=VPC \u65b9\u6848\u8be6\u7ec6\u4fe1\u606f +label.disable.vpc.offering=\u7981\u7528 VPC \u65b9\u6848 +label.enable.vpc.offering=\u542f\u7528 VPC \u65b9\u6848 +label.remove.vpc.offering=\u5220\u9664 VPC \u65b9\u6848 +label.vpc.distributedvpcrouter=\u5206\u5e03\u5f0f VPC \u8def\u7531\u5668 +label.vpc.supportsregionlevelvpc=\u652f\u6301\u5730\u7406\u533a\u57df\u7ea7 VPC +label.dynamically.scalable=\u53ef\u52a8\u6001\u6269\u5c55 +label.instance.scaled.up=\u5df2\u6269\u5c55\u5b9e\u4f8b +label.tag.key=\u6807\u8bb0\u5bc6\u94a5 +label.tag.value=\u6807\u8bb0\u503c +label.ipv6.address=IPv6 IP \u5730\u5740 +label.ipv6.gateway=IPv6 \u7f51\u5173 label.ipv6.CIDR=IPv6 CIDR -label.VPC.limits=VPC \u00cf\u00de\u00d6\u00c6 -label.edit.region=\u00b1\u00e0\u00bc\u00ad\u00b5\u00d8\u00c0\u00ed\u00c7\u00f8\u00d3\u00f2 -label.gslb.domain.name=GSLB \u00d3\u00f2\u00c3\u00fb -label.add.gslb=\u00cc\u00ed\u00bc\u00d3 GSLB -label.gslb.servicetype=\u00b7\u00fe\u00ce\u00f1\u00c0\u00e0\u00d0\u00cd -label.gslb.details=GSLB \u00cf\u00ea\u00cf\u00b8\u00d0\u00c5\u00cf\u00a2 -label.gslb.delete=\u00c9\u00be\u00b3\u00fd GSLB -label.opendaylight.controller=OpenDaylight \u00bf\u00d8\u00d6\u00c6\u00c6\u00f7 -label.opendaylight.controllers=OpenDaylight \u00bf\u00d8\u00d6\u00c6\u00c6\u00f7 -label.portable.ip.ranges=\u00bf\u00c9\u00d2\u00c6\u00d6\u00b2 IP \u00b7\u00b6\u00ce\u00a7 -label.add.portable.ip.range=\u00cc\u00ed\u00bc\u00d3\u00bf\u00c9\u00d2\u00c6\u00d6\u00b2 IP \u00b7\u00b6\u00ce\u00a7 -label.delete.portable.ip.range=\u00c9\u00be\u00b3\u00fd\u00bf\u00c9\u00d2\u00c6\u00d6\u00b2 IP \u00b7\u00b6\u00ce\u00a7 -label.opendaylight.controllerdetail=OpenDaylight \u00bf\u00d8\u00d6\u00c6\u00c6\u00f7\u00cf\u00ea\u00cf\u00b8\u00d0\u00c5\u00cf\u00a2 -label.portable.ip.range.details=\u00bf\u00c9\u00d2\u00c6\u00d6\u00b2 IP \u00b7\u00b6\u00ce\u00a7\u00cf\u00ea\u00cf\u00b8\u00d0\u00c5\u00cf\u00a2 -label.portable.ips=\u00bf\u00c9\u00d2\u00c6\u00d6\u00b2 IP -label.gslb.assigned.lb=\u00d2\u00d1\u00b7\u00d6\u00c5\u00e4\u00b8\u00ba\u00d4\u00d8\u00c6\u00bd\u00ba\u00e2 -label.gslb.assigned.lb.more=\u00b7\u00d6\u00c5\u00e4\u00b8\u00fc\u00b6\u00e0\u00b8\u00ba\u00d4\u00d8\u00c6\u00bd\u00ba\u00e2 -label.gslb.lb.rule=Load balancing rule -label.gslb.lb.details=\u00b8\u00ba\u00d4\u00d8\u00c6\u00bd\u00ba\u00e2\u00cf\u00ea\u00cf\u00b8\u00d0\u00c5\u00cf\u00a2 -label.gslb.lb.remove=\u00b4\u00d3\u00b4\u00cb GSLB \u00d6\u00d0\u00c9\u00be\u00b3\u00fd\u00b8\u00ba\u00d4\u00d8\u00c6\u00bd\u00ba\u00e2 -label.enable.autoscale=Enable Autoscale -label.disable.autoscale=Disable Autoscale -label.min.instances=\u00d7\u00ee\u00d0\u00a1\u00ca\u00b5\u00c0\u00fd\u00ca\u00fd -label.max.instances=\u00d7\u00ee\u00b4\u00f3\u00ca\u00b5\u00c0\u00fd\u00ca\u00fd -label.add.OpenDaylight.device=\u00cc\u00ed\u00bc\u00d3 OpenDaylight \u00bf\u00d8\u00d6\u00c6\u00c6\u00f7 -label.show.advanced.settings=\u00cf\u00d4\u00ca\u00be\u00b8\u00df\u00bc\u00b6\u00c9\u00e8\u00d6\u00c3 -label.delete.OpenDaylight.device=\u00c9\u00be\u00b3\u00fd OpenDaylight \u00bf\u00d8\u00d6\u00c6\u00c6\u00f7 -label.polling.interval.sec=\u00c2\u00d6\u00d1\u00af\u00ca\u00b1\u00bc\u00e4\u00bc\u00e4\u00b8\u00f4(\u00c3\u00eb) -label.quiet.time.sec=\u00b0\u00b2\u00be\u00b2\u00ca\u00b1\u00bc\u00e4(\u00c3\u00eb) -label.destroy.vm.graceperiod=\u00cf\u00fa\u00bb\u00d9 VM \u00bf\u00ed\u00cf\u00de\u00c6\u00da -label.SNMP.community=SNMP \u00c9\u00e7\u00c7\u00f8 -label.SNMP.port=SNMP \u00b6\u00cb\u00bf\u00da -label.add.ucs.manager=\u00cc\u00ed\u00bc\u00d3 UCS \u00b9\u00dc\u00c0\u00ed\u00c6\u00f7 -label.ovm.traffic.label=OVM \u00c1\u00f7\u00c1\u00bf\u00b1\u00ea\u00c7\u00a9 -label.lxc.traffic.label=LXC \u00c1\u00f7\u00c1\u00bf\u00b1\u00ea\u00c7\u00a9 -label.hyperv.traffic.label=HyperV \u00c1\u00f7\u00c1\u00bf\u00b1\u00ea\u00c7\u00a9 -label.resource.name=\u00d7\u00ca\u00d4\u00b4\u00c3\u00fb\u00b3\u00c6 -label.reource.id=\u00d7\u00ca\u00d4\u00b4 ID -label.vnmc.devices=VNMC \u00c9\u00e8\u00b1\u00b8 -label.add.vnmc.provider=\u00cc\u00ed\u00bc\u00d3 VNMC \u00cc\u00e1\u00b9\u00a9\u00b3\u00cc\u00d0\u00f2 -label.enable.vnmc.provider=\u00c6\u00f4\u00d3\u00c3 VNMC \u00cc\u00e1\u00b9\u00a9\u00b3\u00cc\u00d0\u00f2 -label.add.vnmc.device=\u00cc\u00ed\u00bc\u00d3 VNMC \u00c9\u00e8\u00b1\u00b8 -label.ciscovnmc.resource.details=CiscoVNMC \u00d7\u00ca\u00d4\u00b4\u00cf\u00ea\u00cf\u00b8\u00d0\u00c5\u00cf\u00a2 -label.delete.ciscovnmc.resource=\u00c9\u00be\u00b3\u00fd CiscoVNMC \u00d7\u00ca\u00d4\u00b4 -label.enable.vnmc.device=\u00c6\u00f4\u00d3\u00c3 VNMC \u00c9\u00e8\u00b1\u00b8 -label.disbale.vnmc.device=\u00bd\u00fb\u00d3\u00c3 VNMC \u00c9\u00e8\u00b1\u00b8 -label.disable.vnmc.provider=\u00bd\u00fb\u00d3\u00c3 VNMC \u00cc\u00e1\u00b9\u00a9\u00b3\u00cc\u00d0\u00f2 -label.services=\u00b7\u00fe\u00ce\u00f1 -label.secondary.staging.store=\u00b6\u00fe\u00bc\u00b6\u00d4\u00dd\u00b4\u00e6\u00b4\u00e6\u00b4\u00a2 -label.release.account=\u00b4\u00d3\u00d5\u00ca\u00bb\u00a7\u00d6\u00d0\u00ca\u00cd\u00b7\u00c5 -label.release.account.lowercase=Release from account -label.vlan.vni.ranges=VLAN/VNI \u00b7\u00b6\u00ce\u00a7 -label.dedicated.vlan.vni.ranges=VLAN/VNI \u00b7\u00b6\u00ce\u00a7\u00d2\u00d1\u00d7\u00a8\u00d3\u00c3 -label.dedicate.vlan.vni.range=\u00bd\u00ab VLAN/VNI \u00b7\u00b6\u00ce\u00a7\u00d7\u00a8\u00d3\u00c3 -label.vlan.vni.range=VLAN/VNI \u00b7\u00b6\u00ce\u00a7 -label.vlan.range.details=VLAN \u00b7\u00b6\u00ce\u00a7\u00cf\u00ea\u00cf\u00b8\u00d0\u00c5\u00cf\u00a2 -label.release.dedicated.vlan.range=\u00ca\u00cd\u00b7\u00c5\u00d7\u00a8\u00d3\u00c3 VLAN \u00b7\u00b6\u00ce\u00a7 -label.broadcat.uri=\u00b9\u00e3\u00b2\u00a5 URI +label.VPC.limits=VPC \u9650\u5236 +label.edit.region=\u7f16\u8f91\u5730\u7406\u533a\u57df +label.gslb.domain.name=GSLB \u57df\u540d +label.add.gslb=\u6dfb\u52a0 GSLB +label.gslb.servicetype=\u670d\u52a1\u7c7b\u578b +label.gslb.details=GSLB \u8be6\u7ec6\u4fe1\u606f +label.gslb.delete=\u5220\u9664 GSLB +label.opendaylight.controller=OpenDaylight \u63a7\u5236\u5668 +label.opendaylight.controllers=OpenDaylight \u63a7\u5236\u5668 +label.portable.ip.ranges=\u53ef\u79fb\u690d IP \u8303\u56f4 +label.add.portable.ip.range=\u6dfb\u52a0\u53ef\u79fb\u690d IP \u8303\u56f4 +label.delete.portable.ip.range=\u5220\u9664\u53ef\u79fb\u690d IP \u8303\u56f4 +label.opendaylight.controllerdetail=OpenDaylight \u63a7\u5236\u5668\u8be6\u7ec6\u4fe1\u606f +label.portable.ip.range.details=\u53ef\u79fb\u690d IP \u8303\u56f4\u8be6\u7ec6\u4fe1\u606f +label.portable.ips=\u53ef\u79fb\u690d IP +label.gslb.assigned.lb=\u5df2\u5206\u914d\u8d1f\u8f7d\u5e73\u8861 +label.gslb.assigned.lb.more=\u5206\u914d\u66f4\u591a\u8d1f\u8f7d\u5e73\u8861 +label.gslb.lb.rule=\u8d1f\u8f7d\u5e73\u8861\u89c4\u5219 +label.gslb.lb.details=\u8d1f\u8f7d\u5e73\u8861\u8be6\u7ec6\u4fe1\u606f +label.gslb.lb.remove=\u4ece\u6b64 GSLB \u4e2d\u5220\u9664\u8d1f\u8f7d\u5e73\u8861 +label.enable.autoscale=\u542f\u7528\u81ea\u52a8\u7f29\u653e +label.disable.autoscale=\u7981\u7528\u81ea\u52a8\u7f29\u653e +label.min.instances=\u6700\u5c0f\u5b9e\u4f8b\u6570 +label.max.instances=\u6700\u5927\u5b9e\u4f8b\u6570 +label.add.OpenDaylight.device=\u6dfb\u52a0 OpenDaylight \u63a7\u5236\u5668 +label.show.advanced.settings=\u663e\u793a\u9ad8\u7ea7\u8bbe\u7f6e +label.delete.OpenDaylight.device=\u5220\u9664 OpenDaylight \u63a7\u5236\u5668 +label.polling.interval.sec=\u8f6e\u8be2\u65f6\u95f4\u95f4\u9694(\u79d2) +label.quiet.time.sec=\u5b89\u9759\u65f6\u95f4(\u79d2) +label.destroy.vm.graceperiod=\u9500\u6bc1 VM \u5bbd\u9650\u671f +label.SNMP.community=SNMP \u793e\u533a +label.SNMP.port=SNMP \u7aef\u53e3 +label.add.ucs.manager=\u6dfb\u52a0 UCS \u7ba1\u7406\u5668 +label.ovm.traffic.label=OVM \u6d41\u91cf\u6807\u7b7e +label.lxc.traffic.label=LXC \u6d41\u91cf\u6807\u7b7e +label.hyperv.traffic.label=HyperV \u6d41\u91cf\u6807\u7b7e +label.resource.name=\u8d44\u6e90\u540d\u79f0 +label.reource.id=\u8d44\u6e90 ID +label.vnmc.devices=VNMC \u8bbe\u5907 +label.add.vnmc.provider=\u6dfb\u52a0 VNMC \u63d0\u4f9b\u7a0b\u5e8f +label.enable.vnmc.provider=\u542f\u7528 VNMC \u63d0\u4f9b\u7a0b\u5e8f +label.add.vnmc.device=\u6dfb\u52a0 VNMC \u8bbe\u5907 +label.ciscovnmc.resource.details=CiscoVNMC \u8d44\u6e90\u8be6\u7ec6\u4fe1\u606f +label.delete.ciscovnmc.resource=\u5220\u9664 CiscoVNMC \u8d44\u6e90 +label.enable.vnmc.device=\u542f\u7528 VNMC \u8bbe\u5907 +label.disbale.vnmc.device=\u7981\u7528 VNMC \u8bbe\u5907 +label.disable.vnmc.provider=\u7981\u7528 VNMC \u63d0\u4f9b\u7a0b\u5e8f +label.services=\u670d\u52a1 +label.secondary.staging.store=\u4e8c\u7ea7\u6682\u5b58\u5b58\u50a8 +label.release.account=\u4ece\u5e10\u6237\u4e2d\u91ca\u653e +label.release.account.lowercase=\u4ece\u5e10\u6237\u4e2d\u91ca\u653e +label.vlan.vni.ranges=VLAN/VNI \u8303\u56f4 +label.dedicated.vlan.vni.ranges=VLAN/VNI \u8303\u56f4\u5df2\u4e13\u7528 +label.dedicate.vlan.vni.range=\u5c06 VLAN/VNI \u8303\u56f4\u4e13\u7528 +label.vlan.vni.range=VLAN/VNI \u8303\u56f4 +label.vlan.range.details=VLAN \u8303\u56f4\u8be6\u7ec6\u4fe1\u606f +label.release.dedicated.vlan.range=\u91ca\u653e\u4e13\u7528 VLAN \u8303\u56f4 +label.broadcat.uri=\u5e7f\u64ad URI label.ipv4.cidr=IPv4 CIDR -label.guest.network.details=\u00c0\u00b4\u00b1\u00f6\u00cd\u00f8\u00c2\u00e7\u00cf\u00ea\u00cf\u00b8\u00d0\u00c5\u00cf\u00a2 -label.ipv4.gateway=IPv4 \u00cd\u00f8\u00b9\u00d8 -label.release.dedicated.vlan.range=\u00ca\u00cd\u00b7\u00c5\u00d7\u00a8\u00d3\u00c3 VLAN \u00b7\u00b6\u00ce\u00a7 -label.vlan.ranges=VLAN \u00b7\u00b6\u00ce\u00a7 -label.virtual.appliance.details=Virtual applicance details -label.start.lb.vm=\u00c6\u00f4\u00b6\u00af LB VM -label.stop.lb.vm=\u00cd\u00a3\u00d6\u00b9 LB VM -label.migrate.lb.vm=\u00c7\u00a8\u00d2\u00c6 LB VM -label.vpc.virtual.router=VPC \u00d0\u00e9\u00c4\u00e2\u00c2\u00b7\u00d3\u00c9\u00c6\u00f7 +label.guest.network.details=\u6765\u5bbe\u7f51\u7edc\u8be6\u7ec6\u4fe1\u606f +label.ipv4.gateway=IPv4 \u7f51\u5173 +label.release.dedicated.vlan.range=\u91ca\u653e\u4e13\u7528 VLAN \u8303\u56f4 +label.vlan.ranges=VLAN \u8303\u56f4 +label.virtual.appliance.details=\u865a\u62df\u8bbe\u5907\u8be6\u7ec6\u4fe1\u606f +label.start.lb.vm=\u542f\u52a8 LB VM +label.stop.lb.vm=\u505c\u6b62 LB VM +label.migrate.lb.vm=\u8fc1\u79fb LB VM +label.vpc.virtual.router=VPC \u865a\u62df\u8def\u7531\u5668 label.ovs=OVS -label.gslb.service=GSLB \u00b7\u00fe\u00ce\u00f1 -label.gslb.service.public.ip=GSLB \u00b7\u00fe\u00ce\u00f1\u00b9\u00ab\u00d3\u00c3 IP -label.gslb.service.private.ip=GSLB \u00b7\u00fe\u00ce\u00f1\u00d7\u00a8\u00d3\u00c3 IP -label.baremetal.dhcp.provider=\u00c2\u00e3\u00bb\u00fa DHCP \u00cc\u00e1\u00b9\u00a9\u00b3\u00cc\u00d0\u00f2 -label.add.baremetal.dhcp.device=\u00cc\u00ed\u00bc\u00d3\u00c2\u00e3\u00bb\u00fa DHCP \u00c9\u00e8\u00b1\u00b8 -label.baremetal.pxe.provider=\u00c2\u00e3\u00bb\u00fa PXE \u00cc\u00e1\u00b9\u00a9\u00b3\u00cc\u00d0\u00f2 -label.baremetal.pxe.device=\u00cc\u00ed\u00bc\u00d3\u00c2\u00e3\u00bb\u00fa PXE \u00c9\u00e8\u00b1\u00b8 -label.tftp.root.directory=Tftp root directory -label.add.vmware.datacenter=\u00cc\u00ed\u00bc\u00d3 VMware \u00ca\u00fd\u00be\u00dd\u00d6\u00d0\u00d0\u00c4 -label.remove.vmware.datacenter=\u00c9\u00be\u00b3\u00fd VMware \u00ca\u00fd\u00be\u00dd\u00d6\u00d0\u00d0\u00c4 -label.dc.name=\u00ca\u00fd\u00be\u00dd\u00d6\u00d0\u00d0\u00c4\u00c3\u00fb\u00b3\u00c6 -label.vcenter=vcenter -label.dedicate.zone=\u00bd\u00ab\u00d7\u00ca\u00d4\u00b4\u00d3\u00f2\u00d7\u00a8\u00d3\u00c3 -label.zone.dedicated=\u00d7\u00ca\u00d4\u00b4\u00d3\u00f2\u00d2\u00d1\u00d7\u00a8\u00d3\u00c3 -label.release.dedicated.zone=\u00ca\u00cd\u00b7\u00c5\u00d7\u00a8\u00d3\u00c3\u00d7\u00ca\u00d4\u00b4\u00d3\u00f2 +label.gslb.service=GSLB \u670d\u52a1 +label.gslb.service.public.ip=GSLB \u670d\u52a1\u516c\u7528 IP +label.gslb.service.private.ip=GSLB \u670d\u52a1\u4e13\u7528 IP +label.baremetal.dhcp.provider=\u88f8\u673a DHCP \u63d0\u4f9b\u7a0b\u5e8f +label.add.baremetal.dhcp.device=\u6dfb\u52a0\u88f8\u673a DHCP \u8bbe\u5907 +label.baremetal.pxe.provider=\u88f8\u673a PXE \u63d0\u4f9b\u7a0b\u5e8f +label.baremetal.pxe.device=\u6dfb\u52a0\u88f8\u673a PXE \u8bbe\u5907 +label.tftp.root.directory=Tftp \u6839\u76ee\u5f55 +label.add.vmware.datacenter=\u6dfb\u52a0 VMware \u6570\u636e\u4e2d\u5fc3 +label.remove.vmware.datacenter=\u5220\u9664 VMware \u6570\u636e\u4e2d\u5fc3 +label.dc.name=\u6570\u636e\u4e2d\u5fc3\u540d\u79f0 +label.vcenter=vCenter +label.dedicate.zone=\u5c06\u8d44\u6e90\u57df\u4e13\u7528 +label.zone.dedicated=\u8d44\u6e90\u57df\u5df2\u4e13\u7528 +label.release.dedicated.zone=\u91ca\u653e\u4e13\u7528\u8d44\u6e90\u57df label.ipv6.dns1=IPv6 DNS1 label.ipv6.dns2=IPv6 DNS2 -label.vmware.datacenter.name=VMware \u00ca\u00fd\u00be\u00dd\u00d6\u00d0\u00d0\u00c4\u00c3\u00fb\u00b3\u00c6 -label.vmware.datacenter.vcenter=VMware datacenter vcenter -label.vmware.datacenter.id=VMware datacenter ID -label.system.vm.details=\u00cf\u00b5\u00cd\u00b3 VM \u00cf\u00ea\u00cf\u00b8\u00d0\u00c5\u00cf\u00a2 -label.system.vm.scaled.up=\u00d2\u00d1\u00c0\u00a9\u00d5\u00b9\u00cf\u00b5\u00cd\u00b3 VM -label.console.proxy.vm=\u00bf\u00d8\u00d6\u00c6\u00cc\u00a8\u00b4\u00fa\u00c0\u00ed VM -label.settings=\u00c9\u00e8\u00d6\u00c3 -label.requires.upgrade=\u00d0\u00e8\u00d2\u00aa\u00c9\u00fd\u00bc\u00b6 -label.upgrade.router.newer.template=\u00c9\u00fd\u00bc\u00b6\u00c2\u00b7\u00d3\u00c9\u00c6\u00f7\u00d2\u00d4\u00ca\u00b9\u00d3\u00c3\u00b8\u00fc\u00d0\u00c2\u00b5\u00c4\u00c4\u00a3\u00b0\u00e5 -label.router.vm.scaled.up=\u00d2\u00d1\u00c0\u00a9\u00d5\u00b9\u00c2\u00b7\u00d3\u00c9\u00c6\u00f7 VM -label.total.virtual.routers=\u00d0\u00e9\u00c4\u00e2\u00c2\u00b7\u00d3\u00c9\u00c6\u00f7\u00d7\u00dc\u00ca\u00fd -label.upgrade.required=\u00d0\u00e8\u00d2\u00aa\u00c9\u00fd\u00bc\u00b6 -label.virtual.routers.group.zone=\u00d0\u00e9\u00c4\u00e2\u00c2\u00b7\u00d3\u00c9\u00c6\u00f7(\u00b0\u00b4\u00d7\u00ca\u00d4\u00b4\u00d3\u00f2\u00b7\u00d6\u00d7\u00e9) -label.total.virtual.routers.upgrade=\u00d0\u00e8\u00d2\u00aa\u00c9\u00fd\u00bc\u00b6\u00b5\u00c4\u00d0\u00e9\u00c4\u00e2\u00c2\u00b7\u00d3\u00c9\u00c6\u00f7\u00d7\u00dc\u00ca\u00fd -label.virtual.routers.group.pod=\u00d0\u00e9\u00c4\u00e2\u00c2\u00b7\u00d3\u00c9\u00c6\u00f7(\u00b0\u00b4\u00cc\u00e1\u00b9\u00a9\u00b5\u00e3\u00b7\u00d6\u00d7\u00e9) -label.virtual.routers.group.cluster=\u00d0\u00e9\u00c4\u00e2\u00c2\u00b7\u00d3\u00c9\u00c6\u00f7(\u00b0\u00b4\u00c8\u00ba\u00bc\u00af\u00b7\u00d6\u00d7\u00e9) -label.zone.lower=\u00d7\u00ca\u00d4\u00b4\u00d3\u00f2 -label.virtual.routers.group.account=\u00d0\u00e9\u00c4\u00e2\u00c2\u00b7\u00d3\u00c9\u00c6\u00f7(\u00b0\u00b4\u00d5\u00ca\u00bb\u00a7\u00b7\u00d6\u00d7\u00e9) -label.netscaler.details=NetScaler \u00cf\u00ea\u00cf\u00b8\u00d0\u00c5\u00cf\u00a2 -label.baremetal.dhcp.devices=\u00c2\u00e3\u00bb\u00fa DHCP \u00c9\u00e8\u00b1\u00b8 -label.baremetal.pxe.devices=\u00c2\u00e3\u00bb\u00fa PXE \u00c9\u00e8\u00b1\u00b8 -label.addes.new.f5=\u00d2\u00d1\u00cc\u00ed\u00bc\u00d3\u00d0\u00c2 F5 -label.f5.details=F5 \u00cf\u00ea\u00cf\u00b8\u00d0\u00c5\u00cf\u00a2 -label.srx.details=SRX \u00cf\u00ea\u00cf\u00b8\u00d0\u00c5\u00cf\u00a2 -label.palo.alto.details=Palo Alto \u00cf\u00ea\u00cf\u00b8\u00d0\u00c5\u00cf\u00a2 -label.added.nicira.nvp.controller=\u00d2\u00d1\u00cc\u00ed\u00bc\u00d3\u00d0\u00c2 Nicira NVP \u00bf\u00d8\u00d6\u00c6\u00c6\u00f7 -label.nicira.nvp.details=Nicira NVP \u00cf\u00ea\u00cf\u00b8\u00d0\u00c5\u00cf\u00a2 -label.added.brocade.vcs.switch=Added new Brocade Vcs Switch -label.brocade.vcs.details=Brocade Vcs Switch details -label.added.new.bigswitch.vns.controller=\u00d2\u00d1\u00cc\u00ed\u00bc\u00d3\u00d0\u00c2 BigSwitch VNS \u00bf\u00d8\u00d6\u00c6\u00c6\u00f7 -label.bigswitch.vns.details=BigSwitch VNS \u00cf\u00ea\u00cf\u00b8\u00d0\u00c5\u00cf\u00a2 -label.dedicate=\u00d7\u00a8\u00d3\u00c3 -label.dedicate.pod=\u00bd\u00ab\u00cc\u00e1\u00b9\u00a9\u00b5\u00e3\u00d7\u00a8\u00d3\u00c3 -label.pod.dedicated=\u00cc\u00e1\u00b9\u00a9\u00b5\u00e3\u00d2\u00d1\u00d7\u00a8\u00d3\u00c3 -label.release.dedicated.pod=\u00ca\u00cd\u00b7\u00c5\u00d7\u00a8\u00d3\u00c3\u00cc\u00e1\u00b9\u00a9\u00b5\u00e3 -label.override.public.traffic=\u00cc\u00e6\u00b4\u00fa\u00b9\u00ab\u00b9\u00b2\u00c1\u00f7\u00c1\u00bf -label.public.traffic.vswitch.type=\u00b9\u00ab\u00b9\u00b2\u00c1\u00f7\u00c1\u00bf\u00d0\u00e9\u00c4\u00e2\u00bd\u00bb\u00bb\u00bb\u00bb\u00fa\u00c0\u00e0\u00d0\u00cd -label.public.traffic.vswitch.name=\u00b9\u00ab\u00b9\u00b2\u00c1\u00f7\u00c1\u00bf\u00d0\u00e9\u00c4\u00e2\u00bd\u00bb\u00bb\u00bb\u00bb\u00fa\u00c3\u00fb\u00b3\u00c6 -label.override.guest.traffic=\u00cc\u00e6\u00b4\u00fa\u00c0\u00b4\u00b1\u00f6\u00c1\u00f7\u00c1\u00bf -label.guest.traffic.vswitch.type=\u00c0\u00b4\u00b1\u00f6\u00c1\u00f7\u00c1\u00bf\u00d0\u00e9\u00c4\u00e2\u00bd\u00bb\u00bb\u00bb\u00bb\u00fa\u00c0\u00e0\u00d0\u00cd -label.guest.traffic.vswitch.name=\u00c0\u00b4\u00b1\u00f6\u00c1\u00f7\u00c1\u00bf\u00d0\u00e9\u00c4\u00e2\u00bd\u00bb\u00bb\u00bb\u00bb\u00fa\u00c3\u00fb\u00b3\u00c6 -label.cisco.nexus1000v.ip.address=Nexus 1000v IP \u00b5\u00d8\u00d6\u00b7 -label.cisco.nexus1000v.username=Nexus 1000v \u00d3\u00c3\u00bb\u00a7\u00c3\u00fb -label.cisco.nexus1000v.password=Nexus 1000v \u00c3\u00dc\u00c2\u00eb -label.dedicate.cluster=\u00bd\u00ab\u00c8\u00ba\u00bc\u00af\u00d7\u00a8\u00d3\u00c3 -label.release.dedicated.cluster=\u00ca\u00cd\u00b7\u00c5\u00d7\u00a8\u00d3\u00c3\u00c8\u00ba\u00bc\u00af -label.dedicate.host=\u00bd\u00ab\u00d6\u00f7\u00bb\u00fa\u00d7\u00a8\u00d3\u00c3 -label.release.dedicated.host=\u00ca\u00cd\u00b7\u00c5\u00d7\u00a8\u00d3\u00c3\u00d6\u00f7\u00bb\u00fa -label.number.of.cpu.sockets=CPU \u00b2\u00e5\u00b2\u00db\u00ca\u00fd -label.delete.ucs.manager=\u00c9\u00be\u00b3\u00fd UCS Manager -label.blades=\u00b5\u00b6\u00c6\u00ac\u00ca\u00bd\u00b7\u00fe\u00ce\u00f1\u00c6\u00f7 -label.chassis=\u00bb\u00fa\u00cf\u00e4 -label.blade.id=\u00b5\u00b6\u00c6\u00ac\u00ca\u00bd\u00b7\u00fe\u00ce\u00f1\u00c6\u00f7 ID -label.associated.profile=\u00d2\u00d1\u00b9\u00d8\u00c1\u00aa\u00c5\u00e4\u00d6\u00c3\u00ce\u00c4\u00bc\u00fe -label.refresh.blades=\u00cb\u00a2\u00d0\u00c2\u00b5\u00b6\u00c6\u00ac\u00ca\u00bd\u00b7\u00fe\u00ce\u00f1\u00c6\u00f7 -label.instanciate.template.associate.profile.blade=\u00bd\u00ab\u00c4\u00a3\u00b0\u00e5\u00ca\u00b5\u00c0\u00fd\u00bb\u00af\u00b2\u00a2\u00bd\u00ab\u00c5\u00e4\u00d6\u00c3\u00ce\u00c4\u00bc\u00fe\u00d3\u00eb\u00b5\u00b6\u00c6\u00ac\u00ca\u00bd\u00b7\u00fe\u00ce\u00f1\u00c6\u00f7\u00b9\u00d8\u00c1\u00aa -label.select.template=\u00d1\u00a1\u00d4\u00f1\u00c4\u00a3\u00b0\u00e5 -label.profile=\u00c5\u00e4\u00d6\u00c3\u00ce\u00c4\u00bc\u00fe -label.delete.profile=\u00c9\u00be\u00b3\u00fd\u00c5\u00e4\u00d6\u00c3\u00ce\u00c4\u00bc\u00fe -label.disassociate.profile.blade=\u00c8\u00a1\u00cf\u00fb\u00bd\u00ab\u00c5\u00e4\u00d6\u00c3\u00ce\u00c4\u00bc\u00fe\u00d3\u00eb\u00b5\u00b6\u00c6\u00ac\u00ca\u00bd\u00b7\u00fe\u00ce\u00f1\u00c6\u00f7\u00b9\u00d8\u00c1\u00aa -label.secondary.storage.details=\u00b6\u00fe\u00bc\u00b6\u00b4\u00e6\u00b4\u00a2\u00cf\u00ea\u00cf\u00b8\u00d0\u00c5\u00cf\u00a2 -label.secondary.staging.store.details=\u00b6\u00fe\u00bc\u00b6\u00d4\u00dd\u00b4\u00e6\u00b4\u00e6\u00b4\u00a2\u00cf\u00ea\u00cf\u00b8\u00d0\u00c5\u00cf\u00a2 -label.add.nfs.secondary.staging.store=\u00cc\u00ed\u00bc\u00d3 NFS \u00b6\u00fe\u00bc\u00b6\u00d4\u00dd\u00b4\u00e6\u00b4\u00e6\u00b4\u00a2 -label.delete.secondary.staging.store=\u00c9\u00be\u00b3\u00fd\u00b6\u00fe\u00bc\u00b6\u00d4\u00dd\u00b4\u00e6\u00b4\u00e6\u00b4\u00a2 -label.ipv4.start.ip=IPv4 \u00c6\u00f0\u00ca\u00bc IP -label.ipv4.end.ip=IPv4 \u00bd\u00e1\u00ca\u00f8 IP -label.ipv6.start.ip=IPv6 \u00c6\u00f0\u00ca\u00bc IP -label.ipv6.end.ip=IPv6 \u00bd\u00e1\u00ca\u00f8 IP -label.vm.password=VM \u00b5\u00c4\u00c3\u00dc\u00c2\u00eb -label.group.by.zone=Group by zone -label.group.by.pod=Group by pod -label.group.by.cluster=Group by cluster -label.group.by.account=Group by account -label.no.grouping=(\u00ce\u00b4\u00b7\u00d6\u00d7\u00e9) -label.create.nfs.secondary.staging.storage=\u00b4\u00b4\u00bd\u00a8 NFS \u00b6\u00fe\u00bc\u00b6\u00d4\u00dd\u00b4\u00e6\u00b4\u00e6\u00b4\u00a2 -label.username.lower=\u00d3\u00c3\u00bb\u00a7\u00c3\u00fb -label.password.lower=\u00c3\u00dc\u00c2\u00eb -label.email.lower=\u00b5\u00e7\u00d7\u00d3\u00d3\u00ca\u00bc\u00fe -label.firstname.lower=\u00c3\u00fb\u00d7\u00d6 -label.lastname.lower=\u00d0\u00d5\u00ca\u00cf -label.domain.lower=\u00d3\u00f2 -label.account.lower=\u00d5\u00ca\u00bb\u00a7 -label.type.lower=\u00c0\u00e0\u00d0\u00cd -label.rule.number=\u00b9\u00e6\u00d4\u00f2\u00b1\u00e0\u00ba\u00c5 -label.action=\u00b2\u00d9\u00d7\u00f7 -label.name.lower=\u00c3\u00fb\u00b3\u00c6 +label.vmware.datacenter.name=VMware \u6570\u636e\u4e2d\u5fc3\u540d\u79f0 +label.vmware.datacenter.vcenter=VMware \u6570\u636e\u4e2d\u5fc3 vCenter +label.vmware.datacenter.id=VMware \u6570\u636e\u4e2d\u5fc3 ID +label.system.vm.details=\u7cfb\u7edf VM \u8be6\u7ec6\u4fe1\u606f +label.system.vm.scaled.up=\u5df2\u6269\u5c55\u7cfb\u7edf VM +label.console.proxy.vm=\u63a7\u5236\u53f0\u4ee3\u7406 VM +label.settings=\u8bbe\u7f6e +label.requires.upgrade=\u9700\u8981\u5347\u7ea7 +label.upgrade.router.newer.template=\u5347\u7ea7\u8def\u7531\u5668\u4ee5\u4f7f\u7528\u66f4\u65b0\u7684\u6a21\u677f +label.router.vm.scaled.up=\u5df2\u6269\u5c55\u8def\u7531\u5668 VM +label.total.virtual.routers=\u865a\u62df\u8def\u7531\u5668\u603b\u6570 +label.upgrade.required=\u9700\u8981\u5347\u7ea7 +label.virtual.routers.group.zone=\u865a\u62df\u8def\u7531\u5668(\u6309\u8d44\u6e90\u57df\u5206\u7ec4) +label.total.virtual.routers.upgrade=\u9700\u8981\u5347\u7ea7\u7684\u865a\u62df\u8def\u7531\u5668\u603b\u6570 +label.virtual.routers.group.pod=\u865a\u62df\u8def\u7531\u5668(\u6309\u63d0\u4f9b\u70b9\u5206\u7ec4) +label.virtual.routers.group.cluster=\u865a\u62df\u8def\u7531\u5668(\u6309\u7fa4\u96c6\u5206\u7ec4) +label.zone.lower=\u8d44\u6e90\u57df +label.virtual.routers.group.account=\u865a\u62df\u8def\u7531\u5668(\u6309\u5e10\u6237\u5206\u7ec4) +label.netscaler.details=NetScaler \u8be6\u7ec6\u4fe1\u606f +label.baremetal.dhcp.devices=\u88f8\u673a DHCP \u8bbe\u5907 +label.baremetal.pxe.devices=\u88f8\u673a PXE \u8bbe\u5907 +label.addes.new.f5=\u5df2\u6dfb\u52a0\u65b0 F5 +label.f5.details=F5 \u8be6\u7ec6\u4fe1\u606f +label.srx.details=SRX \u8be6\u7ec6\u4fe1\u606f +label.palo.alto.details=Palo Alto \u8be6\u7ec6\u4fe1\u606f +label.added.nicira.nvp.controller=\u5df2\u6dfb\u52a0\u65b0 Nicira NVP \u63a7\u5236\u5668 +label.nicira.nvp.details=Nicira NVP \u8be6\u7ec6\u4fe1\u606f +label.added.brocade.vcs.switch=\u5df2\u6dfb\u52a0\u65b0 Brocade Vcs \u4ea4\u6362\u673a +label.brocade.vcs.details=Brocade Vcs \u4ea4\u6362\u673a\u8be6\u7ec6\u4fe1\u606f +label.added.new.bigswitch.vns.controller=\u5df2\u6dfb\u52a0\u65b0 BigSwitch VNS \u63a7\u5236\u5668 +label.bigswitch.vns.details=BigSwitch VNS \u8be6\u7ec6\u4fe1\u606f +label.dedicate=\u4e13\u7528 +label.dedicate.pod=\u5c06\u63d0\u4f9b\u70b9\u4e13\u7528 +label.pod.dedicated=\u63d0\u4f9b\u70b9\u5df2\u4e13\u7528 +label.release.dedicated.pod=\u91ca\u653e\u4e13\u7528\u63d0\u4f9b\u70b9 +label.override.public.traffic=\u66ff\u4ee3\u516c\u5171\u6d41\u91cf +label.public.traffic.vswitch.type=\u516c\u5171\u6d41\u91cf\u865a\u62df\u4ea4\u6362\u673a\u7c7b\u578b +label.public.traffic.vswitch.name=\u516c\u5171\u6d41\u91cf\u865a\u62df\u4ea4\u6362\u673a\u540d\u79f0 +label.override.guest.traffic=\u66ff\u4ee3\u6765\u5bbe\u6d41\u91cf +label.guest.traffic.vswitch.type=\u6765\u5bbe\u6d41\u91cf\u865a\u62df\u4ea4\u6362\u673a\u7c7b\u578b +label.guest.traffic.vswitch.name=\u6765\u5bbe\u6d41\u91cf\u865a\u62df\u4ea4\u6362\u673a\u540d\u79f0 +label.cisco.nexus1000v.ip.address=Nexus 1000v IP \u5730\u5740 +label.cisco.nexus1000v.username=Nexus 1000v \u7528\u6237\u540d +label.cisco.nexus1000v.password=Nexus 1000v \u5bc6\u7801 +label.dedicate.cluster=\u5c06\u7fa4\u96c6\u4e13\u7528 +label.release.dedicated.cluster=\u91ca\u653e\u4e13\u7528\u7fa4\u96c6 +label.dedicate.host=\u5c06\u4e3b\u673a\u4e13\u7528 +label.release.dedicated.host=\u91ca\u653e\u4e13\u7528\u4e3b\u673a +label.number.of.cpu.sockets=CPU \u63d2\u69fd\u6570 +label.delete.ucs.manager=\u5220\u9664 UCS Manager +label.blades=\u5200\u7247\u5f0f\u670d\u52a1\u5668 +label.chassis=\u673a\u7bb1 +label.blade.id=\u5200\u7247\u5f0f\u670d\u52a1\u5668 ID +label.associated.profile=\u5df2\u5173\u8054\u914d\u7f6e\u6587\u4ef6 +label.refresh.blades=\u5237\u65b0\u5200\u7247\u5f0f\u670d\u52a1\u5668 +label.instanciate.template.associate.profile.blade=\u5c06\u6a21\u677f\u5b9e\u4f8b\u5316\u5e76\u5c06\u914d\u7f6e\u6587\u4ef6\u4e0e\u5200\u7247\u5f0f\u670d\u52a1\u5668\u5173\u8054 +label.select.template=\u9009\u62e9\u6a21\u677f +label.profile=\u914d\u7f6e\u6587\u4ef6 +label.delete.profile=\u5220\u9664\u914d\u7f6e\u6587\u4ef6 +label.disassociate.profile.blade=\u53d6\u6d88\u5c06\u914d\u7f6e\u6587\u4ef6\u4e0e\u5200\u7247\u5f0f\u670d\u52a1\u5668\u5173\u8054 +label.secondary.storage.details=\u4e8c\u7ea7\u5b58\u50a8\u8be6\u7ec6\u4fe1\u606f +label.secondary.staging.store.details=\u4e8c\u7ea7\u6682\u5b58\u5b58\u50a8\u8be6\u7ec6\u4fe1\u606f +label.add.nfs.secondary.staging.store=\u6dfb\u52a0 NFS \u4e8c\u7ea7\u6682\u5b58\u5b58\u50a8 +label.delete.secondary.staging.store=\u5220\u9664\u4e8c\u7ea7\u6682\u5b58\u5b58\u50a8 +label.ipv4.start.ip=IPv4 \u8d77\u59cb IP +label.ipv4.end.ip=IPv4 \u7ed3\u675f IP +label.ipv6.start.ip=IPv6 \u8d77\u59cb IP +label.ipv6.end.ip=IPv6 \u7ed3\u675f IP +label.vm.password=VM \u7684\u5bc6\u7801 +label.group.by.zone=\u6309\u8d44\u6e90\u57df\u5206\u7ec4 +label.group.by.pod=\u6309\u63d0\u4f9b\u70b9\u5206\u7ec4 +label.group.by.cluster=\u6309\u7fa4\u96c6\u5206\u7ec4 +label.group.by.account=\u6309\u5e10\u6237\u5206\u7ec4 +label.no.grouping=(\u672a\u5206\u7ec4) +label.create.nfs.secondary.staging.storage=\u521b\u5efa NFS \u4e8c\u7ea7\u6682\u5b58\u5b58\u50a8 +label.username.lower=\u7528\u6237\u540d +label.password.lower=\u5bc6\u7801 +label.email.lower=\u7535\u5b50\u90ae\u4ef6 +label.firstname.lower=\u540d\u5b57 +label.lastname.lower=\u59d3\u6c0f +label.domain.lower=\u57df +label.account.lower=\u5e10\u6237 +label.type.lower=\u7c7b\u578b +label.rule.number=\u89c4\u5219\u7f16\u53f7 +label.action=\u64cd\u4f5c +label.name.lower=\u540d\u79f0 label.ucs=UCS -label.change.affinity=\u00b8\u00fc\u00b8\u00c4\u00b9\u00d8\u00c1\u00aa\u00d0\u00d4 -label.persistent=\u00d3\u00c0\u00be\u00c3 -label.broadcasturi=\u00b9\u00e3\u00b2\u00a5 URI -label.network.cidr=\u00cd\u00f8\u00c2\u00e7 CIDR -label.reserved.ip.range=\u00d4\u00a4\u00c1\u00f4 IP \u00b7\u00b6\u00ce\u00a7 -label.autoscale=\u00d7\u00d4\u00b6\u00af\u00c0\u00a9\u00d5\u00b9 -label.health.check=\u00d4\u00cb\u00d0\u00d0\u00d7\u00b4\u00bf\u00f6\u00bc\u00ec\u00b2\u00e9 -label.public.load.balancer.provider=\u00b9\u00ab\u00d3\u00c3\u00b8\u00ba\u00d4\u00d8\u00c6\u00bd\u00ba\u00e2\u00c6\u00f7\u00cc\u00e1\u00b9\u00a9\u00b3\u00cc\u00d0\u00f2 -label.add.isolated.network=\u00cc\u00ed\u00bc\u00d3\u00b8\u00f4\u00c0\u00eb\u00cd\u00f8\u00c2\u00e7 +label.change.affinity=\u66f4\u6539\u5173\u8054\u6027 +label.persistent=\u6c38\u4e45 +label.broadcasturi=\u5e7f\u64ad URI +label.network.cidr=\u7f51\u7edc CIDR +label.reserved.ip.range=\u9884\u7559 IP \u8303\u56f4 +label.autoscale=\u81ea\u52a8\u6269\u5c55 +label.health.check=\u8fd0\u884c\u72b6\u51b5\u68c0\u67e5 +label.public.load.balancer.provider=\u516c\u7528\u8d1f\u8f7d\u5e73\u8861\u5668\u63d0\u4f9b\u7a0b\u5e8f +label.add.isolated.network=\u6dfb\u52a0\u9694\u79bb\u7f51\u7edc label.vlan=VLAN -label.secondary.isolated.vlan.id=\u00b6\u00fe\u00bc\u00b6\u00b8\u00f4\u00c0\u00eb VLAN ID -label.ipv4.netmask=IPv4 \u00cd\u00f8\u00c2\u00e7\u00d1\u00da\u00c2\u00eb -label.custom=\u00d7\u00d4\u00b6\u00a8\u00d2\u00e5 -label.disable.network.offering=\u00bd\u00fb\u00d3\u00c3\u00cd\u00f8\u00c2\u00e7\u00b7\u00bd\u00b0\u00b8 -label.enable.network.offering=\u00c6\u00f4\u00d3\u00c3\u00cd\u00f8\u00c2\u00e7\u00b7\u00bd\u00b0\u00b8 -label.remove.network.offering=\u00c9\u00be\u00b3\u00fd\u00cd\u00f8\u00c2\u00e7\u00b7\u00bd\u00b0\u00b8 -label.system.offering.for.router=\u00c2\u00b7\u00d3\u00c9\u00c6\u00f7\u00b5\u00c4\u00cf\u00b5\u00cd\u00b3\u00b7\u00bd\u00b0\u00b8 -label.mode=\u00c4\u00a3\u00ca\u00bd -label.associate.public.ip=\u00b9\u00d8\u00c1\u00aa\u00b9\u00ab\u00d3\u00c3 IP +label.secondary.isolated.vlan.id=\u4e8c\u7ea7\u9694\u79bb VLAN ID +label.ipv4.netmask=IPv4 \u7f51\u7edc\u63a9\u7801 +label.custom=\u81ea\u5b9a\u4e49 +label.disable.network.offering=\u7981\u7528\u7f51\u7edc\u65b9\u6848 +label.enable.network.offering=\u542f\u7528\u7f51\u7edc\u65b9\u6848 +label.remove.network.offering=\u5220\u9664\u7f51\u7edc\u65b9\u6848 +label.system.offering.for.router=\u8def\u7531\u5668\u7684\u7cfb\u7edf\u65b9\u6848 +label.mode=\u6a21\u5f0f +label.associate.public.ip=\u5173\u8054\u516c\u7528 IP label.acl=ACL -label.user.data=\u00d3\u00c3\u00bb\u00a7\u00ca\u00fd\u00be\u00dd -label.virtual.networking=\u00d0\u00e9\u00c4\u00e2\u00cd\u00f8\u00c2\u00e7\u00c1\u00ac\u00bd\u00d3 -label.allow=\u00d4\u00ca\u00d0\u00ed -label.deny=\u00be\u00dc\u00be\u00f8 -label.default.egress.policy=\u00c4\u00ac\u00c8\u00cf\u00b3\u00f6\u00bf\u00da\u00b9\u00e6\u00d4\u00f2 -label.xenserver.tools.version.61.plus=Original XS Version is 6.1\+ +label.user.data=\u7528\u6237\u6570\u636e +label.virtual.networking=\u865a\u62df\u7f51\u7edc\u8fde\u63a5 +label.allow=\u5141\u8bb8 +label.deny=\u62d2\u7edd +label.default.egress.policy=\u9ed8\u8ba4\u51fa\u53e3\u89c4\u5219 +label.xenserver.tools.version.61.plus=\u539f\u59cb XS \u7248\u672c\u4e3a 6.1\+ label.gpu=GPU -label.vgpu.type=vGPU \u00c0\u00e0\u00d0\u00cd -label.vgpu.video.ram=\u00ca\u00d3\u00c6\u00b5 RAM -label.vgpu.max.resolution=\u00d7\u00ee\u00b4\u00f3\u00b7\u00d6\u00b1\u00e6\u00c2\u00ca -label.vgpu.max.vgpu.per.gpu=\u00c3\u00bf\u00b8\u00f6 GPU \u00b5\u00c4 vGPU \u00ca\u00fd -label.vgpu.remaining.capacity=\u00ca\u00a3\u00d3\u00e0\u00c8\u00dd\u00c1\u00bf -managed.state=\u00cd\u00d0\u00b9\u00dc\u00d7\u00b4\u00cc\u00ac -message.acquire.new.ip.vpc=\u00c7\u00eb\u00c8\u00b7\u00c8\u00cf\u00c4\u00fa\u00c8\u00b7\u00ca\u00b5\u00d2\u00aa\u00ce\u00aa\u00b4\u00cb VPC \u00bb\u00f1\u00c8\u00a1\u00d2\u00bb\u00b8\u00f6\u00d0\u00c2 IP\u00a1\u00a3 -message.acquire.new.ip=\u00c7\u00eb\u00c8\u00b7\u00c8\u00cf\u00c4\u00fa\u00c8\u00b7\u00ca\u00b5\u00d2\u00aa\u00ce\u00aa\u00b4\u00cb\u00cd\u00f8\u00c2\u00e7\u00bb\u00f1\u00c8\u00a1\u00d2\u00bb\u00b8\u00f6\u00d0\u00c2 IP\u00a1\u00a3 -message.acquire.public.ip=\u00c7\u00eb\u00d1\u00a1\u00d4\u00f1\u00d2\u00bb\u00b8\u00f6\u00d2\u00aa\u00b4\u00d3\u00d6\u00d0\u00bb\u00f1\u00c8\u00a1\u00d0\u00c2 IP \u00b5\u00c4\u00d7\u00ca\u00d4\u00b4\u00d3\u00f2\u00a1\u00a3 -message.action.cancel.maintenance.mode=\u00c7\u00eb\u00c8\u00b7\u00c8\u00cf\u00c4\u00fa\u00c8\u00b7\u00ca\u00b5\u00d2\u00aa\u00c8\u00a1\u00cf\u00fb\u00b4\u00cb\u00ce\u00ac\u00bb\u00a4\u00c4\u00a3\u00ca\u00bd\u00a1\u00a3 -message.action.cancel.maintenance=\u00d2\u00d1\u00b3\u00c9\u00b9\u00a6\u00c8\u00a1\u00cf\u00fb\u00ce\u00ac\u00bb\u00a4\u00c4\u00fa\u00b5\u00c4\u00d6\u00f7\u00bb\u00fa\u00a1\u00a3\u00b4\u00cb\u00b9\u00fd\u00b3\u00cc\u00bf\u00c9\u00c4\u00dc\u00d0\u00e8\u00d2\u00aa\u00b3\u00a4\u00b4\u00ef\u00bc\u00b8\u00b7\u00d6\u00d6\u00d3\u00ca\u00b1\u00bc\u00e4\u00a1\u00a3 -message.action.change.service.warning.for.instance=\u00b1\u00d8\u00d0\u00eb\u00cf\u00c8\u00bd\u00fb\u00d3\u00c3\u00c4\u00fa\u00b5\u00c4\u00ca\u00b5\u00c0\u00fd\u00a3\u00ac\u00c8\u00bb\u00ba\u00f3\u00d4\u00d9\u00b3\u00a2\u00ca\u00d4\u00b8\u00fc\u00b8\u00c4\u00c6\u00e4\u00b5\u00b1\u00c7\u00b0\u00b5\u00c4\u00b7\u00fe\u00ce\u00f1\u00b7\u00bd\u00b0\u00b8\u00a1\u00a3 -message.action.change.service.warning.for.router=\u00b1\u00d8\u00d0\u00eb\u00cf\u00c8\u00cd\u00a3\u00d6\u00b9\u00c4\u00fa\u00b5\u00c4\u00c2\u00b7\u00d3\u00c9\u00c6\u00f7\u00a3\u00ac\u00c8\u00bb\u00ba\u00f3\u00d4\u00d9\u00b3\u00a2\u00ca\u00d4\u00b8\u00fc\u00b8\u00c4\u00c6\u00e4\u00b5\u00b1\u00c7\u00b0\u00b5\u00c4\u00b7\u00fe\u00ce\u00f1\u00b7\u00bd\u00b0\u00b8\u00a1\u00a3 -message.action.delete.cluster=\u00c7\u00eb\u00c8\u00b7\u00c8\u00cf\u00c4\u00fa\u00c8\u00b7\u00ca\u00b5\u00d2\u00aa\u00c9\u00be\u00b3\u00fd\u00b4\u00cb\u00c8\u00ba\u00bc\u00af\u00a1\u00a3 -message.action.delete.disk.offering=\u00c7\u00eb\u00c8\u00b7\u00c8\u00cf\u00c4\u00fa\u00c8\u00b7\u00ca\u00b5\u00d2\u00aa\u00c9\u00be\u00b3\u00fd\u00b4\u00cb\u00b4\u00c5\u00c5\u00cc\u00b7\u00bd\u00b0\u00b8\u00a1\u00a3 -message.action.delete.domain=\u00c7\u00eb\u00c8\u00b7\u00c8\u00cf\u00c4\u00fa\u00c8\u00b7\u00ca\u00b5\u00d2\u00aa\u00c9\u00be\u00b3\u00fd\u00b4\u00cb\u00d3\u00f2\u00a1\u00a3 -message.action.delete.external.firewall=\u00c7\u00eb\u00c8\u00b7\u00c8\u00cf\u00c4\u00fa\u00c8\u00b7\u00ca\u00b5\u00d2\u00aa\u00c9\u00be\u00b3\u00fd\u00b4\u00cb\u00cd\u00e2\u00b2\u00bf\u00b7\u00c0\u00bb\u00f0\u00c7\u00bd\u00a1\u00a3\u00be\u00af\u00b8\u00e6\: \u00c8\u00e7\u00b9\u00fb\u00c4\u00fa\u00bc\u00c6\u00bb\u00ae\u00d6\u00d8\u00d0\u00c2\u00cc\u00ed\u00bc\u00d3\u00cd\u00ac\u00d2\u00bb\u00b8\u00f6\u00cd\u00e2\u00b2\u00bf\u00b7\u00c0\u00bb\u00f0\u00c7\u00bd\u00a3\u00ac\u00d4\u00f2\u00b1\u00d8\u00d0\u00eb\u00d4\u00da\u00c9\u00e8\u00b1\u00b8\u00c9\u00cf\u00d6\u00d8\u00d6\u00c3\u00ca\u00b9\u00d3\u00c3\u00ca\u00fd\u00be\u00dd\u00a1\u00a3 -message.action.delete.external.load.balancer=\u00c7\u00eb\u00c8\u00b7\u00c8\u00cf\u00c4\u00fa\u00c8\u00b7\u00ca\u00b5\u00d2\u00aa\u00c9\u00be\u00b3\u00fd\u00b4\u00cb\u00cd\u00e2\u00b2\u00bf\u00b8\u00ba\u00d4\u00d8\u00c6\u00bd\u00ba\u00e2\u00c6\u00f7\u00a1\u00a3\u00be\u00af\u00b8\u00e6\: \u00c8\u00e7\u00b9\u00fb\u00c4\u00fa\u00bc\u00c6\u00bb\u00ae\u00d6\u00d8\u00d0\u00c2\u00cc\u00ed\u00bc\u00d3\u00cd\u00ac\u00d2\u00bb\u00b8\u00f6\u00cd\u00e2\u00b2\u00bf\u00b8\u00ba\u00d4\u00d8\u00c6\u00bd\u00ba\u00e2\u00c6\u00f7\u00a3\u00ac\u00d4\u00f2\u00b1\u00d8\u00d0\u00eb\u00d4\u00da\u00c9\u00e8\u00b1\u00b8\u00c9\u00cf\u00d6\u00d8\u00d6\u00c3\u00ca\u00b9\u00d3\u00c3\u00ca\u00fd\u00be\u00dd\u00a1\u00a3 -message.action.delete.ingress.rule=\u00c7\u00eb\u00c8\u00b7\u00c8\u00cf\u00c4\u00fa\u00c8\u00b7\u00ca\u00b5\u00d2\u00aa\u00c9\u00be\u00b3\u00fd\u00b4\u00cb\u00c8\u00eb\u00bf\u00da\u00b9\u00e6\u00d4\u00f2\u00a1\u00a3 -message.action.delete.ISO.for.all.zones=\u00b4\u00cb ISO \u00d3\u00c9\u00cb\u00f9\u00d3\u00d0\u00d7\u00ca\u00d4\u00b4\u00d3\u00f2\u00ca\u00b9\u00d3\u00c3\u00a1\u00a3\u00c7\u00eb\u00c8\u00b7\u00c8\u00cf\u00c4\u00fa\u00c8\u00b7\u00ca\u00b5\u00d2\u00aa\u00bd\u00ab\u00c6\u00e4\u00b4\u00d3\u00cb\u00f9\u00d3\u00d0\u00d7\u00ca\u00d4\u00b4\u00d3\u00f2\u00d6\u00d0\u00c9\u00be\u00b3\u00fd\u00a1\u00a3 -message.action.delete.ISO=\u00c7\u00eb\u00c8\u00b7\u00c8\u00cf\u00c4\u00fa\u00c8\u00b7\u00ca\u00b5\u00d2\u00aa\u00c9\u00be\u00b3\u00fd\u00b4\u00cb ISO\u00a1\u00a3 -message.action.delete.network=\u00c7\u00eb\u00c8\u00b7\u00c8\u00cf\u00c4\u00fa\u00c8\u00b7\u00ca\u00b5\u00d2\u00aa\u00c9\u00be\u00b3\u00fd\u00b4\u00cb\u00cd\u00f8\u00c2\u00e7\u00a1\u00a3 -message.action.delete.nexusVswitch=\u00c7\u00eb\u00c8\u00b7\u00c8\u00cf\u00c4\u00fa\u00c8\u00b7\u00ca\u00b5\u00d2\u00aa\u00c9\u00be\u00b3\u00fd\u00b4\u00cb Nexus 1000v -message.action.delete.physical.network=\u00c7\u00eb\u00c8\u00b7\u00c8\u00cf\u00c4\u00fa\u00c8\u00b7\u00ca\u00b5\u00d2\u00aa\u00c9\u00be\u00b3\u00fd\u00b4\u00cb\u00ce\u00ef\u00c0\u00ed\u00cd\u00f8\u00c2\u00e7 -message.action.delete.pod=\u00c7\u00eb\u00c8\u00b7\u00c8\u00cf\u00c4\u00fa\u00c8\u00b7\u00ca\u00b5\u00d2\u00aa\u00c9\u00be\u00b3\u00fd\u00b4\u00cb\u00cc\u00e1\u00b9\u00a9\u00b5\u00e3\u00a1\u00a3 -message.action.delete.primary.storage=\u00c7\u00eb\u00c8\u00b7\u00c8\u00cf\u00c4\u00fa\u00c8\u00b7\u00ca\u00b5\u00d2\u00aa\u00c9\u00be\u00b3\u00fd\u00b4\u00cb\u00d6\u00f7\u00b4\u00e6\u00b4\u00a2\u00a1\u00a3 -message.action.delete.secondary.storage=\u00c7\u00eb\u00c8\u00b7\u00c8\u00cf\u00c4\u00fa\u00c8\u00b7\u00ca\u00b5\u00d2\u00aa\u00c9\u00be\u00b3\u00fd\u00b4\u00cb\u00b6\u00fe\u00bc\u00b6\u00b4\u00e6\u00b4\u00a2\u00a1\u00a3 -message.action.delete.security.group=\u00c7\u00eb\u00c8\u00b7\u00c8\u00cf\u00c4\u00fa\u00c8\u00b7\u00ca\u00b5\u00d2\u00aa\u00c9\u00be\u00b3\u00fd\u00b4\u00cb\u00b0\u00b2\u00c8\u00ab\u00d7\u00e9\u00a1\u00a3 -message.action.delete.service.offering=\u00c7\u00eb\u00c8\u00b7\u00c8\u00cf\u00c4\u00fa\u00c8\u00b7\u00ca\u00b5\u00d2\u00aa\u00c9\u00be\u00b3\u00fd\u00b4\u00cb\u00b7\u00fe\u00ce\u00f1\u00b7\u00bd\u00b0\u00b8\u00a1\u00a3 -message.action.delete.snapshot=\u00c7\u00eb\u00c8\u00b7\u00c8\u00cf\u00c4\u00fa\u00c8\u00b7\u00ca\u00b5\u00d2\u00aa\u00c9\u00be\u00b3\u00fd\u00b4\u00cb\u00bf\u00ec\u00d5\u00d5\u00a1\u00a3 -message.action.delete.system.service.offering=\u00c7\u00eb\u00c8\u00b7\u00c8\u00cf\u00c4\u00fa\u00c8\u00b7\u00ca\u00b5\u00d2\u00aa\u00c9\u00be\u00b3\u00fd\u00b4\u00cb\u00cf\u00b5\u00cd\u00b3\u00b7\u00fe\u00ce\u00f1\u00b7\u00bd\u00b0\u00b8\u00a1\u00a3 -message.action.delete.template.for.all.zones=\u00b4\u00cb\u00c4\u00a3\u00b0\u00e5\u00d3\u00c9\u00cb\u00f9\u00d3\u00d0\u00d7\u00ca\u00d4\u00b4\u00d3\u00f2\u00ca\u00b9\u00d3\u00c3\u00a1\u00a3\u00c7\u00eb\u00c8\u00b7\u00c8\u00cf\u00c4\u00fa\u00c8\u00b7\u00ca\u00b5\u00d2\u00aa\u00bd\u00ab\u00c6\u00e4\u00b4\u00d3\u00cb\u00f9\u00d3\u00d0\u00d7\u00ca\u00d4\u00b4\u00d3\u00f2\u00d6\u00d0\u00c9\u00be\u00b3\u00fd\u00a1\u00a3 -message.action.delete.template=\u00c7\u00eb\u00c8\u00b7\u00c8\u00cf\u00c4\u00fa\u00c8\u00b7\u00ca\u00b5\u00d2\u00aa\u00c9\u00be\u00b3\u00fd\u00b4\u00cb\u00c4\u00a3\u00b0\u00e5\u00a1\u00a3 -message.action.delete.volume=\u00c7\u00eb\u00c8\u00b7\u00c8\u00cf\u00c4\u00fa\u00c8\u00b7\u00ca\u00b5\u00d2\u00aa\u00c9\u00be\u00b3\u00fd\u00b4\u00cb\u00be\u00ed\u00a1\u00a3 -message.action.delete.zone=\u00c7\u00eb\u00c8\u00b7\u00c8\u00cf\u00c4\u00fa\u00c8\u00b7\u00ca\u00b5\u00d2\u00aa\u00c9\u00be\u00b3\u00fd\u00b4\u00cb\u00d7\u00ca\u00d4\u00b4\u00d3\u00f2\u00a1\u00a3 -message.action.destroy.instance=\u00c7\u00eb\u00c8\u00b7\u00c8\u00cf\u00c4\u00fa\u00c8\u00b7\u00ca\u00b5\u00d2\u00aa\u00cf\u00fa\u00bb\u00d9\u00b4\u00cb\u00ca\u00b5\u00c0\u00fd\u00a1\u00a3 -message.action.destroy.systemvm=\u00c7\u00eb\u00c8\u00b7\u00c8\u00cf\u00c4\u00fa\u00c8\u00b7\u00ca\u00b5\u00d2\u00aa\u00cf\u00fa\u00bb\u00d9\u00b4\u00cb\u00cf\u00b5\u00cd\u00b3 VM\u00a1\u00a3 -message.action.disable.cluster=\u00c7\u00eb\u00c8\u00b7\u00c8\u00cf\u00c4\u00fa\u00c8\u00b7\u00ca\u00b5\u00d2\u00aa\u00bd\u00fb\u00d3\u00c3\u00b4\u00cb\u00c8\u00ba\u00bc\u00af\u00a1\u00a3 -message.action.disable.nexusVswitch=\u00c7\u00eb\u00c8\u00b7\u00c8\u00cf\u00c4\u00fa\u00c8\u00b7\u00ca\u00b5\u00d2\u00aa\u00bd\u00fb\u00d3\u00c3\u00b4\u00cb Nexus 1000v -message.action.disable.physical.network=\u00c7\u00eb\u00c8\u00b7\u00c8\u00cf\u00c4\u00fa\u00c8\u00b7\u00ca\u00b5\u00d2\u00aa\u00bd\u00fb\u00d3\u00c3\u00b4\u00cb\u00ce\u00ef\u00c0\u00ed\u00cd\u00f8\u00c2\u00e7\u00a1\u00a3 -message.action.disable.pod=\u00c7\u00eb\u00c8\u00b7\u00c8\u00cf\u00c4\u00fa\u00c8\u00b7\u00ca\u00b5\u00d2\u00aa\u00bd\u00fb\u00d3\u00c3\u00b4\u00cb\u00cc\u00e1\u00b9\u00a9\u00b5\u00e3\u00a1\u00a3 -message.action.disable.static.NAT=\u00c7\u00eb\u00c8\u00b7\u00c8\u00cf\u00c4\u00fa\u00c8\u00b7\u00ca\u00b5\u00d2\u00aa\u00bd\u00fb\u00d3\u00c3\u00be\u00b2\u00cc\u00ac NAT\u00a1\u00a3 -message.action.disable.zone=\u00c7\u00eb\u00c8\u00b7\u00c8\u00cf\u00c4\u00fa\u00c8\u00b7\u00ca\u00b5\u00d2\u00aa\u00bd\u00fb\u00d3\u00c3\u00b4\u00cb\u00d7\u00ca\u00d4\u00b4\u00d3\u00f2\u00a1\u00a3 -message.action.download.iso=\u00c7\u00eb\u00c8\u00b7\u00c8\u00cf\u00c4\u00fa\u00c8\u00b7\u00ca\u00b5\u00d2\u00aa\u00cf\u00c2\u00d4\u00d8\u00b4\u00cb ISO\u00a1\u00a3 -message.action.download.template=\u00c7\u00eb\u00c8\u00b7\u00c8\u00cf\u00c4\u00fa\u00c8\u00b7\u00ca\u00b5\u00d2\u00aa\u00cf\u00c2\u00d4\u00d8\u00b4\u00cb\u00c4\u00a3\u00b0\u00e5\u00a1\u00a3 -message.action.enable.cluster=\u00c7\u00eb\u00c8\u00b7\u00c8\u00cf\u00c4\u00fa\u00c8\u00b7\u00ca\u00b5\u00d2\u00aa\u00c6\u00f4\u00d3\u00c3\u00b4\u00cb\u00c8\u00ba\u00bc\u00af\u00a1\u00a3 -message.action.enable.maintenance=\u00d2\u00d1\u00b3\u00c9\u00b9\u00a6\u00d7\u00bc\u00b1\u00b8\u00ba\u00c3\u00ce\u00ac\u00bb\u00a4\u00c4\u00fa\u00b5\u00c4\u00d6\u00f7\u00bb\u00fa\u00a1\u00a3\u00b4\u00cb\u00b9\u00fd\u00b3\u00cc\u00bf\u00c9\u00c4\u00dc\u00d0\u00e8\u00d2\u00aa\u00b3\u00a4\u00b4\u00ef\u00bc\u00b8\u00b7\u00d6\u00d6\u00d3\u00bb\u00f2\u00b8\u00fc\u00b3\u00a4\u00ca\u00b1\u00bc\u00e4\u00a3\u00ac\u00be\u00df\u00cc\u00e5\u00c8\u00a1\u00be\u00f6\u00d3\u00da\u00b5\u00b1\u00c7\u00b0\u00b4\u00cb\u00d6\u00f7\u00bb\u00fa\u00c9\u00cf\u00b5\u00c4 VM \u00ca\u00fd\u00c1\u00bf\u00a1\u00a3 -message.action.enable.nexusVswitch=\u00c7\u00eb\u00c8\u00b7\u00c8\u00cf\u00c4\u00fa\u00c8\u00b7\u00ca\u00b5\u00d2\u00aa\u00c6\u00f4\u00d3\u00c3\u00b4\u00cb Nexus 1000v -message.action.enable.physical.network=\u00c7\u00eb\u00c8\u00b7\u00c8\u00cf\u00c4\u00fa\u00c8\u00b7\u00ca\u00b5\u00d2\u00aa\u00c6\u00f4\u00d3\u00c3\u00b4\u00cb\u00ce\u00ef\u00c0\u00ed\u00cd\u00f8\u00c2\u00e7\u00a1\u00a3 -message.action.enable.pod=\u00c7\u00eb\u00c8\u00b7\u00c8\u00cf\u00c4\u00fa\u00c8\u00b7\u00ca\u00b5\u00d2\u00aa\u00c6\u00f4\u00d3\u00c3\u00b4\u00cb\u00cc\u00e1\u00b9\u00a9\u00b5\u00e3\u00a1\u00a3 -message.action.enable.zone=\u00c7\u00eb\u00c8\u00b7\u00c8\u00cf\u00c4\u00fa\u00c8\u00b7\u00ca\u00b5\u00d2\u00aa\u00c6\u00f4\u00d3\u00c3\u00b4\u00cb\u00d7\u00ca\u00d4\u00b4\u00d3\u00f2\u00a1\u00a3 -message.action.expunge.instance=\u00c7\u00eb\u00c8\u00b7\u00c8\u00cf\u00c4\u00fa\u00c8\u00b7\u00ca\u00b5\u00d2\u00aa\u00c9\u00be\u00b3\u00fd\u00b4\u00cb\u00ca\u00b5\u00c0\u00fd\u00a1\u00a3 -message.action.force.reconnect=\u00d2\u00d1\u00b3\u00c9\u00b9\u00a6\u00c7\u00bf\u00d6\u00c6\u00d6\u00d8\u00d0\u00c2\u00c1\u00ac\u00bd\u00d3\u00c4\u00fa\u00b5\u00c4\u00d6\u00f7\u00bb\u00fa\u00a1\u00a3\u00b4\u00cb\u00b9\u00fd\u00b3\u00cc\u00bf\u00c9\u00c4\u00dc\u00d0\u00e8\u00d2\u00aa\u00b3\u00a4\u00b4\u00ef\u00bc\u00b8\u00b7\u00d6\u00d6\u00d3\u00ca\u00b1\u00bc\u00e4\u00a1\u00a3 -message.action.host.enable.maintenance.mode=\u00c6\u00f4\u00d3\u00c3\u00ce\u00ac\u00bb\u00a4\u00c4\u00a3\u00ca\u00bd\u00bb\u00e1\u00b5\u00bc\u00d6\u00c2\u00bd\u00ab\u00b4\u00cb\u00d6\u00f7\u00bb\u00fa\u00c9\u00cf\u00d5\u00fd\u00d4\u00da\u00d4\u00cb\u00d0\u00d0\u00b5\u00c4\u00cb\u00f9\u00d3\u00d0\u00ca\u00b5\u00c0\u00fd\u00ca\u00b5\u00ca\u00b1\u00c7\u00a8\u00d2\u00c6\u00b5\u00bd\u00c8\u00ce\u00ba\u00ce\u00bf\u00c9\u00d3\u00c3\u00b5\u00c4\u00d6\u00f7\u00bb\u00fa\u00a1\u00a3 -message.action.instance.reset.password=\u00c7\u00eb\u00c8\u00b7\u00c8\u00cf\u00c4\u00fa\u00c8\u00b7\u00ca\u00b5\u00d2\u00aa\u00b8\u00fc\u00b8\u00c4\u00b4\u00cb\u00d0\u00e9\u00c4\u00e2\u00bb\u00fa\u00b5\u00c4 ROOT \u00d3\u00c3\u00bb\u00a7\u00c3\u00dc\u00c2\u00eb\u00a1\u00a3 -message.action.manage.cluster=\u00c7\u00eb\u00c8\u00b7\u00c8\u00cf\u00c4\u00fa\u00c8\u00b7\u00ca\u00b5\u00d2\u00aa\u00cd\u00d0\u00b9\u00dc\u00b4\u00cb\u00c8\u00ba\u00bc\u00af\u00a1\u00a3 -message.action.primarystorage.enable.maintenance.mode=\u00be\u00af\u00b8\u00e6\: \u00bd\u00ab\u00d6\u00f7\u00b4\u00e6\u00b4\u00a2\u00d6\u00c3\u00d3\u00da\u00ce\u00ac\u00bb\u00a4\u00c4\u00a3\u00ca\u00bd\u00bd\u00ab\u00b5\u00bc\u00d6\u00c2\u00ca\u00b9\u00d3\u00c3\u00d6\u00f7\u00b4\u00e6\u00b4\u00a2\u00d6\u00d0\u00b5\u00c4\u00be\u00ed\u00b5\u00c4\u00cb\u00f9\u00d3\u00d0 VM \u00cd\u00a3\u00d6\u00b9\u00d4\u00cb\u00d0\u00d0\u00a1\u00a3\u00ca\u00c7\u00b7\u00f1\u00d2\u00aa\u00bc\u00cc\u00d0\u00f8? -message.action.reboot.instance=\u00c7\u00eb\u00c8\u00b7\u00c8\u00cf\u00c4\u00fa\u00c8\u00b7\u00ca\u00b5\u00d2\u00aa\u00d6\u00d8\u00d0\u00c2\u00c6\u00f4\u00b6\u00af\u00b4\u00cb\u00ca\u00b5\u00c0\u00fd\u00a1\u00a3 -message.action.reboot.router=\u00b4\u00cb\u00d0\u00e9\u00c4\u00e2\u00c2\u00b7\u00d3\u00c9\u00c6\u00f7\u00cc\u00e1\u00b9\u00a9\u00b5\u00c4\u00cb\u00f9\u00d3\u00d0\u00b7\u00fe\u00ce\u00f1\u00b6\u00bc\u00bd\u00ab\u00d6\u00d0\u00b6\u00cf\u00a1\u00a3\u00c7\u00eb\u00c8\u00b7\u00c8\u00cf\u00c4\u00fa\u00c8\u00b7\u00ca\u00b5\u00d2\u00aa\u00d6\u00d8\u00d0\u00c2\u00c6\u00f4\u00b6\u00af\u00b4\u00cb\u00c2\u00b7\u00d3\u00c9\u00c6\u00f7\u00a1\u00a3 -message.action.reboot.systemvm=\u00c7\u00eb\u00c8\u00b7\u00c8\u00cf\u00c4\u00fa\u00c8\u00b7\u00ca\u00b5\u00d2\u00aa\u00d6\u00d8\u00d0\u00c2\u00c6\u00f4\u00b6\u00af\u00b4\u00cb\u00cf\u00b5\u00cd\u00b3 VM\u00a1\u00a3 -message.action.release.ip=\u00c7\u00eb\u00c8\u00b7\u00c8\u00cf\u00c4\u00fa\u00c8\u00b7\u00ca\u00b5\u00d2\u00aa\u00ca\u00cd\u00b7\u00c5\u00b4\u00cb IP\u00a1\u00a3 -message.action.remove.host=\u00c7\u00eb\u00c8\u00b7\u00c8\u00cf\u00c4\u00fa\u00c8\u00b7\u00ca\u00b5\u00d2\u00aa\u00c9\u00be\u00b3\u00fd\u00b4\u00cb\u00d6\u00f7\u00bb\u00fa\u00a1\u00a3 -message.action.reset.password.off=\u00c4\u00fa\u00b5\u00c4\u00ca\u00b5\u00c0\u00fd\u00b5\u00b1\u00c7\u00b0\u00b2\u00bb\u00d6\u00a7\u00b3\u00d6\u00b4\u00cb\u00b9\u00a6\u00c4\u00dc\u00a1\u00a3 -message.action.reset.password.warning=\u00b1\u00d8\u00d0\u00eb\u00cf\u00c8\u00cd\u00a3\u00d6\u00b9\u00c4\u00fa\u00b5\u00c4\u00ca\u00b5\u00c0\u00fd\u00a3\u00ac\u00c8\u00bb\u00ba\u00f3\u00d4\u00d9\u00b3\u00a2\u00ca\u00d4\u00b8\u00fc\u00b8\u00c4\u00c6\u00e4\u00b5\u00b1\u00c7\u00b0\u00b5\u00c4\u00c3\u00dc\u00c2\u00eb\u00a1\u00a3 -message.action.restore.instance=\u00c7\u00eb\u00c8\u00b7\u00c8\u00cf\u00c4\u00fa\u00c8\u00b7\u00ca\u00b5\u00d2\u00aa\u00bb\u00b9\u00d4\u00ad\u00b4\u00cb\u00ca\u00b5\u00c0\u00fd\u00a1\u00a3 -message.action.start.instance=\u00c7\u00eb\u00c8\u00b7\u00c8\u00cf\u00c4\u00fa\u00c8\u00b7\u00ca\u00b5\u00d2\u00aa\u00c6\u00f4\u00b6\u00af\u00b4\u00cb\u00ca\u00b5\u00c0\u00fd\u00a1\u00a3 -message.action.start.router=\u00c7\u00eb\u00c8\u00b7\u00c8\u00cf\u00c4\u00fa\u00c8\u00b7\u00ca\u00b5\u00d2\u00aa\u00c6\u00f4\u00b6\u00af\u00b4\u00cb\u00c2\u00b7\u00d3\u00c9\u00c6\u00f7\u00a1\u00a3 -message.action.start.systemvm=\u00c7\u00eb\u00c8\u00b7\u00c8\u00cf\u00c4\u00fa\u00c8\u00b7\u00ca\u00b5\u00d2\u00aa\u00c6\u00f4\u00b6\u00af\u00b4\u00cb\u00cf\u00b5\u00cd\u00b3 VM\u00a1\u00a3 -message.action.stop.instance=\u00c7\u00eb\u00c8\u00b7\u00c8\u00cf\u00c4\u00fa\u00c8\u00b7\u00ca\u00b5\u00d2\u00aa\u00cd\u00a3\u00d6\u00b9\u00b4\u00cb\u00ca\u00b5\u00c0\u00fd\u00a1\u00a3 -message.action.stop.router=\u00b4\u00cb\u00d0\u00e9\u00c4\u00e2\u00c2\u00b7\u00d3\u00c9\u00c6\u00f7\u00cc\u00e1\u00b9\u00a9\u00b5\u00c4\u00cb\u00f9\u00d3\u00d0\u00b7\u00fe\u00ce\u00f1\u00b6\u00bc\u00bd\u00ab\u00d6\u00d0\u00b6\u00cf\u00a1\u00a3\u00c7\u00eb\u00c8\u00b7\u00c8\u00cf\u00c4\u00fa\u00c8\u00b7\u00ca\u00b5\u00d2\u00aa\u00cd\u00a3\u00d6\u00b9\u00b4\u00cb\u00c2\u00b7\u00d3\u00c9\u00c6\u00f7\u00a1\u00a3 -message.action.stop.systemvm=\u00c7\u00eb\u00c8\u00b7\u00c8\u00cf\u00c4\u00fa\u00c8\u00b7\u00ca\u00b5\u00d2\u00aa\u00cd\u00a3\u00d6\u00b9\u00b4\u00cb\u00cf\u00b5\u00cd\u00b3 VM\u00a1\u00a3 -message.action.take.snapshot=\u00c7\u00eb\u00c8\u00b7\u00c8\u00cf\u00c4\u00fa\u00c8\u00b7\u00ca\u00b5\u00d2\u00aa\u00b4\u00b4\u00bd\u00a8\u00b4\u00cb\u00be\u00ed\u00b5\u00c4\u00bf\u00ec\u00d5\u00d5\u00a1\u00a3 -message.action.revert.snapshot=\u00c7\u00eb\u00c8\u00b7\u00c8\u00cf\u00c4\u00fa\u00c8\u00b7\u00ca\u00b5\u00d2\u00aa\u00bd\u00ab\u00d3\u00b5\u00d3\u00d0\u00b5\u00c4\u00be\u00ed\u00bb\u00b9\u00d4\u00ad\u00ce\u00aa\u00b4\u00cb\u00bf\u00ec\u00d5\u00d5\u00a1\u00a3 -message.action.unmanage.cluster=\u00c7\u00eb\u00c8\u00b7\u00c8\u00cf\u00c4\u00fa\u00c8\u00b7\u00ca\u00b5\u00d2\u00aa\u00c8\u00a1\u00cf\u00fb\u00cd\u00d0\u00b9\u00dc\u00b4\u00cb\u00c8\u00ba\u00bc\u00af\u00a1\u00a3 -message.action.vmsnapshot.delete=\u00c7\u00eb\u00c8\u00b7\u00c8\u00cf\u00c4\u00fa\u00c8\u00b7\u00ca\u00b5\u00d2\u00aa\u00c9\u00be\u00b3\u00fd\u00b4\u00cb VM \u00bf\u00ec\u00d5\u00d5\u00a1\u00a3 -message.action.vmsnapshot.revert=\u00bb\u00b9\u00d4\u00ad VM \u00bf\u00ec\u00d5\u00d5 -message.activate.project=\u00ca\u00c7\u00b7\u00f1\u00c8\u00b7\u00ca\u00b5\u00d2\u00aa\u00bc\u00a4\u00bb\u00ee\u00b4\u00cb\u00cf\u00ee\u00c4\u00bf? -message.add.cluster.zone=\u00cf\u00f2\u00d7\u00ca\u00d4\u00b4\u00d3\u00f2 \u00d6\u00d0\u00cc\u00ed\u00bc\u00d3\u00d2\u00bb\u00b8\u00f6\u00d0\u00e9\u00c4\u00e2\u00bb\u00fa\u00b9\u00dc\u00c0\u00ed\u00b3\u00cc\u00d0\u00f2\u00cd\u00d0\u00b9\u00dc\u00b5\u00c4\u00c8\u00ba\u00bc\u00af -message.add.cluster=\u00cf\u00f2\u00d7\u00ca\u00d4\u00b4\u00d3\u00f2 \u00a1\u00a2\u00cc\u00e1\u00b9\u00a9\u00b5\u00e3 \u00d6\u00d0\u00cc\u00ed\u00bc\u00d3\u00d2\u00bb\u00b8\u00f6\u00d0\u00e9\u00c4\u00e2\u00bb\u00fa\u00b9\u00dc\u00c0\u00ed\u00b3\u00cc\u00d0\u00f2\u00cd\u00d0\u00b9\u00dc\u00b5\u00c4\u00c8\u00ba\u00bc\u00af -message.add.disk.offering=\u00c7\u00eb\u00d6\u00b8\u00b6\u00a8\u00d2\u00d4\u00cf\u00c2\u00b2\u00ce\u00ca\u00fd\u00d2\u00d4\u00cc\u00ed\u00bc\u00d3\u00d2\u00bb\u00b8\u00f6\u00d0\u00c2\u00b5\u00c4\u00b4\u00c5\u00c5\u00cc\u00b7\u00bd\u00b0\u00b8 -message.add.domain=\u00c7\u00eb\u00d6\u00b8\u00b6\u00a8\u00d2\u00aa\u00d4\u00da\u00b4\u00cb\u00d3\u00f2\u00cf\u00c2\u00b4\u00b4\u00bd\u00a8\u00b5\u00c4\u00d7\u00d3\u00d3\u00f2 -message.add.firewall=\u00cf\u00f2\u00d7\u00ca\u00d4\u00b4\u00d3\u00f2\u00d6\u00d0\u00cc\u00ed\u00bc\u00d3\u00d2\u00bb\u00b8\u00f6\u00b7\u00c0\u00bb\u00f0\u00c7\u00bd -message.add.guest.network=\u00c7\u00eb\u00c8\u00b7\u00c8\u00cf\u00c4\u00fa\u00c8\u00b7\u00ca\u00b5\u00d2\u00aa\u00cc\u00ed\u00bc\u00d3\u00d2\u00bb\u00b8\u00f6\u00c0\u00b4\u00b1\u00f6\u00cd\u00f8\u00c2\u00e7 -message.add.host=\u00c7\u00eb\u00d6\u00b8\u00b6\u00a8\u00d2\u00d4\u00cf\u00c2\u00b2\u00ce\u00ca\u00fd\u00d2\u00d4\u00cc\u00ed\u00bc\u00d3\u00d2\u00bb\u00cc\u00a8\u00d0\u00c2\u00d6\u00f7\u00bb\u00fa -message.add.ip.range.direct.network=\u00cf\u00f2\u00d7\u00ca\u00d4\u00b4\u00d3\u00f2 \u00d6\u00d0\u00b5\u00c4\u00d6\u00b1\u00bd\u00d3\u00cd\u00f8\u00c2\u00e7 \u00cc\u00ed\u00bc\u00d3\u00d2\u00bb\u00b8\u00f6 IP \u00b7\u00b6\u00ce\u00a7 -message.add.ip.range.to.pod=

\u00cf\u00f2\u00cc\u00e1\u00b9\u00a9\u00b5\u00e3\u00cc\u00ed\u00bc\u00d3\u00d2\u00bb\u00b8\u00f6 IP \u00b7\u00b6\u00ce\u00a7\:

-message.add.ip.range=\u00cf\u00f2\u00d7\u00ca\u00d4\u00b4\u00d3\u00f2\u00d6\u00d0\u00b5\u00c4\u00b9\u00ab\u00d3\u00c3\u00cd\u00f8\u00c2\u00e7\u00cc\u00ed\u00bc\u00d3\u00d2\u00bb\u00b8\u00f6 IP \u00b7\u00b6\u00ce\u00a7 -message.add.load.balancer.under.ip=\u00d2\u00d1\u00d4\u00da\u00d2\u00d4\u00cf\u00c2 IP \u00cf\u00c2\u00cc\u00ed\u00bc\u00d3\u00b8\u00ba\u00d4\u00d8\u00c6\u00bd\u00ba\u00e2\u00c6\u00f7\u00b9\u00e6\u00d4\u00f2\: -message.add.load.balancer=\u00cf\u00f2\u00d7\u00ca\u00d4\u00b4\u00d3\u00f2\u00d6\u00d0\u00cc\u00ed\u00bc\u00d3\u00d2\u00bb\u00b8\u00f6\u00b8\u00ba\u00d4\u00d8\u00c6\u00bd\u00ba\u00e2\u00c6\u00f7 -message.add.network=\u00ce\u00aa\u00d7\u00ca\u00d4\u00b4\u00d3\u00f2 \u00cc\u00ed\u00bc\u00d3\u00d2\u00bb\u00b8\u00f6\u00d0\u00c2\u00cd\u00f8\u00c2\u00e7 -message.add.new.gateway.to.vpc=\u00c7\u00eb\u00d6\u00b8\u00b6\u00a8\u00bd\u00ab\u00d0\u00c2\u00cd\u00f8\u00b9\u00d8\u00cc\u00ed\u00bc\u00d3\u00b5\u00bd\u00b4\u00cb VPC \u00cb\u00f9\u00d0\u00e8\u00b5\u00c4\u00d0\u00c5\u00cf\u00a2\u00a1\u00a3 -message.add.pod.during.zone.creation=\u00c3\u00bf\u00b8\u00f6\u00d7\u00ca\u00d4\u00b4\u00d3\u00f2\u00d6\u00d0\u00b1\u00d8\u00d0\u00eb\u00b0\u00fc\u00ba\u00ac\u00d2\u00bb\u00b8\u00f6\u00bb\u00f2\u00b6\u00e0\u00b8\u00f6\u00cc\u00e1\u00b9\u00a9\u00b5\u00e3\u00a3\u00ac\u00cf\u00d6\u00d4\u00da\u00ce\u00d2\u00c3\u00c7\u00bd\u00ab\u00cc\u00ed\u00bc\u00d3\u00b5\u00da\u00d2\u00bb\u00b8\u00f6\u00cc\u00e1\u00b9\u00a9\u00b5\u00e3\u00a1\u00a3\u00cc\u00e1\u00b9\u00a9\u00b5\u00e3\u00d6\u00d0\u00b0\u00fc\u00ba\u00ac\u00d6\u00f7\u00bb\u00fa\u00ba\u00cd\u00d6\u00f7\u00b4\u00e6\u00b4\u00a2\u00b7\u00fe\u00ce\u00f1\u00c6\u00f7\u00a3\u00ac\u00c4\u00fa\u00bd\u00ab\u00d4\u00da\u00cb\u00e6\u00ba\u00f3\u00b5\u00c4\u00c4\u00b3\u00b8\u00f6\u00b2\u00bd\u00d6\u00e8\u00d6\u00d0\u00cc\u00ed\u00bc\u00d3\u00d5\u00e2\u00d0\u00a9\u00d6\u00f7\u00bb\u00fa\u00ba\u00cd\u00b7\u00fe\u00ce\u00f1\u00c6\u00f7\u00a1\u00a3\u00ca\u00d7\u00cf\u00c8\u00a3\u00ac\u00c7\u00eb\u00ce\u00aa CloudStack \u00b5\u00c4\u00c4\u00da\u00b2\u00bf\u00b9\u00dc\u00c0\u00ed\u00c1\u00f7\u00c1\u00bf\u00c5\u00e4\u00d6\u00c3\u00d2\u00bb\u00b8\u00f6\u00d4\u00a4\u00c1\u00f4 IP \u00b5\u00d8\u00d6\u00b7\u00b7\u00b6\u00ce\u00a7\u00a1\u00a3\u00d4\u00a4\u00c1\u00f4\u00b5\u00c4 IP \u00b7\u00b6\u00ce\u00a7\u00b6\u00d4\u00d4\u00c6\u00d6\u00d0\u00b5\u00c4\u00c3\u00bf\u00b8\u00f6\u00d7\u00ca\u00d4\u00b4\u00d3\u00f2\u00c0\u00b4\u00cb\u00b5\u00b1\u00d8\u00d0\u00eb\u00ce\u00a8\u00d2\u00bb\u00a1\u00a3 -message.add.pod=\u00ce\u00aa\u00d7\u00ca\u00d4\u00b4\u00d3\u00f2 \u00cc\u00ed\u00bc\u00d3\u00d2\u00bb\u00b8\u00f6\u00d0\u00c2\u00cc\u00e1\u00b9\u00a9\u00b5\u00e3 -message.add.primary.storage=\u00ce\u00aa\u00d7\u00ca\u00d4\u00b4\u00d3\u00f2 \u00a1\u00a2\u00cc\u00e1\u00b9\u00a9\u00b5\u00e3 \u00cc\u00ed\u00bc\u00d3\u00d2\u00bb\u00b8\u00f6\u00d0\u00c2\u00d6\u00f7\u00b4\u00e6\u00b4\u00a2 -message.add.primary=\u00c7\u00eb\u00d6\u00b8\u00b6\u00a8\u00d2\u00d4\u00cf\u00c2\u00b2\u00ce\u00ca\u00fd\u00d2\u00d4\u00cc\u00ed\u00bc\u00d3\u00d2\u00bb\u00b8\u00f6\u00d0\u00c2\u00d6\u00f7\u00b4\u00e6\u00b4\u00a2 -message.add.region=\u00c7\u00eb\u00d6\u00b8\u00b6\u00a8\u00cc\u00ed\u00bc\u00d3\u00d0\u00c2\u00b5\u00d8\u00c0\u00ed\u00c7\u00f8\u00d3\u00f2\u00cb\u00f9\u00d0\u00e8\u00b5\u00c4\u00d0\u00c5\u00cf\u00a2\u00a1\u00a3 -message.add.secondary.storage=\u00ce\u00aa\u00d7\u00ca\u00d4\u00b4\u00d3\u00f2 \u00cc\u00ed\u00bc\u00d3\u00d2\u00bb\u00b8\u00f6\u00d0\u00c2\u00b4\u00e6\u00b4\u00a2 -message.add.service.offering=\u00c7\u00eb\u00cc\u00ee\u00d0\u00b4\u00d2\u00d4\u00cf\u00c2\u00ca\u00fd\u00be\u00dd\u00d2\u00d4\u00cc\u00ed\u00bc\u00d3\u00d2\u00bb\u00b8\u00f6\u00d0\u00c2\u00bc\u00c6\u00cb\u00e3\u00b7\u00bd\u00b0\u00b8\u00a1\u00a3 -message.add.system.service.offering=\u00c7\u00eb\u00cc\u00ee\u00d0\u00b4\u00d2\u00d4\u00cf\u00c2\u00ca\u00fd\u00be\u00dd\u00d2\u00d4\u00cc\u00ed\u00bc\u00d3\u00d2\u00bb\u00b8\u00f6\u00d0\u00c2\u00b5\u00c4\u00cf\u00b5\u00cd\u00b3\u00b7\u00fe\u00ce\u00f1\u00b7\u00bd\u00b0\u00b8\u00a1\u00a3 -message.add.template=\u00c7\u00eb\u00ca\u00e4\u00c8\u00eb\u00d2\u00d4\u00cf\u00c2\u00ca\u00fd\u00be\u00dd\u00d2\u00d4\u00b4\u00b4\u00bd\u00a8\u00d0\u00c2\u00c4\u00a3\u00b0\u00e5 -message.add.volume=\u00c7\u00eb\u00cc\u00ee\u00d0\u00b4\u00d2\u00d4\u00cf\u00c2\u00ca\u00fd\u00be\u00dd\u00d2\u00d4\u00cc\u00ed\u00bc\u00d3\u00d2\u00bb\u00b8\u00f6\u00d0\u00c2\u00be\u00ed\u00a1\u00a3 -message.add.VPN.gateway=\u00c7\u00eb\u00c8\u00b7\u00c8\u00cf\u00c4\u00fa\u00c8\u00b7\u00ca\u00b5\u00d2\u00aa\u00cc\u00ed\u00bc\u00d3 VPN \u00cd\u00f8\u00b9\u00d8 -message.adding.host=\u00d5\u00fd\u00d4\u00da\u00cc\u00ed\u00bc\u00d3\u00d6\u00f7\u00bb\u00fa -message.adding.Netscaler.device=\u00d5\u00fd\u00d4\u00da\u00cc\u00ed\u00bc\u00d3 NetScaler \u00c9\u00e8\u00b1\u00b8 -message.adding.Netscaler.provider=\u00d5\u00fd\u00d4\u00da\u00cc\u00ed\u00bc\u00d3 NetScaler \u00cc\u00e1\u00b9\u00a9\u00b3\u00cc\u00d0\u00f2 -message.additional.networks.desc=\u00c7\u00eb\u00d1\u00a1\u00d4\u00f1\u00d0\u00e9\u00c4\u00e2\u00bb\u00fa\u00d2\u00aa\u00c1\u00ac\u00bd\u00d3\u00b5\u00bd\u00b5\u00c4\u00c6\u00e4\u00cb\u00fb\u00cd\u00f8\u00c2\u00e7\u00a1\u00a3 -message.advanced.mode.desc=\u00c8\u00e7\u00b9\u00fb\u00d2\u00aa\u00c6\u00f4\u00d3\u00c3 VLAN \u00d6\u00a7\u00b3\u00d6\u00a3\u00ac\u00c7\u00eb\u00d1\u00a1\u00d4\u00f1\u00b4\u00cb\u00cd\u00f8\u00c2\u00e7\u00c4\u00a3\u00ca\u00bd\u00a1\u00a3\u00b4\u00cb\u00cd\u00f8\u00c2\u00e7\u00c4\u00a3\u00ca\u00bd\u00d4\u00da\u00d4\u00ca\u00d0\u00ed\u00b9\u00dc\u00c0\u00ed\u00d4\u00b1\u00cc\u00e1\u00b9\u00a9\u00b7\u00c0\u00bb\u00f0\u00c7\u00bd\u00a1\u00a2VPN \u00bb\u00f2\u00b8\u00ba\u00d4\u00d8\u00c6\u00bd\u00ba\u00e2\u00c6\u00f7\u00d6\u00a7\u00b3\u00d6\u00b5\u00c8\u00d7\u00d4\u00b6\u00a8\u00d2\u00e5\u00cd\u00f8\u00c2\u00e7\u00b7\u00bd\u00b0\u00b8\u00d2\u00d4\u00bc\u00b0\u00c6\u00f4\u00d3\u00c3\u00d6\u00b1\u00bd\u00d3\u00cd\u00f8\u00c2\u00e7\u00c1\u00ac\u00bd\u00d3\u00d3\u00eb\u00d0\u00e9\u00c4\u00e2\u00cd\u00f8\u00c2\u00e7\u00c1\u00ac\u00bd\u00d3\u00b5\u00c8\u00b7\u00bd\u00c3\u00e6\u00cc\u00e1\u00b9\u00a9\u00c1\u00cb\u00d7\u00ee\u00b4\u00f3\u00b5\u00c4\u00c1\u00e9\u00bb\u00ee\u00d0\u00d4\u00a1\u00a3 -message.advanced.security.group=\u00c8\u00e7\u00b9\u00fb\u00d2\u00aa\u00ca\u00b9\u00d3\u00c3\u00b0\u00b2\u00c8\u00ab\u00d7\u00e9\u00cc\u00e1\u00b9\u00a9\u00c0\u00b4\u00b1\u00f6 VM \u00b8\u00f4\u00c0\u00eb\u00a3\u00ac\u00c7\u00eb\u00d1\u00a1\u00d4\u00f1\u00b4\u00cb\u00c4\u00a3\u00ca\u00bd\u00a1\u00a3 -message.advanced.virtual=\u00c8\u00e7\u00b9\u00fb\u00d2\u00aa\u00ca\u00b9\u00d3\u00c3\u00d5\u00fb\u00b8\u00f6\u00d7\u00ca\u00d4\u00b4\u00d3\u00f2\u00b5\u00c4 VLAN \u00cc\u00e1\u00b9\u00a9\u00c0\u00b4\u00b1\u00f6 VM \u00b8\u00f4\u00c0\u00eb\u00a3\u00ac\u00c7\u00eb\u00d1\u00a1\u00d4\u00f1\u00b4\u00cb\u00c4\u00a3\u00ca\u00bd\u00a1\u00a3 -message.after.enable.s3=\u00d2\u00d1\u00c5\u00e4\u00d6\u00c3 S3 \u00d6\u00a7\u00b3\u00d6\u00b5\u00c4\u00b6\u00fe\u00bc\u00b6\u00b4\u00e6\u00b4\u00a2\u00a1\u00a3\u00d7\u00a2\u00d2\u00e2\: \u00cd\u00cb\u00b3\u00f6\u00b4\u00cb\u00d2\u00b3\u00c3\u00e6\u00ba\u00f3\u00a3\u00ac\u00c4\u00fa\u00bd\u00ab\u00ce\u00de\u00b7\u00a8\u00d4\u00d9\u00b4\u00ce\u00d6\u00d8\u00d0\u00c2\u00c5\u00e4\u00d6\u00c3 S3\u00a1\u00a3 -message.after.enable.swift=\u00d2\u00d1\u00c5\u00e4\u00d6\u00c3 SWIFT\u00a1\u00a3\u00d7\u00a2\u00d2\u00e2\: \u00cd\u00cb\u00b3\u00f6\u00b4\u00cb\u00d2\u00b3\u00c3\u00e6\u00ba\u00f3\u00a3\u00ac\u00c4\u00fa\u00bd\u00ab\u00ce\u00de\u00b7\u00a8\u00d4\u00d9\u00b4\u00ce\u00d6\u00d8\u00d0\u00c2\u00c5\u00e4\u00d6\u00c3 SWIFT\u00a1\u00a3 -message.alert.state.detected=\u00bc\u00ec\u00b2\u00e2\u00b5\u00bd\u00be\u00af\u00b1\u00a8\u00d7\u00b4\u00cc\u00ac -message.allow.vpn.access=\u00c7\u00eb\u00ca\u00e4\u00c8\u00eb\u00d2\u00aa\u00d4\u00ca\u00d0\u00ed\u00bd\u00f8\u00d0\u00d0 VPN \u00b7\u00c3\u00ce\u00ca\u00b5\u00c4\u00d3\u00c3\u00bb\u00a7\u00b5\u00c4\u00d3\u00c3\u00bb\u00a7\u00c3\u00fb\u00ba\u00cd\u00c3\u00dc\u00c2\u00eb\u00a1\u00a3 -message.apply.snapshot.policy=\u00c4\u00fa\u00d2\u00d1\u00b3\u00c9\u00b9\u00a6\u00b8\u00fc\u00d0\u00c2\u00b5\u00b1\u00c7\u00b0\u00b5\u00c4\u00bf\u00ec\u00d5\u00d5\u00b2\u00df\u00c2\u00d4\u00a1\u00a3 -message.attach.iso.confirm=\u00c7\u00eb\u00c8\u00b7\u00c8\u00cf\u00c4\u00fa\u00c8\u00b7\u00ca\u00b5\u00d2\u00aa\u00bd\u00ab\u00b4\u00cb ISO \u00b8\u00bd\u00bc\u00d3\u00b5\u00bd\u00b4\u00cb\u00d0\u00e9\u00c4\u00e2\u00ca\u00b5\u00c0\u00fd\u00a1\u00a3 -message.attach.volume=\u00c7\u00eb\u00cc\u00ee\u00d0\u00b4\u00d2\u00d4\u00cf\u00c2\u00ca\u00fd\u00be\u00dd\u00d2\u00d4\u00b8\u00bd\u00bc\u00d3\u00d2\u00bb\u00b8\u00f6\u00d0\u00c2\u00be\u00ed\u00a1\u00a3\u00c8\u00e7\u00b9\u00fb\u00d2\u00aa\u00bd\u00ab\u00b4\u00c5\u00c5\u00cc\u00be\u00ed\u00b8\u00bd\u00bc\u00d3\u00b5\u00bd\u00bb\u00f9\u00d3\u00da Windows \u00b5\u00c4\u00d0\u00e9\u00c4\u00e2\u00bb\u00fa\u00a3\u00ac\u00d0\u00e8\u00d2\u00aa\u00d6\u00d8\u00d0\u00c2\u00c6\u00f4\u00b6\u00af\u00b4\u00cb\u00ca\u00b5\u00c0\u00fd\u00b2\u00c5\u00c4\u00dc\u00cf\u00d4\u00ca\u00be\u00d2\u00d1\u00c1\u00ac\u00bd\u00d3\u00b5\u00c4\u00b4\u00c5\u00c5\u00cc\u00a1\u00a3 -message.basic.mode.desc=\u00c8\u00e7\u00b9\u00fb\u00c4\u00fa*\u00b2\u00bb*\u00cf\u00a3\u00cd\u00fb\u00c6\u00f4\u00d3\u00c3\u00c8\u00ce\u00ba\u00ce VLAN \u00d6\u00a7\u00b3\u00d6\u00a3\u00ac\u00c7\u00eb\u00d1\u00a1\u00d4\u00f1\u00b4\u00cb\u00cd\u00f8\u00c2\u00e7\u00c4\u00a3\u00ca\u00bd\u00a1\u00a3\u00bd\u00ab\u00d6\u00b1\u00bd\u00d3\u00b4\u00d3\u00b4\u00cb\u00cd\u00f8\u00c2\u00e7\u00d6\u00d0\u00ce\u00aa\u00d4\u00da\u00b4\u00cb\u00cd\u00f8\u00c2\u00e7\u00c4\u00a3\u00ca\u00bd\u00cf\u00c2\u00b4\u00b4\u00bd\u00a8\u00b5\u00c4\u00cb\u00f9\u00d3\u00d0\u00d0\u00e9\u00c4\u00e2\u00bb\u00fa\u00ca\u00b5\u00c0\u00fd\u00b7\u00d6\u00c5\u00e4\u00d2\u00bb\u00b8\u00f6 IP\u00a3\u00ac\u00b2\u00a2\u00ca\u00b9\u00d3\u00c3\u00b0\u00b2\u00c8\u00ab\u00d7\u00e9\u00cc\u00e1\u00b9\u00a9\u00b0\u00b2\u00c8\u00ab\u00d0\u00d4\u00ba\u00cd\u00b8\u00f4\u00c0\u00eb\u00a1\u00a3 -message.change.offering.confirm=\u00c7\u00eb\u00c8\u00b7\u00c8\u00cf\u00c4\u00fa\u00c8\u00b7\u00ca\u00b5\u00d2\u00aa\u00b8\u00fc\u00b8\u00c4\u00b4\u00cb\u00d0\u00e9\u00c4\u00e2\u00ca\u00b5\u00c0\u00fd\u00b5\u00c4\u00b7\u00fe\u00ce\u00f1\u00b7\u00bd\u00b0\u00b8\u00a1\u00a3 -message.change.password=\u00c7\u00eb\u00b8\u00fc\u00b8\u00c4\u00c4\u00fa\u00b5\u00c4\u00c3\u00dc\u00c2\u00eb\u00a1\u00a3 -message.configure.all.traffic.types=\u00c4\u00fa\u00d3\u00d0\u00b6\u00e0\u00b8\u00f6\u00ce\u00ef\u00c0\u00ed\u00cd\u00f8\u00c2\u00e7\u00a3\u00ac\u00c7\u00eb\u00b5\u00a5\u00bb\u00f7\u00a1\u00b0\u00b1\u00e0\u00bc\u00ad\u00a1\u00b1\u00b0\u00b4\u00c5\u00a5\u00ce\u00aa\u00c3\u00bf\u00d6\u00d6\u00c1\u00f7\u00c1\u00bf\u00c0\u00e0\u00d0\u00cd\u00c5\u00e4\u00d6\u00c3\u00b1\u00ea\u00c7\u00a9\u00a1\u00a3 -message.configuring.guest.traffic=\u00d5\u00fd\u00d4\u00da\u00c5\u00e4\u00d6\u00c3\u00c0\u00b4\u00b1\u00f6\u00c1\u00f7\u00c1\u00bf -message.configuring.physical.networks=\u00d5\u00fd\u00d4\u00da\u00c5\u00e4\u00d6\u00c3\u00ce\u00ef\u00c0\u00ed\u00cd\u00f8\u00c2\u00e7 -message.configuring.public.traffic=\u00d5\u00fd\u00d4\u00da\u00c5\u00e4\u00d6\u00c3\u00b9\u00ab\u00b9\u00b2\u00c1\u00f7\u00c1\u00bf -message.configuring.storage.traffic=\u00d5\u00fd\u00d4\u00da\u00c5\u00e4\u00d6\u00c3\u00b4\u00e6\u00b4\u00a2\u00c1\u00f7\u00c1\u00bf -message.confirm.action.force.reconnect=\u00c7\u00eb\u00c8\u00b7\u00c8\u00cf\u00c4\u00fa\u00c8\u00b7\u00ca\u00b5\u00d2\u00aa\u00c7\u00bf\u00d6\u00c6\u00d6\u00d8\u00d0\u00c2\u00c1\u00ac\u00bd\u00d3\u00b4\u00cb\u00d6\u00f7\u00bb\u00fa\u00a1\u00a3 -message.confirm.delete.F5=\u00c7\u00eb\u00c8\u00b7\u00c8\u00cf\u00c4\u00fa\u00c8\u00b7\u00ca\u00b5\u00d2\u00aa\u00c9\u00be\u00b3\u00fd F5 -message.confirm.delete.BrocadeVcs=Please confirm that you would like to delete Brocade Vcs Switch -message.confirm.delete.NetScaler=\u00c7\u00eb\u00c8\u00b7\u00c8\u00cf\u00c4\u00fa\u00c8\u00b7\u00ca\u00b5\u00d2\u00aa\u00c9\u00be\u00b3\u00fd NetScaler -message.confirm.delete.NuageVsp=Please confirm that you would like to delete Nuage Virtualized Services Directory -message.confirm.delete.SRX=\u00c7\u00eb\u00c8\u00b7\u00c8\u00cf\u00c4\u00fa\u00c8\u00b7\u00ca\u00b5\u00d2\u00aa\u00c9\u00be\u00b3\u00fd SRX -message.confirm.delete.PA=\u00c7\u00eb\u00c8\u00b7\u00c8\u00cf\u00c4\u00fa\u00c8\u00b7\u00ca\u00b5\u00d2\u00aa\u00c9\u00be\u00b3\u00fd Palo Alto -message.confirm.destroy.router=\u00c7\u00eb\u00c8\u00b7\u00c8\u00cf\u00c4\u00fa\u00c8\u00b7\u00ca\u00b5\u00d2\u00aa\u00cf\u00fa\u00bb\u00d9\u00b4\u00cb\u00c2\u00b7\u00d3\u00c9\u00c6\u00f7 -message.confirm.disable.provider=\u00c7\u00eb\u00c8\u00b7\u00c8\u00cf\u00c4\u00fa\u00c8\u00b7\u00ca\u00b5\u00d2\u00aa\u00bd\u00fb\u00d3\u00c3\u00b4\u00cb\u00cc\u00e1\u00b9\u00a9\u00b3\u00cc\u00d0\u00f2 -message.confirm.enable.provider=\u00c7\u00eb\u00c8\u00b7\u00c8\u00cf\u00c4\u00fa\u00c8\u00b7\u00ca\u00b5\u00d2\u00aa\u00c6\u00f4\u00d3\u00c3\u00b4\u00cb\u00cc\u00e1\u00b9\u00a9\u00b3\u00cc\u00d0\u00f2 -message.confirm.join.project=\u00c7\u00eb\u00c8\u00b7\u00c8\u00cf\u00c4\u00fa\u00c8\u00b7\u00ca\u00b5\u00d2\u00aa\u00bc\u00d3\u00c8\u00eb\u00b4\u00cb\u00cf\u00ee\u00c4\u00bf\u00a1\u00a3 -message.confirm.remove.IP.range=\u00c7\u00eb\u00c8\u00b7\u00c8\u00cf\u00c4\u00fa\u00c8\u00b7\u00ca\u00b5\u00d2\u00aa\u00c9\u00be\u00b3\u00fd\u00b4\u00cb IP \u00b7\u00b6\u00ce\u00a7\u00a1\u00a3 -message.confirm.shutdown.provider=\u00c7\u00eb\u00c8\u00b7\u00c8\u00cf\u00c4\u00fa\u00c8\u00b7\u00ca\u00b5\u00d2\u00aa\u00b9\u00d8\u00b1\u00d5\u00b4\u00cb\u00cc\u00e1\u00b9\u00a9\u00b3\u00cc\u00d0\u00f2 -message.copy.iso.confirm=\u00c7\u00eb\u00c8\u00b7\u00c8\u00cf\u00c4\u00fa\u00c8\u00b7\u00ca\u00b5\u00d2\u00aa\u00bd\u00ab ISO \u00b8\u00b4\u00d6\u00c6\u00b5\u00bd -message.copy.template=\u00bd\u00ab\u00c4\u00a3\u00b0\u00e5 XXX \u00b4\u00d3\u00d7\u00ca\u00d4\u00b4\u00d3\u00f2 \u00b8\u00b4\u00d6\u00c6\u00b5\u00bd -message.create.template.vm=\u00bb\u00f9\u00d3\u00da\u00c4\u00a3\u00b0\u00e5 \u00b4\u00b4\u00bd\u00a8 VM -message.create.template.volume=\u00c7\u00eb\u00cf\u00c8\u00d6\u00b8\u00b6\u00a8\u00d2\u00d4\u00cf\u00c2\u00d0\u00c5\u00cf\u00a2\u00a3\u00ac\u00c8\u00bb\u00ba\u00f3\u00d4\u00d9\u00b4\u00b4\u00bd\u00a8\u00b4\u00c5\u00c5\u00cc\u00be\u00ed \u00b5\u00c4\u00c4\u00a3\u00b0\u00e5\u00a1\u00a3\u00b4\u00b4\u00bd\u00a8\u00c4\u00a3\u00b0\u00e5\u00bf\u00c9\u00c4\u00dc\u00d0\u00e8\u00d2\u00aa\u00bc\u00b8\u00b7\u00d6\u00d6\u00d3\u00b5\u00bd\u00b8\u00fc\u00b3\u00a4\u00b5\u00c4\u00ca\u00b1\u00bc\u00e4\u00a3\u00ac\u00be\u00df\u00cc\u00e5\u00c8\u00a1\u00be\u00f6\u00d3\u00da\u00b4\u00c5\u00c5\u00cc\u00be\u00ed\u00b5\u00c4\u00b4\u00f3\u00d0\u00a1\u00a1\u00a3 -message.create.template=\u00ca\u00c7\u00b7\u00f1\u00c8\u00b7\u00ca\u00b5\u00d2\u00aa\u00b4\u00b4\u00bd\u00a8\u00c4\u00a3\u00b0\u00e5? -message.creating.cluster=\u00d5\u00fd\u00d4\u00da\u00b4\u00b4\u00bd\u00a8\u00c8\u00ba\u00bc\u00af -message.creating.guest.network=\u00d5\u00fd\u00d4\u00da\u00b4\u00b4\u00bd\u00a8\u00c0\u00b4\u00b1\u00f6\u00cd\u00f8\u00c2\u00e7 -message.creating.physical.networks=\u00d5\u00fd\u00d4\u00da\u00b4\u00b4\u00bd\u00a8\u00ce\u00ef\u00c0\u00ed\u00cd\u00f8\u00c2\u00e7 -message.creating.pod=\u00d5\u00fd\u00d4\u00da\u00b4\u00b4\u00bd\u00a8\u00cc\u00e1\u00b9\u00a9\u00b5\u00e3 -message.creating.primary.storage=\u00d5\u00fd\u00d4\u00da\u00b4\u00b4\u00bd\u00a8\u00d6\u00f7\u00b4\u00e6\u00b4\u00a2 -message.creating.secondary.storage=\u00d5\u00fd\u00d4\u00da\u00b4\u00b4\u00bd\u00a8\u00b6\u00fe\u00bc\u00b6\u00b4\u00e6\u00b4\u00a2 -message.creating.zone=\u00d5\u00fd\u00d4\u00da\u00b4\u00b4\u00bd\u00a8\u00d7\u00ca\u00d4\u00b4\u00d3\u00f2 -message.decline.invitation=\u00ca\u00c7\u00b7\u00f1\u00c8\u00b7\u00ca\u00b5\u00d2\u00aa\u00be\u00dc\u00be\u00f8\u00b4\u00cb\u00cf\u00ee\u00c4\u00bf\u00d1\u00fb\u00c7\u00eb? -message.dedicate.zone=\u00d5\u00fd\u00d4\u00da\u00bd\u00ab\u00d7\u00ca\u00d4\u00b4\u00d3\u00f2\u00d7\u00a8\u00d3\u00c3 -message.delete.account=\u00c7\u00eb\u00c8\u00b7\u00c8\u00cf\u00c4\u00fa\u00c8\u00b7\u00ca\u00b5\u00d2\u00aa\u00c9\u00be\u00b3\u00fd\u00b4\u00cb\u00d5\u00ca\u00bb\u00a7\u00a1\u00a3 -message.delete.affinity.group=\u00c7\u00eb\u00c8\u00b7\u00c8\u00cf\u00c4\u00fa\u00c8\u00b7\u00ca\u00b5\u00d2\u00aa\u00c9\u00be\u00b3\u00fd\u00b4\u00cb\u00b9\u00d8\u00c1\u00aa\u00d0\u00d4\u00d7\u00e9\u00a1\u00a3 -message.delete.gateway=\u00c7\u00eb\u00c8\u00b7\u00c8\u00cf\u00c4\u00fa\u00c8\u00b7\u00ca\u00b5\u00d2\u00aa\u00c9\u00be\u00b3\u00fd\u00b4\u00cb\u00cd\u00f8\u00b9\u00d8 -message.delete.project=\u00ca\u00c7\u00b7\u00f1\u00c8\u00b7\u00ca\u00b5\u00d2\u00aa\u00c9\u00be\u00b3\u00fd\u00b4\u00cb\u00cf\u00ee\u00c4\u00bf? -message.delete.user=\u00c7\u00eb\u00c8\u00b7\u00c8\u00cf\u00c4\u00fa\u00c8\u00b7\u00ca\u00b5\u00d2\u00aa\u00c9\u00be\u00b3\u00fd\u00b4\u00cb\u00d3\u00c3\u00bb\u00a7\u00a1\u00a3 -message.delete.VPN.connection=\u00c7\u00eb\u00c8\u00b7\u00c8\u00cf\u00c4\u00fa\u00c8\u00b7\u00ca\u00b5\u00d2\u00aa\u00c9\u00be\u00b3\u00fd VPN \u00c1\u00ac\u00bd\u00d3 -message.delete.VPN.customer.gateway=\u00c7\u00eb\u00c8\u00b7\u00c8\u00cf\u00c4\u00fa\u00c8\u00b7\u00ca\u00b5\u00d2\u00aa\u00c9\u00be\u00b3\u00fd\u00b4\u00cb VPN \u00bf\u00cd\u00bb\u00a7\u00cd\u00f8\u00b9\u00d8 -message.delete.VPN.gateway=\u00c7\u00eb\u00c8\u00b7\u00c8\u00cf\u00c4\u00fa\u00c8\u00b7\u00ca\u00b5\u00d2\u00aa\u00c9\u00be\u00b3\u00fd\u00b4\u00cb VPN \u00cd\u00f8\u00b9\u00d8 -message.desc.advanced.zone=\u00ca\u00ca\u00d3\u00c3\u00d3\u00da\u00b8\u00fc\u00bc\u00d3\u00b8\u00b4\u00d4\u00d3\u00b5\u00c4\u00cd\u00f8\u00c2\u00e7\u00cd\u00d8\u00c6\u00cb\u00a1\u00a3\u00b4\u00cb\u00cd\u00f8\u00c2\u00e7\u00c4\u00a3\u00ca\u00bd\u00d4\u00da\u00b6\u00a8\u00d2\u00e5\u00c0\u00b4\u00b1\u00f6\u00cd\u00f8\u00c2\u00e7\u00b2\u00a2\u00cc\u00e1\u00b9\u00a9\u00b7\u00c0\u00bb\u00f0\u00c7\u00bd\u00a1\u00a2VPN \u00bb\u00f2\u00b8\u00ba\u00d4\u00d8\u00c6\u00bd\u00ba\u00e2\u00c6\u00f7\u00d6\u00a7\u00b3\u00d6\u00b5\u00c8\u00d7\u00d4\u00b6\u00a8\u00d2\u00e5\u00cd\u00f8\u00c2\u00e7\u00b7\u00bd\u00b0\u00b8\u00b7\u00bd\u00c3\u00e6\u00cc\u00e1\u00b9\u00a9\u00c1\u00cb\u00d7\u00ee\u00b4\u00f3\u00b5\u00c4\u00c1\u00e9\u00bb\u00ee\u00d0\u00d4\u00a1\u00a3 -message.desc.basic.zone=\u00cc\u00e1\u00b9\u00a9\u00d2\u00bb\u00b8\u00f6\u00cd\u00f8\u00c2\u00e7\u00a3\u00ac\u00bd\u00ab\u00d6\u00b1\u00bd\u00d3\u00b4\u00d3\u00b4\u00cb\u00cd\u00f8\u00c2\u00e7\u00d6\u00d0\u00ce\u00aa\u00c3\u00bf\u00b8\u00f6 VM \u00ca\u00b5\u00c0\u00fd\u00b7\u00d6\u00c5\u00e4\u00d2\u00bb\u00b8\u00f6 IP\u00a1\u00a3\u00bf\u00c9\u00d2\u00d4\u00cd\u00a8\u00b9\u00fd\u00b0\u00b2\u00c8\u00ab\u00d7\u00e9\u00b5\u00c8\u00b5\u00da 3 \u00b2\u00e3\u00b7\u00bd\u00ca\u00bd\u00cc\u00e1\u00b9\u00a9\u00c0\u00b4\u00b1\u00f6\u00b8\u00f4\u00c0\u00eb(IP \u00b5\u00d8\u00d6\u00b7\u00d4\u00b4\u00b9\u00fd\u00c2\u00cb)\u00a1\u00a3 -message.desc.cluster=\u00c3\u00bf\u00b8\u00f6\u00cc\u00e1\u00b9\u00a9\u00b5\u00e3\u00d6\u00d0\u00b1\u00d8\u00d0\u00eb\u00b0\u00fc\u00ba\u00ac\u00d2\u00bb\u00b8\u00f6\u00bb\u00f2\u00b6\u00e0\u00b8\u00f6\u00c8\u00ba\u00bc\u00af\u00a3\u00ac\u00cf\u00d6\u00d4\u00da\u00ce\u00d2\u00c3\u00c7\u00bd\u00ab\u00cc\u00ed\u00bc\u00d3\u00b5\u00da\u00d2\u00bb\u00b8\u00f6\u00c8\u00ba\u00bc\u00af\u00a1\u00a3\u00c8\u00ba\u00bc\u00af\u00cc\u00e1\u00b9\u00a9\u00c1\u00cb\u00d2\u00bb\u00d6\u00d6\u00b1\u00e0\u00d7\u00e9\u00d6\u00f7\u00bb\u00fa\u00b5\u00c4\u00b7\u00bd\u00b7\u00a8\u00a1\u00a3\u00c8\u00ba\u00bc\u00af\u00d6\u00d0\u00b5\u00c4\u00cb\u00f9\u00d3\u00d0\u00d6\u00f7\u00bb\u00fa\u00b6\u00bc\u00be\u00df\u00d3\u00d0\u00cf\u00e0\u00cd\u00ac\u00b5\u00c4\u00d3\u00b2\u00bc\u00fe\u00a3\u00ac\u00d4\u00cb\u00d0\u00d0\u00cf\u00e0\u00cd\u00ac\u00b5\u00c4\u00d0\u00e9\u00c4\u00e2\u00bb\u00fa\u00b9\u00dc\u00c0\u00ed\u00b3\u00cc\u00d0\u00f2\u00a3\u00ac\u00ce\u00bb\u00d3\u00da\u00cf\u00e0\u00cd\u00ac\u00b5\u00c4\u00d7\u00d3\u00cd\u00f8\u00d6\u00d0\u00a3\u00ac\u00b2\u00a2\u00b7\u00c3\u00ce\u00ca\u00cf\u00e0\u00cd\u00ac\u00b5\u00c4\u00b9\u00b2\u00cf\u00ed\u00b4\u00e6\u00b4\u00a2\u00a1\u00a3\u00c3\u00bf\u00b8\u00f6\u00c8\u00ba\u00bc\u00af\u00d3\u00c9\u00d2\u00bb\u00b8\u00f6\u00bb\u00f2\u00b6\u00e0\u00b8\u00f6\u00d6\u00f7\u00bb\u00fa\u00d2\u00d4\u00bc\u00b0\u00d2\u00bb\u00b8\u00f6\u00bb\u00f2\u00b6\u00e0\u00b8\u00f6\u00d6\u00f7\u00b4\u00e6\u00b4\u00a2\u00b7\u00fe\u00ce\u00f1\u00c6\u00f7\u00d7\u00e9\u00b3\u00c9\u00a1\u00a3 -message.desc.host=\u00c3\u00bf\u00b8\u00f6\u00c8\u00ba\u00bc\u00af\u00d6\u00d0\u00b1\u00d8\u00d0\u00eb\u00d6\u00c1\u00c9\u00d9\u00b0\u00fc\u00ba\u00ac\u00d2\u00bb\u00b8\u00f6\u00d6\u00f7\u00bb\u00fa\u00d2\u00d4\u00b9\u00a9\u00c0\u00b4\u00b1\u00f6 VM \u00d4\u00da\u00c9\u00cf\u00c3\u00e6\u00d4\u00cb\u00d0\u00d0\u00a3\u00ac\u00cf\u00d6\u00d4\u00da\u00ce\u00d2\u00c3\u00c7\u00bd\u00ab\u00cc\u00ed\u00bc\u00d3\u00b5\u00da\u00d2\u00bb\u00b8\u00f6\u00d6\u00f7\u00bb\u00fa\u00a1\u00a3\u00d2\u00aa\u00ca\u00b9\u00d6\u00f7\u00bb\u00fa\u00d4\u00da CloudStack \u00d6\u00d0\u00d4\u00cb\u00d0\u00d0\u00a3\u00ac\u00b1\u00d8\u00d0\u00eb\u00d4\u00da\u00b4\u00cb\u00d6\u00f7\u00bb\u00fa\u00c9\u00cf\u00b0\u00b2\u00d7\u00b0\u00d0\u00e9\u00c4\u00e2\u00bb\u00fa\u00b9\u00dc\u00c0\u00ed\u00b3\u00cc\u00d0\u00f2\u00c8\u00ed\u00bc\u00fe\u00a3\u00ac\u00ce\u00aa\u00c6\u00e4\u00b7\u00d6\u00c5\u00e4\u00d2\u00bb\u00b8\u00f6 IP \u00b5\u00d8\u00d6\u00b7\u00a3\u00ac\u00b2\u00a2\u00c8\u00b7\u00b1\u00a3\u00bd\u00ab\u00c6\u00e4\u00c1\u00ac\u00bd\u00d3\u00b5\u00bd CloudStack \u00b9\u00dc\u00c0\u00ed\u00b7\u00fe\u00ce\u00f1\u00c6\u00f7\u00a1\u00a3

\u00c7\u00eb\u00cc\u00e1\u00b9\u00a9\u00d6\u00f7\u00bb\u00fa\u00b5\u00c4 DNS \u00bb\u00f2 IP \u00b5\u00d8\u00d6\u00b7\u00a1\u00a2\u00d3\u00c3\u00bb\u00a7\u00c3\u00fb(\u00cd\u00a8\u00b3\u00a3\u00ce\u00aa root)\u00ba\u00cd\u00c3\u00dc\u00c2\u00eb\u00a3\u00ac\u00d2\u00d4\u00bc\u00b0\u00d3\u00c3\u00d3\u00da\u00b6\u00d4\u00d6\u00f7\u00bb\u00fa\u00bd\u00f8\u00d0\u00d0\u00b7\u00d6\u00c0\u00e0\u00b5\u00c4\u00c8\u00ce\u00ba\u00ce\u00b1\u00ea\u00c7\u00a9\u00a1\u00a3 -message.desc.primary.storage=\u00c3\u00bf\u00b8\u00f6\u00c8\u00ba\u00bc\u00af\u00d6\u00d0\u00b1\u00d8\u00d0\u00eb\u00b0\u00fc\u00ba\u00ac\u00d2\u00bb\u00b8\u00f6\u00bb\u00f2\u00b6\u00e0\u00b8\u00f6\u00d6\u00f7\u00b4\u00e6\u00b4\u00a2\u00b7\u00fe\u00ce\u00f1\u00c6\u00f7\u00a3\u00ac\u00cf\u00d6\u00d4\u00da\u00ce\u00d2\u00c3\u00c7\u00bd\u00ab\u00cc\u00ed\u00bc\u00d3\u00b5\u00da\u00d2\u00bb\u00b8\u00f6\u00d6\u00f7\u00b4\u00e6\u00b4\u00a2\u00b7\u00fe\u00ce\u00f1\u00c6\u00f7\u00a1\u00a3\u00d6\u00f7\u00b4\u00e6\u00b4\u00a2\u00d6\u00d0\u00b0\u00fc\u00ba\u00ac\u00d4\u00da\u00c8\u00ba\u00bc\u00af\u00d6\u00d0\u00b5\u00c4\u00d6\u00f7\u00bb\u00fa\u00c9\u00cf\u00d4\u00cb\u00d0\u00d0\u00b5\u00c4\u00cb\u00f9\u00d3\u00d0 VM \u00b5\u00c4\u00b4\u00c5\u00c5\u00cc\u00be\u00ed\u00a1\u00a3\u00c7\u00eb\u00ca\u00b9\u00d3\u00c3\u00b5\u00d7\u00b2\u00e3\u00d0\u00e9\u00c4\u00e2\u00bb\u00fa\u00b9\u00dc\u00c0\u00ed\u00b3\u00cc\u00d0\u00f2\u00d6\u00a7\u00b3\u00d6\u00b5\u00c4\u00b7\u00fb\u00ba\u00cf\u00b1\u00ea\u00d7\u00bc\u00b5\u00c4\u00d0\u00ad\u00d2\u00e9\u00a1\u00a3 -message.desc.secondary.storage=\u00c3\u00bf\u00b8\u00f6\u00d7\u00ca\u00d4\u00b4\u00d3\u00f2\u00d6\u00d0\u00b1\u00d8\u00d0\u00eb\u00d6\u00c1\u00c9\u00d9\u00b0\u00fc\u00ba\u00ac\u00d2\u00bb\u00b8\u00f6 NFS \u00bb\u00f2\u00b6\u00fe\u00bc\u00b6\u00b4\u00e6\u00b4\u00a2\u00b7\u00fe\u00ce\u00f1\u00c6\u00f7\u00a3\u00ac\u00cf\u00d6\u00d4\u00da\u00ce\u00d2\u00c3\u00c7\u00bd\u00ab\u00cc\u00ed\u00bc\u00d3\u00b5\u00da\u00d2\u00bb\u00b8\u00f6 NFS \u00bb\u00f2\u00b6\u00fe\u00bc\u00b6\u00b4\u00e6\u00b4\u00a2\u00b7\u00fe\u00ce\u00f1\u00c6\u00f7\u00a1\u00a3\u00b6\u00fe\u00bc\u00b6\u00b4\u00e6\u00b4\u00a2\u00d3\u00c3\u00d3\u00da\u00b4\u00e6\u00b4\u00a2 VM \u00c4\u00a3\u00b0\u00e5\u00a1\u00a2ISO \u00d3\u00b3\u00cf\u00f1\u00ba\u00cd VM \u00b4\u00c5\u00c5\u00cc\u00be\u00ed\u00bf\u00ec\u00d5\u00d5\u00a1\u00a3\u00b4\u00cb\u00b7\u00fe\u00ce\u00f1\u00c6\u00f7\u00b1\u00d8\u00d0\u00eb\u00b6\u00d4\u00d7\u00ca\u00d4\u00b4\u00d3\u00f2\u00d6\u00d0\u00b5\u00c4\u00cb\u00f9\u00d3\u00d0\u00b7\u00fe\u00ce\u00f1\u00c6\u00f7\u00bf\u00c9\u00d3\u00c3\u00a1\u00a3

\u00c7\u00eb\u00cc\u00e1\u00b9\u00a9 IP \u00b5\u00d8\u00d6\u00b7\u00ba\u00cd\u00b5\u00bc\u00b3\u00f6\u00c2\u00b7\u00be\u00b6\u00a1\u00a3 -message.desc.zone=\u00d7\u00ca\u00d4\u00b4\u00d3\u00f2\u00ca\u00c7 CloudStack \u00d6\u00d0\u00d7\u00ee\u00b4\u00f3\u00b5\u00c4\u00d7\u00e9\u00d6\u00af\u00b5\u00a5\u00ce\u00bb\u00a3\u00ac\u00d2\u00bb\u00b8\u00f6\u00d7\u00ca\u00d4\u00b4\u00d3\u00f2\u00cd\u00a8\u00b3\u00a3\u00d3\u00eb\u00d2\u00bb\u00b8\u00f6\u00ca\u00fd\u00be\u00dd\u00d6\u00d0\u00d0\u00c4\u00cf\u00e0\u00b6\u00d4\u00d3\u00a6\u00a1\u00a3\u00d7\u00ca\u00d4\u00b4\u00d3\u00f2\u00bf\u00c9\u00cc\u00e1\u00b9\u00a9\u00ce\u00ef\u00c0\u00ed\u00b8\u00f4\u00c0\u00eb\u00ba\u00cd\u00c8\u00df\u00d3\u00e0\u00a1\u00a3\u00d2\u00bb\u00b8\u00f6\u00d7\u00ca\u00d4\u00b4\u00d3\u00f2\u00d3\u00c9\u00d2\u00bb\u00b8\u00f6\u00bb\u00f2\u00b6\u00e0\u00b8\u00f6\u00cc\u00e1\u00b9\u00a9\u00b5\u00e3\u00d2\u00d4\u00bc\u00b0\u00d3\u00c9\u00d7\u00ca\u00d4\u00b4\u00d3\u00f2\u00d6\u00d0\u00b5\u00c4\u00cb\u00f9\u00d3\u00d0\u00cc\u00e1\u00b9\u00a9\u00b5\u00e3\u00b9\u00b2\u00cf\u00ed\u00b5\u00c4\u00d2\u00bb\u00b8\u00f6\u00b6\u00fe\u00bc\u00b6\u00b4\u00e6\u00b4\u00a2\u00b7\u00fe\u00ce\u00f1\u00c6\u00f7\u00d7\u00e9\u00b3\u00c9\u00a3\u00ac\u00c6\u00e4\u00d6\u00d0\u00c3\u00bf\u00b8\u00f6\u00cc\u00e1\u00b9\u00a9\u00b5\u00e3\u00d6\u00d0\u00b0\u00fc\u00ba\u00ac\u00b6\u00e0\u00b8\u00f6\u00d6\u00f7\u00bb\u00fa\u00ba\u00cd\u00d6\u00f7\u00b4\u00e6\u00b4\u00a2\u00b7\u00fe\u00ce\u00f1\u00c6\u00f7\u00a1\u00a3 -message.detach.disk=\u00ca\u00c7\u00b7\u00f1\u00c8\u00b7\u00ca\u00b5\u00d2\u00aa\u00c8\u00a1\u00cf\u00fb\u00b8\u00bd\u00bc\u00d3\u00b4\u00cb\u00b4\u00c5\u00c5\u00cc? -message.detach.iso.confirm=\u00c7\u00eb\u00c8\u00b7\u00c8\u00cf\u00c4\u00fa\u00c8\u00b7\u00ca\u00b5\u00d2\u00aa\u00b4\u00d3\u00b4\u00cb\u00d0\u00e9\u00c4\u00e2\u00bb\u00fa\u00d6\u00d0\u00c8\u00a1\u00cf\u00fb\u00b8\u00bd\u00bc\u00d3\u00b4\u00cb ISO\u00a1\u00a3 -message.disable.account=\u00c7\u00eb\u00c8\u00b7\u00c8\u00cf\u00c4\u00fa\u00c8\u00b7\u00ca\u00b5\u00d2\u00aa\u00bd\u00fb\u00d3\u00c3\u00b4\u00cb\u00d5\u00ca\u00bb\u00a7\u00a1\u00a3\u00bd\u00fb\u00d3\u00c3\u00ba\u00f3\u00a3\u00ac\u00b4\u00cb\u00d5\u00ca\u00bb\u00a7\u00b5\u00c4\u00cb\u00f9\u00d3\u00d0\u00d3\u00c3\u00bb\u00a7\u00bd\u00ab\u00b2\u00bb\u00d4\u00d9\u00d3\u00d0\u00c8\u00a8\u00b7\u00c3\u00ce\u00ca\u00b8\u00f7\u00d7\u00d4\u00b5\u00c4\u00d4\u00c6\u00d7\u00ca\u00d4\u00b4\u00a1\u00a3\u00cb\u00f9\u00d3\u00d0\u00d5\u00fd\u00d4\u00da\u00d4\u00cb\u00d0\u00d0\u00b5\u00c4\u00d0\u00e9\u00c4\u00e2\u00bb\u00fa\u00bd\u00ab\u00c1\u00a2\u00bc\u00b4\u00b9\u00d8\u00b1\u00d5\u00a1\u00a3 -message.disable.snapshot.policy=\u00c4\u00fa\u00d2\u00d1\u00b3\u00c9\u00b9\u00a6\u00bd\u00fb\u00d3\u00c3\u00b5\u00b1\u00c7\u00b0\u00b5\u00c4\u00bf\u00ec\u00d5\u00d5\u00b2\u00df\u00c2\u00d4\u00a1\u00a3 -message.disable.user=\u00c7\u00eb\u00c8\u00b7\u00c8\u00cf\u00c4\u00fa\u00c8\u00b7\u00ca\u00b5\u00d2\u00aa\u00bd\u00fb\u00d3\u00c3\u00b4\u00cb\u00d3\u00c3\u00bb\u00a7\u00a1\u00a3 -message.disable.vpn.access=\u00c7\u00eb\u00c8\u00b7\u00c8\u00cf\u00c4\u00fa\u00c8\u00b7\u00ca\u00b5\u00d2\u00aa\u00bd\u00fb\u00d3\u00c3 VPN \u00b7\u00c3\u00ce\u00ca\u00a1\u00a3 -message.disable.vpn=\u00ca\u00c7\u00b7\u00f1\u00c8\u00b7\u00ca\u00b5\u00d2\u00aa\u00bd\u00fb\u00d3\u00c3 VPN? -message.download.ISO=\u00c7\u00eb\u00b5\u00a5\u00bb\u00f7 00000 \u00cf\u00c2\u00d4\u00d8 ISO -message.download.template=\u00c7\u00eb\u00b5\u00a5\u00bb\u00f7 00000 \u00cf\u00c2\u00d4\u00d8\u00c4\u00a3\u00b0\u00e5 -message.download.volume.confirm=\u00c7\u00eb\u00c8\u00b7\u00c8\u00cf\u00c4\u00fa\u00c8\u00b7\u00ca\u00b5\u00d2\u00aa\u00cf\u00c2\u00d4\u00d8\u00b4\u00cb\u00be\u00ed -message.download.volume=\u00c7\u00eb\u00b5\u00a5\u00bb\u00f7 00000 \u00cf\u00c2\u00d4\u00d8\u00be\u00ed -message.edit.account=\u00b1\u00e0\u00bc\u00ad(\u00a1\u00b0-1\u00a1\u00b1\u00b1\u00ed\u00ca\u00be\u00b6\u00d4\u00d2\u00aa\u00b4\u00b4\u00bd\u00a8\u00b5\u00c4\u00d7\u00ca\u00d4\u00b4\u00ca\u00fd\u00c1\u00bf\u00c3\u00bb\u00d3\u00d0\u00c8\u00ce\u00ba\u00ce\u00cf\u00de\u00d6\u00c6) -message.edit.confirm=\u00c7\u00eb\u00cf\u00c8\u00c8\u00b7\u00c8\u00cf\u00c4\u00fa\u00cb\u00f9\u00d7\u00f6\u00b5\u00c4\u00b8\u00fc\u00b8\u00c4\u00a3\u00ac\u00c8\u00bb\u00ba\u00f3\u00b5\u00a5\u00bb\u00f7\u00a1\u00b0\u00b1\u00a3\u00b4\u00e6\u00a1\u00b1\u00a1\u00a3 -message.edit.limits=\u00c7\u00eb\u00d6\u00b8\u00b6\u00a8\u00b6\u00d4\u00d2\u00d4\u00cf\u00c2\u00d7\u00ca\u00d4\u00b4\u00b5\u00c4\u00cf\u00de\u00d6\u00c6\u00a1\u00a3\u00a1\u00b0-1\u00a1\u00b1\u00b1\u00ed\u00ca\u00be\u00b2\u00bb\u00cf\u00de\u00d6\u00c6\u00d2\u00aa\u00b4\u00b4\u00bd\u00a8\u00b5\u00c4\u00d7\u00ca\u00d4\u00b4\u00ca\u00fd\u00a1\u00a3 -message.edit.traffic.type=\u00c7\u00eb\u00d6\u00b8\u00b6\u00a8\u00c4\u00fa\u00cf\u00a3\u00cd\u00fb\u00d3\u00eb\u00b4\u00cb\u00c1\u00f7\u00c1\u00bf\u00c0\u00e0\u00d0\u00cd\u00b9\u00d8\u00c1\u00aa\u00b5\u00c4\u00c1\u00f7\u00c1\u00bf\u00b1\u00ea\u00c7\u00a9\u00a1\u00a3 -message.enable.account=\u00c7\u00eb\u00c8\u00b7\u00c8\u00cf\u00c4\u00fa\u00c8\u00b7\u00ca\u00b5\u00d2\u00aa\u00c6\u00f4\u00d3\u00c3\u00b4\u00cb\u00d5\u00ca\u00bb\u00a7\u00a1\u00a3 -message.enable.user=\u00c7\u00eb\u00c8\u00b7\u00c8\u00cf\u00c4\u00fa\u00c8\u00b7\u00ca\u00b5\u00d2\u00aa\u00c6\u00f4\u00d3\u00c3\u00b4\u00cb\u00d3\u00c3\u00bb\u00a7\u00a1\u00a3 -message.enable.vpn.access=\u00b5\u00b1\u00c7\u00b0\u00d2\u00d1\u00b6\u00d4\u00b4\u00cb IP \u00b5\u00d8\u00d6\u00b7\u00bd\u00fb\u00d3\u00c3\u00c1\u00cb VPN\u00a1\u00a3\u00ca\u00c7\u00b7\u00f1\u00d2\u00aa\u00c6\u00f4\u00d3\u00c3 VPN \u00b7\u00c3\u00ce\u00ca? -message.enable.vpn=\u00c7\u00eb\u00c8\u00b7\u00c8\u00cf\u00c4\u00fa\u00c8\u00b7\u00ca\u00b5\u00d2\u00aa\u00b6\u00d4\u00b4\u00cb IP \u00b5\u00d8\u00d6\u00b7\u00c6\u00f4\u00d3\u00c3 VPN \u00b7\u00c3\u00ce\u00ca\u00a1\u00a3 -message.enabled.vpn.ip.sec=\u00c4\u00fa\u00b5\u00c4 IPSec \u00d4\u00a4\u00b9\u00b2\u00cf\u00ed\u00c3\u00dc\u00d4\u00bf -message.enabled.vpn=\u00c4\u00fa\u00b5\u00c4 VPN \u00b7\u00c3\u00ce\u00ca\u00b9\u00a6\u00c4\u00dc\u00b5\u00b1\u00c7\u00b0\u00d2\u00d1\u00c6\u00f4\u00d3\u00c3\u00a3\u00ac\u00bf\u00c9\u00d2\u00d4\u00cd\u00a8\u00b9\u00fd IP \u00bd\u00f8\u00d0\u00d0\u00b7\u00c3\u00ce\u00ca -message.enabling.security.group.provider=\u00d5\u00fd\u00d4\u00da\u00c6\u00f4\u00d3\u00c3\u00b0\u00b2\u00c8\u00ab\u00d7\u00e9\u00cc\u00e1\u00b9\u00a9\u00b3\u00cc\u00d0\u00f2 -message.enabling.zone=\u00d5\u00fd\u00d4\u00da\u00c6\u00f4\u00d3\u00c3\u00d7\u00ca\u00d4\u00b4\u00d3\u00f2 -message.enter.token=\u00c7\u00eb\u00ca\u00e4\u00c8\u00eb\u00c4\u00fa\u00d4\u00da\u00d1\u00fb\u00c7\u00eb\u00b5\u00e7\u00d7\u00d3\u00d3\u00ca\u00bc\u00fe\u00d6\u00d0\u00ca\u00d5\u00b5\u00bd\u00b5\u00c4\u00c1\u00ee\u00c5\u00c6\u00a1\u00a3 -message.generate.keys=\u00c7\u00eb\u00c8\u00b7\u00c8\u00cf\u00c4\u00fa\u00c8\u00b7\u00ca\u00b5\u00d2\u00aa\u00ce\u00aa\u00b4\u00cb\u00d3\u00c3\u00bb\u00a7\u00c9\u00fa\u00b3\u00c9\u00d0\u00c2\u00c3\u00dc\u00d4\u00bf\u00a1\u00a3 -message.guest.traffic.in.advanced.zone=\u00c0\u00b4\u00b1\u00f6\u00cd\u00f8\u00c2\u00e7\u00c1\u00f7\u00c1\u00bf\u00ca\u00c7\u00d6\u00b8\u00d7\u00ee\u00d6\u00d5\u00d3\u00c3\u00bb\u00a7\u00d0\u00e9\u00c4\u00e2\u00bb\u00fa\u00d6\u00ae\u00bc\u00e4\u00b5\u00c4\u00cd\u00a8\u00d0\u00c5\u00a1\u00a3\u00d6\u00b8\u00b6\u00a8\u00d2\u00bb\u00b8\u00f6 VLAN ID \u00b7\u00b6\u00ce\u00a7\u00bf\u00c9\u00b4\u00ab\u00cb\u00cd\u00c3\u00bf\u00b8\u00f6\u00ce\u00ef\u00c0\u00ed\u00cd\u00f8\u00c2\u00e7\u00b5\u00c4\u00c0\u00b4\u00b1\u00f6\u00c1\u00f7\u00c1\u00bf\u00a1\u00a3 -message.guest.traffic.in.basic.zone=\u00c0\u00b4\u00b1\u00f6\u00cd\u00f8\u00c2\u00e7\u00c1\u00f7\u00c1\u00bf\u00ca\u00c7\u00d6\u00b8\u00d7\u00ee\u00d6\u00d5\u00d3\u00c3\u00bb\u00a7\u00d0\u00e9\u00c4\u00e2\u00bb\u00fa\u00d6\u00ae\u00bc\u00e4\u00b5\u00c4\u00cd\u00a8\u00d0\u00c5\u00a1\u00a3\u00d3\u00a6\u00d6\u00b8\u00b6\u00a8\u00d2\u00bb\u00b8\u00f6 CloudStack \u00bf\u00c9\u00d2\u00d4\u00b7\u00d6\u00c5\u00e4\u00b8\u00f8\u00c0\u00b4\u00b1\u00f6 VM \u00b5\u00c4 IP \u00b5\u00d8\u00d6\u00b7\u00b7\u00b6\u00ce\u00a7\u00a1\u00a3\u00c7\u00eb\u00c8\u00b7\u00b1\u00a3\u00b4\u00cb\u00b7\u00b6\u00ce\u00a7\u00d3\u00eb\u00d4\u00a4\u00c1\u00f4\u00b5\u00c4\u00cf\u00b5\u00cd\u00b3 IP \u00b7\u00b6\u00ce\u00a7\u00b2\u00bb\u00d6\u00d8\u00b5\u00fe\u00a1\u00a3 -message.installWizard.click.retry=\u00c7\u00eb\u00b5\u00a5\u00bb\u00f7\u00b4\u00cb\u00b0\u00b4\u00c5\u00a5\u00d6\u00d8\u00d0\u00c2\u00b3\u00a2\u00ca\u00d4\u00c6\u00f4\u00b6\u00af\u00a1\u00a3 -message.installWizard.copy.whatIsACluster=\u00c8\u00ba\u00bc\u00af\u00cc\u00e1\u00b9\u00a9\u00c1\u00cb\u00d2\u00bb\u00d6\u00d6\u00b1\u00e0\u00d7\u00e9\u00d6\u00f7\u00bb\u00fa\u00b5\u00c4\u00b7\u00bd\u00b7\u00a8\u00a1\u00a3\u00c8\u00ba\u00bc\u00af\u00d6\u00d0\u00b5\u00c4\u00cb\u00f9\u00d3\u00d0\u00d6\u00f7\u00bb\u00fa\u00b6\u00bc\u00be\u00df\u00d3\u00d0\u00cf\u00e0\u00cd\u00ac\u00b5\u00c4\u00d3\u00b2\u00bc\u00fe\u00a3\u00ac\u00d4\u00cb\u00d0\u00d0\u00cf\u00e0\u00cd\u00ac\u00b5\u00c4\u00d0\u00e9\u00c4\u00e2\u00bb\u00fa\u00b9\u00dc\u00c0\u00ed\u00b3\u00cc\u00d0\u00f2\u00a3\u00ac\u00ce\u00bb\u00d3\u00da\u00cd\u00ac\u00d2\u00bb\u00d7\u00d3\u00cd\u00f8\u00d6\u00d0\u00a3\u00ac\u00b2\u00a2\u00b7\u00c3\u00ce\u00ca\u00cf\u00e0\u00cd\u00ac\u00b5\u00c4\u00b9\u00b2\u00cf\u00ed\u00b4\u00e6\u00b4\u00a2\u00a1\u00a3\u00bf\u00c9\u00d2\u00d4\u00ca\u00b5\u00ca\u00b1\u00bd\u00ab\u00d0\u00e9\u00c4\u00e2\u00bb\u00fa\u00ca\u00b5\u00c0\u00fd(VM)\u00b4\u00d3\u00d2\u00bb\u00cc\u00a8\u00d6\u00f7\u00bb\u00fa\u00c7\u00a8\u00d2\u00c6\u00b5\u00bd\u00cd\u00ac\u00d2\u00bb\u00c8\u00ba\u00bc\u00af\u00c4\u00da\u00b5\u00c4\u00c6\u00e4\u00cb\u00fb\u00d6\u00f7\u00bb\u00fa\u00a3\u00ac\u00b6\u00f8\u00ce\u00de\u00d0\u00e8\u00d6\u00d0\u00b6\u00cf\u00cf\u00f2\u00d3\u00c3\u00bb\u00a7\u00cc\u00e1\u00b9\u00a9\u00b7\u00fe\u00ce\u00f1\u00a1\u00a3\u00c8\u00ba\u00bc\u00af\u00ca\u00c7 CloudStack&\#8482; \u00b2\u00bf\u00ca\u00f0\u00d6\u00d0\u00b5\u00c4\u00b5\u00da\u00c8\u00fd\u00b4\u00f3\u00d7\u00e9\u00d6\u00af\u00b5\u00a5\u00ce\u00bb\u00a1\u00a3\u00c8\u00ba\u00bc\u00af\u00b0\u00fc\u00ba\u00ac\u00d4\u00da\u00cc\u00e1\u00b9\u00a9\u00b5\u00e3\u00d6\u00d0\u00a3\u00ac\u00cc\u00e1\u00b9\u00a9\u00b5\u00e3\u00b0\u00fc\u00ba\u00ac\u00d4\u00da\u00d7\u00ca\u00d4\u00b4\u00d3\u00f2\u00d6\u00d0\u00a1\u00a3

CloudStack&\#8482; \u00d4\u00ca\u00d0\u00ed\u00d4\u00c6\u00b2\u00bf\u00ca\u00f0\u00d6\u00d0\u00b4\u00e6\u00d4\u00da\u00b6\u00e0\u00b8\u00f6\u00c8\u00ba\u00bc\u00af\u00a3\u00ac\u00b5\u00ab\u00b6\u00d4\u00d3\u00da\u00bb\u00f9\u00b1\u00be\u00b0\u00b2\u00d7\u00b0\u00a3\u00ac\u00ce\u00d2\u00c3\u00c7\u00d6\u00bb\u00d0\u00e8\u00d2\u00aa\u00d2\u00bb\u00b8\u00f6\u00c8\u00ba\u00bc\u00af\u00a1\u00a3 -message.installWizard.copy.whatIsAHost=\u00d6\u00f7\u00bb\u00fa\u00ca\u00c7\u00d6\u00b8\u00d2\u00bb\u00cc\u00a8\u00bc\u00c6\u00cb\u00e3\u00bb\u00fa\u00a1\u00a3\u00d6\u00f7\u00bb\u00fa\u00cc\u00e1\u00b9\u00a9\u00d4\u00cb\u00d0\u00d0\u00c0\u00b4\u00b1\u00f6\u00d0\u00e9\u00c4\u00e2\u00bb\u00fa\u00b5\u00c4\u00bc\u00c6\u00cb\u00e3\u00d7\u00ca\u00d4\u00b4\u00a1\u00a3\u00c3\u00bf\u00cc\u00a8\u00d6\u00f7\u00bb\u00fa\u00c9\u00cf\u00b6\u00bc\u00b0\u00b2\u00d7\u00b0\u00d3\u00d0\u00d0\u00e9\u00c4\u00e2\u00bb\u00fa\u00b9\u00dc\u00c0\u00ed\u00b3\u00cc\u00d0\u00f2\u00c8\u00ed\u00bc\u00fe\u00a3\u00ac\u00d3\u00c3\u00d3\u00da\u00b9\u00dc\u00c0\u00ed\u00c0\u00b4\u00b1\u00f6 VM (\u00c2\u00e3\u00bb\u00fa\u00d6\u00f7\u00bb\u00fa\u00b3\u00fd\u00cd\u00e2\u00a3\u00ac\u00bd\u00ab\u00d4\u00da\u00a1\u00b0\u00b8\u00df\u00bc\u00b6\u00b0\u00b2\u00d7\u00b0\u00d6\u00b8\u00c4\u00cf\u00a1\u00b1\u00d6\u00d0\u00cc\u00d6\u00c2\u00db\u00d5\u00e2\u00d2\u00bb\u00cc\u00d8\u00ca\u00e2\u00b0\u00b8\u00c0\u00fd)\u00a1\u00a3\u00c0\u00fd\u00c8\u00e7\u00a3\u00ac\u00c6\u00f4\u00d3\u00c3\u00c1\u00cb KVM \u00b5\u00c4 Linux \u00b7\u00fe\u00ce\u00f1\u00c6\u00f7\u00a1\u00a2Citrix XenServer \u00b7\u00fe\u00ce\u00f1\u00c6\u00f7\u00ba\u00cd ESXi \u00b7\u00fe\u00ce\u00f1\u00c6\u00f7\u00b6\u00bc\u00bf\u00c9\u00d3\u00c3\u00d7\u00f7\u00d6\u00f7\u00bb\u00fa\u00a1\u00a3\u00d4\u00da\u00bb\u00f9\u00b1\u00be\u00b0\u00b2\u00d7\u00b0\u00d6\u00d0\u00a3\u00ac\u00ce\u00d2\u00c3\u00c7\u00bd\u00ab\u00ca\u00b9\u00d3\u00c3\u00d2\u00bb\u00cc\u00a8\u00d4\u00cb\u00d0\u00d0 XenServer \u00b5\u00c4\u00d6\u00f7\u00bb\u00fa\u00a1\u00a3

\u00d6\u00f7\u00bb\u00fa\u00ca\u00c7 CloudStack&\#8482; \u00b2\u00bf\u00ca\u00f0\u00d6\u00d0\u00d7\u00ee\u00d0\u00a1\u00b5\u00c4\u00d7\u00e9\u00d6\u00af\u00b5\u00a5\u00ce\u00bb\u00a1\u00a3\u00d6\u00f7\u00bb\u00fa\u00b0\u00fc\u00ba\u00ac\u00d4\u00da\u00c8\u00ba\u00bc\u00af\u00d6\u00d0\u00a3\u00ac\u00c8\u00ba\u00bc\u00af\u00b0\u00fc\u00ba\u00ac\u00d4\u00da\u00cc\u00e1\u00b9\u00a9\u00b5\u00e3\u00d6\u00d0\u00a3\u00ac\u00cc\u00e1\u00b9\u00a9\u00b5\u00e3\u00b0\u00fc\u00ba\u00ac\u00d4\u00da\u00d7\u00ca\u00d4\u00b4\u00d3\u00f2\u00d6\u00d0\u00a1\u00a3 -message.installWizard.copy.whatIsAPod=\u00d2\u00bb\u00b8\u00f6\u00cc\u00e1\u00b9\u00a9\u00b5\u00e3\u00cd\u00a8\u00b3\u00a3\u00b4\u00fa\u00b1\u00ed\u00d2\u00bb\u00b8\u00f6\u00bb\u00fa\u00bc\u00dc\u00a1\u00a3\u00cd\u00ac\u00d2\u00bb\u00cc\u00e1\u00b9\u00a9\u00b5\u00e3\u00d6\u00d0\u00b5\u00c4\u00d6\u00f7\u00bb\u00fa\u00ce\u00bb\u00d3\u00da\u00cd\u00ac\u00d2\u00bb\u00d7\u00d3\u00cd\u00f8\u00d6\u00d0\u00a1\u00a3

\u00cc\u00e1\u00b9\u00a9\u00b5\u00e3\u00ca\u00c7 CloudStack&\#8482; \u00b2\u00bf\u00ca\u00f0\u00d6\u00d0\u00b5\u00c4\u00b5\u00da\u00b6\u00fe\u00b4\u00f3\u00d7\u00e9\u00d6\u00af\u00b5\u00a5\u00ce\u00bb\u00a1\u00a3\u00cc\u00e1\u00b9\u00a9\u00b5\u00e3\u00b0\u00fc\u00ba\u00ac\u00d4\u00da\u00d7\u00ca\u00d4\u00b4\u00d3\u00f2\u00d6\u00d0\u00a1\u00a3\u00c3\u00bf\u00b8\u00f6\u00d7\u00ca\u00d4\u00b4\u00d3\u00f2\u00d6\u00d0\u00bf\u00c9\u00d2\u00d4\u00b0\u00fc\u00ba\u00ac\u00d2\u00bb\u00b8\u00f6\u00bb\u00f2\u00b6\u00e0\u00b8\u00f6\u00cc\u00e1\u00b9\u00a9\u00b5\u00e3\u00a3\u00bb\u00d4\u00da\u00bb\u00f9\u00b1\u00be\u00b0\u00b2\u00d7\u00b0\u00d6\u00d0\u00a3\u00ac\u00c4\u00fa\u00b5\u00c4\u00d7\u00ca\u00d4\u00b4\u00d3\u00f2\u00d6\u00d0\u00bd\u00ab\u00bd\u00f6\u00b0\u00fc\u00ba\u00ac\u00d2\u00bb\u00b8\u00f6\u00cc\u00e1\u00b9\u00a9\u00b5\u00e3\u00a1\u00a3 -message.installWizard.copy.whatIsAZone=\u00d7\u00ca\u00d4\u00b4\u00d3\u00f2\u00ca\u00c7 CloudStack&\#8482; \u00b2\u00bf\u00ca\u00f0\u00d6\u00d0\u00d7\u00ee\u00b4\u00f3\u00b5\u00c4\u00d7\u00e9\u00d6\u00af\u00b5\u00a5\u00ce\u00bb\u00a1\u00a3\u00cb\u00e4\u00c8\u00bb\u00d4\u00ca\u00d0\u00ed\u00d2\u00bb\u00b8\u00f6\u00ca\u00fd\u00be\u00dd\u00d6\u00d0\u00d0\u00c4\u00d6\u00d0\u00b4\u00e6\u00d4\u00da\u00b6\u00e0\u00b8\u00f6\u00d7\u00ca\u00d4\u00b4\u00d3\u00f2\u00a3\u00ac\u00b5\u00ab\u00ca\u00c7\u00d2\u00bb\u00b8\u00f6\u00d7\u00ca\u00d4\u00b4\u00d3\u00f2\u00cd\u00a8\u00b3\u00a3\u00d3\u00eb\u00d2\u00bb\u00b8\u00f6\u00ca\u00fd\u00be\u00dd\u00d6\u00d0\u00d0\u00c4\u00cf\u00e0\u00b6\u00d4\u00d3\u00a6\u00a1\u00a3\u00bd\u00ab\u00bb\u00f9\u00b4\u00a1\u00bc\u00dc\u00b9\u00b9\u00b1\u00e0\u00d7\u00e9\u00b5\u00bd\u00d7\u00ca\u00d4\u00b4\u00d3\u00f2\u00d6\u00d0\u00b5\u00c4\u00ba\u00c3\u00b4\u00a6\u00ca\u00c7\u00bf\u00c9\u00d2\u00d4\u00cc\u00e1\u00b9\u00a9\u00ce\u00ef\u00c0\u00ed\u00b8\u00f4\u00c0\u00eb\u00ba\u00cd\u00c8\u00df\u00d3\u00e0\u00a1\u00a3\u00c0\u00fd\u00c8\u00e7\u00a3\u00ac\u00c3\u00bf\u00b8\u00f6\u00d7\u00ca\u00d4\u00b4\u00d3\u00f2\u00b6\u00bc\u00bf\u00c9\u00d2\u00d4\u00d3\u00b5\u00d3\u00d0\u00b8\u00f7\u00d7\u00d4\u00b5\u00c4\u00b5\u00e7\u00d4\u00b4\u00b9\u00a9\u00d3\u00a6\u00ba\u00cd\u00cd\u00f8\u00c2\u00e7\u00c9\u00cf\u00d0\u00d0\u00b7\u00bd\u00b0\u00b8\u00a3\u00ac\u00b2\u00a2\u00c7\u00d2\u00b8\u00f7\u00d7\u00ca\u00d4\u00b4\u00d3\u00f2\u00bf\u00c9\u00d2\u00d4\u00d4\u00da\u00b5\u00d8\u00c0\u00ed\u00ce\u00bb\u00d6\u00c3\u00c9\u00cf\u00cf\u00e0\u00b8\u00f4\u00ba\u00dc\u00d4\u00b6(\u00cb\u00e4\u00c8\u00bb\u00b2\u00a2\u00b7\u00c7\u00b1\u00d8\u00d0\u00eb\u00cf\u00e0\u00b8\u00f4\u00ba\u00dc\u00d4\u00b6)\u00a1\u00a3 -message.installWizard.copy.whatIsCloudStack=CloudStack&\#8482 \u00ca\u00c7\u00d2\u00bb\u00b8\u00f6\u00c8\u00ed\u00bc\u00fe\u00c6\u00bd\u00cc\u00a8\u00a3\u00ac\u00bf\u00c9\u00bd\u00ab\u00bc\u00c6\u00cb\u00e3\u00d7\u00ca\u00d4\u00b4\u00bc\u00af\u00d6\u00d0\u00d4\u00da\u00d2\u00bb\u00c6\u00f0\u00d2\u00d4\u00b9\u00b9\u00bd\u00a8\u00b9\u00ab\u00d3\u00d0\u00a1\u00a2\u00cb\u00bd\u00d3\u00d0\u00ba\u00cd\u00bb\u00ec\u00ba\u00cf\u00bb\u00f9\u00b4\u00a1\u00c9\u00e8\u00ca\u00a9\u00bc\u00b4\u00b7\u00fe\u00ce\u00f1(IaaS)\u00d4\u00c6\u00a1\u00a3CloudStack&\#8482 \u00b8\u00ba\u00d4\u00f0\u00b9\u00dc\u00c0\u00ed\u00d7\u00e9\u00b3\u00c9\u00d4\u00c6\u00bb\u00f9\u00b4\u00a1\u00bc\u00dc\u00b9\u00b9\u00b5\u00c4\u00cd\u00f8\u00c2\u00e7\u00a1\u00a2\u00b4\u00e6\u00b4\u00a2\u00ba\u00cd\u00bc\u00c6\u00cb\u00e3\u00bd\u00da\u00b5\u00e3\u00a1\u00a3\u00ca\u00b9\u00d3\u00c3 CloudStack&\#8482 \u00bf\u00c9\u00d2\u00d4\u00b2\u00bf\u00ca\u00f0\u00a1\u00a2\u00b9\u00dc\u00c0\u00ed\u00ba\u00cd\u00c5\u00e4\u00d6\u00c3\u00d4\u00c6\u00bc\u00c6\u00cb\u00e3\u00bb\u00b7\u00be\u00b3\u00a1\u00a3

CloudStack&\#8482 \u00cd\u00a8\u00b9\u00fd\u00c0\u00a9\u00d5\u00b9\u00c9\u00cc\u00d3\u00c3\u00d3\u00b2\u00bc\u00fe\u00c9\u00cf\u00d4\u00cb\u00d0\u00d0\u00b5\u00c4\u00c3\u00bf\u00b8\u00f6\u00d0\u00e9\u00c4\u00e2\u00bb\u00fa\u00d3\u00b3\u00cf\u00f1\u00b5\u00c4\u00b7\u00b6\u00ce\u00a7\u00a3\u00ac\u00cc\u00e1\u00b9\u00a9\u00c1\u00cb\u00d2\u00bb\u00b8\u00f6\u00ca\u00b5\u00ca\u00b1\u00bf\u00c9\u00d3\u00c3\u00b5\u00c4\u00d4\u00c6\u00bb\u00f9\u00b4\u00a1\u00bc\u00dc\u00b9\u00b9\u00c8\u00ed\u00bc\u00fe\u00b6\u00d1\u00d5\u00bb\u00d3\u00c3\u00d3\u00da\u00d2\u00d4\u00b7\u00fe\u00ce\u00f1\u00b7\u00bd\u00ca\u00bd\u00bd\u00bb\u00b8\u00b6\u00d0\u00e9\u00c4\u00e2\u00ca\u00fd\u00be\u00dd\u00d6\u00d0\u00d0\u00c4\u00a3\u00ac\u00bc\u00b4\u00bd\u00bb\u00b8\u00b6\u00b9\u00b9\u00bd\u00a8\u00a1\u00a2\u00b2\u00bf\u00ca\u00f0\u00ba\u00cd\u00b9\u00dc\u00c0\u00ed\u00b6\u00e0\u00b2\u00e3\u00b4\u00ce\u00ba\u00cd\u00b6\u00e0\u00d7\u00e2\u00bb\u00a7\u00d4\u00c6\u00d3\u00a6\u00d3\u00c3\u00b3\u00cc\u00d0\u00f2\u00b1\u00d8\u00d0\u00e8\u00b5\u00c4\u00cb\u00f9\u00d3\u00d0\u00d7\u00e9\u00bc\u00fe\u00a1\u00a3\u00bf\u00aa\u00d4\u00b4\u00b0\u00e6\u00b1\u00be\u00ba\u00cd Premium \u00b0\u00e6\u00b1\u00be\u00b6\u00bc\u00d2\u00d1\u00bf\u00c9\u00d3\u00c3\u00a3\u00ac\u00c7\u00d2\u00cc\u00e1\u00b9\u00a9\u00b5\u00c4\u00b9\u00a6\u00c4\u00dc\u00bc\u00b8\u00ba\u00f5\u00cd\u00ea\u00c8\u00ab\u00cf\u00e0\u00cd\u00ac\u00a1\u00a3 -message.installWizard.copy.whatIsPrimaryStorage=CloudStack&\#8482; \u00d4\u00c6\u00bb\u00f9\u00b4\u00a1\u00bc\u00dc\u00b9\u00b9\u00ca\u00b9\u00d3\u00c3\u00d2\u00d4\u00cf\u00c2\u00c1\u00bd\u00d6\u00d6\u00c0\u00e0\u00d0\u00cd\u00b5\u00c4\u00b4\u00e6\u00b4\u00a2\: \u00d6\u00f7\u00b4\u00e6\u00b4\u00a2\u00ba\u00cd\u00b6\u00fe\u00bc\u00b6\u00b4\u00e6\u00b4\u00a2\u00a1\u00a3\u00d5\u00e2\u00c1\u00bd\u00d6\u00d6\u00c0\u00e0\u00d0\u00cd\u00b5\u00c4\u00b4\u00e6\u00b4\u00a2\u00bf\u00c9\u00d2\u00d4\u00ca\u00c7 iSCSI \u00bb\u00f2 NFS \u00b7\u00fe\u00ce\u00f1\u00c6\u00f7\u00a3\u00ac\u00d2\u00b2\u00bf\u00c9\u00d2\u00d4\u00ca\u00c7\u00b1\u00be\u00b5\u00d8\u00b4\u00c5\u00c5\u00cc\u00a1\u00a3

\u00d6\u00f7\u00b4\u00e6\u00b4\u00a2\u00d3\u00eb\u00c8\u00ba\u00bc\u00af\u00cf\u00e0\u00b9\u00d8\u00c1\u00aa\u00a3\u00ac\u00d3\u00c3\u00d3\u00da\u00b4\u00e6\u00b4\u00a2\u00b8\u00c3\u00c8\u00ba\u00bc\u00af\u00d6\u00d0\u00b5\u00c4\u00d6\u00f7\u00bb\u00fa\u00c9\u00cf\u00d5\u00fd\u00d4\u00da\u00d4\u00cb\u00d0\u00d0\u00b5\u00c4\u00cb\u00f9\u00d3\u00d0 VM \u00b6\u00d4\u00d3\u00a6\u00b5\u00c4\u00c3\u00bf\u00b8\u00f6\u00c0\u00b4\u00b1\u00f6 VM \u00b5\u00c4\u00b4\u00c5\u00c5\u00cc\u00be\u00ed\u00a1\u00a3\u00d6\u00f7\u00b4\u00e6\u00b4\u00a2\u00b7\u00fe\u00ce\u00f1\u00c6\u00f7\u00cd\u00a8\u00b3\u00a3\u00ce\u00bb\u00d3\u00da\u00bf\u00bf\u00bd\u00fc\u00d6\u00f7\u00bb\u00fa\u00b5\u00c4\u00ce\u00bb\u00d6\u00c3\u00a1\u00a3 -message.installWizard.copy.whatIsSecondaryStorage=\u00b6\u00fe\u00bc\u00b6\u00b4\u00e6\u00b4\u00a2\u00d3\u00eb\u00d7\u00ca\u00d4\u00b4\u00d3\u00f2\u00cf\u00e0\u00b9\u00d8\u00c1\u00aa\u00a3\u00ac\u00d3\u00c3\u00d3\u00da\u00b4\u00e6\u00b4\u00a2\u00d2\u00d4\u00cf\u00c2\u00cf\u00ee\u00c4\u00bf\:
  • \u00c4\u00a3\u00b0\u00e5 - \u00bf\u00c9\u00d3\u00c3\u00d3\u00da\u00c6\u00f4\u00b6\u00af VM \u00b2\u00a2\u00bf\u00c9\u00d2\u00d4\u00b0\u00fc\u00ba\u00ac\u00c6\u00e4\u00cb\u00fb\u00c5\u00e4\u00d6\u00c3\u00d0\u00c5\u00cf\u00a2(\u00c0\u00fd\u00c8\u00e7\u00a3\u00ac\u00d2\u00d1\u00b0\u00b2\u00d7\u00b0\u00b5\u00c4\u00d3\u00a6\u00d3\u00c3\u00b3\u00cc\u00d0\u00f2)\u00b5\u00c4\u00b2\u00d9\u00d7\u00f7\u00cf\u00b5\u00cd\u00b3\u00d3\u00b3\u00cf\u00f1
  • ISO \u00d3\u00b3\u00cf\u00f1 - \u00bf\u00c9\u00d6\u00d8\u00d0\u00c2\u00c6\u00f4\u00b6\u00af\u00bb\u00f2\u00b2\u00bb\u00bf\u00c9\u00d6\u00d8\u00d0\u00c2\u00c6\u00f4\u00b6\u00af\u00b5\u00c4\u00b2\u00d9\u00d7\u00f7\u00cf\u00b5\u00cd\u00b3\u00d3\u00b3\u00cf\u00f1
  • \u00b4\u00c5\u00c5\u00cc\u00be\u00ed\u00bf\u00ec\u00d5\u00d5 - \u00d2\u00d1\u00b1\u00a3\u00b4\u00e6\u00b5\u00c4 VM \u00ca\u00fd\u00be\u00dd\u00b8\u00b1\u00b1\u00be\u00a3\u00ac\u00bf\u00c9\u00d3\u00c3\u00d3\u00da\u00d6\u00b4\u00d0\u00d0\u00ca\u00fd\u00be\u00dd\u00bb\u00d6\u00b8\u00b4\u00bb\u00f2\u00b4\u00b4\u00bd\u00a8\u00d0\u00c2\u00c4\u00a3\u00b0\u00e5
-message.installWizard.now.building=\u00cf\u00d6\u00d4\u00da\u00d5\u00fd\u00d4\u00da\u00b9\u00b9\u00bd\u00a8\u00c4\u00fa\u00b5\u00c4\u00d4\u00c6... -message.installWizard.tooltip.addCluster.name=\u00c8\u00ba\u00bc\u00af\u00b5\u00c4\u00c3\u00fb\u00b3\u00c6\u00a1\u00a3\u00b4\u00cb\u00c3\u00fb\u00b3\u00c6\u00bf\u00c9\u00d2\u00d4\u00ca\u00c7\u00c4\u00fa\u00d1\u00a1\u00d4\u00f1\u00b5\u00c4\u00ce\u00c4\u00b1\u00be\u00a3\u00ac\u00c7\u00d2\u00ce\u00b4\u00d3\u00c9 CloudStack \u00ca\u00b9\u00d3\u00c3\u00a1\u00a3 -message.installWizard.tooltip.addHost.hostname=\u00d6\u00f7\u00bb\u00fa\u00b5\u00c4 DNS \u00c3\u00fb\u00b3\u00c6\u00bb\u00f2 IP \u00b5\u00d8\u00d6\u00b7\u00a1\u00a3 -message.installWizard.tooltip.addHost.password=\u00b4\u00cb\u00ce\u00aa\u00c9\u00cf\u00ca\u00f6\u00d3\u00c3\u00bb\u00a7\u00b5\u00c4\u00c3\u00dc\u00c2\u00eb(\u00c0\u00b4\u00d7\u00d4 XenServer \u00b0\u00b2\u00d7\u00b0)\u00a1\u00a3 -message.installWizard.tooltip.addHost.username=\u00cd\u00a8\u00b3\u00a3\u00ce\u00aa root\u00a1\u00a3 -message.installWizard.tooltip.addPod.name=\u00cc\u00e1\u00b9\u00a9\u00b5\u00e3\u00b5\u00c4\u00c3\u00fb\u00b3\u00c6 -message.installWizard.tooltip.addPod.reservedSystemEndIp=\u00b4\u00cb\u00ce\u00aa CloudStack \u00d3\u00c3\u00d3\u00da\u00b9\u00dc\u00c0\u00ed\u00b6\u00fe\u00bc\u00b6\u00b4\u00e6\u00b4\u00a2 VM \u00ba\u00cd\u00bf\u00d8\u00d6\u00c6\u00cc\u00a8\u00b4\u00fa\u00c0\u00ed VM \u00b5\u00c4\u00d7\u00a8\u00d3\u00c3\u00cd\u00f8\u00c2\u00e7\u00d6\u00d0\u00b5\u00c4 IP \u00b7\u00b6\u00ce\u00a7\u00a1\u00a3\u00d5\u00e2\u00d0\u00a9 IP \u00b5\u00d8\u00d6\u00b7\u00c0\u00b4\u00d7\u00d4\u00d3\u00eb\u00bc\u00c6\u00cb\u00e3\u00b7\u00fe\u00ce\u00f1\u00c6\u00f7\u00cf\u00e0\u00cd\u00ac\u00b5\u00c4\u00d7\u00d3\u00cd\u00f8\u00a1\u00a3 -message.installWizard.tooltip.addPod.reservedSystemGateway=\u00b8\u00c3\u00cc\u00e1\u00b9\u00a9\u00b5\u00e3\u00d6\u00d0\u00b5\u00c4\u00d6\u00f7\u00bb\u00fa\u00cd\u00f8\u00b9\u00d8\u00a1\u00a3 -message.installWizard.tooltip.addPod.reservedSystemNetmask=\u00c0\u00b4\u00b1\u00f6\u00bd\u00ab\u00d2\u00aa\u00ca\u00b9\u00d3\u00c3\u00b5\u00c4\u00d7\u00d3\u00cd\u00f8\u00c9\u00cf\u00d5\u00fd\u00d4\u00da\u00ca\u00b9\u00d3\u00c3\u00b5\u00c4\u00cd\u00f8\u00c2\u00e7\u00d1\u00da\u00c2\u00eb\u00a1\u00a3 -message.installWizard.tooltip.addPod.reservedSystemStartIp=\u00b4\u00cb\u00ce\u00aa CloudStack \u00d3\u00c3\u00d3\u00da\u00b9\u00dc\u00c0\u00ed\u00b6\u00fe\u00bc\u00b6\u00b4\u00e6\u00b4\u00a2 VM \u00ba\u00cd\u00bf\u00d8\u00d6\u00c6\u00cc\u00a8\u00b4\u00fa\u00c0\u00ed VM \u00b5\u00c4\u00d7\u00a8\u00d3\u00c3\u00cd\u00f8\u00c2\u00e7\u00d6\u00d0\u00b5\u00c4 IP \u00b7\u00b6\u00ce\u00a7\u00a1\u00a3\u00d5\u00e2\u00d0\u00a9 IP \u00b5\u00d8\u00d6\u00b7\u00c0\u00b4\u00d7\u00d4\u00d3\u00eb\u00bc\u00c6\u00cb\u00e3\u00b7\u00fe\u00ce\u00f1\u00c6\u00f7\u00cf\u00e0\u00cd\u00ac\u00b5\u00c4\u00d7\u00d3\u00cd\u00f8\u00a1\u00a3 -message.installWizard.tooltip.addPrimaryStorage.name=\u00b4\u00e6\u00b4\u00a2\u00c9\u00e8\u00b1\u00b8\u00b5\u00c4\u00c3\u00fb\u00b3\u00c6\u00a1\u00a3 -message.installWizard.tooltip.addPrimaryStorage.path=(\u00ca\u00ca\u00d3\u00c3\u00d3\u00da NFS)\u00d4\u00da NFS \u00d6\u00d0\u00a3\u00ac\u00b4\u00cb\u00c2\u00b7\u00be\u00b6\u00ce\u00aa\u00b7\u00fe\u00ce\u00f1\u00c6\u00f7\u00b5\u00c4\u00b5\u00bc\u00b3\u00f6\u00c2\u00b7\u00be\u00b6\u00a1\u00a3\u00c2\u00b7\u00be\u00b6(\u00d5\u00eb\u00b6\u00d4 SharedMountPoint)\u00a1\u00a3\u00b6\u00d4\u00d3\u00da KVM\u00a3\u00ac\u00b4\u00cb\u00c2\u00b7\u00be\u00b6\u00ce\u00aa\u00d7\u00b0\u00d4\u00d8\u00c1\u00cb\u00b6\u00fe\u00bc\u00b6\u00b4\u00e6\u00b4\u00a2\u00b5\u00c4\u00c3\u00bf\u00b8\u00f6\u00d6\u00f7\u00bb\u00fa\u00c9\u00cf\u00b5\u00c4\u00c2\u00b7\u00be\u00b6\u00a1\u00a3\u00c0\u00fd\u00c8\u00e7\u00a3\u00ac/mnt/primary\u00a1\u00a3 -message.installWizard.tooltip.addPrimaryStorage.server=(\u00ca\u00ca\u00d3\u00c3\u00d3\u00da NFS\u00a1\u00a2iSCSI \u00bb\u00f2 PreSetup)\u00b4\u00e6\u00b4\u00a2\u00c9\u00e8\u00b1\u00b8\u00b5\u00c4 IP \u00b5\u00d8\u00d6\u00b7\u00bb\u00f2 DNS \u00c3\u00fb\u00b3\u00c6\u00a1\u00a3 -message.installWizard.tooltip.addSecondaryStorage.nfsServer=\u00cd\u00d0\u00b9\u00dc\u00b6\u00fe\u00bc\u00b6\u00b4\u00e6\u00b4\u00a2\u00b5\u00c4 NFS \u00b7\u00fe\u00ce\u00f1\u00c6\u00f7\u00b5\u00c4 IP \u00b5\u00d8\u00d6\u00b7 -message.installWizard.tooltip.addSecondaryStorage.path=\u00b5\u00bc\u00b3\u00f6\u00c2\u00b7\u00be\u00b6(\u00ce\u00bb\u00d3\u00da\u00c9\u00cf\u00ca\u00f6\u00d6\u00b8\u00b6\u00a8\u00b7\u00fe\u00ce\u00f1\u00c6\u00f7\u00c9\u00cf) -message.installWizard.tooltip.addZone.dns1=\u00d5\u00e2\u00d0\u00a9\u00b7\u00fe\u00ce\u00f1\u00c6\u00f7\u00ca\u00c7\u00b9\u00a9\u00b4\u00cb\u00d7\u00ca\u00d4\u00b4\u00d3\u00f2\u00d6\u00d0\u00b5\u00c4\u00c0\u00b4\u00b1\u00f6 VM \u00ca\u00b9\u00d3\u00c3\u00b5\u00c4 DNS \u00b7\u00fe\u00ce\u00f1\u00c6\u00f7\u00a3\u00ac\u00bd\u00ab\u00cd\u00a8\u00b9\u00fd\u00c4\u00fa\u00c9\u00d4\u00ba\u00f3\u00d2\u00aa\u00cc\u00ed\u00bc\u00d3\u00b5\u00c4\u00b9\u00ab\u00d3\u00c3\u00cd\u00f8\u00c2\u00e7\u00bd\u00f8\u00d0\u00d0\u00b7\u00c3\u00ce\u00ca\u00a1\u00a3\u00b4\u00cb\u00d7\u00ca\u00d4\u00b4\u00d3\u00f2\u00b5\u00c4\u00b9\u00ab\u00d3\u00c3 IP \u00b5\u00d8\u00d6\u00b7\u00b1\u00d8\u00d0\u00eb\u00c2\u00b7\u00d3\u00c9\u00b5\u00bd\u00d4\u00da\u00b4\u00cb\u00b4\u00a6\u00d6\u00b8\u00b6\u00a8\u00b5\u00c4 DNS \u00b7\u00fe\u00ce\u00f1\u00c6\u00f7\u00a1\u00a3 -message.installWizard.tooltip.addZone.dns2=\u00d5\u00e2\u00d0\u00a9\u00b7\u00fe\u00ce\u00f1\u00c6\u00f7\u00ca\u00c7\u00b9\u00a9\u00b4\u00cb\u00d7\u00ca\u00d4\u00b4\u00d3\u00f2\u00d6\u00d0\u00b5\u00c4\u00c0\u00b4\u00b1\u00f6 VM \u00ca\u00b9\u00d3\u00c3\u00b5\u00c4 DNS \u00b7\u00fe\u00ce\u00f1\u00c6\u00f7\u00a3\u00ac\u00bd\u00ab\u00cd\u00a8\u00b9\u00fd\u00c4\u00fa\u00c9\u00d4\u00ba\u00f3\u00d2\u00aa\u00cc\u00ed\u00bc\u00d3\u00b5\u00c4\u00b9\u00ab\u00d3\u00c3\u00cd\u00f8\u00c2\u00e7\u00bd\u00f8\u00d0\u00d0\u00b7\u00c3\u00ce\u00ca\u00a1\u00a3\u00b4\u00cb\u00d7\u00ca\u00d4\u00b4\u00d3\u00f2\u00b5\u00c4\u00b9\u00ab\u00d3\u00c3 IP \u00b5\u00d8\u00d6\u00b7\u00b1\u00d8\u00d0\u00eb\u00c2\u00b7\u00d3\u00c9\u00b5\u00bd\u00d4\u00da\u00b4\u00cb\u00b4\u00a6\u00d6\u00b8\u00b6\u00a8\u00b5\u00c4 DNS \u00b7\u00fe\u00ce\u00f1\u00c6\u00f7\u00a1\u00a3 -message.installWizard.tooltip.addZone.internaldns1=\u00d5\u00e2\u00d0\u00a9\u00b7\u00fe\u00ce\u00f1\u00c6\u00f7\u00ca\u00c7\u00b9\u00a9\u00b4\u00cb\u00d7\u00ca\u00d4\u00b4\u00d3\u00f2\u00d6\u00d0\u00b5\u00c4\u00cf\u00b5\u00cd\u00b3 VM \u00ca\u00b9\u00d3\u00c3\u00b5\u00c4 DNS \u00b7\u00fe\u00ce\u00f1\u00c6\u00f7\u00a3\u00ac\u00bd\u00ab\u00cd\u00a8\u00b9\u00fd\u00cf\u00b5\u00cd\u00b3 VM \u00b5\u00c4\u00d7\u00a8\u00d3\u00c3\u00cd\u00f8\u00c2\u00e7\u00bd\u00d3\u00bf\u00da\u00bd\u00f8\u00d0\u00d0\u00b7\u00c3\u00ce\u00ca\u00a1\u00a3\u00c4\u00fa\u00ce\u00aa\u00cc\u00e1\u00b9\u00a9\u00b5\u00e3\u00cc\u00e1\u00b9\u00a9\u00b5\u00c4\u00d7\u00a8\u00d3\u00c3 IP \u00b5\u00d8\u00d6\u00b7\u00b1\u00d8\u00d0\u00eb\u00c2\u00b7\u00d3\u00c9\u00b5\u00bd\u00d4\u00da\u00b4\u00cb\u00b4\u00a6\u00d6\u00b8\u00b6\u00a8\u00b5\u00c4 DNS \u00b7\u00fe\u00ce\u00f1\u00c6\u00f7\u00a1\u00a3 -message.installWizard.tooltip.addZone.internaldns2=\u00d5\u00e2\u00d0\u00a9\u00b7\u00fe\u00ce\u00f1\u00c6\u00f7\u00ca\u00c7\u00b9\u00a9\u00b4\u00cb\u00d7\u00ca\u00d4\u00b4\u00d3\u00f2\u00d6\u00d0\u00b5\u00c4\u00cf\u00b5\u00cd\u00b3 VM \u00ca\u00b9\u00d3\u00c3\u00b5\u00c4 DNS \u00b7\u00fe\u00ce\u00f1\u00c6\u00f7\u00a3\u00ac\u00bd\u00ab\u00cd\u00a8\u00b9\u00fd\u00cf\u00b5\u00cd\u00b3 VM \u00b5\u00c4\u00d7\u00a8\u00d3\u00c3\u00cd\u00f8\u00c2\u00e7\u00bd\u00d3\u00bf\u00da\u00bd\u00f8\u00d0\u00d0\u00b7\u00c3\u00ce\u00ca\u00a1\u00a3\u00c4\u00fa\u00ce\u00aa\u00cc\u00e1\u00b9\u00a9\u00b5\u00e3\u00cc\u00e1\u00b9\u00a9\u00b5\u00c4\u00d7\u00a8\u00d3\u00c3 IP \u00b5\u00d8\u00d6\u00b7\u00b1\u00d8\u00d0\u00eb\u00c2\u00b7\u00d3\u00c9\u00b5\u00bd\u00d4\u00da\u00b4\u00cb\u00b4\u00a6\u00d6\u00b8\u00b6\u00a8\u00b5\u00c4 DNS \u00b7\u00fe\u00ce\u00f1\u00c6\u00f7\u00a1\u00a3 -message.installWizard.tooltip.addZone.name=\u00d7\u00ca\u00d4\u00b4\u00d3\u00f2\u00c3\u00fb\u00b3\u00c6 -message.installWizard.tooltip.configureGuestTraffic.description=\u00c4\u00fa\u00b5\u00c4\u00cd\u00f8\u00c2\u00e7\u00cb\u00b5\u00c3\u00f7 -message.installWizard.tooltip.configureGuestTraffic.guestEndIp=\u00c4\u00dc\u00b9\u00bb\u00b7\u00d6\u00c5\u00e4\u00b8\u00f8\u00b4\u00cb\u00d7\u00ca\u00d4\u00b4\u00d3\u00f2\u00d6\u00d0\u00b5\u00c4\u00c0\u00b4\u00b1\u00f6\u00b5\u00c4 IP \u00b5\u00d8\u00d6\u00b7\u00b7\u00b6\u00ce\u00a7\u00a1\u00a3\u00c8\u00e7\u00b9\u00fb\u00ca\u00b9\u00d3\u00c3\u00d2\u00bb\u00b8\u00f6 NIC\u00a3\u00ac\u00d5\u00e2\u00d0\u00a9 IP \u00d3\u00a6\u00ce\u00bb\u00d3\u00da\u00d3\u00eb\u00cc\u00e1\u00b9\u00a9\u00b5\u00e3 CIDR \u00cf\u00e0\u00cd\u00ac\u00b5\u00c4 CIDR \u00d6\u00d0\u00a1\u00a3 -message.installWizard.tooltip.configureGuestTraffic.guestGateway=\u00c0\u00b4\u00b1\u00f6\u00d3\u00a6\u00ca\u00b9\u00d3\u00c3\u00b5\u00c4\u00cd\u00f8\u00b9\u00d8 -message.installWizard.tooltip.configureGuestTraffic.guestNetmask=\u00c0\u00b4\u00b1\u00f6\u00d3\u00a6\u00ca\u00b9\u00d3\u00c3\u00b5\u00c4\u00d7\u00d3\u00cd\u00f8\u00c9\u00cf\u00d5\u00fd\u00d4\u00da\u00ca\u00b9\u00d3\u00c3\u00b5\u00c4\u00cd\u00f8\u00c2\u00e7\u00d1\u00da\u00c2\u00eb -message.installWizard.tooltip.configureGuestTraffic.guestStartIp=\u00c4\u00dc\u00b9\u00bb\u00b7\u00d6\u00c5\u00e4\u00b8\u00f8\u00b4\u00cb\u00d7\u00ca\u00d4\u00b4\u00d3\u00f2\u00d6\u00d0\u00b5\u00c4\u00c0\u00b4\u00b1\u00f6\u00b5\u00c4 IP \u00b5\u00d8\u00d6\u00b7\u00b7\u00b6\u00ce\u00a7\u00a1\u00a3\u00c8\u00e7\u00b9\u00fb\u00ca\u00b9\u00d3\u00c3\u00d2\u00bb\u00b8\u00f6 NIC\u00a3\u00ac\u00d5\u00e2\u00d0\u00a9 IP \u00d3\u00a6\u00ce\u00bb\u00d3\u00da\u00d3\u00eb\u00cc\u00e1\u00b9\u00a9\u00b5\u00e3 CIDR \u00cf\u00e0\u00cd\u00ac\u00b5\u00c4 CIDR \u00d6\u00d0\u00a1\u00a3 -message.installWizard.tooltip.configureGuestTraffic.name=\u00c4\u00fa\u00b5\u00c4\u00cd\u00f8\u00c2\u00e7\u00c3\u00fb\u00b3\u00c6 -message.instanceWizard.noTemplates=\u00c4\u00fa\u00c3\u00bb\u00d3\u00d0\u00c8\u00ce\u00ba\u00ce\u00bf\u00c9\u00d3\u00c3\u00c4\u00a3\u00b0\u00e5\u00a3\u00bb\u00c7\u00eb\u00cc\u00ed\u00bc\u00d3\u00d2\u00bb\u00b8\u00f6\u00bc\u00e6\u00c8\u00dd\u00b5\u00c4\u00c4\u00a3\u00b0\u00e5\u00a3\u00ac\u00c8\u00bb\u00ba\u00f3\u00d6\u00d8\u00d0\u00c2\u00c6\u00f4\u00b6\u00af\u00ca\u00b5\u00c0\u00fd\u00cf\u00f2\u00b5\u00bc\u00a1\u00a3 -message.ip.address.changed=\u00c4\u00fa\u00b5\u00c4 IP \u00b5\u00d8\u00d6\u00b7\u00bf\u00c9\u00c4\u00dc\u00d2\u00d1\u00b7\u00a2\u00c9\u00fa\u00b1\u00e4\u00bb\u00af\u00a3\u00bb\u00ca\u00c7\u00b7\u00f1\u00d2\u00aa\u00cb\u00a2\u00d0\u00c2\u00b4\u00cb\u00c1\u00d0\u00b1\u00ed? \u00c7\u00eb\u00d7\u00a2\u00d2\u00e2\u00a3\u00ac\u00cb\u00a2\u00d0\u00c2\u00b4\u00cb\u00c1\u00d0\u00b1\u00ed\u00ca\u00b1\u00a3\u00ac\u00a1\u00b0\u00cf\u00ea\u00cf\u00b8\u00d0\u00c5\u00cf\u00a2\u00a1\u00b1\u00b4\u00b0\u00b8\u00f1\u00bd\u00ab\u00b9\u00d8\u00b1\u00d5\u00a1\u00a3 -message.iso.desc=\u00b4\u00c5\u00c5\u00cc\u00d3\u00b3\u00cf\u00f1\u00a3\u00ac\u00c6\u00e4\u00d6\u00d0\u00b0\u00fc\u00ba\u00ac\u00b2\u00d9\u00d7\u00f7\u00cf\u00b5\u00cd\u00b3\u00b5\u00c4\u00ca\u00fd\u00be\u00dd\u00bb\u00f2\u00bf\u00c9\u00c6\u00f4\u00b6\u00af\u00bd\u00e9\u00d6\u00ca -message.join.project=\u00c4\u00fa\u00cf\u00d6\u00d4\u00da\u00d2\u00d1\u00bc\u00d3\u00c8\u00eb\u00c1\u00cb\u00d2\u00bb\u00b8\u00f6\u00cf\u00ee\u00c4\u00bf\u00a1\u00a3\u00c7\u00eb\u00c7\u00d0\u00bb\u00bb\u00b5\u00bd\u00a1\u00b0\u00cf\u00ee\u00c4\u00bf\u00ca\u00d3\u00cd\u00bc\u00a1\u00b1\u00d2\u00d4\u00b2\u00e9\u00bf\u00b4\u00cf\u00ee\u00c4\u00bf\u00a1\u00a3 -message.launch.vm.on.private.network=\u00ca\u00c7\u00b7\u00f1\u00d2\u00aa\u00d4\u00da\u00c4\u00fa\u00b5\u00c4\u00cb\u00bd\u00c8\u00cb\u00d7\u00a8\u00d3\u00c3\u00cd\u00f8\u00c2\u00e7\u00d6\u00d0\u00c6\u00f4\u00b6\u00af\u00ca\u00b5\u00c0\u00fd? -message.launch.zone=\u00d7\u00ca\u00d4\u00b4\u00d3\u00f2\u00d2\u00d1\u00d7\u00bc\u00b1\u00b8\u00be\u00cd\u00d0\u00f7\u00a3\u00ac\u00bf\u00c9\u00cb\u00e6\u00ca\u00b1\u00c6\u00f4\u00b6\u00af\u00a3\u00bb\u00c7\u00eb\u00bc\u00cc\u00d0\u00f8\u00d6\u00b4\u00d0\u00d0\u00cf\u00c2\u00d2\u00bb\u00b2\u00bd\u00d6\u00e8\u00a1\u00a3 -message.lock.account=\u00c7\u00eb\u00c8\u00b7\u00c8\u00cf\u00c4\u00fa\u00c8\u00b7\u00ca\u00b5\u00d2\u00aa\u00cb\u00f8\u00b6\u00a8\u00b4\u00cb\u00d5\u00ca\u00bb\u00a7\u00a1\u00a3\u00cd\u00a8\u00b9\u00fd\u00cb\u00f8\u00b6\u00a8\u00b4\u00cb\u00d5\u00ca\u00bb\u00a7\u00a3\u00ac\u00b4\u00cb\u00d5\u00ca\u00bb\u00a7\u00b5\u00c4\u00cb\u00f9\u00d3\u00d0\u00d3\u00c3\u00bb\u00a7\u00bd\u00ab\u00b2\u00bb\u00d4\u00d9\u00c4\u00dc\u00b9\u00bb\u00b9\u00dc\u00c0\u00ed\u00b8\u00f7\u00d7\u00d4\u00b5\u00c4\u00d4\u00c6\u00d7\u00ca\u00d4\u00b4\u00a3\u00ac\u00b5\u00ab\u00c8\u00d4\u00c8\u00bb\u00bf\u00c9\u00d2\u00d4\u00b7\u00c3\u00ce\u00ca\u00cf\u00d6\u00d3\u00d0\u00d7\u00ca\u00d4\u00b4\u00a1\u00a3 -message.migrate.instance.confirm=\u00c7\u00eb\u00c8\u00b7\u00c8\u00cf\u00d2\u00aa\u00bd\u00ab\u00d0\u00e9\u00c4\u00e2\u00ca\u00b5\u00c0\u00fd\u00c7\u00a8\u00d2\u00c6\u00b5\u00bd\u00b5\u00c4\u00d6\u00f7\u00bb\u00fa\u00a1\u00a3 -message.migrate.instance.to.host=\u00c7\u00eb\u00c8\u00b7\u00c8\u00cf\u00c4\u00fa\u00c8\u00b7\u00ca\u00b5\u00d2\u00aa\u00bd\u00ab\u00ca\u00b5\u00c0\u00fd\u00c7\u00a8\u00d2\u00c6\u00b5\u00bd\u00c6\u00e4\u00cb\u00fb\u00d6\u00f7\u00bb\u00fa\u00a1\u00a3 -message.migrate.instance.to.ps=\u00c7\u00eb\u00c8\u00b7\u00c8\u00cf\u00c4\u00fa\u00c8\u00b7\u00ca\u00b5\u00d2\u00aa\u00bd\u00ab\u00ca\u00b5\u00c0\u00fd\u00c7\u00a8\u00d2\u00c6\u00b5\u00bd\u00c6\u00e4\u00cb\u00fb\u00d6\u00f7\u00b4\u00e6\u00b4\u00a2\u00a1\u00a3 -message.migrate.router.confirm=\u00c7\u00eb\u00c8\u00b7\u00c8\u00cf\u00c4\u00fa\u00d2\u00aa\u00bd\u00ab\u00c2\u00b7\u00d3\u00c9\u00c6\u00f7\u00c7\u00a8\u00d2\u00c6\u00b5\u00bd\u00b5\u00c4\u00d6\u00f7\u00bb\u00fa\: -message.migrate.systemvm.confirm=\u00c7\u00eb\u00c8\u00b7\u00c8\u00cf\u00c4\u00fa\u00d2\u00aa\u00bd\u00ab\u00cf\u00b5\u00cd\u00b3 VM \u00c7\u00a8\u00d2\u00c6\u00b5\u00bd\u00b5\u00c4\u00d6\u00f7\u00bb\u00fa\: -message.migrate.volume=\u00c7\u00eb\u00c8\u00b7\u00c8\u00cf\u00c4\u00fa\u00c8\u00b7\u00ca\u00b5\u00d2\u00aa\u00bd\u00ab\u00be\u00ed\u00c7\u00a8\u00d2\u00c6\u00b5\u00bd\u00c6\u00e4\u00cb\u00fb\u00d6\u00f7\u00b4\u00e6\u00b4\u00a2\u00a1\u00a3 -message.new.user=\u00c7\u00eb\u00d6\u00b8\u00b6\u00a8\u00d2\u00d4\u00cf\u00c2\u00d0\u00c5\u00cf\u00a2\u00d2\u00d4\u00cf\u00f2\u00d5\u00ca\u00bb\u00a7\u00d6\u00d0\u00cc\u00ed\u00bc\u00d3\u00d2\u00bb\u00b8\u00f6\u00d0\u00c2\u00d3\u00c3\u00bb\u00a7 -message.no.network.support.configuration.not.true=\u00c4\u00fa\u00b5\u00c4\u00cb\u00f9\u00d3\u00d0\u00d7\u00ca\u00d4\u00b4\u00d3\u00f2\u00b6\u00bc\u00ce\u00b4\u00c6\u00f4\u00d3\u00c3\u00b0\u00b2\u00c8\u00ab\u00d7\u00e9\u00a3\u00ac\u00d2\u00f2\u00b4\u00cb\u00ce\u00de\u00c6\u00e4\u00cb\u00fb\u00cd\u00f8\u00c2\u00e7\u00b9\u00a6\u00c4\u00dc\u00a1\u00a3\u00c7\u00eb\u00bc\u00cc\u00d0\u00f8\u00d6\u00b4\u00d0\u00d0\u00b2\u00bd\u00d6\u00e8 5\u00a1\u00a3 -message.no.network.support=\u00c4\u00fa\u00d1\u00a1\u00d4\u00f1\u00b5\u00c4\u00d0\u00e9\u00c4\u00e2\u00bb\u00fa\u00b9\u00dc\u00c0\u00ed\u00b3\u00cc\u00d0\u00f2 vSphere \u00c3\u00bb\u00d3\u00d0\u00c8\u00ce\u00ba\u00ce\u00c6\u00e4\u00cb\u00fb\u00cd\u00f8\u00c2\u00e7\u00b9\u00a6\u00c4\u00dc\u00a1\u00a3\u00c7\u00eb\u00bc\u00cc\u00d0\u00f8\u00d6\u00b4\u00d0\u00d0\u00b2\u00bd\u00d6\u00e8 5\u00a1\u00a3 -message.no.projects.adminOnly=\u00c4\u00fa\u00c3\u00bb\u00d3\u00d0\u00c8\u00ce\u00ba\u00ce\u00cf\u00ee\u00c4\u00bf\u00a1\u00a3
\u00c7\u00eb\u00d2\u00aa\u00c7\u00f3\u00b9\u00dc\u00c0\u00ed\u00d4\u00b1\u00b4\u00b4\u00bd\u00a8\u00d2\u00bb\u00b8\u00f6\u00d0\u00c2\u00cf\u00ee\u00c4\u00bf\u00a1\u00a3 -message.no.projects=\u00c4\u00fa\u00c3\u00bb\u00d3\u00d0\u00c8\u00ce\u00ba\u00ce\u00cf\u00ee\u00c4\u00bf\u00a1\u00a3
\u00c7\u00eb\u00b4\u00d3\u00a1\u00b0\u00cf\u00ee\u00c4\u00bf\u00a1\u00b1\u00b2\u00bf\u00b7\u00d6\u00d6\u00d0\u00b4\u00b4\u00bd\u00a8\u00d2\u00bb\u00b8\u00f6\u00d0\u00c2\u00cf\u00ee\u00c4\u00bf\u00a1\u00a3 -message.number.clusters=

\u00c8\u00ba\u00bc\u00af\u00ca\u00fd

-message.number.hosts=

\u00d6\u00f7\u00bb\u00fa\u00ca\u00fd

-message.number.pods=

\u00cc\u00e1\u00b9\u00a9\u00b5\u00e3\u00ca\u00fd

-message.number.storage=

\u00d6\u00f7\u00b4\u00e6\u00b4\u00a2\u00be\u00ed\u00ca\u00fd

-message.number.zones=

\u00d7\u00ca\u00d4\u00b4\u00d3\u00f2\u00ca\u00fd

-message.pending.projects.1=\u00c4\u00fa\u00d3\u00d0\u00b4\u00fd\u00b6\u00a8\u00cf\u00ee\u00c4\u00bf\u00d1\u00fb\u00c7\u00eb\: -message.pending.projects.2=\u00d2\u00aa\u00b2\u00e9\u00bf\u00b4\u00a3\u00ac\u00c7\u00eb\u00d7\u00aa\u00d6\u00c1\u00a1\u00b0\u00cf\u00ee\u00c4\u00bf\u00a1\u00b1\u00b2\u00bf\u00b7\u00d6\u00a3\u00ac\u00c8\u00bb\u00ba\u00f3\u00b4\u00d3\u00cf\u00c2\u00c0\u00ad\u00c1\u00d0\u00b1\u00ed\u00d6\u00d0\u00d1\u00a1\u00d4\u00f1\u00a1\u00b0\u00d1\u00fb\u00c7\u00eb\u00a1\u00b1\u00a1\u00a3 -message.please.add.at.lease.one.traffic.range=\u00c7\u00eb\u00d6\u00c1\u00c9\u00d9\u00cc\u00ed\u00bc\u00d3\u00d2\u00bb\u00b8\u00f6\u00c1\u00f7\u00c1\u00bf\u00b7\u00b6\u00ce\u00a7\u00a1\u00a3 -message.please.proceed=\u00c7\u00eb\u00bc\u00cc\u00d0\u00f8\u00d6\u00b4\u00d0\u00d0\u00cf\u00c2\u00b8\u00f6\u00b2\u00bd\u00d6\u00e8\u00a1\u00a3 -message.please.select.a.configuration.for.your.zone=\u00c7\u00eb\u00ce\u00aa\u00c4\u00fa\u00b5\u00c4\u00d7\u00ca\u00d4\u00b4\u00d3\u00f2\u00d1\u00a1\u00d4\u00f1\u00d2\u00bb\u00d6\u00d6\u00c5\u00e4\u00d6\u00c3\u00a1\u00a3 -message.please.select.a.different.public.and.management.network.before.removing=\u00c7\u00eb\u00cf\u00c8\u00d1\u00a1\u00d4\u00f1\u00c6\u00e4\u00cb\u00fb\u00b9\u00ab\u00d3\u00c3\u00b9\u00dc\u00c0\u00ed\u00cd\u00f8\u00c2\u00e7\u00a3\u00ac\u00c8\u00bb\u00ba\u00f3\u00d4\u00d9\u00c9\u00be\u00b3\u00fd -message.please.select.networks=\u00c7\u00eb\u00ce\u00aa\u00c4\u00fa\u00b5\u00c4\u00d0\u00e9\u00c4\u00e2\u00bb\u00fa\u00d1\u00a1\u00d4\u00f1\u00cd\u00f8\u00c2\u00e7\u00a1\u00a3 -message.please.wait.while.zone.is.being.created=\u00d5\u00fd\u00d4\u00da\u00b4\u00b4\u00bd\u00a8\u00d7\u00ca\u00d4\u00b4\u00d3\u00f2\u00a3\u00ac\u00c7\u00eb\u00c9\u00d4\u00ba\u00f2\u00a3\u00bb\u00b4\u00cb\u00b2\u00d9\u00d7\u00f7\u00bf\u00c9\u00c4\u00dc\u00d0\u00e8\u00d2\u00aa\u00d2\u00bb\u00b6\u00ce\u00ca\u00b1\u00bc\u00e4\u00b2\u00c5\u00c4\u00dc\u00cd\u00ea\u00b3\u00c9... -message.project.invite.sent=\u00b7\u00a2\u00cb\u00cd\u00b8\u00f8\u00d3\u00c3\u00bb\u00a7\u00b5\u00c4\u00d1\u00fb\u00c7\u00eb\u00a3\u00bb\u00d3\u00c3\u00bb\u00a7\u00bd\u00d3\u00ca\u00dc\u00d1\u00fb\u00c7\u00eb\u00ba\u00f3\u00a3\u00ac\u00bd\u00ab\u00bc\u00d3\u00c8\u00eb\u00b5\u00bd\u00cf\u00ee\u00c4\u00bf\u00d6\u00d0 -message.public.traffic.in.advanced.zone=\u00d4\u00c6\u00d6\u00d0\u00b5\u00c4 VM \u00b7\u00c3\u00ce\u00ca Internet \u00ca\u00b1\u00bd\u00ab\u00c9\u00fa\u00b3\u00c9\u00b9\u00ab\u00b9\u00b2\u00c1\u00f7\u00c1\u00bf\u00a3\u00ac\u00b5\u00ab\u00b1\u00d8\u00d0\u00eb\u00b7\u00d6\u00c5\u00e4\u00bf\u00c9\u00b9\u00ab\u00bf\u00aa\u00b7\u00c3\u00ce\u00ca\u00b5\u00c4 IP \u00b2\u00c5\u00c4\u00dc\u00ca\u00b5\u00cf\u00d6\u00a1\u00a3\u00d7\u00ee\u00d6\u00d5\u00d3\u00c3\u00bb\u00a7\u00bf\u00c9\u00d2\u00d4\u00ca\u00b9\u00d3\u00c3 CloudStack UI \u00bb\u00f1\u00c8\u00a1\u00d5\u00e2\u00d0\u00a9 IP\u00a3\u00ac\u00d2\u00d4\u00d4\u00da\u00c6\u00e4\u00c0\u00b4\u00b1\u00f6\u00cd\u00f8\u00c2\u00e7\u00d3\u00eb\u00b9\u00ab\u00d3\u00c3\u00cd\u00f8\u00c2\u00e7\u00d6\u00ae\u00bc\u00e4\u00d6\u00b4\u00d0\u00d0 NAT\u00a1\u00a3

\u00c7\u00eb\u00d6\u00c1\u00c9\u00d9\u00ce\u00aa Internet \u00c1\u00f7\u00c1\u00bf\u00cc\u00e1\u00b9\u00a9\u00d2\u00bb\u00b8\u00f6 IP \u00b5\u00d8\u00d6\u00b7\u00b7\u00b6\u00ce\u00a7\u00a1\u00a3 -message.public.traffic.in.basic.zone=\u00d4\u00c6\u00d6\u00d0\u00b5\u00c4 VM \u00b7\u00c3\u00ce\u00ca Internet \u00bb\u00f2\u00cd\u00a8\u00b9\u00fd Internet \u00cf\u00f2\u00bf\u00cd\u00bb\u00a7\u00b6\u00cb\u00cc\u00e1\u00b9\u00a9\u00b7\u00fe\u00ce\u00f1\u00ca\u00b1\u00bd\u00ab\u00c9\u00fa\u00b3\u00c9\u00b9\u00ab\u00b9\u00b2\u00c1\u00f7\u00c1\u00bf\u00a3\u00ac\u00b5\u00ab\u00b1\u00d8\u00d0\u00eb\u00b7\u00d6\u00c5\u00e4\u00bf\u00c9\u00b9\u00ab\u00bf\u00aa\u00b7\u00c3\u00ce\u00ca\u00b5\u00c4 IP \u00b2\u00c5\u00c4\u00dc\u00ca\u00b5\u00cf\u00d6\u00a1\u00a3\u00b4\u00b4\u00bd\u00a8\u00ca\u00b5\u00c0\u00fd\u00ca\u00b1\u00a3\u00ac\u00bd\u00ab\u00b0\u00d1\u00d5\u00e2\u00d2\u00bb\u00d7\u00e9\u00b9\u00ab\u00d3\u00c3 IP \u00d6\u00d0\u00b5\u00c4 IP (\u00c0\u00b4\u00b1\u00f6 IP \u00b5\u00d8\u00d6\u00b7\u00b3\u00fd\u00cd\u00e2)\u00b7\u00d6\u00c5\u00e4\u00b8\u00f8\u00b4\u00cb\u00ca\u00b5\u00c0\u00fd\u00a1\u00a3\u00be\u00b2\u00cc\u00ac 1-1 NAT \u00bd\u00ab\u00d4\u00da\u00b9\u00ab\u00d3\u00c3 IP \u00d3\u00eb\u00c0\u00b4\u00b1\u00f6 IP \u00d6\u00ae\u00bc\u00e4\u00d7\u00d4\u00b6\u00af\u00c9\u00e8\u00d6\u00c3\u00a1\u00a3\u00d7\u00ee\u00d6\u00d5\u00d3\u00c3\u00bb\u00a7\u00bb\u00b9\u00bf\u00c9\u00d2\u00d4\u00ca\u00b9\u00d3\u00c3 CloudStack UI \u00bb\u00f1\u00c8\u00a1\u00c6\u00e4\u00cb\u00fb IP\u00a3\u00ac\u00d2\u00d4\u00d4\u00da\u00c6\u00e4\u00ca\u00b5\u00c0\u00fd\u00d3\u00eb\u00b9\u00ab\u00d3\u00c3 IP \u00d6\u00ae\u00bc\u00e4\u00d6\u00b4\u00d0\u00d0\u00be\u00b2\u00cc\u00ac NAT\u00a1\u00a3 -message.redirecting.region=\u00d5\u00fd\u00d4\u00da\u00d6\u00d8\u00b6\u00a8\u00cf\u00f2\u00b5\u00bd\u00b5\u00d8\u00c0\u00ed\u00c7\u00f8\u00d3\u00f2... -message.remove.region=\u00ca\u00c7\u00b7\u00f1\u00c8\u00b7\u00ca\u00b5\u00d2\u00aa\u00b4\u00d3\u00b4\u00cb\u00b9\u00dc\u00c0\u00ed\u00b7\u00fe\u00ce\u00f1\u00c6\u00f7\u00d6\u00d0\u00c9\u00be\u00b3\u00fd\u00b4\u00cb\u00b5\u00d8\u00c0\u00ed\u00c7\u00f8\u00d3\u00f2? -message.remove.vpc=\u00c7\u00eb\u00c8\u00b7\u00c8\u00cf\u00c4\u00fa\u00c8\u00b7\u00ca\u00b5\u00d2\u00aa\u00c9\u00be\u00b3\u00fd VPC -message.remove.vpn.access=\u00c7\u00eb\u00c8\u00b7\u00c8\u00cf\u00c4\u00fa\u00c8\u00b7\u00ca\u00b5\u00d2\u00aa\u00c9\u00be\u00b3\u00fd\u00d2\u00d4\u00cf\u00c2\u00d3\u00c3\u00bb\u00a7\u00b5\u00c4 VPN \u00b7\u00c3\u00ce\u00ca\u00a1\u00a3 -message.reset.password.warning.notPasswordEnabled=\u00b4\u00b4\u00bd\u00a8\u00b4\u00cb\u00ca\u00b5\u00c0\u00fd\u00b5\u00c4\u00c4\u00a3\u00b0\u00e5\u00ca\u00b1\u00ce\u00b4\u00c6\u00f4\u00d3\u00c3\u00c3\u00dc\u00c2\u00eb -message.reset.password.warning.notStopped=\u00b1\u00d8\u00d0\u00eb\u00cf\u00c8\u00cd\u00a3\u00d6\u00b9\u00c4\u00fa\u00b5\u00c4\u00ca\u00b5\u00c0\u00fd\u00a3\u00ac\u00b2\u00c5\u00c4\u00dc\u00b3\u00a2\u00ca\u00d4\u00b8\u00fc\u00b8\u00c4\u00c6\u00e4\u00b5\u00b1\u00c7\u00b0\u00c3\u00dc\u00c2\u00eb -message.reset.VPN.connection=\u00c7\u00eb\u00c8\u00b7\u00c8\u00cf\u00c4\u00fa\u00c8\u00b7\u00ca\u00b5\u00d2\u00aa\u00d6\u00d8\u00d6\u00c3 VPN \u00c1\u00ac\u00bd\u00d3 -message.restart.mgmt.server=\u00c7\u00eb\u00d6\u00d8\u00d0\u00c2\u00c6\u00f4\u00b6\u00af\u00b9\u00dc\u00c0\u00ed\u00b7\u00fe\u00ce\u00f1\u00c6\u00f7\u00d2\u00d4\u00ca\u00b9\u00c4\u00fa\u00b5\u00c4\u00d0\u00c2\u00c9\u00e8\u00d6\u00c3\u00c9\u00fa\u00d0\u00a7\u00a1\u00a3 -message.restart.mgmt.usage.server=\u00c7\u00eb\u00d6\u00d8\u00d0\u00c2\u00c6\u00f4\u00b6\u00af\u00b9\u00dc\u00c0\u00ed\u00b7\u00fe\u00ce\u00f1\u00c6\u00f7\u00ba\u00cd\u00ca\u00b9\u00d3\u00c3\u00b7\u00fe\u00ce\u00f1\u00c6\u00f7\u00d2\u00d4\u00ca\u00b9\u00c4\u00fa\u00b5\u00c4\u00d0\u00c2\u00c9\u00e8\u00d6\u00c3\u00c9\u00fa\u00d0\u00a7\u00a1\u00a3 -message.restart.network=\u00b4\u00cb\u00cd\u00f8\u00c2\u00e7\u00cc\u00e1\u00b9\u00a9\u00b5\u00c4\u00cb\u00f9\u00d3\u00d0\u00b7\u00fe\u00ce\u00f1\u00b6\u00bc\u00bd\u00ab\u00d6\u00d0\u00b6\u00cf\u00a1\u00a3\u00c7\u00eb\u00c8\u00b7\u00c8\u00cf\u00c4\u00fa\u00c8\u00b7\u00ca\u00b5\u00d2\u00aa\u00d6\u00d8\u00d0\u00c2\u00c6\u00f4\u00b6\u00af\u00b4\u00cb\u00cd\u00f8\u00c2\u00e7\u00a1\u00a3 -message.restart.vpc=\u00c7\u00eb\u00c8\u00b7\u00c8\u00cf\u00c4\u00fa\u00c8\u00b7\u00ca\u00b5\u00d2\u00aa\u00d6\u00d8\u00d0\u00c2\u00c6\u00f4\u00b6\u00af VPC -message.security.group.usage=(\u00b0\u00b4\u00d7\u00a1 Ctrl \u00bc\u00fc\u00b2\u00a2\u00b5\u00a5\u00bb\u00f7\u00ca\u00f3\u00b1\u00ea\u00bf\u00c9\u00d1\u00a1\u00d4\u00f1\u00cb\u00f9\u00d3\u00d0\u00ca\u00ca\u00d3\u00c3\u00b5\u00c4\u00b0\u00b2\u00c8\u00ab\u00d7\u00e9) -message.select.a.zone=\u00d2\u00bb\u00b8\u00f6\u00d7\u00ca\u00d4\u00b4\u00d3\u00f2\u00cd\u00a8\u00b3\u00a3\u00d3\u00eb\u00d2\u00bb\u00b8\u00f6\u00ca\u00fd\u00be\u00dd\u00d6\u00d0\u00d0\u00c4\u00cf\u00e0\u00b6\u00d4\u00d3\u00a6\u00a1\u00a3\u00b6\u00e0\u00b8\u00f6\u00d7\u00ca\u00d4\u00b4\u00d3\u00f2\u00bf\u00c9\u00d2\u00d4\u00cc\u00e1\u00b9\u00a9\u00ce\u00ef\u00c0\u00ed\u00b8\u00f4\u00c0\u00eb\u00ba\u00cd\u00c8\u00df\u00d3\u00e0\u00a3\u00ac\u00d3\u00d0\u00d6\u00fa\u00d3\u00da\u00ca\u00b9\u00d4\u00c6\u00b8\u00fc\u00bc\u00d3\u00bf\u00c9\u00bf\u00bf\u00a1\u00a3 -message.select.instance=\u00c7\u00eb\u00d1\u00a1\u00d4\u00f1\u00d2\u00bb\u00b8\u00f6\u00ca\u00b5\u00c0\u00fd\u00a1\u00a3 -message.select.iso=\u00c7\u00eb\u00ce\u00aa\u00c4\u00fa\u00b5\u00c4\u00d0\u00c2\u00d0\u00e9\u00c4\u00e2\u00ca\u00b5\u00c0\u00fd\u00d1\u00a1\u00d4\u00f1\u00d2\u00bb\u00b8\u00f6 ISO\u00a1\u00a3 -message.select.item=\u00c7\u00eb\u00d1\u00a1\u00d4\u00f1\u00d2\u00bb\u00b8\u00f6\u00cf\u00ee\u00c4\u00bf\u00a1\u00a3 -message.select.security.groups=\u00c7\u00eb\u00ce\u00aa\u00c4\u00fa\u00b5\u00c4\u00d0\u00c2 VM \u00d1\u00a1\u00d4\u00f1\u00b0\u00b2\u00c8\u00ab\u00d7\u00e9 -message.select.template=\u00c7\u00eb\u00ce\u00aa\u00c4\u00fa\u00b5\u00c4\u00d0\u00c2\u00d0\u00e9\u00c4\u00e2\u00ca\u00b5\u00c0\u00fd\u00d1\u00a1\u00d4\u00f1\u00d2\u00bb\u00b8\u00f6\u00c4\u00a3\u00b0\u00e5\u00a1\u00a3 -message.setup.physical.network.during.zone.creation.basic=\u00cc\u00ed\u00bc\u00d3\u00bb\u00f9\u00b4\u00a1\u00d7\u00ca\u00d4\u00b4\u00d3\u00f2\u00ca\u00b1\u00a3\u00ac\u00bf\u00c9\u00d2\u00d4\u00c9\u00e8\u00d6\u00c3\u00d2\u00bb\u00b8\u00f6\u00ce\u00ef\u00c0\u00ed\u00cd\u00f8\u00c2\u00e7\u00a3\u00ac\u00b4\u00cb\u00cd\u00f8\u00c2\u00e7\u00d3\u00a6\u00d3\u00eb\u00d0\u00e9\u00c4\u00e2\u00bb\u00fa\u00b9\u00dc\u00c0\u00ed\u00b3\u00cc\u00d0\u00f2\u00d6\u00d0\u00b5\u00c4 NIC \u00cf\u00e0\u00b6\u00d4\u00d3\u00a6\u00a1\u00a3\u00b4\u00cb\u00cd\u00f8\u00c2\u00e7\u00bf\u00c9\u00d2\u00d4\u00b3\u00d0\u00d4\u00d8\u00b6\u00e0\u00d6\u00d6\u00c1\u00f7\u00c1\u00bf\u00c0\u00e0\u00d0\u00cd\u00a1\u00a3

\u00b4\u00cb\u00cd\u00e2\u00a3\u00ac\u00bb\u00b9\u00bf\u00c9\u00d2\u00d4\u00bd\u00ab\u00c6\u00e4\u00cb\u00fb\u00c1\u00f7\u00c1\u00bf\u00c0\u00e0\u00d0\u00cd\u00cd\u00cf\u00b7\u00c5\u00b5\u00bd\u00b4\u00cb\u00ce\u00ef\u00c0\u00ed\u00cd\u00f8\u00c2\u00e7\u00a1\u00a3 -message.setup.physical.network.during.zone.creation=\u00cc\u00ed\u00bc\u00d3\u00b8\u00df\u00bc\u00b6\u00d7\u00ca\u00d4\u00b4\u00d3\u00f2\u00ca\u00b1\u00a3\u00ac\u00d0\u00e8\u00d2\u00aa\u00c9\u00e8\u00d6\u00c3\u00d2\u00bb\u00b8\u00f6\u00bb\u00f2\u00b6\u00e0\u00b8\u00f6\u00ce\u00ef\u00c0\u00ed\u00cd\u00f8\u00c2\u00e7\u00a1\u00a3\u00c3\u00bf\u00b8\u00f6\u00cd\u00f8\u00c2\u00e7\u00b6\u00bc\u00d3\u00eb\u00d0\u00e9\u00c4\u00e2\u00bb\u00fa\u00b9\u00dc\u00c0\u00ed\u00b3\u00cc\u00d0\u00f2\u00d6\u00d0\u00b5\u00c4\u00d2\u00bb\u00b8\u00f6 NIC \u00cf\u00e0\u00b6\u00d4\u00d3\u00a6\u00a1\u00a3\u00c3\u00bf\u00b8\u00f6\u00ce\u00ef\u00c0\u00ed\u00cd\u00f8\u00c2\u00e7\u00d6\u00d0\u00bf\u00c9\u00d2\u00d4\u00b0\u00fc\u00ba\u00ac\u00d2\u00bb\u00d6\u00d6\u00bb\u00f2\u00b6\u00e0\u00d6\u00d6\u00c1\u00f7\u00c1\u00bf\u00c0\u00e0\u00d0\u00cd\u00a3\u00ac\u00b2\u00a2\u00b6\u00d4\u00d5\u00e2\u00d0\u00a9\u00c1\u00f7\u00c1\u00bf\u00c0\u00e0\u00d0\u00cd\u00bf\u00c9\u00c4\u00dc\u00b5\u00c4\u00d7\u00e9\u00ba\u00cf\u00b7\u00bd\u00ca\u00bd\u00c9\u00e8\u00d6\u00c3\u00c1\u00cb\u00c4\u00b3\u00d0\u00a9\u00cf\u00de\u00d6\u00c6\u00a1\u00a3

\u00bf\u00c9\u00d2\u00d4\u00bd\u00ab\u00d2\u00bb\u00d6\u00d6\u00bb\u00f2\u00b6\u00e0\u00d6\u00d6\u00c1\u00f7\u00c1\u00bf\u00c0\u00e0\u00d0\u00cd\u00cd\u00cf\u00b7\u00c5\u00b5\u00bd\u00c3\u00bf\u00b8\u00f6\u00ce\u00ef\u00c0\u00ed\u00cd\u00f8\u00c2\u00e7\u00d6\u00d0\u00a1\u00a3 -message.setup.successful=\u00d2\u00d1\u00b3\u00c9\u00b9\u00a6\u00c9\u00e8\u00d6\u00c3\u00d4\u00c6\! -message.snapshot.schedule=\u00bf\u00c9\u00d2\u00d4\u00cd\u00a8\u00b9\u00fd\u00b4\u00d3\u00d2\u00d4\u00cf\u00c2\u00bf\u00c9\u00d3\u00c3\u00d1\u00a1\u00cf\u00ee\u00d6\u00d0\u00bd\u00f8\u00d0\u00d0\u00d1\u00a1\u00d4\u00f1\u00b2\u00a2\u00d3\u00a6\u00d3\u00c3\u00c4\u00fa\u00b5\u00c4\u00b2\u00df\u00c2\u00d4\u00ca\u00d7\u00d1\u00a1\u00cf\u00ee\u00c0\u00b4\u00c9\u00e8\u00d6\u00c3\u00d6\u00d8\u00cf\u00d6\u00bf\u00ec\u00d5\u00d5\u00bc\u00c6\u00bb\u00ae -message.specify.url=\u00c7\u00eb\u00d6\u00b8\u00b6\u00a8 URL -message.step.1.continue=\u00c7\u00eb\u00d1\u00a1\u00d4\u00f1\u00d2\u00bb\u00b8\u00f6\u00c4\u00a3\u00b0\u00e5\u00bb\u00f2 ISO \u00d2\u00d4\u00bc\u00cc\u00d0\u00f8 -message.step.1.desc=\u00c7\u00eb\u00ce\u00aa\u00c4\u00fa\u00b5\u00c4\u00d0\u00c2\u00d0\u00e9\u00c4\u00e2\u00ca\u00b5\u00c0\u00fd\u00d1\u00a1\u00d4\u00f1\u00d2\u00bb\u00b8\u00f6\u00c4\u00a3\u00b0\u00e5\u00a1\u00a3\u00bb\u00b9\u00bf\u00c9\u00d2\u00d4\u00d1\u00a1\u00d4\u00f1\u00d2\u00bb\u00b8\u00f6\u00bf\u00c9\u00bd\u00ab ISO \u00d3\u00b3\u00cf\u00f1\u00b0\u00b2\u00d7\u00b0\u00b5\u00bd\u00c6\u00e4\u00d6\u00d0\u00b5\u00c4\u00bf\u00d5\u00c4\u00a3\u00b0\u00e5\u00a1\u00a3 -message.step.2.continue=\u00c7\u00eb\u00d1\u00a1\u00d4\u00f1\u00d2\u00bb\u00d6\u00d6\u00b7\u00fe\u00ce\u00f1\u00b7\u00bd\u00b0\u00b8\u00d2\u00d4\u00bc\u00cc\u00d0\u00f8 +label.vgpu.type=vGPU \u7c7b\u578b +label.vgpu.video.ram=\u89c6\u9891 RAM +label.vgpu.max.resolution=\u6700\u5927\u5206\u8fa8\u7387 +label.vgpu.max.vgpu.per.gpu=\u6bcf\u4e2a GPU \u7684 vGPU \u6570 +label.vgpu.remaining.capacity=\u5269\u4f59\u5bb9\u91cf +managed.state=\u6258\u7ba1\u72b6\u6001 +message.acquire.new.ip.vpc=\u8bf7\u786e\u8ba4\u60a8\u786e\u5b9e\u8981\u4e3a\u6b64 VPC \u83b7\u53d6\u4e00\u4e2a\u65b0 IP\u3002 +message.acquire.new.ip=\u8bf7\u786e\u8ba4\u60a8\u786e\u5b9e\u8981\u4e3a\u6b64\u7f51\u7edc\u83b7\u53d6\u4e00\u4e2a\u65b0 IP\u3002 +message.acquire.public.ip=\u8bf7\u9009\u62e9\u4e00\u4e2a\u8981\u4ece\u4e2d\u83b7\u53d6\u65b0 IP \u7684\u8d44\u6e90\u57df\u3002 +message.action.cancel.maintenance.mode=\u8bf7\u786e\u8ba4\u60a8\u786e\u5b9e\u8981\u53d6\u6d88\u6b64\u7ef4\u62a4\u6a21\u5f0f\u3002 +message.action.cancel.maintenance=\u5df2\u6210\u529f\u53d6\u6d88\u7ef4\u62a4\u60a8\u7684\u4e3b\u673a\u3002\u6b64\u8fc7\u7a0b\u53ef\u80fd\u9700\u8981\u957f\u8fbe\u51e0\u5206\u949f\u65f6\u95f4\u3002 +message.action.change.service.warning.for.instance=\u5fc5\u987b\u5148\u7981\u7528\u60a8\u7684\u5b9e\u4f8b\uff0c\u7136\u540e\u518d\u5c1d\u8bd5\u66f4\u6539\u5176\u5f53\u524d\u7684\u670d\u52a1\u65b9\u6848\u3002 +message.action.change.service.warning.for.router=\u5fc5\u987b\u5148\u505c\u6b62\u60a8\u7684\u8def\u7531\u5668\uff0c\u7136\u540e\u518d\u5c1d\u8bd5\u66f4\u6539\u5176\u5f53\u524d\u7684\u670d\u52a1\u65b9\u6848\u3002 +message.action.delete.cluster=\u8bf7\u786e\u8ba4\u60a8\u786e\u5b9e\u8981\u5220\u9664\u6b64\u7fa4\u96c6\u3002 +message.action.delete.disk.offering=\u8bf7\u786e\u8ba4\u60a8\u786e\u5b9e\u8981\u5220\u9664\u6b64\u78c1\u76d8\u65b9\u6848\u3002 +message.action.delete.domain=\u8bf7\u786e\u8ba4\u60a8\u786e\u5b9e\u8981\u5220\u9664\u6b64\u57df\u3002 +message.action.delete.external.firewall=\u8bf7\u786e\u8ba4\u60a8\u786e\u5b9e\u8981\u5220\u9664\u6b64\u5916\u90e8\u9632\u706b\u5899\u3002\u8b66\u544a\: \u5982\u679c\u60a8\u8ba1\u5212\u91cd\u65b0\u6dfb\u52a0\u540c\u4e00\u4e2a\u5916\u90e8\u9632\u706b\u5899\uff0c\u5219\u5fc5\u987b\u5728\u8bbe\u5907\u4e0a\u91cd\u7f6e\u4f7f\u7528\u6570\u636e\u3002 +message.action.delete.external.load.balancer=\u8bf7\u786e\u8ba4\u60a8\u786e\u5b9e\u8981\u5220\u9664\u6b64\u5916\u90e8\u8d1f\u8f7d\u5e73\u8861\u5668\u3002\u8b66\u544a\: \u5982\u679c\u60a8\u8ba1\u5212\u91cd\u65b0\u6dfb\u52a0\u540c\u4e00\u4e2a\u5916\u90e8\u8d1f\u8f7d\u5e73\u8861\u5668\uff0c\u5219\u5fc5\u987b\u5728\u8bbe\u5907\u4e0a\u91cd\u7f6e\u4f7f\u7528\u6570\u636e\u3002 +message.action.delete.ingress.rule=\u8bf7\u786e\u8ba4\u60a8\u786e\u5b9e\u8981\u5220\u9664\u6b64\u5165\u53e3\u89c4\u5219\u3002 +message.action.delete.ISO.for.all.zones=\u6b64 ISO \u7531\u6240\u6709\u8d44\u6e90\u57df\u4f7f\u7528\u3002\u8bf7\u786e\u8ba4\u60a8\u786e\u5b9e\u8981\u5c06\u5176\u4ece\u6240\u6709\u8d44\u6e90\u57df\u4e2d\u5220\u9664\u3002 +message.action.delete.ISO=\u8bf7\u786e\u8ba4\u60a8\u786e\u5b9e\u8981\u5220\u9664\u6b64 ISO\u3002 +message.action.delete.network=\u8bf7\u786e\u8ba4\u60a8\u786e\u5b9e\u8981\u5220\u9664\u6b64\u7f51\u7edc\u3002 +message.action.delete.nexusVswitch=\u8bf7\u786e\u8ba4\u60a8\u786e\u5b9e\u8981\u5220\u9664\u6b64 Nexus 1000v +message.action.delete.physical.network=\u8bf7\u786e\u8ba4\u60a8\u786e\u5b9e\u8981\u5220\u9664\u6b64\u7269\u7406\u7f51\u7edc +message.action.delete.pod=\u8bf7\u786e\u8ba4\u60a8\u786e\u5b9e\u8981\u5220\u9664\u6b64\u63d0\u4f9b\u70b9\u3002 +message.action.delete.primary.storage=\u8bf7\u786e\u8ba4\u60a8\u786e\u5b9e\u8981\u5220\u9664\u6b64\u4e3b\u5b58\u50a8\u3002 +message.action.delete.secondary.storage=\u8bf7\u786e\u8ba4\u60a8\u786e\u5b9e\u8981\u5220\u9664\u6b64\u4e8c\u7ea7\u5b58\u50a8\u3002 +message.action.delete.security.group=\u8bf7\u786e\u8ba4\u60a8\u786e\u5b9e\u8981\u5220\u9664\u6b64\u5b89\u5168\u7ec4\u3002 +message.action.delete.service.offering=\u8bf7\u786e\u8ba4\u60a8\u786e\u5b9e\u8981\u5220\u9664\u6b64\u670d\u52a1\u65b9\u6848\u3002 +message.action.delete.snapshot=\u8bf7\u786e\u8ba4\u60a8\u786e\u5b9e\u8981\u5220\u9664\u6b64\u5feb\u7167\u3002 +message.action.delete.system.service.offering=\u8bf7\u786e\u8ba4\u60a8\u786e\u5b9e\u8981\u5220\u9664\u6b64\u7cfb\u7edf\u670d\u52a1\u65b9\u6848\u3002 +message.action.delete.template.for.all.zones=\u6b64\u6a21\u677f\u7531\u6240\u6709\u8d44\u6e90\u57df\u4f7f\u7528\u3002\u8bf7\u786e\u8ba4\u60a8\u786e\u5b9e\u8981\u5c06\u5176\u4ece\u6240\u6709\u8d44\u6e90\u57df\u4e2d\u5220\u9664\u3002 +message.action.delete.template=\u8bf7\u786e\u8ba4\u60a8\u786e\u5b9e\u8981\u5220\u9664\u6b64\u6a21\u677f\u3002 +message.action.delete.volume=\u8bf7\u786e\u8ba4\u60a8\u786e\u5b9e\u8981\u5220\u9664\u6b64\u5377\u3002 +message.action.delete.zone=\u8bf7\u786e\u8ba4\u60a8\u786e\u5b9e\u8981\u5220\u9664\u6b64\u8d44\u6e90\u57df\u3002 +message.action.destroy.instance=\u8bf7\u786e\u8ba4\u60a8\u786e\u5b9e\u8981\u9500\u6bc1\u6b64\u5b9e\u4f8b\u3002 +message.action.destroy.systemvm=\u8bf7\u786e\u8ba4\u60a8\u786e\u5b9e\u8981\u9500\u6bc1\u6b64\u7cfb\u7edf VM\u3002 +message.action.disable.cluster=\u8bf7\u786e\u8ba4\u60a8\u786e\u5b9e\u8981\u7981\u7528\u6b64\u7fa4\u96c6\u3002 +message.action.disable.nexusVswitch=\u8bf7\u786e\u8ba4\u60a8\u786e\u5b9e\u8981\u7981\u7528\u6b64 Nexus 1000v +message.action.disable.physical.network=\u8bf7\u786e\u8ba4\u60a8\u786e\u5b9e\u8981\u7981\u7528\u6b64\u7269\u7406\u7f51\u7edc\u3002 +message.action.disable.pod=\u8bf7\u786e\u8ba4\u60a8\u786e\u5b9e\u8981\u7981\u7528\u6b64\u63d0\u4f9b\u70b9\u3002 +message.action.disable.static.NAT=\u8bf7\u786e\u8ba4\u60a8\u786e\u5b9e\u8981\u7981\u7528\u9759\u6001 NAT\u3002 +message.action.disable.zone=\u8bf7\u786e\u8ba4\u60a8\u786e\u5b9e\u8981\u7981\u7528\u6b64\u8d44\u6e90\u57df\u3002 +message.action.download.iso=\u8bf7\u786e\u8ba4\u60a8\u786e\u5b9e\u8981\u4e0b\u8f7d\u6b64 ISO\u3002 +message.action.download.template=\u8bf7\u786e\u8ba4\u60a8\u786e\u5b9e\u8981\u4e0b\u8f7d\u6b64\u6a21\u677f\u3002 +message.action.enable.cluster=\u8bf7\u786e\u8ba4\u60a8\u786e\u5b9e\u8981\u542f\u7528\u6b64\u7fa4\u96c6\u3002 +message.action.enable.maintenance=\u5df2\u6210\u529f\u51c6\u5907\u597d\u7ef4\u62a4\u60a8\u7684\u4e3b\u673a\u3002\u6b64\u8fc7\u7a0b\u53ef\u80fd\u9700\u8981\u957f\u8fbe\u51e0\u5206\u949f\u6216\u66f4\u957f\u65f6\u95f4\uff0c\u5177\u4f53\u53d6\u51b3\u4e8e\u5f53\u524d\u6b64\u4e3b\u673a\u4e0a\u7684 VM \u6570\u91cf\u3002 +message.action.enable.nexusVswitch=\u8bf7\u786e\u8ba4\u60a8\u786e\u5b9e\u8981\u542f\u7528\u6b64 Nexus 1000v +message.action.enable.physical.network=\u8bf7\u786e\u8ba4\u60a8\u786e\u5b9e\u8981\u542f\u7528\u6b64\u7269\u7406\u7f51\u7edc\u3002 +message.action.enable.pod=\u8bf7\u786e\u8ba4\u60a8\u786e\u5b9e\u8981\u542f\u7528\u6b64\u63d0\u4f9b\u70b9\u3002 +message.action.enable.zone=\u8bf7\u786e\u8ba4\u60a8\u786e\u5b9e\u8981\u542f\u7528\u6b64\u8d44\u6e90\u57df\u3002 +message.action.expunge.instance=\u8bf7\u786e\u8ba4\u60a8\u786e\u5b9e\u8981\u5220\u9664\u6b64\u5b9e\u4f8b\u3002 +message.action.force.reconnect=\u5df2\u6210\u529f\u5f3a\u5236\u91cd\u65b0\u8fde\u63a5\u60a8\u7684\u4e3b\u673a\u3002\u6b64\u8fc7\u7a0b\u53ef\u80fd\u9700\u8981\u957f\u8fbe\u51e0\u5206\u949f\u65f6\u95f4\u3002 +message.action.host.enable.maintenance.mode=\u542f\u7528\u7ef4\u62a4\u6a21\u5f0f\u4f1a\u5bfc\u81f4\u5c06\u6b64\u4e3b\u673a\u4e0a\u6b63\u5728\u8fd0\u884c\u7684\u6240\u6709\u5b9e\u4f8b\u5b9e\u65f6\u8fc1\u79fb\u5230\u4efb\u4f55\u53ef\u7528\u7684\u4e3b\u673a\u3002 +message.action.instance.reset.password=\u8bf7\u786e\u8ba4\u60a8\u786e\u5b9e\u8981\u66f4\u6539\u6b64\u865a\u62df\u673a\u7684 ROOT \u7528\u6237\u5bc6\u7801\u3002 +message.action.manage.cluster=\u8bf7\u786e\u8ba4\u60a8\u786e\u5b9e\u8981\u6258\u7ba1\u6b64\u7fa4\u96c6\u3002 +message.action.primarystorage.enable.maintenance.mode=\u8b66\u544a\: \u5c06\u4e3b\u5b58\u50a8\u7f6e\u4e8e\u7ef4\u62a4\u6a21\u5f0f\u5c06\u5bfc\u81f4\u4f7f\u7528\u4e3b\u5b58\u50a8\u4e2d\u7684\u5377\u7684\u6240\u6709 VM \u505c\u6b62\u8fd0\u884c\u3002\u662f\u5426\u8981\u7ee7\u7eed? +message.action.reboot.instance=\u8bf7\u786e\u8ba4\u60a8\u786e\u5b9e\u8981\u91cd\u65b0\u542f\u52a8\u6b64\u5b9e\u4f8b\u3002 +message.action.reboot.router=\u6b64\u865a\u62df\u8def\u7531\u5668\u63d0\u4f9b\u7684\u6240\u6709\u670d\u52a1\u90fd\u5c06\u4e2d\u65ad\u3002\u8bf7\u786e\u8ba4\u60a8\u786e\u5b9e\u8981\u91cd\u65b0\u542f\u52a8\u6b64\u8def\u7531\u5668\u3002 +message.action.reboot.systemvm=\u8bf7\u786e\u8ba4\u60a8\u786e\u5b9e\u8981\u91cd\u65b0\u542f\u52a8\u6b64\u7cfb\u7edf VM\u3002 +message.action.release.ip=\u8bf7\u786e\u8ba4\u60a8\u786e\u5b9e\u8981\u91ca\u653e\u6b64 IP\u3002 +message.action.remove.host=\u8bf7\u786e\u8ba4\u60a8\u786e\u5b9e\u8981\u5220\u9664\u6b64\u4e3b\u673a\u3002 +message.action.reset.password.off=\u60a8\u7684\u5b9e\u4f8b\u5f53\u524d\u4e0d\u652f\u6301\u6b64\u529f\u80fd\u3002 +message.action.reset.password.warning=\u5fc5\u987b\u5148\u505c\u6b62\u60a8\u7684\u5b9e\u4f8b\uff0c\u7136\u540e\u518d\u5c1d\u8bd5\u66f4\u6539\u5176\u5f53\u524d\u7684\u5bc6\u7801\u3002 +message.action.restore.instance=\u8bf7\u786e\u8ba4\u60a8\u786e\u5b9e\u8981\u8fd8\u539f\u6b64\u5b9e\u4f8b\u3002 +message.action.start.instance=\u8bf7\u786e\u8ba4\u60a8\u786e\u5b9e\u8981\u542f\u52a8\u6b64\u5b9e\u4f8b\u3002 +message.action.start.router=\u8bf7\u786e\u8ba4\u60a8\u786e\u5b9e\u8981\u542f\u52a8\u6b64\u8def\u7531\u5668\u3002 +message.action.start.systemvm=\u8bf7\u786e\u8ba4\u60a8\u786e\u5b9e\u8981\u542f\u52a8\u6b64\u7cfb\u7edf VM\u3002 +message.action.stop.instance=\u8bf7\u786e\u8ba4\u60a8\u786e\u5b9e\u8981\u505c\u6b62\u6b64\u5b9e\u4f8b\u3002 +message.action.stop.router=\u6b64\u865a\u62df\u8def\u7531\u5668\u63d0\u4f9b\u7684\u6240\u6709\u670d\u52a1\u90fd\u5c06\u4e2d\u65ad\u3002\u8bf7\u786e\u8ba4\u60a8\u786e\u5b9e\u8981\u505c\u6b62\u6b64\u8def\u7531\u5668\u3002 +message.action.stop.systemvm=\u8bf7\u786e\u8ba4\u60a8\u786e\u5b9e\u8981\u505c\u6b62\u6b64\u7cfb\u7edf VM\u3002 +message.action.take.snapshot=\u8bf7\u786e\u8ba4\u60a8\u786e\u5b9e\u8981\u521b\u5efa\u6b64\u5377\u7684\u5feb\u7167\u3002 +message.action.revert.snapshot=\u8bf7\u786e\u8ba4\u60a8\u786e\u5b9e\u8981\u5c06\u62e5\u6709\u7684\u5377\u8fd8\u539f\u4e3a\u6b64\u5feb\u7167\u3002 +message.action.unmanage.cluster=\u8bf7\u786e\u8ba4\u60a8\u786e\u5b9e\u8981\u53d6\u6d88\u6258\u7ba1\u6b64\u7fa4\u96c6\u3002 +message.action.vmsnapshot.delete=\u8bf7\u786e\u8ba4\u60a8\u786e\u5b9e\u8981\u5220\u9664\u6b64 VM \u5feb\u7167\u3002 +message.action.vmsnapshot.revert=\u8fd8\u539f VM \u5feb\u7167 +message.activate.project=\u662f\u5426\u786e\u5b9e\u8981\u6fc0\u6d3b\u6b64\u9879\u76ee? +message.add.cluster.zone=\u5411\u8d44\u6e90\u57df \u4e2d\u6dfb\u52a0\u4e00\u4e2a\u865a\u62df\u673a\u7ba1\u7406\u7a0b\u5e8f\u6258\u7ba1\u7684\u7fa4\u96c6 +message.add.cluster=\u5411\u8d44\u6e90\u57df \u3001\u63d0\u4f9b\u70b9 \u4e2d\u6dfb\u52a0\u4e00\u4e2a\u865a\u62df\u673a\u7ba1\u7406\u7a0b\u5e8f\u6258\u7ba1\u7684\u7fa4\u96c6 +message.add.disk.offering=\u8bf7\u6307\u5b9a\u4ee5\u4e0b\u53c2\u6570\u4ee5\u6dfb\u52a0\u4e00\u4e2a\u65b0\u7684\u78c1\u76d8\u65b9\u6848 +message.add.domain=\u8bf7\u6307\u5b9a\u8981\u5728\u6b64\u57df\u4e0b\u521b\u5efa\u7684\u5b50\u57df +message.add.firewall=\u5411\u8d44\u6e90\u57df\u4e2d\u6dfb\u52a0\u4e00\u4e2a\u9632\u706b\u5899 +message.add.guest.network=\u8bf7\u786e\u8ba4\u60a8\u786e\u5b9e\u8981\u6dfb\u52a0\u4e00\u4e2a\u6765\u5bbe\u7f51\u7edc +message.add.host=\u8bf7\u6307\u5b9a\u4ee5\u4e0b\u53c2\u6570\u4ee5\u6dfb\u52a0\u4e00\u53f0\u65b0\u4e3b\u673a +message.add.ip.range.direct.network=\u5411\u8d44\u6e90\u57df \u4e2d\u7684\u76f4\u63a5\u7f51\u7edc \u6dfb\u52a0\u4e00\u4e2a IP \u8303\u56f4 +message.add.ip.range.to.pod=

\u5411\u63d0\u4f9b\u70b9\u6dfb\u52a0\u4e00\u4e2a IP \u8303\u56f4\:

+message.add.ip.range=\u5411\u8d44\u6e90\u57df\u4e2d\u7684\u516c\u7528\u7f51\u7edc\u6dfb\u52a0\u4e00\u4e2a IP \u8303\u56f4 +message.add.load.balancer.under.ip=\u5df2\u5728\u4ee5\u4e0b IP \u4e0b\u6dfb\u52a0\u8d1f\u8f7d\u5e73\u8861\u5668\u89c4\u5219\: +message.add.load.balancer=\u5411\u8d44\u6e90\u57df\u4e2d\u6dfb\u52a0\u4e00\u4e2a\u8d1f\u8f7d\u5e73\u8861\u5668 +message.add.network=\u4e3a\u8d44\u6e90\u57df \u6dfb\u52a0\u4e00\u4e2a\u65b0\u7f51\u7edc +message.add.new.gateway.to.vpc=\u8bf7\u6307\u5b9a\u5c06\u65b0\u7f51\u5173\u6dfb\u52a0\u5230\u6b64 VPC \u6240\u9700\u7684\u4fe1\u606f\u3002 +message.add.pod.during.zone.creation=\u6bcf\u4e2a\u8d44\u6e90\u57df\u4e2d\u5fc5\u987b\u5305\u542b\u4e00\u4e2a\u6216\u591a\u4e2a\u63d0\u4f9b\u70b9\uff0c\u73b0\u5728\u6211\u4eec\u5c06\u6dfb\u52a0\u7b2c\u4e00\u4e2a\u63d0\u4f9b\u70b9\u3002\u63d0\u4f9b\u70b9\u4e2d\u5305\u542b\u4e3b\u673a\u548c\u4e3b\u5b58\u50a8\u670d\u52a1\u5668\uff0c\u60a8\u5c06\u5728\u968f\u540e\u7684\u67d0\u4e2a\u6b65\u9aa4\u4e2d\u6dfb\u52a0\u8fd9\u4e9b\u4e3b\u673a\u548c\u670d\u52a1\u5668\u3002\u9996\u5148\uff0c\u8bf7\u4e3a CloudStack \u7684\u5185\u90e8\u7ba1\u7406\u6d41\u91cf\u914d\u7f6e\u4e00\u4e2a\u9884\u7559 IP \u5730\u5740\u8303\u56f4\u3002\u9884\u7559\u7684 IP \u8303\u56f4\u5bf9\u4e91\u4e2d\u7684\u6bcf\u4e2a\u8d44\u6e90\u57df\u6765\u8bf4\u5fc5\u987b\u552f\u4e00\u3002 +message.add.pod=\u4e3a\u8d44\u6e90\u57df \u6dfb\u52a0\u4e00\u4e2a\u65b0\u63d0\u4f9b\u70b9 +message.add.primary.storage=\u4e3a\u8d44\u6e90\u57df \u3001\u63d0\u4f9b\u70b9 \u6dfb\u52a0\u4e00\u4e2a\u65b0\u4e3b\u5b58\u50a8 +message.add.primary=\u8bf7\u6307\u5b9a\u4ee5\u4e0b\u53c2\u6570\u4ee5\u6dfb\u52a0\u4e00\u4e2a\u65b0\u4e3b\u5b58\u50a8 +message.add.region=\u8bf7\u6307\u5b9a\u6dfb\u52a0\u65b0\u5730\u7406\u533a\u57df\u6240\u9700\u7684\u4fe1\u606f\u3002 +message.add.secondary.storage=\u4e3a\u8d44\u6e90\u57df \u6dfb\u52a0\u4e00\u4e2a\u65b0\u5b58\u50a8 +message.add.service.offering=\u8bf7\u586b\u5199\u4ee5\u4e0b\u6570\u636e\u4ee5\u6dfb\u52a0\u4e00\u4e2a\u65b0\u8ba1\u7b97\u65b9\u6848\u3002 +message.add.system.service.offering=\u8bf7\u586b\u5199\u4ee5\u4e0b\u6570\u636e\u4ee5\u6dfb\u52a0\u4e00\u4e2a\u65b0\u7684\u7cfb\u7edf\u670d\u52a1\u65b9\u6848\u3002 +message.add.template=\u8bf7\u8f93\u5165\u4ee5\u4e0b\u6570\u636e\u4ee5\u521b\u5efa\u65b0\u6a21\u677f +message.add.volume=\u8bf7\u586b\u5199\u4ee5\u4e0b\u6570\u636e\u4ee5\u6dfb\u52a0\u4e00\u4e2a\u65b0\u5377\u3002 +message.add.VPN.gateway=\u8bf7\u786e\u8ba4\u60a8\u786e\u5b9e\u8981\u6dfb\u52a0 VPN \u7f51\u5173 +message.adding.host=\u6b63\u5728\u6dfb\u52a0\u4e3b\u673a +message.adding.Netscaler.device=\u6b63\u5728\u6dfb\u52a0 NetScaler \u8bbe\u5907 +message.adding.Netscaler.provider=\u6b63\u5728\u6dfb\u52a0 NetScaler \u63d0\u4f9b\u7a0b\u5e8f +message.additional.networks.desc=\u8bf7\u9009\u62e9\u865a\u62df\u673a\u8981\u8fde\u63a5\u5230\u7684\u5176\u4ed6\u7f51\u7edc\u3002 +message.advanced.mode.desc=\u5982\u679c\u8981\u542f\u7528 VLAN \u652f\u6301\uff0c\u8bf7\u9009\u62e9\u6b64\u7f51\u7edc\u6a21\u5f0f\u3002\u6b64\u7f51\u7edc\u6a21\u5f0f\u5728\u5141\u8bb8\u7ba1\u7406\u5458\u63d0\u4f9b\u9632\u706b\u5899\u3001VPN \u6216\u8d1f\u8f7d\u5e73\u8861\u5668\u652f\u6301\u7b49\u81ea\u5b9a\u4e49\u7f51\u7edc\u65b9\u6848\u4ee5\u53ca\u542f\u7528\u76f4\u63a5\u7f51\u7edc\u8fde\u63a5\u4e0e\u865a\u62df\u7f51\u7edc\u8fde\u63a5\u7b49\u65b9\u9762\u63d0\u4f9b\u4e86\u6700\u5927\u7684\u7075\u6d3b\u6027\u3002 +message.advanced.security.group=\u5982\u679c\u8981\u4f7f\u7528\u5b89\u5168\u7ec4\u63d0\u4f9b\u6765\u5bbe VM \u9694\u79bb\uff0c\u8bf7\u9009\u62e9\u6b64\u6a21\u5f0f\u3002 +message.advanced.virtual=\u5982\u679c\u8981\u4f7f\u7528\u6574\u4e2a\u8d44\u6e90\u57df\u7684 VLAN \u63d0\u4f9b\u6765\u5bbe VM \u9694\u79bb\uff0c\u8bf7\u9009\u62e9\u6b64\u6a21\u5f0f\u3002 +message.after.enable.s3=\u5df2\u914d\u7f6e S3 \u652f\u6301\u7684\u4e8c\u7ea7\u5b58\u50a8\u3002\u6ce8\u610f\: \u9000\u51fa\u6b64\u9875\u9762\u540e\uff0c\u60a8\u5c06\u65e0\u6cd5\u518d\u6b21\u91cd\u65b0\u914d\u7f6e S3\u3002 +message.after.enable.swift=\u5df2\u914d\u7f6e SWIFT\u3002\u6ce8\u610f\: \u9000\u51fa\u6b64\u9875\u9762\u540e\uff0c\u60a8\u5c06\u65e0\u6cd5\u518d\u6b21\u91cd\u65b0\u914d\u7f6e SWIFT\u3002 +message.alert.state.detected=\u68c0\u6d4b\u5230\u8b66\u62a5\u72b6\u6001 +message.allow.vpn.access=\u8bf7\u8f93\u5165\u8981\u5141\u8bb8\u8fdb\u884c VPN \u8bbf\u95ee\u7684\u7528\u6237\u7684\u7528\u6237\u540d\u548c\u5bc6\u7801\u3002 +message.apply.snapshot.policy=\u60a8\u5df2\u6210\u529f\u66f4\u65b0\u5f53\u524d\u7684\u5feb\u7167\u7b56\u7565\u3002 +message.attach.iso.confirm=\u8bf7\u786e\u8ba4\u60a8\u786e\u5b9e\u8981\u5c06\u6b64 ISO \u9644\u52a0\u5230\u6b64\u865a\u62df\u5b9e\u4f8b\u3002 +message.attach.volume=\u8bf7\u586b\u5199\u4ee5\u4e0b\u6570\u636e\u4ee5\u9644\u52a0\u4e00\u4e2a\u65b0\u5377\u3002\u5982\u679c\u8981\u5c06\u78c1\u76d8\u5377\u9644\u52a0\u5230\u57fa\u4e8e Windows \u7684\u865a\u62df\u673a\uff0c\u9700\u8981\u91cd\u65b0\u542f\u52a8\u6b64\u5b9e\u4f8b\u624d\u80fd\u663e\u793a\u5df2\u8fde\u63a5\u7684\u78c1\u76d8\u3002 +message.basic.mode.desc=\u5982\u679c\u60a8*\u4e0d*\u5e0c\u671b\u542f\u7528\u4efb\u4f55 VLAN \u652f\u6301\uff0c\u8bf7\u9009\u62e9\u6b64\u7f51\u7edc\u6a21\u5f0f\u3002\u5c06\u76f4\u63a5\u4ece\u6b64\u7f51\u7edc\u4e2d\u4e3a\u5728\u6b64\u7f51\u7edc\u6a21\u5f0f\u4e0b\u521b\u5efa\u7684\u6240\u6709\u865a\u62df\u673a\u5b9e\u4f8b\u5206\u914d\u4e00\u4e2a IP\uff0c\u5e76\u4f7f\u7528\u5b89\u5168\u7ec4\u63d0\u4f9b\u5b89\u5168\u6027\u548c\u9694\u79bb\u3002 +message.change.offering.confirm=\u8bf7\u786e\u8ba4\u60a8\u786e\u5b9e\u8981\u66f4\u6539\u6b64\u865a\u62df\u5b9e\u4f8b\u7684\u670d\u52a1\u65b9\u6848\u3002 +message.change.password=\u8bf7\u66f4\u6539\u60a8\u7684\u5bc6\u7801\u3002 +message.configure.all.traffic.types=\u60a8\u6709\u591a\u4e2a\u7269\u7406\u7f51\u7edc\uff0c\u8bf7\u5355\u51fb\u201c\u7f16\u8f91\u201d\u6309\u94ae\u4e3a\u6bcf\u79cd\u6d41\u91cf\u7c7b\u578b\u914d\u7f6e\u6807\u7b7e\u3002 +message.configuring.guest.traffic=\u6b63\u5728\u914d\u7f6e\u6765\u5bbe\u6d41\u91cf +message.configuring.physical.networks=\u6b63\u5728\u914d\u7f6e\u7269\u7406\u7f51\u7edc +message.configuring.public.traffic=\u6b63\u5728\u914d\u7f6e\u516c\u5171\u6d41\u91cf +message.configuring.storage.traffic=\u6b63\u5728\u914d\u7f6e\u5b58\u50a8\u6d41\u91cf +message.confirm.action.force.reconnect=\u8bf7\u786e\u8ba4\u60a8\u786e\u5b9e\u8981\u5f3a\u5236\u91cd\u65b0\u8fde\u63a5\u6b64\u4e3b\u673a\u3002 +message.confirm.delete.F5=\u8bf7\u786e\u8ba4\u60a8\u786e\u5b9e\u8981\u5220\u9664 F5 +message.confirm.delete.BrocadeVcs=\u8bf7\u786e\u8ba4\u60a8\u786e\u5b9e\u8981\u5220\u9664 Brocade Vcs \u4ea4\u6362\u673a +message.confirm.delete.NetScaler=\u8bf7\u786e\u8ba4\u60a8\u786e\u5b9e\u8981\u5220\u9664 NetScaler +message.confirm.delete.NuageVsp=\u8bf7\u786e\u8ba4\u60a8\u786e\u5b9e\u8981\u5220\u9664 Nuage \u865a\u62df\u670d\u52a1\u76ee\u5f55 +message.confirm.delete.SRX=\u8bf7\u786e\u8ba4\u60a8\u786e\u5b9e\u8981\u5220\u9664 SRX +message.confirm.delete.PA=\u8bf7\u786e\u8ba4\u60a8\u786e\u5b9e\u8981\u5220\u9664 Palo Alto +message.confirm.destroy.router=\u8bf7\u786e\u8ba4\u60a8\u786e\u5b9e\u8981\u9500\u6bc1\u6b64\u8def\u7531\u5668 +message.confirm.disable.provider=\u8bf7\u786e\u8ba4\u60a8\u786e\u5b9e\u8981\u7981\u7528\u6b64\u63d0\u4f9b\u7a0b\u5e8f +message.confirm.enable.provider=\u8bf7\u786e\u8ba4\u60a8\u786e\u5b9e\u8981\u542f\u7528\u6b64\u63d0\u4f9b\u7a0b\u5e8f +message.confirm.join.project=\u8bf7\u786e\u8ba4\u60a8\u786e\u5b9e\u8981\u52a0\u5165\u6b64\u9879\u76ee\u3002 +message.confirm.remove.IP.range=\u8bf7\u786e\u8ba4\u60a8\u786e\u5b9e\u8981\u5220\u9664\u6b64 IP \u8303\u56f4\u3002 +message.confirm.shutdown.provider=\u8bf7\u786e\u8ba4\u60a8\u786e\u5b9e\u8981\u5173\u95ed\u6b64\u63d0\u4f9b\u7a0b\u5e8f +message.copy.iso.confirm=\u8bf7\u786e\u8ba4\u60a8\u786e\u5b9e\u8981\u5c06 ISO \u590d\u5236\u5230 +message.copy.template=\u5c06\u6a21\u677f XXX \u4ece\u8d44\u6e90\u57df \u590d\u5236\u5230 +message.create.template.vm=\u57fa\u4e8e\u6a21\u677f \u521b\u5efa VM +message.create.template.volume=\u8bf7\u5148\u6307\u5b9a\u4ee5\u4e0b\u4fe1\u606f\uff0c\u7136\u540e\u518d\u521b\u5efa\u78c1\u76d8\u5377 \u7684\u6a21\u677f\u3002\u521b\u5efa\u6a21\u677f\u53ef\u80fd\u9700\u8981\u51e0\u5206\u949f\u5230\u66f4\u957f\u7684\u65f6\u95f4\uff0c\u5177\u4f53\u53d6\u51b3\u4e8e\u78c1\u76d8\u5377\u7684\u5927\u5c0f\u3002 +message.create.template=\u662f\u5426\u786e\u5b9e\u8981\u521b\u5efa\u6a21\u677f? +message.creating.cluster=\u6b63\u5728\u521b\u5efa\u7fa4\u96c6 +message.creating.guest.network=\u6b63\u5728\u521b\u5efa\u6765\u5bbe\u7f51\u7edc +message.creating.physical.networks=\u6b63\u5728\u521b\u5efa\u7269\u7406\u7f51\u7edc +message.creating.pod=\u6b63\u5728\u521b\u5efa\u63d0\u4f9b\u70b9 +message.creating.primary.storage=\u6b63\u5728\u521b\u5efa\u4e3b\u5b58\u50a8 +message.creating.secondary.storage=\u6b63\u5728\u521b\u5efa\u4e8c\u7ea7\u5b58\u50a8 +message.creating.zone=\u6b63\u5728\u521b\u5efa\u8d44\u6e90\u57df +message.decline.invitation=\u662f\u5426\u786e\u5b9e\u8981\u62d2\u7edd\u6b64\u9879\u76ee\u9080\u8bf7? +message.dedicate.zone=\u6b63\u5728\u5c06\u8d44\u6e90\u57df\u4e13\u7528 +message.delete.account=\u8bf7\u786e\u8ba4\u60a8\u786e\u5b9e\u8981\u5220\u9664\u6b64\u5e10\u6237\u3002 +message.delete.affinity.group=\u8bf7\u786e\u8ba4\u60a8\u786e\u5b9e\u8981\u5220\u9664\u6b64\u5173\u8054\u6027\u7ec4\u3002 +message.delete.gateway=\u8bf7\u786e\u8ba4\u60a8\u786e\u5b9e\u8981\u5220\u9664\u6b64\u7f51\u5173 +message.delete.project=\u662f\u5426\u786e\u5b9e\u8981\u5220\u9664\u6b64\u9879\u76ee? +message.delete.user=\u8bf7\u786e\u8ba4\u60a8\u786e\u5b9e\u8981\u5220\u9664\u6b64\u7528\u6237\u3002 +message.delete.VPN.connection=\u8bf7\u786e\u8ba4\u60a8\u786e\u5b9e\u8981\u5220\u9664 VPN \u8fde\u63a5 +message.delete.VPN.customer.gateway=\u8bf7\u786e\u8ba4\u60a8\u786e\u5b9e\u8981\u5220\u9664\u6b64 VPN \u5ba2\u6237\u7f51\u5173 +message.delete.VPN.gateway=\u8bf7\u786e\u8ba4\u60a8\u786e\u5b9e\u8981\u5220\u9664\u6b64 VPN \u7f51\u5173 +message.desc.advanced.zone=\u9002\u7528\u4e8e\u66f4\u52a0\u590d\u6742\u7684\u7f51\u7edc\u62d3\u6251\u3002\u6b64\u7f51\u7edc\u6a21\u5f0f\u5728\u5b9a\u4e49\u6765\u5bbe\u7f51\u7edc\u5e76\u63d0\u4f9b\u9632\u706b\u5899\u3001VPN \u6216\u8d1f\u8f7d\u5e73\u8861\u5668\u652f\u6301\u7b49\u81ea\u5b9a\u4e49\u7f51\u7edc\u65b9\u6848\u65b9\u9762\u63d0\u4f9b\u4e86\u6700\u5927\u7684\u7075\u6d3b\u6027\u3002 +message.desc.basic.zone=\u63d0\u4f9b\u4e00\u4e2a\u7f51\u7edc\uff0c\u5c06\u76f4\u63a5\u4ece\u6b64\u7f51\u7edc\u4e2d\u4e3a\u6bcf\u4e2a VM \u5b9e\u4f8b\u5206\u914d\u4e00\u4e2a IP\u3002\u53ef\u4ee5\u901a\u8fc7\u5b89\u5168\u7ec4\u7b49\u7b2c 3 \u5c42\u65b9\u5f0f\u63d0\u4f9b\u6765\u5bbe\u9694\u79bb(IP \u5730\u5740\u6e90\u8fc7\u6ee4)\u3002 +message.desc.cluster=\u6bcf\u4e2a\u63d0\u4f9b\u70b9\u4e2d\u5fc5\u987b\u5305\u542b\u4e00\u4e2a\u6216\u591a\u4e2a\u7fa4\u96c6\uff0c\u73b0\u5728\u6211\u4eec\u5c06\u6dfb\u52a0\u7b2c\u4e00\u4e2a\u7fa4\u96c6\u3002\u7fa4\u96c6\u63d0\u4f9b\u4e86\u4e00\u79cd\u7f16\u7ec4\u4e3b\u673a\u7684\u65b9\u6cd5\u3002\u7fa4\u96c6\u4e2d\u7684\u6240\u6709\u4e3b\u673a\u90fd\u5177\u6709\u76f8\u540c\u7684\u786c\u4ef6\uff0c\u8fd0\u884c\u76f8\u540c\u7684\u865a\u62df\u673a\u7ba1\u7406\u7a0b\u5e8f\uff0c\u4f4d\u4e8e\u76f8\u540c\u7684\u5b50\u7f51\u4e2d\uff0c\u5e76\u8bbf\u95ee\u76f8\u540c\u7684\u5171\u4eab\u5b58\u50a8\u3002\u6bcf\u4e2a\u7fa4\u96c6\u7531\u4e00\u4e2a\u6216\u591a\u4e2a\u4e3b\u673a\u4ee5\u53ca\u4e00\u4e2a\u6216\u591a\u4e2a\u4e3b\u5b58\u50a8\u670d\u52a1\u5668\u7ec4\u6210\u3002 +message.desc.host=\u6bcf\u4e2a\u7fa4\u96c6\u4e2d\u5fc5\u987b\u81f3\u5c11\u5305\u542b\u4e00\u4e2a\u4e3b\u673a\u4ee5\u4f9b\u6765\u5bbe VM \u5728\u4e0a\u9762\u8fd0\u884c\uff0c\u73b0\u5728\u6211\u4eec\u5c06\u6dfb\u52a0\u7b2c\u4e00\u4e2a\u4e3b\u673a\u3002\u8981\u4f7f\u4e3b\u673a\u5728 CloudStack \u4e2d\u8fd0\u884c\uff0c\u5fc5\u987b\u5728\u6b64\u4e3b\u673a\u4e0a\u5b89\u88c5\u865a\u62df\u673a\u7ba1\u7406\u7a0b\u5e8f\u8f6f\u4ef6\uff0c\u4e3a\u5176\u5206\u914d\u4e00\u4e2a IP \u5730\u5740\uff0c\u5e76\u786e\u4fdd\u5c06\u5176\u8fde\u63a5\u5230 CloudStack \u7ba1\u7406\u670d\u52a1\u5668\u3002

\u8bf7\u63d0\u4f9b\u4e3b\u673a\u7684 DNS \u6216 IP \u5730\u5740\u3001\u7528\u6237\u540d(\u901a\u5e38\u4e3a root)\u548c\u5bc6\u7801\uff0c\u4ee5\u53ca\u7528\u4e8e\u5bf9\u4e3b\u673a\u8fdb\u884c\u5206\u7c7b\u7684\u4efb\u4f55\u6807\u7b7e\u3002 +message.desc.primary.storage=\u6bcf\u4e2a\u7fa4\u96c6\u4e2d\u5fc5\u987b\u5305\u542b\u4e00\u4e2a\u6216\u591a\u4e2a\u4e3b\u5b58\u50a8\u670d\u52a1\u5668\uff0c\u73b0\u5728\u6211\u4eec\u5c06\u6dfb\u52a0\u7b2c\u4e00\u4e2a\u4e3b\u5b58\u50a8\u670d\u52a1\u5668\u3002\u4e3b\u5b58\u50a8\u4e2d\u5305\u542b\u5728\u7fa4\u96c6\u4e2d\u7684\u4e3b\u673a\u4e0a\u8fd0\u884c\u7684\u6240\u6709 VM \u7684\u78c1\u76d8\u5377\u3002\u8bf7\u4f7f\u7528\u5e95\u5c42\u865a\u62df\u673a\u7ba1\u7406\u7a0b\u5e8f\u652f\u6301\u7684\u7b26\u5408\u6807\u51c6\u7684\u534f\u8bae\u3002 +message.desc.secondary.storage=\u6bcf\u4e2a\u8d44\u6e90\u57df\u4e2d\u5fc5\u987b\u81f3\u5c11\u5305\u542b\u4e00\u4e2a NFS \u6216\u4e8c\u7ea7\u5b58\u50a8\u670d\u52a1\u5668\uff0c\u73b0\u5728\u6211\u4eec\u5c06\u6dfb\u52a0\u7b2c\u4e00\u4e2a NFS \u6216\u4e8c\u7ea7\u5b58\u50a8\u670d\u52a1\u5668\u3002\u4e8c\u7ea7\u5b58\u50a8\u7528\u4e8e\u5b58\u50a8 VM \u6a21\u677f\u3001ISO \u6620\u50cf\u548c VM \u78c1\u76d8\u5377\u5feb\u7167\u3002\u6b64\u670d\u52a1\u5668\u5fc5\u987b\u5bf9\u8d44\u6e90\u57df\u4e2d\u7684\u6240\u6709\u670d\u52a1\u5668\u53ef\u7528\u3002

\u8bf7\u63d0\u4f9b IP \u5730\u5740\u548c\u5bfc\u51fa\u8def\u5f84\u3002 +message.desc.zone=\u8d44\u6e90\u57df\u662f CloudStack \u4e2d\u6700\u5927\u7684\u7ec4\u7ec7\u5355\u4f4d\uff0c\u4e00\u4e2a\u8d44\u6e90\u57df\u901a\u5e38\u4e0e\u4e00\u4e2a\u6570\u636e\u4e2d\u5fc3\u76f8\u5bf9\u5e94\u3002\u8d44\u6e90\u57df\u53ef\u63d0\u4f9b\u7269\u7406\u9694\u79bb\u548c\u5197\u4f59\u3002\u4e00\u4e2a\u8d44\u6e90\u57df\u7531\u4e00\u4e2a\u6216\u591a\u4e2a\u63d0\u4f9b\u70b9\u4ee5\u53ca\u7531\u8d44\u6e90\u57df\u4e2d\u7684\u6240\u6709\u63d0\u4f9b\u70b9\u5171\u4eab\u7684\u4e00\u4e2a\u4e8c\u7ea7\u5b58\u50a8\u670d\u52a1\u5668\u7ec4\u6210\uff0c\u5176\u4e2d\u6bcf\u4e2a\u63d0\u4f9b\u70b9\u4e2d\u5305\u542b\u591a\u4e2a\u4e3b\u673a\u548c\u4e3b\u5b58\u50a8\u670d\u52a1\u5668\u3002 +message.detach.disk=\u662f\u5426\u786e\u5b9e\u8981\u53d6\u6d88\u9644\u52a0\u6b64\u78c1\u76d8? +message.detach.iso.confirm=\u8bf7\u786e\u8ba4\u60a8\u786e\u5b9e\u8981\u4ece\u6b64\u865a\u62df\u673a\u4e2d\u53d6\u6d88\u9644\u52a0\u6b64 ISO\u3002 +message.disable.account=\u8bf7\u786e\u8ba4\u60a8\u786e\u5b9e\u8981\u7981\u7528\u6b64\u5e10\u6237\u3002\u7981\u7528\u540e\uff0c\u6b64\u5e10\u6237\u7684\u6240\u6709\u7528\u6237\u5c06\u4e0d\u518d\u6709\u6743\u8bbf\u95ee\u5404\u81ea\u7684\u4e91\u8d44\u6e90\u3002\u6240\u6709\u6b63\u5728\u8fd0\u884c\u7684\u865a\u62df\u673a\u5c06\u7acb\u5373\u5173\u95ed\u3002 +message.disable.snapshot.policy=\u60a8\u5df2\u6210\u529f\u7981\u7528\u5f53\u524d\u7684\u5feb\u7167\u7b56\u7565\u3002 +message.disable.user=\u8bf7\u786e\u8ba4\u60a8\u786e\u5b9e\u8981\u7981\u7528\u6b64\u7528\u6237\u3002 +message.disable.vpn.access=\u8bf7\u786e\u8ba4\u60a8\u786e\u5b9e\u8981\u7981\u7528 VPN \u8bbf\u95ee\u3002 +message.disable.vpn=\u662f\u5426\u786e\u5b9e\u8981\u7981\u7528 VPN? +message.download.ISO=\u8bf7\u5355\u51fb 00000 \u4e0b\u8f7d ISO +message.download.template=\u8bf7\u5355\u51fb 00000 \u4e0b\u8f7d\u6a21\u677f +message.download.volume.confirm=\u8bf7\u786e\u8ba4\u60a8\u786e\u5b9e\u8981\u4e0b\u8f7d\u6b64\u5377 +message.download.volume=\u8bf7\u5355\u51fb 00000 \u4e0b\u8f7d\u5377 +message.edit.account=\u7f16\u8f91(\u201c-1\u201d\u8868\u793a\u5bf9\u8981\u521b\u5efa\u7684\u8d44\u6e90\u6570\u91cf\u6ca1\u6709\u4efb\u4f55\u9650\u5236) +message.edit.confirm=\u8bf7\u5148\u786e\u8ba4\u60a8\u6240\u505a\u7684\u66f4\u6539\uff0c\u7136\u540e\u5355\u51fb\u201c\u4fdd\u5b58\u201d\u3002 +message.edit.limits=\u8bf7\u6307\u5b9a\u5bf9\u4ee5\u4e0b\u8d44\u6e90\u7684\u9650\u5236\u3002\u201c-1\u201d\u8868\u793a\u4e0d\u9650\u5236\u8981\u521b\u5efa\u7684\u8d44\u6e90\u6570\u3002 +message.edit.traffic.type=\u8bf7\u6307\u5b9a\u60a8\u5e0c\u671b\u4e0e\u6b64\u6d41\u91cf\u7c7b\u578b\u5173\u8054\u7684\u6d41\u91cf\u6807\u7b7e\u3002 +message.enable.account=\u8bf7\u786e\u8ba4\u60a8\u786e\u5b9e\u8981\u542f\u7528\u6b64\u5e10\u6237\u3002 +message.enable.user=\u8bf7\u786e\u8ba4\u60a8\u786e\u5b9e\u8981\u542f\u7528\u6b64\u7528\u6237\u3002 +message.enable.vpn.access=\u5f53\u524d\u5df2\u5bf9\u6b64 IP \u5730\u5740\u7981\u7528\u4e86 VPN\u3002\u662f\u5426\u8981\u542f\u7528 VPN \u8bbf\u95ee? +message.enable.vpn=\u8bf7\u786e\u8ba4\u60a8\u786e\u5b9e\u8981\u5bf9\u6b64 IP \u5730\u5740\u542f\u7528 VPN \u8bbf\u95ee\u3002 +message.enabled.vpn.ip.sec=\u60a8\u7684 IPSec \u9884\u5171\u4eab\u5bc6\u94a5 +message.enabled.vpn=\u60a8\u7684 VPN \u8bbf\u95ee\u529f\u80fd\u5f53\u524d\u5df2\u542f\u7528\uff0c\u53ef\u4ee5\u901a\u8fc7 IP \u8fdb\u884c\u8bbf\u95ee +message.enabling.security.group.provider=\u6b63\u5728\u542f\u7528\u5b89\u5168\u7ec4\u63d0\u4f9b\u7a0b\u5e8f +message.enabling.zone=\u6b63\u5728\u542f\u7528\u8d44\u6e90\u57df +message.enter.token=\u8bf7\u8f93\u5165\u60a8\u5728\u9080\u8bf7\u7535\u5b50\u90ae\u4ef6\u4e2d\u6536\u5230\u7684\u4ee4\u724c\u3002 +message.generate.keys=\u8bf7\u786e\u8ba4\u60a8\u786e\u5b9e\u8981\u4e3a\u6b64\u7528\u6237\u751f\u6210\u65b0\u5bc6\u94a5\u3002 +message.guest.traffic.in.advanced.zone=\u6765\u5bbe\u7f51\u7edc\u6d41\u91cf\u662f\u6307\u6700\u7ec8\u7528\u6237\u865a\u62df\u673a\u4e4b\u95f4\u7684\u901a\u4fe1\u3002\u6307\u5b9a\u4e00\u4e2a VLAN ID \u8303\u56f4\u53ef\u4f20\u9001\u6bcf\u4e2a\u7269\u7406\u7f51\u7edc\u7684\u6765\u5bbe\u6d41\u91cf\u3002 +message.guest.traffic.in.basic.zone=\u6765\u5bbe\u7f51\u7edc\u6d41\u91cf\u662f\u6307\u6700\u7ec8\u7528\u6237\u865a\u62df\u673a\u4e4b\u95f4\u7684\u901a\u4fe1\u3002\u5e94\u6307\u5b9a\u4e00\u4e2a CloudStack \u53ef\u4ee5\u5206\u914d\u7ed9\u6765\u5bbe VM \u7684 IP \u5730\u5740\u8303\u56f4\u3002\u8bf7\u786e\u4fdd\u6b64\u8303\u56f4\u4e0e\u9884\u7559\u7684\u7cfb\u7edf IP \u8303\u56f4\u4e0d\u91cd\u53e0\u3002 +message.installWizard.click.retry=\u8bf7\u5355\u51fb\u6b64\u6309\u94ae\u91cd\u65b0\u5c1d\u8bd5\u542f\u52a8\u3002 +message.installWizard.copy.whatIsACluster=\u7fa4\u96c6\u63d0\u4f9b\u4e86\u4e00\u79cd\u7f16\u7ec4\u4e3b\u673a\u7684\u65b9\u6cd5\u3002\u7fa4\u96c6\u4e2d\u7684\u6240\u6709\u4e3b\u673a\u90fd\u5177\u6709\u76f8\u540c\u7684\u786c\u4ef6\uff0c\u8fd0\u884c\u76f8\u540c\u7684\u865a\u62df\u673a\u7ba1\u7406\u7a0b\u5e8f\uff0c\u4f4d\u4e8e\u540c\u4e00\u5b50\u7f51\u4e2d\uff0c\u5e76\u8bbf\u95ee\u76f8\u540c\u7684\u5171\u4eab\u5b58\u50a8\u3002\u53ef\u4ee5\u5b9e\u65f6\u5c06\u865a\u62df\u673a\u5b9e\u4f8b(VM)\u4ece\u4e00\u53f0\u4e3b\u673a\u8fc1\u79fb\u5230\u540c\u4e00\u7fa4\u96c6\u5185\u7684\u5176\u4ed6\u4e3b\u673a\uff0c\u800c\u65e0\u9700\u4e2d\u65ad\u5411\u7528\u6237\u63d0\u4f9b\u670d\u52a1\u3002\u7fa4\u96c6\u662f CloudStack&\#8482; \u90e8\u7f72\u4e2d\u7684\u7b2c\u4e09\u5927\u7ec4\u7ec7\u5355\u4f4d\u3002\u7fa4\u96c6\u5305\u542b\u5728\u63d0\u4f9b\u70b9\u4e2d\uff0c\u63d0\u4f9b\u70b9\u5305\u542b\u5728\u8d44\u6e90\u57df\u4e2d\u3002

CloudStack&\#8482; \u5141\u8bb8\u4e91\u90e8\u7f72\u4e2d\u5b58\u5728\u591a\u4e2a\u7fa4\u96c6\uff0c\u4f46\u5bf9\u4e8e\u57fa\u672c\u5b89\u88c5\uff0c\u6211\u4eec\u53ea\u9700\u8981\u4e00\u4e2a\u7fa4\u96c6\u3002 +message.installWizard.copy.whatIsAHost=\u4e3b\u673a\u662f\u6307\u4e00\u53f0\u8ba1\u7b97\u673a\u3002\u4e3b\u673a\u63d0\u4f9b\u8fd0\u884c\u6765\u5bbe\u865a\u62df\u673a\u7684\u8ba1\u7b97\u8d44\u6e90\u3002\u6bcf\u53f0\u4e3b\u673a\u4e0a\u90fd\u5b89\u88c5\u6709\u865a\u62df\u673a\u7ba1\u7406\u7a0b\u5e8f\u8f6f\u4ef6\uff0c\u7528\u4e8e\u7ba1\u7406\u6765\u5bbe VM (\u88f8\u673a\u4e3b\u673a\u9664\u5916\uff0c\u5c06\u5728\u201c\u9ad8\u7ea7\u5b89\u88c5\u6307\u5357\u201d\u4e2d\u8ba8\u8bba\u8fd9\u4e00\u7279\u6b8a\u6848\u4f8b)\u3002\u4f8b\u5982\uff0c\u542f\u7528\u4e86 KVM \u7684 Linux \u670d\u52a1\u5668\u3001Citrix XenServer \u670d\u52a1\u5668\u548c ESXi \u670d\u52a1\u5668\u90fd\u53ef\u7528\u4f5c\u4e3b\u673a\u3002\u5728\u57fa\u672c\u5b89\u88c5\u4e2d\uff0c\u6211\u4eec\u5c06\u4f7f\u7528\u4e00\u53f0\u8fd0\u884c XenServer \u7684\u4e3b\u673a\u3002

\u4e3b\u673a\u662f CloudStack&\#8482; \u90e8\u7f72\u4e2d\u6700\u5c0f\u7684\u7ec4\u7ec7\u5355\u4f4d\u3002\u4e3b\u673a\u5305\u542b\u5728\u7fa4\u96c6\u4e2d\uff0c\u7fa4\u96c6\u5305\u542b\u5728\u63d0\u4f9b\u70b9\u4e2d\uff0c\u63d0\u4f9b\u70b9\u5305\u542b\u5728\u8d44\u6e90\u57df\u4e2d\u3002 +message.installWizard.copy.whatIsAPod=\u4e00\u4e2a\u63d0\u4f9b\u70b9\u901a\u5e38\u4ee3\u8868\u4e00\u4e2a\u673a\u67b6\u3002\u540c\u4e00\u63d0\u4f9b\u70b9\u4e2d\u7684\u4e3b\u673a\u4f4d\u4e8e\u540c\u4e00\u5b50\u7f51\u4e2d\u3002

\u63d0\u4f9b\u70b9\u662f CloudStack&\#8482; \u90e8\u7f72\u4e2d\u7684\u7b2c\u4e8c\u5927\u7ec4\u7ec7\u5355\u4f4d\u3002\u63d0\u4f9b\u70b9\u5305\u542b\u5728\u8d44\u6e90\u57df\u4e2d\u3002\u6bcf\u4e2a\u8d44\u6e90\u57df\u4e2d\u53ef\u4ee5\u5305\u542b\u4e00\u4e2a\u6216\u591a\u4e2a\u63d0\u4f9b\u70b9\uff1b\u5728\u57fa\u672c\u5b89\u88c5\u4e2d\uff0c\u60a8\u7684\u8d44\u6e90\u57df\u4e2d\u5c06\u4ec5\u5305\u542b\u4e00\u4e2a\u63d0\u4f9b\u70b9\u3002 +message.installWizard.copy.whatIsAZone=\u8d44\u6e90\u57df\u662f CloudStack&\#8482; \u90e8\u7f72\u4e2d\u6700\u5927\u7684\u7ec4\u7ec7\u5355\u4f4d\u3002\u867d\u7136\u5141\u8bb8\u4e00\u4e2a\u6570\u636e\u4e2d\u5fc3\u4e2d\u5b58\u5728\u591a\u4e2a\u8d44\u6e90\u57df\uff0c\u4f46\u662f\u4e00\u4e2a\u8d44\u6e90\u57df\u901a\u5e38\u4e0e\u4e00\u4e2a\u6570\u636e\u4e2d\u5fc3\u76f8\u5bf9\u5e94\u3002\u5c06\u57fa\u7840\u67b6\u6784\u7f16\u7ec4\u5230\u8d44\u6e90\u57df\u4e2d\u7684\u597d\u5904\u662f\u53ef\u4ee5\u63d0\u4f9b\u7269\u7406\u9694\u79bb\u548c\u5197\u4f59\u3002\u4f8b\u5982\uff0c\u6bcf\u4e2a\u8d44\u6e90\u57df\u90fd\u53ef\u4ee5\u62e5\u6709\u5404\u81ea\u7684\u7535\u6e90\u4f9b\u5e94\u548c\u7f51\u7edc\u4e0a\u884c\u65b9\u6848\uff0c\u5e76\u4e14\u5404\u8d44\u6e90\u57df\u53ef\u4ee5\u5728\u5730\u7406\u4f4d\u7f6e\u4e0a\u76f8\u9694\u5f88\u8fdc(\u867d\u7136\u5e76\u975e\u5fc5\u987b\u76f8\u9694\u5f88\u8fdc)\u3002 +message.installWizard.copy.whatIsCloudStack=CloudStack&\#8482 \u662f\u4e00\u4e2a\u8f6f\u4ef6\u5e73\u53f0\uff0c\u53ef\u5c06\u8ba1\u7b97\u8d44\u6e90\u96c6\u4e2d\u5728\u4e00\u8d77\u4ee5\u6784\u5efa\u516c\u6709\u3001\u79c1\u6709\u548c\u6df7\u5408\u57fa\u7840\u8bbe\u65bd\u5373\u670d\u52a1(IaaS)\u4e91\u3002CloudStack&\#8482 \u8d1f\u8d23\u7ba1\u7406\u7ec4\u6210\u4e91\u57fa\u7840\u67b6\u6784\u7684\u7f51\u7edc\u3001\u5b58\u50a8\u548c\u8ba1\u7b97\u8282\u70b9\u3002\u4f7f\u7528 CloudStack&\#8482 \u53ef\u4ee5\u90e8\u7f72\u3001\u7ba1\u7406\u548c\u914d\u7f6e\u4e91\u8ba1\u7b97\u73af\u5883\u3002

CloudStack&\#8482 \u901a\u8fc7\u6269\u5c55\u5546\u7528\u786c\u4ef6\u4e0a\u8fd0\u884c\u7684\u6bcf\u4e2a\u865a\u62df\u673a\u6620\u50cf\u7684\u8303\u56f4\uff0c\u63d0\u4f9b\u4e86\u4e00\u4e2a\u5b9e\u65f6\u53ef\u7528\u7684\u4e91\u57fa\u7840\u67b6\u6784\u8f6f\u4ef6\u5806\u6808\u7528\u4e8e\u4ee5\u670d\u52a1\u65b9\u5f0f\u4ea4\u4ed8\u865a\u62df\u6570\u636e\u4e2d\u5fc3\uff0c\u5373\u4ea4\u4ed8\u6784\u5efa\u3001\u90e8\u7f72\u548c\u7ba1\u7406\u591a\u5c42\u6b21\u548c\u591a\u79df\u6237\u4e91\u5e94\u7528\u7a0b\u5e8f\u5fc5\u9700\u7684\u6240\u6709\u7ec4\u4ef6\u3002\u5f00\u6e90\u7248\u672c\u548c Premium \u7248\u672c\u90fd\u5df2\u53ef\u7528\uff0c\u4e14\u63d0\u4f9b\u7684\u529f\u80fd\u51e0\u4e4e\u5b8c\u5168\u76f8\u540c\u3002 +message.installWizard.copy.whatIsPrimaryStorage=CloudStack&\#8482; \u4e91\u57fa\u7840\u67b6\u6784\u4f7f\u7528\u4ee5\u4e0b\u4e24\u79cd\u7c7b\u578b\u7684\u5b58\u50a8\: \u4e3b\u5b58\u50a8\u548c\u4e8c\u7ea7\u5b58\u50a8\u3002\u8fd9\u4e24\u79cd\u7c7b\u578b\u7684\u5b58\u50a8\u53ef\u4ee5\u662f iSCSI \u6216 NFS \u670d\u52a1\u5668\uff0c\u4e5f\u53ef\u4ee5\u662f\u672c\u5730\u78c1\u76d8\u3002

\u4e3b\u5b58\u50a8\u4e0e\u7fa4\u96c6\u76f8\u5173\u8054\uff0c\u7528\u4e8e\u5b58\u50a8\u8be5\u7fa4\u96c6\u4e2d\u7684\u4e3b\u673a\u4e0a\u6b63\u5728\u8fd0\u884c\u7684\u6240\u6709 VM \u5bf9\u5e94\u7684\u6bcf\u4e2a\u6765\u5bbe VM \u7684\u78c1\u76d8\u5377\u3002\u4e3b\u5b58\u50a8\u670d\u52a1\u5668\u901a\u5e38\u4f4d\u4e8e\u9760\u8fd1\u4e3b\u673a\u7684\u4f4d\u7f6e\u3002 +message.installWizard.copy.whatIsSecondaryStorage=\u4e8c\u7ea7\u5b58\u50a8\u4e0e\u8d44\u6e90\u57df\u76f8\u5173\u8054\uff0c\u7528\u4e8e\u5b58\u50a8\u4ee5\u4e0b\u9879\u76ee\:
  • \u6a21\u677f - \u53ef\u7528\u4e8e\u542f\u52a8 VM \u5e76\u53ef\u4ee5\u5305\u542b\u5176\u4ed6\u914d\u7f6e\u4fe1\u606f(\u4f8b\u5982\uff0c\u5df2\u5b89\u88c5\u7684\u5e94\u7528\u7a0b\u5e8f)\u7684\u64cd\u4f5c\u7cfb\u7edf\u6620\u50cf
  • ISO \u6620\u50cf - \u53ef\u91cd\u65b0\u542f\u52a8\u6216\u4e0d\u53ef\u91cd\u65b0\u542f\u52a8\u7684\u64cd\u4f5c\u7cfb\u7edf\u6620\u50cf
  • \u78c1\u76d8\u5377\u5feb\u7167 - \u5df2\u4fdd\u5b58\u7684 VM \u6570\u636e\u526f\u672c\uff0c\u53ef\u7528\u4e8e\u6267\u884c\u6570\u636e\u6062\u590d\u6216\u521b\u5efa\u65b0\u6a21\u677f
+message.installWizard.now.building=\u73b0\u5728\u6b63\u5728\u6784\u5efa\u60a8\u7684\u4e91... +message.installWizard.tooltip.addCluster.name=\u7fa4\u96c6\u7684\u540d\u79f0\u3002\u6b64\u540d\u79f0\u53ef\u4ee5\u662f\u60a8\u9009\u62e9\u7684\u6587\u672c\uff0c\u4e14\u672a\u7531 CloudStack \u4f7f\u7528\u3002 +message.installWizard.tooltip.addHost.hostname=\u4e3b\u673a\u7684 DNS \u540d\u79f0\u6216 IP \u5730\u5740\u3002 +message.installWizard.tooltip.addHost.password=\u6b64\u4e3a\u4e0a\u8ff0\u7528\u6237\u7684\u5bc6\u7801(\u6765\u81ea XenServer \u5b89\u88c5)\u3002 +message.installWizard.tooltip.addHost.username=\u901a\u5e38\u4e3a root\u3002 +message.installWizard.tooltip.addPod.name=\u63d0\u4f9b\u70b9\u7684\u540d\u79f0 +message.installWizard.tooltip.addPod.reservedSystemEndIp=\u6b64\u4e3a CloudStack \u7528\u4e8e\u7ba1\u7406\u4e8c\u7ea7\u5b58\u50a8 VM \u548c\u63a7\u5236\u53f0\u4ee3\u7406 VM \u7684\u4e13\u7528\u7f51\u7edc\u4e2d\u7684 IP \u8303\u56f4\u3002\u8fd9\u4e9b IP \u5730\u5740\u6765\u81ea\u4e0e\u8ba1\u7b97\u670d\u52a1\u5668\u76f8\u540c\u7684\u5b50\u7f51\u3002 +message.installWizard.tooltip.addPod.reservedSystemGateway=\u8be5\u63d0\u4f9b\u70b9\u4e2d\u7684\u4e3b\u673a\u7f51\u5173\u3002 +message.installWizard.tooltip.addPod.reservedSystemNetmask=\u6765\u5bbe\u5c06\u8981\u4f7f\u7528\u7684\u5b50\u7f51\u4e0a\u6b63\u5728\u4f7f\u7528\u7684\u7f51\u7edc\u63a9\u7801\u3002 +message.installWizard.tooltip.addPod.reservedSystemStartIp=\u6b64\u4e3a CloudStack \u7528\u4e8e\u7ba1\u7406\u4e8c\u7ea7\u5b58\u50a8 VM \u548c\u63a7\u5236\u53f0\u4ee3\u7406 VM \u7684\u4e13\u7528\u7f51\u7edc\u4e2d\u7684 IP \u8303\u56f4\u3002\u8fd9\u4e9b IP \u5730\u5740\u6765\u81ea\u4e0e\u8ba1\u7b97\u670d\u52a1\u5668\u76f8\u540c\u7684\u5b50\u7f51\u3002 +message.installWizard.tooltip.addPrimaryStorage.name=\u5b58\u50a8\u8bbe\u5907\u7684\u540d\u79f0\u3002 +message.installWizard.tooltip.addPrimaryStorage.path=(\u9002\u7528\u4e8e NFS)\u5728 NFS \u4e2d\uff0c\u6b64\u8def\u5f84\u4e3a\u670d\u52a1\u5668\u7684\u5bfc\u51fa\u8def\u5f84\u3002\u8def\u5f84(\u9488\u5bf9 SharedMountPoint)\u3002\u5bf9\u4e8e KVM\uff0c\u6b64\u8def\u5f84\u4e3a\u88c5\u8f7d\u4e86\u4e8c\u7ea7\u5b58\u50a8\u7684\u6bcf\u4e2a\u4e3b\u673a\u4e0a\u7684\u8def\u5f84\u3002\u4f8b\u5982\uff0c/mnt/primary\u3002 +message.installWizard.tooltip.addPrimaryStorage.server=(\u9002\u7528\u4e8e NFS\u3001iSCSI \u6216 PreSetup)\u5b58\u50a8\u8bbe\u5907\u7684 IP \u5730\u5740\u6216 DNS \u540d\u79f0\u3002 +message.installWizard.tooltip.addSecondaryStorage.nfsServer=\u6258\u7ba1\u4e8c\u7ea7\u5b58\u50a8\u7684 NFS \u670d\u52a1\u5668\u7684 IP \u5730\u5740 +message.installWizard.tooltip.addSecondaryStorage.path=\u5bfc\u51fa\u8def\u5f84(\u4f4d\u4e8e\u4e0a\u8ff0\u6307\u5b9a\u670d\u52a1\u5668\u4e0a) +message.installWizard.tooltip.addZone.dns1=\u8fd9\u4e9b\u670d\u52a1\u5668\u662f\u4f9b\u6b64\u8d44\u6e90\u57df\u4e2d\u7684\u6765\u5bbe VM \u4f7f\u7528\u7684 DNS \u670d\u52a1\u5668\uff0c\u5c06\u901a\u8fc7\u60a8\u7a0d\u540e\u8981\u6dfb\u52a0\u7684\u516c\u7528\u7f51\u7edc\u8fdb\u884c\u8bbf\u95ee\u3002\u6b64\u8d44\u6e90\u57df\u7684\u516c\u7528 IP \u5730\u5740\u5fc5\u987b\u8def\u7531\u5230\u5728\u6b64\u5904\u6307\u5b9a\u7684 DNS \u670d\u52a1\u5668\u3002 +message.installWizard.tooltip.addZone.dns2=\u8fd9\u4e9b\u670d\u52a1\u5668\u662f\u4f9b\u6b64\u8d44\u6e90\u57df\u4e2d\u7684\u6765\u5bbe VM \u4f7f\u7528\u7684 DNS \u670d\u52a1\u5668\uff0c\u5c06\u901a\u8fc7\u60a8\u7a0d\u540e\u8981\u6dfb\u52a0\u7684\u516c\u7528\u7f51\u7edc\u8fdb\u884c\u8bbf\u95ee\u3002\u6b64\u8d44\u6e90\u57df\u7684\u516c\u7528 IP \u5730\u5740\u5fc5\u987b\u8def\u7531\u5230\u5728\u6b64\u5904\u6307\u5b9a\u7684 DNS \u670d\u52a1\u5668\u3002 +message.installWizard.tooltip.addZone.internaldns1=\u8fd9\u4e9b\u670d\u52a1\u5668\u662f\u4f9b\u6b64\u8d44\u6e90\u57df\u4e2d\u7684\u7cfb\u7edf VM \u4f7f\u7528\u7684 DNS \u670d\u52a1\u5668\uff0c\u5c06\u901a\u8fc7\u7cfb\u7edf VM \u7684\u4e13\u7528\u7f51\u7edc\u63a5\u53e3\u8fdb\u884c\u8bbf\u95ee\u3002\u60a8\u4e3a\u63d0\u4f9b\u70b9\u63d0\u4f9b\u7684\u4e13\u7528 IP \u5730\u5740\u5fc5\u987b\u8def\u7531\u5230\u5728\u6b64\u5904\u6307\u5b9a\u7684 DNS \u670d\u52a1\u5668\u3002 +message.installWizard.tooltip.addZone.internaldns2=\u8fd9\u4e9b\u670d\u52a1\u5668\u662f\u4f9b\u6b64\u8d44\u6e90\u57df\u4e2d\u7684\u7cfb\u7edf VM \u4f7f\u7528\u7684 DNS \u670d\u52a1\u5668\uff0c\u5c06\u901a\u8fc7\u7cfb\u7edf VM \u7684\u4e13\u7528\u7f51\u7edc\u63a5\u53e3\u8fdb\u884c\u8bbf\u95ee\u3002\u60a8\u4e3a\u63d0\u4f9b\u70b9\u63d0\u4f9b\u7684\u4e13\u7528 IP \u5730\u5740\u5fc5\u987b\u8def\u7531\u5230\u5728\u6b64\u5904\u6307\u5b9a\u7684 DNS \u670d\u52a1\u5668\u3002 +message.installWizard.tooltip.addZone.name=\u8d44\u6e90\u57df\u540d\u79f0 +message.installWizard.tooltip.configureGuestTraffic.description=\u60a8\u7684\u7f51\u7edc\u8bf4\u660e +message.installWizard.tooltip.configureGuestTraffic.guestEndIp=\u80fd\u591f\u5206\u914d\u7ed9\u6b64\u8d44\u6e90\u57df\u4e2d\u7684\u6765\u5bbe\u7684 IP \u5730\u5740\u8303\u56f4\u3002\u5982\u679c\u4f7f\u7528\u4e00\u4e2a NIC\uff0c\u8fd9\u4e9b IP \u5e94\u4f4d\u4e8e\u4e0e\u63d0\u4f9b\u70b9 CIDR \u76f8\u540c\u7684 CIDR \u4e2d\u3002 +message.installWizard.tooltip.configureGuestTraffic.guestGateway=\u6765\u5bbe\u5e94\u4f7f\u7528\u7684\u7f51\u5173 +message.installWizard.tooltip.configureGuestTraffic.guestNetmask=\u6765\u5bbe\u5e94\u4f7f\u7528\u7684\u5b50\u7f51\u4e0a\u6b63\u5728\u4f7f\u7528\u7684\u7f51\u7edc\u63a9\u7801 +message.installWizard.tooltip.configureGuestTraffic.guestStartIp=\u80fd\u591f\u5206\u914d\u7ed9\u6b64\u8d44\u6e90\u57df\u4e2d\u7684\u6765\u5bbe\u7684 IP \u5730\u5740\u8303\u56f4\u3002\u5982\u679c\u4f7f\u7528\u4e00\u4e2a NIC\uff0c\u8fd9\u4e9b IP \u5e94\u4f4d\u4e8e\u4e0e\u63d0\u4f9b\u70b9 CIDR \u76f8\u540c\u7684 CIDR \u4e2d\u3002 +message.installWizard.tooltip.configureGuestTraffic.name=\u60a8\u7684\u7f51\u7edc\u540d\u79f0 +message.instanceWizard.noTemplates=\u60a8\u6ca1\u6709\u4efb\u4f55\u53ef\u7528\u6a21\u677f\uff1b\u8bf7\u6dfb\u52a0\u4e00\u4e2a\u517c\u5bb9\u7684\u6a21\u677f\uff0c\u7136\u540e\u91cd\u65b0\u542f\u52a8\u5b9e\u4f8b\u5411\u5bfc\u3002 +message.ip.address.changed=\u60a8\u7684 IP \u5730\u5740\u53ef\u80fd\u5df2\u53d1\u751f\u53d8\u5316\uff1b\u662f\u5426\u8981\u5237\u65b0\u6b64\u5217\u8868? \u8bf7\u6ce8\u610f\uff0c\u5237\u65b0\u6b64\u5217\u8868\u65f6\uff0c\u201c\u8be6\u7ec6\u4fe1\u606f\u201d\u7a97\u683c\u5c06\u5173\u95ed\u3002 +message.iso.desc=\u78c1\u76d8\u6620\u50cf\uff0c\u5176\u4e2d\u5305\u542b\u64cd\u4f5c\u7cfb\u7edf\u7684\u6570\u636e\u6216\u53ef\u542f\u52a8\u4ecb\u8d28 +message.join.project=\u60a8\u73b0\u5728\u5df2\u52a0\u5165\u4e86\u4e00\u4e2a\u9879\u76ee\u3002\u8bf7\u5207\u6362\u5230\u201c\u9879\u76ee\u89c6\u56fe\u201d\u4ee5\u67e5\u770b\u9879\u76ee\u3002 +message.launch.vm.on.private.network=\u662f\u5426\u8981\u5728\u60a8\u7684\u79c1\u4eba\u4e13\u7528\u7f51\u7edc\u4e2d\u542f\u52a8\u5b9e\u4f8b? +message.launch.zone=\u8d44\u6e90\u57df\u5df2\u51c6\u5907\u5c31\u7eea\uff0c\u53ef\u968f\u65f6\u542f\u52a8\uff1b\u8bf7\u7ee7\u7eed\u6267\u884c\u4e0b\u4e00\u6b65\u9aa4\u3002 +message.lock.account=\u8bf7\u786e\u8ba4\u60a8\u786e\u5b9e\u8981\u9501\u5b9a\u6b64\u5e10\u6237\u3002\u901a\u8fc7\u9501\u5b9a\u6b64\u5e10\u6237\uff0c\u6b64\u5e10\u6237\u7684\u6240\u6709\u7528\u6237\u5c06\u4e0d\u518d\u80fd\u591f\u7ba1\u7406\u5404\u81ea\u7684\u4e91\u8d44\u6e90\uff0c\u4f46\u4ecd\u7136\u53ef\u4ee5\u8bbf\u95ee\u73b0\u6709\u8d44\u6e90\u3002 +message.migrate.instance.confirm=\u8bf7\u786e\u8ba4\u8981\u5c06\u865a\u62df\u5b9e\u4f8b\u8fc1\u79fb\u5230\u7684\u4e3b\u673a\u3002 +message.migrate.instance.to.host=\u8bf7\u786e\u8ba4\u60a8\u786e\u5b9e\u8981\u5c06\u5b9e\u4f8b\u8fc1\u79fb\u5230\u5176\u4ed6\u4e3b\u673a\u3002 +message.migrate.instance.to.ps=\u8bf7\u786e\u8ba4\u60a8\u786e\u5b9e\u8981\u5c06\u5b9e\u4f8b\u8fc1\u79fb\u5230\u5176\u4ed6\u4e3b\u5b58\u50a8\u3002 +message.migrate.router.confirm=\u8bf7\u786e\u8ba4\u60a8\u8981\u5c06\u8def\u7531\u5668\u8fc1\u79fb\u5230\u7684\u4e3b\u673a\: +message.migrate.systemvm.confirm=\u8bf7\u786e\u8ba4\u60a8\u8981\u5c06\u7cfb\u7edf VM \u8fc1\u79fb\u5230\u7684\u4e3b\u673a\: +message.migrate.volume=\u8bf7\u786e\u8ba4\u60a8\u786e\u5b9e\u8981\u5c06\u5377\u8fc1\u79fb\u5230\u5176\u4ed6\u4e3b\u5b58\u50a8\u3002 +message.new.user=\u8bf7\u6307\u5b9a\u4ee5\u4e0b\u4fe1\u606f\u4ee5\u5411\u5e10\u6237\u4e2d\u6dfb\u52a0\u4e00\u4e2a\u65b0\u7528\u6237 +message.no.network.support.configuration.not.true=\u60a8\u7684\u6240\u6709\u8d44\u6e90\u57df\u90fd\u672a\u542f\u7528\u5b89\u5168\u7ec4\uff0c\u56e0\u6b64\u65e0\u5176\u4ed6\u7f51\u7edc\u529f\u80fd\u3002\u8bf7\u7ee7\u7eed\u6267\u884c\u6b65\u9aa4 5\u3002 +message.no.network.support=\u60a8\u9009\u62e9\u7684\u865a\u62df\u673a\u7ba1\u7406\u7a0b\u5e8f vSphere \u6ca1\u6709\u4efb\u4f55\u5176\u4ed6\u7f51\u7edc\u529f\u80fd\u3002\u8bf7\u7ee7\u7eed\u6267\u884c\u6b65\u9aa4 5\u3002 +message.no.projects.adminOnly=\u60a8\u6ca1\u6709\u4efb\u4f55\u9879\u76ee\u3002
\u8bf7\u8981\u6c42\u7ba1\u7406\u5458\u521b\u5efa\u4e00\u4e2a\u65b0\u9879\u76ee\u3002 +message.no.projects=\u60a8\u6ca1\u6709\u4efb\u4f55\u9879\u76ee\u3002
\u8bf7\u4ece\u201c\u9879\u76ee\u201d\u90e8\u5206\u4e2d\u521b\u5efa\u4e00\u4e2a\u65b0\u9879\u76ee\u3002 +message.number.clusters=

\u7fa4\u96c6\u6570

+message.number.hosts=

\u4e3b\u673a\u6570

+message.number.pods=

\u63d0\u4f9b\u70b9\u6570

+message.number.storage=

\u4e3b\u5b58\u50a8\u5377\u6570

+message.number.zones=

\u8d44\u6e90\u57df\u6570

+message.pending.projects.1=\u60a8\u6709\u5f85\u5b9a\u9879\u76ee\u9080\u8bf7\: +message.pending.projects.2=\u8981\u67e5\u770b\uff0c\u8bf7\u8f6c\u81f3\u201c\u9879\u76ee\u201d\u90e8\u5206\uff0c\u7136\u540e\u4ece\u4e0b\u62c9\u5217\u8868\u4e2d\u9009\u62e9\u201c\u9080\u8bf7\u201d\u3002 +message.please.add.at.lease.one.traffic.range=\u8bf7\u81f3\u5c11\u6dfb\u52a0\u4e00\u4e2a\u6d41\u91cf\u8303\u56f4\u3002 +message.please.proceed=\u8bf7\u7ee7\u7eed\u6267\u884c\u4e0b\u4e2a\u6b65\u9aa4\u3002 +message.please.select.a.configuration.for.your.zone=\u8bf7\u4e3a\u60a8\u7684\u8d44\u6e90\u57df\u9009\u62e9\u4e00\u79cd\u914d\u7f6e\u3002 +message.please.select.a.different.public.and.management.network.before.removing=\u8bf7\u5148\u9009\u62e9\u5176\u4ed6\u516c\u7528\u7ba1\u7406\u7f51\u7edc\uff0c\u7136\u540e\u518d\u5220\u9664 +message.please.select.networks=\u8bf7\u4e3a\u60a8\u7684\u865a\u62df\u673a\u9009\u62e9\u7f51\u7edc\u3002 +message.please.wait.while.zone.is.being.created=\u6b63\u5728\u521b\u5efa\u8d44\u6e90\u57df\uff0c\u8bf7\u7a0d\u5019\uff1b\u6b64\u64cd\u4f5c\u53ef\u80fd\u9700\u8981\u4e00\u6bb5\u65f6\u95f4\u624d\u80fd\u5b8c\u6210... +message.project.invite.sent=\u53d1\u9001\u7ed9\u7528\u6237\u7684\u9080\u8bf7\uff1b\u7528\u6237\u63a5\u53d7\u9080\u8bf7\u540e\uff0c\u5c06\u52a0\u5165\u5230\u9879\u76ee\u4e2d +message.public.traffic.in.advanced.zone=\u4e91\u4e2d\u7684 VM \u8bbf\u95ee Internet \u65f6\u5c06\u751f\u6210\u516c\u5171\u6d41\u91cf\uff0c\u4f46\u5fc5\u987b\u5206\u914d\u53ef\u516c\u5f00\u8bbf\u95ee\u7684 IP \u624d\u80fd\u5b9e\u73b0\u3002\u6700\u7ec8\u7528\u6237\u53ef\u4ee5\u4f7f\u7528 CloudStack UI \u83b7\u53d6\u8fd9\u4e9b IP\uff0c\u4ee5\u5728\u5176\u6765\u5bbe\u7f51\u7edc\u4e0e\u516c\u7528\u7f51\u7edc\u4e4b\u95f4\u6267\u884c NAT\u3002

\u8bf7\u81f3\u5c11\u4e3a Internet \u6d41\u91cf\u63d0\u4f9b\u4e00\u4e2a IP \u5730\u5740\u8303\u56f4\u3002 +message.public.traffic.in.basic.zone=\u4e91\u4e2d\u7684 VM \u8bbf\u95ee Internet \u6216\u901a\u8fc7 Internet \u5411\u5ba2\u6237\u7aef\u63d0\u4f9b\u670d\u52a1\u65f6\u5c06\u751f\u6210\u516c\u5171\u6d41\u91cf\uff0c\u4f46\u5fc5\u987b\u5206\u914d\u53ef\u516c\u5f00\u8bbf\u95ee\u7684 IP \u624d\u80fd\u5b9e\u73b0\u3002\u521b\u5efa\u5b9e\u4f8b\u65f6\uff0c\u5c06\u628a\u8fd9\u4e00\u7ec4\u516c\u7528 IP \u4e2d\u7684 IP (\u6765\u5bbe IP \u5730\u5740\u9664\u5916)\u5206\u914d\u7ed9\u6b64\u5b9e\u4f8b\u3002\u9759\u6001 1-1 NAT \u5c06\u5728\u516c\u7528 IP \u4e0e\u6765\u5bbe IP \u4e4b\u95f4\u81ea\u52a8\u8bbe\u7f6e\u3002\u6700\u7ec8\u7528\u6237\u8fd8\u53ef\u4ee5\u4f7f\u7528 CloudStack UI \u83b7\u53d6\u5176\u4ed6 IP\uff0c\u4ee5\u5728\u5176\u5b9e\u4f8b\u4e0e\u516c\u7528 IP \u4e4b\u95f4\u6267\u884c\u9759\u6001 NAT\u3002 +message.redirecting.region=\u6b63\u5728\u91cd\u5b9a\u5411\u5230\u5730\u7406\u533a\u57df... +message.remove.region=\u662f\u5426\u786e\u5b9e\u8981\u4ece\u6b64\u7ba1\u7406\u670d\u52a1\u5668\u4e2d\u5220\u9664\u6b64\u5730\u7406\u533a\u57df? +message.remove.vpc=\u8bf7\u786e\u8ba4\u60a8\u786e\u5b9e\u8981\u5220\u9664 VPC +message.remove.vpn.access=\u8bf7\u786e\u8ba4\u60a8\u786e\u5b9e\u8981\u5220\u9664\u4ee5\u4e0b\u7528\u6237\u7684 VPN \u8bbf\u95ee\u3002 +message.reset.password.warning.notPasswordEnabled=\u521b\u5efa\u6b64\u5b9e\u4f8b\u7684\u6a21\u677f\u65f6\u672a\u542f\u7528\u5bc6\u7801 +message.reset.password.warning.notStopped=\u5fc5\u987b\u5148\u505c\u6b62\u60a8\u7684\u5b9e\u4f8b\uff0c\u624d\u80fd\u5c1d\u8bd5\u66f4\u6539\u5176\u5f53\u524d\u5bc6\u7801 +message.reset.VPN.connection=\u8bf7\u786e\u8ba4\u60a8\u786e\u5b9e\u8981\u91cd\u7f6e VPN \u8fde\u63a5 +message.restart.mgmt.server=\u8bf7\u91cd\u65b0\u542f\u52a8\u7ba1\u7406\u670d\u52a1\u5668\u4ee5\u4f7f\u60a8\u7684\u65b0\u8bbe\u7f6e\u751f\u6548\u3002 +message.restart.mgmt.usage.server=\u8bf7\u91cd\u65b0\u542f\u52a8\u7ba1\u7406\u670d\u52a1\u5668\u548c\u4f7f\u7528\u670d\u52a1\u5668\u4ee5\u4f7f\u60a8\u7684\u65b0\u8bbe\u7f6e\u751f\u6548\u3002 +message.restart.network=\u6b64\u7f51\u7edc\u63d0\u4f9b\u7684\u6240\u6709\u670d\u52a1\u90fd\u5c06\u4e2d\u65ad\u3002\u8bf7\u786e\u8ba4\u60a8\u786e\u5b9e\u8981\u91cd\u65b0\u542f\u52a8\u6b64\u7f51\u7edc\u3002 +message.restart.vpc=\u8bf7\u786e\u8ba4\u60a8\u786e\u5b9e\u8981\u91cd\u65b0\u542f\u52a8 VPC +message.security.group.usage=(\u6309\u4f4f Ctrl \u952e\u5e76\u5355\u51fb\u9f20\u6807\u53ef\u9009\u62e9\u6240\u6709\u9002\u7528\u7684\u5b89\u5168\u7ec4) +message.select.a.zone=\u4e00\u4e2a\u8d44\u6e90\u57df\u901a\u5e38\u4e0e\u4e00\u4e2a\u6570\u636e\u4e2d\u5fc3\u76f8\u5bf9\u5e94\u3002\u591a\u4e2a\u8d44\u6e90\u57df\u53ef\u4ee5\u63d0\u4f9b\u7269\u7406\u9694\u79bb\u548c\u5197\u4f59\uff0c\u6709\u52a9\u4e8e\u4f7f\u4e91\u66f4\u52a0\u53ef\u9760\u3002 +message.select.instance=\u8bf7\u9009\u62e9\u4e00\u4e2a\u5b9e\u4f8b\u3002 +message.select.iso=\u8bf7\u4e3a\u60a8\u7684\u65b0\u865a\u62df\u5b9e\u4f8b\u9009\u62e9\u4e00\u4e2a ISO\u3002 +message.select.item=\u8bf7\u9009\u62e9\u4e00\u4e2a\u9879\u76ee\u3002 +message.select.security.groups=\u8bf7\u4e3a\u60a8\u7684\u65b0 VM \u9009\u62e9\u5b89\u5168\u7ec4 +message.select.template=\u8bf7\u4e3a\u60a8\u7684\u65b0\u865a\u62df\u5b9e\u4f8b\u9009\u62e9\u4e00\u4e2a\u6a21\u677f\u3002 +message.setup.physical.network.during.zone.creation.basic=\u6dfb\u52a0\u57fa\u7840\u8d44\u6e90\u57df\u65f6\uff0c\u53ef\u4ee5\u8bbe\u7f6e\u4e00\u4e2a\u7269\u7406\u7f51\u7edc\uff0c\u6b64\u7f51\u7edc\u5e94\u4e0e\u865a\u62df\u673a\u7ba1\u7406\u7a0b\u5e8f\u4e2d\u7684 NIC \u76f8\u5bf9\u5e94\u3002\u6b64\u7f51\u7edc\u53ef\u4ee5\u627f\u8f7d\u591a\u79cd\u6d41\u91cf\u7c7b\u578b\u3002

\u6b64\u5916\uff0c\u8fd8\u53ef\u4ee5\u5c06\u5176\u4ed6\u6d41\u91cf\u7c7b\u578b\u62d6\u653e\u5230\u6b64\u7269\u7406\u7f51\u7edc\u3002 +message.setup.physical.network.during.zone.creation=\u6dfb\u52a0\u9ad8\u7ea7\u8d44\u6e90\u57df\u65f6\uff0c\u9700\u8981\u8bbe\u7f6e\u4e00\u4e2a\u6216\u591a\u4e2a\u7269\u7406\u7f51\u7edc\u3002\u6bcf\u4e2a\u7f51\u7edc\u90fd\u4e0e\u865a\u62df\u673a\u7ba1\u7406\u7a0b\u5e8f\u4e2d\u7684\u4e00\u4e2a NIC \u76f8\u5bf9\u5e94\u3002\u6bcf\u4e2a\u7269\u7406\u7f51\u7edc\u4e2d\u53ef\u4ee5\u5305\u542b\u4e00\u79cd\u6216\u591a\u79cd\u6d41\u91cf\u7c7b\u578b\uff0c\u5e76\u5bf9\u8fd9\u4e9b\u6d41\u91cf\u7c7b\u578b\u53ef\u80fd\u7684\u7ec4\u5408\u65b9\u5f0f\u8bbe\u7f6e\u4e86\u67d0\u4e9b\u9650\u5236\u3002

\u53ef\u4ee5\u5c06\u4e00\u79cd\u6216\u591a\u79cd\u6d41\u91cf\u7c7b\u578b\u62d6\u653e\u5230\u6bcf\u4e2a\u7269\u7406\u7f51\u7edc\u4e2d\u3002 +message.setup.successful=\u5df2\u6210\u529f\u8bbe\u7f6e\u4e91\! +message.snapshot.schedule=\u53ef\u4ee5\u901a\u8fc7\u4ece\u4ee5\u4e0b\u53ef\u7528\u9009\u9879\u4e2d\u8fdb\u884c\u9009\u62e9\u5e76\u5e94\u7528\u60a8\u7684\u7b56\u7565\u9996\u9009\u9879\u6765\u8bbe\u7f6e\u91cd\u73b0\u5feb\u7167\u8ba1\u5212 +message.specify.url=\u8bf7\u6307\u5b9a URL +message.step.1.continue=\u8bf7\u9009\u62e9\u4e00\u4e2a\u6a21\u677f\u6216 ISO \u4ee5\u7ee7\u7eed +message.step.1.desc=\u8bf7\u4e3a\u60a8\u7684\u65b0\u865a\u62df\u5b9e\u4f8b\u9009\u62e9\u4e00\u4e2a\u6a21\u677f\u3002\u8fd8\u53ef\u4ee5\u9009\u62e9\u4e00\u4e2a\u53ef\u5c06 ISO \u6620\u50cf\u5b89\u88c5\u5230\u5176\u4e2d\u7684\u7a7a\u6a21\u677f\u3002 +message.step.2.continue=\u8bf7\u9009\u62e9\u4e00\u79cd\u670d\u52a1\u65b9\u6848\u4ee5\u7ee7\u7eed message.step.2.desc= -message.step.3.continue=Please select a disk offering to continue +message.step.3.continue=\u8bf7\u9009\u62e9\u4e00\u4e2a\u78c1\u76d8\u65b9\u6848\u4ee5\u7ee7\u7eed message.step.3.desc= -message.step.4.continue=Please select at least one network to continue -message.step.4.desc=\u00c7\u00eb\u00d1\u00a1\u00d4\u00f1\u00d0\u00e9\u00c4\u00e2\u00ca\u00b5\u00c0\u00fd\u00d2\u00aa\u00c1\u00ac\u00bd\u00d3\u00b5\u00bd\u00b5\u00c4\u00d6\u00f7\u00cd\u00f8\u00c2\u00e7\u00a1\u00a3 -message.storage.traffic=CloudStack \u00c4\u00da\u00b2\u00bf\u00d7\u00ca\u00d4\u00b4(\u00b0\u00fc\u00c0\u00a8\u00d3\u00eb\u00b9\u00dc\u00c0\u00ed\u00b7\u00fe\u00ce\u00f1\u00c6\u00f7\u00cd\u00a8\u00d0\u00c5\u00b5\u00c4\u00c8\u00ce\u00ba\u00ce\u00d7\u00e9\u00bc\u00fe\u00a3\u00ac\u00c0\u00fd\u00c8\u00e7\u00d6\u00f7\u00bb\u00fa\u00ba\u00cd CloudStack \u00cf\u00b5\u00cd\u00b3 VM)\u00d6\u00ae\u00bc\u00e4\u00b5\u00c4\u00c1\u00f7\u00c1\u00bf\u00a1\u00a3\u00c7\u00eb\u00d4\u00da\u00b4\u00cb\u00b4\u00a6\u00c5\u00e4\u00d6\u00c3\u00b4\u00e6\u00b4\u00a2\u00c1\u00f7\u00c1\u00bf\u00a1\u00a3 -message.suspend.project=\u00ca\u00c7\u00b7\u00f1\u00c8\u00b7\u00ca\u00b5\u00d2\u00aa\u00d4\u00dd\u00cd\u00a3\u00b4\u00cb\u00cf\u00ee\u00c4\u00bf? -message.template.desc=\u00b2\u00d9\u00d7\u00f7\u00cf\u00b5\u00cd\u00b3\u00d3\u00b3\u00cf\u00f1\u00a3\u00ac\u00bf\u00c9\u00d3\u00c3\u00d3\u00da\u00c6\u00f4\u00b6\u00af VM -message.tooltip.dns.1=\u00b9\u00a9\u00d7\u00ca\u00d4\u00b4\u00d3\u00f2\u00d6\u00d0\u00b5\u00c4 VM \u00ca\u00b9\u00d3\u00c3\u00b5\u00c4 DNS \u00b7\u00fe\u00ce\u00f1\u00c6\u00f7\u00c3\u00fb\u00b3\u00c6\u00a1\u00a3\u00d7\u00ca\u00d4\u00b4\u00d3\u00f2\u00b5\u00c4\u00b9\u00ab\u00d3\u00c3 IP \u00b5\u00d8\u00d6\u00b7\u00b1\u00d8\u00d0\u00eb\u00c2\u00b7\u00d3\u00c9\u00b5\u00bd\u00b4\u00cb\u00b7\u00fe\u00ce\u00f1\u00c6\u00f7\u00a1\u00a3 -message.tooltip.dns.2=\u00b9\u00a9\u00d7\u00ca\u00d4\u00b4\u00d3\u00f2\u00d6\u00d0\u00b5\u00c4 VM \u00ca\u00b9\u00d3\u00c3\u00b5\u00c4\u00b6\u00fe\u00bc\u00b6 DNS \u00b7\u00fe\u00ce\u00f1\u00c6\u00f7\u00c3\u00fb\u00b3\u00c6\u00a1\u00a3\u00d7\u00ca\u00d4\u00b4\u00d3\u00f2\u00b5\u00c4\u00b9\u00ab\u00d3\u00c3 IP \u00b5\u00d8\u00d6\u00b7\u00b1\u00d8\u00d0\u00eb\u00c2\u00b7\u00d3\u00c9\u00b5\u00bd\u00b4\u00cb\u00b7\u00fe\u00ce\u00f1\u00c6\u00f7\u00a1\u00a3 -message.tooltip.internal.dns.1=\u00b9\u00a9\u00d7\u00ca\u00d4\u00b4\u00d3\u00f2\u00d6\u00d0\u00b5\u00c4 CloudStack \u00c4\u00da\u00b2\u00bf\u00cf\u00b5\u00cd\u00b3 VM \u00ca\u00b9\u00d3\u00c3\u00b5\u00c4 DNS \u00b7\u00fe\u00ce\u00f1\u00c6\u00f7\u00c3\u00fb\u00b3\u00c6\u00a1\u00a3\u00cc\u00e1\u00b9\u00a9\u00b5\u00e3\u00b5\u00c4\u00d7\u00a8\u00d3\u00c3 IP \u00b5\u00d8\u00d6\u00b7\u00b1\u00d8\u00d0\u00eb\u00c2\u00b7\u00d3\u00c9\u00b5\u00bd\u00b4\u00cb\u00b7\u00fe\u00ce\u00f1\u00c6\u00f7\u00a1\u00a3 -message.tooltip.internal.dns.2=\u00b9\u00a9\u00d7\u00ca\u00d4\u00b4\u00d3\u00f2\u00d6\u00d0\u00b5\u00c4 CloudStack \u00c4\u00da\u00b2\u00bf\u00cf\u00b5\u00cd\u00b3 VM \u00ca\u00b9\u00d3\u00c3\u00b5\u00c4 DNS \u00b7\u00fe\u00ce\u00f1\u00c6\u00f7\u00c3\u00fb\u00b3\u00c6\u00a1\u00a3\u00cc\u00e1\u00b9\u00a9\u00b5\u00e3\u00b5\u00c4\u00d7\u00a8\u00d3\u00c3 IP \u00b5\u00d8\u00d6\u00b7\u00b1\u00d8\u00d0\u00eb\u00c2\u00b7\u00d3\u00c9\u00b5\u00bd\u00b4\u00cb\u00b7\u00fe\u00ce\u00f1\u00c6\u00f7\u00a1\u00a3 -message.tooltip.network.domain=DNS \u00ba\u00f3\u00d7\u00ba\u00a3\u00ac\u00bd\u00ab\u00ce\u00aa\u00d3\u00c9\u00c0\u00b4\u00b1\u00f6 VM \u00b7\u00c3\u00ce\u00ca\u00b5\u00c4\u00cd\u00f8\u00c2\u00e7\u00b4\u00b4\u00bd\u00a8\u00d2\u00bb\u00b8\u00f6\u00d7\u00d4\u00b6\u00a8\u00d2\u00e5\u00d3\u00f2\u00c3\u00fb\u00a1\u00a3 -message.tooltip.pod.name=\u00b4\u00cb\u00cc\u00e1\u00b9\u00a9\u00b5\u00e3\u00b5\u00c4\u00c3\u00fb\u00b3\u00c6\u00a1\u00a3 -message.tooltip.reserved.system.gateway=\u00cc\u00e1\u00b9\u00a9\u00b5\u00e3\u00d6\u00d0\u00b5\u00c4\u00d6\u00f7\u00bb\u00fa\u00cd\u00f8\u00b9\u00d8\u00a1\u00a3 -message.tooltip.reserved.system.netmask=\u00d3\u00c3\u00d3\u00da\u00b6\u00a8\u00d2\u00e5\u00cc\u00e1\u00b9\u00a9\u00b5\u00e3\u00d7\u00d3\u00cd\u00f8\u00b5\u00c4\u00cd\u00f8\u00c2\u00e7\u00c7\u00b0\u00d7\u00ba\u00a1\u00a3\u00c7\u00eb\u00ca\u00b9\u00d3\u00c3 CIDR \u00b7\u00fb\u00ba\u00c5\u00a1\u00a3 -message.tooltip.zone.name=\u00d7\u00ca\u00d4\u00b4\u00d3\u00f2\u00c3\u00fb\u00b3\u00c6\u00a1\u00a3 -message.update.os.preference=\u00c7\u00eb\u00ce\u00aa\u00b4\u00cb\u00d6\u00f7\u00bb\u00fa\u00d1\u00a1\u00d4\u00f1\u00d2\u00bb\u00b8\u00f6\u00b2\u00d9\u00d7\u00f7\u00cf\u00b5\u00cd\u00b3\u00ca\u00d7\u00d1\u00a1\u00cf\u00ee\u00a1\u00a3\u00ca\u00d7\u00cf\u00c8\u00bd\u00ab\u00be\u00df\u00d3\u00d0\u00cf\u00e0\u00cb\u00c6\u00ca\u00d7\u00d1\u00a1\u00cf\u00ee\u00b5\u00c4\u00cb\u00f9\u00d3\u00d0\u00d0\u00e9\u00c4\u00e2\u00ca\u00b5\u00c0\u00fd\u00b7\u00d6\u00c5\u00e4\u00d6\u00c1\u00b4\u00cb\u00d6\u00f7\u00bb\u00fa\u00a3\u00ac\u00c8\u00bb\u00ba\u00f3\u00d4\u00d9\u00d1\u00a1\u00d4\u00f1\u00c6\u00e4\u00cb\u00fb\u00ca\u00b5\u00c0\u00fd\u00a1\u00a3 -message.update.resource.count=\u00c7\u00eb\u00c8\u00b7\u00c8\u00cf\u00c4\u00fa\u00c8\u00b7\u00ca\u00b5\u00d2\u00aa\u00b8\u00fc\u00d0\u00c2\u00b4\u00cb\u00d5\u00ca\u00bb\u00a7\u00b5\u00c4\u00d7\u00ca\u00d4\u00b4\u00ca\u00fd\u00a1\u00a3 -message.update.ssl=\u00c7\u00eb\u00cc\u00e1\u00bd\u00bb\u00d2\u00bb\u00b8\u00f6 X.509 \u00bc\u00e6\u00c8\u00dd\u00b5\u00c4\u00d0\u00c2 SSL \u00d6\u00a4\u00ca\u00e9\u00a3\u00ac\u00d2\u00d4\u00b1\u00e3\u00bd\u00ab\u00c6\u00e4\u00b8\u00fc\u00d0\u00c2\u00b5\u00bd\u00c3\u00bf\u00b8\u00f6\u00bf\u00d8\u00d6\u00c6\u00cc\u00a8\u00b4\u00fa\u00c0\u00ed\u00ba\u00cd\u00b6\u00fe\u00bc\u00b6\u00b4\u00e6\u00b4\u00a2\u00d0\u00e9\u00c4\u00e2\u00ca\u00b5\u00c0\u00fd\: -message.validate.instance.name=\u00ca\u00b5\u00c0\u00fd\u00c3\u00fb\u00b3\u00c6\u00b2\u00bb\u00b5\u00c3\u00b3\u00ac\u00b9\u00fd 63 \u00b8\u00f6\u00d7\u00d6\u00b7\u00fb\u00a1\u00a3\u00bd\u00f6\u00d4\u00ca\u00d0\u00ed\u00ca\u00b9\u00d3\u00c3 ASCII \u00d7\u00d6\u00c4\u00b8 a - z \u00bb\u00f2 A - Z\u00a1\u00a2\u00ca\u00fd\u00d7\u00d6 0 - 9 \u00d2\u00d4\u00bc\u00b0\u00c1\u00ac\u00d7\u00d6\u00b7\u00fb\u00a1\u00a3\u00ca\u00b5\u00c0\u00fd\u00c3\u00fb\u00b3\u00c6\u00b1\u00d8\u00d0\u00eb\u00d2\u00d4\u00d7\u00d6\u00c4\u00b8\u00bf\u00aa\u00cd\u00b7\u00b2\u00a2\u00d2\u00d4\u00d7\u00d6\u00c4\u00b8\u00bb\u00f2\u00ca\u00fd\u00d7\u00d6\u00bd\u00e1\u00ca\u00f8\u00a1\u00a3 -message.virtual.network.desc=\u00c4\u00fa\u00b5\u00c4\u00d5\u00ca\u00bb\u00a7\u00b5\u00c4\u00d7\u00a8\u00d3\u00c3\u00d0\u00e9\u00c4\u00e2\u00cd\u00f8\u00c2\u00e7\u00a1\u00a3\u00b9\u00e3\u00b2\u00a5\u00d3\u00f2\u00b0\u00fc\u00ba\u00ac\u00d4\u00da VLAN \u00d6\u00d0\u00a3\u00ac\u00b2\u00a2\u00c7\u00d2\u00cb\u00f9\u00d3\u00d0\u00b9\u00ab\u00d3\u00c3\u00cd\u00f8\u00c2\u00e7\u00b7\u00c3\u00ce\u00ca\u00b6\u00bc\u00d3\u00c9\u00d0\u00e9\u00c4\u00e2\u00c2\u00b7\u00d3\u00c9\u00c6\u00f7\u00c2\u00b7\u00d3\u00c9\u00b3\u00f6\u00c8\u00a5\u00a1\u00a3 -message.vm.create.template.confirm=\u00b4\u00b4\u00bd\u00a8\u00c4\u00a3\u00b0\u00e5\u00bd\u00ab\u00d7\u00d4\u00b6\u00af\u00d6\u00d8\u00d0\u00c2\u00c6\u00f4\u00b6\u00af VM\u00a1\u00a3 -message.vm.review.launch=\u00c7\u00eb\u00cf\u00c8\u00ba\u00cb\u00b6\u00d4\u00d2\u00d4\u00cf\u00c2\u00d0\u00c5\u00cf\u00a2\u00a3\u00ac\u00c8\u00b7\u00c8\u00cf\u00c4\u00fa\u00b5\u00c4\u00d0\u00e9\u00c4\u00e2\u00ca\u00b5\u00c0\u00fd\u00d5\u00fd\u00c8\u00b7\u00ce\u00de\u00ce\u00f3\u00a3\u00ac\u00c8\u00bb\u00ba\u00f3\u00d4\u00d9\u00c6\u00f4\u00b6\u00af\u00a1\u00a3 -message.volume.create.template.confirm=\u00c7\u00eb\u00c8\u00b7\u00c8\u00cf\u00c4\u00fa\u00c8\u00b7\u00ca\u00b5\u00d2\u00aa\u00ce\u00aa\u00b4\u00cb\u00b4\u00c5\u00c5\u00cc\u00be\u00ed\u00b4\u00b4\u00bd\u00a8\u00d2\u00bb\u00b8\u00f6\u00c4\u00a3\u00b0\u00e5\u00a1\u00a3\u00b4\u00b4\u00bd\u00a8\u00c4\u00a3\u00b0\u00e5\u00bf\u00c9\u00c4\u00dc\u00d0\u00e8\u00d2\u00aa\u00bc\u00b8\u00b7\u00d6\u00d6\u00d3\u00b5\u00bd\u00b8\u00fc\u00b3\u00a4\u00b5\u00c4\u00ca\u00b1\u00bc\u00e4\u00a3\u00ac\u00be\u00df\u00cc\u00e5\u00c8\u00a1\u00be\u00f6\u00d3\u00da\u00be\u00ed\u00b5\u00c4\u00b4\u00f3\u00d0\u00a1\u00a1\u00a3 -message.you.must.have.at.least.one.physical.network=\u00c4\u00fa\u00b1\u00d8\u00d0\u00eb\u00d6\u00c1\u00c9\u00d9\u00d3\u00b5\u00d3\u00d0\u00d2\u00bb\u00b8\u00f6\u00ce\u00ef\u00c0\u00ed\u00cd\u00f8\u00c2\u00e7 -message.zone.creation.complete.would.you.like.to.enable.this.zone=\u00d2\u00d1\u00cd\u00ea\u00b3\u00c9\u00b4\u00b4\u00bd\u00a8\u00d7\u00ca\u00d4\u00b4\u00d3\u00f2\u00a1\u00a3\u00ca\u00c7\u00b7\u00f1\u00d2\u00aa\u00c6\u00f4\u00d3\u00c3\u00b4\u00cb\u00d7\u00ca\u00d4\u00b4\u00d3\u00f2? -message.Zone.creation.complete=\u00d2\u00d1\u00cd\u00ea\u00b3\u00c9\u00b4\u00b4\u00bd\u00a8\u00d7\u00ca\u00d4\u00b4\u00d3\u00f2 -message.zone.no.network.selection=\u00cb\u00f9\u00d1\u00a1\u00d7\u00ca\u00d4\u00b4\u00d3\u00f2\u00ce\u00de\u00c8\u00ce\u00ba\u00ce\u00cd\u00f8\u00c2\u00e7\u00d1\u00a1\u00cf\u00ee\u00a1\u00a3 -message.zone.step.1.desc=\u00c7\u00eb\u00ce\u00aa\u00c4\u00fa\u00b5\u00c4\u00d7\u00ca\u00d4\u00b4\u00d3\u00f2\u00d1\u00a1\u00d4\u00f1\u00d2\u00bb\u00d6\u00d6\u00cd\u00f8\u00c2\u00e7\u00c4\u00a3\u00ca\u00bd\u00a1\u00a3 -message.zone.step.2.desc=\u00c7\u00eb\u00ca\u00e4\u00c8\u00eb\u00d2\u00d4\u00cf\u00c2\u00d0\u00c5\u00cf\u00a2\u00d2\u00d4\u00cc\u00ed\u00bc\u00d3\u00d2\u00bb\u00b8\u00f6\u00d0\u00c2\u00d7\u00ca\u00d4\u00b4\u00d3\u00f2 -message.zone.step.3.desc=\u00c7\u00eb\u00ca\u00e4\u00c8\u00eb\u00d2\u00d4\u00cf\u00c2\u00d0\u00c5\u00cf\u00a2\u00d2\u00d4\u00cc\u00ed\u00bc\u00d3\u00d2\u00bb\u00b8\u00f6\u00d0\u00c2\u00cc\u00e1\u00b9\u00a9\u00b5\u00e3 -message.zoneWizard.enable.local.storage=\u00be\u00af\u00b8\u00e6\: \u00c8\u00e7\u00b9\u00fb\u00ce\u00aa\u00b4\u00cb\u00d7\u00ca\u00d4\u00b4\u00d3\u00f2\u00c6\u00f4\u00d3\u00c3\u00c1\u00cb\u00b1\u00be\u00b5\u00d8\u00b4\u00e6\u00b4\u00a2\u00a3\u00ac\u00d4\u00f2\u00b1\u00d8\u00d0\u00eb\u00d6\u00b4\u00d0\u00d0\u00d2\u00d4\u00cf\u00c2\u00b2\u00d9\u00d7\u00f7\u00a3\u00ac\u00be\u00df\u00cc\u00e5\u00c8\u00a1\u00be\u00f6\u00d3\u00da\u00c4\u00fa\u00cf\u00a3\u00cd\u00fb\u00c6\u00f4\u00b6\u00af\u00cf\u00b5\u00cd\u00b3 VM \u00b5\u00c4\u00ce\u00bb\u00d6\u00c3\:

1. \u00c8\u00e7\u00b9\u00fb\u00d0\u00e8\u00d2\u00aa\u00d4\u00da\u00b9\u00b2\u00cf\u00ed\u00d6\u00f7\u00b4\u00e6\u00b4\u00a2\u00d6\u00d0\u00c6\u00f4\u00b6\u00af\u00cf\u00b5\u00cd\u00b3 VM\u00a3\u00ac\u00d4\u00f2\u00b1\u00d8\u00d0\u00eb\u00d4\u00da\u00cd\u00ea\u00b3\u00c9\u00b4\u00b4\u00bd\u00a8\u00ba\u00f3\u00bd\u00ab\u00b9\u00b2\u00cf\u00ed\u00d6\u00f7\u00b4\u00e6\u00b4\u00a2\u00cc\u00ed\u00bc\u00d3\u00b5\u00bd\u00b4\u00cb\u00d7\u00ca\u00d4\u00b4\u00d3\u00f2\u00a1\u00a3

2. \u00c8\u00e7\u00b9\u00fb\u00d0\u00e8\u00d2\u00aa\u00d4\u00da\u00b1\u00be\u00b5\u00d8\u00d6\u00f7\u00b4\u00e6\u00b4\u00a2\u00d6\u00d0\u00c6\u00f4\u00b6\u00af\u00cf\u00b5\u00cd\u00b3 VM\u00a3\u00ac\u00d4\u00f2\u00b1\u00d8\u00d0\u00eb\u00d4\u00da\u00c6\u00f4\u00d3\u00c3\u00b4\u00cb\u00d7\u00ca\u00d4\u00b4\u00d3\u00f2\u00d6\u00ae\u00c7\u00b0\u00bd\u00ab system.vm.use.local.storage \u00c9\u00e8\u00d6\u00c3\u00ce\u00aa true\u00a1\u00a3


\u00ca\u00c7\u00b7\u00f1\u00d2\u00aa\u00bc\u00cc\u00d0\u00f8? -message.validate.fieldrequired=\u00b4\u00cb\u00d7\u00d6\u00b6\u00ce\u00ce\u00aa\u00b1\u00d8\u00cc\u00ee\u00d7\u00d6\u00b6\u00ce\u00a1\u00a3 -message.validate.fixfield=\u00c7\u00eb\u00d0\u00de\u00b8\u00b4\u00b4\u00cb\u00d7\u00d6\u00b6\u00ce\u00a1\u00a3 -message.validate.email.address=\u00c7\u00eb\u00ca\u00e4\u00c8\u00eb\u00d2\u00bb\u00b8\u00f6\u00d3\u00d0\u00d0\u00a7\u00b5\u00c4\u00b5\u00e7\u00d7\u00d3\u00d3\u00ca\u00bc\u00fe\u00b5\u00d8\u00d6\u00b7\u00a1\u00a3 -message.validate.URL=\u00c7\u00eb\u00ca\u00e4\u00c8\u00eb\u00d3\u00d0\u00d0\u00a7\u00b5\u00c4 URL\u00a1\u00a3 -message.validate.date=\u00c7\u00eb\u00ca\u00e4\u00c8\u00eb\u00d3\u00d0\u00d0\u00a7\u00b5\u00c4\u00c8\u00d5\u00c6\u00da\u00a1\u00a3 -message.validate.date.ISO=\u00c7\u00eb\u00ca\u00e4\u00c8\u00eb\u00d3\u00d0\u00d0\u00a7\u00b5\u00c4\u00c8\u00d5\u00c6\u00da(ISO)\u00a1\u00a3 -message.validate.number=\u00c7\u00eb\u00ca\u00e4\u00c8\u00eb\u00d2\u00bb\u00b8\u00f6\u00d3\u00d0\u00d0\u00a7\u00ca\u00fd\u00d7\u00d6\u00a1\u00a3 -message.validate.digits=\u00c7\u00eb\u00bd\u00f6\u00ca\u00e4\u00c8\u00eb\u00ca\u00fd\u00d7\u00d6\u00a1\u00a3 -message.validate.creditcard=\u00c7\u00eb\u00ca\u00e4\u00c8\u00eb\u00d2\u00bb\u00b8\u00f6\u00d3\u00d0\u00d0\u00a7\u00b5\u00c4\u00d0\u00c5\u00d3\u00c3\u00bf\u00a8\u00bf\u00a8\u00ba\u00c5\u00a1\u00a3 -message.validate.equalto=\u00c7\u00eb\u00d6\u00d8\u00d0\u00c2\u00ca\u00e4\u00c8\u00eb\u00cf\u00e0\u00cd\u00ac\u00b5\u00c4\u00d6\u00b5\u00a1\u00a3 -message.validate.accept=\u00c7\u00eb\u00ca\u00e4\u00c8\u00eb\u00d2\u00bb\u00b8\u00f6\u00b4\u00f8\u00d3\u00d0\u00d3\u00d0\u00d0\u00a7\u00c0\u00a9\u00d5\u00b9\u00c3\u00fb\u00b5\u00c4\u00d6\u00b5\u00a1\u00a3 -message.validate.maxlength=\u00c7\u00eb\u00d7\u00ee\u00b6\u00e0\u00ca\u00e4\u00c8\u00eb {0} \u00b8\u00f6\u00d7\u00d6\u00b7\u00fb\u00a1\u00a3 -message.validate.minlength=\u00c7\u00eb\u00d6\u00c1\u00c9\u00d9\u00ca\u00e4\u00c8\u00eb {0} \u00b8\u00f6\u00d7\u00d6\u00b7\u00fb\u00a1\u00a3 -message.validate.range.length=\u00c7\u00eb\u00ca\u00e4\u00c8\u00eb\u00d2\u00bb\u00b8\u00f6\u00b3\u00a4\u00b6\u00c8\u00bd\u00e9\u00d3\u00da {0} \u00b5\u00bd {1} \u00d6\u00ae\u00bc\u00e4\u00b5\u00c4\u00d6\u00b5\u00a1\u00a3 -message.validate.range=\u00c7\u00eb\u00ca\u00e4\u00c8\u00eb\u00d2\u00bb\u00b8\u00f6\u00bd\u00e9\u00d3\u00da {0} \u00b5\u00bd {1} \u00d6\u00ae\u00bc\u00e4\u00b5\u00c4\u00d6\u00b5\u00a1\u00a3 -message.validate.max=\u00c7\u00eb\u00ca\u00e4\u00c8\u00eb\u00d2\u00bb\u00b8\u00f6\u00d0\u00a1\u00d3\u00da\u00bb\u00f2\u00b5\u00c8\u00d3\u00da {0} \u00b5\u00c4\u00d6\u00b5\u00a1\u00a3 -messgae.validate.min=\u00c7\u00eb\u00ca\u00e4\u00c8\u00eb\u00d2\u00bb\u00b8\u00f6\u00b4\u00f3\u00d3\u00da\u00bb\u00f2\u00b5\u00c8\u00d3\u00da {0} \u00b5\u00c4\u00d6\u00b5\u00a1\u00a3 -message.creating.systemVM=\u00d5\u00fd\u00d4\u00da\u00b4\u00b4\u00bd\u00a8\u00cf\u00b5\u00cd\u00b3 VM (\u00b4\u00cb\u00b2\u00d9\u00d7\u00f7\u00bf\u00c9\u00c4\u00dc\u00d0\u00e8\u00d2\u00aa\u00d2\u00bb\u00d0\u00a9\u00ca\u00b1\u00bc\u00e4) -message.enabling.zone.dots=\u00d5\u00fd\u00d4\u00da\u00c6\u00f4\u00d3\u00c3\u00d7\u00ca\u00d4\u00b4\u00d3\u00f2... -message.restoreVM=\u00ca\u00c7\u00b7\u00f1\u00d2\u00aa\u00bb\u00b9\u00d4\u00ad\u00b4\u00cb VM? -message.no.host.available=\u00c3\u00bb\u00d3\u00d0\u00bf\u00c9\u00d3\u00c3\u00d3\u00da\u00c7\u00a8\u00d2\u00c6\u00b5\u00c4\u00d6\u00f7\u00bb\u00fa -message.network.addVM.desc=\u00c7\u00eb\u00d6\u00b8\u00b6\u00a8\u00d2\u00aa\u00bd\u00ab\u00b4\u00cb VM \u00cc\u00ed\u00bc\u00d3\u00b5\u00bd\u00b5\u00c4\u00cd\u00f8\u00c2\u00e7\u00a1\u00a3\u00bd\u00ab\u00ce\u00aa\u00b4\u00cb\u00cd\u00f8\u00c2\u00e7\u00cc\u00ed\u00bc\u00d3\u00d2\u00bb\u00b8\u00f6\u00d0\u00c2 NIC\u00a1\u00a3 -message.network.addVMNIC=\u00c7\u00eb\u00c8\u00b7\u00c8\u00cf\u00c4\u00fa\u00c8\u00b7\u00ca\u00b5\u00d2\u00aa\u00ce\u00aa\u00b4\u00cb\u00cd\u00f8\u00c2\u00e7\u00cc\u00ed\u00bc\u00d3\u00d2\u00bb\u00b8\u00f6\u00d0\u00c2 VM NIC\u00a1\u00a3 -message.set.default.NIC=\u00c7\u00eb\u00c8\u00b7\u00c8\u00cf\u00c4\u00fa\u00c8\u00b7\u00ca\u00b5\u00d2\u00aa\u00bd\u00ab\u00b4\u00cb NIC \u00c9\u00e8\u00d6\u00c3\u00ce\u00aa\u00b4\u00cb VM \u00b5\u00c4\u00c4\u00ac\u00c8\u00cf NIC\u00a1\u00a3 -message.set.default.NIC.manual=\u00c7\u00eb\u00c1\u00a2\u00bc\u00b4\u00ca\u00d6\u00b6\u00af\u00b8\u00fc\u00d0\u00c2\u00b4\u00cb VM \u00c9\u00cf\u00b5\u00c4\u00c4\u00ac\u00c8\u00cf NIC\u00a1\u00a3 -message.instance.scaled.up.confirm=\u00ca\u00c7\u00b7\u00f1\u00c8\u00b7\u00ca\u00b5\u00d2\u00aa\u00c0\u00a9\u00d5\u00b9\u00c4\u00fa\u00b5\u00c4\u00ca\u00b5\u00c0\u00fd? -message.copy.template.confirm=\u00ca\u00c7\u00b7\u00f1\u00c8\u00b7\u00ca\u00b5\u00d2\u00aa\u00b8\u00b4\u00d6\u00c6\u00c4\u00a3\u00b0\u00e5? -message.template.copying=\u00d5\u00fd\u00d4\u00da\u00b8\u00b4\u00d6\u00c6\u00c4\u00a3\u00b0\u00e5\u00a1\u00a3 -message.XSTools61plus.update.failed=Failed to update Original XS Version is 6.1\+ field. Error\: -message.gslb.delete.confirm=\u00c7\u00eb\u00c8\u00b7\u00c8\u00cf\u00c4\u00fa\u00c8\u00b7\u00ca\u00b5\u00d2\u00aa\u00c9\u00be\u00b3\u00fd\u00b4\u00cb GSLB -message.portable.ip.delete.confirm=\u00c7\u00eb\u00c8\u00b7\u00c8\u00cf\u00c4\u00fa\u00c8\u00b7\u00ca\u00b5\u00d2\u00aa\u00c9\u00be\u00b3\u00fd\u00bf\u00c9\u00d2\u00c6\u00d6\u00b2 IP \u00b7\u00b6\u00ce\u00a7 -message.gslb.lb.remove.confirm=\u00c7\u00eb\u00c8\u00b7\u00c8\u00cf\u00c4\u00fa\u00c8\u00b7\u00ca\u00b5\u00d2\u00aa\u00b4\u00d3 GSLB \u00d6\u00d0\u00c9\u00be\u00b3\u00fd\u00b8\u00ba\u00d4\u00d8\u00c6\u00bd\u00ba\u00e2 -message.admin.guide.read=\u00b6\u00d4\u00d3\u00da\u00bb\u00f9\u00d3\u00da VMware \u00b5\u00c4 VM\u00a3\u00ac\u00c7\u00eb\u00cf\u00c8\u00d4\u00c4\u00b6\u00c1\u00b9\u00dc\u00c0\u00ed\u00d6\u00b8\u00c4\u00cf\u00d6\u00d0\u00b5\u00c4\u00b6\u00af\u00cc\u00ac\u00c0\u00a9\u00d5\u00b9\u00b2\u00bf\u00b7\u00d6\u00a3\u00ac\u00c8\u00bb\u00ba\u00f3\u00d4\u00d9\u00bd\u00f8\u00d0\u00d0\u00c0\u00a9\u00d5\u00b9\u00a1\u00a3\u00ca\u00c7\u00b7\u00f1\u00d2\u00aa\u00bc\u00cc\u00d0\u00f8?\, -message.tier.required=\u00a1\u00b0\u00b2\u00e3\u00a1\u00b1\u00ce\u00aa\u00b1\u00d8\u00cc\u00ee\u00cf\u00ee -message.remove.ldap=\u00ca\u00c7\u00b7\u00f1\u00c8\u00b7\u00ca\u00b5\u00d2\u00aa\u00c9\u00be\u00b3\u00fd LDAP \u00c5\u00e4\u00d6\u00c3? -message.action.downloading.template=\u00d5\u00fd\u00d4\u00da\u00cf\u00c2\u00d4\u00d8\u00c4\u00a3\u00b0\u00e5\u00a1\u00a3 -message.configure.ldap=\u00c7\u00eb\u00c8\u00b7\u00c8\u00cf\u00c4\u00fa\u00c8\u00b7\u00ca\u00b5\u00d2\u00aa\u00c5\u00e4\u00d6\u00c3 LDAP\u00a1\u00a3 -message.confirm.delete.ciscovnmc.resource=\u00c7\u00eb\u00c8\u00b7\u00c8\u00cf\u00c4\u00fa\u00c8\u00b7\u00ca\u00b5\u00d2\u00aa\u00c9\u00be\u00b3\u00fd Cisco VNMC \u00d7\u00ca\u00d4\u00b4 -message.confirm.add.vnmc.provider=\u00c7\u00eb\u00c8\u00b7\u00c8\u00cf\u00c4\u00fa\u00c8\u00b7\u00ca\u00b5\u00d2\u00aa\u00cc\u00ed\u00bc\u00d3 VNMC \u00cc\u00e1\u00b9\u00a9\u00b3\u00cc\u00d0\u00f2\u00a1\u00a3 -message.confirm.enable.vnmc.provider=\u00c7\u00eb\u00c8\u00b7\u00c8\u00cf\u00c4\u00fa\u00c8\u00b7\u00ca\u00b5\u00d2\u00aa\u00c6\u00f4\u00d3\u00c3 VNMC \u00cc\u00e1\u00b9\u00a9\u00b3\u00cc\u00d0\u00f2\u00a1\u00a3 -message.confirm.disable.vnmc.provider=\u00c7\u00eb\u00c8\u00b7\u00c8\u00cf\u00c4\u00fa\u00c8\u00b7\u00ca\u00b5\u00d2\u00aa\u00bd\u00fb\u00d3\u00c3 VNMC \u00cc\u00e1\u00b9\u00a9\u00b3\u00cc\u00d0\u00f2\u00a1\u00a3 -message.vnmc.available.list=\u00cc\u00e1\u00b9\u00a9\u00b3\u00cc\u00d0\u00f2\u00c1\u00d0\u00b1\u00ed\u00d6\u00d0\u00ce\u00b4\u00cc\u00e1\u00b9\u00a9 VNMC\u00a1\u00a3 -message.vnmc.not.available.list=\u00cc\u00e1\u00b9\u00a9\u00b3\u00cc\u00d0\u00f2\u00c1\u00d0\u00b1\u00ed\u00d6\u00d0\u00ce\u00b4\u00cc\u00e1\u00b9\u00a9 VNMC\u00a1\u00a3 -message.confirm.release.dedicate.vlan.range=\u00c7\u00eb\u00c8\u00b7\u00c8\u00cf\u00c4\u00fa\u00c8\u00b7\u00ca\u00b5\u00d2\u00aa\u00ca\u00cd\u00b7\u00c5\u00d7\u00a8\u00d3\u00c3 VLAN \u00b7\u00b6\u00ce\u00a7 -message.confirm.start.lb.vm=\u00c7\u00eb\u00c8\u00b7\u00c8\u00cf\u00c4\u00fa\u00c8\u00b7\u00ca\u00b5\u00d2\u00aa\u00c6\u00f4\u00b6\u00af LB VM -message.confirm.stop.lb.vm=\u00c7\u00eb\u00c8\u00b7\u00c8\u00cf\u00c4\u00fa\u00c8\u00b7\u00ca\u00b5\u00d2\u00aa\u00cd\u00a3\u00d6\u00b9 LB VM -message.confirm.remove.vmware.datacenter=\u00c7\u00eb\u00c8\u00b7\u00c8\u00cf\u00c4\u00fa\u00c8\u00b7\u00ca\u00b5\u00d2\u00aa\u00c9\u00be\u00b3\u00fd VMware \u00ca\u00fd\u00be\u00dd\u00d6\u00d0\u00d0\u00c4 -message.confirm.dedicate.zone=\u00ca\u00c7\u00b7\u00f1\u00d2\u00aa\u00bd\u00ab\u00b4\u00cb\u00d7\u00ca\u00d4\u00b4\u00d3\u00f2\u00d7\u00a8\u00d3\u00c3\u00d3\u00da\u00d3\u00f2/\u00d5\u00ca\u00bb\u00a7? -message.confirm.release.dedicated.zone=\u00ca\u00c7\u00b7\u00f1\u00d2\u00aa\u00ca\u00cd\u00b7\u00c5\u00b4\u00cb\u00d7\u00a8\u00d3\u00c3\u00d7\u00ca\u00d4\u00b4\u00d3\u00f2? -message.dedicated.zone.released=\u00d2\u00d1\u00ca\u00cd\u00b7\u00c5\u00d7\u00a8\u00d3\u00c3\u00d7\u00ca\u00d4\u00b4\u00d3\u00f2 -message.read.admin.guide.scaling.up=\u00bf\u00aa\u00ca\u00bc\u00c0\u00a9\u00d5\u00b9\u00d6\u00ae\u00c7\u00b0\u00a3\u00ac\u00c7\u00eb\u00d4\u00c4\u00b6\u00c1\u00b9\u00dc\u00c0\u00ed\u00d6\u00b8\u00c4\u00cf\u00d6\u00d0\u00b5\u00c4\u00b6\u00af\u00cc\u00ac\u00c0\u00a9\u00d5\u00b9\u00b2\u00bf\u00b7\u00d6\u00a1\u00a3 -message.confirm.scale.up.system.vm=\u00ca\u00c7\u00b7\u00f1\u00c8\u00b7\u00ca\u00b5\u00d2\u00aa\u00c0\u00a9\u00d5\u00b9\u00cf\u00b5\u00cd\u00b3 VM? -message.confirm.upgrade.router.newer.template=\u00c7\u00eb\u00c8\u00b7\u00c8\u00cf\u00c4\u00fa\u00c8\u00b7\u00ca\u00b5\u00d2\u00aa\u00c9\u00fd\u00bc\u00b6\u00c2\u00b7\u00d3\u00c9\u00c6\u00f7\u00d2\u00d4\u00ca\u00b9\u00d3\u00c3\u00b8\u00fc\u00d0\u00c2\u00b5\u00c4\u00c4\u00a3\u00b0\u00e5 -message.confirm.scale.up.router.vm=\u00ca\u00c7\u00b7\u00f1\u00c8\u00b7\u00ca\u00b5\u00d2\u00aa\u00c0\u00a9\u00d5\u00b9\u00c2\u00b7\u00d3\u00c9\u00c6\u00f7 VM? -message.confirm.upgrade.routers.newtemplate=\u00c7\u00eb\u00c8\u00b7\u00c8\u00cf\u00c4\u00fa\u00c8\u00b7\u00ca\u00b5\u00d2\u00aa\u00c9\u00fd\u00bc\u00b6\u00b4\u00cb\u00d7\u00ca\u00d4\u00b4\u00d3\u00f2\u00d6\u00d0\u00b5\u00c4\u00cb\u00f9\u00d3\u00d0\u00c2\u00b7\u00d3\u00c9\u00c6\u00f7\u00d2\u00d4\u00ca\u00b9\u00d3\u00c3\u00b8\u00fc\u00d0\u00c2\u00b5\u00c4\u00c4\u00a3\u00b0\u00e5 -message.confirm.upgrade.routers.pod.newtemplate=\u00c7\u00eb\u00c8\u00b7\u00c8\u00cf\u00c4\u00fa\u00c8\u00b7\u00ca\u00b5\u00d2\u00aa\u00c9\u00fd\u00bc\u00b6\u00b4\u00cb\u00cc\u00e1\u00b9\u00a9\u00b5\u00e3\u00d6\u00d0\u00b5\u00c4\u00cb\u00f9\u00d3\u00d0\u00c2\u00b7\u00d3\u00c9\u00c6\u00f7\u00d2\u00d4\u00ca\u00b9\u00d3\u00c3\u00b8\u00fc\u00d0\u00c2\u00b5\u00c4\u00c4\u00a3\u00b0\u00e5 -message.confirm.upgrade.routers.cluster.newtemplate=\u00c7\u00eb\u00c8\u00b7\u00c8\u00cf\u00c4\u00fa\u00c8\u00b7\u00ca\u00b5\u00d2\u00aa\u00c9\u00fd\u00bc\u00b6\u00b4\u00cb\u00c8\u00ba\u00bc\u00af\u00d6\u00d0\u00b5\u00c4\u00cb\u00f9\u00d3\u00d0\u00c2\u00b7\u00d3\u00c9\u00c6\u00f7\u00d2\u00d4\u00ca\u00b9\u00d3\u00c3\u00b8\u00fc\u00d0\u00c2\u00b5\u00c4\u00c4\u00a3\u00b0\u00e5 -message.confirm.upgrade.routers.account.newtemplate=\u00c7\u00eb\u00c8\u00b7\u00c8\u00cf\u00c4\u00fa\u00c8\u00b7\u00ca\u00b5\u00d2\u00aa\u00c9\u00fd\u00bc\u00b6\u00b4\u00cb\u00d5\u00ca\u00bb\u00a7\u00d6\u00d0\u00b5\u00c4\u00cb\u00f9\u00d3\u00d0\u00c2\u00b7\u00d3\u00c9\u00c6\u00f7\u00d2\u00d4\u00ca\u00b9\u00d3\u00c3\u00b8\u00fc\u00d0\u00c2\u00b5\u00c4\u00c4\u00a3\u00b0\u00e5 -message.confirm.dedicate.pod.domain.account=\u00ca\u00c7\u00b7\u00f1\u00c8\u00b7\u00ca\u00b5\u00d2\u00aa\u00bd\u00ab\u00b4\u00cb\u00cc\u00e1\u00b9\u00a9\u00b5\u00e3\u00d7\u00a8\u00d3\u00c3\u00d3\u00da\u00d3\u00f2/\u00d5\u00ca\u00bb\u00a7? -message.confirm.release.dedicated.pod=\u00ca\u00c7\u00b7\u00f1\u00d2\u00aa\u00ca\u00cd\u00b7\u00c5\u00b4\u00cb\u00d7\u00a8\u00d3\u00c3\u00cc\u00e1\u00b9\u00a9\u00b5\u00e3? -message.pod.dedication.released=\u00d2\u00d1\u00ca\u00cd\u00b7\u00c5\u00d7\u00a8\u00d3\u00c3\u00cc\u00e1\u00b9\u00a9\u00b5\u00e3 -message.confirm.dedicate.cluster.domain.account=\u00ca\u00c7\u00b7\u00f1\u00c8\u00b7\u00ca\u00b5\u00d2\u00aa\u00bd\u00ab\u00b4\u00cb\u00c8\u00ba\u00bc\u00af\u00d7\u00a8\u00d3\u00c3\u00d3\u00da\u00d3\u00f2/\u00d5\u00ca\u00bb\u00a7? -message.cluster.dedicated=\u00c8\u00ba\u00bc\u00af\u00d2\u00d1\u00d7\u00a8\u00d3\u00c3 -message.confirm.release.dedicated.cluster=\u00ca\u00c7\u00b7\u00f1\u00d2\u00aa\u00ca\u00cd\u00b7\u00c5\u00b4\u00cb\u00d7\u00a8\u00d3\u00c3\u00c8\u00ba\u00bc\u00af? -message.cluster.dedication.released=\u00d2\u00d1\u00ca\u00cd\u00b7\u00c5\u00d7\u00a8\u00d3\u00c3\u00c8\u00ba\u00bc\u00af -message.confirm.dedicate.host.domain.account=\u00ca\u00c7\u00b7\u00f1\u00c8\u00b7\u00ca\u00b5\u00d2\u00aa\u00bd\u00ab\u00b4\u00cb\u00d6\u00f7\u00bb\u00fa\u00d7\u00a8\u00d3\u00c3\u00d3\u00da\u00d3\u00f2/\u00d5\u00ca\u00bb\u00a7? -message.host.dedicated=\u00d6\u00f7\u00bb\u00fa\u00d2\u00d1\u00d7\u00a8\u00d3\u00c3 -message.confirm.release.dedicated.host=\u00ca\u00c7\u00b7\u00f1\u00d2\u00aa\u00ca\u00cd\u00b7\u00c5\u00b4\u00cb\u00d7\u00a8\u00d3\u00c3\u00d6\u00f7\u00bb\u00fa? -message.host.dedication.released=\u00d2\u00d1\u00ca\u00cd\u00b7\u00c5\u00d7\u00a8\u00d3\u00c3\u00d6\u00f7\u00bb\u00fa -message.confirm.delete.ucs.manager=\u00c7\u00eb\u00c8\u00b7\u00c8\u00cf\u00c4\u00fa\u00c8\u00b7\u00ca\u00b5\u00d2\u00aa\u00c9\u00be\u00b3\u00fd UCS Manager -message.confirm.refresh.blades=\u00c7\u00eb\u00c8\u00b7\u00c8\u00cf\u00c4\u00fa\u00c8\u00b7\u00ca\u00b5\u00d2\u00aa\u00cb\u00a2\u00d0\u00c2\u00b5\u00b6\u00c6\u00ac\u00ca\u00bd\u00b7\u00fe\u00ce\u00f1\u00c6\u00f7\u00a1\u00a3 -message.confirm.delete.secondary.staging.store=\u00c7\u00eb\u00c8\u00b7\u00c8\u00cf\u00c4\u00fa\u00c8\u00b7\u00ca\u00b5\u00d2\u00aa\u00c9\u00be\u00b3\u00fd\u00b6\u00fe\u00bc\u00b6\u00d4\u00dd\u00b4\u00e6\u00b4\u00e6\u00b4\u00a2\u00a1\u00a3 -message.select.tier=\u00c7\u00eb\u00d1\u00a1\u00d4\u00f1\u00d2\u00bb\u00b8\u00f6\u00b2\u00e3 -message.disallowed.characters=\u00bd\u00fb\u00d3\u00c3\u00d7\u00d6\u00b7\u00fb: \<\,\> -message.waiting.for.builtin.templates.to.load=\u00d5\u00fd\u00d4\u00da\u00b5\u00c8\u00b4\u00fd\u00bc\u00d3\u00d4\u00d8\u00c4\u00da\u00d6\u00c3\u00c4\u00a3\u00b0\u00e5... -message.systems.vms.ready=\u00cf\u00b5\u00cd\u00b3 VM \u00d2\u00d1\u00be\u00cd\u00d0\u00f7\u00a1\u00a3 -message.your.cloudstack.is.ready=\u00c4\u00fa\u00b5\u00c4 CloudStack \u00d2\u00d1\u00be\u00cd\u00d0\u00f7\! -message.specifiy.tag.key.value=\u00c7\u00eb\u00d6\u00b8\u00b6\u00a8\u00b1\u00ea\u00bc\u00c7\u00c3\u00dc\u00d4\u00bf\u00ba\u00cd\u00d6\u00b5 -message.enter.seperated.list.multiple.cidrs=\u00c8\u00e7\u00b9\u00fb\u00b4\u00e6\u00d4\u00da\u00b6\u00e0\u00b8\u00f6 CIDR\u00a3\u00ac\u00c7\u00eb\u00ca\u00e4\u00c8\u00eb\u00d3\u00c3\u00b6\u00ba\u00ba\u00c5\u00b7\u00d6\u00b8\u00f4\u00b5\u00c4 CIDR \u00c1\u00d0\u00b1\u00ed -message.disabling.network.offering=\u00d5\u00fd\u00d4\u00da\u00bd\u00fb\u00d3\u00c3\u00cd\u00f8\u00c2\u00e7\u00b7\u00bd\u00b0\u00b8 -message.confirm.enable.network.offering=\u00ca\u00c7\u00b7\u00f1\u00c8\u00b7\u00ca\u00b5\u00d2\u00aa\u00c6\u00f4\u00d3\u00c3\u00b4\u00cb\u00cd\u00f8\u00c2\u00e7\u00b7\u00bd\u00b0\u00b8? -message.enabling.network.offering=\u00d5\u00fd\u00d4\u00da\u00c6\u00f4\u00d3\u00c3\u00cd\u00f8\u00c2\u00e7\u00b7\u00bd\u00b0\u00b8 -message.confirm.remove.network.offering=\u00ca\u00c7\u00b7\u00f1\u00c8\u00b7\u00ca\u00b5\u00d2\u00aa\u00c9\u00be\u00b3\u00fd\u00b4\u00cb\u00cd\u00f8\u00c2\u00e7\u00b7\u00bd\u00b0\u00b8? -message.confirm.disable.network.offering=\u00ca\u00c7\u00b7\u00f1\u00c8\u00b7\u00ca\u00b5\u00d2\u00aa\u00bd\u00fb\u00d3\u00c3\u00b4\u00cb\u00cd\u00f8\u00c2\u00e7\u00b7\u00bd\u00b0\u00b8? -message.disabling.vpc.offering=\u00d5\u00fd\u00d4\u00da\u00bd\u00fb\u00d3\u00c3 VPC \u00b7\u00bd\u00b0\u00b8 -message.confirm.enable.vpc.offering=\u00ca\u00c7\u00b7\u00f1\u00c8\u00b7\u00ca\u00b5\u00d2\u00aa\u00c6\u00f4\u00d3\u00c3\u00b4\u00cb VPC \u00b7\u00bd\u00b0\u00b8? -message.enabling.vpc.offering=\u00d5\u00fd\u00d4\u00da\u00c6\u00f4\u00d3\u00c3 VPC \u00b7\u00bd\u00b0\u00b8 -message.confirm.remove.vpc.offering=\u00ca\u00c7\u00b7\u00f1\u00c8\u00b7\u00ca\u00b5\u00d2\u00aa\u00c9\u00be\u00b3\u00fd\u00b4\u00cb VPC \u00b7\u00bd\u00b0\u00b8? -message.confirm.disable.vpc.offering=\u00ca\u00c7\u00b7\u00f1\u00c8\u00b7\u00ca\u00b5\u00d2\u00aa\u00bd\u00fb\u00d3\u00c3\u00b4\u00cb VPC \u00b7\u00bd\u00b0\u00b8? -mode=\u00c4\u00a3\u00ca\u00bd -network.rate=\u00cd\u00f8\u00c2\u00e7\u00cb\u00d9\u00c2\u00ca -notification.reboot.instance=\u00d6\u00d8\u00d0\u00c2\u00c6\u00f4\u00b6\u00af\u00ca\u00b5\u00c0\u00fd -notification.start.instance=\u00c6\u00f4\u00b6\u00af\u00ca\u00b5\u00c0\u00fd -notification.stop.instance=\u00cd\u00a3\u00d6\u00b9\u00ca\u00b5\u00c0\u00fd -side.by.side=\u00b2\u00a2\u00d0\u00d0 -state.Accepted=\u00d2\u00d1\u00bd\u00d3\u00ca\u00dc -state.Active=\u00bb\u00ee\u00b6\u00af -state.Allocated=\u00d2\u00d1\u00b7\u00d6\u00c5\u00e4 -state.Allocating=\u00d5\u00fd\u00d4\u00da\u00b7\u00d6\u00c5\u00e4 -state.BackedUp=\u00d2\u00d1\u00b1\u00b8\u00b7\u00dd -state.BackingUp=\u00d5\u00fd\u00d4\u00da\u00b1\u00b8\u00b7\u00dd -state.Completed=\u00d2\u00d1\u00cd\u00ea\u00b3\u00c9 -state.Creating=\u00d5\u00fd\u00d4\u00da\u00b4\u00b4\u00bd\u00a8 -state.Declined=\u00d2\u00d1\u00be\u00dc\u00be\u00f8 -state.Destroyed=\u00d2\u00d1\u00cf\u00fa\u00bb\u00d9 -state.Disabled=\u00d2\u00d1\u00bd\u00fb\u00d3\u00c3 -state.Enabled=\u00d2\u00d1\u00c6\u00f4\u00d3\u00c3 -state.enabled=\u00d2\u00d1\u00c6\u00f4\u00d3\u00c3 -state.Error=\u00b4\u00ed\u00ce\u00f3 -state.Expunging=\u00d5\u00fd\u00d4\u00da\u00c9\u00be\u00b3\u00fd -state.Migrating=\u00d5\u00fd\u00d4\u00da\u00c7\u00a8\u00d2\u00c6 -state.Pending=\u00b4\u00fd\u00b6\u00a8 -state.Ready=\u00d2\u00d1\u00be\u00cd\u00d0\u00f7 -state.ready=\u00d2\u00d1\u00be\u00cd\u00d0\u00f7 -state.Running=\u00d5\u00fd\u00d4\u00da\u00d4\u00cb\u00d0\u00d0 -state.Starting=\u00d5\u00fd\u00d4\u00da\u00c6\u00f4\u00b6\u00af -state.Stopped=\u00d2\u00d1\u00cd\u00a3\u00d6\u00b9 -state.Stopping=\u00d5\u00fd\u00d4\u00da\u00cd\u00a3\u00d6\u00b9 -state.Suspended=\u00d2\u00d1\u00d4\u00dd\u00cd\u00a3 -ui.listView.filters.all=\u00c8\u00ab\u00b2\u00bf -ui.listView.filters.mine=\u00b1\u00be\u00d3\u00c3\u00bb\u00a7 +message.step.4.continue=\u8bf7\u81f3\u5c11\u9009\u62e9\u4e00\u4e2a\u7f51\u7edc\u4ee5\u7ee7\u7eed +message.step.4.desc=\u8bf7\u9009\u62e9\u865a\u62df\u5b9e\u4f8b\u8981\u8fde\u63a5\u5230\u7684\u4e3b\u7f51\u7edc\u3002 +message.storage.traffic=CloudStack \u5185\u90e8\u8d44\u6e90(\u5305\u62ec\u4e0e\u7ba1\u7406\u670d\u52a1\u5668\u901a\u4fe1\u7684\u4efb\u4f55\u7ec4\u4ef6\uff0c\u4f8b\u5982\u4e3b\u673a\u548c CloudStack \u7cfb\u7edf VM)\u4e4b\u95f4\u7684\u6d41\u91cf\u3002\u8bf7\u5728\u6b64\u5904\u914d\u7f6e\u5b58\u50a8\u6d41\u91cf\u3002 +message.suspend.project=\u662f\u5426\u786e\u5b9e\u8981\u6682\u505c\u6b64\u9879\u76ee? +message.template.desc=\u64cd\u4f5c\u7cfb\u7edf\u6620\u50cf\uff0c\u53ef\u7528\u4e8e\u542f\u52a8 VM +message.tooltip.dns.1=\u4f9b\u8d44\u6e90\u57df\u4e2d\u7684 VM \u4f7f\u7528\u7684 DNS \u670d\u52a1\u5668\u540d\u79f0\u3002\u8d44\u6e90\u57df\u7684\u516c\u7528 IP \u5730\u5740\u5fc5\u987b\u8def\u7531\u5230\u6b64\u670d\u52a1\u5668\u3002 +message.tooltip.dns.2=\u4f9b\u8d44\u6e90\u57df\u4e2d\u7684 VM \u4f7f\u7528\u7684\u4e8c\u7ea7 DNS \u670d\u52a1\u5668\u540d\u79f0\u3002\u8d44\u6e90\u57df\u7684\u516c\u7528 IP \u5730\u5740\u5fc5\u987b\u8def\u7531\u5230\u6b64\u670d\u52a1\u5668\u3002 +message.tooltip.internal.dns.1=\u4f9b\u8d44\u6e90\u57df\u4e2d\u7684 CloudStack \u5185\u90e8\u7cfb\u7edf VM \u4f7f\u7528\u7684 DNS \u670d\u52a1\u5668\u540d\u79f0\u3002\u63d0\u4f9b\u70b9\u7684\u4e13\u7528 IP \u5730\u5740\u5fc5\u987b\u8def\u7531\u5230\u6b64\u670d\u52a1\u5668\u3002 +message.tooltip.internal.dns.2=\u4f9b\u8d44\u6e90\u57df\u4e2d\u7684 CloudStack \u5185\u90e8\u7cfb\u7edf VM \u4f7f\u7528\u7684 DNS \u670d\u52a1\u5668\u540d\u79f0\u3002\u63d0\u4f9b\u70b9\u7684\u4e13\u7528 IP \u5730\u5740\u5fc5\u987b\u8def\u7531\u5230\u6b64\u670d\u52a1\u5668\u3002 +message.tooltip.network.domain=DNS \u540e\u7f00\uff0c\u5c06\u4e3a\u7531\u6765\u5bbe VM \u8bbf\u95ee\u7684\u7f51\u7edc\u521b\u5efa\u4e00\u4e2a\u81ea\u5b9a\u4e49\u57df\u540d\u3002 +message.tooltip.pod.name=\u6b64\u63d0\u4f9b\u70b9\u7684\u540d\u79f0\u3002 +message.tooltip.reserved.system.gateway=\u63d0\u4f9b\u70b9\u4e2d\u7684\u4e3b\u673a\u7f51\u5173\u3002 +message.tooltip.reserved.system.netmask=\u7528\u4e8e\u5b9a\u4e49\u63d0\u4f9b\u70b9\u5b50\u7f51\u7684\u7f51\u7edc\u524d\u7f00\u3002\u8bf7\u4f7f\u7528 CIDR \u7b26\u53f7\u3002 +message.tooltip.zone.name=\u8d44\u6e90\u57df\u540d\u79f0\u3002 +message.update.os.preference=\u8bf7\u4e3a\u6b64\u4e3b\u673a\u9009\u62e9\u4e00\u4e2a\u64cd\u4f5c\u7cfb\u7edf\u9996\u9009\u9879\u3002\u9996\u5148\u5c06\u5177\u6709\u76f8\u4f3c\u9996\u9009\u9879\u7684\u6240\u6709\u865a\u62df\u5b9e\u4f8b\u5206\u914d\u81f3\u6b64\u4e3b\u673a\uff0c\u7136\u540e\u518d\u9009\u62e9\u5176\u4ed6\u5b9e\u4f8b\u3002 +message.update.resource.count=\u8bf7\u786e\u8ba4\u60a8\u786e\u5b9e\u8981\u66f4\u65b0\u6b64\u5e10\u6237\u7684\u8d44\u6e90\u6570\u3002 +message.update.ssl=\u8bf7\u63d0\u4ea4\u4e00\u4e2a X.509 \u517c\u5bb9\u7684\u65b0 SSL \u8bc1\u4e66\uff0c\u4ee5\u4fbf\u5c06\u5176\u66f4\u65b0\u5230\u6bcf\u4e2a\u63a7\u5236\u53f0\u4ee3\u7406\u548c\u4e8c\u7ea7\u5b58\u50a8\u865a\u62df\u5b9e\u4f8b\: +message.validate.instance.name=\u5b9e\u4f8b\u540d\u79f0\u4e0d\u5f97\u8d85\u8fc7 63 \u4e2a\u5b57\u7b26\u3002\u4ec5\u5141\u8bb8\u4f7f\u7528 ASCII \u5b57\u6bcd a - z \u6216 A - Z\u3001\u6570\u5b57 0 - 9 \u4ee5\u53ca\u8fde\u5b57\u7b26\u3002\u5b9e\u4f8b\u540d\u79f0\u5fc5\u987b\u4ee5\u5b57\u6bcd\u5f00\u5934\u5e76\u4ee5\u5b57\u6bcd\u6216\u6570\u5b57\u7ed3\u675f\u3002 +message.virtual.network.desc=\u60a8\u7684\u5e10\u6237\u7684\u4e13\u7528\u865a\u62df\u7f51\u7edc\u3002\u5e7f\u64ad\u57df\u5305\u542b\u5728 VLAN \u4e2d\uff0c\u5e76\u4e14\u6240\u6709\u516c\u7528\u7f51\u7edc\u8bbf\u95ee\u90fd\u7531\u865a\u62df\u8def\u7531\u5668\u8def\u7531\u51fa\u53bb\u3002 +message.vm.create.template.confirm=\u521b\u5efa\u6a21\u677f\u5c06\u81ea\u52a8\u91cd\u65b0\u542f\u52a8 VM\u3002 +message.vm.review.launch=\u8bf7\u5148\u6838\u5bf9\u4ee5\u4e0b\u4fe1\u606f\uff0c\u786e\u8ba4\u60a8\u7684\u865a\u62df\u5b9e\u4f8b\u6b63\u786e\u65e0\u8bef\uff0c\u7136\u540e\u518d\u542f\u52a8\u3002 +message.volume.create.template.confirm=\u8bf7\u786e\u8ba4\u60a8\u786e\u5b9e\u8981\u4e3a\u6b64\u78c1\u76d8\u5377\u521b\u5efa\u4e00\u4e2a\u6a21\u677f\u3002\u521b\u5efa\u6a21\u677f\u53ef\u80fd\u9700\u8981\u51e0\u5206\u949f\u5230\u66f4\u957f\u7684\u65f6\u95f4\uff0c\u5177\u4f53\u53d6\u51b3\u4e8e\u5377\u7684\u5927\u5c0f\u3002 +message.you.must.have.at.least.one.physical.network=\u60a8\u5fc5\u987b\u81f3\u5c11\u62e5\u6709\u4e00\u4e2a\u7269\u7406\u7f51\u7edc +message.zone.creation.complete.would.you.like.to.enable.this.zone=\u5df2\u5b8c\u6210\u521b\u5efa\u8d44\u6e90\u57df\u3002\u662f\u5426\u8981\u542f\u7528\u6b64\u8d44\u6e90\u57df? +message.Zone.creation.complete=\u5df2\u5b8c\u6210\u521b\u5efa\u8d44\u6e90\u57df +message.zone.no.network.selection=\u6240\u9009\u8d44\u6e90\u57df\u65e0\u4efb\u4f55\u7f51\u7edc\u9009\u9879\u3002 +message.zone.step.1.desc=\u8bf7\u4e3a\u60a8\u7684\u8d44\u6e90\u57df\u9009\u62e9\u4e00\u79cd\u7f51\u7edc\u6a21\u5f0f\u3002 +message.zone.step.2.desc=\u8bf7\u8f93\u5165\u4ee5\u4e0b\u4fe1\u606f\u4ee5\u6dfb\u52a0\u4e00\u4e2a\u65b0\u8d44\u6e90\u57df +message.zone.step.3.desc=\u8bf7\u8f93\u5165\u4ee5\u4e0b\u4fe1\u606f\u4ee5\u6dfb\u52a0\u4e00\u4e2a\u65b0\u63d0\u4f9b\u70b9 +message.zoneWizard.enable.local.storage=\u8b66\u544a\: \u5982\u679c\u4e3a\u6b64\u8d44\u6e90\u57df\u542f\u7528\u4e86\u672c\u5730\u5b58\u50a8\uff0c\u5219\u5fc5\u987b\u6267\u884c\u4ee5\u4e0b\u64cd\u4f5c\uff0c\u5177\u4f53\u53d6\u51b3\u4e8e\u60a8\u5e0c\u671b\u542f\u52a8\u7cfb\u7edf VM \u7684\u4f4d\u7f6e\:

1. \u5982\u679c\u9700\u8981\u5728\u5171\u4eab\u4e3b\u5b58\u50a8\u4e2d\u542f\u52a8\u7cfb\u7edf VM\uff0c\u5219\u5fc5\u987b\u5728\u5b8c\u6210\u521b\u5efa\u540e\u5c06\u5171\u4eab\u4e3b\u5b58\u50a8\u6dfb\u52a0\u5230\u6b64\u8d44\u6e90\u57df\u3002

2. \u5982\u679c\u9700\u8981\u5728\u672c\u5730\u4e3b\u5b58\u50a8\u4e2d\u542f\u52a8\u7cfb\u7edf VM\uff0c\u5219\u5fc5\u987b\u5728\u542f\u7528\u6b64\u8d44\u6e90\u57df\u4e4b\u524d\u5c06 system.vm.use.local.storage \u8bbe\u7f6e\u4e3a true\u3002


\u662f\u5426\u8981\u7ee7\u7eed? +message.validate.fieldrequired=\u6b64\u5b57\u6bb5\u4e3a\u5fc5\u586b\u5b57\u6bb5\u3002 +message.validate.fixfield=\u8bf7\u4fee\u590d\u6b64\u5b57\u6bb5\u3002 +message.validate.email.address=\u8bf7\u8f93\u5165\u4e00\u4e2a\u6709\u6548\u7684\u7535\u5b50\u90ae\u4ef6\u5730\u5740\u3002 +message.validate.URL=\u8bf7\u8f93\u5165\u6709\u6548\u7684 URL\u3002 +message.validate.date=\u8bf7\u8f93\u5165\u6709\u6548\u7684\u65e5\u671f\u3002 +message.validate.date.ISO=\u8bf7\u8f93\u5165\u6709\u6548\u7684\u65e5\u671f(ISO)\u3002 +message.validate.number=\u8bf7\u8f93\u5165\u4e00\u4e2a\u6709\u6548\u6570\u5b57\u3002 +message.validate.digits=\u8bf7\u4ec5\u8f93\u5165\u6570\u5b57\u3002 +message.validate.creditcard=\u8bf7\u8f93\u5165\u4e00\u4e2a\u6709\u6548\u7684\u4fe1\u7528\u5361\u5361\u53f7\u3002 +message.validate.equalto=\u8bf7\u91cd\u65b0\u8f93\u5165\u76f8\u540c\u7684\u503c\u3002 +message.validate.accept=\u8bf7\u8f93\u5165\u4e00\u4e2a\u5e26\u6709\u6709\u6548\u6269\u5c55\u540d\u7684\u503c\u3002 +message.validate.maxlength=\u8bf7\u6700\u591a\u8f93\u5165 {0} \u4e2a\u5b57\u7b26\u3002 +message.validate.minlength=\u8bf7\u81f3\u5c11\u8f93\u5165 {0} \u4e2a\u5b57\u7b26\u3002 +message.validate.range.length=\u8bf7\u8f93\u5165\u4e00\u4e2a\u957f\u5ea6\u4ecb\u4e8e {0} \u5230 {1} \u4e4b\u95f4\u7684\u503c\u3002 +message.validate.range=\u8bf7\u8f93\u5165\u4e00\u4e2a\u4ecb\u4e8e {0} \u5230 {1} \u4e4b\u95f4\u7684\u503c\u3002 +message.validate.max=\u8bf7\u8f93\u5165\u4e00\u4e2a\u5c0f\u4e8e\u6216\u7b49\u4e8e {0} \u7684\u503c\u3002 +messgae.validate.min=\u8bf7\u8f93\u5165\u4e00\u4e2a\u5927\u4e8e\u6216\u7b49\u4e8e {0} \u7684\u503c\u3002 +message.creating.systemVM=\u6b63\u5728\u521b\u5efa\u7cfb\u7edf VM (\u6b64\u64cd\u4f5c\u53ef\u80fd\u9700\u8981\u4e00\u4e9b\u65f6\u95f4) +message.enabling.zone.dots=\u6b63\u5728\u542f\u7528\u8d44\u6e90\u57df... +message.restoreVM=\u662f\u5426\u8981\u8fd8\u539f\u6b64 VM? +message.no.host.available=\u6ca1\u6709\u53ef\u7528\u4e8e\u8fc1\u79fb\u7684\u4e3b\u673a +message.network.addVM.desc=\u8bf7\u6307\u5b9a\u8981\u5c06\u6b64 VM \u6dfb\u52a0\u5230\u7684\u7f51\u7edc\u3002\u5c06\u4e3a\u6b64\u7f51\u7edc\u6dfb\u52a0\u4e00\u4e2a\u65b0 NIC\u3002 +message.network.addVMNIC=\u8bf7\u786e\u8ba4\u60a8\u786e\u5b9e\u8981\u4e3a\u6b64\u7f51\u7edc\u6dfb\u52a0\u4e00\u4e2a\u65b0 VM NIC\u3002 +message.set.default.NIC=\u8bf7\u786e\u8ba4\u60a8\u786e\u5b9e\u8981\u5c06\u6b64 NIC \u8bbe\u7f6e\u4e3a\u6b64 VM \u7684\u9ed8\u8ba4 NIC\u3002 +message.set.default.NIC.manual=\u8bf7\u7acb\u5373\u624b\u52a8\u66f4\u65b0\u6b64 VM \u4e0a\u7684\u9ed8\u8ba4 NIC\u3002 +message.instance.scaled.up.confirm=\u662f\u5426\u786e\u5b9e\u8981\u6269\u5c55\u60a8\u7684\u5b9e\u4f8b? +message.copy.template.confirm=\u662f\u5426\u786e\u5b9e\u8981\u590d\u5236\u6a21\u677f? +message.template.copying=\u6b63\u5728\u590d\u5236\u6a21\u677f\u3002 +message.XSTools61plus.update.failed=\u65e0\u6cd5\u66f4\u65b0\u201c\u539f\u59cb XS \u7248\u672c\u4e3a 6.1\+\u201d\u5b57\u6bb5\u3002\u9519\u8bef\: +message.gslb.delete.confirm=\u8bf7\u786e\u8ba4\u60a8\u786e\u5b9e\u8981\u5220\u9664\u6b64 GSLB +message.portable.ip.delete.confirm=\u8bf7\u786e\u8ba4\u60a8\u786e\u5b9e\u8981\u5220\u9664\u53ef\u79fb\u690d IP \u8303\u56f4 +message.gslb.lb.remove.confirm=\u8bf7\u786e\u8ba4\u60a8\u786e\u5b9e\u8981\u4ece GSLB \u4e2d\u5220\u9664\u8d1f\u8f7d\u5e73\u8861 +message.admin.guide.read=\u5bf9\u4e8e\u57fa\u4e8e VMware \u7684 VM\uff0c\u8bf7\u5148\u9605\u8bfb\u7ba1\u7406\u6307\u5357\u4e2d\u7684\u52a8\u6001\u6269\u5c55\u90e8\u5206\uff0c\u7136\u540e\u518d\u8fdb\u884c\u6269\u5c55\u3002\u662f\u5426\u8981\u7ee7\u7eed?\, +message.tier.required=\u201c\u5c42\u201d\u4e3a\u5fc5\u586b\u9879 +message.remove.ldap=\u662f\u5426\u786e\u5b9e\u8981\u5220\u9664 LDAP \u914d\u7f6e? +message.action.downloading.template=\u6b63\u5728\u4e0b\u8f7d\u6a21\u677f\u3002 +message.configure.ldap=\u8bf7\u786e\u8ba4\u60a8\u786e\u5b9e\u8981\u914d\u7f6e LDAP\u3002 +message.confirm.delete.ciscovnmc.resource=\u8bf7\u786e\u8ba4\u60a8\u786e\u5b9e\u8981\u5220\u9664 Cisco VNMC \u8d44\u6e90 +message.confirm.add.vnmc.provider=\u8bf7\u786e\u8ba4\u60a8\u786e\u5b9e\u8981\u6dfb\u52a0 VNMC \u63d0\u4f9b\u7a0b\u5e8f\u3002 +message.confirm.enable.vnmc.provider=\u8bf7\u786e\u8ba4\u60a8\u786e\u5b9e\u8981\u542f\u7528 VNMC \u63d0\u4f9b\u7a0b\u5e8f\u3002 +message.confirm.disable.vnmc.provider=\u8bf7\u786e\u8ba4\u60a8\u786e\u5b9e\u8981\u7981\u7528 VNMC \u63d0\u4f9b\u7a0b\u5e8f\u3002 +message.vnmc.available.list=\u63d0\u4f9b\u7a0b\u5e8f\u5217\u8868\u4e2d\u672a\u63d0\u4f9b VNMC\u3002 +message.vnmc.not.available.list=\u63d0\u4f9b\u7a0b\u5e8f\u5217\u8868\u4e2d\u672a\u63d0\u4f9b VNMC\u3002 +message.confirm.release.dedicate.vlan.range=\u8bf7\u786e\u8ba4\u60a8\u786e\u5b9e\u8981\u91ca\u653e\u4e13\u7528 VLAN \u8303\u56f4 +message.confirm.start.lb.vm=\u8bf7\u786e\u8ba4\u60a8\u786e\u5b9e\u8981\u542f\u52a8 LB VM +message.confirm.stop.lb.vm=\u8bf7\u786e\u8ba4\u60a8\u786e\u5b9e\u8981\u505c\u6b62 LB VM +message.confirm.remove.vmware.datacenter=\u8bf7\u786e\u8ba4\u60a8\u786e\u5b9e\u8981\u5220\u9664 VMware \u6570\u636e\u4e2d\u5fc3 +message.confirm.dedicate.zone=\u662f\u5426\u8981\u5c06\u6b64\u8d44\u6e90\u57df\u4e13\u7528\u4e8e\u57df/\u5e10\u6237? +message.confirm.release.dedicated.zone=\u662f\u5426\u8981\u91ca\u653e\u6b64\u4e13\u7528\u8d44\u6e90\u57df? +message.dedicated.zone.released=\u5df2\u91ca\u653e\u4e13\u7528\u8d44\u6e90\u57df +message.read.admin.guide.scaling.up=\u5f00\u59cb\u6269\u5c55\u4e4b\u524d\uff0c\u8bf7\u9605\u8bfb\u7ba1\u7406\u6307\u5357\u4e2d\u7684\u52a8\u6001\u6269\u5c55\u90e8\u5206\u3002 +message.confirm.scale.up.system.vm=\u662f\u5426\u786e\u5b9e\u8981\u6269\u5c55\u7cfb\u7edf VM? +message.confirm.upgrade.router.newer.template=\u8bf7\u786e\u8ba4\u60a8\u786e\u5b9e\u8981\u5347\u7ea7\u8def\u7531\u5668\u4ee5\u4f7f\u7528\u66f4\u65b0\u7684\u6a21\u677f +message.confirm.scale.up.router.vm=\u662f\u5426\u786e\u5b9e\u8981\u6269\u5c55\u8def\u7531\u5668 VM? +message.confirm.upgrade.routers.newtemplate=\u8bf7\u786e\u8ba4\u60a8\u786e\u5b9e\u8981\u5347\u7ea7\u6b64\u8d44\u6e90\u57df\u4e2d\u7684\u6240\u6709\u8def\u7531\u5668\u4ee5\u4f7f\u7528\u66f4\u65b0\u7684\u6a21\u677f +message.confirm.upgrade.routers.pod.newtemplate=\u8bf7\u786e\u8ba4\u60a8\u786e\u5b9e\u8981\u5347\u7ea7\u6b64\u63d0\u4f9b\u70b9\u4e2d\u7684\u6240\u6709\u8def\u7531\u5668\u4ee5\u4f7f\u7528\u66f4\u65b0\u7684\u6a21\u677f +message.confirm.upgrade.routers.cluster.newtemplate=\u8bf7\u786e\u8ba4\u60a8\u786e\u5b9e\u8981\u5347\u7ea7\u6b64\u7fa4\u96c6\u4e2d\u7684\u6240\u6709\u8def\u7531\u5668\u4ee5\u4f7f\u7528\u66f4\u65b0\u7684\u6a21\u677f +message.confirm.upgrade.routers.account.newtemplate=\u8bf7\u786e\u8ba4\u60a8\u786e\u5b9e\u8981\u5347\u7ea7\u6b64\u5e10\u6237\u4e2d\u7684\u6240\u6709\u8def\u7531\u5668\u4ee5\u4f7f\u7528\u66f4\u65b0\u7684\u6a21\u677f +message.confirm.dedicate.pod.domain.account=\u662f\u5426\u786e\u5b9e\u8981\u5c06\u6b64\u63d0\u4f9b\u70b9\u4e13\u7528\u4e8e\u57df/\u5e10\u6237? +message.confirm.release.dedicated.pod=\u662f\u5426\u8981\u91ca\u653e\u6b64\u4e13\u7528\u63d0\u4f9b\u70b9? +message.pod.dedication.released=\u5df2\u91ca\u653e\u4e13\u7528\u63d0\u4f9b\u70b9 +message.confirm.dedicate.cluster.domain.account=\u662f\u5426\u786e\u5b9e\u8981\u5c06\u6b64\u7fa4\u96c6\u4e13\u7528\u4e8e\u57df/\u5e10\u6237? +message.cluster.dedicated=\u7fa4\u96c6\u5df2\u4e13\u7528 +message.confirm.release.dedicated.cluster=\u662f\u5426\u8981\u91ca\u653e\u6b64\u4e13\u7528\u7fa4\u96c6? +message.cluster.dedication.released=\u5df2\u91ca\u653e\u4e13\u7528\u7fa4\u96c6 +message.confirm.dedicate.host.domain.account=\u662f\u5426\u786e\u5b9e\u8981\u5c06\u6b64\u4e3b\u673a\u4e13\u7528\u4e8e\u57df/\u5e10\u6237? +message.host.dedicated=\u4e3b\u673a\u5df2\u4e13\u7528 +message.confirm.release.dedicated.host=\u662f\u5426\u8981\u91ca\u653e\u6b64\u4e13\u7528\u4e3b\u673a? +message.host.dedication.released=\u5df2\u91ca\u653e\u4e13\u7528\u4e3b\u673a +message.confirm.delete.ucs.manager=\u8bf7\u786e\u8ba4\u60a8\u786e\u5b9e\u8981\u5220\u9664 UCS Manager +message.confirm.refresh.blades=\u8bf7\u786e\u8ba4\u60a8\u786e\u5b9e\u8981\u5237\u65b0\u5200\u7247\u5f0f\u670d\u52a1\u5668\u3002 +message.confirm.delete.secondary.staging.store=\u8bf7\u786e\u8ba4\u60a8\u786e\u5b9e\u8981\u5220\u9664\u4e8c\u7ea7\u6682\u5b58\u5b58\u50a8\u3002 +message.select.tier=\u8bf7\u9009\u62e9\u4e00\u4e2a\u5c42 +message.disallowed.characters=\u7981\u7528\u5b57\u7b26: \<\,\> +message.waiting.for.builtin.templates.to.load=\u6b63\u5728\u7b49\u5f85\u52a0\u8f7d\u5185\u7f6e\u6a21\u677f... +message.systems.vms.ready=\u7cfb\u7edf VM \u5df2\u5c31\u7eea\u3002 +message.your.cloudstack.is.ready=\u60a8\u7684 CloudStack \u5df2\u5c31\u7eea\! +message.specifiy.tag.key.value=\u8bf7\u6307\u5b9a\u6807\u8bb0\u5bc6\u94a5\u548c\u503c +message.enter.seperated.list.multiple.cidrs=\u5982\u679c\u5b58\u5728\u591a\u4e2a CIDR\uff0c\u8bf7\u8f93\u5165\u7528\u9017\u53f7\u5206\u9694\u7684 CIDR \u5217\u8868 +message.disabling.network.offering=\u6b63\u5728\u7981\u7528\u7f51\u7edc\u65b9\u6848 +message.confirm.enable.network.offering=\u662f\u5426\u786e\u5b9e\u8981\u542f\u7528\u6b64\u7f51\u7edc\u65b9\u6848? +message.enabling.network.offering=\u6b63\u5728\u542f\u7528\u7f51\u7edc\u65b9\u6848 +message.confirm.remove.network.offering=\u662f\u5426\u786e\u5b9e\u8981\u5220\u9664\u6b64\u7f51\u7edc\u65b9\u6848? +message.confirm.disable.network.offering=\u662f\u5426\u786e\u5b9e\u8981\u7981\u7528\u6b64\u7f51\u7edc\u65b9\u6848? +message.disabling.vpc.offering=\u6b63\u5728\u7981\u7528 VPC \u65b9\u6848 +message.confirm.enable.vpc.offering=\u662f\u5426\u786e\u5b9e\u8981\u542f\u7528\u6b64 VPC \u65b9\u6848? +message.enabling.vpc.offering=\u6b63\u5728\u542f\u7528 VPC \u65b9\u6848 +message.confirm.remove.vpc.offering=\u662f\u5426\u786e\u5b9e\u8981\u5220\u9664\u6b64 VPC \u65b9\u6848? +message.confirm.disable.vpc.offering=\u662f\u5426\u786e\u5b9e\u8981\u7981\u7528\u6b64 VPC \u65b9\u6848? +mode=\u6a21\u5f0f +network.rate=\u7f51\u7edc\u901f\u7387 +notification.reboot.instance=\u91cd\u65b0\u542f\u52a8\u5b9e\u4f8b +notification.start.instance=\u542f\u52a8\u5b9e\u4f8b +notification.stop.instance=\u505c\u6b62\u5b9e\u4f8b +side.by.side=\u5e76\u884c +state.Accepted=\u5df2\u63a5\u53d7 +state.Active=\u6d3b\u52a8 +state.Allocated=\u5df2\u5206\u914d +state.Allocating=\u6b63\u5728\u5206\u914d +state.BackedUp=\u5df2\u5907\u4efd +state.BackingUp=\u6b63\u5728\u5907\u4efd +state.Completed=\u5df2\u5b8c\u6210 +state.Creating=\u6b63\u5728\u521b\u5efa +state.Declined=\u5df2\u62d2\u7edd +state.Destroyed=\u5df2\u9500\u6bc1 +state.Disabled=\u5df2\u7981\u7528 +state.Enabled=\u5df2\u542f\u7528 +state.enabled=\u5df2\u542f\u7528 +state.Error=\u9519\u8bef +state.Expunging=\u6b63\u5728\u5220\u9664 +state.Migrating=\u6b63\u5728\u8fc1\u79fb +state.Pending=\u5f85\u5b9a +state.Ready=\u5df2\u5c31\u7eea +state.ready=\u5df2\u5c31\u7eea +state.Running=\u6b63\u5728\u8fd0\u884c +state.Starting=\u6b63\u5728\u542f\u52a8 +state.Stopped=\u5df2\u505c\u6b62 +state.Stopping=\u6b63\u5728\u505c\u6b62 +state.Suspended=\u5df2\u6682\u505c +ui.listView.filters.all=\u5168\u90e8 +ui.listView.filters.mine=\u672c\u7528\u6237 From 059633d09ae961e70c83995992f74ea883e5a876 Mon Sep 17 00:00:00 2001 From: Gaurav Aradhye Date: Wed, 24 Sep 2014 16:05:14 +0530 Subject: [PATCH 037/129] CLOUDSTACK-7617: Removed hard coded VM names and skipped test cases according to the hypervisor support Signed-off-by: SrikanteswaraRao Talluri (cherry picked from commit f4ef8363093c289bea09a2c5a81a49641b601c8d) --- .../component/test_custom_hostname.py | 915 ++++++++++-------- 1 file changed, 511 insertions(+), 404 deletions(-) diff --git a/test/integration/component/test_custom_hostname.py b/test/integration/component/test_custom_hostname.py index 9d9008a6335..fcd497e7421 100644 --- a/test/integration/component/test_custom_hostname.py +++ b/test/integration/component/test_custom_hostname.py @@ -16,12 +16,13 @@ # under the License. """ P1 tests for user provide hostname cases """ -#Import Local Modules +# Import Local Modules from nose.plugins.attrib import attr -from marvin.cloudstackTestCase import cloudstackTestCase +from marvin.cloudstackTestCase import cloudstackTestCase, unittest from marvin.lib.utils import (cleanup_resources, - random_gen) + random_gen, + get_hypervisor_type) from marvin.lib.base import (ServiceOffering, Configurations, VirtualMachine, @@ -30,133 +31,143 @@ from marvin.lib.common import (get_domain, get_zone, get_template, is_config_suitable) +import string class Services: + """Test user provided hostname Services """ def __init__(self): self.services = { - "domain": { - "name": "Domain", - }, - "project": { - "name": "Project", - "displaytext": "Test project", - }, - "account": { - "email": "administrator@clogeny.com", - "firstname": "Test", - "lastname": "User", - "username": "test", - # Random characters are appended for unique - # username - "password": "password", - }, - "account_2": { - "email": "administrator1@clogeny.com", - "firstname": "Test1", - "lastname": "User1", - "username": "test1", - # Random characters are appended for unique - # username - "password": "password", - }, - "user": { - "email": "administrator@clogeny.com", - "firstname": "User", - "lastname": "User", - "username": "User", - # Random characters are appended for unique - # username - "password": "password", - }, - "disk_offering": { - "displaytext": "Tiny Disk Offering", - "name": "Tiny Disk Offering", - "disksize": 1 - }, - "volume": { - "diskname": "Test Volume", - }, - "service_offering": { - "name": "Tiny Instance", - "displaytext": "Tiny Instance", - "cpunumber": 1, - "cpuspeed": 100, # in MHz - "memory": 128, # In MBs - }, - "virtual_machine": { - "displayname": "TestVM", - "username": "root", - "password": "password", - "ssh_port": 22, - "hypervisor": 'XenServer', - # Hypervisor type should be same as - # hypervisor type of cluster - "privateport": 22, - "publicport": 22, - "protocol": 'TCP', - }, - "virtual_machine2": { - "displayname": "TestVM", - "username": "root", - "password": "password", - "ssh_port": 22, - "hypervisor": 'XenServer', - # Hypervisor type should be same as - # hypervisor type of cluster - "privateport": 22, - "publicport": 22, - "protocol": 'TCP', - }, - "ostype": 'CentOS 5.3 (64-bit)', - # Cent OS 5.3 (64 bit) - "sleep": 60, - "timeout": 10, - } + "domain": { + "name": "Domain", + }, + "project": { + "name": "Project", + "displaytext": "Test project", + }, + "account": { + "email": "administrator@clogeny.com", + "firstname": "Test", + "lastname": "User", + "username": "test", + # Random characters are appended for unique + # username + "password": "password", + }, + "account_2": { + "email": "administrator1@clogeny.com", + "firstname": "Test1", + "lastname": "User1", + "username": "test1", + # Random characters are appended for unique + # username + "password": "password", + }, + "user": { + "email": "administrator@clogeny.com", + "firstname": "User", + "lastname": "User", + "username": "User", + # Random characters are appended for unique + # username + "password": "password", + }, + "disk_offering": { + "displaytext": "Tiny Disk Offering", + "name": "Tiny Disk Offering", + "disksize": 1 + }, + "volume": { + "diskname": "Test Volume", + }, + "service_offering": { + "name": "Tiny Instance", + "displaytext": "Tiny Instance", + "cpunumber": 1, + "cpuspeed": 100, # in MHz + "memory": 128, # In MBs + }, + "virtual_machine": { + "displayname": "", + "username": "root", + "password": "password", + "ssh_port": 22, + "hypervisor": 'XenServer', + # Hypervisor type should be same as + # hypervisor type of cluster + "privateport": 22, + "publicport": 22, + "protocol": 'TCP', + }, + "virtual_machine2": { + "displayname": "", + "username": "root", + "password": "password", + "ssh_port": 22, + "hypervisor": 'XenServer', + # Hypervisor type should be same as + # hypervisor type of cluster + "privateport": 22, + "publicport": 22, + "protocol": 'TCP', + }, + "ostype": 'CentOS 5.3 (64-bit)', + # Cent OS 5.3 (64 bit) + "sleep": 60, + "timeout": 10, + } class TestInstanceNameFlagTrue(cloudstackTestCase): @classmethod def setUpClass(cls): - cls.testClient = super(TestInstanceNameFlagTrue, cls).getClsTestClient() + cls.testClient = super( + TestInstanceNameFlagTrue, + cls).getClsTestClient() cls.api_client = cls.testClient.getApiClient() + cls.hypervisor = (get_hypervisor_type(cls.api_client)).lower() + if cls.hypervisor != "vmware": + raise unittest.SkipTest("Instance name configuration value\ + is effective only on vmware hypervisor") + cls.services = Services().services # Get Zone, Domain and templates cls.domain = get_domain(cls.api_client) - cls.zone = get_zone(cls.api_client, cls.testClient.getZoneForTests()) + cls.zone = get_zone(cls.api_client, + cls.testClient.getZoneForTests()) cls.services["mode"] = cls.zone.networktype cls.template = get_template( - cls.api_client, - cls.zone.id, - cls.services["ostype"] - ) + cls.api_client, + cls.zone.id, + cls.services["ostype"] + ) # Create account cls.account = Account.create( - cls.api_client, - cls.services["account"], - admin=True, - domainid=cls.domain.id - ) + cls.api_client, + cls.services["account"], + admin=True, + domainid=cls.domain.id + ) cls.account_2 = Account.create( - cls.api_client, - cls.services["account_2"], - admin=True, - domainid=cls.domain.id - ) + cls.api_client, + cls.services["account_2"], + admin=True, + domainid=cls.domain.id + ) cls.services["virtual_machine"]["zoneid"] = cls.zone.id cls.services["virtual_machine"]["template"] = cls.template.id cls.service_offering = ServiceOffering.create( - cls.api_client, - cls.services["service_offering"] - ) + cls.api_client, + cls.services["service_offering"] + ) cls._cleanup = [cls.account, cls.account_2] return @@ -164,7 +175,7 @@ class TestInstanceNameFlagTrue(cloudstackTestCase): @classmethod def tearDownClass(cls): try: - #Cleanup resources used + # Cleanup resources used cleanup_resources(cls.api_client, cls._cleanup) except Exception as e: raise Exception("Warning: Exception during cleanup : %s" % e) @@ -173,20 +184,30 @@ class TestInstanceNameFlagTrue(cloudstackTestCase): def setUp(self): self.apiclient = self.testClient.getApiClient() self.dbclient = self.testClient.getDbConnection() + + self.services["virtual_machine"]["name"] =\ + random_gen(chars=string.ascii_uppercase) self.cleanup = [] return def tearDown(self): try: - #Clean up, terminate the created accounts, domains etc + # Clean up, terminate the created accounts, domains etc cleanup_resources(self.apiclient, self.cleanup) except Exception as e: raise Exception("Warning: Exception during cleanup : %s" % e) return - @attr(configuration='vm.instancename.flag') - @attr(tags=["advanced", "basic", "sg", "eip", "advancedns", "simulator"], required_hardware="false") + @attr( + tags=[ + "advanced", + "basic", + "sg", + "eip", + "advancedns", + "simulator"], + required_hardware="false") def test_01_user_provided_hostname(self): """ Verify user provided hostname to an instance """ @@ -196,106 +217,112 @@ class TestInstanceNameFlagTrue(cloudstackTestCase): # should be user provided display name # 2. Give the user provided user name. Internal name should be # i---display name - if not is_config_suitable(apiclient=self.apiclient, name='vm.instancename.flag', value='true'): + if not is_config_suitable( + apiclient=self.apiclient, + name='vm.instancename.flag', + value='true'): self.skipTest('vm.instancename.flag should be true. skipping') self.debug("Deploying VM in account: %s" % self.account.name) # Spawn an instance in that network + self.services["virtual_machine"]["displayname"] = random_gen( + chars=string.ascii_uppercase) virtual_machine = VirtualMachine.create( - self.apiclient, - self.services["virtual_machine"], - accountid=self.account.name, - domainid=self.account.domainid, - serviceofferingid=self.service_offering.id, - ) + self.apiclient, + self.services["virtual_machine"], + accountid=self.account.name, + domainid=self.account.domainid, + serviceofferingid=self.service_offering.id, + ) self.debug( "Checking if the virtual machine is created properly or not?") vms = VirtualMachine.list( - self.apiclient, - id=virtual_machine.id, - listall=True - ) + self.apiclient, + id=virtual_machine.id, + listall=True + ) self.assertEqual( - isinstance(vms, list), - True, - "List vms should return a valid name" - ) + isinstance(vms, list), + True, + "List vms should return a valid name" + ) vm = vms[0] self.assertEqual( - vm.state, - "Running", - "Vm state should be running after deployment" - ) + vm.state, + "Running", + "Vm state should be running after deployment" + ) self.debug("vm.displayname: %s, original: %s" % - (vm.displayname, - self.services["virtual_machine"]["displayname"])) + (vm.displayname, + self.services["virtual_machine"]["displayname"])) self.assertEqual( - vm.displayname, - self.services["virtual_machine"]["displayname"], - "Vm display name should match the given name" - ) + vm.displayname, + self.services["virtual_machine"]["displayname"], + "Vm display name should match the given name" + ) # Fetch account ID and VMID from database to check internal name - self.debug("select id from account where uuid = '%s';" \ - % self.account.id) + self.debug("select id from account where uuid = '%s';" + % self.account.id) qresultset = self.dbclient.execute( - "select id from account where uuid = '%s';" \ - % self.account.id - ) + "select id from account where uuid = '%s';" + % self.account.id + ) self.assertEqual( - isinstance(qresultset, list), - True, - "Check DB query result set for valid data" - ) + isinstance(qresultset, list), + True, + "Check DB query result set for valid data" + ) self.assertNotEqual( - len(qresultset), - 0, - "Check DB Query result set" - ) + len(qresultset), + 0, + "Check DB Query result set" + ) qresult = qresultset[0] account_id = qresult[0] self.debug("select id from vm_instance where uuid = '%s';" % vm.id) qresultset = self.dbclient.execute( - "select id from vm_instance where uuid = '%s';" % - vm.id) + "select id from vm_instance where uuid = '%s';" % + vm.id) self.assertEqual( - isinstance(qresultset, list), - True, - "Check DB query result set for valid data" - ) + isinstance(qresultset, list), + True, + "Check DB query result set for valid data" + ) self.assertNotEqual( - len(qresultset), - 0, - "Check DB Query result set" - ) + len(qresultset), + 0, + "Check DB Query result set" + ) qresult = qresultset[0] self.debug("Query result: %s" % qresult) vmid = qresult[0] self.debug("Fetching the global config value for instance.name") configs = Configurations.list( - self.apiclient, - name="instance.name", - listall=True - ) + self.apiclient, + name="instance.name", + listall=True + ) config = configs[0] instance_name = config.value - #internal Name = i---instance.name flag value - internal_name = "i-" + str(account_id) + "-" + str(vmid) + "-" + instance_name + # internal Name = i---instance.name flag value + internal_name = "i-" + \ + str(account_id) + "-" + str(vmid) + "-" + instance_name self.assertEqual( - vm.instancename, - internal_name, - "VM internal name should match with that of the format" - ) + vm.instancename, + internal_name, + "VM internal name should match with that of the format" + ) return @attr(tags=["advanced", "basic", "test"]) @@ -303,19 +330,25 @@ class TestInstanceNameFlagTrue(cloudstackTestCase): @attr(configuration='vm.instancename.flag') def test_vm_instance_name_duplicate_different_accounts(self): """ - @Desc: Test whether cloudstack allows duplicate vm instance names in the diff networks + @Desc: Test whether cloudstack allows duplicate vm instance + names in the diff networks @Steps: Step1: Set the vm.instancename.flag to true. - Step2: Deploy a VM with name say webserver01 from account1 Internal name should be i---webserver01 + Step2: Deploy a VM with name say webserver01 from account1 + Internal name should be i---webserver01 Step3: Now deploy VM with the same name "webserver01" from account2. Step4: Deployment of VM with same name should fail """ - if not is_config_suitable(apiclient=self.apiclient, name='vm.instancename.flag', value='true'): + if not is_config_suitable( + apiclient=self.apiclient, + name='vm.instancename.flag', + value='true'): self.skipTest('vm.instancename.flag should be true. skipping') # Step2: Deploy a VM with name say webserver01 from account1 self.debug("Deploying VM in account: %s" % self.account.name) - self.services["virtual_machine2"]["displayname"] = "webserver01" + self.services["virtual_machine2"][ + "displayname"] = random_gen(chars=string.ascii_uppercase) self.services["virtual_machine2"]["zoneid"] = self.zone.id self.services["virtual_machine2"]["template"] = self.template.id vm1 = VirtualMachine.create( @@ -324,7 +357,7 @@ class TestInstanceNameFlagTrue(cloudstackTestCase): accountid=self.account.name, domainid=self.account.domainid, serviceofferingid=self.service_offering.id, - ) + ) self.cleanup.append(vm1) # Step3: Now deploy VM with the same name "webserver01" from account2. @@ -336,13 +369,21 @@ class TestInstanceNameFlagTrue(cloudstackTestCase): accountid=self.account_2.name, domainid=self.account_2.domainid, serviceofferingid=self.service_offering.id, - ) + ) self.cleanup.append(vm2) # Step4: Deployment of VM with same name should fail return @attr(configuration='vm.instancename.flag') - @attr(tags=["advanced", "basic", "sg", "eip", "advancedns", "simulator"], required_hardware="false") + @attr( + tags=[ + "advanced", + "basic", + "sg", + "eip", + "advancedns", + "simulator"], + required_hardware="false") def test_02_instancename_from_default_configuration(self): """ Verify for globally set instancename """ @@ -352,108 +393,120 @@ class TestInstanceNameFlagTrue(cloudstackTestCase): # should be user provided display name # 2. Dont give the user provided user name. Internal name should be # i--- in global config - if not is_config_suitable(apiclient=self.apiclient, name='vm.instancename.flag', value='true'): + if not is_config_suitable( + apiclient=self.apiclient, + name='vm.instancename.flag', + value='true'): self.skipTest('vm.instancename.flag should be true. skipping') # Removing display name from config del self.services["virtual_machine"]["displayname"] self.debug("Deploying VM in account: %s" % self.account.name) virtual_machine = VirtualMachine.create( - self.apiclient, - self.services["virtual_machine"], - accountid=self.account.name, - domainid=self.account.domainid, - serviceofferingid=self.service_offering.id, - ) + self.apiclient, + self.services["virtual_machine"], + accountid=self.account.name, + domainid=self.account.domainid, + serviceofferingid=self.service_offering.id, + ) self.debug( "Checking if the virtual machine is created properly or not?") vms = VirtualMachine.list( - self.apiclient, - id=virtual_machine.id, - listall=True - ) + self.apiclient, + id=virtual_machine.id, + listall=True + ) self.assertEqual( - isinstance(vms, list), - True, - "List vms should retuen a valid name" - ) + isinstance(vms, list), + True, + "List vms should retuen a valid name" + ) vm = vms[0] self.assertEqual( - vm.state, - "Running", - "Vm state should be running after deployment" - ) + vm.state, + "Running", + "Vm state should be running after deployment" + ) self.assertNotEqual( - vm.displayname, - vm.id, - "Vm display name should not match the given name" - ) + vm.displayname, + vm.id, + "Vm display name should not match the given name" + ) # Fetch account ID and VMID from database to check internal name - self.debug("select id from account where uuid = '%s';" \ - % self.account.id) + self.debug("select id from account where uuid = '%s';" + % self.account.id) qresultset = self.dbclient.execute( - "select id from account where uuid = '%s';" \ - % self.account.id - ) + "select id from account where uuid = '%s';" + % self.account.id + ) self.assertEqual( - isinstance(qresultset, list), - True, - "Check DB query result set for valid data" - ) + isinstance(qresultset, list), + True, + "Check DB query result set for valid data" + ) self.assertNotEqual( - len(qresultset), - 0, - "Check DB Query result set" - ) + len(qresultset), + 0, + "Check DB Query result set" + ) qresult = qresultset[0] account_id = qresult[0] self.debug("select id from vm_instance where uuid = '%s';" % vm.id) qresultset = self.dbclient.execute( - "select id from vm_instance where uuid = '%s';" % - vm.id) + "select id from vm_instance where uuid = '%s';" % + vm.id) self.assertEqual( - isinstance(qresultset, list), - True, - "Check DB query result set for valid data" - ) + isinstance(qresultset, list), + True, + "Check DB query result set for valid data" + ) self.assertNotEqual( - len(qresultset), - 0, - "Check DB Query result set" - ) + len(qresultset), + 0, + "Check DB Query result set" + ) qresult = qresultset[0] self.debug("Query result: %s" % qresult) vmid = qresult[0] self.debug("Fetching the global config value for instance.name") configs = Configurations.list( - self.apiclient, - name="instance.name", - listall=True - ) + self.apiclient, + name="instance.name", + listall=True + ) config = configs[0] instance_name = config.value self.debug("Instance.name: %s" % instance_name) - #internal Name = i--- Instance_name - internal_name = "i-" + str(account_id) + "-" + str(vmid) + "-" + instance_name + # internal Name = i--- Instance_name + internal_name = "i-" + \ + str(account_id) + "-" + str(vmid) + "-" + instance_name self.assertEqual( - vm.instancename, - internal_name, - "VM internal name should match with that of the format" - ) + vm.instancename, + internal_name, + "VM internal name should match with that of the format" + ) return @attr(configuration='vm.instancename.flag') - @attr(tags=["advanced", "basic", "sg", "eip", "advancedns", "simulator"], required_hardware="false") + @attr( + tags=[ + "advanced", + "basic", + "sg", + "eip", + "advancedns", + "simulator"], + required_hardware="false") def test_03_duplicate_name(self): """ Test the duplicate name when old VM is in non-expunged state """ @@ -465,56 +518,67 @@ class TestInstanceNameFlagTrue(cloudstackTestCase): # out saying the duplicate names are not allowed # Reading display name property - if not is_config_suitable(apiclient=self.apiclient, name='vm.instancename.flag', value='true'): + if not is_config_suitable( + apiclient=self.apiclient, + name='vm.instancename.flag', + value='true'): self.skipTest('vm.instancename.flag should be true. skipping') - self.services["virtual_machine"]["displayname"] = "TestVM" - self.services["virtual_machine"]["name"] = "TestVM" + self.services["virtual_machine"]["displayname"] = random_gen( + chars=string.ascii_uppercase) self.debug("Deploying an instance in account: %s" % - self.account.name) + self.account.name) virtual_machine = VirtualMachine.create( - self.apiclient, - self.services["virtual_machine"], - accountid=self.account.name, - domainid=self.account.domainid, - serviceofferingid=self.service_offering.id, - ) + self.apiclient, + self.services["virtual_machine"], + accountid=self.account.name, + domainid=self.account.domainid, + serviceofferingid=self.service_offering.id, + ) self.cleanup.append(virtual_machine) self.debug( "Checking if the virtual machine is created properly or not?") vms = VirtualMachine.list( - self.apiclient, - id=virtual_machine.id, - listall=True - ) + self.apiclient, + id=virtual_machine.id, + listall=True + ) self.assertEqual( - isinstance(vms, list), - True, - "List vms should retuen a valid name" - ) + isinstance(vms, list), + True, + "List vms should retuen a valid name" + ) vm = vms[0] self.assertEqual( - vm.state, - "Running", - "Vm state should be running after deployment" - ) + vm.state, + "Running", + "Vm state should be running after deployment" + ) self.debug("Display name: %s" % vm.displayname) self.debug("Deplying another virtual machine with same name") with self.assertRaises(Exception): VirtualMachine.create( - self.apiclient, - self.services["virtual_machine"], - accountid=self.account.name, - domainid=self.account.domainid, - serviceofferingid=self.service_offering.id, - ) + self.apiclient, + self.services["virtual_machine"], + accountid=self.account.name, + domainid=self.account.domainid, + serviceofferingid=self.service_offering.id, + ) return @attr(configuration='vm.instancename.flag') - @attr(tags=["advanced", "basic", "sg", "eip", "advancedns", "simulator"], required_hardware="false") + @attr( + tags=[ + "advanced", + "basic", + "sg", + "eip", + "advancedns", + "simulator"], + required_hardware="false") def test_instance_name_with_hyphens(self): """ Test the instance name with hyphens """ @@ -524,46 +588,58 @@ class TestInstanceNameFlagTrue(cloudstackTestCase): # 2. Add the virtual machine with display name with hyphens # Reading display name property - if not is_config_suitable(apiclient=self.apiclient, name='vm.instancename.flag', value='true'): + if not is_config_suitable( + apiclient=self.apiclient, + name='vm.instancename.flag', + value='true'): self.skipTest('vm.instancename.flag should be true. skipping') - self.services["virtual_machine"]["displayname"] = "TestVM-test-name" + self.services["virtual_machine"]["displayname"] = random_gen( + chars=string.ascii_uppercase) + "-" + random_gen( + chars=string.ascii_uppercase) self.debug("Deploying an instance in account: %s" % - self.account.name) + self.account.name) virtual_machine = VirtualMachine.create( - self.apiclient, - self.services["virtual_machine"], - accountid=self.account.name, - domainid=self.account.domainid, - serviceofferingid=self.service_offering.id, - ) + self.apiclient, + self.services["virtual_machine"], + accountid=self.account.name, + domainid=self.account.domainid, + serviceofferingid=self.service_offering.id, + ) self.debug( "Checking if the virtual machine is created properly or not?") vms = VirtualMachine.list( - self.apiclient, - id=virtual_machine.id, - listall=True - ) + self.apiclient, + id=virtual_machine.id, + listall=True + ) self.assertEqual( - isinstance(vms, list), - True, - "List vms should retuen a valid name" - ) + isinstance(vms, list), + True, + "List vms should retuen a valid name" + ) vm = vms[0] self.assertEqual( - vm.state, - "Running", - "Vm state should be running after deployment" - ) + vm.state, + "Running", + "Vm state should be running after deployment" + ) self.debug("Display name: %s" % vm.displayname) return - @attr(configuration='vm.instancename.flag') - @attr(tags=["advanced", "basic", "sg", "eip", "advancedns", "simulator"], required_hardware="false") + @attr( + tags=[ + "advanced", + "basic", + "sg", + "eip", + "advancedns", + "simulator"], + required_hardware="false") def test_04_edit_display_name(self): """ Test Edit the Display name Through the UI. """ @@ -576,41 +652,40 @@ class TestInstanceNameFlagTrue(cloudstackTestCase): # internal name will not be changed. The VM functionality must not # be effected. - self.services["virtual_machine"]["name"] = "TestVM4" # Spawn an instance in that network self.debug("Deploying VM in account: %s" % self.account.name) virtual_machine = VirtualMachine.create( - self.apiclient, - self.services["virtual_machine"], - accountid=self.account.name, - domainid=self.account.domainid, - serviceofferingid=self.service_offering.id, - ) + self.apiclient, + self.services["virtual_machine"], + accountid=self.account.name, + domainid=self.account.domainid, + serviceofferingid=self.service_offering.id, + ) self.debug( "Checking if the virtual machine is created properly or not?") vms = VirtualMachine.list( - self.apiclient, - id=virtual_machine.id, - listall=True - ) + self.apiclient, + id=virtual_machine.id, + listall=True + ) self.assertEqual( - isinstance(vms, list), - True, - "List vms should retuen a valid name" - ) + isinstance(vms, list), + True, + "List vms should retuen a valid name" + ) vm = vms[0] self.assertEqual( - vm.state, - "Running", - "Vm state should be running after deployment" - ) + vm.state, + "Running", + "Vm state should be running after deployment" + ) self.assertEqual( - vm.displayname, - self.services["virtual_machine"]["displayname"], - "Vm display name should match the given name" - ) + vm.displayname, + self.services["virtual_machine"]["displayname"], + "Vm display name should match the given name" + ) old_internal_name = vm.instancename self.debug("Stopping the instance: %s" % vm.name) @@ -621,42 +696,53 @@ class TestInstanceNameFlagTrue(cloudstackTestCase): self.debug("Update the display name of the instance") try: - virtual_machine.update(self.apiclient, displayname=random_gen()) + virtual_machine.update( + self.apiclient, + displayname=random_gen( + chars=string.ascii_uppercase)) except Exception as e: self.fail("Failed to update the virtual machine name: %s, %s" % - (virtual_machine.name, e)) + (virtual_machine.name, e)) self.debug("Start the instance: %s" % virtual_machine.name) virtual_machine.start(self.apiclient) self.debug("Checking if the instance is working properly after update") vms = VirtualMachine.list( - self.apiclient, - id=virtual_machine.id, - listall=True - ) + self.apiclient, + id=virtual_machine.id, + listall=True + ) self.assertEqual( - isinstance(vms, list), - True, - "List vms should retuen a valid name" - ) + isinstance(vms, list), + True, + "List vms should retuen a valid name" + ) vm = vms[0] self.assertEqual( - vm.state, - "Running", - "Vm state should be running after deployment" - ) + vm.state, + "Running", + "Vm state should be running after deployment" + ) self.assertEqual( - vm.instancename, - old_internal_name, - "Vm internal name should not be changed after update" - ) + vm.instancename, + old_internal_name, + "Vm internal name should not be changed after update" + ) return @attr(configuration='vm.instancename.flag') - @attr(tags=["advanced", "basic", "sg", "eip", "advancedns", "simulator"], required_hardware="false") + @attr( + tags=[ + "advanced", + "basic", + "sg", + "eip", + "advancedns", + "simulator"], + required_hardware="false") def test_05_unsupported_chars_in_display_name(self): """ Test Unsupported chars in the display name (eg: Spaces,Exclamation,yet to get unsupported chars from the dev) @@ -675,16 +761,18 @@ class TestInstanceNameFlagTrue(cloudstackTestCase): for display_name in display_names: self.debug("Display name: %s" % display_name) self.services["virtual_machine"]["displayname"] = display_name + self.services["virtual_machine"]["name"] = random_gen( + chars=string.ascii_uppercase) with self.assertRaises(Exception): # Spawn an instance in that network VirtualMachine.create( - self.apiclient, - self.services["virtual_machine"], - accountid=self.account.name, - domainid=self.account.domainid, - serviceofferingid=self.service_offering.id, - ) + self.apiclient, + self.services["virtual_machine"], + accountid=self.account.name, + domainid=self.account.domainid, + serviceofferingid=self.service_offering.id, + ) return @@ -692,42 +780,45 @@ class TestInstanceNameFlagFalse(cloudstackTestCase): @classmethod def setUpClass(cls): - cls.testClient = super(TestInstanceNameFlagFalse, cls).getClsTestClient() + cls.testClient = super( + TestInstanceNameFlagFalse, + cls).getClsTestClient() cls.api_client = cls.testClient.getApiClient() cls.services = Services().services # Get Zone, Domain and templates cls.domain = get_domain(cls.api_client) - cls.zone = get_zone(cls.api_client, cls.testClient.getZoneForTests()) + cls.zone = get_zone(cls.api_client, + cls.testClient.getZoneForTests()) cls.template = get_template( - cls.api_client, - cls.zone.id, - cls.services["ostype"] - ) + cls.api_client, + cls.zone.id, + cls.services["ostype"] + ) # Create account cls.account = Account.create( - cls.api_client, - cls.services["account"], - admin=True, - domainid=cls.domain.id - ) + cls.api_client, + cls.services["account"], + admin=True, + domainid=cls.domain.id + ) cls.services["virtual_machine"]["zoneid"] = cls.zone.id cls.services["virtual_machine"]["template"] = cls.template.id cls.service_offering = ServiceOffering.create( - cls.api_client, - cls.services["service_offering"] - ) + cls.api_client, + cls.services["service_offering"] + ) cls._cleanup = [cls.account] return @classmethod def tearDownClass(cls): try: - #Cleanup resources used + # Cleanup resources used cleanup_resources(cls.api_client, cls._cleanup) except Exception as e: raise Exception("Warning: Exception during cleanup : %s" % e) @@ -741,14 +832,22 @@ class TestInstanceNameFlagFalse(cloudstackTestCase): def tearDown(self): try: - #Clean up, terminate the created accounts, domains etc + # Clean up, terminate the created accounts, domains etc cleanup_resources(self.apiclient, self.cleanup) except Exception as e: raise Exception("Warning: Exception during cleanup : %s" % e) return @attr(configuration='vm.instancename.flag') - @attr(tags=["advanced", "basic", "sg", "eip", "advancedns", "simulator"], required_hardware="false") + @attr( + tags=[ + "advanced", + "basic", + "sg", + "eip", + "advancedns", + "simulator"], + required_hardware="false") def test_01_custom_hostname_instancename_false(self): """ Verify custom hostname for the instance when vm.instancename.flag=false @@ -758,111 +857,119 @@ class TestInstanceNameFlagFalse(cloudstackTestCase): # 1. Set the vm.instancename.flog to false. Hostname and displayname # should be UUID # 2. Give the user provided display name. Internal name should be - # i---instance name (It should not contain display name) + # i---instance name (It should not contain display name) - if not is_config_suitable(apiclient=self.apiclient, name='vm.instancename.flag', value='false'): + if not is_config_suitable( + apiclient=self.apiclient, + name='vm.instancename.flag', + value='false'): self.skipTest('vm.instancename.flag should be false. skipping') self.debug("Deploying VM in account: %s" % self.account.name) # Spawn an instance in that network + self.services["virtual_machine"]["displayname"] = random_gen( + chars=string.ascii_uppercase) virtual_machine = VirtualMachine.create( - self.apiclient, - self.services["virtual_machine"], - accountid=self.account.name, - domainid=self.account.domainid, - serviceofferingid=self.service_offering.id, - ) + self.apiclient, + self.services["virtual_machine"], + accountid=self.account.name, + domainid=self.account.domainid, + serviceofferingid=self.service_offering.id, + ) self.debug( "Checking if the virtual machine is created properly or not?") vms = VirtualMachine.list( - self.apiclient, - id=virtual_machine.id, - listall=True - ) + self.apiclient, + id=virtual_machine.id, + listall=True + ) self.assertEqual( - isinstance(vms, list), - True, - "List vms should retuen a valid name" - ) + isinstance(vms, list), + True, + "List vms should retuen a valid name" + ) vm = vms[0] self.assertEqual( - vm.state, - "Running", - "Vm state should be running after deployment" - ) + vm.state, + "Running", + "Vm state should be running after deployment" + ) self.debug("vm.displayname: %s, original: %s" % - (vm.displayname, - self.services["virtual_machine"]["displayname"])) + (vm.displayname, + self.services["virtual_machine"]["displayname"])) self.assertEqual( - vm.displayname, - self.services["virtual_machine"]["displayname"], - "Vm display name should match the given name" - ) + vm.displayname, + self.services["virtual_machine"]["displayname"], + "Vm display name should match the given name" + ) # Fetch account ID and VMID from database to check internal name - self.debug("select id from account where uuid = '%s';" \ - % self.account.id) + self.debug("select id from account where uuid = '%s';" + % self.account.id) qresultset = self.dbclient.execute( - "select id from account where uuid = '%s';" \ - % self.account.id - ) + "select id from account where uuid = '%s';" + % self.account.id + ) self.assertEqual( - isinstance(qresultset, list), - True, - "Check DB query result set for valid data" - ) + isinstance(qresultset, list), + True, + "Check DB query result set for valid data" + ) self.assertNotEqual( - len(qresultset), - 0, - "Check DB Query result set" - ) + len(qresultset), + 0, + "Check DB Query result set" + ) qresult = qresultset[0] account_id = qresult[0] self.debug("select id from vm_instance where uuid = '%s';" % vm.id) qresultset = self.dbclient.execute( - "select id from vm_instance where uuid = '%s';" % - vm.id) + "select id from vm_instance where uuid = '%s';" % + vm.id) self.assertEqual( - isinstance(qresultset, list), - True, - "Check DB query result set for valid data" - ) + isinstance(qresultset, list), + True, + "Check DB query result set for valid data" + ) self.assertNotEqual( - len(qresultset), - 0, - "Check DB Query result set" - ) + len(qresultset), + 0, + "Check DB Query result set" + ) qresult = qresultset[0] self.debug("Query result: %s" % qresult) vmid = qresult[0] self.debug("Fetching the global config value for instance.name") configs = Configurations.list( - self.apiclient, - name="instance.name", - listall=True - ) + self.apiclient, + name="instance.name", + listall=True + ) config = configs[0] - self.debug("Config value : %s" % config) + self.debug("Config value : %s" % config) instance_name = config.value self.debug("Instance.name: %s" % instance_name) - #internal Name = i--- - #internal_name = "i-" + str(account_id) + "-" + str(vmid) + "-" + instance_name - internal_name = "i-%s-%s-%s" %(str(account_id), str(vmid), instance_name) + # internal Name = i--- + # internal_name = "i-" + str(account_id) + "-" + str(vmid) + "-" + + # instance_name + internal_name = "i-%s-%s-%s" % (str(account_id), + str(vmid), + instance_name) self.debug("Internal name: %s" % internal_name) self.debug("vm instance name : %s" % vm.instancename) self.assertEqual( - vm.instancename, - internal_name, - "VM internal name should match with that of the format" - ) + vm.instancename, + internal_name, + "VM internal name should match with that of the format" + ) return From 09420dd0b14792970e5b5a133310225d729cc0dd Mon Sep 17 00:00:00 2001 From: sailajamada Date: Fri, 26 Sep 2014 12:45:41 +0530 Subject: [PATCH 038/129] List ISO's test to verify default ISO's are listed always (cherry picked from commit d19a78ddf707397cee89cad076224752cc94e656) --- test/integration/smoke/test_iso.py | 34 +++++++++++++++++++++++++++++- 1 file changed, 33 insertions(+), 1 deletion(-) diff --git a/test/integration/smoke/test_iso.py b/test/integration/smoke/test_iso.py index 3498ad737ec..4bd66b5dc4e 100644 --- a/test/integration/smoke/test_iso.py +++ b/test/integration/smoke/test_iso.py @@ -229,6 +229,21 @@ class TestISO(cloudstackTestCase): return + + def get_iso_details(self,isoname): + + #ListIsos to list default ISOS (VM and xen tools) + list_default_iso_response = list_isos( + self.apiclient, + name=isoname, + isready="true" + ) + self.assertEqual( + list_default_iso_response, + None, + "Check if ISO exists in ListIsos" + ) + @attr(tags = ["advanced", "basic", "eip", "sg", "advancedns", "smoke"], required_hardware="false") def test_02_edit_iso(self): """Test Edit ISO @@ -321,7 +336,7 @@ class TestISO(cloudstackTestCase): "Check if ISO exists in ListIsos" ) return - + @attr(tags = ["advanced", "basic", "eip", "sg", "advancedns"], required_hardware="true") def test_04_extract_Iso(self): "Test for extract ISO" @@ -514,3 +529,20 @@ class TestISO(cloudstackTestCase): cmd.zoneid = self.services["destzoneid"] self.apiclient.deleteIso(cmd) return + + + @attr(tags = ["advanced", "basic", "eip", "sg", "advancedns"], required_hardware="false") + def test_07_list_default_iso(self): + """Test delete ISO + """ + + # Validate the following: + # list ISO should list default ISOS (VM and xen tools) + + + #ListIsos to list default ISOS (VM and xen tools) + list_xs__iso_response = self.get_iso_details("xs-tools.iso") + list_xs__iso_response = self.get_iso_details("vmware-tools.iso") + + + return From 549840dd0d777dfa98e3546c70974c3e8e1b1cd0 Mon Sep 17 00:00:00 2001 From: Devdeep Singh Date: Fri, 26 Sep 2014 13:13:24 +0530 Subject: [PATCH 039/129] CLOUDSTACK-7495. Volume resize is only supported on kvm, vmware and xenserver. If the operation is tried on other hypervisors it fails but logs a stack trace. We should just log a message that the operation isn't supported. (cherry picked from commit ec1123aca18009ac91e571e150fcf4c98df5e482) --- .../command/admin/volume/ResizeVolumeCmdByAdmin.java | 12 ++++++++++-- .../api/command/user/volume/ResizeVolumeCmd.java | 11 +++++++++-- .../src/com/cloud/storage/VolumeApiServiceImpl.java | 2 +- 3 files changed, 20 insertions(+), 5 deletions(-) diff --git a/api/src/org/apache/cloudstack/api/command/admin/volume/ResizeVolumeCmdByAdmin.java b/api/src/org/apache/cloudstack/api/command/admin/volume/ResizeVolumeCmdByAdmin.java index d1d253c02b7..542fff592bf 100644 --- a/api/src/org/apache/cloudstack/api/command/admin/volume/ResizeVolumeCmdByAdmin.java +++ b/api/src/org/apache/cloudstack/api/command/admin/volume/ResizeVolumeCmdByAdmin.java @@ -24,6 +24,7 @@ import org.apache.cloudstack.api.command.user.volume.ResizeVolumeCmd; import org.apache.cloudstack.api.response.VolumeResponse; import org.apache.cloudstack.context.CallContext; +import com.cloud.exception.InvalidParameterValueException; import com.cloud.exception.ResourceAllocationException; import com.cloud.storage.Volume; @@ -33,8 +34,15 @@ public class ResizeVolumeCmdByAdmin extends ResizeVolumeCmd { @Override public void execute() throws ResourceAllocationException{ - CallContext.current().setEventDetails("Volume Id: " + getEntityId() + " to size " + getSize() + "G"); - Volume volume = _volumeService.resizeVolume(this); + Volume volume = null; + try { + CallContext.current().setEventDetails("Volume Id: " + getEntityId() + " to size " + getSize() + "G"); + volume = _volumeService.resizeVolume(this); + } catch (InvalidParameterValueException ex) { + s_logger.info(ex.getMessage()); + throw new ServerApiException(ApiErrorCode.UNSUPPORTED_ACTION_ERROR, ex.getMessage()); + } + if (volume != null) { VolumeResponse response = _responseGenerator.createVolumeResponse(ResponseView.Full, volume); //FIXME - have to be moved to ApiResponseHelper diff --git a/api/src/org/apache/cloudstack/api/command/user/volume/ResizeVolumeCmd.java b/api/src/org/apache/cloudstack/api/command/user/volume/ResizeVolumeCmd.java index 49fd6ca194f..4ec94494ac1 100644 --- a/api/src/org/apache/cloudstack/api/command/user/volume/ResizeVolumeCmd.java +++ b/api/src/org/apache/cloudstack/api/command/user/volume/ResizeVolumeCmd.java @@ -160,8 +160,15 @@ public class ResizeVolumeCmd extends BaseAsyncCmd { @Override public void execute() throws ResourceAllocationException { - CallContext.current().setEventDetails("Volume Id: " + getEntityId() + " to size " + getSize() + "G"); - Volume volume = _volumeService.resizeVolume(this); + Volume volume = null; + try { + CallContext.current().setEventDetails("Volume Id: " + getEntityId() + " to size " + getSize() + "G"); + volume = _volumeService.resizeVolume(this); + } catch (InvalidParameterValueException ex) { + s_logger.info(ex.getMessage()); + throw new ServerApiException(ApiErrorCode.UNSUPPORTED_ACTION_ERROR, ex.getMessage()); + } + if (volume != null) { VolumeResponse response = _responseGenerator.createVolumeResponse(ResponseView.Restricted, volume); //FIXME - have to be moved to ApiResponseHelper diff --git a/server/src/com/cloud/storage/VolumeApiServiceImpl.java b/server/src/com/cloud/storage/VolumeApiServiceImpl.java index 8ccede7d156..d89ea4f7ebe 100644 --- a/server/src/com/cloud/storage/VolumeApiServiceImpl.java +++ b/server/src/com/cloud/storage/VolumeApiServiceImpl.java @@ -720,7 +720,7 @@ public class VolumeApiServiceImpl extends ManagerBase implements VolumeApiServic if (hypervisorType != HypervisorType.KVM && hypervisorType != HypervisorType.XenServer && hypervisorType != HypervisorType.VMware && hypervisorType != HypervisorType.Any && hypervisorType != HypervisorType.None) { - throw new InvalidParameterValueException("CloudStack currently only supports volumes marked as the KVM, VMware, or XenServer hypervisor type for resize."); + throw new InvalidParameterValueException("CloudStack currently supports volume resize only on KVM, VMware, or XenServer."); } if (volume.getState() != Volume.State.Ready && volume.getState() != Volume.State.Allocated) { From e43d5b1c7d506902093dc68211b7afa832ce886e Mon Sep 17 00:00:00 2001 From: Anshul Gangwar Date: Thu, 18 Sep 2014 15:23:47 +0530 Subject: [PATCH 040/129] CLOUDSTACK-7575: improved performance of cleanString method in StringUtils (cherry picked from commit 7972f53c8d35b78bd27cbd2c8bb1beb763b69c00) --- utils/src/com/cloud/utils/StringUtils.java | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/utils/src/com/cloud/utils/StringUtils.java b/utils/src/com/cloud/utils/StringUtils.java index 7014e5c8d1d..74dbd4dcc4c 100644 --- a/utils/src/com/cloud/utils/StringUtils.java +++ b/utils/src/com/cloud/utils/StringUtils.java @@ -159,9 +159,7 @@ public class StringUtils { } // removes a password request param and it's value, also considering password is in query parameter value which has been url encoded - private static final Pattern REGEX_PASSWORD_QUERYSTRING = Pattern.compile("(&|%26)?[^(&|%26)]*((p|P)assword|accesskey|secretkey)(=|%3D).*?(?=(%26|[&'\"]))"); - - private static final Pattern REGEX_END_PASSWORD_QUERYSTRING = Pattern.compile("(&|%26)[^(&|%26)]*((p|P)assword|accesskey|secretkey)(=|%3D).*"); + private static final Pattern REGEX_PASSWORD_QUERYSTRING = Pattern.compile("(&|%26)?[^(&|%26)]*((p|P)assword|accesskey|secretkey)(=|%3D).*?(?=(%26|[&'\"]|$))"); // removes a password/accesskey/ property from a response json object private static final Pattern REGEX_PASSWORD_JSON = Pattern.compile("\"((p|P)assword|accesskey|secretkey)\":\\s?\".*?\",?"); @@ -177,7 +175,6 @@ public class StringUtils { String cleanResult = ""; if (stringToClean != null) { cleanResult = REGEX_PASSWORD_QUERYSTRING.matcher(stringToClean).replaceAll(""); - cleanResult = REGEX_END_PASSWORD_QUERYSTRING.matcher(cleanResult).replaceAll(""); cleanResult = REGEX_PASSWORD_JSON.matcher(cleanResult).replaceAll(""); Matcher detailsMatcher = REGEX_PASSWORD_DETAILS.matcher(cleanResult); while (detailsMatcher.find()) { From 42b604dc41616718876e86b990c88896cf60eb3e Mon Sep 17 00:00:00 2001 From: Anshul Gangwar Date: Tue, 23 Sep 2014 14:50:59 +0530 Subject: [PATCH 041/129] CLOUDSTACK-7610,CLOUDSTACK-7611,CLOUDSTACK-7612: Fixed following bugs in AlertsSyslogAppender 1. Added sync alert. 2. Changed unrecognised alerts are send as unknown instead of null. 3. Added unit tests to cover some more scenarios. (cherry picked from commit 4eeae5ad51ce8d35701509cde9b99cee4ecaccc7) --- .../syslog/AlertsSyslogAppender.java | 10 ++++--- .../syslog/AlertsSyslogAppenderTest.java | 30 +++++++++++++++++-- 2 files changed, 34 insertions(+), 6 deletions(-) diff --git a/plugins/alert-handlers/syslog-alerts/src/org/apache/cloudstack/syslog/AlertsSyslogAppender.java b/plugins/alert-handlers/syslog-alerts/src/org/apache/cloudstack/syslog/AlertsSyslogAppender.java index 5f6e8ecdf1e..7324c200882 100644 --- a/plugins/alert-handlers/syslog-alerts/src/org/apache/cloudstack/syslog/AlertsSyslogAppender.java +++ b/plugins/alert-handlers/syslog-alerts/src/org/apache/cloudstack/syslog/AlertsSyslogAppender.java @@ -49,7 +49,7 @@ public class AlertsSyslogAppender extends AppenderSkeleton { public static final int LENGTH_OF_STRING_MESSAGE = 8; public static final String MESSAGE_DELIMITER_STRING = " "; //add the alertType in this array it its level needs to be set to critical - private static final int[] criticalAlerts = {7, 8, 9, 10, 11, 12, 13, 15, 16, 19, 20}; + private static final int[] criticalAlerts = {7, 8, 9, 10, 11, 12, 13, 15, 16, 19, 20, 27}; private static final Map alertsMap; static { @@ -81,6 +81,7 @@ public class AlertsSyslogAppender extends AppenderSkeleton { aMap.put(24, "unallocatedDirectAttachedPublicIp"); aMap.put(25, "unallocatedLocalStorage"); aMap.put(26, "resourceLimitExceeded"); + aMap.put(27, "sync"); alertsMap = Collections.unmodifiableMap(aMap); } @@ -230,7 +231,8 @@ public class AlertsSyslogAppender extends AppenderSkeleton { } if (alertType >= 0) { - message.append("alertType").append(_keyValueDelimiter).append(" ").append(alertsMap.get(alertType)).append(MESSAGE_DELIMITER_STRING); + message.append("alertType").append(_keyValueDelimiter).append(" ").append(alertsMap.containsKey(alertType) ? alertsMap.get(alertType) : "unknown") + .append(MESSAGE_DELIMITER_STRING); if (dataCenterId != 0) { message.append("dataCenterId").append(_keyValueDelimiter).append(" ").append(dataCenterId).append(MESSAGE_DELIMITER_STRING); } @@ -246,10 +248,10 @@ public class AlertsSyslogAppender extends AppenderSkeleton { if (sysMessage != null) { message.append("message").append(_keyValueDelimiter).append(" ").append(sysMessage); } else { - errorHandler.error(" What is the use of alert without message "); + errorHandler.error("What is the use of alert without message "); } } else { - errorHandler.error(" Invalid alert Type "); + errorHandler.error("Invalid alert Type "); } return message.toString(); diff --git a/plugins/alert-handlers/syslog-alerts/test/org/apache/cloudstack/syslog/AlertsSyslogAppenderTest.java b/plugins/alert-handlers/syslog-alerts/test/org/apache/cloudstack/syslog/AlertsSyslogAppenderTest.java index 57993483a25..7b7dbe0ada4 100644 --- a/plugins/alert-handlers/syslog-alerts/test/org/apache/cloudstack/syslog/AlertsSyslogAppenderTest.java +++ b/plugins/alert-handlers/syslog-alerts/test/org/apache/cloudstack/syslog/AlertsSyslogAppenderTest.java @@ -17,8 +17,8 @@ package org.apache.cloudstack.syslog; -import static junit.framework.Assert.assertEquals; -import static junit.framework.Assert.assertTrue; +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertTrue; import javax.naming.ConfigurationException; @@ -41,6 +41,12 @@ public class AlertsSyslogAppenderTest { assertEquals(" error Syslog Appenders list size not as expected ", 2, _appender._syslogAppenders.size()); } + @Test + public void setSyslogAppendersWithPortTest() { + _appender.setSyslogHosts("10.1.1.1:897,10.1.1.2"); + assertEquals(" error Syslog Appenders list size not as expected ", 2, _appender._syslogAppenders.size()); + } + @Test public void setSyslogAppendersNegativeTest() { //setting invalid IP for Syslog Hosts @@ -57,4 +63,24 @@ public class AlertsSyslogAppenderTest { createdMessage.contains("alertType:: managementNode" + AlertsSyslogAppender.MESSAGE_DELIMITER_STRING + "message:: Management server node 127.0.0.1 is up")); assertTrue("severity level not as expected ", createdMessage.contains("WARN")); } + + @Test + public void appendUnknownTest() { + String message = "alertType:: 40 // dataCenterId:: 0 // podId:: 0 // clusterId:: null // message:: Management" + " server node 127.0.0.1 is up"; + _appender.parseMessage(message); + String createdMessage = _appender.createSyslogMessage(); + assertTrue(" message is not as expected ", + createdMessage.contains("alertType:: unknown" + AlertsSyslogAppender.MESSAGE_DELIMITER_STRING + "message:: Management server node 127.0.0.1 is up")); + assertTrue("severity level not as expected ", createdMessage.contains("WARN")); + } + + @Test + public void appendFirstAlertTest() { + String message = "alertType:: 0 // dataCenterId:: 0 // podId:: 0 // clusterId:: null // message:: Management" + " server node 127.0.0.1 is up"; + _appender.parseMessage(message); + String createdMessage = _appender.createSyslogMessage(); + assertTrue(" message is not as expected ", + createdMessage.contains("alertType:: availableMemory" + AlertsSyslogAppender.MESSAGE_DELIMITER_STRING + "message:: Management server node 127.0.0.1 is up")); + assertTrue("severity level not as expected ", createdMessage.contains("WARN")); + } } \ No newline at end of file From 20a0763b04a06ca8cb53d9a94daf14f3b0b76964 Mon Sep 17 00:00:00 2001 From: Ashutosh K Date: Fri, 5 Sep 2014 17:25:00 +0530 Subject: [PATCH 042/129] CLOUDSTACK-7499: Adding test cases for VMLC test path Signed-off-by: SrikanteswaraRao Talluri (cherry picked from commit 05913e3cbda1be35f3247a970d66eb74bb3b1449) --- test/integration/testpaths/__init__.py | 16 + test/integration/testpaths/testpath_vmlc.py | 916 ++++++++++++++++++++ tools/marvin/marvin/config/test_data.py | 22 +- tools/marvin/marvin/lib/base.py | 8 + 4 files changed, 960 insertions(+), 2 deletions(-) create mode 100644 test/integration/testpaths/__init__.py create mode 100644 test/integration/testpaths/testpath_vmlc.py diff --git a/test/integration/testpaths/__init__.py b/test/integration/testpaths/__init__.py new file mode 100644 index 00000000000..978b68af62a --- /dev/null +++ b/test/integration/testpaths/__init__.py @@ -0,0 +1,16 @@ +# Licensed to the Apache Software Foundation (ASF) under one +# or more contributor license agreements. See the NOTICE file +# distributed with this work for additional information +# regarding copyright ownership. The ASF licenses this file +# to you under the Apache License, Version 2.0 (the +# "License"); you may not use this file except in compliance +# with the License. You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, +# software distributed under the License is distributed on an +# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +# KIND, either express or implied. See the License for the +# specific language governing permissions and limitations +# under the License. diff --git a/test/integration/testpaths/testpath_vmlc.py b/test/integration/testpaths/testpath_vmlc.py new file mode 100644 index 00000000000..226621fa5f3 --- /dev/null +++ b/test/integration/testpaths/testpath_vmlc.py @@ -0,0 +1,916 @@ +# Licensed to the Apache Software Foundation (ASF) under one +# or more contributor license agreements. See the NOTICE file +# distributed with this work for additional information +# regarding copyright ownership. The ASF licenses this file +# to you under the Apache License, Version 2.0 (the +# "License"); you may not use this file except in compliance +# with the License. You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, +# software distributed under the License is distributed on an +# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +# KIND, either express or implied. See the License for the +# specific language governing permissions and limitations +# under the License. +""" Test Path for VM Life Cycle (VMLC) +""" +from nose.plugins.attrib import attr +from marvin.cloudstackTestCase import cloudstackTestCase +from marvin.lib.utils import (cleanup_resources, + validateList) +from marvin.lib.base import (Account, + ServiceOffering, + VirtualMachine, + Template, + User, + Network, + PublicIPAddress, + NATRule, + FireWallRule, + VPC, + VpcOffering, + SecurityGroup, + NetworkACL, + LoadBalancerRule) +from marvin.lib.common import (get_domain, + get_zone, + get_builtin_template_info, + findSuitableHostForMigration, + createEnabledNetworkOffering, + setSharedNetworkParams, + get_free_vlan) +from marvin.codes import (PASS, + ERROR_NO_HOST_FOR_MIGRATION, + ISOLATED_NETWORK, + SHARED_NETWORK, + VPC_NETWORK) +from marvin.sshClient import SshClient +from ddt import ddt, data + + +def VerifyChangeInServiceOffering(self, virtualmachine, serviceoffering): + """List the VM and verify that the new values for cpuspeed, + cpunumber and memory match with the new service offering""" + + vmlist = VirtualMachine.list(self.userapiclient, id=virtualmachine.id) + self.assertEqual( + validateList(vmlist)[0], + PASS, + "vm list validation failed") + vm = vmlist[0] + + # Verify the custom values + self.assertEqual(str(vm.cpunumber), str(serviceoffering.cpunumber), + "vm cpu number %s not matching with cpu number in\ + service offering %s" % + (vm.cpunumber, serviceoffering.cpunumber)) + + self.assertEqual(str(vm.cpuspeed), str(serviceoffering.cpuspeed), + "vm cpu speed %s not matching with cpu speed in\ + service offering %s" % + (vm.cpuspeed, serviceoffering.cpuspeed)) + + self.assertEqual(str(vm.memory), str(serviceoffering.memory), + "vm memory %s not matching with memory in\ + service offering %s" % + (vm.memory, serviceoffering.memory)) + return + + +def CreateNetwork(self, networktype): + """Create a network of given type (isolated/shared/isolated in VPC)""" + + network = None + + if networktype == ISOLATED_NETWORK: + try: + network = Network.create( + self.apiclient, self.testdata["isolated_network"], + networkofferingid=self.isolated_network_offering.id, + accountid=self.account.name, + domainid=self.account.domainid, + zoneid=self.zone.id) + self.cleanup.append(network) + except Exception as e: + self.fail("Isolated network creation failed because: %s" % e) + + elif networktype == SHARED_NETWORK: + physical_network, vlan = get_free_vlan(self.apiclient, self.zone.id) + + # create network using the shared network offering created + self.testdata["shared_network"]["acltype"] = "domain" + self.testdata["shared_network"]["vlan"] = vlan + self.testdata["shared_network"]["networkofferingid"] = \ + self.shared_network_offering.id + self.testdata["shared_network"]["physicalnetworkid"] = \ + physical_network.id + + self.testdata["shared_network"] = \ + setSharedNetworkParams(self.testdata["shared_network"]) + + try: + network = Network.create( + self.apiclient, + self.testdata["shared_network"], + networkofferingid=self.shared_network_offering.id, + zoneid=self.zone.id) + self.cleanup.append(network) + except Exception as e: + self.fail("Shared Network creation failed because: %s" % e) + + elif networktype == VPC_NETWORK: + self.testdata["vpc"]["cidr"] = "10.1.1.1/16" + self.debug("creating a VPC network in the account: %s" % + self.account.name) + vpc = VPC.create(self.apiclient, + self.testdata["vpc"], + vpcofferingid=self.vpc_off.id, + zoneid=self.zone.id, + account=self.account.name, + domainid=self.account.domainid + ) + self.vpcid = vpc.id + vpcs = VPC.list(self.apiclient, id=vpc.id) + self.assertEqual( + validateList(vpcs)[0], PASS, + "VPC list validation failed, vpc list is %s" % vpcs + ) + + network = Network.create( + self.apiclient, + self.testdata["isolated_network"], + networkofferingid=self.isolated_network_offering_vpc.id, + accountid=self.account.name, + domainid=self.account.domainid, + zoneid=self.zone.id, + vpcid=vpc.id, + gateway="10.1.1.1", + netmask="255.255.255.0") + self.cleanup.append(network) + self.cleanup.append(vpc) + return network + + +def CreateEnabledNetworkOffering(apiclient, networkServices): + """Create network offering of given services and enable it""" + + result = createEnabledNetworkOffering(apiclient, networkServices) + assert result[0] == PASS,\ + "Network offering creation/enabling failed due to %s" % result[2] + return result[1] + + +@ddt +class TestPathVMLC(cloudstackTestCase): + + @classmethod + def setUpClass(cls): + testClient = super(TestPathVMLC, cls).getClsTestClient() + cls.apiclient = testClient.getApiClient() + cls.testdata = testClient.getParsedTestDataConfig() + + # Get Zone, Domain and templates + cls.domain = get_domain(cls.apiclient) + cls.zone = get_zone(cls.apiclient) + cls._cleanup = [] + + try: + # Create an account + cls.account = Account.create( + cls.apiclient, + cls.testdata["account"], + domainid=cls.domain.id + ) + cls._cleanup.append(cls.account) + + # If local storage is enabled, alter the offerings to use + # localstorage + if cls.zone.localstorageenable: + cls.testdata["service_offering"]["storagetype"] = 'local' + + # Create 3 service offerings with different values for + # for cpunumber, cpuspeed, and memory + + cls.testdata["service_offering"]["cpunumber"] = "1" + cls.testdata["service_offering"]["cpuspeed"] = "128" + cls.testdata["service_offering"]["memory"] = "256" + + cls.service_offering_1 = ServiceOffering.create( + cls.apiclient, + cls.testdata["service_offering"] + ) + cls._cleanup.append(cls.service_offering_1) + + cls.testdata["service_offering"]["cpunumber"] = "2" + cls.testdata["service_offering"]["cpuspeed"] = "256" + cls.testdata["service_offering"]["memory"] = "512" + + cls.service_offering_2 = ServiceOffering.create( + cls.apiclient, + cls.testdata["service_offering"] + ) + cls._cleanup.append(cls.service_offering_2) + + # Create isolated network offering + cls.isolated_network_offering = CreateEnabledNetworkOffering( + cls.apiclient, + cls.testdata["isolated_network_offering"] + ) + cls._cleanup.append(cls.isolated_network_offering) + + # Create shared network offering + cls.testdata["shared_network_offering_all_services"][ + "specifyVlan"] = "True" + cls.testdata["shared_network_offering_all_services"][ + "specifyIpRanges"] = "True" + + cls.shared_network_offering = CreateEnabledNetworkOffering( + cls.apiclient, + cls.testdata["shared_network_offering_all_services"] + ) + cls._cleanup.append(cls.shared_network_offering) + + cls.isolated_network_offering_vpc = CreateEnabledNetworkOffering( + cls.apiclient, + cls.testdata["nw_offering_isolated_vpc"] + ) + cls._cleanup.append(cls.isolated_network_offering_vpc) + cls.vpc_off = VpcOffering.create(cls.apiclient, + cls.testdata["vpc_offering"] + ) + cls.vpc_off.update(cls.apiclient, state='Enabled') + cls._cleanup.append(cls.vpc_off) + + # This variable will store the id of vpc network whenever + # test case creates it + # If not created, it will be None and will not be used + cls.vpcid = None + + # Create user api client of the account + cls.userapiclient = testClient.getUserApiClient( + UserName=cls.account.name, + DomainName=cls.account.domain + ) + + # Register a private template in the account + builtin_info = get_builtin_template_info(cls.apiclient, + cls.zone.id) + + cls.testdata["privatetemplate"]["url"] = builtin_info[0] + cls.testdata["privatetemplate"]["hypervisor"] = builtin_info[1] + cls.testdata["privatetemplate"]["format"] = builtin_info[2] + + # Register new template + cls.template = Template.register( + cls.userapiclient, + cls.testdata["privatetemplate"], + zoneid=cls.zone.id, + account=cls.account.name, + domainid=cls.account.domainid + ) + + # Wait for template to download + cls.template.download(cls.apiclient) + + # Check that we are able to login to the created account + respose = User.login( + cls.apiclient, + username=cls.account.name, + password=cls.testdata["account"]["password"] + ) + + assert respose.sessionkey is not None,\ + "Login to the CloudStack should be successful\ + response shall have non Null key" + + except Exception as e: + cls.tearDownClass() + raise e + return + + @classmethod + def tearDownClass(cls): + try: + cleanup_resources(cls.apiclient, cls._cleanup) + except Exception as e: + raise Exception("Warning: Exception during cleanup : %s" % e) + + def setUp(self): + self.apiclient = self.testClient.getApiClient() + self.cleanup = [] + + def tearDown(self): + # Cleanup VM before proceeding the cleanup as networks will be + # cleaned up properly, continue if VM deletion fails, + # because in that case VM is already deleted from the test case + try: + self.virtual_machine.delete(self.apiclient, expunge=True) + except Exception: + self.debug("Exception while destroying VM") + try: + cleanup_resources(self.apiclient, self.cleanup) + except Exception as e: + raise Exception("Warning: Exception during cleanup : %s" % e) + return + + @attr(tags=["advanced"], required_hardware="False") + @data(ISOLATED_NETWORK, VPC_NETWORK) + def test_01_positive_tests_vm_operations_advanced_zone(self, value): + """ Positive tests for VMLC test path - Advanced Zone + + # 1. List created service offering in setUpClass by name + # 2. List registered template with name + # 3. Create VM in account + # 4. Enable networking for reaching to VM thorugh SSH + # 5. Check VM accessibility through SSH + # 6. Stop vm and verify vm is not accessible + # 7. Start vm and verify vm is not accessible + # 8. Reboot vm and verify vm is not accessible + # 9. Destroy and recover VM + # 10. Change service offering of VM to a different service offering + # 11. Verify that the cpuspeed, cpunumber and memory of VM matches to + # as specified in new service offering + # 12. Start VM and verify VM accessibility + # 13. Find suitable host for VM to migrate and migrate the VM + # 14. Verify VM accessibility on new host + """ + + # List created service offering in setUpClass by name + listServiceOfferings = ServiceOffering.list( + self.apiclient, + name=self.service_offering_1.name, + listall=True + ) + self.assertEqual(validateList(listServiceOfferings)[0], PASS, + "List validation failed for service offerings list") + + self.assertEqual(listServiceOfferings[0].name, + self.service_offering_1.name, + "Names of created service offering\ + and listed service offering not matching") + + # List registered template with name + listTemplates = Template.list( + self.userapiclient, + templatefilter="self", + name=self.template.name, + listall=True, + zone=self.zone.id) + self.assertEqual(validateList(listTemplates)[0], PASS, + "List validation failed for templates list") + + self.assertEqual(listTemplates[0].name, self.template.name, + "Names of created template and listed template\ + not matching") + + network = CreateNetwork(self, value) + + # Create VM in account + self.virtual_machine = VirtualMachine.create( + self.userapiclient, + self.testdata["small"], + templateid=self.template.id, + accountid=self.account.name, + domainid=self.account.domainid, + serviceofferingid=self.service_offering_1.id, + networkids=[network.id, ], + zoneid=self.zone.id + ) + + publicip = PublicIPAddress.create( + self.userapiclient, accountid=self.account.name, + zoneid=self.zone.id, domainid=self.account.domainid, + networkid=network.id, vpcid=self.vpcid + ) + + if value == VPC_NETWORK: + lb_rule = LoadBalancerRule.create( + self.apiclient, + self.testdata["vpclbrule"], + ipaddressid=publicip.ipaddress.id, + accountid=self.account.name, + domainid=self.account.domainid, + networkid=network.id, + vpcid=self.vpcid + ) + lb_rule.assign(self.apiclient, [self.virtual_machine]) + + # Opening up the ports in VPC + NetworkACL.create( + self.apiclient, + networkid=network.id, + services=self.testdata["natrule"], + traffictype='Ingress' + ) + elif value == ISOLATED_NETWORK: + FireWallRule.create( + self.userapiclient, + ipaddressid=publicip.ipaddress.id, + protocol='TCP', + cidrlist=[self.testdata["fwrule"]["cidr"]], + startport=self.testdata["fwrule"]["startport"], + endport=self.testdata["fwrule"]["endport"] + ) + + NATRule.create( + self.userapiclient, + self.virtual_machine, + self.testdata["natrule"], + ipaddressid=publicip.ipaddress.id, + networkid=network.id + ) + + # Check VM accessibility + try: + SshClient(host=publicip.ipaddress.ipaddress, + port=22, + user=self.virtual_machine.username, + passwd=self.virtual_machine.password) + except Exception as e: + self.fail("Exception while SSHing to VM: %s" % e) + + # Stop VM and verify VM is not accessible + self.virtual_machine.stop(self.userapiclient) + + with self.assertRaises(Exception): + SshClient(host=publicip.ipaddress.ipaddress, + port=22, + user=self.virtual_machine.username, + passwd=self.virtual_machine.password, + retries=0) + + # Start VM and verify that it is accessible + self.virtual_machine.start(self.userapiclient) + + try: + SshClient(host=publicip.ipaddress.ipaddress, + port=22, + user=self.virtual_machine.username, + passwd=self.virtual_machine.password) + except Exception as e: + self.fail("Exception while SSHing to VM: %s" % e) + + # Reboot VM and verify that it is accessible + self.virtual_machine.reboot(self.userapiclient) + + try: + SshClient(host=publicip.ipaddress.ipaddress, + port=22, + user=self.virtual_machine.username, + passwd=self.virtual_machine.password) + except Exception as e: + self.fail("Exception while SSHing to VM: %s" % e) + + # Destroy and recover VM + self.virtual_machine.delete(self.apiclient, expunge=False) + self.virtual_machine.recover(self.apiclient) + + # Change service offering of VM and verify that it is changed + self.virtual_machine.change_service_offering( + self.userapiclient, + serviceOfferingId=self.service_offering_2.id + ) + + VerifyChangeInServiceOffering(self, + self.virtual_machine, + self.service_offering_2) + + # Start VM and verify that it is accessible + self.virtual_machine.start(self.userapiclient) + + try: + SshClient(host=publicip.ipaddress.ipaddress, + port=22, + user=self.virtual_machine.username, + passwd=self.virtual_machine.password) + except Exception as e: + self.fail("Exception while SSHing to VM: %s" % e) + + # Find suitable host for VM to migrate and migrate the VM + # Verify that it is accessible on the new host + host = findSuitableHostForMigration(self.apiclient, + self.virtual_machine.id) + if host is None: + self.fail(ERROR_NO_HOST_FOR_MIGRATION) + self.virtual_machine.migrate(self.apiclient, host.id) + + try: + SshClient(host=publicip.ipaddress.ipaddress, + port=22, + user=self.virtual_machine.username, + passwd=self.virtual_machine.password) + except Exception as e: + self.fail("Exception while SSHing to VM: %s" % e) + return + + @attr(tags=["advanced"], required_hardware="False") + def test_01_positive_tests_vm_deploy_shared_nw(self): + """ Positive tests for VMLC test path - Advanced Zone in Shared Network + + # 1. List created service offering in setUpClass by name + # 2. List registered template with name + # 3. Create VM in account + """ + + # List created service offering in setUpClass by name + listServiceOfferings = ServiceOffering.list( + self.apiclient, + name=self.service_offering_1.name, + listall=True + ) + self.assertEqual(validateList(listServiceOfferings)[0], PASS, + "List validation failed for service offerings list") + + self.assertEqual(listServiceOfferings[0].name, + self.service_offering_1.name, + "Names of created service offering\ + and listed service offering not matching") + + # List registered template with name + listTemplates = Template.list( + self.userapiclient, + templatefilter="self", + name=self.template.name, + listall=True, + zone=self.zone.id) + self.assertEqual(validateList(listTemplates)[0], PASS, + "List validation failed for templates list") + + self.assertEqual(listTemplates[0].name, self.template.name, + "Names of created template and listed template\ + not matching") + + network = CreateNetwork(self, SHARED_NETWORK) + + # Create VM in account + self.virtual_machine = VirtualMachine.create( + self.userapiclient, + self.testdata["small"], + templateid=self.template.id, + accountid=self.account.name, + domainid=self.account.domainid, + serviceofferingid=self.service_offering_1.id, + networkids=[network.id, ], + zoneid=self.zone.id + ) + return + + @attr(tags=["basic"], required_hardware="False") + def test_01_positive_tests_vm_operations_basic_zone(self): + """ Positive tests for VMLC test path - Basic Zone + + # 1. List created service offering in setUpClass by name + # 2. List registered template with name + # 3. Create VM in account + # 4. Enable networking for reaching to VM thorugh SSH + # 5. Check VM accessibility through SSH + # 6. Stop vm and verify vm is not accessible + # 7. Start vm and verify vm is not accessible + # 8. Reboot vm and verify vm is not accessible + # 9. Destroy and recover VM + # 10. Change service offering of VM to a different service offering + # 11. Verify that the cpuspeed, cpunumber and memory of VM matches to + # as specified in new service offering + # 12. Start VM and verify VM accessibility + # 13. Find suitable host for VM to migrate and migrate the VM + # 14. Verify VM accessibility on new host + """ + + # List created service offering in setUpClass by name + listServiceOfferings = ServiceOffering.list( + self.apiclient, + name=self.service_offering_1.name, + listall=True + ) + self.assertEqual(validateList(listServiceOfferings)[0], PASS, + "List validation failed for service offerings list") + self.assertEqual(listServiceOfferings[0].name, + self.service_offering_1.name, + "Names of created service offering and\ + listed service offering not matching") + + # List registered template with name + listTemplates = Template.list(self.userapiclient, + templatefilter="self", + name=self.template.name, + listall=True, + zone=self.zone.id + ) + + self.assertEqual(validateList(listTemplates)[0], PASS, + "List validation failed for\ + templates list") + + self.assertEqual(listTemplates[0].name, self.template.name, + "Names of created template and listed template\ + not matching") + + # Enable networking for reaching to VM thorugh SSH + security_group = SecurityGroup.create( + self.apiclient, + self.testdata["security_group"], + account=self.account.name, + domainid=self.account.domainid + ) + self.cleanup.append(security_group) + # Authorize Security group to SSH to VM + security_group.authorize( + self.apiclient, + self.testdata["ingress_rule"], + account=self.account.name, + domainid=self.account.domainid + ) + + # Create VM in account + self.virtual_machine = VirtualMachine.create( + self.userapiclient, + self.testdata["small"], + templateid=self.template.id, + accountid=self.account.name, + domainid=self.account.domainid, + serviceofferingid=self.service_offering_1.id, + zoneid=self.zone.id, + securitygroupids=[security_group.id, ] + ) + + # Check VM accessibility + try: + SshClient(host=self.virtual_machine.ssh_ip, + port=22, + user=self.virtual_machine.username, + passwd=self.virtual_machine.password) + except Exception as e: + self.fail("Exception while SSHing to VM: %s" % e) + + # Stop VM and verify VM is not accessible + self.virtual_machine.stop(self.userapiclient) + + with self.assertRaises(Exception): + SshClient(host=self.virtual_machine.ssh_ip, + port=22, + user=self.virtual_machine.username, + passwd=self.virtual_machine.password, + retries=0 + ) + + # Start VM and verify that it is accessible + self.virtual_machine.start(self.userapiclient) + + try: + SshClient(host=self.virtual_machine.ssh_ip, + port=22, + user=self.virtual_machine.username, + passwd=self.virtual_machine.password) + except Exception as e: + self.fail("Exception while SSHing to VM: %s" % e) + + # Reboot VM and verify that it is accessible + self.virtual_machine.reboot(self.userapiclient) + + try: + SshClient(host=self.virtual_machine.ssh_ip, + port=22, + user=self.virtual_machine.username, + passwd=self.virtual_machine.password) + except Exception as e: + self.fail("Exception while SSHing to VM: %s" % e) + + # Destroy and recover VM + self.virtual_machine.delete(self.userapiclient, expunge=False) + self.virtual_machine.recover(self.apiclient) + + # Change service offering of VM and verify that it is changed + self.virtual_machine.change_service_offering( + self.userapiclient, + serviceOfferingId=self.service_offering_2.id + ) + + VerifyChangeInServiceOffering(self, + self.virtual_machine, + self.service_offering_2) + + # Start VM and verify that it is accessible + self.virtual_machine.start(self.userapiclient) + + try: + SshClient(host=self.virtual_machine.ssh_ip, + port=22, + user=self.virtual_machine.username, + passwd=self.virtual_machine.password) + except Exception as e: + self.fail("Exception while SSHing to VM: %s" % e) + + # Find suitable host for VM to migrate and migrate the VM + # Verify that it is accessible on the new host + host = findSuitableHostForMigration(self.apiclient, + self.virtual_machine.id) + if host is None: + self.fail(ERROR_NO_HOST_FOR_MIGRATION) + self.virtual_machine.migrate(self.apiclient, host.id) + + try: + SshClient(host=self.virtual_machine.ssh_ip, + port=22, + user=self.virtual_machine.username, + passwd=self.virtual_machine.password) + except Exception as e: + self.fail("Exception while SSHing to VM: %s" % e) + return + + @attr(tags=["advanced"], required_hardware="False") + @data(ISOLATED_NETWORK, SHARED_NETWORK, VPC_NETWORK) + def test_02_negative_tests_destroy_VM_operations_advanced_zone( + self, + value): + """ Negative tests for VMLC test path - destroy VM + + # 1. Deploy a VM in the account + # 2. Stop VM and try to reboot it, operation should fail + # 3. Destroy VM and try to start the VM in destroyed state, + # operation should fail + # 4. Try to stop the VM in destroyed state, operation should fail + # 5. Try to reboot the VM in destroyed state, operation should fail + """ + network = CreateNetwork(self, value) + networkid = network.id + + # Deploy a VM + self.virtual_machine = VirtualMachine.create( + self.userapiclient, + self.testdata["small"], + templateid=self.template.id, + accountid=self.account.name, + domainid=self.account.domainid, + serviceofferingid=self.service_offering_1.id, + networkids=[networkid, ], + zoneid=self.zone.id + ) + # Stop the VM and try to reboot it, it should fail + self.virtual_machine.stop(self.userapiclient) + with self.assertRaises(Exception): + self.virtual_machine.reboot(self.userapiclient) + + # Destroy the VM and try to reboot it, it should fail + self.virtual_machine.delete(self.userapiclient, expunge=False) + + # try to start VM in destroyed state, it should fail + with self.assertRaises(Exception): + self.virtual_machine.start(self.userapiclient) + + # try to stop VM in destroyed state, it should fail + with self.assertRaises(Exception): + self.virtual_machine.stop(self.userapiclient) + + # try to reboot VM in destroyed state, it should fail + with self.assertRaises(Exception): + self.virtual_machine.reboot(self.userapiclient) + + return + + @attr(tags=["basic"], required_hardware="False") + def test_02_negative_tests_destroy_VM_operations_basic_zone(self): + """ Negative tests for VMLC test path - destroy VM + + # 1. Deploy a VM in the account + # 2. Stop VM and try to reboot it, operation should fail + # 3. Destroy VM and try to start the VM in destroyed state, + # operation should fail + # 4. Try to stop the VM in destroyed state, operation should fail + # 5. Try to reboot the VM in destroyed state, operation should fail + """ + # Deploy a VM + self.virtual_machine = VirtualMachine.create( + self.userapiclient, + self.testdata["small"], + templateid=self.template.id, + accountid=self.account.name, + domainid=self.account.domainid, + serviceofferingid=self.service_offering_1.id, + zoneid=self.zone.id + ) + # Stop the VM and try to reboot it, it should fail + self.virtual_machine.stop(self.userapiclient) + with self.assertRaises(Exception): + self.virtual_machine.reboot(self.userapiclient) + + # Destroy the VM and try to reboot it, it should fail + self.virtual_machine.delete(self.userapiclient, expunge=False) + + # try to start VM in destroyed state, it should fail + with self.assertRaises(Exception): + self.virtual_machine.start(self.userapiclient) + + # try to stop VM in destroyed state, it should fail + with self.assertRaises(Exception): + self.virtual_machine.stop(self.userapiclient) + + # try to reboot VM in destroyed state, it should fail + with self.assertRaises(Exception): + self.virtual_machine.reboot(self.userapiclient) + + return + + @attr(tags=["advanced"], required_hardware="False") + @data(ISOLATED_NETWORK, SHARED_NETWORK, VPC_NETWORK) + def test_03_negative_tests_expunge_VM_operations_advanced_zone( + self, + value): + """ Negative tests for VMLC test path - expunge VM + + # 1. Deploy a VM in the account + # 2. Destroy the VM with expunge=True + # 3. Try to start the VM in expunging state, operation should fail + # 4. Try to stop the VM in expunging state, operation should fail + # 5. Try to reboot the VM in expunging state, operation should fail + # 6. Try to destroy the VM in expunging state, operation should fail + # 7. Try to recover the VM in expunging state, operation should fail + """ + network = CreateNetwork(self, value) + networkid = network.id + + # Deploy a VM in the account + self.virtual_machine = VirtualMachine.create( + self.userapiclient, + self.testdata["small"], + templateid=self.template.id, + accountid=self.account.name, + domainid=self.account.domainid, + serviceofferingid=self.service_offering_1.id, + networkids=[networkid, ], + zoneid=self.zone.id + ) + + # Destroy a VM with expunge flag True + self.virtual_machine.delete(self.apiclient, expunge=True) + + # try to start VM in expunging state, it should fail + with self.assertRaises(Exception): + self.virtual_machine.start(self.userapiclient) + + # try to stop VM in expunging state, it should fail + with self.assertRaises(Exception): + self.virtual_machine.stop(self.userapiclient) + + # try to reboot VM in expunging state, it should fail + with self.assertRaises(Exception): + self.virtual_machine.reboot(self.userapiclient) + + # try to destroy VM in expunging state, it should fail + with self.assertRaises(Exception): + self.virtual_machine.delete(self.userapiclient, expunge=False) + + # try to recover VM in expunging state, it should fail + with self.assertRaises(Exception): + self.virtual_machine.recover(self.apiclient) + + return + + @attr(tags=["basic"], required_hardware="False") + def test_03_negative_tests_expunge_VM_operations_basic_zone(self): + """ Negative tests for VMLC test path - expunge VM + + # 1. Deploy a VM in the account + # 2. Destroy the VM with expunge=True + # 3. Try to start the VM in expunging state, operation should fail + # 4. Try to stop the VM in expunging state, operation should fail + # 5. Try to reboot the VM in expunging state, operation should fail + # 6. Try to destroy the VM in expunging state, operation should fail + # 7. Try to recover the VM in expunging state, operation should fail + """ + # Deploy a VM in the account + self.virtual_machine = VirtualMachine.create( + self.userapiclient, + self.testdata["small"], + templateid=self.template.id, + accountid=self.account.name, + domainid=self.account.domainid, + serviceofferingid=self.service_offering_1.id, + zoneid=self.zone.id + ) + + # Destroy a VM with expunge flag True + self.virtual_machine.delete(self.apiclient, expunge=True) + + # try to start VM in expunging state, it should fail + with self.assertRaises(Exception): + self.virtual_machine.start(self.userapiclient) + + # try to stop VM in expunging state, it should fail + with self.assertRaises(Exception): + self.virtual_machine.stop(self.userapiclient) + + # try to reboot VM in expunging state, it should fail + with self.assertRaises(Exception): + self.virtual_machine.reboot(self.userapiclient) + + # try to destroy VM in expunging state, it should fail + with self.assertRaises(Exception): + self.virtual_machine.delete(self.userapiclient, expunge=False) + + # try to recover VM in expunging state, it should fail + with self.assertRaises(Exception): + self.virtual_machine.recover(self.apiclient) + + return diff --git a/tools/marvin/marvin/config/test_data.py b/tools/marvin/marvin/config/test_data.py index 6b02476f5ab..88dccd749ba 100644 --- a/tools/marvin/marvin/config/test_data.py +++ b/tools/marvin/marvin/config/test_data.py @@ -549,7 +549,7 @@ test_data = { "name": "Isolated Network for VPC", "displaytext": "Isolated Network for VPC", "guestiptype": "Isolated", - "supportedservices": "Dhcp,Dns,SourceNat,PortForwarding,Vpn,UserData,StaticNat,NetworkACL", + "supportedservices": "Dhcp,Dns,SourceNat,PortForwarding,Vpn,UserData,StaticNat,NetworkACL,Lb", "traffictype": "GUEST", "availability": "Optional", "ispersistent": "False", @@ -562,7 +562,8 @@ test_data = { "Vpn": "VpcVirtualRouter", "UserData": "VpcVirtualRouter", "StaticNat": "VpcVirtualRouter", - "NetworkACL": "VpcVirtualRouter" + "NetworkACL": "VpcVirtualRouter", + "Lb": "VpcVirtualRouter" } }, "nw_off_persistent_VPCVR_LB": { @@ -696,6 +697,13 @@ test_data = { "publicport": 2222, "protocol": 'TCP' }, + "vpclbrule": { + "name": "SSH", + "alg": "roundrobin", + "privateport": 22, + "publicport": 22, + "protocol": 'TCP' + }, "icmprule": { "icmptype":-1, "icmpcode":-1, @@ -750,6 +758,16 @@ test_data = { "mode": "HTTP_DOWNLOAD", "templatefilter": "self" }, + "privatetemplate": { + "displaytext": "Public Template", + "name": "Public template", + "ostype": "CentOS 5.6 (64-bit)", + "isfeatured": True, + "ispublic": False, + "isextractable": True, + "mode": "HTTP_DOWNLOAD", + "templatefilter": "self" + }, "templatefilter": 'self', "templates": { "displaytext": 'Template', diff --git a/tools/marvin/marvin/lib/base.py b/tools/marvin/marvin/lib/base.py index 528fc7890ac..5bd89318523 100755 --- a/tools/marvin/marvin/lib/base.py +++ b/tools/marvin/marvin/lib/base.py @@ -528,12 +528,20 @@ class VirtualMachine: cmd.id = self.id apiclient.rebootVirtualMachine(cmd) + response = self.getState(apiclient, VirtualMachine.RUNNING) + if response[0] == FAIL: + raise Exception(response[1]) + def recover(self, apiclient): """Recover the instance""" cmd = recoverVirtualMachine.recoverVirtualMachineCmd() cmd.id = self.id apiclient.recoverVirtualMachine(cmd) + response = self.getState(apiclient, VirtualMachine.STOPPED) + if response[0] == FAIL: + raise Exception(response[1]) + def restore(self, apiclient, templateid=None): """Restore the instance""" cmd = restoreVirtualMachine.restoreVirtualMachineCmd() From f22b0cf76ace3f3de675f7931510ae10bbaada1e Mon Sep 17 00:00:00 2001 From: Gaurav Aradhye Date: Wed, 24 Sep 2014 14:04:48 +0530 Subject: [PATCH 043/129] CLOUDSTACK-7603: Fixed test_escalations_network.py - test suite should use its own vpc offering Signed-off-by: SrikanteswaraRao Talluri (cherry picked from commit e5efa702bbd57a1855d68ea3df5c0aee3db85dcc) --- .../component/test_escalations_networks.py | 3035 +++++++++-------- 1 file changed, 1584 insertions(+), 1451 deletions(-) diff --git a/test/integration/component/test_escalations_networks.py b/test/integration/component/test_escalations_networks.py index 5fad43aec9f..c0ab709a5e8 100644 --- a/test/integration/component/test_escalations_networks.py +++ b/test/integration/component/test_escalations_networks.py @@ -16,17 +16,31 @@ # under the License. # Import Local Modules -from marvin.cloudstackTestCase import * -from marvin.cloudstackException import * -from marvin.cloudstackAPI import * -from marvin.sshClient import SshClient -from marvin.lib.utils import * -from marvin.lib.base import * -from marvin.lib.common import * -from marvin.lib.utils import checkVolumeSize -from marvin.codes import SUCCESS +from marvin.cloudstackTestCase import cloudstackTestCase +from marvin.lib.utils import (cleanup_resources) +from marvin.lib.base import (Account, + VPC, + Network, + NetworkOffering, + ServiceOffering, + Vpn, + Configurations, + VpcOffering, + PublicIPAddress, + PrivateGateway, + NetworkACL, + VpnCustomerGateway, + VirtualMachine, + EgressFireWallRule, + NetworkACLList, + Zone) +from marvin.lib.common import (get_zone, + get_template, + get_domain) +from marvin.lib.utils import (validateList) +from marvin.codes import PASS, FAIL from nose.plugins.attrib import attr -from time import sleep + class TestNetworks_1(cloudstackTestCase): @@ -39,51 +53,59 @@ class TestNetworks_1(cloudstackTestCase): cls.test_data = cls.testClient.getParsedTestDataConfig() # Get Domain, Zone, Template cls.domain = get_domain(cls.api_client) - cls.zone = get_zone(cls.api_client, cls.testClient.getZoneForTests()) + cls.zone = get_zone( + cls.api_client, + cls.testClient.getZoneForTests()) cls.template = get_template( - cls.api_client, - cls.zone.id, - cls.test_data["ostype"] - ) + cls.api_client, + cls.zone.id, + cls.test_data["ostype"] + ) if cls.zone.localstorageenabled: cls.storagetype = 'local' - cls.test_data["service_offerings"]["tiny"]["storagetype"] = 'local' + cls.test_data["service_offerings"][ + "tiny"]["storagetype"] = 'local' else: cls.storagetype = 'shared' - cls.test_data["service_offerings"]["tiny"]["storagetype"] = 'shared' + cls.test_data["service_offerings"][ + "tiny"]["storagetype"] = 'shared' cls.test_data['mode'] = cls.zone.networktype - cls.test_data["virtual_machine"]["hypervisor"] = cls.testClient.getHypervisorInfo() + cls.test_data["virtual_machine"][ + "hypervisor"] = cls.testClient.getHypervisorInfo() cls.test_data["virtual_machine"]["zoneid"] = cls.zone.id cls.test_data["virtual_machine"]["template"] = cls.template.id cls.test_data["network_without_acl"]["zoneid"] = cls.zone.id # Create Network offering cls.network_offering = NetworkOffering.create( - cls.api_client, - cls.test_data["network_offering_vlan"], - ) + cls.api_client, + cls.test_data["network_offering_vlan"], + ) # Enable Network offering cls.network_offering.update(cls.api_client, state='Enabled') - cls.test_data["network_without_acl"]["networkoffering"] = cls.network_offering.id + cls.test_data["network_without_acl"][ + "networkoffering"] = cls.network_offering.id cls.service_offering = ServiceOffering.create( - cls.api_client, - cls.test_data["service_offerings"]["tiny"] - ) + cls.api_client, + cls.test_data["service_offerings"]["tiny"] + ) # Creating Disk offering, Service Offering and Account cls.account = Account.create( - cls.api_client, - cls.test_data["account"], - domainid=cls.domain.id - ) + cls.api_client, + cls.test_data["account"], + domainid=cls.domain.id + ) # Getting authentication for user in newly created Account cls.user = cls.account.user[0] - cls.userapiclient = cls.testClient.getUserApiClient(cls.user.username, cls.domain.name) + cls.userapiclient = cls.testClient.getUserApiClient( + cls.user.username, + cls.domain.name) cls.account_network = Network.create( - cls.userapiclient, - cls.test_data["network_without_acl"], - cls.account.name, - cls.account.domainid - ) + cls.userapiclient, + cls.test_data["network_without_acl"], + cls.account.name, + cls.account.domainid + ) cls._cleanup.append(cls.account_network) cls._cleanup.append(cls.account) cls._cleanup.append(cls.service_offering) @@ -114,10 +136,12 @@ class TestNetworks_1(cloudstackTestCase): """ @summary: Function to verify expected and actual values Step1: Initializing return flag to True - Step2: Verifying length of expected and actual dictionaries is matching. + Step2: Verifying length of expected and actual dictionaries is + matching. If not matching returning false Step3: Listing all the keys from expected dictionary - Step4: Looping through each key from step2 and verifying expected and actual dictionaries have same value + Step4: Looping through each key from step2 and verifying expected + and actual dictionaries have same value If not making return flag to False Step5: returning the return flag after all the values are verified """ @@ -134,10 +158,10 @@ class TestNetworks_1(cloudstackTestCase): return_flag = return_flag and True else: return_flag = return_flag and False - self.debug("expected Value: %s, is not matching with actual value: %s" % ( - exp_val, - act_val - )) + self.debug( + "expected Value: %s, is not matching with actual value: %s" + % + (exp_val, act_val)) return return_flag @attr(tags=["advanced"], required_hardware="true") @@ -147,117 +171,125 @@ class TestNetworks_1(cloudstackTestCase): @Steps Step1 : Listing the networks for a user Step2 : Verifying listed networks for account created at class level - Step3 : If number of networks is less than (pagesize 1), then creating them + Step3 : If number of networks is less than (pagesize 1), then + creating them Step4 : Listing the networks again - Step5 : Verifying for the length of the networks that it is (pagesize 1) + Step5 : Verifying for the length of the networks that it is + (pagesize 1) Step6 : Listing and verifying all the networks in page1 Step7 : Listing and verifying all the networks in page2 - Step8 : Verifying that on page 2 only 1 network is present and the network on page 2 is not present in page1 + Step8 : Verifying that on page 2 only 1 network is present and + the network on page 2 is not present in page1 """ list_zones = Zone.list( - self.userapiclient, - id=self.zone.id - ) + self.userapiclient, + id=self.zone.id + ) status = validateList(list_zones) self.assertEquals(PASS, status[0], "No Zones found for a given id") self.test_data["network_without_acl"]["zoneid"] = list_zones[0].id # Listing the networks for a user list_networks_before = Network.list( - self.userapiclient, - listall=self.test_data["listall"], - type="Isolated" - ) + self.userapiclient, + listall=self.test_data["listall"], + type="Isolated" + ) # Verifying listed networks for account created at class level if list_networks_before is None: self.assertEqual( - len(list_networks_before), - 0, - "Network create failed at class level" - ) - # If number of networks is less than (pagesize 1), then creating network + len(list_networks_before), + 0, + "Network create failed at class level" + ) + # If number of networks is less than (pagesize 1), then creating + # network elif len(list_networks_before) == 1: for i in range(0, (self.test_data["pagesize"])): network_created = Network.create( - self.userapiclient, - self.test_data["network_without_acl"], - ) + self.userapiclient, + self.test_data["network_without_acl"], + ) self.cleanup.append(network_created) self.assertIsNotNone( - network_created, - "Network is not created" - ) + network_created, + "Network is not created" + ) # Creating expected and actual values dictionaries expected_dict = { - "id":list_zones[0].id, - "name":self.test_data["network_without_acl"]["name"], - } + "id": list_zones[0].id, + "name": self.test_data["network_without_acl"]["name"], + } actual_dict = { - "id":network_created.zoneid, - "name":network_created.name, - } + "id": network_created.zoneid, + "name": network_created.name, + } network_status = self.__verify_values( - expected_dict, - actual_dict - ) + expected_dict, + actual_dict + ) self.assertEqual( - True, - network_status, - "Listed network details are not as expected" - ) + True, + network_status, + "Listed network details are not as expected" + ) else: self.assertEqual( - len(list_networks_before), - 1, - "more than 1 network created at class level" - ) + len(list_networks_before), + 1, + "more than 1 network created at class level" + ) # Listing the networks - list_networks_after = Network.list(self.userapiclient, listall=self.test_data["listall"], type="Isolated") + list_networks_after = Network.list( + self.userapiclient, + listall=self.test_data["listall"], + type="Isolated") status = validateList(list_networks_after) self.assertEquals(PASS, status[0], "No networks found using list call") # Asserting for the length of the networks self.assertEqual( - len(list_networks_after), - (self.test_data["pagesize"] + 1), - "Number of networks created is not matching expected" - ) + len(list_networks_after), + (self.test_data["pagesize"] + 1), + "Number of networks created is not matching expected" + ) # Listing all the networks in page1 list_networks_page1 = Network.list( - self.userapiclient, - listall=self.test_data["listall"], - page=1, - pagesize=self.test_data["pagesize"], - type="Isolated" - ) + self.userapiclient, + listall=self.test_data["listall"], + page=1, + pagesize=self.test_data["pagesize"], + type="Isolated" + ) status = validateList(list_networks_page1) self.assertEquals(PASS, status[0], "No networks found at page 1") self.assertEqual( - len(list_networks_page1), - self.test_data["pagesize"], - "List network response is not matching with the page size length for page 1" - ) + len(list_networks_page1), + self.test_data["pagesize"], + "List network response is not matching with the page\ + size length for page 1") # Listing all the networks in page2 list_networks_page2 = Network.list( - self.userapiclient, - listall=self.test_data["listall"], - page=2, - pagesize=self.test_data["pagesize"], - type="Isolated" - ) + self.userapiclient, + listall=self.test_data["listall"], + page=2, + pagesize=self.test_data["pagesize"], + type="Isolated" + ) status = validateList(list_networks_page2) self.assertEquals(PASS, status[0], "No networks found at page 2") self.assertEqual( - len(list_networks_page2), - 1, - "List network response is not matching with the page size length for page 2" - ) + len(list_networks_page2), + 1, + "List network response is not matching with the page size\ + length for page 2" + ) network_page2 = list_networks_page2[0] for i in range(0, len(list_networks_page1)): network_page1 = list_networks_page1[i] self.assertNotEquals( - network_page2.id, - network_page1.id, - "Network listed in page 2 is also listed in page 1" - ) + network_page2.id, + network_page1.id, + "Network listed in page 2 is also listed in page 1" + ) return @attr(tags=["advanced"], required_hardware="true") @@ -272,24 +304,28 @@ class TestNetworks_1(cloudstackTestCase): """ # Create Network offering specifically sourcenat disabled network_offering_without_sourcenat = NetworkOffering.create( - self.apiClient, - self.test_data["network_offering_without_sourcenat"], - ) + self.apiClient, + self.test_data["network_offering_without_sourcenat"], + ) if network_offering_without_sourcenat is None: self.fail("Creation of network offering without sourcenat failed") self.cleanup.append(network_offering_without_sourcenat) # Enable network offering - network_offering_without_sourcenat.update(self.apiClient, state='Enabled') - self.test_data["network_without_acl"]["networkoffering"] = network_offering_without_sourcenat.id + network_offering_without_sourcenat.update( + self.apiClient, + state='Enabled') + self.test_data["network_without_acl"][ + "networkoffering"] = network_offering_without_sourcenat.id # Network create call raise an exception with self.assertRaises(Exception): network_created = Network.create( - self.userapiclient, - self.test_data["network_without_acl"], - ) + self.userapiclient, + self.test_data["network_without_acl"], + ) if network_created is not None: self.cleanup.append(network_created) - self.test_data["network_without_acl"]["networkoffering"] = self.network_offering.id + self.test_data["network_without_acl"][ + "networkoffering"] = self.network_offering.id return @attr(tags=["advanced"], required_hardware="true") @@ -303,8 +339,10 @@ class TestNetworks_1(cloudstackTestCase): Step4 : Verify count of VPCs created Step5 : Listing all the VPCs in page1 Step6 : Listing all the VPCs in page2 - Step7 : Verifying that on page 2 only 1 vpc is present and the vpc on page 2 is not present in page1 - Step8 : Deleting a single vpc and verifying that vpc does not exists on page 2 + Step7 : Verifying that on page 2 only 1 vpc is present and + the vpc on page 2 is not present in page1 + Step8 : Deleting a single vpc and verifying that vpc does + not exists on page 2 """ # List VPC Offering vpc_offs_list = VpcOffering.list(self.userapiclient, isdefault="true") @@ -314,95 +352,99 @@ class TestNetworks_1(cloudstackTestCase): vpc_offs = vpc_offs_list[0] # List VPCs vpc_list = VPC.list( - self.userapiclient, - listall=self.test_data["listall"] - ) + self.userapiclient, + listall=self.test_data["listall"] + ) # verify no vpc is present for newly created user status = validateList(vpc_list) self.assertEquals(FAIL, status[0], "VPCs found for newly created user") - vpc_count_before = 0 for i in range(0, (self.test_data["pagesize"] + 1)): vpc_1 = VPC.create( - self.userapiclient, - self.test_data["vpc"], - vpcofferingid=vpc_offs.id, - zoneid=self.zone.id, - ) + self.userapiclient, + self.test_data["vpc"], + vpcofferingid=vpc_offs.id, + zoneid=self.zone.id, + ) if(i < (self.test_data["pagesize"])): self.cleanup.append(vpc_1) # verify vpc is created and not none self.assertIsNotNone(vpc_1, "VPC is not created") # Verify VPC name with test data self.assertNotEquals( - -1, - vpc_1.name.find(self.test_data["vpc"]["name"]), - "VPC name not matched" - ) + -1, + vpc_1.name.find(self.test_data["vpc"]["name"]), + "VPC name not matched" + ) # verify zone with test data self.assertEquals( - self.zone.id, - vpc_1.zoneid, - "Zone is not matching in the vpc created" - ) + self.zone.id, + vpc_1.zoneid, + "Zone is not matching in the vpc created" + ) # Asserting for the length of the VPCs - vpc_count_after = VPC.list(self.userapiclient, listall=self.test_data["listall"]) + vpc_count_after = VPC.list( + self.userapiclient, + listall=self.test_data["listall"]) status = validateList(vpc_count_after) self.assertEquals(PASS, status[0], "VPC list count is null") self.assertEqual( - len(vpc_count_after), - (self.test_data["pagesize"] + 1), - "Number of VPCs created is not matching expected" - ) + len(vpc_count_after), + (self.test_data["pagesize"] + 1), + "Number of VPCs created is not matching expected" + ) # Listing all the VPCs in page1 list_vpcs_page1 = VPC.list( - self.userapiclient, - listall=self.test_data["listall"], - page=1, - pagesize=self.test_data["pagesize"] - ) + self.userapiclient, + listall=self.test_data["listall"], + page=1, + pagesize=self.test_data["pagesize"] + ) status = validateList(list_vpcs_page1) self.assertEquals(PASS, status[0], "No vpcs found in Page 1") self.assertEqual( - len(list_vpcs_page1), - self.test_data["pagesize"], - "List vpc response is not matching with the page size length for page 1" - ) + len(list_vpcs_page1), + self.test_data["pagesize"], + "List vpc response is not matching with the page\ + size length for page 1") # Listing all the vpcs in page2 list_vpcs_page2 = VPC.list( - self.userapiclient, - listall=self.test_data["listall"], - page=2, - pagesize=self.test_data["pagesize"] - ) + self.userapiclient, + listall=self.test_data["listall"], + page=2, + pagesize=self.test_data["pagesize"] + ) status = validateList(list_vpcs_page2) self.assertEquals(PASS, status[0], "No vpc found in Page 2") self.assertEqual( - 1, - len(list_vpcs_page2), - "List VPCs response is not matching with the page size length for page 2" - ) + 1, + len(list_vpcs_page2), + "List VPCs response is not matching with the\ + page size length for page 2" + ) vpc_page2 = list_vpcs_page2[0] - # Verifying that on page 2 only 1 vpc is present and the vpc on page 2 is not present in page1 + # Verifying that on page 2 only 1 vpc is present and the vpc on page 2 + # is not present in page1 for i in range(0, len(list_vpcs_page1)): vpc_page1 = list_vpcs_page1[i] self.assertNotEquals( - vpc_page2.id, - vpc_page1.id, - "VPC listed in page 2 is also listed in page 1" - ) - # Deleting a single vpc and verifying that vpc does not exists on page 2 + vpc_page2.id, + vpc_page1.id, + "VPC listed in page 2 is also listed in page 1" + ) + # Deleting a single vpc and verifying that vpc does not exists on page + # 2 VPC.delete(vpc_1, self.userapiclient) list_vpc_response = VPC.list( - self.userapiclient, - listall=self.test_data["listall"], - page=2, - pagesize=self.test_data["pagesize"] - ) + self.userapiclient, + listall=self.test_data["listall"], + page=2, + pagesize=self.test_data["pagesize"] + ) self.assertEqual( - list_vpc_response, - None, - "vpc was not deleted" - ) + list_vpc_response, + None, + "vpc was not deleted" + ) return @attr(tags=["advanced"], required_hardware="true") @@ -423,33 +465,33 @@ class TestNetworks_1(cloudstackTestCase): vpc_offs = vpc_offs_list[0] # List VPCs for newly created user vpc_list = VPC.list( - self.userapiclient, - listall=self.test_data["listall"] - ) + self.userapiclient, + listall=self.test_data["listall"] + ) # No VPCs should be present for newly created user status = validateList(vpc_list) self.assertEquals(FAIL, status[0], "VPCs found for newly created user") vpc_count_before = 0 vpc_1 = VPC.create( - self.userapiclient, - self.test_data["vpc_network_domain"], - vpcofferingid=vpc_offs.id, - zoneid=self.zone.id, - ) + self.userapiclient, + self.test_data["vpc_network_domain"], + vpcofferingid=vpc_offs.id, + zoneid=self.zone.id, + ) self.assertIsNotNone(vpc_1, "VPC is not created") self.cleanup.append(vpc_1) # List VPCs vpc_list = VPC.list( - self.userapiclient, - listall=self.test_data["listall"] - ) + self.userapiclient, + listall=self.test_data["listall"] + ) status = validateList(vpc_list) self.assertEquals(PASS, status[0], "VPC is not created") self.assertEquals( - vpc_count_before + 1, - len(vpc_list), - "VPC is not created" - ) + vpc_count_before + 1, + len(vpc_list), + "VPC is not created" + ) return @attr(tags=["advanced"], required_hardware="true") @@ -461,94 +503,117 @@ class TestNetworks_1(cloudstackTestCase): Step2 : Create network offering with default setting of vpc = false Step3 : List network offering Step4 : Verify that count is incremented by 1 - Step5 : List network offering with additional parameter of vpc = true + Step5 : List network offering with additional parameter of + vpc = true Step6 : Verify that its count is same as step 1 - Step7 : List network offering with additional parameter of vpc = false + Step7 : List network offering with additional parameter of + vpc = false Step8 : Verify that its count is same as step 3 """ # List all network offering - network_offering_before_count = NetworkOffering.list(self.userapiclient) + network_offering_before_count = NetworkOffering.list( + self.userapiclient) status = validateList(network_offering_before_count) - self.assertEquals(PASS, status[0], "Default network offering not present") + self.assertEquals( + PASS, + status[0], + "Default network offering not present") # List network offering for vpc = true network_offering_vpc_true_before_count = NetworkOffering.list( - self.userapiclient, - forvpc="true", - zoneid=self.zone.id, - guestiptype=self.test_data["network_offering_vlan"]["guestiptype"], - supportedServices="SourceNat", - specifyvlan=self.test_data["network_offering_vlan"]["specifyvlan"], - state="Enabled" - ) + self.userapiclient, + forvpc="true", + zoneid=self.zone.id, + guestiptype=self.test_data["network_offering_vlan"]["guestiptype"], + supportedServices="SourceNat", + specifyvlan=self.test_data["network_offering_vlan"]["specifyvlan"], + state="Enabled" + ) status = validateList(network_offering_vpc_true_before_count) - self.assertEquals(PASS, status[0], "Default network offering not present for vpc = true") + self.assertEquals( + PASS, + status[0], + "Default network offering not present for vpc = true") # List network offering network_offering_vpc_false_before_count = NetworkOffering.list( - self.userapiclient, - forvpc="false", - zoneid=self.zone.id, - guestiptype=self.test_data["network_offering_vlan"]["guestiptype"], - supportedServices="SourceNat", - specifyvlan=self.test_data["network_offering_vlan"]["specifyvlan"], - state="Enabled" - ) + self.userapiclient, + forvpc="false", + zoneid=self.zone.id, + guestiptype=self.test_data["network_offering_vlan"]["guestiptype"], + supportedServices="SourceNat", + specifyvlan=self.test_data["network_offering_vlan"]["specifyvlan"], + state="Enabled" + ) status = validateList(network_offering_vpc_false_before_count) - self.assertEquals(PASS, status[0], "Default network offering not present for vpc = false") + self.assertEquals( + PASS, + status[0], + "Default network offering not present for vpc = false") # Create network Offering network_offering = NetworkOffering.create( - self.apiClient, - self.test_data["network_offering_vlan"], - ) - self.assertIsNotNone(network_offering, "Network offering is not created") + self.apiClient, + self.test_data["network_offering_vlan"], + ) + self.assertIsNotNone( + network_offering, + "Network offering is not created") # Enable Network offering network_offering.update(self.apiClient, state='Enabled') self.cleanup.append(network_offering) # List network offering network_offering_after_count = NetworkOffering.list(self.userapiclient) status = validateList(network_offering_after_count) - self.assertEquals(PASS, status[0], "Network Offering list results in null") + self.assertEquals( + PASS, + status[0], + "Network Offering list results in null") # Verify that count is incremented by 1 self.assertEquals( - len(network_offering_before_count) + 1, - len(network_offering_after_count), - "Network offering is not created" - ) + len(network_offering_before_count) + 1, + len(network_offering_after_count), + "Network offering is not created" + ) # List network offering with additional parameter of vpc = true network_offering_vpc_true_after_count = NetworkOffering.list( - self.userapiclient, - forvpc="true", - zoneid=self.zone.id, - guestiptype=self.test_data["network_offering_vlan"]["guestiptype"], - supportedServices="SourceNat", - specifyvlan=self.test_data["network_offering_vlan"]["specifyvlan"], - state="Enabled" - ) + self.userapiclient, + forvpc="true", + zoneid=self.zone.id, + guestiptype=self.test_data["network_offering_vlan"]["guestiptype"], + supportedServices="SourceNat", + specifyvlan=self.test_data["network_offering_vlan"]["specifyvlan"], + state="Enabled" + ) status = validateList(network_offering_vpc_true_after_count) - self.assertEquals(PASS, status[0], "Network Offering list results in null") + self.assertEquals( + PASS, + status[0], + "Network Offering list results in null") # Verify that its count is same as step 1 self.assertEquals( - len(network_offering_vpc_true_before_count), - len(network_offering_vpc_true_after_count), - "Default Network offering is created with vpc as true" - ) + len(network_offering_vpc_true_before_count), + len(network_offering_vpc_true_after_count), + "Default Network offering is created with vpc as true" + ) # List network offering with additional parameter of vpc = false network_offering_vpc_false_after_count = NetworkOffering.list( - self.userapiclient, - forvpc="false", - zoneid=self.zone.id, - guestiptype=self.test_data["network_offering_vlan"]["guestiptype"], - supportedServices="SourceNat", - specifyvlan=self.test_data["network_offering_vlan"]["specifyvlan"], - state="Enabled" - ) + self.userapiclient, + forvpc="false", + zoneid=self.zone.id, + guestiptype=self.test_data["network_offering_vlan"]["guestiptype"], + supportedServices="SourceNat", + specifyvlan=self.test_data["network_offering_vlan"]["specifyvlan"], + state="Enabled" + ) status = validateList(network_offering_vpc_false_after_count) - self.assertEquals(PASS, status[0], "Network Offering list results in null") + self.assertEquals( + PASS, + status[0], + "Network Offering list results in null") # Verify that its count is same as step 3 self.assertEquals( - len(network_offering_vpc_false_before_count) + 1, - len(network_offering_vpc_false_after_count), - "Default Network offering is not created with vpc as false" - ) + len(network_offering_vpc_false_before_count) + 1, + len(network_offering_vpc_false_after_count), + "Default Network offering is not created with vpc as false" + ) return @attr(tags=["advanced"], required_hardware="true") @@ -562,7 +627,8 @@ class TestNetworks_1(cloudstackTestCase): Step4 : List VPC and verify that count is increased by 1 Step5 : Create network Step6 : List VPCs for specific network created in vpc - Step7 : Verify vpc name matches for newly created vpc name and name from vpc list + Step7 : Verify vpc name matches for newly created vpc name + and name from vpc list """ # List VPC Offering vpc_offs_list = VpcOffering.list(self.userapiclient, @@ -574,106 +640,119 @@ class TestNetworks_1(cloudstackTestCase): vpc_offs = vpc_offs_list[0] # List VPCs for newly created user vpc_list = VPC.list( - self.userapiclient, - listall=self.test_data["listall"] - ) + self.userapiclient, + listall=self.test_data["listall"] + ) # No VPCs should be present for newly created user status = validateList(vpc_list) self.assertEquals(FAIL, status[0], "VPCs found for newly created user") vpc_count_before = 0 vpc_1 = VPC.create( - self.userapiclient, - self.test_data["vpc"], - vpcofferingid=vpc_offs.id, - zoneid=self.zone.id, - ) + self.userapiclient, + self.test_data["vpc"], + vpcofferingid=vpc_offs.id, + zoneid=self.zone.id, + ) self.assertIsNotNone(vpc_1, "VPC is not created") # List VPCs vpc_list = VPC.list( - self.userapiclient, - listall=self.test_data["listall"] - ) + self.userapiclient, + listall=self.test_data["listall"] + ) status = validateList(vpc_list) self.assertEquals(PASS, status[0], "VPC is not created") self.assertEquals( - vpc_count_before + 1, - len(vpc_list), - "VPC is not created" - ) + vpc_count_before + 1, + len(vpc_list), + "VPC is not created" + ) # Listing the networks for a user - list_networks_before = Network.list(self.userapiclient, listall=self.test_data["listall"], type="Isolated") + list_networks_before = Network.list( + self.userapiclient, + listall=self.test_data["listall"], + type="Isolated") # Verifying listed networks for account created at class level - self.assertIsNotNone(list_networks_before, "Network create failed at class level") + self.assertIsNotNone( + list_networks_before, + "Network create failed at class level") # List network offering for vpc = true network_offering_vpc_true_list = NetworkOffering.list( - self.userapiclient, - forvpc="true", - zoneid=self.zone.id, - guestiptype=self.test_data["network_offering_vlan"]["guestiptype"], - supportedServices="SourceNat", - specifyvlan=self.test_data["network_offering_vlan"]["specifyvlan"], - state="Enabled" - ) + self.userapiclient, + forvpc="true", + zoneid=self.zone.id, + guestiptype=self.test_data["network_offering_vlan"]["guestiptype"], + supportedServices="SourceNat", + specifyvlan=self.test_data["network_offering_vlan"]["specifyvlan"], + state="Enabled" + ) status = validateList(network_offering_vpc_true_list) - self.assertEquals(PASS, status[0], "Default network offering not present for vpc = true") + self.assertEquals( + PASS, + status[0], + "Default network offering not present for vpc = true") # Listing networks in VPC list_networks_in_vpc = Network.list(self.userapiclient, vpcid=vpc_1.id, type="Isolated" ) - self.assertIsNone(list_networks_in_vpc, "Networks found for newly created VPC") + self.assertIsNone( + list_networks_in_vpc, + "Networks found for newly created VPC") # If number of networks is 1, then creating network if len(list_networks_before) == 1: - network_created = Network.create( - self.userapiclient, - self.test_data["network_without_acl"], - networkofferingid=network_offering_vpc_true_list[0].id, - vpcid=vpc_1.id, - gateway=self.test_data["ntwk"]["gateway"], - netmask=self.test_data["ntwk"]["netmask"], - domainid=self.domain.id, - accountid=self.account.name, - ) - self.assertIsNotNone( - network_created, - "Network is not created" - ) - self.cleanup.append(network_created) - self.cleanup.append(vpc_1) - # Creating expected and actual values dictionaries - expected_dict = { - "id":self.test_data["network_without_acl"]["zoneid"], - "name":self.test_data["network_without_acl"]["name"], - } - actual_dict = { - "id":network_created.zoneid, - "name":network_created.name, - } - network_status = self.__verify_values( - expected_dict, - actual_dict - ) - self.assertEqual( - True, - network_status, - "Listed network details are not as expected" - ) + network_created = Network.create( + self.userapiclient, + self.test_data["network_without_acl"], + networkofferingid=network_offering_vpc_true_list[0].id, + vpcid=vpc_1.id, + gateway=self.test_data["ntwk"]["gateway"], + netmask=self.test_data["ntwk"]["netmask"], + domainid=self.domain.id, + accountid=self.account.name, + ) + self.assertIsNotNone( + network_created, + "Network is not created" + ) + self.cleanup.append(network_created) + self.cleanup.append(vpc_1) + # Creating expected and actual values dictionaries + expected_dict = { + "id": self.test_data["network_without_acl"]["zoneid"], + "name": self.test_data["network_without_acl"]["name"], + } + actual_dict = { + "id": network_created.zoneid, + "name": network_created.name, + } + network_status = self.__verify_values( + expected_dict, + actual_dict + ) + self.assertEqual( + True, + network_status, + "Listed network details are not as expected" + ) else: self.assertEqual( - len(list_networks_before), - 1, - "more than 1 network created at class level" - ) + len(list_networks_before), + 1, + "more than 1 network created at class level" + ) # Listing the networks - list_networks_after = Network.list(self.userapiclient, listall=self.test_data["listall"], type="Isolated") + list_networks_after = Network.list( + self.userapiclient, + listall=self.test_data["listall"], + type="Isolated") status = validateList(list_networks_after) self.assertEquals(PASS, status[0], "No networks found using list call") # Asserting for the length of the networks self.assertEqual( - 2, - len(list_networks_after), - "Number of networks created is not matching expected" - ) + 2, + len(list_networks_after), + "Number of networks created is not matching expected" + ) # Listing networks in VPC after creation of network list_networks_in_vpc = Network.list(self.userapiclient, vpcid=vpc_1.id, @@ -683,24 +762,24 @@ class TestNetworks_1(cloudstackTestCase): self.assertEquals(PASS, status[0], "No networks found in vpc") # Asserting for the length of the networks self.assertEqual( - 1, - len(list_networks_in_vpc), - "Number of networks created in vpc is not matching expected" - ) + 1, + len(list_networks_in_vpc), + "Number of networks created in vpc is not matching expected" + ) # List VPCs for specific network created in vpc vpc_list = VPC.list( - self.userapiclient, - id=network_created.vpcid - ) + self.userapiclient, + id=network_created.vpcid + ) # verify no vpc is present for newly created user status = validateList(vpc_list) self.assertEquals(PASS, status[0], "VPCs not found.") # verify vpc name matches for newly created vpc name and vpc list name self.assertEqual( - vpc_1.name, - vpc_list[0].name, - "VPC names not matching" - ) + vpc_1.name, + vpc_list[0].name, + "VPC names not matching" + ) return @attr(tags=["advanced"], required_hardware="true") @@ -714,91 +793,99 @@ class TestNetworks_1(cloudstackTestCase): Step4 : Verify network is deleted """ # Listing the networks for a user - list_networks_before = Network.list(self.userapiclient, listall=self.test_data["listall"], type="Isolated") + list_networks_before = Network.list( + self.userapiclient, + listall=self.test_data["listall"], + type="Isolated") # Verifying listed networks for account created at class level - self.assertIsNotNone(list_networks_before, "Network create failed at class level") + self.assertIsNotNone( + list_networks_before, + "Network create failed at class level") # List network offering for vpc = false network_offering_vpc_false_list = NetworkOffering.list( - self.userapiclient, - forvpc="false", - zoneid=self.zone.id, - guestiptype=self.test_data["network_offering_vlan"]["guestiptype"], - supportedServices="SourceNat", - specifyvlan=self.test_data["network_offering_vlan"]["specifyvlan"], - state="Enabled" - ) + self.userapiclient, + forvpc="false", + zoneid=self.zone.id, + guestiptype=self.test_data["network_offering_vlan"]["guestiptype"], + supportedServices="SourceNat", + specifyvlan=self.test_data["network_offering_vlan"]["specifyvlan"], + state="Enabled" + ) status = validateList(network_offering_vpc_false_list) - self.assertEquals(PASS, status[0], "Default network offering not present for vpc = false") + self.assertEquals( + PASS, + status[0], + "Default network offering not present for vpc = false") # If number of networks is 1, then creating network if len(list_networks_before) == 1: - network_created = Network.create( - self.userapiclient, - self.test_data["network_without_acl"], - networkofferingid=network_offering_vpc_false_list[0].id, - ) - self.assertIsNotNone( - network_created, - "Network is not created" - ) - # Creating expected and actual values dictionaries - expected_dict = { - "id":self.test_data["network_without_acl"]["zoneid"], - "name":self.test_data["network_without_acl"]["name"], - } - actual_dict = { - "id":network_created.zoneid, - "name":network_created.name, - } - network_status = self.__verify_values( - expected_dict, - actual_dict - ) - self.assertEqual( - True, - network_status, - "Listed network details are not as expected" - ) + network_created = Network.create( + self.userapiclient, + self.test_data["network_without_acl"], + networkofferingid=network_offering_vpc_false_list[0].id, + ) + self.assertIsNotNone( + network_created, + "Network is not created" + ) + # Creating expected and actual values dictionaries + expected_dict = { + "id": self.test_data["network_without_acl"]["zoneid"], + "name": self.test_data["network_without_acl"]["name"], + } + actual_dict = { + "id": network_created.zoneid, + "name": network_created.name, + } + network_status = self.__verify_values( + expected_dict, + actual_dict + ) + self.assertEqual( + True, + network_status, + "Listed network details are not as expected" + ) else: self.assertEqual( - len(list_networks_before), - 1, - "more than 1 network created at class level" - ) + len(list_networks_before), + 1, + "more than 1 network created at class level" + ) # Listing the networks list_networks_after = Network.list( - self.userapiclient, - listall=self.test_data["listall"], - type="Isolated" - ) + self.userapiclient, + listall=self.test_data["listall"], + type="Isolated" + ) status = validateList(list_networks_after) self.assertEquals(PASS, status[0], "No networks found using list call") # Asserting for the length of the networks self.assertEqual( - 2, - len(list_networks_after), - "Number of networks created is not matching expected" - ) + 2, + len(list_networks_after), + "Number of networks created is not matching expected" + ) # Delete Network Network.delete(network_created, self.userapiclient) # List Networks list_networks_after_delete = Network.list( - self.userapiclient, - listall=self.test_data["listall"], - type="Isolated" - ) + self.userapiclient, + listall=self.test_data["listall"], + type="Isolated" + ) status = validateList(list_networks_after_delete) self.assertEquals(PASS, status[0], "No networks found using list call") self.assertEqual( - 1, - len(list_networks_after_delete), - "Number of networks created is not matching expected" - ) + 1, + len(list_networks_after_delete), + "Number of networks created is not matching expected" + ) # Verify deleted network is not present self.assertNotEquals( - network_created.id, - list_networks_after_delete[0].id, - "Deleted network present" - ) + network_created.id, + list_networks_after_delete[0].id, + "Deleted network present" + ) return @attr(tags=["advanced"], required_hardware="true") @@ -812,65 +899,76 @@ class TestNetworks_1(cloudstackTestCase): Step4 : Verify network is updated """ # Listing the networks for a user - list_networks_before = Network.list(self.userapiclient, listall=self.test_data["listall"], type="Isolated") + list_networks_before = Network.list( + self.userapiclient, + listall=self.test_data["listall"], + type="Isolated") # Verifying listed networks for account created at class level - self.assertIsNotNone(list_networks_before, "Network create failed at class level") + self.assertIsNotNone( + list_networks_before, + "Network create failed at class level") self.assertEquals( - 1, - len(list_networks_before), - "More than 1 network created at class level" - ) + 1, + len(list_networks_before), + "More than 1 network created at class level" + ) # List network offering for vpc = false network_offering_vpc_false_list = NetworkOffering.list( - self.userapiclient, - forvpc="false", - zoneid=self.zone.id, - guestiptype=self.test_data["network_offering_vlan"]["guestiptype"], - supportedServices="SourceNat", - specifyvlan=self.test_data["network_offering_vlan"]["specifyvlan"], - state="Enabled" - ) + self.userapiclient, + forvpc="false", + zoneid=self.zone.id, + guestiptype=self.test_data["network_offering_vlan"]["guestiptype"], + supportedServices="SourceNat", + specifyvlan=self.test_data["network_offering_vlan"]["specifyvlan"], + state="Enabled" + ) status = validateList(network_offering_vpc_false_list) - self.assertEquals(PASS, status[0], "Default network offering not present for vpc = false") + self.assertEquals( + PASS, + status[0], + "Default network offering not present for vpc = false") # creating network network_created = Network.create( - self.userapiclient, - self.test_data["network_without_acl"], - networkofferingid=network_offering_vpc_false_list[0].id, - ) + self.userapiclient, + self.test_data["network_without_acl"], + networkofferingid=network_offering_vpc_false_list[0].id, + ) self.assertIsNotNone( - network_created, - "Network is not created" - ) + network_created, + "Network is not created" + ) self.cleanup.append(network_created) # Creating expected and actual values dictionaries expected_dict = { - "id":self.test_data["network_without_acl"]["zoneid"], - "name":self.test_data["network_without_acl"]["name"], - } + "id": self.test_data["network_without_acl"]["zoneid"], + "name": self.test_data["network_without_acl"]["name"], + } actual_dict = { - "id":network_created.zoneid, - "name":network_created.name, - } + "id": network_created.zoneid, + "name": network_created.name, + } network_status = self.__verify_values( - expected_dict, - actual_dict - ) + expected_dict, + actual_dict + ) self.assertEqual( - True, - network_status, - "Listed network details are not as expected" - ) + True, + network_status, + "Listed network details are not as expected" + ) # Listing the networks - list_networks_after = Network.list(self.userapiclient, listall=self.test_data["listall"], type="Isolated") + list_networks_after = Network.list( + self.userapiclient, + listall=self.test_data["listall"], + type="Isolated") status = validateList(list_networks_after) self.assertEquals(PASS, status[0], "No networks found using list call") # Asserting for the length of the networks self.assertEqual( - 2, - len(list_networks_after), - "Number of networks created is not matching expected" - ) + 2, + len(list_networks_after), + "Number of networks created is not matching expected" + ) # Update Network network_updated = Network.update(network_created, self.userapiclient, @@ -879,34 +977,37 @@ class TestNetworks_1(cloudstackTestCase): networkdomain="cs13cloud.internal.new" ) # List Networks - list_networks_after_update = Network.list(self.userapiclient, listall=self.test_data["listall"], type="Isolated") + list_networks_after_update = Network.list( + self.userapiclient, + listall=self.test_data["listall"], + type="Isolated") status = validateList(list_networks_after_update) self.assertEquals(PASS, status[0], "No networks found using list call") self.assertEqual( - 2, - len(list_networks_after_update), - "Number of networks created is not matching expected" - ) + 2, + len(list_networks_after_update), + "Number of networks created is not matching expected" + ) # Creating expected and actual values dictionaries expected_dict = { - "name":"NewNetworkName", - "displaytext":"NewNetworkDisplayText", - "networkdomain":"cs13cloud.internal.new" - } + "name": "NewNetworkName", + "displaytext": "NewNetworkDisplayText", + "networkdomain": "cs13cloud.internal.new" + } actual_dict = { - "name":network_updated.name, - "displaytext":network_updated.displaytext, - "networkdomain":network_updated.networkdomain - } + "name": network_updated.name, + "displaytext": network_updated.displaytext, + "networkdomain": network_updated.networkdomain + } network_status = self.__verify_values( - expected_dict, - actual_dict - ) + expected_dict, + actual_dict + ) self.assertEqual( - True, - network_status, - "Listed network details are not as expected" - ) + True, + network_status, + "Listed network details are not as expected" + ) return @attr(tags=["advanced"], required_hardware="true") @@ -920,114 +1021,122 @@ class TestNetworks_1(cloudstackTestCase): Step4 : Verify list Virtual machines and pagination """ # Listing the networks for a user - list_networks_before = Network.list(self.userapiclient, listall=self.test_data["listall"], type="Isolated") + list_networks_before = Network.list( + self.userapiclient, + listall=self.test_data["listall"], + type="Isolated") # Verifying listed networks for account created at class level - self.assertIsNotNone(list_networks_before, "Network create failed at class level") + self.assertIsNotNone( + list_networks_before, + "Network create failed at class level") # Create Virtual Machine # Listing all the instances for a user - list_instances_before = VirtualMachine.list(self.userapiclient, listall=self.test_data["listall"]) + list_instances_before = VirtualMachine.list( + self.userapiclient, + listall=self.test_data["listall"]) # Verifying listed instances for account created at class level self.assertIsNone( - list_instances_before, - "Virtual Machine already exists for newly created user" - ) - # If number of instances are less than (pagesize 1), then creating them + list_instances_before, + "Virtual Machine already exists for newly created user" + ) + # If number of instances are less than (pagesize 1), then creating + # them for i in range(0, (self.test_data["pagesize"] + 1)): vm_created = VirtualMachine.create( - self.userapiclient, - self.test_data["virtual_machine"], - accountid=self.account.name, - domainid=self.account.domainid, - networkids=list_networks_before[0].id, - serviceofferingid=self.service_offering.id, - ) + self.userapiclient, + self.test_data["virtual_machine"], + accountid=self.account.name, + domainid=self.account.domainid, + networkids=list_networks_before[0].id, + serviceofferingid=self.service_offering.id, + ) self.assertIsNotNone( - vm_created, - "VM creation failed" - ) + vm_created, + "VM creation failed" + ) if(i < (self.test_data["pagesize"])): self.cleanup.append(vm_created) self.assertEqual( - self.test_data["virtual_machine"]["displayname"], - vm_created.displayname, - "Newly created VM name and the test data VM name are not matching" - ) + self.test_data["virtual_machine"]["displayname"], + vm_created.displayname, + "Newly created VM name and the test data VM\ + name are not matching") # Listing all the instances again after creating VM's list_instances_after = VirtualMachine.list( - self.userapiclient, - listall=self.test_data["listall"], - networkid=list_networks_before[0].id - ) + self.userapiclient, + listall=self.test_data["listall"], + networkid=list_networks_before[0].id + ) status = validateList(list_instances_after) self.assertEquals( - PASS, - status[0], - "Listing of instances after creation failed" - ) + PASS, + status[0], + "Listing of instances after creation failed" + ) # Verifying the length of the instances is (page size 1) self.assertEqual( - len(list_instances_after), - (self.test_data["pagesize"] + 1), - "Number of instances created is not matching as expected" - ) + len(list_instances_after), + (self.test_data["pagesize"] + 1), + "Number of instances created is not matching as expected" + ) # Listing all the volumes in page1 list_instances_page1 = VirtualMachine.list( - self.userapiclient, - listall=self.test_data["listall"], - page=1, - pagesize=self.test_data["pagesize"], - networkid=list_networks_before[0].id - ) + self.userapiclient, + listall=self.test_data["listall"], + page=1, + pagesize=self.test_data["pagesize"], + networkid=list_networks_before[0].id + ) status = validateList(list_instances_page1) self.assertEquals( - PASS, - status[0], - "Listing of instances in page1 failed" - ) + PASS, + status[0], + "Listing of instances in page1 failed" + ) # Verifying that the length of the instances in page 1 is (page size) self.assertEqual( - self.test_data["pagesize"], - len(list_instances_page1), - "List VM response is not matching with the page size length for page 1" - ) - # Listing all the VM's in page2 + self.test_data["pagesize"], + len(list_instances_page1), + "List VM response is not matching with the\ + page size length for page 1") + # Listing all the VM's in page2 list_instances_page2 = VirtualMachine.list( - self.userapiclient, - listall=self.test_data["listall"], - page=2, - pagesize=self.test_data["pagesize"], - networkid=list_networks_before[0].id - ) + self.userapiclient, + listall=self.test_data["listall"], + page=2, + pagesize=self.test_data["pagesize"], + networkid=list_networks_before[0].id + ) status = validateList(list_instances_page2) self.assertEquals( - PASS, - status[0], - "Listing of instances in page2 failed" - ) + PASS, + status[0], + "Listing of instances in page2 failed" + ) # Verifying that the length of the VM's in page 2 is 1 self.assertEqual( - 1, - len(list_instances_page2), - "List VM response is not matching with the page size length for page 2" - ) - instance_page2 = list_instances_page2[0] + 1, + len(list_instances_page2), + "List VM response is not matching with the\ + page size length for page 2" + ) # Deleting a single VM VirtualMachine.delete(vm_created, self.apiClient) # Listing the VM's in page 2 list_instance_response = VirtualMachine.list( - self.userapiclient, - listall=self.test_data["listall"], - page=2, - pagesize=self.test_data["pagesize"], - networkid=list_networks_before[0].id - ) + self.userapiclient, + listall=self.test_data["listall"], + page=2, + pagesize=self.test_data["pagesize"], + networkid=list_networks_before[0].id + ) # verifying that VM does not exists on page 2 self.assertEqual( - list_instance_response, - None, - "VM was not deleted" - ) + list_instance_response, + None, + "VM was not deleted" + ) return @attr(tags=["advanced"], required_hardware="true") @@ -1041,7 +1150,8 @@ class TestNetworks_1(cloudstackTestCase): Step4 : List VPC and verify that count is increased by 1 Step5 : Create network Step6 : List Networks in created vpc - Step7 : Verify network name matches for newly created network name and name from network list + Step7 : Verify network name matches for newly created network name + and name from network list """ # List VPC Offering vpc_offs_list = VpcOffering.list(self.userapiclient, isdefault="true") @@ -1051,113 +1161,125 @@ class TestNetworks_1(cloudstackTestCase): vpc_offs = vpc_offs_list[0] # List VPCs for newly created user vpc_list = VPC.list( - self.userapiclient, - listall=self.test_data["listall"] - ) + self.userapiclient, + listall=self.test_data["listall"] + ) # No VPCs should be present for newly created user status = validateList(vpc_list) self.assertEquals(FAIL, status[0], "VPCs found for newly created user") vpc_count_before = 0 vpc_1 = VPC.create( - self.userapiclient, - self.test_data["vpc"], - vpcofferingid=vpc_offs.id, - zoneid=self.zone.id, - ) + self.userapiclient, + self.test_data["vpc"], + vpcofferingid=vpc_offs.id, + zoneid=self.zone.id, + ) self.assertIsNotNone(vpc_1, "VPC is not created") # List VPCs vpc_list = VPC.list( - self.userapiclient, - listall=self.test_data["listall"] - ) + self.userapiclient, + listall=self.test_data["listall"] + ) status = validateList(vpc_list) self.assertEquals(PASS, status[0], "VPC is not created") self.assertEquals( - vpc_count_before + 1, - len(vpc_list), - "VPC is not created" - ) + vpc_count_before + 1, + len(vpc_list), + "VPC is not created" + ) # Listing the networks for a user - list_networks_before = Network.list(self.userapiclient, listall=self.test_data["listall"], type="Isolated") + list_networks_before = Network.list( + self.userapiclient, + listall=self.test_data["listall"], + type="Isolated") # Verifying listed networks for account created at class level - self.assertIsNotNone(list_networks_before, "Network create failed at class level") + self.assertIsNotNone( + list_networks_before, + "Network create failed at class level") # List network offering for vpc = true network_offering_vpc_true_list = NetworkOffering.list( - self.userapiclient, - forvpc="true", - zoneid=self.zone.id, - guestiptype=self.test_data["network_offering_vlan"]["guestiptype"], - supportedServices="SourceNat", - specifyvlan=self.test_data["network_offering_vlan"]["specifyvlan"], - state="Enabled" - ) + self.userapiclient, + forvpc="true", + zoneid=self.zone.id, + guestiptype=self.test_data["network_offering_vlan"]["guestiptype"], + supportedServices="SourceNat", + specifyvlan=self.test_data["network_offering_vlan"]["specifyvlan"], + state="Enabled" + ) status = validateList(network_offering_vpc_true_list) - self.assertEquals(PASS, status[0], "Default network offering not present for vpc = true") + self.assertEquals( + PASS, + status[0], + "Default network offering not present for vpc = true") # If number of networks is 1, then creating network if len(list_networks_before) == 1: - network_created = Network.create( - self.userapiclient, - self.test_data["network_without_acl"], - networkofferingid=network_offering_vpc_true_list[0].id, - vpcid=vpc_1.id, - gateway=self.test_data["ntwk"]["gateway"], - netmask=self.test_data["ntwk"]["netmask"] - ) - self.assertIsNotNone( - network_created, - "Network is not created" - ) - self.cleanup.append(network_created) - self.cleanup.append(vpc_1) - # Creating expected and actual values dictionaries - expected_dict = { - "id":self.test_data["network_without_acl"]["zoneid"], - "name":self.test_data["network_without_acl"]["name"], - } - actual_dict = { - "id":network_created.zoneid, - "name":network_created.name, - } - network_status = self.__verify_values( - expected_dict, - actual_dict - ) - self.assertEqual( - True, - network_status, - "Listed network details are not as expected" - ) + network_created = Network.create( + self.userapiclient, + self.test_data["network_without_acl"], + networkofferingid=network_offering_vpc_true_list[0].id, + vpcid=vpc_1.id, + gateway=self.test_data["ntwk"]["gateway"], + netmask=self.test_data["ntwk"]["netmask"] + ) + self.assertIsNotNone( + network_created, + "Network is not created" + ) + self.cleanup.append(network_created) + self.cleanup.append(vpc_1) + # Creating expected and actual values dictionaries + expected_dict = { + "id": self.test_data["network_without_acl"]["zoneid"], + "name": self.test_data["network_without_acl"]["name"], + } + actual_dict = { + "id": network_created.zoneid, + "name": network_created.name, + } + network_status = self.__verify_values( + expected_dict, + actual_dict + ) + self.assertEqual( + True, + network_status, + "Listed network details are not as expected" + ) else: self.assertEqual( - len(list_networks_before), - 1, - "more than 1 network created at class level" - ) + len(list_networks_before), + 1, + "more than 1 network created at class level" + ) # Listing the networks - list_networks_after = Network.list(self.userapiclient, listall=self.test_data["listall"], type="Isolated") + list_networks_after = Network.list( + self.userapiclient, + listall=self.test_data["listall"], + type="Isolated") status = validateList(list_networks_after) self.assertEquals(PASS, status[0], "No networks found using list call") # Asserting for the length of the networks self.assertEqual( - 2, - len(list_networks_after), - "Number of networks created is not matching expected" - ) + 2, + len(list_networks_after), + "Number of networks created is not matching expected" + ) # Listing the networks list_networks_in_vpc = Network.list( - self.userapiclient, - listall=self.test_data["listall"], - vpcid=vpc_1.id, - type="Isolated" - ) + self.userapiclient, + listall=self.test_data["listall"], + vpcid=vpc_1.id, + type="Isolated" + ) status = validateList(list_networks_in_vpc) self.assertEquals(PASS, status[0], "No networks found using list call") - # Verify network name matches for newly created network name and name from network list + # Verify network name matches for newly created network name and name + # from network list self.assertEqual( - network_created.name, - list_networks_in_vpc[0].name, - "Network names not matching" - ) + network_created.name, + list_networks_in_vpc[0].name, + "Network names not matching" + ) return @attr(tags=["advanced"], required_hardware="true") @@ -1180,80 +1302,81 @@ class TestNetworks_1(cloudstackTestCase): vpc_offs = vpc_offs_list[0] # List VPCs vpc_list = VPC.list( - self.userapiclient, - listall=self.test_data["listall"] - ) + self.userapiclient, + listall=self.test_data["listall"] + ) # verify no vpc is present for newly created user status = validateList(vpc_list) self.assertEquals(FAIL, status[0], "VPCs found for newly created user") - vpc_count_before = 0 vpc_1 = VPC.create( - self.userapiclient, - self.test_data["vpc"], - vpcofferingid=vpc_offs.id, - zoneid=self.zone.id, - ) + self.userapiclient, + self.test_data["vpc"], + vpcofferingid=vpc_offs.id, + zoneid=self.zone.id, + ) self.assertIsNotNone(vpc_1, "VPC is not created") self.cleanup.append(vpc_1) # verify vpc is created and not none # Verify VPC name with test data self.assertNotEquals( - -1, - vpc_1.name.find(self.test_data["vpc"]["name"]), - "VPC name not matched" - ) + -1, + vpc_1.name.find(self.test_data["vpc"]["name"]), + "VPC name not matched" + ) # verify zone with test data self.assertEquals( - self.zone.id, - vpc_1.zoneid, - "Zone is not matching in the vpc created" - ) + self.zone.id, + vpc_1.zoneid, + "Zone is not matching in the vpc created" + ) # Asserting for the length of the VPCs - vpc_count_after = VPC.list(self.userapiclient, listall=self.test_data["listall"]) + vpc_count_after = VPC.list( + self.userapiclient, + listall=self.test_data["listall"]) status = validateList(vpc_count_after) self.assertEquals(PASS, status[0], "VPC list count is null") self.assertEqual( - 1, - len(vpc_count_after), - "Number of VPCs created is not matching expected" - ) + 1, + len(vpc_count_after), + "Number of VPCs created is not matching expected" + ) # Update VPC vpc_updated = VPC.update( - vpc_1, - self.userapiclient, - name="NewVPCName", - displaytext="NewVPCDisplayText", - ) + vpc_1, + self.userapiclient, + name="NewVPCName", + displaytext="NewVPCDisplayText", + ) # List Networks list_vpcs_after_update = VPC.list( - self.userapiclient, - listall=self.test_data["listall"] - ) + self.userapiclient, + listall=self.test_data["listall"] + ) status = validateList(list_vpcs_after_update) self.assertEquals(PASS, status[0], "No vpcs found using list call") self.assertEqual( - 1, - len(list_vpcs_after_update), - "Number of vpcs created is not matching expected" - ) + 1, + len(list_vpcs_after_update), + "Number of vpcs created is not matching expected" + ) # Creating expected and actual values dictionaries expected_dict = { - "name":"NewVPCName", - "displaytext":"NewVPCDisplayText", - } + "name": "NewVPCName", + "displaytext": "NewVPCDisplayText", + } actual_dict = { - "name":vpc_updated.name, - "displaytext":vpc_updated.displaytext, - } + "name": vpc_updated.name, + "displaytext": vpc_updated.displaytext, + } vpc_status = self.__verify_values( - expected_dict, - actual_dict - ) + expected_dict, + actual_dict + ) self.assertEqual( - True, - vpc_status, - "Listed vpc details are not as expected" - ) + True, + vpc_status, + "Listed vpc details are not as expected" + ) return @attr(tags=["advanced"], required_hardware="true") @@ -1283,110 +1406,120 @@ class TestNetworks_1(cloudstackTestCase): vpc_offs = vpc_offs_list[0] # List VPCs for newly created user vpc_list = VPC.list( - self.userapiclient, - listall=self.test_data["listall"] - ) + self.userapiclient, + listall=self.test_data["listall"] + ) # No VPCs should be present for newly created user status = validateList(vpc_list) self.assertEquals(FAIL, status[0], "VPCs found for newly created user") vpc_count_before = 0 vpc_1 = VPC.create( - self.userapiclient, - self.test_data["vpc"], - vpcofferingid=vpc_offs.id, - zoneid=self.zone.id, - ) + self.userapiclient, + self.test_data["vpc"], + vpcofferingid=vpc_offs.id, + zoneid=self.zone.id, + ) self.assertIsNotNone(vpc_1, "VPC is not created") # List VPCs vpc_list = VPC.list( - self.userapiclient, - listall=self.test_data["listall"] - ) + self.userapiclient, + listall=self.test_data["listall"] + ) status = validateList(vpc_list) self.assertEquals(PASS, status[0], "VPC is not created") self.assertEquals( - vpc_count_before + 1, - len(vpc_list), - "VPC is not created" - ) + vpc_count_before + 1, + len(vpc_list), + "VPC is not created" + ) # Listing the networks for a user list_networks_before = Network.list( - self.userapiclient, - listall=self.test_data["listall"], - type="Isolated" - ) + self.userapiclient, + listall=self.test_data["listall"], + type="Isolated" + ) # Verifying listed networks for account created at class level - self.assertIsNotNone(list_networks_before, "Network create failed at class level") + self.assertIsNotNone( + list_networks_before, + "Network create failed at class level") # List network offering for vpc = true network_offering_vpc_true_list = NetworkOffering.list( - self.userapiclient, - forvpc="true", - zoneid=self.zone.id, - guestiptype=self.test_data["network_offering_vlan"]["guestiptype"], - supportedServices="SourceNat", - specifyvlan=self.test_data["network_offering_vlan"]["specifyvlan"], - state="Enabled" - ) + self.userapiclient, + forvpc="true", + zoneid=self.zone.id, + guestiptype=self.test_data["network_offering_vlan"]["guestiptype"], + supportedServices="SourceNat", + specifyvlan=self.test_data["network_offering_vlan"]["specifyvlan"], + state="Enabled" + ) status = validateList(network_offering_vpc_true_list) - self.assertEquals(PASS, status[0], "Default network offering not present for vpc = true") + self.assertEquals( + PASS, + status[0], + "Default network offering not present for vpc = true") # Listing networks in VPC list_networks_in_vpc = Network.list(self.userapiclient, vpcid=vpc_1.id, type="Isolated" ) - self.assertIsNone(list_networks_in_vpc, "Networks found for newly created VPC") + self.assertIsNone( + list_networks_in_vpc, + "Networks found for newly created VPC") # If number of networks is 1, then creating network if len(list_networks_before) == 1: - network_created = Network.create( - self.userapiclient, - self.test_data["network_without_acl"], - networkofferingid=network_offering_vpc_true_list[0].id, - vpcid=vpc_1.id, - gateway=self.test_data["ntwk"]["gateway"], - netmask=self.test_data["ntwk"]["netmask"], - domainid=self.domain.id, - accountid=self.account.name, - ) - self.cleanup.append(network_created) - self.cleanup.append(vpc_1) - self.assertIsNotNone( - network_created, - "Network is not created" - ) - # Creating expected and actual values dictionaries - expected_dict = { - "id":self.test_data["network_without_acl"]["zoneid"], - "name":self.test_data["network_without_acl"]["name"], - } - actual_dict = { - "id":network_created.zoneid, - "name":network_created.name, - } - network_status = self.__verify_values( - expected_dict, - actual_dict - ) - self.assertEqual( - True, - network_status, - "Listed network details are not as expected" - ) + network_created = Network.create( + self.userapiclient, + self.test_data["network_without_acl"], + networkofferingid=network_offering_vpc_true_list[0].id, + vpcid=vpc_1.id, + gateway=self.test_data["ntwk"]["gateway"], + netmask=self.test_data["ntwk"]["netmask"], + domainid=self.domain.id, + accountid=self.account.name, + ) + self.cleanup.append(network_created) + self.cleanup.append(vpc_1) + self.assertIsNotNone( + network_created, + "Network is not created" + ) + # Creating expected and actual values dictionaries + expected_dict = { + "id": self.test_data["network_without_acl"]["zoneid"], + "name": self.test_data["network_without_acl"]["name"], + } + actual_dict = { + "id": network_created.zoneid, + "name": network_created.name, + } + network_status = self.__verify_values( + expected_dict, + actual_dict + ) + self.assertEqual( + True, + network_status, + "Listed network details are not as expected" + ) else: self.assertEqual( - len(list_networks_before), - 1, - "more than 1 network created at class level" - ) + len(list_networks_before), + 1, + "more than 1 network created at class level" + ) # Listing the networks - list_networks_after = Network.list(self.userapiclient, listall=self.test_data["listall"], type="Isolated") + list_networks_after = Network.list( + self.userapiclient, + listall=self.test_data["listall"], + type="Isolated") status = validateList(list_networks_after) self.assertEquals(PASS, status[0], "No networks found using list call") # Asserting for the length of the networks self.assertEqual( - 2, - len(list_networks_after), - "Number of networks created is not matching expected" - ) + 2, + len(list_networks_after), + "Number of networks created is not matching expected" + ) # Listing networks in VPC after creation of network list_networks_in_vpc = Network.list(self.userapiclient, vpcid=vpc_1.id, @@ -1396,54 +1529,62 @@ class TestNetworks_1(cloudstackTestCase): self.assertEquals(PASS, status[0], "No networks found in vpc") # Asserting for the length of the networks self.assertEqual( - 1, - len(list_networks_in_vpc), - "Number of networks created in vpc is not matching expected" - ) + 1, + len(list_networks_in_vpc), + "Number of networks created in vpc is not matching expected" + ) # List VPCs for specific network created in vpc vpc_list = VPC.list( - self.userapiclient, - id=network_created.vpcid - ) + self.userapiclient, + id=network_created.vpcid + ) # List Network ACLs list_network_acl = NetworkACL.list( - self.userapiclient, - networkid=network_created.id - ) - self.assertIsNone(list_network_acl, "ACL list is not empty for newly created network") + self.userapiclient, + networkid=network_created.id + ) + self.assertIsNone( + list_network_acl, + "ACL list is not empty for newly created network") # Create NetworkACL network_acl_created = NetworkACL.create( - self.userapiclient, - self.test_data["network_acl_rule"], - networkid=network_created.id - ) + self.userapiclient, + self.test_data["network_acl_rule"], + networkid=network_created.id + ) self.assertIsNotNone( - network_acl_created, - "NetworkACL is not created" - ) + network_acl_created, + "NetworkACL is not created" + ) # List Network ACL list_network_acl = NetworkACL.list( - self.userapiclient, - networkid=network_created.id - ) + self.userapiclient, + networkid=network_created.id + ) status = validateList(list_network_acl) - self.assertEquals(PASS, status[0], "No networks acls found after creating") + self.assertEquals( + PASS, + status[0], + "No networks acls found after creating") # Asserting for the length of the networks self.assertEqual( - 1, - len(list_network_acl), - "Number of networks acls reated is not matching expected" - ) + 1, + len(list_network_acl), + "Number of networks acls reated is not matching expected" + ) # Delete Network ACL NetworkACL.delete(network_acl_created, self.userapiclient) # List Network ACL list_network_acl = NetworkACL.list( - self.userapiclient, - networkid=network_created.id - ) - self.assertIsNone(list_network_acl, "ACL list is not empty for newly created network") + self.userapiclient, + networkid=network_created.id + ) + self.assertIsNone( + list_network_acl, + "ACL list is not empty for newly created network") return + class TestNetworks_2(cloudstackTestCase): @classmethod @@ -1455,22 +1596,32 @@ class TestNetworks_2(cloudstackTestCase): cls.test_data = cls.testClient.getParsedTestDataConfig() # Get Domain, Zone, Template cls.domain = get_domain(cls.api_client) - cls.zone = get_zone(cls.api_client, cls.testClient.getZoneForTests()) + cls.zone = get_zone( + cls.api_client, + cls.testClient.getZoneForTests()) cls.template = get_template( - cls.api_client, - cls.zone.id, - cls.test_data["ostype"] - ) + cls.api_client, + cls.zone.id, + cls.test_data["ostype"] + ) cls.test_data['mode'] = cls.zone.networktype cls.account = Account.create( - cls.api_client, - cls.test_data["account"], - domainid=cls.domain.id - ) + cls.api_client, + cls.test_data["account"], + domainid=cls.domain.id + ) # Getting authentication for user in newly created Account cls.user = cls.account.user[0] - cls.userapiclient = cls.testClient.getUserApiClient(cls.user.username, cls.domain.name) + cls.userapiclient = cls.testClient.getUserApiClient( + cls.user.username, + cls.domain.name) cls._cleanup.append(cls.account) + + cls.vpc_offering = VpcOffering.create(cls.api_client, + cls.test_data["vpc_offering"] + ) + cls.vpc_offering.update(cls.api_client, state='Enabled') + cls._cleanup.append(cls.vpc_offering) except Exception as e: cls.tearDownClass() raise Exception("Warning: Exception in setup : %s" % e) @@ -1497,10 +1648,11 @@ class TestNetworks_2(cloudstackTestCase): """ @summary: Function to verify expected and actual values Step1: Initializing return flag to True - Step1: Verifying length of expected and actual dictionaries is matching. + Step1: Verifying length of expected and actual dictionaries is matching If not matching returning false Step2: Listing all the keys from expected dictionary - Step3: Looping through each key from step2 and verifying expected and actual dictionaries have same value + Step3: Looping through each key from step2 and verifying expected + and actual dictionaries have same value If not making return flag to False Step4: returning the return flag after all the values are verified """ @@ -1517,10 +1669,10 @@ class TestNetworks_2(cloudstackTestCase): return_flag = return_flag and True else: return_flag = return_flag and False - self.debug("expected Value: %s, is not matching with actual value: %s" % ( - exp_val, - act_val - )) + self.debug( + "expected Value: %s, is not matching with actual value: %s" + % + (exp_val, act_val)) return return_flag @attr(tags=["advanced"], required_hardware="true") @@ -1541,82 +1693,78 @@ class TestNetworks_2(cloudstackTestCase): list_vpc_before = VPC.list(self.userapiclient) # Verifying No VPCs are listed self.assertIsNone( - list_vpc_before, - "Vpc listed for newly created user" - ) - # Listing VPC Offerings - list_vpc_offering = VpcOffering.list(self.userapiclient) - status = validateList(list_vpc_offering) - self.assertEquals(PASS, status[0], "list vpc offering is none") + list_vpc_before, + "Vpc listed for newly created user" + ) # Creating a vpc vpc_created = VPC.create( - self.userapiclient, - self.test_data["vpc"], - list_vpc_offering[0].id, - self.zone.id - ) + self.userapiclient, + self.test_data["vpc"], + self.vpc_offering.id, + self.zone.id + ) self.assertIsNotNone(vpc_created, "VPC Creation Failed") self.cleanup.append(vpc_created) # Listing the vpc for a user after creating a vpc list_vpc_after = VPC.list(self.userapiclient) status = validateList(list_vpc_after) self.assertEquals( - PASS, - status[0], - "list VPC not as expected" - ) + PASS, + status[0], + "list VPC not as expected" + ) # Verifying the list vpc size is increased by 1 self.assertEquals( - 1, - len(list_vpc_after), - "list VPC not equal as expected" - ) + 1, + len(list_vpc_after), + "list VPC not equal as expected" + ) # List the vpc by specifying vpc ID list_vpc_byid = VPC.list( - self.userapiclient, - id=vpc_created.id, - listall=self.test_data["listall"] - ) + self.userapiclient, + id=vpc_created.id, + listall=self.test_data["listall"] + ) status = validateList(list_vpc_byid) self.assertEquals( - PASS, - status[0], - "list VPC not as expected" - ) + PASS, + status[0], + "list VPC not as expected" + ) # Verifying the list vpc size is 1 self.assertEquals( - 1, - len(list_vpc_byid), - "list VPC not equal as expected" - ) - # Verifying the details of the vpc + 1, + len(list_vpc_byid), + "list VPC not equal as expected" + ) + # Verifying the details of the vpc expected_dict = { - "cidr":self.test_data["vpc"]["cidr"], - "id":vpc_created.id, - "displaytext":vpc_created.displaytext, - "account":self.account.name, - "domain":vpc_created.domain, - "domainid":self.domain.id, - "name":vpc_created.name - } + "cidr": self.test_data["vpc"]["cidr"], + "id": vpc_created.id, + "displaytext": vpc_created.displaytext, + "account": self.account.name, + "domain": vpc_created.domain, + "domainid": self.domain.id, + "name": vpc_created.name + } actual_dict = { - "cidr":str(list_vpc_byid[0].cidr), - "id":list_vpc_byid[0].id, - "displaytext":list_vpc_byid[0].displaytext, - "account":list_vpc_byid[0].account, - "domain":list_vpc_byid[0].domain, - "domainid":list_vpc_byid[0].domainid, - "name":list_vpc_byid[0].name - } + "cidr": str(list_vpc_byid[0].cidr), + "id": list_vpc_byid[0].id, + "displaytext": list_vpc_byid[0].displaytext, + "account": list_vpc_byid[0].account, + "domain": list_vpc_byid[0].domain, + "domainid": list_vpc_byid[0].domainid, + "name": list_vpc_byid[0].name + } list_vpc_status = self.__verify_values( - expected_dict, - actual_dict - ) + expected_dict, + actual_dict + ) self.assertEqual( - True, - list_vpc_status, - "Listed VPC details are not as expected" - ) + True, + list_vpc_status, + "Listed VPC details are not as expected" + ) return @attr(tags=["advanced"], required_hardware="true") @@ -1624,11 +1772,13 @@ class TestNetworks_2(cloudstackTestCase): """ @summary: Test List Public IPAddress with associatednetworkid @Steps - Step1: Listing all the public ipadresses for a user before creating a public ipaddress + Step1: Listing all the public ipadresses for a user before creating + a public ipaddress Step2: Verifying no Public ipaddress are listed Step3: Creating a network Step4: Associating public ipaddress for network created in step3 - Step5: Listing the public ipaddress for a user after creating a public ipaddress + Step5: Listing the public ipaddress for a user after creating a + public ipaddress Step6: Verifying the list public ipaddress size is increased by 1 Step7: Listing the public ipaddress by specifying associatednetworkid Step8: Verifying the list public ipaddress size is 1 @@ -1638,122 +1788,129 @@ class TestNetworks_2(cloudstackTestCase): list_public_ipadress_before = PublicIPAddress.list(self.userapiclient) # Verifying No VPCs are listed self.assertIsNone( - list_public_ipadress_before, - "Public ipaddresses listed for newly created user" - ) + list_public_ipadress_before, + "Public ipaddresses listed for newly created user" + ) # Listing Network Offerings network_offerings_list = NetworkOffering.list( - self.apiClient, - forvpc="false", - guestiptype="Isolated", - state="Enabled", - supportedServices="SourceNat", - zoneid=self.zone.id - ) + self.apiClient, + forvpc="false", + guestiptype="Isolated", + state="Enabled", + supportedServices="SourceNat", + zoneid=self.zone.id + ) self.assertIsNotNone( - network_offerings_list, - "Isolated Network Offerings with sourceNat enabled are not found" - ) + network_offerings_list, + "Isolated Network Offerings with sourceNat enabled are not found" + ) # Creating a Network network = Network.create( - self.userapiclient, - self.test_data["network"], - accountid=self.account.name, - domainid=self.domain.id, - networkofferingid=network_offerings_list[0].id, - zoneid=self.zone.id - ) + self.userapiclient, + self.test_data["network"], + accountid=self.account.name, + domainid=self.domain.id, + networkofferingid=network_offerings_list[0].id, + zoneid=self.zone.id + ) self.assertIsNotNone( - network, - "Network creation failed" - ) + network, + "Network creation failed" + ) self.cleanup.append(network) # Associating public ipaddress for network created public_ipaddress_created = PublicIPAddress.create( - self.userapiclient, - accountid=self.account.name, - zoneid=self.zone.id, - domainid=self.domain.id, - networkid=network.id - ) + self.userapiclient, + accountid=self.account.name, + zoneid=self.zone.id, + domainid=self.domain.id, + networkid=network.id + ) self.assertIsNotNone( - public_ipaddress_created, - "Failed to Associate Public IpAddress for Network" - ) - # Listing the public ipaddress for a user after associating a public ipaddress for network + public_ipaddress_created, + "Failed to Associate Public IpAddress for Network" + ) + # Listing the public ipaddress for a user after associating a public + # ipaddress for network list_public_ipaddress_after = PublicIPAddress.list(self.userapiclient) status = validateList(list_public_ipaddress_after) self.assertEquals( - PASS, - status[0], - "list Public IPAddress not as expected" - ) + PASS, + status[0], + "list Public IPAddress not as expected" + ) # Verifying the list public ipaddress size is increased by 1 self.assertEquals( - 1, - len(list_public_ipaddress_after), - "list Public IPAddress not equal as expected" - ) + 1, + len(list_public_ipaddress_after), + "list Public IPAddress not equal as expected" + ) # List the public ipaddress by specifying public ipaddress ID list_public_ipaddress_byid = PublicIPAddress.list( - self.userapiclient, - associatednetworkid=network.id, - listall=self.test_data["listall"] - ) + self.userapiclient, + associatednetworkid=network.id, + listall=self.test_data["listall"] + ) status = validateList(list_public_ipaddress_byid) self.assertEquals( - PASS, - status[0], - "list public ipaddress not as expected" - ) + PASS, + status[0], + "list public ipaddress not as expected" + ) # Verifying the list public ipaddress size is 1 self.assertEquals( - 1, - len(list_public_ipaddress_byid), - "list public ipaddress not equal as expected" - ) - # Verifying the details of the public ipaddress + 1, + len(list_public_ipaddress_byid), + "list public ipaddress not equal as expected" + ) + # Verifying the details of the public ipaddress expected_dict = { - "account":public_ipaddress_created.ipaddress.account, - "associatednetworkid":public_ipaddress_created.ipaddress.associatednetworkid, - "associatednetworkname":public_ipaddress_created.ipaddress.associatednetworkname, - "domainid":public_ipaddress_created.ipaddress.domainid, - "forvirtualnetwork":public_ipaddress_created.ipaddress.forvirtualnetwork, - "id":public_ipaddress_created.ipaddress.id, - "ipaddress":public_ipaddress_created.ipaddress.ipaddress, - "isportable":public_ipaddress_created.ipaddress.isportable, - "issourcenat":public_ipaddress_created.ipaddress.issourcenat, - "isstatisnat":public_ipaddress_created.ipaddress.isstaticnat, - "issystem":public_ipaddress_created.ipaddress.issystem, - "networkid":public_ipaddress_created.ipaddress.network, - "physicalnetworkid":public_ipaddress_created.ipaddress.physicalnetworkid, - "zoneid":public_ipaddress_created.ipaddress.zoneid - } + "account": public_ipaddress_created.ipaddress.account, + "associatednetworkid": + public_ipaddress_created.ipaddress.associatednetworkid, + "associatednetworkname": + public_ipaddress_created.ipaddress.associatednetworkname, + "domainid": public_ipaddress_created.ipaddress.domainid, + "forvirtualnetwork": + public_ipaddress_created.ipaddress.forvirtualnetwork, + "id": public_ipaddress_created.ipaddress.id, + "ipaddress": public_ipaddress_created.ipaddress.ipaddress, + "isportable": public_ipaddress_created.ipaddress.isportable, + "issourcenat": public_ipaddress_created.ipaddress.issourcenat, + "isstatisnat": public_ipaddress_created.ipaddress.isstaticnat, + "issystem": public_ipaddress_created.ipaddress.issystem, + "networkid": public_ipaddress_created.ipaddress.network, + "physicalnetworkid": + public_ipaddress_created.ipaddress.physicalnetworkid, + "zoneid": public_ipaddress_created.ipaddress.zoneid} actual_dict = { - "account":list_public_ipaddress_byid[0].account, - "associatednetworkid":list_public_ipaddress_byid[0].associatednetworkid, - "associatednetworkname":list_public_ipaddress_byid[0].associatednetworkname, - "domainid":list_public_ipaddress_byid[0].domainid, - "forvirtualnetwork":list_public_ipaddress_byid[0].forvirtualnetwork, - "id":list_public_ipaddress_byid[0].id, - "ipaddress":list_public_ipaddress_byid[0].ipaddress, - "isportable":list_public_ipaddress_byid[0].isportable, - "issourcenat":list_public_ipaddress_byid[0].issourcenat, - "isstatisnat":list_public_ipaddress_byid[0].isstaticnat, - "issystem":list_public_ipaddress_byid[0].issystem, - "networkid":list_public_ipaddress_byid[0].network, - "physicalnetworkid":list_public_ipaddress_byid[0].physicalnetworkid, - "zoneid":list_public_ipaddress_byid[0].zoneid - } + "account": list_public_ipaddress_byid[0].account, + "associatednetworkid": + list_public_ipaddress_byid[0].associatednetworkid, + "associatednetworkname": + list_public_ipaddress_byid[0].associatednetworkname, + "domainid": list_public_ipaddress_byid[0].domainid, + "forvirtualnetwork": + list_public_ipaddress_byid[0].forvirtualnetwork, + "id": list_public_ipaddress_byid[0].id, + "ipaddress": list_public_ipaddress_byid[0].ipaddress, + "isportable": list_public_ipaddress_byid[0].isportable, + "issourcenat": list_public_ipaddress_byid[0].issourcenat, + "isstatisnat": list_public_ipaddress_byid[0].isstaticnat, + "issystem": list_public_ipaddress_byid[0].issystem, + "networkid": list_public_ipaddress_byid[0].network, + "physicalnetworkid": + list_public_ipaddress_byid[0].physicalnetworkid, + "zoneid": list_public_ipaddress_byid[0].zoneid} list_public_ipaddress_status = self.__verify_values( - expected_dict, - actual_dict - ) + expected_dict, + actual_dict + ) self.assertEqual( - True, - list_public_ipaddress_status, - "Listed Public IPAddress details are not as expected" - ) + True, + list_public_ipaddress_status, + "Listed Public IPAddress details are not as expected" + ) return @attr(tags=["advanced"], required_hardware="true") @@ -1762,7 +1919,8 @@ class TestNetworks_2(cloudstackTestCase): @summary: Test List PrivateGateway by vpcid @Steps Step1: Creating a VPC - Step2: Listing all the private gateway before creating a private gateway + Step2: Listing all the private gateway before creating a + private gateway Step3: Verifying no Private Gateway are listed Step4: Listing the Private Gateway after creating a Private Gateway Step5: Verifying the list Private Gateway size is increased by 1 @@ -1770,115 +1928,107 @@ class TestNetworks_2(cloudstackTestCase): Step7: Verifying the list Private Gateway size is 1 Step8: Verifying the details of the Private Gateway """ - # Listing VPC Offerings - list_vpc_offering = VpcOffering.list(self.userapiclient) - status = validateList(list_vpc_offering) - self.assertEquals( - PASS, - status[0], - "list vpc offering is none" - ) # Creating a vpc vpc_created = VPC.create( - self.userapiclient, - self.test_data["vpc"], - list_vpc_offering[0].id, - self.zone.id - ) + self.userapiclient, + self.test_data["vpc"], + self.vpc_offering.id, + self.zone.id + ) self.assertIsNotNone(vpc_created, "VPC Creation Failed") self.cleanup.append(vpc_created) # Listing all the PrivateGateways list_private_gateways_before = PrivateGateway.list( - self.apiClient, - listall=self.test_data["listall"], - vpcid=vpc_created.id - ) + self.apiClient, + listall=self.test_data["listall"], + vpcid=vpc_created.id + ) # Verifying No PrivateGateways are listed self.assertIsNone( - list_private_gateways_before, - "Listed private gateways for newly created VPC " - ) + list_private_gateways_before, + "Listed private gateways for newly created VPC " + ) # Creating a Private Gateway private_gateway_created = PrivateGateway.create( - self.apiClient, - vpcid=vpc_created.id, - gateway=self.test_data["private_gateway"]["gateway"], - ipaddress=self.test_data["private_gateway"]["ipaddress"], - netmask=self.test_data["private_gateway"]["netmask"], - vlan=self.test_data["private_gateway"]["vlan"] - ) + self.apiClient, + vpcid=vpc_created.id, + gateway=self.test_data["private_gateway"]["gateway"], + ipaddress=self.test_data["private_gateway"]["ipaddress"], + netmask=self.test_data["private_gateway"]["netmask"], + vlan=self.test_data["private_gateway"]["vlan"] + ) self.assertIsNotNone( - private_gateway_created, - "Private Gateway Creation Failed" - ) - # Listing all the PrivateGateways + private_gateway_created, + "Private Gateway Creation Failed" + ) + # Listing all the PrivateGateways list_private_gateways_after = PrivateGateway.list( - self.apiClient, - listall=self.test_data["listall"], - vpcid=vpc_created.id - ) + self.apiClient, + listall=self.test_data["listall"], + vpcid=vpc_created.id + ) # Verifying PrivateGateways are listed status = validateList(list_private_gateways_after) self.assertEquals(PASS, status[0], "Private Gateway Creation Failed") self.assertEquals( - 1, - len(list_private_gateways_after), - "list Private Gateway not equal as expected" - ) + 1, + len(list_private_gateways_after), + "list Private Gateway not equal as expected" + ) # Listing Private Gateway by vpcid list_privategateway_byvpcid = PrivateGateway.list( - self.userapiclient, - listall=self.test_data["listall"], - vpcid=vpc_created.id - ) + self.userapiclient, + listall=self.test_data["listall"], + vpcid=vpc_created.id + ) status = validateList(list_privategateway_byvpcid) self.assertEquals( - PASS, - status[0], - "list private gateway not as expected" - ) + PASS, + status[0], + "list private gateway not as expected" + ) # Verifying the list private gateway size is 1 self.assertEquals( - 1, - len(list_privategateway_byvpcid), - "list private gateway not equal as expected" - ) - # Verifying the details of the private gateway + 1, + len(list_privategateway_byvpcid), + "list private gateway not equal as expected" + ) + # Verifying the details of the private gateway expected_dict = { - "account":private_gateway_created.account, - "aclid":private_gateway_created.aclid, - "domainid":private_gateway_created.domainid, - "gateway":self.test_data["private_gateway"]["gateway"], - "id":private_gateway_created.id, - "ipaddress":self.test_data["private_gateway"]["ipaddress"], - "netmask":self.test_data["private_gateway"]["netmask"], - "sourcenatsupported":private_gateway_created.sourcenatsupported, - "vlan":self.test_data["private_gateway"]["vlan"], - "vpcid":private_gateway_created.vpcid, - "zoneid":private_gateway_created.zoneid - } + "account": private_gateway_created.account, + "aclid": private_gateway_created.aclid, + "domainid": private_gateway_created.domainid, + "gateway": self.test_data["private_gateway"]["gateway"], + "id": private_gateway_created.id, + "ipaddress": self.test_data["private_gateway"]["ipaddress"], + "netmask": self.test_data["private_gateway"]["netmask"], + "sourcenatsupported": private_gateway_created.sourcenatsupported, + "vlan": self.test_data["private_gateway"]["vlan"], + "vpcid": private_gateway_created.vpcid, + "zoneid": private_gateway_created.zoneid + } actual_dict = { - "account":list_privategateway_byvpcid[0].account, - "aclid":list_privategateway_byvpcid[0].aclid, - "domainid":list_privategateway_byvpcid[0].domainid, - "gateway":list_privategateway_byvpcid[0].gateway, - "id":list_privategateway_byvpcid[0].id, - "ipaddress":list_privategateway_byvpcid[0].ipaddress, - "netmask":list_privategateway_byvpcid[0].netmask, - "sourcenatsupported":list_privategateway_byvpcid[0].sourcenatsupported, - "vlan":list_privategateway_byvpcid[0].vlan, - "vpcid":list_privategateway_byvpcid[0].vpcid, - "zoneid":list_privategateway_byvpcid[0].zoneid - } + "account": list_privategateway_byvpcid[0].account, + "aclid": list_privategateway_byvpcid[0].aclid, + "domainid": list_privategateway_byvpcid[0].domainid, + "gateway": list_privategateway_byvpcid[0].gateway, + "id": list_privategateway_byvpcid[0].id, + "ipaddress": list_privategateway_byvpcid[0].ipaddress, + "netmask": list_privategateway_byvpcid[0].netmask, + "sourcenatsupported": + list_privategateway_byvpcid[0].sourcenatsupported, + "vlan": list_privategateway_byvpcid[0].vlan, + "vpcid": list_privategateway_byvpcid[0].vpcid, + "zoneid": list_privategateway_byvpcid[0].zoneid} list_private_gateway_status = self.__verify_values( - expected_dict, - actual_dict - ) + expected_dict, + actual_dict + ) self.assertEqual( - True, - list_private_gateway_status, - "Listed Private Gateway details are not as expected" - ) + True, + list_private_gateway_status, + "Listed Private Gateway details are not as expected" + ) return @attr(tags=["advanced"], required_hardware="true") @@ -1887,7 +2037,8 @@ class TestNetworks_2(cloudstackTestCase): @summary: Test Create List Delete Egress Firewall Rule by Network ID @Steps Step1: Creating a Nerwork - Step2: Listing all the egressfirewall rule before creating a egressfirewall rule + Step2: Listing all the egressfirewall rule before creating a + egressfirewall rule Step3: Verifying no egressfirewall rule are listed Step4: Creating a egressfirewall rule for a user Step5: Listing the egressfirewall rule by specifying Network ID @@ -1898,137 +2049,138 @@ class TestNetworks_2(cloudstackTestCase): """ # Listing all the Networks's for a user list_networks_before = Network.list( - self.userapiclient, - listall=self.test_data["listall"], - type="Isolated" - ) + self.userapiclient, + listall=self.test_data["listall"], + type="Isolated" + ) # Verifying No Networks are listed self.assertIsNone( - list_networks_before, - "Networks listed for newly created User" - ) + list_networks_before, + "Networks listed for newly created User" + ) # Listing Network Offerings network_offerings_list = NetworkOffering.list( - self.apiClient, - forvpc="false", - guestiptype="Isolated", - state="Enabled", - supportedservices="SourceNat", - zoneid=self.zone.id - ) + self.apiClient, + forvpc="false", + guestiptype="Isolated", + state="Enabled", + supportedservices="SourceNat", + zoneid=self.zone.id + ) self.assertIsNotNone( - network_offerings_list, - "Isolated Network Offerings with sourceNat enabled are not found" - ) + network_offerings_list, + "Isolated Network Offerings with sourceNat enabled are not found" + ) # Creating a Network network = Network.create( - self.userapiclient, - self.test_data["network"], - accountid=self.account.name, - domainid=self.domain.id, - networkofferingid=network_offerings_list[0].id, - zoneid=self.zone.id - ) + self.userapiclient, + self.test_data["network"], + accountid=self.account.name, + domainid=self.domain.id, + networkofferingid=network_offerings_list[0].id, + zoneid=self.zone.id + ) self.assertIsNotNone( - network, - "Network creation failed" - ) + network, + "Network creation failed" + ) self.cleanup.append(network) - # Listing Networks after + # Listing Networks after list_networks_after = Network.list( - self.userapiclient, - listall=self.test_data["listall"], - type="Isolated" - ) + self.userapiclient, + listall=self.test_data["listall"], + type="Isolated" + ) status = validateList(list_networks_after) self.assertEquals( - PASS, - status[0], - "Network Creation Failed" - ) + PASS, + status[0], + "Network Creation Failed" + ) # Verifying network list count is increased by 1 self.assertEquals( - 1, - len(list_networks_after), - "Network Creation Failed" - ) + 1, + len(list_networks_after), + "Network Creation Failed" + ) # Listing EgressFirewall Rule list_egressfirewallrule_before = EgressFireWallRule.list( - self.userapiclient, - listall=self.test_data["listall"], - networkid=network.id - ) - # Verifying No EgressFirewall Rule are listed - self.assertIsNone( - list_egressfirewallrule_before, - "Listed egressfirewall rule for a user" - ) - # Creating a EgressFirewall Rule - egressfirewallrule_created = EgressFireWallRule.create( - self.userapiclient, - networkid=network.id, - protocol=self.test_data["ingress_rule"]["protocol"], - cidrlist=self.test_data["ingress_rule"]["cidrlist"], - startport=self.test_data["ingress_rule"]["startport"], - endport=self.test_data["ingress_rule"]["endport"], - ) - self.assertIsNotNone( - egressfirewallrule_created, - "EgressFirewall Rule Creation Failed" - ) - # ListingEgressFirewall Rule by networkid - list_egressfirewallrule_bynetworkid = EgressFireWallRule.list( - self.userapiclient, - listall=self.test_data["listall"], - networkid=network.id - ) - status = validateList(list_egressfirewallrule_bynetworkid) - self.assertEquals( - PASS, - status[0], - "list EgressFirewall Rule not as expected" - ) - # Verifying the list EgressFirewall Rule size is 1 - self.assertEquals( - 1, - len(list_egressfirewallrule_bynetworkid), - "list EgressFirewall Rule not equal as expected" - ) - # Verifying the details of the EgressFirewall Rule - expected_dict = { - "cidrlist":self.test_data["ingress_rule"]["cidrlist"], - "id":egressfirewallrule_created.id, - "networkid":egressfirewallrule_created.networkid, - "protocol":self.test_data["ingress_rule"]["protocol"] - } - actual_dict = { - "cidrlist":str(list_egressfirewallrule_bynetworkid[0].cidrlist), - "id":list_egressfirewallrule_bynetworkid[0].id, - "networkid":list_egressfirewallrule_bynetworkid[0].networkid, - "protocol":str(list_egressfirewallrule_bynetworkid[0].protocol).upper() - } - list_egressfirewallrule_status = self.__verify_values( - expected_dict, - actual_dict - ) - self.assertEqual( - True, - list_egressfirewallrule_status, - "Listed EgressFirewall Rule details are not as expected" - ) - # Deleting the EgressFirewall Rule by networkid - egressfirewallrule_created.delete(self.userapiclient); - # Listing the EgressFirewall Rule by networkid - list_deleted_egressfirewallrule_bynetworkid = EgressFireWallRule.list( - self.userapiclient, - listall=self.test_data["listall"], - networkid=network.id - ) + self.userapiclient, + listall=self.test_data["listall"], + networkid=network.id + ) # Verifying No EgressFirewall Rule are listed self.assertIsNone( - list_deleted_egressfirewallrule_bynetworkid, - "EgressFirewall Rule deletion fails" - ) + list_egressfirewallrule_before, + "Listed egressfirewall rule for a user" + ) + # Creating a EgressFirewall Rule + egressfirewallrule_created = EgressFireWallRule.create( + self.userapiclient, + networkid=network.id, + protocol=self.test_data["ingress_rule"]["protocol"], + cidrlist=self.test_data["ingress_rule"]["cidrlist"], + startport=self.test_data["ingress_rule"]["startport"], + endport=self.test_data["ingress_rule"]["endport"], + ) + self.assertIsNotNone( + egressfirewallrule_created, + "EgressFirewall Rule Creation Failed" + ) + # ListingEgressFirewall Rule by networkid + list_egressfirewallrule_bynetworkid = EgressFireWallRule.list( + self.userapiclient, + listall=self.test_data["listall"], + networkid=network.id + ) + status = validateList(list_egressfirewallrule_bynetworkid) + self.assertEquals( + PASS, + status[0], + "list EgressFirewall Rule not as expected" + ) + # Verifying the list EgressFirewall Rule size is 1 + self.assertEquals( + 1, + len(list_egressfirewallrule_bynetworkid), + "list EgressFirewall Rule not equal as expected" + ) + # Verifying the details of the EgressFirewall Rule + expected_dict = { + "cidrlist": self.test_data["ingress_rule"]["cidrlist"], + "id": egressfirewallrule_created.id, + "networkid": egressfirewallrule_created.networkid, + "protocol": self.test_data["ingress_rule"]["protocol"] + } + actual_dict = { + "cidrlist": str( + list_egressfirewallrule_bynetworkid[0].cidrlist), + "id": list_egressfirewallrule_bynetworkid[0].id, + "networkid": list_egressfirewallrule_bynetworkid[0].networkid, + "protocol": str( + list_egressfirewallrule_bynetworkid[0].protocol).upper()} + list_egressfirewallrule_status = self.__verify_values( + expected_dict, + actual_dict + ) + self.assertEqual( + True, + list_egressfirewallrule_status, + "Listed EgressFirewall Rule details are not as expected" + ) + # Deleting the EgressFirewall Rule by networkid + egressfirewallrule_created.delete(self.userapiclient) + # Listing the EgressFirewall Rule by networkid + list_deleted_egressfirewallrule_bynetworkid = EgressFireWallRule.list( + self.userapiclient, + listall=self.test_data["listall"], + networkid=network.id + ) + # Verifying No EgressFirewall Rule are listed + self.assertIsNone( + list_deleted_egressfirewallrule_bynetworkid, + "EgressFirewall Rule deletion fails" + ) return @attr(tags=["advanced"], required_hardware="true") @@ -2050,68 +2202,60 @@ class TestNetworks_2(cloudstackTestCase): list_vpc_before = VPC.list(self.userapiclient) # Verifying No VPCs are listed self.assertIsNone( - list_vpc_before, - "Vpc listed for newly created user" - ) - # Listing VPC Offerings - list_vpc_offering = VpcOffering.list(self.userapiclient) - status = validateList(list_vpc_offering) - self.assertEquals( - PASS, - status[0], - "list vpc offering is none" - ) + list_vpc_before, + "Vpc listed for newly created user" + ) # Creating a vpc vpc_created = VPC.create( - self.userapiclient, - self.test_data["vpc"], - list_vpc_offering[0].id, - self.zone.id - ) + self.userapiclient, + self.test_data["vpc"], + self.vpc_offering.id, + self.zone.id + ) self.assertIsNotNone(vpc_created, "VPC Creation Failed") # Listing the vpc for a user after creating a vpc list_vpc_after = VPC.list(self.userapiclient) status = validateList(list_vpc_after) self.assertEquals( - PASS, - status[0], - "list VPC not as expected" - ) + PASS, + status[0], + "list VPC not as expected" + ) # Verifying the list vpc size is increased by 1 self.assertEquals( - 1, - len(list_vpc_after), - "list VPC not equal as expected" - ) + 1, + len(list_vpc_after), + "list VPC not equal as expected" + ) self.cleanup.append(vpc_created) # Restarting VPC vpc_restarted = VPC.restart(vpc_created, self.userapiclient) # Verifying restart function resturns true self.assertTrue(vpc_restarted, "Restart fails") - # List the vpc by specifying vpc ID + # List the vpc by specifying vpc ID list_vpc_byid = VPC.list( - self.userapiclient, - id=vpc_created.id, - listall=self.test_data["listall"] - ) + self.userapiclient, + id=vpc_created.id, + listall=self.test_data["listall"] + ) status = validateList(list_vpc_byid) self.assertEquals( - PASS, - status[0], - "list VPC not as expected" - ) + PASS, + status[0], + "list VPC not as expected" + ) # Verifying the list vpc size is 1 self.assertEquals( - 1, - len(list_vpc_byid), - "list VPC not equal as expected" - ) + 1, + len(list_vpc_byid), + "list VPC not equal as expected" + ) # Verfying whether sate is Enabled self.assertEqual( - "Enabled", - list_vpc_byid[0].state, - "Restarted VPC is not in Enabled state" - ) + "Enabled", + list_vpc_byid[0].state, + "Restarted VPC is not in Enabled state" + ) return @attr(tags=["advanced"], required_hardware="true") @@ -2127,116 +2271,114 @@ class TestNetworks_2(cloudstackTestCase): Step6: Verifying the list size is increased by 1 Step7: Verifying the details of a VPN gateway """ - # Listing all the vpc's for a user + # Listing all the vpc's for a user list_vpc_before = VPC.list(self.userapiclient) # Verifying No VPCs are listed self.assertIsNone( - list_vpc_before, - "Vpc listed for newly created user" - ) - # Listing VPC Offerings - list_vpc_offering = VpcOffering.list(self.userapiclient) - status = validateList(list_vpc_offering) - self.assertEquals(PASS, status[0], "list vpc offering is none") + list_vpc_before, + "Vpc listed for newly created user" + ) # Creating a vpc vpc_created = VPC.create( - self.userapiclient, - self.test_data["vpc"], - list_vpc_offering[0].id, - self.zone.id - ) + self.userapiclient, + self.test_data["vpc"], + self.vpc_offering.id, + self.zone.id + ) self.assertIsNotNone(vpc_created, "VPC Creation Failed") self.cleanup.append(vpc_created) # Listing the vpc for a user after creating a vpc list_vpc_after = VPC.list(self.userapiclient) status = validateList(list_vpc_after) self.assertEquals( - PASS, - status[0], - "list VPC not as expected" - ) + PASS, + status[0], + "list VPC not as expected" + ) # Verifying the list vpc size is increased by 1 self.assertEquals( - 1, - len(list_vpc_after), - "list VPC not equal as expected" - ) - # Listing all the vpn gateways for a user + 1, + len(list_vpc_after), + "list VPC not equal as expected" + ) + # Listing all the vpn gateways for a user list_vpngateway_before = Vpn.listVpnGateway( - self.userapiclient, - listall=self.test_data["listall"], - vpcid=vpc_created.id - ) + self.userapiclient, + listall=self.test_data["listall"], + vpcid=vpc_created.id + ) # Verifying No VPN Gateways are listed self.assertIsNone( - list_vpngateway_before, - "Vpn gateway listed for newly created user" - ) + list_vpngateway_before, + "Vpn gateway listed for newly created user" + ) # Creating a VPN Gateway vpngateway_created = Vpn.createVpnGateway( - self.userapiclient, - vpcid=vpc_created.id, - ) + self.userapiclient, + vpcid=vpc_created.id, + ) self.assertIsNotNone( - vpngateway_created, - "VPN Gateway creation failed" - ) + vpngateway_created, + "VPN Gateway creation failed" + ) # Listing all the VPN Gateways for a User list_vpngateway_after = Vpn.listVpnGateway( - self.userapiclient, - listall=self.test_data["listall"], - vpcid=vpc_created.id - ) + self.userapiclient, + listall=self.test_data["listall"], + vpcid=vpc_created.id + ) status = validateList(list_vpngateway_after) self.assertEquals( - PASS, - status[0], - "List VPN Gateway not equal as expected" - ) + PASS, + status[0], + "List VPN Gateway not equal as expected" + ) # Verifying that list size is 1 self.assertEquals( - 1, - len(list_vpngateway_after - ), - "Failed to list vpn gateway" - ) + 1, + len(list_vpngateway_after + ), + "Failed to list vpn gateway" + ) # Verifying the details of the vpn gateway expected_dict = { - "account":vpngateway_created["account"], - "domainid":vpngateway_created["domainid"], - "id":vpngateway_created["id"], - "publicip":vpngateway_created["publicip"], - "vpcid":vpngateway_created["vpcid"] - } + "account": vpngateway_created["account"], + "domainid": vpngateway_created["domainid"], + "id": vpngateway_created["id"], + "publicip": vpngateway_created["publicip"], + "vpcid": vpngateway_created["vpcid"] + } actual_dict = { - "account":list_vpngateway_after[0].account, - "domainid":list_vpngateway_after[0].domainid, - "id":list_vpngateway_after[0].id, - "publicip":list_vpngateway_after[0].publicip, - "vpcid":list_vpngateway_after[0].vpcid - } + "account": list_vpngateway_after[0].account, + "domainid": list_vpngateway_after[0].domainid, + "id": list_vpngateway_after[0].id, + "publicip": list_vpngateway_after[0].publicip, + "vpcid": list_vpngateway_after[0].vpcid + } list_vpn_gateway_status = self.__verify_values( - expected_dict, - actual_dict - ) + expected_dict, + actual_dict + ) self.assertEqual( - True, - list_vpn_gateway_status, - "Listed VPN Gateway details are not as expected" - ) + True, + list_vpn_gateway_status, + "Listed VPN Gateway details are not as expected" + ) return @attr(tags=["advanced"], required_hardware="true") def test_19_create_list_reset_delete_vpnconnections(self): """ - @Desc: Test to List Create Reset and Delete VPN Customer Gateways pagination + @Desc: Test to List Create Reset and Delete VPN Customer + Gateways pagination @steps: Step1: Create VPC Step2: Create VPN gateway Step3: Create VPN Customer Gateway Step4: Listing all the VPN Connections for a user Step5: Verifying No VPN Connection are listed - Step6: Create a VPN Connection using VPN Gateway and VPN Customer Gateway + Step6: Create a VPN Connection using VPN Gateway and + VPN Customer Gateway Step7: Listing all the VPN Connections by vpcid for a user Step8: Verifying that list size is 1 Step9: Reset the vpn connection @@ -2246,233 +2388,230 @@ class TestNetworks_2(cloudstackTestCase): Step13: Listing all the VPN Connection for a user Step14: Verifying that no VPN Connection are listed """ - # Listing all the vpc's for a user + # Listing all the vpc's for a user list_vpc_before = VPC.list(self.userapiclient) # Verifying No VPCs are listed self.assertIsNone( - list_vpc_before, - "Vpc listed for newly created user" - ) - # Listing VPC Offerings - list_vpc_offering = VpcOffering.list(self.userapiclient) - status = validateList(list_vpc_offering) - self.assertEquals(PASS, status[0], "list vpc offering is none") + list_vpc_before, + "Vpc listed for newly created user" + ) # Creating a vpc vpc_created = VPC.create( - self.userapiclient, - self.test_data["vpc"], - list_vpc_offering[0].id, - self.zone.id - ) + self.userapiclient, + self.test_data["vpc"], + self.vpc_offering.id, + self.zone.id + ) self.assertIsNotNone(vpc_created, "VPC Creation Failed") self.cleanup.append(vpc_created) # Listing the vpc for a user after creating a vpc list_vpc_after = VPC.list(self.userapiclient) status = validateList(list_vpc_after) self.assertEquals( - PASS, - status[0], - "list VPC not as expected" - ) + PASS, + status[0], + "list VPC not as expected" + ) # Verifying the list vpc size is increased by 1 self.assertEquals( - 1, - len(list_vpc_after), - "list VPC not equal as expected" - ) - # Listing all the vpn gateways for a user + 1, + len(list_vpc_after), + "list VPC not equal as expected" + ) + # Listing all the vpn gateways for a user list_vpngateway_before = Vpn.listVpnGateway( - self.userapiclient, - listall=self.test_data["listall"], - vpcid=vpc_created.id - ) + self.userapiclient, + listall=self.test_data["listall"], + vpcid=vpc_created.id + ) # Verifying No VPN Gateways are listed self.assertIsNone( - list_vpngateway_before, - "Vpn gateway listed for newly created user" - ) + list_vpngateway_before, + "Vpn gateway listed for newly created user" + ) # Creating a VPN Gateway vpngateway_created = Vpn.createVpnGateway( - self.userapiclient, - vpcid=vpc_created.id, - ) + self.userapiclient, + vpcid=vpc_created.id, + ) self.assertIsNotNone( - vpngateway_created, - "VPN Gateway creation failed" - ) + vpngateway_created, + "VPN Gateway creation failed" + ) # Listing all the VPN Gateways for a User list_vpngateway_after = Vpn.listVpnGateway( - self.userapiclient, - listall=self.test_data["listall"], - vpcid=vpc_created.id - ) + self.userapiclient, + listall=self.test_data["listall"], + vpcid=vpc_created.id + ) status = validateList(list_vpngateway_after) self.assertEquals( - PASS, - status[0], - "List VPN Gateway not equal as expected" - ) + PASS, + status[0], + "List VPN Gateway not equal as expected" + ) # Verifying that list size is 1 self.assertEquals( - 1, - len(list_vpngateway_after - ), - "Failed to list vpn gateway" - ) + 1, + len(list_vpngateway_after + ), + "Failed to list vpn gateway" + ) # Listing all the VPN Customer Gateways for a User list_vpncustomergateways_before = VpnCustomerGateway.list( - self.userapiclient, - listall=self.test_data["listall"] - ) + self.userapiclient, + listall=self.test_data["listall"] + ) # Verifying that no VPN Customer Gateways are listed self.assertIsNone( - list_vpncustomergateways_before, - "VPN Customer Gateways listed for newly created User" - ) + list_vpncustomergateways_before, + "VPN Customer Gateways listed for newly created User" + ) # Creating VPN Customer Gateways vpncustomergateway_created = VpnCustomerGateway.create( - self.userapiclient, - self.test_data["vpncustomergateway"], - name="VPNCustGateway", - gateway="10.102.153.1", - cidrlist="10.0.0.0/24", - account=self.account.name, - domainid=self.domain.id - ) + self.userapiclient, + self.test_data["vpncustomergateway"], + name="VPNCustGateway", + gateway="10.102.153.1", + cidrlist="10.0.0.0/24", + account=self.account.name, + domainid=self.domain.id + ) self.assertIsNotNone( - vpncustomergateway_created, - "VPN Customer Gateway creation failed" - ) + vpncustomergateway_created, + "VPN Customer Gateway creation failed" + ) self.cleanup.append(vpncustomergateway_created) # Listing all the VPN Customer Gateways for a User list_vpncustomergateways_after = VpnCustomerGateway.list( - self.userapiclient, - listall=self.test_data["listall"], - ) + self.userapiclient, + listall=self.test_data["listall"], + ) status = validateList(list_vpncustomergateways_after) self.assertEquals( - PASS, - status[0], - "VPN Customer Gateway list failed" - ) + PASS, + status[0], + "VPN Customer Gateway list failed" + ) # Verifying that list size is 1 self.assertEquals( - 1, - len(list_vpncustomergateways_after), - "Failed to list VPN Customer Gateways" - ) - # Listing all the vpc's for a user + 1, + len(list_vpncustomergateways_after), + "Failed to list VPN Customer Gateways" + ) + # Listing all the vpc's for a user list_vpn_connection_before = Vpn.listVpnConnection( - self.userapiclient, - listall=self.test_data["listall"], - vpcid=vpc_created.id - ) + self.userapiclient, + listall=self.test_data["listall"], + vpcid=vpc_created.id + ) # Verifying No VPC Connections are listed self.assertIsNone( - list_vpn_connection_before, - "Vpn connection listed for newly created user" - ) + list_vpn_connection_before, + "Vpn connection listed for newly created user" + ) # Creating VPN Connection vpnconnections_created = Vpn.createVpnConnection( - self.userapiclient, - s2scustomergatewayid=vpncustomergateway_created.id, - s2svpngatewayid=vpngateway_created["id"] - ) + self.userapiclient, + s2scustomergatewayid=vpncustomergateway_created.id, + s2svpngatewayid=vpngateway_created["id"] + ) self.assertIsNotNone( - vpnconnections_created, - "VPN Connection creation failed" - ) + vpnconnections_created, + "VPN Connection creation failed" + ) # Listing the vpn connection for a user after creating a vpn connection list_vpn_connection_after = Vpn.listVpnConnection( - self.userapiclient, - listall=self.test_data["listall"], - vpcid=vpc_created.id - ) + self.userapiclient, + listall=self.test_data["listall"], + vpcid=vpc_created.id + ) status = validateList(list_vpn_connection_after) self.assertEquals( - PASS, - status[0], - "list VPN Connection not as expected" - ) + PASS, + status[0], + "list VPN Connection not as expected" + ) # Verifying the list vpn connection size is increased by 1 self.assertEquals( - 1, - len(list_vpn_connection_after), - "list VPC Connection equal as expected" - ) + 1, + len(list_vpn_connection_after), + "list VPC Connection equal as expected" + ) # Resets VPN Connection Vpn.resetVpnConnection( - self.userapiclient, - id=list_vpn_connection_after[0].id, - ) + self.userapiclient, + id=list_vpn_connection_after[0].id, + ) # Lists VPN Connection by vpcid list_vpn_connection_after_reset = Vpn.listVpnConnection( - self.userapiclient, - listall=self.test_data["listall"], - vpcid=vpc_created.id - ) + self.userapiclient, + listall=self.test_data["listall"], + vpcid=vpc_created.id + ) status = validateList(list_vpn_connection_after_reset) self.assertEquals( - PASS, - status[0], - "list VPN Connection not as expected" - ) + PASS, + status[0], + "list VPN Connection not as expected" + ) # Verifying the list vpn connection size is increased by 1 self.assertEquals( - 1, - len(list_vpn_connection_after_reset), - "list VPN Connection not equal as expected" - ) - # Verifying the details of the vpn connection after reset + 1, + len(list_vpn_connection_after_reset), + "list VPN Connection not equal as expected" + ) + # Verifying the details of the vpn connection after reset expected_dict = { - "account":list_vpn_connection_after[0].account, - "cidrlist":list_vpn_connection_after[0].cidrlist, - "domain":list_vpn_connection_after[0].domain, - "dpd":list_vpn_connection_after[0].dpd, - "gateway":list_vpn_connection_after[0].gateway, - "id":list_vpn_connection_after[0].id, - "passive":list_vpn_connection_after[0].passive, - "publicip":list_vpn_connection_after[0].publicip, - "s2scustomergatewayid":list_vpn_connection_after[0].s2scustomergatewayid, - "s2svpngatewayid":list_vpn_connection_after[0].s2svpngatewayid - } + "account": list_vpn_connection_after[0].account, + "cidrlist": list_vpn_connection_after[0].cidrlist, + "domain": list_vpn_connection_after[0].domain, + "dpd": list_vpn_connection_after[0].dpd, + "gateway": list_vpn_connection_after[0].gateway, + "id": list_vpn_connection_after[0].id, + "passive": list_vpn_connection_after[0].passive, + "publicip": list_vpn_connection_after[0].publicip, + "s2scustomergatewayid": + list_vpn_connection_after[0].s2scustomergatewayid, + "s2svpngatewayid": list_vpn_connection_after[0].s2svpngatewayid} actual_dict = { - "account":list_vpn_connection_after_reset[0].account, - "cidrlist":list_vpn_connection_after_reset[0].cidrlist, - "domain":list_vpn_connection_after_reset[0].domain, - "dpd":list_vpn_connection_after_reset[0].dpd, - "gateway":list_vpn_connection_after_reset[0].gateway, - "id":list_vpn_connection_after_reset[0].id, - "passive":list_vpn_connection_after_reset[0].passive, - "publicip":list_vpn_connection_after_reset[0].publicip, - "s2scustomergatewayid":list_vpn_connection_after_reset[0].s2scustomergatewayid, - "s2svpngatewayid":list_vpn_connection_after_reset[0].s2svpngatewayid - } + "account": list_vpn_connection_after_reset[0].account, + "cidrlist": list_vpn_connection_after_reset[0].cidrlist, + "domain": list_vpn_connection_after_reset[0].domain, + "dpd": list_vpn_connection_after_reset[0].dpd, + "gateway": list_vpn_connection_after_reset[0].gateway, + "id": list_vpn_connection_after_reset[0].id, + "passive": list_vpn_connection_after_reset[0].passive, + "publicip": list_vpn_connection_after_reset[0].publicip, + "s2scustomergatewayid": + list_vpn_connection_after_reset[0].s2scustomergatewayid, + "s2svpngatewayid": + list_vpn_connection_after_reset[0].s2svpngatewayid} list_vpn_connection_status = self.__verify_values( - expected_dict, - actual_dict - ) + expected_dict, + actual_dict + ) self.assertEqual( - True, - list_vpn_connection_status, - "Listed VPN Connection details are not as expected" - ) + True, + list_vpn_connection_status, + "Listed VPN Connection details are not as expected" + ) # Delete VPN Connection Vpn.deleteVpnConnection( - self.userapiclient, - id=list_vpn_connection_after[0].id - ) + self.userapiclient, + id=list_vpn_connection_after[0].id + ) # Listing all the vpc connections for a user list_vpn_connection_after_delete = Vpn.listVpnConnection( - self.userapiclient, - listall=self.test_data["listall"], - vpcid=vpc_created.id - ) + self.userapiclient, + listall=self.test_data["listall"], + vpcid=vpc_created.id + ) # Verifying No VPN Connections are listed self.assertIsNone( - list_vpn_connection_after_delete, - "Vpn connection listed for newly created user" - ) + list_vpn_connection_after_delete, + "Vpn connection listed for newly created user" + ) return @attr(tags=["advanced"], required_hardware="true") @@ -2488,14 +2627,14 @@ class TestNetworks_2(cloudstackTestCase): listCapabilities = Configurations.listCapabilities(self.userapiclient) # Verifying the listcapabilities object is not null self.assertIsNotNone( - listCapabilities, - "Failed to list Capabilities" - ) + listCapabilities, + "Failed to list Capabilities" + ) # Verifying list.cloudstack version is not null self.assertIsNotNone( - listCapabilities.cloudstackversion, - "Failed to list cloud Stack version" - ) + listCapabilities.cloudstackversion, + "Failed to list cloud Stack version" + ) return @attr(tags=["advanced"], required_hardware="true") @@ -2515,93 +2654,87 @@ class TestNetworks_2(cloudstackTestCase): """ # Listing all thenetwork acl list for a user list_networkacl = NetworkACLList.list(self.userapiclient) - self.assertIsNotNone(list_networkacl, "Failed to list network acl list") + self.assertIsNotNone( + list_networkacl, + "Failed to list network acl list") # Verfying list is not none status = validateList(list_networkacl) self.assertEquals( - PASS, - status[0], - "Failed to list network acl list" - ) - # Listing VPC Offerings - list_vpc_offering = VpcOffering.list(self.userapiclient) - status = validateList(list_vpc_offering) - self.assertEquals( - PASS, - status[0], - "list vpc offering is none" - ) + PASS, + status[0], + "Failed to list network acl list" + ) # Creating a vpc vpc_created = VPC.create( - self.userapiclient, - self.test_data["vpc"], - list_vpc_offering[0].id, - self.zone.id - ) + self.userapiclient, + self.test_data["vpc"], + self.vpc_offering.id, + self.zone.id + ) self.assertIsNotNone(vpc_created, "VPC Creation Failed") self.cleanup.append(vpc_created) # Listing all the PrivateGateways list_private_gateways_before = PrivateGateway.list( - self.apiClient, - listall=self.test_data["listall"], - vpcid=vpc_created.id - ) + self.apiClient, + listall=self.test_data["listall"], + vpcid=vpc_created.id + ) # Verifying No PrivateGateways are listed self.assertIsNone( - list_private_gateways_before, - "Listed private gateways for newly created VPC " - ) + list_private_gateways_before, + "Listed private gateways for newly created VPC " + ) # Creating a Private Gateway using aclid private_gateway_created = PrivateGateway.create( - self.apiClient, - vpcid=vpc_created.id, - gateway=self.test_data["private_gateway"]["gateway"], - ipaddress=self.test_data["private_gateway"]["ipaddress"], - netmask=self.test_data["private_gateway"]["netmask"], - vlan=self.test_data["private_gateway"]["vlan"], - aclid=list_networkacl[0].id - ) + self.apiClient, + vpcid=vpc_created.id, + gateway=self.test_data["private_gateway"]["gateway"], + ipaddress=self.test_data["private_gateway"]["ipaddress"], + netmask=self.test_data["private_gateway"]["netmask"], + vlan=self.test_data["private_gateway"]["vlan"], + aclid=list_networkacl[0].id + ) self.assertIsNotNone( - private_gateway_created, - "Private Gateway Creation Failed" - ) + private_gateway_created, + "Private Gateway Creation Failed" + ) # Listing all the PrivateGateways list_private_gateways_after = PrivateGateway.list( - self.apiClient, - listall=self.test_data["listall"], - vpcid=vpc_created.id - ) + self.apiClient, + listall=self.test_data["listall"], + vpcid=vpc_created.id + ) # Verifying PrivateGateways are listed status = validateList(list_private_gateways_after) self.assertEquals(PASS, status[0], "Failed to list Private Gateway") self.assertEquals( - 1, - len(list_private_gateways_after), - "list Private Gateway not equal as expected" - ) + 1, + len(list_private_gateways_after), + "list Private Gateway not equal as expected" + ) # Listing network acl list by paymentgateway.aclid list = NetworkACLList.list(self.userapiclient, - listall=self.test_data["listall"], - id=private_gateway_created.aclid - ) - # Verifying the details of the Network acl list + listall=self.test_data["listall"], + id=private_gateway_created.aclid + ) + # Verifying the details of the Network acl list expected_dict = { - "description":list_networkacl[0].description, - "id":list_networkacl[0].id, - "name":list_networkacl[0].name - } + "description": list_networkacl[0].description, + "id": list_networkacl[0].id, + "name": list_networkacl[0].name + } actual_dict = { - "description":list[0].description, - "id":list[0].id, - "name":list[0].name - } + "description": list[0].description, + "id": list[0].id, + "name": list[0].name + } list_networkacl_status = self.__verify_values( - expected_dict, - actual_dict - ) + expected_dict, + actual_dict + ) self.assertEqual( - True, - list_networkacl_status, - "Listed Network acl list details are not as expected" - ) + True, + list_networkacl_status, + "Listed Network acl list details are not as expected" + ) return From d6970d45149439f81a3985dd3c0a60fc149ecdde Mon Sep 17 00:00:00 2001 From: Gaurav Aradhye Date: Wed, 24 Sep 2014 14:15:55 +0530 Subject: [PATCH 044/129] CLOUDSTACK-7616: Fixed test_escalations_ipaddress.py - test suite should use its own vpc offering Signed-off-by: SrikanteswaraRao Talluri (cherry picked from commit 0b9938ce40bd269639e91bf0e7bcfb36427cdaaa) --- .../component/test_escalations_ipaddresses.py | 5385 +++++++++-------- 1 file changed, 2728 insertions(+), 2657 deletions(-) diff --git a/test/integration/component/test_escalations_ipaddresses.py b/test/integration/component/test_escalations_ipaddresses.py index 00aacbff24a..b29cd1d275f 100644 --- a/test/integration/component/test_escalations_ipaddresses.py +++ b/test/integration/component/test_escalations_ipaddresses.py @@ -43,6 +43,7 @@ from marvin.lib.utils import validateList, cleanup_resources from marvin.codes import PASS from nose.plugins.attrib import attr + class TestIpAddresses(cloudstackTestCase): @classmethod @@ -55,30 +56,41 @@ class TestIpAddresses(cloudstackTestCase): cls.hypervisor = cls.testClient.getHypervisorInfo() # Get Domain, Zone, Template cls.domain = get_domain(cls.api_client) - cls.zone = get_zone(cls.api_client, cls.testClient.getZoneForTests()) + cls.zone = get_zone( + cls.api_client, + cls.testClient.getZoneForTests()) cls.template = get_template( - cls.api_client, - cls.zone.id, - cls.services["ostype"] - ) + cls.api_client, + cls.zone.id, + cls.services["ostype"] + ) if cls.zone.localstorageenabled: cls.storagetype = 'local' - cls.services["service_offerings"]["tiny"]["storagetype"] = 'local' + cls.services["service_offerings"][ + "tiny"]["storagetype"] = 'local' else: cls.storagetype = 'shared' - cls.services["service_offerings"]["tiny"]["storagetype"] = 'shared' + cls.services["service_offerings"][ + "tiny"]["storagetype"] = 'shared' cls.services['mode'] = cls.zone.networktype - cls.services["virtual_machine"]["hypervisor"] = cls.testClient.getHypervisorInfo() + cls.services["virtual_machine"][ + "hypervisor"] = cls.testClient.getHypervisorInfo() cls.services["virtual_machine"]["zoneid"] = cls.zone.id cls.services["virtual_machine"]["template"] = cls.template.id cls.service_offering = ServiceOffering.create( - cls.api_client, - cls.services["service_offerings"]["tiny"] - ) + cls.api_client, + cls.services["service_offerings"]["tiny"] + ) cls._cleanup.append(cls.service_offering) cls.services['mode'] = cls.zone.networktype + cls.vpc_offering = VpcOffering.create(cls.api_client, + cls.services["vpc_offering"] + ) + cls.vpc_offering.update(cls.api_client, state='Enabled') + cls._cleanup.append(cls.vpc_offering) + except Exception as e: cls.tearDownClass() raise Exception("Warning: Exception in setup : %s" % e) @@ -89,14 +101,15 @@ class TestIpAddresses(cloudstackTestCase): self.apiClient = self.testClient.getApiClient() self.cleanup = [] self.account = Account.create( - self.apiClient, - self.services["account"], - domainid=self.domain.id - ) + self.apiClient, + self.services["account"], + domainid=self.domain.id + ) # Getting authentication for user in newly created Account self.user = self.account.user[0] - self.userapiclient = self.testClient.getUserApiClient(self.user.username, self.domain.name) -# self.cleanup.append(self.account) + self.userapiclient = self.testClient.getUserApiClient( + self.user.username, + self.domain.name) def tearDown(self): # Clean up, terminate the created volumes @@ -111,13 +124,14 @@ class TestIpAddresses(cloudstackTestCase): raise Exception("Warning: Exception during cleanup : %s" % e) def __verify_values(self, expected_vals, actual_vals): - """ + """ @summary: Function to verify expected and actual values Step1: Initializing return flag to True - Step1: Verifying length of expected and actual dictionaries is matching. + Step1: Verifying length of expected and actual dictionaries is matching If not matching returning false Step2: Listing all the keys from expected dictionary - Step3: Looping through each key from step2 and verifying expected and actual dictionaries have same value + Step3: Looping through each key from step2 and verifying expected + and actual dictionaries have same value If not making return flag to False Step4: returning the return flag after all the values are verified """ @@ -134,10 +148,10 @@ class TestIpAddresses(cloudstackTestCase): return_flag = return_flag and True else: return_flag = return_flag and False - self.debug("expected Value: %s, is not matching with actual value: %s" % ( - exp_val, - act_val - )) + self.debug( + "expected Value: %s, is not matching with actual value: %s" + % + (exp_val, act_val)) return return_flag @attr(tags=["advanced"], required_hardware="true") @@ -152,7 +166,8 @@ class TestIpAddresses(cloudstackTestCase): Step5: Listing all the IP Addresses again Step6: Verifying the length of the IP Addresses is (page size + 1) Step7: Listing all the IP Addresses in page1 - Step8: Verifying that the length of the IP Addresses in page 1 is (page size) + Step8: Verifying that the length of the IP Addresses in page 1 is + (page size) Step9: Listing all the IP Addresses in page2 Step10: Verifying that the length of the IP Addresses in page 2 is 1 Step11: Dis-Associating the IP Addresses present in page 2 @@ -161,154 +176,154 @@ class TestIpAddresses(cloudstackTestCase): """ # Listing all the networks available networks_list_before = Network.list( - self.userapiclient, - forvpc="false", - domainid=self.domain.id, - account=self.account.name, - type="Isolated" - ) + self.userapiclient, + forvpc="false", + domainid=self.domain.id, + account=self.account.name, + type="Isolated" + ) self.assertIsNone( - networks_list_before, - "Networks listed for newly created user" - ) + networks_list_before, + "Networks listed for newly created user" + ) # Listing Network Offerings network_offerings_list = NetworkOffering.list( - self.apiClient, - forvpc="false", - guestiptype="Isolated", - state="Enabled", - supportedservices="SourceNat", - zoneid=self.zone.id - ) + self.apiClient, + forvpc="false", + guestiptype="Isolated", + state="Enabled", + supportedservices="SourceNat", + zoneid=self.zone.id + ) status = validateList(network_offerings_list) self.assertEquals( - PASS, - status[0], - "Isolated Network Offerings with sourceNat enabled are not found" - ) + PASS, + status[0], + "Isolated Network Offerings with sourceNat enabled are not found" + ) # Creating a network network = Network.create( - self.userapiclient, - self.services["network"], - accountid=self.account.name, - domainid=self.domain.id, - networkofferingid=network_offerings_list[0].id, - zoneid=self.zone.id - ) + self.userapiclient, + self.services["network"], + accountid=self.account.name, + domainid=self.domain.id, + networkofferingid=network_offerings_list[0].id, + zoneid=self.zone.id + ) self.assertIsNotNone( - network, - "Network creation failed" - ) + network, + "Network creation failed" + ) self.cleanup.append(network) # Listing all the networks available networks_list_after = Network.list( - self.userapiclient, - forvpc="false", - domainid=self.domain.id, - account=self.account.name, - type="Isolated" - ) + self.userapiclient, + forvpc="false", + domainid=self.domain.id, + account=self.account.name, + type="Isolated" + ) status = validateList(networks_list_after) self.assertEquals( - PASS, - status[0], - "Network Creation Failed" - ) + PASS, + status[0], + "Network Creation Failed" + ) self.assertEquals( - 1, - len(networks_list_after), - "Network creation failed" - ) + 1, + len(networks_list_after), + "Network creation failed" + ) # Listing all the IP Addresses for a user list_ipaddresses_before = PublicIPAddress.list( - self.userapiclient, - listall=self.services["listall"] - ) + self.userapiclient, + listall=self.services["listall"] + ) self.assertIsNone( - list_ipaddresses_before, - "IP Addresses listed for newly created user" - ) + list_ipaddresses_before, + "IP Addresses listed for newly created user" + ) # Associating (pagesize + 1) number of IP Addresses for i in range(0, (self.services["pagesize"] + 1)): ipaddress = PublicIPAddress.create( - self.userapiclient, - services=self.services["network"], - networkid=network.id - ) + self.userapiclient, + services=self.services["network"], + networkid=network.id + ) self.assertIsNotNone( - ipaddress, - "Failed to Associate IP Address" - ) + ipaddress, + "Failed to Associate IP Address" + ) # Listing all the IP Addresses for a user list_ipaddresses_after = PublicIPAddress.list( - self.userapiclient, - listall=self.services["listall"] - ) + self.userapiclient, + listall=self.services["listall"] + ) status = validateList(list_ipaddresses_after) self.assertEquals( - PASS, - status[0], - "IP Addresses Association Failed" - ) + PASS, + status[0], + "IP Addresses Association Failed" + ) # Verifying the length of the volumes is (page size + 1) self.assertEqual( - (self.services["pagesize"] + 1), - len(list_ipaddresses_after), - "Number of IP Addresses associated are not matching expected" - ) + (self.services["pagesize"] + 1), + len(list_ipaddresses_after), + "Number of IP Addresses associated are not matching expected" + ) # Listing IP Address in page 1 list_ipaddress_page1 = PublicIPAddress.list( - self.userapiclient, - listall=self.services["listall"], - page=1, - pagesize=self.services["pagesize"] - ) + self.userapiclient, + listall=self.services["listall"], + page=1, + pagesize=self.services["pagesize"] + ) status = validateList(list_ipaddress_page1) self.assertEquals( - PASS, - status[0], - "Failed to list IP Addresses in page1" - ) + PASS, + status[0], + "Failed to list IP Addresses in page1" + ) # Verifying that list size is equals to pagesize self.assertEquals( - self.services["pagesize"], - len(list_ipaddress_page1), - "Failed to list pagesize number of IP Addresses in page1" - ) + self.services["pagesize"], + len(list_ipaddress_page1), + "Failed to list pagesize number of IP Addresses in page1" + ) # Listing IP Address in page 2 list_ipaddress_page2 = PublicIPAddress.list( - self.userapiclient, - listall=self.services["listall"], - page=2, - pagesize=self.services["pagesize"] - ) + self.userapiclient, + listall=self.services["listall"], + page=2, + pagesize=self.services["pagesize"] + ) status = validateList(list_ipaddress_page2) self.assertEquals( - PASS, - status[0], - "Failed to list IP Addresses in page2" - ) + PASS, + status[0], + "Failed to list IP Addresses in page2" + ) # Verifying that List size is equal to 1 self.assertEquals( - 1, - len(list_ipaddress_page2), - "Failed to list IP Addresses in page2" - ) + 1, + len(list_ipaddress_page2), + "Failed to list IP Addresses in page2" + ) # Dis-associating an IP Address ipaddress.delete(self.userapiclient) # Listing IP Address in page 2 list_ipaddress_page2 = PublicIPAddress.list( - self.userapiclient, - listall=self.services["listall"], - page=2, - pagesize=self.services["pagesize"] - ) + self.userapiclient, + listall=self.services["listall"], + page=2, + pagesize=self.services["pagesize"] + ) # Verifying that no IP Addresses are listed self.assertIsNone( - list_ipaddress_page2, - "Disassociation of IP Address Failed" - ) + list_ipaddress_page2, + "Disassociation of IP Address Failed" + ) self.cleanup.append(self.account) return @@ -329,163 +344,166 @@ class TestIpAddresses(cloudstackTestCase): """ # Listing all the networks available networks_list_before = Network.list( - self.userapiclient, - forvpc="false", - domainid=self.domain.id, - account=self.account.name, - type="Isolated" - ) + self.userapiclient, + forvpc="false", + domainid=self.domain.id, + account=self.account.name, + type="Isolated" + ) self.assertIsNone( - networks_list_before, - "Networks listed for newly created user" - ) + networks_list_before, + "Networks listed for newly created user" + ) # Listing Network Offerings network_offerings_list = NetworkOffering.list( - self.apiClient, - forvpc="false", - guestiptype="Isolated", - state="Enabled", - supportedservices="SourceNat", - zoneid=self.zone.id - ) + self.apiClient, + forvpc="false", + guestiptype="Isolated", + state="Enabled", + supportedservices="SourceNat", + zoneid=self.zone.id + ) status = validateList(network_offerings_list) self.assertEquals( - PASS, - status[0], - "Isolated Network Offerings with sourceNat enabled are not found" - ) + PASS, + status[0], + "Isolated Network Offerings with sourceNat enabled are not found" + ) # Creating a network network = Network.create( - self.userapiclient, - self.services["network"], - accountid=self.account.name, - domainid=self.domain.id, - networkofferingid=network_offerings_list[0].id, - zoneid=self.zone.id - ) + self.userapiclient, + self.services["network"], + accountid=self.account.name, + domainid=self.domain.id, + networkofferingid=network_offerings_list[0].id, + zoneid=self.zone.id + ) self.assertIsNotNone( - network, - "Network creation failed" - ) + network, + "Network creation failed" + ) self.cleanup.append(network) # Listing all the networks available networks_list_after = Network.list( - self.userapiclient, - forvpc="false", - domainid=self.domain.id, - account=self.account.name, - type="Isolated" - ) + self.userapiclient, + forvpc="false", + domainid=self.domain.id, + account=self.account.name, + type="Isolated" + ) status = validateList(networks_list_after) self.assertEquals( - PASS, - status[0], - "Network Creation Failed" - ) + PASS, + status[0], + "Network Creation Failed" + ) self.assertEquals( - 1, - len(networks_list_after), - "Network creation failed" - ) + 1, + len(networks_list_after), + "Network creation failed" + ) # Listing the Network By ID network_list_byid = Network.list( - self.userapiclient, - listall=self.services["listall"], - id=network.id - ) + self.userapiclient, + listall=self.services["listall"], + id=network.id + ) status = validateList(network_list_byid) self.assertEquals( - PASS, - status[0], - "Failed to list Network by Id" - ) + PASS, + status[0], + "Failed to list Network by Id" + ) self.assertEquals( - 1, - len(network_list_byid), - "Failed to list Network by Id" - ) + 1, + len(network_list_byid), + "Failed to list Network by Id" + ) # Listing all the IP Addresses for a user list_ipaddresses_before = PublicIPAddress.list( - self.userapiclient, - listall=self.services["listall"] - ) + self.userapiclient, + listall=self.services["listall"] + ) self.assertIsNone( - list_ipaddresses_before, - "IP Addresses listed for newly created user" - ) + list_ipaddresses_before, + "IP Addresses listed for newly created user" + ) # Associating an IP Addresses to Network created associated_ipaddress = PublicIPAddress.create( - self.userapiclient, - services=self.services["network"], - networkid=network_list_byid[0].id - ) + self.userapiclient, + services=self.services["network"], + networkid=network_list_byid[0].id + ) self.assertIsNotNone( - associated_ipaddress, - "Failed to Associate IP Address" - ) + associated_ipaddress, + "Failed to Associate IP Address" + ) # Listing all the IP Addresses for a user list_ipaddresses_after = PublicIPAddress.list( - self.userapiclient, - listall=self.services["listall"] - ) + self.userapiclient, + listall=self.services["listall"] + ) status = validateList(list_ipaddresses_after) self.assertEquals( - PASS, - status[0], - "IP Addresses Association Failed" - ) + PASS, + status[0], + "IP Addresses Association Failed" + ) # Verifying the length of the list is 1 self.assertEqual( - 1, - len(list_ipaddresses_after), - "Number of IP Addresses associated are not matching expected" - ) + 1, + len(list_ipaddresses_after), + "Number of IP Addresses associated are not matching expected" + ) # Listing IP Address by id list_ipaddress_byid = PublicIPAddress.list( - self.userapiclient, - id=associated_ipaddress.ipaddress.id - ) + self.userapiclient, + id=associated_ipaddress.ipaddress.id + ) status = validateList(list_ipaddress_byid) self.assertEquals( - PASS, - status[0], - "Failed to list IP Addresses by ID" - ) + PASS, + status[0], + "Failed to list IP Addresses by ID" + ) # Verifying that list size is equals to 1 self.assertEquals( - 1, - len(list_ipaddress_byid), - "Failed to list IP Addresses by ID" - ) - # Verifying details of the listed IP Address to be same as IP Address created above + 1, + len(list_ipaddress_byid), + "Failed to list IP Addresses by ID" + ) + # Verifying details of the listed IP Address to be same as + # IP Address created above # Creating expected and actual values dictionaries expected_dict = { - "id":associated_ipaddress.ipaddress.id, - "associatednetworkid":associated_ipaddress.ipaddress.associatednetworkid, - "associatednetworkname":associated_ipaddress.ipaddress.associatednetworkname, - "ipaddress":associated_ipaddress.ipaddress.ipaddress, - "issourcenat":associated_ipaddress.ipaddress.issourcenat, - "isstaticnat":associated_ipaddress.ipaddress.isstaticnat, - "networkid":associated_ipaddress.ipaddress.networkid - } + "id": associated_ipaddress.ipaddress.id, + "associatednetworkid": + associated_ipaddress.ipaddress.associatednetworkid, + "associatednetworkname": + associated_ipaddress.ipaddress.associatednetworkname, + "ipaddress": associated_ipaddress.ipaddress.ipaddress, + "issourcenat": associated_ipaddress.ipaddress.issourcenat, + "isstaticnat": associated_ipaddress.ipaddress.isstaticnat, + "networkid": associated_ipaddress.ipaddress.networkid} actual_dict = { - "id":list_ipaddress_byid[0].id, - "associatednetworkid":list_ipaddress_byid[0].associatednetworkid, - "associatednetworkname":list_ipaddress_byid[0].associatednetworkname, - "ipaddress":list_ipaddress_byid[0].ipaddress, - "issourcenat":list_ipaddress_byid[0].issourcenat, - "isstaticnat":list_ipaddress_byid[0].isstaticnat, - "networkid":list_ipaddress_byid[0].networkid - } + "id": list_ipaddress_byid[0].id, + "associatednetworkid": + list_ipaddress_byid[0].associatednetworkid, + "associatednetworkname": + list_ipaddress_byid[0].associatednetworkname, + "ipaddress": list_ipaddress_byid[0].ipaddress, + "issourcenat": list_ipaddress_byid[0].issourcenat, + "isstaticnat": list_ipaddress_byid[0].isstaticnat, + "networkid": list_ipaddress_byid[0].networkid} ipaddress_status = self.__verify_values( - expected_dict, - actual_dict - ) + expected_dict, + actual_dict + ) self.assertEqual( - True, - ipaddress_status, - "Listed IP Address details are not as expected" - ) + True, + ipaddress_status, + "Listed IP Address details are not as expected" + ) self.cleanup.append(self.account) return @@ -508,713 +526,720 @@ class TestIpAddresses(cloudstackTestCase): list_vpc_before = VPC.list(self.userapiclient) # Verifying No VPCs are listed self.assertIsNone( - list_vpc_before, - "VPC's Listed for newly Created User" - ) - # Listing VPC Offerings - list_vpc_offering = VpcOffering.list(self.userapiclient) - status = validateList(list_vpc_offering) - self.assertEquals( - PASS, - status[0], - "list vpc offering is none") + list_vpc_before, + "VPC's Listed for newly Created User" + ) # Creating a vpc vpc_created = VPC.create( - self.userapiclient, - self.services["vpc"], - list_vpc_offering[0].id, - self.zone.id - ) + self.userapiclient, + self.services["vpc"], + self.vpc_offering.id, + self.zone.id + ) self.assertIsNotNone( - vpc_created, - "VPC Creation Failed" - ) + vpc_created, + "VPC Creation Failed" + ) self.cleanup.append(vpc_created) # Listing the vpc for a user after creating a vpc list_vpc_after = VPC.list(self.userapiclient) status = validateList(list_vpc_after) self.assertEquals( - PASS, - status[0], - "list VPC not as expected" - ) + PASS, + status[0], + "list VPC not as expected" + ) # Verifying the list vpc size is increased by 1 self.assertEquals( - 1, - len(list_vpc_after), - "list VPC not equal as expected" - ) + 1, + len(list_vpc_after), + "list VPC not equal as expected" + ) # Listing all the IP Addresses for a user list_ipaddresses_before = PublicIPAddress.list( - self.userapiclient, - listall=self.services["listall"] - ) + self.userapiclient, + listall=self.services["listall"] + ) status = validateList(list_ipaddresses_before) self.assertEquals( - PASS, - status[0], - "Failed to List VPC IP Address" - ) + PASS, + status[0], + "Failed to List VPC IP Address" + ) self.assertEquals( - 1, - len(list_ipaddresses_before), - "Failed to List VPC IP Address" - ) + 1, + len(list_ipaddresses_before), + "Failed to List VPC IP Address" + ) # Associating an IP Addresses to VPC created associated_ipaddress = PublicIPAddress.create( - self.userapiclient, - services=self.services["network"], - vpcid=vpc_created.id - ) + self.userapiclient, + services=self.services["network"], + vpcid=vpc_created.id + ) self.assertIsNotNone( - associated_ipaddress, - "Failed to Associate IP Address" - ) + associated_ipaddress, + "Failed to Associate IP Address" + ) # Listing all the IP Addresses for a user list_ipaddresses_after = PublicIPAddress.list( - self.userapiclient, - listall=self.services["listall"] - ) + self.userapiclient, + listall=self.services["listall"] + ) status = validateList(list_ipaddresses_after) self.assertEquals( - PASS, - status[0], - "IP Addresses Association Failed" - ) + PASS, + status[0], + "IP Addresses Association Failed" + ) # Verifying the length of the list is 1 self.assertEqual( - len(list_ipaddresses_before) + 1, - len(list_ipaddresses_after), - "Number of IP Addresses associated are not matching expected" - ) + len(list_ipaddresses_before) + 1, + len(list_ipaddresses_after), + "Number of IP Addresses associated are not matching expected" + ) # Listing IP Address by id list_ipaddress_byid = PublicIPAddress.list( - self.userapiclient, - listall=self.services["listall"], - page=1, - pagesize=self.services["pagesize"], - id=associated_ipaddress.ipaddress.id - ) + self.userapiclient, + listall=self.services["listall"], + page=1, + pagesize=self.services["pagesize"], + id=associated_ipaddress.ipaddress.id + ) status = validateList(list_ipaddress_byid) self.assertEquals( - PASS, - status[0], - "Failed to list IP Addresses by ID" - ) + PASS, + status[0], + "Failed to list IP Addresses by ID" + ) # Verifying that list size is equals to 1 self.assertEquals( - 1, - len(list_ipaddress_byid), - "Failed to list IP Addresses by ID" - ) - # Verifying details of the listed IP Address to be same as IP Address created above + 1, + len(list_ipaddress_byid), + "Failed to list IP Addresses by ID" + ) + # Verifying details of the listed IP Address to be same as + # IP Address created above # Creating expected and actual values dictionaries expected_dict = { - "id":associated_ipaddress.ipaddress.id, - "associatednetworkid":associated_ipaddress.ipaddress.associatednetworkid, - "associatednetworkname":associated_ipaddress.ipaddress.associatednetworkname, - "ipaddress":associated_ipaddress.ipaddress.ipaddress, - "issourcenat":associated_ipaddress.ipaddress.issourcenat, - "isstaticnat":associated_ipaddress.ipaddress.isstaticnat, - "networkid":associated_ipaddress.ipaddress.networkid, - "vpcid":associated_ipaddress.ipaddress.vpcid - } + "id": associated_ipaddress.ipaddress.id, + "associatednetworkid": + associated_ipaddress.ipaddress.associatednetworkid, + "associatednetworkname": + associated_ipaddress.ipaddress.associatednetworkname, + "ipaddress": associated_ipaddress.ipaddress.ipaddress, + "issourcenat": associated_ipaddress.ipaddress.issourcenat, + "isstaticnat": associated_ipaddress.ipaddress.isstaticnat, + "networkid": associated_ipaddress.ipaddress.networkid, + "vpcid": associated_ipaddress.ipaddress.vpcid} actual_dict = { - "id":list_ipaddress_byid[0].id, - "associatednetworkid":list_ipaddress_byid[0].associatednetworkid, - "associatednetworkname":list_ipaddress_byid[0].associatednetworkname, - "ipaddress":list_ipaddress_byid[0].ipaddress, - "issourcenat":list_ipaddress_byid[0].issourcenat, - "isstaticnat":list_ipaddress_byid[0].isstaticnat, - "networkid":list_ipaddress_byid[0].networkid, - "vpcid":list_ipaddress_byid[0].vpcid - } + "id": list_ipaddress_byid[0].id, + "associatednetworkid": + list_ipaddress_byid[0].associatednetworkid, + "associatednetworkname": + list_ipaddress_byid[0].associatednetworkname, + "ipaddress": list_ipaddress_byid[0].ipaddress, + "issourcenat": list_ipaddress_byid[0].issourcenat, + "isstaticnat": list_ipaddress_byid[0].isstaticnat, + "networkid": list_ipaddress_byid[0].networkid, + "vpcid": list_ipaddress_byid[0].vpcid} ipaddress_status = self.__verify_values( - expected_dict, - actual_dict - ) + expected_dict, + actual_dict + ) self.assertEqual( - True, - ipaddress_status, - "Listed IP Address details are not as expected" - ) + True, + ipaddress_status, + "Listed IP Address details are not as expected" + ) self.cleanup.append(self.account) return @attr(tags=["advanced"], required_hardware="true") def test_04_create_delete_lbrule_fornonvpc(self): """ - @summary: Test to list, create and delete Load Balancer Rule for IP Address associated to Non VPC network + @summary: Test to list, create and delete Load Balancer Rule + for IP Address associated to Non VPC network @Steps: Step1: Creating a Network for the user Step2: Associating an IP Addresses for Network - Step3: Listing Load Balancer Rules for the IP Address associated in Step2 + Step3: Listing Load Balancer Rules for the IP Address associated in + Step2 Step4: Verifying that no Load Balancer Rules are listed - Step5: Creating a Load Balancer Rule for IP Address associated in Step2 - Step6: Listing Load Balancer Rules for the IP Address associated in Step2 + Step5: Creating a Load Balancer Rule for IP Address associated in + Step2 + Step6: Listing Load Balancer Rules for the IP Address associated in + Step2 Step7: Verifying 1 Load Balancer Rule is listed Step8: Deleting the Load Balancer Rule created in Step5 - Step9: Listing Load Balancer Rules for the IP Address associated in Step2 + Step9: Listing Load Balancer Rules for the IP Address associated in + Step2 Step10: Verifying that no Load Balancer Rules are listed """ # Listing all the Networks's for a user list_networks_before = Network.list( - self.userapiclient, - listall=self.services["listall"], - type="Isolated" - ) + self.userapiclient, + listall=self.services["listall"], + type="Isolated" + ) # Verifying No Networks are listed self.assertIsNone( - list_networks_before, - "Networks listed for newly created User" - ) + list_networks_before, + "Networks listed for newly created User" + ) # Listing Network Offerings network_offerings_list = NetworkOffering.list( - self.apiClient, - forvpc="false", - guestiptype="Isolated", - state="Enabled", - supportedservices="SourceNat,Lb", - zoneid=self.zone.id - ) + self.apiClient, + forvpc="false", + guestiptype="Isolated", + state="Enabled", + supportedservices="SourceNat,Lb", + zoneid=self.zone.id + ) status = validateList(network_offerings_list) self.assertEquals( - PASS, - status[0], - "Isolated Network Offerings with sourceNat, Lb enabled are not found" - ) + PASS, + status[0], + "Isolated Network Offerings with sourceNat, Lb enabled are\ + not found" + ) # Creating a network network = Network.create( - self.userapiclient, - self.services["network"], - accountid=self.account.name, - domainid=self.domain.id, - networkofferingid=network_offerings_list[0].id, - zoneid=self.zone.id - ) + self.userapiclient, + self.services["network"], + accountid=self.account.name, + domainid=self.domain.id, + networkofferingid=network_offerings_list[0].id, + zoneid=self.zone.id + ) self.assertIsNotNone( - network, - "Network creation failed" - ) + network, + "Network creation failed" + ) self.cleanup.append(network) # Listing all the IP Addresses for a user list_ipaddresses_before = PublicIPAddress.list( - self.userapiclient, - listall=self.services["listall"] - ) + self.userapiclient, + listall=self.services["listall"] + ) # Verifying no IP Addresses are listed self.assertIsNone( - list_ipaddresses_before, - "IP Addresses listed for newly created User" - ) + list_ipaddresses_before, + "IP Addresses listed for newly created User" + ) # Associating an IP Addresses to Network created associated_ipaddress = PublicIPAddress.create( - self.userapiclient, - services=self.services["network"], - networkid=network.id - ) + self.userapiclient, + services=self.services["network"], + networkid=network.id + ) self.assertIsNotNone( - associated_ipaddress, - "Failed to Associate IP Address" - ) + associated_ipaddress, + "Failed to Associate IP Address" + ) # Listing all the IP Addresses for a user list_ipaddresses_after = PublicIPAddress.list( - self.userapiclient, - listall=self.services["listall"] - ) + self.userapiclient, + listall=self.services["listall"] + ) status = validateList(list_ipaddresses_after) self.assertEquals( - PASS, - status[0], - "IP Addresses Association Failed" - ) + PASS, + status[0], + "IP Addresses Association Failed" + ) # Verifying the length of the list is 1 self.assertEqual( - 1, - len(list_ipaddresses_after), - "Number of IP Addresses associated are not matching expected" - ) + 1, + len(list_ipaddresses_after), + "Number of IP Addresses associated are not matching expected" + ) # Listing Load Balancer Rules for the Ip Address list_lbrules_before = LoadBalancerRule.list( - self.userapiclient, - listall=self.services["listall"], - publicipid=associated_ipaddress.ipaddress.id - ) + self.userapiclient, + listall=self.services["listall"], + publicipid=associated_ipaddress.ipaddress.id + ) # Verifying no Load Balancer Rules are listed self.assertIsNone( - list_lbrules_before, - "Load Balancer Rules listed for newly Acquired Ip Address" - ) + list_lbrules_before, + "Load Balancer Rules listed for newly Acquired Ip Address" + ) self.services["lbrule"]["openfirewall"] = 'false' # Creating a Load Balancer Rule for Ip Address lb_rule = LoadBalancerRule.create( - self.userapiclient, - self.services["lbrule"], - ipaddressid=associated_ipaddress.ipaddress.id, - ) + self.userapiclient, + self.services["lbrule"], + ipaddressid=associated_ipaddress.ipaddress.id, + ) self.assertIsNotNone( - lb_rule, - "Failed to create Load Balancer Rule" - ) + lb_rule, + "Failed to create Load Balancer Rule" + ) # Verifying details of created Load Balancer Rule # Creating expected and actual values dictionaries expected_dict = { - "algorithm":self.services["lbrule"]["alg"], - "privateport":str(self.services["lbrule"]["privateport"]), - "publicport":str(self.services["lbrule"]["publicport"]), - "name":self.services["lbrule"]["name"], - } + "algorithm": self.services["lbrule"]["alg"], + "privateport": str(self.services["lbrule"]["privateport"]), + "publicport": str(self.services["lbrule"]["publicport"]), + "name": self.services["lbrule"]["name"], + } actual_dict = { - "algorithm":str(lb_rule.algorithm), - "privateport":str(lb_rule.privateport), - "publicport":str(lb_rule.publicport), - "name":str(lb_rule.name), - } + "algorithm": str(lb_rule.algorithm), + "privateport": str(lb_rule.privateport), + "publicport": str(lb_rule.publicport), + "name": str(lb_rule.name), + } lbrule_status = self.__verify_values( - expected_dict, - actual_dict - ) + expected_dict, + actual_dict + ) self.assertEqual( - True, - lbrule_status, - "Created Load Balancer Rule details are not as expected" - ) + True, + lbrule_status, + "Created Load Balancer Rule details are not as expected" + ) # Listing Load Balancer Rules for the Ip Address list_lbrules_after = LoadBalancerRule.list( - self.userapiclient, - listall=self.services["listall"], - publicipid=associated_ipaddress.ipaddress.id - ) + self.userapiclient, + listall=self.services["listall"], + publicipid=associated_ipaddress.ipaddress.id + ) status = validateList(list_lbrules_after) self.assertEquals( - PASS, - status[0], - "Load Balancer Rule creation Failed" - ) + PASS, + status[0], + "Load Balancer Rule creation Failed" + ) # Verifying the length of the list is 1 self.assertEqual( - 1, - len(list_lbrules_after), - "Load Balancer Rule creation Failed" - ) + 1, + len(list_lbrules_after), + "Load Balancer Rule creation Failed" + ) # Deleting Load Balancer Rule lb_rule.delete(self.userapiclient) # Listing Load Balancer Rules for the Ip Address list_lbrules_after = LoadBalancerRule.list( - self.userapiclient, - listall=self.services["listall"], - publicipid=associated_ipaddress.ipaddress.id - ) + self.userapiclient, + listall=self.services["listall"], + publicipid=associated_ipaddress.ipaddress.id + ) # Verifying no Load Balancer Rules are Listed self.assertIsNone( - list_lbrules_after, - "Failed to delete Load Balancer Rule" - ) + list_lbrules_after, + "Failed to delete Load Balancer Rule" + ) self.cleanup.append(self.account) return @attr(tags=["advanced"], required_hardware="true") def test_05_create_delete_lbrule_forvpc(self): """ - @summary: Test to list, create and delete Load Balancer Rule for IP Address associated to VPC + @summary: Test to list, create and delete Load Balancer Rule for IP + Address associated to VPC @Steps: Step1: Creating a VPC for the user Step2: Creating Network inside VPC Step3: Associating an IP Addresses for VPC - Step4: Listing Load Balancer Rules for the IP Address associated in Step2 + Step4: Listing Load Balancer Rules for the IP Address associated in + Step2 Step5: Verifying that no Load Balancer Rules are listed - Step6: Creating a Load Balancer Rule for IP Address associated in Step2 - Step7: Listing Load Balancer Rules for the IP Address associated in Step2 + Step6: Creating a Load Balancer Rule for IP Address associated in + Step2 + Step7: Listing Load Balancer Rules for the IP Address associated in + Step2 Step8: Verifying 1 Load Balancer Rule is listed Step9: Deleting the Load Balancer Rule created in Step5 - Step10: Listing Load Balancer Rules for the IP Address associated in Step2 + Step10: Listing Load Balancer Rules for the IP Address associated in + Step2 Step11: Verifying that no Load Balancer Rules are listed """ # Listing all the vpc's for a user list_vpc_before = VPC.list(self.userapiclient) # Verifying No VPCs are listed self.assertIsNone( - list_vpc_before, - "VPC's Listed for newly Created User" - ) - # Listing VPC Offerings - list_vpc_offering = VpcOffering.list(self.userapiclient) - status = validateList(list_vpc_offering) - self.assertEquals( - PASS, - status[0], - "list vpc offering is none") + list_vpc_before, + "VPC's Listed for newly Created User" + ) # Creating a vpc vpc_created = VPC.create( - self.userapiclient, - self.services["vpc"], - list_vpc_offering[0].id, - self.zone.id - ) + self.userapiclient, + self.services["vpc"], + self.vpc_offering.id, + self.zone.id + ) self.assertIsNotNone( - vpc_created, - "VPC Creation Failed" - ) + vpc_created, + "VPC Creation Failed" + ) # Listing the vpc for a user after creating a vpc list_vpc_after = VPC.list(self.userapiclient) status = validateList(list_vpc_after) self.assertEquals( - PASS, - status[0], - "list VPC not as expected" - ) + PASS, + status[0], + "list VPC not as expected" + ) # Verifying the list vpc size is increased by 1 self.assertEquals( - 1, - len(list_vpc_after), - "list VPC not equal as expected" - ) + 1, + len(list_vpc_after), + "list VPC not equal as expected" + ) # List network offering for vpc = true network_offering_vpc_true_list = NetworkOffering.list( - self.userapiclient, - forvpc="true", - zoneid=self.zone.id, - supportedServices="Lb", - state="Enabled" - ) + self.userapiclient, + forvpc="true", + zoneid=self.zone.id, + supportedServices="Lb", + state="Enabled" + ) status = validateList(network_offering_vpc_true_list) - self.assertEquals(PASS, status[0], "Default network offering not present for vpc = true with Lb") + self.assertEquals( + PASS, + status[0], + "Default network offering not present for vpc = true with Lb") # Creating network under VPC network_created = Network.create( - self.userapiclient, - self.services["ntwk"], - networkofferingid=network_offering_vpc_true_list[0].id, - vpcid=vpc_created.id, - zoneid=self.zone.id, - gateway=self.services["ntwk"]["gateway"], - netmask=self.services["ntwk"]["netmask"] - ) + self.userapiclient, + self.services["ntwk"], + networkofferingid=network_offering_vpc_true_list[0].id, + vpcid=vpc_created.id, + zoneid=self.zone.id, + gateway=self.services["ntwk"]["gateway"], + netmask=self.services["ntwk"]["netmask"] + ) self.cleanup.append(network_created) self.assertIsNotNone( - network_created, - "Network is not created" - ) + network_created, + "Network is not created" + ) self.cleanup.append(vpc_created) # Listing all the IP Addresses for a user list_ipaddresses_before = PublicIPAddress.list( - self.userapiclient, - listall=self.services["listall"] - ) + self.userapiclient, + listall=self.services["listall"] + ) status = validateList(list_ipaddresses_before) self.assertEquals( - PASS, - status[0], - "list IP Addresses not as expected" - ) + PASS, + status[0], + "list IP Addresses not as expected" + ) # Verifying the list vpc size is increased by 1 self.assertEquals( - 1, - len(list_ipaddresses_before), - "list IP Addresses not equal as expected" - ) + 1, + len(list_ipaddresses_before), + "list IP Addresses not equal as expected" + ) # Associating an IP Addresses to VPC created associated_ipaddress = PublicIPAddress.create( - self.userapiclient, - services=self.services["network"], - vpcid=vpc_created.id - ) + self.userapiclient, + services=self.services["network"], + vpcid=vpc_created.id + ) self.assertIsNotNone( - associated_ipaddress, - "Failed to Associate IP Address" - ) + associated_ipaddress, + "Failed to Associate IP Address" + ) # Listing all the IP Addresses for a user list_ipaddresses_after = PublicIPAddress.list( - self.userapiclient, - listall=self.services["listall"] - ) + self.userapiclient, + listall=self.services["listall"] + ) status = validateList(list_ipaddresses_after) self.assertEquals( - PASS, - status[0], - "IP Addresses Association Failed" - ) + PASS, + status[0], + "IP Addresses Association Failed" + ) # Verifying the length of the list is 1 self.assertEqual( - len(list_ipaddresses_before) + 1, - len(list_ipaddresses_after), - "Number of IP Addresses associated are not matching expected" - ) + len(list_ipaddresses_before) + 1, + len(list_ipaddresses_after), + "Number of IP Addresses associated are not matching expected" + ) # Listing Load Balancer Rules for the Ip Address list_lbrules_before = LoadBalancerRule.list( - self.userapiclient, - listall=self.services["listall"], - publicipid=associated_ipaddress.ipaddress.id - ) + self.userapiclient, + listall=self.services["listall"], + publicipid=associated_ipaddress.ipaddress.id + ) # Verifying no Load Balancer Rules are listed self.assertIsNone( - list_lbrules_before, - "Load Balancer Rules listed for newly Acquired Ip Address" - ) + list_lbrules_before, + "Load Balancer Rules listed for newly Acquired Ip Address" + ) self.services["lbrule"]["openfirewall"] = 'false' # Creating a Load Balancer Rule for Ip Address lb_rule = LoadBalancerRule.create( - self.userapiclient, - self.services["lbrule"], - ipaddressid=associated_ipaddress.ipaddress.id, - networkid=network_created.id - ) + self.userapiclient, + self.services["lbrule"], + ipaddressid=associated_ipaddress.ipaddress.id, + networkid=network_created.id + ) self.assertIsNotNone( - lb_rule, - "Failed to create Load Balancer Rule" - ) + lb_rule, + "Failed to create Load Balancer Rule" + ) # Verifying details of created Load Balancer Rule # Creating expected and actual values dictionaries expected_dict = { - "algorithm":self.services["lbrule"]["alg"], - "privateport":str(self.services["lbrule"]["privateport"]), - "publicport":str(self.services["lbrule"]["publicport"]), - "name":self.services["lbrule"]["name"], - } + "algorithm": self.services["lbrule"]["alg"], + "privateport": str(self.services["lbrule"]["privateport"]), + "publicport": str(self.services["lbrule"]["publicport"]), + "name": self.services["lbrule"]["name"], + } actual_dict = { - "algorithm":str(lb_rule.algorithm), - "privateport":str(lb_rule.privateport), - "publicport":str(lb_rule.publicport), - "name":str(lb_rule.name), - } + "algorithm": str(lb_rule.algorithm), + "privateport": str(lb_rule.privateport), + "publicport": str(lb_rule.publicport), + "name": str(lb_rule.name), + } lbrule_status = self.__verify_values( - expected_dict, - actual_dict - ) + expected_dict, + actual_dict + ) self.assertEqual( - True, - lbrule_status, - "Created Load Balancer Rule details are not as expected" - ) - # Listing Load Balancer Rules for the Ip Address + True, + lbrule_status, + "Created Load Balancer Rule details are not as expected" + ) + # Listing Load Balancer Rules for the Ip Address list_lbrules_after = LoadBalancerRule.list( - self.userapiclient, - listall=self.services["listall"], - publicipid=associated_ipaddress.ipaddress.id, - ) + self.userapiclient, + listall=self.services["listall"], + publicipid=associated_ipaddress.ipaddress.id, + ) status = validateList(list_lbrules_after) self.assertEquals( - PASS, - status[0], - "Load Balancer Rule creation Failed" - ) + PASS, + status[0], + "Load Balancer Rule creation Failed" + ) # Verifying the length of the list is 1 self.assertEqual( - 1, - len(list_lbrules_after), - "Load Balancer Rule creation Failed" - ) + 1, + len(list_lbrules_after), + "Load Balancer Rule creation Failed" + ) # Deleting Load Balancer Rule lb_rule.delete(self.userapiclient) # Listing Load Balancer Rules for the Ip Address list_lbrules_after = LoadBalancerRule.list( - self.userapiclient, - listall=self.services["listall"], - publicipid=associated_ipaddress.ipaddress.id - ) + self.userapiclient, + listall=self.services["listall"], + publicipid=associated_ipaddress.ipaddress.id + ) # Verifying no Load Balancer Rules are Listed self.assertIsNone( - list_lbrules_after, - "Failed to delete Load Balancer Rule" - ) + list_lbrules_after, + "Failed to delete Load Balancer Rule" + ) self.cleanup.append(self.account) return @attr(tags=["advanced"], required_hardware="true") def test_06_update_lbrule_name(self): """ - @summary: Test to Update Load Balancer Rule Name for IP Address associated to Non VPC network + @summary: Test to Update Load Balancer Rule Name for + IP Address associated to Non VPC network @Steps: Step1: Creating a Network for the user Step2: Associating an IP Addresses for Network - Step3: Listing Load Balancer Rules for the IP Address associated in Step2 + Step3: Listing Load Balancer Rules for the IP Address associated + in Step2 Step4: Verifying that no Load Balancer Rules are listed Step5: Creating a Load Balancer Rule for IP Address associated in Step2 - Step6: Listing Load Balancer Rules for the IP Address associated in Step2 + Step6: Listing Load Balancer Rules for the IP Address associated in + Step2 Step7: Verifying 1 Load Balancer Rule is listed Step8: Updating the Load Balancer Rule created in Step5 Step9: Verifying that Load Balancer Rule details are updated """ # Listing all the Networks's for a user list_networks_before = Network.list( - self.userapiclient, - listall=self.services["listall"], - type="Isolated" - ) + self.userapiclient, + listall=self.services["listall"], + type="Isolated" + ) # Verifying No Networks are listed self.assertIsNone( - list_networks_before, - "Networks listed for newly created User" - ) + list_networks_before, + "Networks listed for newly created User" + ) # Listing Network Offerings network_offerings_list = NetworkOffering.list( - self.apiClient, - forvpc="false", - guestiptype="Isolated", - state="Enabled", - supportedservices="SourceNat,Lb", - zoneid=self.zone.id - ) + self.apiClient, + forvpc="false", + guestiptype="Isolated", + state="Enabled", + supportedservices="SourceNat,Lb", + zoneid=self.zone.id + ) status = validateList(network_offerings_list) self.assertEquals( - PASS, - status[0], - "Isolated Network Offerings with sourceNat, Lb enabled are not found" - ) + PASS, + status[0], + "Isolated Network Offerings with sourceNat,\ + Lb enabled are not found" + ) # Creating a network network = Network.create( - self.userapiclient, - self.services["network"], - accountid=self.account.name, - domainid=self.domain.id, - networkofferingid=network_offerings_list[0].id, - zoneid=self.zone.id - ) + self.userapiclient, + self.services["network"], + accountid=self.account.name, + domainid=self.domain.id, + networkofferingid=network_offerings_list[0].id, + zoneid=self.zone.id + ) self.assertIsNotNone( - network, - "Network creation failed" - ) + network, + "Network creation failed" + ) self.cleanup.append(network) # Listing Networks again list_networks_after = Network.list( - self.userapiclient, - listall=self.services["listall"], - type="Isolated" - ) + self.userapiclient, + listall=self.services["listall"], + type="Isolated" + ) status = validateList(list_networks_after) self.assertEquals( - PASS, - status[0], - "Network Creation Failed" - ) + PASS, + status[0], + "Network Creation Failed" + ) # Verifying network list count is increased by 1 self.assertEquals( - 1, - len(list_networks_after), - "Network Creation Failed" - ) + 1, + len(list_networks_after), + "Network Creation Failed" + ) # Listing all the IP Addresses for a user list_ipaddresses_before = PublicIPAddress.list( - self.userapiclient, - listall=self.services["listall"] - ) + self.userapiclient, + listall=self.services["listall"] + ) # Verifying no IP Addresses are listed self.assertIsNone( - list_ipaddresses_before, - "IP Addresses listed for newly created User" - ) + list_ipaddresses_before, + "IP Addresses listed for newly created User" + ) # Associating an IP Addresses to Network created associated_ipaddress = PublicIPAddress.create( - self.userapiclient, - services=self.services["network"], - networkid=network.id - ) + self.userapiclient, + services=self.services["network"], + networkid=network.id + ) self.assertIsNotNone( - associated_ipaddress, - "Failed to Associate IP Address" - ) + associated_ipaddress, + "Failed to Associate IP Address" + ) # Listing all the IP Addresses for a user list_ipaddresses_after = PublicIPAddress.list( - self.userapiclient, - listall=self.services["listall"] - ) + self.userapiclient, + listall=self.services["listall"] + ) status = validateList(list_ipaddresses_after) self.assertEquals( - PASS, - status[0], - "IP Addresses Association Failed" - ) + PASS, + status[0], + "IP Addresses Association Failed" + ) # Verifying the length of the list is 1 self.assertEqual( - 1, - len(list_ipaddresses_after), - "Number of IP Addresses associated are not matching expected" - ) + 1, + len(list_ipaddresses_after), + "Number of IP Addresses associated are not matching expected" + ) # Listing Load Balancer Rules for the Ip Address list_lbrules_before = LoadBalancerRule.list( - self.userapiclient, - listall=self.services["listall"], - publicipid=associated_ipaddress.ipaddress.id - ) + self.userapiclient, + listall=self.services["listall"], + publicipid=associated_ipaddress.ipaddress.id + ) # Verifying no Load Balancer Rules are listed self.assertIsNone( - list_lbrules_before, - "Load Balancer Rules listed for newly Acquired Ip Address" - ) + list_lbrules_before, + "Load Balancer Rules listed for newly Acquired Ip Address" + ) self.services["lbrule"]["openfirewall"] = 'false' # Creating a Load Balancer Rule for Ip Address lb_rule = LoadBalancerRule.create( - self.userapiclient, - self.services["lbrule"], - ipaddressid=associated_ipaddress.ipaddress.id, - ) + self.userapiclient, + self.services["lbrule"], + ipaddressid=associated_ipaddress.ipaddress.id, + ) self.assertIsNotNone( - lb_rule, - "Failed to create Load Balancer Rule" - ) + lb_rule, + "Failed to create Load Balancer Rule" + ) # Listing Load Balancer Rules for the Ip Address list_lbrules_after = LoadBalancerRule.list( - self.userapiclient, - listall=self.services["listall"], - publicipid=associated_ipaddress.ipaddress.id - ) + self.userapiclient, + listall=self.services["listall"], + publicipid=associated_ipaddress.ipaddress.id + ) status = validateList(list_lbrules_after) self.assertEquals( - PASS, - status[0], - "Load Balancer Rule creation Failed" - ) + PASS, + status[0], + "Load Balancer Rule creation Failed" + ) # Verifying the length of the list is 1 self.assertEqual( - 1, - len(list_lbrules_after), - "Load Balancer Rule creation Failed" - ) + 1, + len(list_lbrules_after), + "Load Balancer Rule creation Failed" + ) # Updating Load Balancer Rule Name updated_lb_rule = LoadBalancerRule.update( - lb_rule, - self.userapiclient, - algorithm="source", - name="NewLBRuleName" - ) + lb_rule, + self.userapiclient, + algorithm="source", + name="NewLBRuleName" + ) self.assertIsNotNone( - updated_lb_rule, - "Failed to update Load Balancer Rule details" - ) + updated_lb_rule, + "Failed to update Load Balancer Rule details" + ) # Verifying details of the updated Load Balancer Rule # Creating expected and actual values dictionaries expected_dict = { - "id":lb_rule.id, - "account":lb_rule.account, - "algorithm":"source", - "domainid":lb_rule.domainid, - "name":"NewLBRuleName", - "networkid":lb_rule.networkid, - "zoneid":lb_rule.zoneid, - "privateport":lb_rule.privateport, - "publicip":lb_rule.publicip, - "publicport":lb_rule.publicport, - } + "id": lb_rule.id, + "account": lb_rule.account, + "algorithm": "source", + "domainid": lb_rule.domainid, + "name": "NewLBRuleName", + "networkid": lb_rule.networkid, + "zoneid": lb_rule.zoneid, + "privateport": lb_rule.privateport, + "publicip": lb_rule.publicip, + "publicport": lb_rule.publicport, + } actual_dict = { - "id":updated_lb_rule.id, - "account":updated_lb_rule.account, - "algorithm":updated_lb_rule.algorithm, - "domainid":updated_lb_rule.domainid, - "name":updated_lb_rule.name, - "networkid":updated_lb_rule.networkid, - "zoneid":updated_lb_rule.zoneid, - "privateport":updated_lb_rule.privateport, - "publicip":updated_lb_rule.publicip, - "publicport":updated_lb_rule.publicport, - } + "id": updated_lb_rule.id, + "account": updated_lb_rule.account, + "algorithm": updated_lb_rule.algorithm, + "domainid": updated_lb_rule.domainid, + "name": updated_lb_rule.name, + "networkid": updated_lb_rule.networkid, + "zoneid": updated_lb_rule.zoneid, + "privateport": updated_lb_rule.privateport, + "publicip": updated_lb_rule.publicip, + "publicport": updated_lb_rule.publicport, + } lbrule_status = self.__verify_values( - expected_dict, - actual_dict - ) + expected_dict, + actual_dict + ) self.assertEqual( - True, - lbrule_status, - "Updated Load Balancer Rule details are not as expected" - ) + True, + lbrule_status, + "Updated Load Balancer Rule details are not as expected" + ) self.cleanup.append(self.account) return @@ -1244,291 +1269,301 @@ class TestIpAddresses(cloudstackTestCase): """ # Listing all the Networks's for a user list_networks_before = Network.list( - self.userapiclient, - listall=self.services["listall"], - type="Isolated" - ) + self.userapiclient, + listall=self.services["listall"], + type="Isolated" + ) # Verifying No Networks are listed self.assertIsNone( - list_networks_before, - "Networks listed for newly created User" - ) + list_networks_before, + "Networks listed for newly created User" + ) # Listing Network Offerings network_offerings_list = NetworkOffering.list( - self.apiClient, - forvpc="false", - guestiptype="Isolated", - state="Enabled", - supportedservices="SourceNat,Lb", - zoneid=self.zone.id - ) + self.apiClient, + forvpc="false", + guestiptype="Isolated", + state="Enabled", + supportedservices="SourceNat,Lb", + zoneid=self.zone.id + ) status = validateList(network_offerings_list) self.assertEquals( - PASS, - status[0], - "Isolated Network Offerings with sourceNat, Lb enabled are not found" - ) + PASS, + status[0], + "Isolated Network Offerings with sourceNat,\ + Lb enabled are not found" + ) # Creating a network network = Network.create( - self.userapiclient, - self.services["network"], - accountid=self.account.name, - domainid=self.domain.id, - networkofferingid=network_offerings_list[0].id, - zoneid=self.zone.id - ) + self.userapiclient, + self.services["network"], + accountid=self.account.name, + domainid=self.domain.id, + networkofferingid=network_offerings_list[0].id, + zoneid=self.zone.id + ) self.assertIsNotNone( - network, - "Network creation failed" - ) + network, + "Network creation failed" + ) # Listing all the IP Addresses for a user list_ipaddresses_before = PublicIPAddress.list( - self.userapiclient, - listall=self.services["listall"] - ) + self.userapiclient, + listall=self.services["listall"] + ) # Verifying no IP Addresses are listed self.assertIsNone( - list_ipaddresses_before, - "IP Addresses listed for newly created User" - ) + list_ipaddresses_before, + "IP Addresses listed for newly created User" + ) # Associating an IP Addresses to Network created associated_ipaddress = PublicIPAddress.create( - self.userapiclient, - services=self.services["network"], - networkid=network.id - ) + self.userapiclient, + services=self.services["network"], + networkid=network.id + ) self.assertIsNotNone( - associated_ipaddress, - "Failed to Associate IP Address" - ) + associated_ipaddress, + "Failed to Associate IP Address" + ) # Listing all the IP Addresses for a user list_ipaddresses_after = PublicIPAddress.list( - self.userapiclient, - listall=self.services["listall"] - ) + self.userapiclient, + listall=self.services["listall"] + ) status = validateList(list_ipaddresses_after) self.assertEquals( - PASS, - status[0], - "IP Addresses Association Failed" - ) + PASS, + status[0], + "IP Addresses Association Failed" + ) # Verifying the length of the list is 1 self.assertEqual( - 1, - len(list_ipaddresses_after), - "Number of IP Addresses associated are not matching expected" - ) + 1, + len(list_ipaddresses_after), + "Number of IP Addresses associated are not matching expected" + ) # Launching a Virtual Machine with above created Network vm_created = VirtualMachine.create( - self.userapiclient, - self.services["virtual_machine"], - accountid=self.account.name, - domainid=self.account.domainid, - networkids=network.id, - serviceofferingid=self.service_offering.id, - ) + self.userapiclient, + self.services["virtual_machine"], + accountid=self.account.name, + domainid=self.account.domainid, + networkids=network.id, + serviceofferingid=self.service_offering.id, + ) self.assertIsNotNone( - vm_created, - "Failed to launch a VM under network created" - ) + vm_created, + "Failed to launch a VM under network created" + ) self.cleanup.append(network) - # Listing Virtual Machines in Running state in the network created above + # Listing Virtual Machines in Running state in the network created + # above list_vms_running = VirtualMachine.list( - self.userapiclient, - listall=self.services["listall"], - account=self.account.name, - domainid=self.domain.id, - state="Running", - networkid=network.id - ) + self.userapiclient, + listall=self.services["listall"], + account=self.account.name, + domainid=self.domain.id, + state="Running", + networkid=network.id + ) status = validateList(list_vms_running) self.assertEquals( - PASS, - status[0], - "VM Created is not in Running state" - ) + PASS, + status[0], + "VM Created is not in Running state" + ) # Verifying the length of the list is 1 self.assertEqual( - 1, - len(list_vms_running), - "VM Created is not in Running state" - ) + 1, + len(list_vms_running), + "VM Created is not in Running state" + ) self.assertEquals( - vm_created.id, - list_vms_running[0].id, - "VM Created is not in Running state" - ) - # Listing Virtual Machines in Stopped state in the network created above + vm_created.id, + list_vms_running[0].id, + "VM Created is not in Running state" + ) + # Listing Virtual Machines in Stopped state in the network created + # above list_vms_stopped = VirtualMachine.list( - self.userapiclient, - listall=self.services["listall"], - account=self.account.name, - domainid=self.domain.id, - state="Stopped", - networkid=network.id - ) + self.userapiclient, + listall=self.services["listall"], + account=self.account.name, + domainid=self.domain.id, + state="Stopped", + networkid=network.id + ) # Verifying that no vms are listed self.assertIsNone( - list_vms_stopped, - "Created VM is in Stopped state" - ) + list_vms_stopped, + "Created VM is in Stopped state" + ) # Listing Load Balancer Rules for the Ip Address list_lbrules_before = LoadBalancerRule.list( - self.userapiclient, - listall=self.services["listall"], - publicipid=associated_ipaddress.ipaddress.id - ) + self.userapiclient, + listall=self.services["listall"], + publicipid=associated_ipaddress.ipaddress.id + ) # Verifying no Load Balancer Rules are listed self.assertIsNone( - list_lbrules_before, - "Load Balancer Rules listed for newly Acquired Ip Address" - ) + list_lbrules_before, + "Load Balancer Rules listed for newly Acquired Ip Address" + ) self.services["lbrule"]["openfirewall"] = 'false' # Creating a Load Balancer Rule for Ip Address lb_rule = LoadBalancerRule.create( - self.userapiclient, - self.services["lbrule"], - ipaddressid=associated_ipaddress.ipaddress.id, - ) + self.userapiclient, + self.services["lbrule"], + ipaddressid=associated_ipaddress.ipaddress.id, + ) self.assertIsNotNone( - lb_rule, - "Failed to create Load Balancer Rule" - ) + lb_rule, + "Failed to create Load Balancer Rule" + ) # Listing Load Balancer Rules for the Ip Address list_lbrules_after = LoadBalancerRule.list( - self.userapiclient, - listall=self.services["listall"], - publicipid=associated_ipaddress.ipaddress.id - ) + self.userapiclient, + listall=self.services["listall"], + publicipid=associated_ipaddress.ipaddress.id + ) status = validateList(list_lbrules_after) self.assertEquals( - PASS, - status[0], - "Load Balancer Rule creation Failed" - ) + PASS, + status[0], + "Load Balancer Rule creation Failed" + ) # Verifying the length of the list is 1 self.assertEqual( - 1, - len(list_lbrules_after), - "Load Balancer Rule creation Failed" - ) + 1, + len(list_lbrules_after), + "Load Balancer Rule creation Failed" + ) # Listing Load Balancer Rule Instances for applied as true - list_lbruleinstance_applied_true = LoadBalancerRule.listLoadBalancerRuleInstances( - self.userapiclient, - id=lb_rule.id, - applied="true" - ) + list_lbruleinstance_applied_true =\ + LoadBalancerRule.listLoadBalancerRuleInstances( + self.userapiclient, + id=lb_rule.id, + applied="true" + ) # Verifying No Instances are assigned to the Load Balancer Rule self.assertIsNone( - list_lbruleinstance_applied_true, - "Instances are assigned to Newly created Load Balancer Rule" - ) + list_lbruleinstance_applied_true, + "Instances are assigned to Newly created Load Balancer Rule" + ) # Listing Load Balancer Rule Instances for applied as false - list_lbruleinstance_applied_false = LoadBalancerRule.listLoadBalancerRuleInstances( - self.userapiclient, - id=lb_rule.id, - applied="false" - ) + list_lbruleinstance_applied_false =\ + LoadBalancerRule.listLoadBalancerRuleInstances( + self.userapiclient, + id=lb_rule.id, + applied="false" + ) status = validateList(list_lbruleinstance_applied_false) self.assertEquals( - PASS, - status[0], - "No Instances are available to assign to Load Balancer Rule" - ) + PASS, + status[0], + "No Instances are available to assign to Load Balancer Rule" + ) # Verifying the length of the list is 1 self.assertEqual( - 1, - len(list_lbruleinstance_applied_false), - "No Instances are available to assign to Load Balancer Rule" - ) + 1, + len(list_lbruleinstance_applied_false), + "No Instances are available to assign to Load Balancer Rule" + ) # Verifying that Instance created above is listed self.assertEquals( - vm_created.id, - list_lbruleinstance_applied_false[0].id, - "Failed to list Instance available to asign a Load Balancer Rule" - ) + vm_created.id, + list_lbruleinstance_applied_false[0].id, + "Failed to list Instance available to asign a Load Balancer Rule" + ) # Assigning Instance created to Load Balancer Rule LoadBalancerRule.assign( - lb_rule, - self.userapiclient, - vms=[vm_created] - ) + lb_rule, + self.userapiclient, + vms=[vm_created] + ) # Listing Load Balancer Rule Instances for applied as true - list_lbruleinstance_applied_true = LoadBalancerRule.listLoadBalancerRuleInstances( - self.userapiclient, - id=lb_rule.id, - applied="true" - ) + list_lbruleinstance_applied_true =\ + LoadBalancerRule.listLoadBalancerRuleInstances( + self.userapiclient, + id=lb_rule.id, + applied="true" + ) status = validateList(list_lbruleinstance_applied_false) self.assertEquals( - PASS, - status[0], - "No Instances are available to assign to Load Balancer Rule" - ) + PASS, + status[0], + "No Instances are available to assign to Load Balancer Rule" + ) # Verifying the length of the list is 1 self.assertEqual( - 1, - len(list_lbruleinstance_applied_false), - "No Instances are available to assign to Load Balancer Rule" - ) + 1, + len(list_lbruleinstance_applied_false), + "No Instances are available to assign to Load Balancer Rule" + ) # Verifying Instances is assigned to the Load Balancer Rule self.assertEquals( - vm_created.id, - list_lbruleinstance_applied_true[0].id, - "Failed to assign Load Balancer Rule to given Instance" - ) + vm_created.id, + list_lbruleinstance_applied_true[0].id, + "Failed to assign Load Balancer Rule to given Instance" + ) # Listing Load Balancer Rule Instances for applied as false - list_lbruleinstance_applied_false = LoadBalancerRule.listLoadBalancerRuleInstances( - self.userapiclient, - id=lb_rule.id, - applied="false" - ) + list_lbruleinstance_applied_false =\ + LoadBalancerRule.listLoadBalancerRuleInstances( + self.userapiclient, + id=lb_rule.id, + applied="false" + ) # Verifying No Load Balancer Rules Instances are available to assign self.assertIsNone( - list_lbruleinstance_applied_false, - "Instances are available for assigning a Load Balancer Rule" - ) + list_lbruleinstance_applied_false, + "Instances are available for assigning a Load Balancer Rule" + ) # Removing Load balancer Rule from Instance LoadBalancerRule.remove( - lb_rule, - self.userapiclient, - vms=[vm_created] - ) + lb_rule, + self.userapiclient, + vms=[vm_created] + ) # Listing Load Balancer Rule Instances for applied as true - list_lbruleinstance_applied_true = LoadBalancerRule.listLoadBalancerRuleInstances( - self.userapiclient, - id=lb_rule.id, - applied="true" - ) - # Verifying that there are no Instances assigned to the Load Balancer Rule + list_lbruleinstance_applied_true =\ + LoadBalancerRule.listLoadBalancerRuleInstances( + self.userapiclient, + id=lb_rule.id, + applied="true" + ) + # Verifying that there are no Instances assigned to the Load Balancer + # Rule self.assertIsNone( - list_lbruleinstance_applied_true, - "Instances is assigned to Load balancer Rule" - ) + list_lbruleinstance_applied_true, + "Instances is assigned to Load balancer Rule" + ) # Listing Load Balancer Rule Instances for applied as false - list_lbruleinstance_applied_false = LoadBalancerRule.listLoadBalancerRuleInstances( - self.userapiclient, - id=lb_rule.id, - applied="false" - ) + list_lbruleinstance_applied_false =\ + LoadBalancerRule.listLoadBalancerRuleInstances( + self.userapiclient, + id=lb_rule.id, + applied="false" + ) status = validateList(list_lbruleinstance_applied_false) self.assertEquals( - PASS, - status[0], - "No Instances are available to assign to Load Balancer Rule" - ) + PASS, + status[0], + "No Instances are available to assign to Load Balancer Rule" + ) # Verifying the length of the list is 1 self.assertEqual( - 1, - len(list_lbruleinstance_applied_false), - "No Instances are available to assign to Load Balancer Rule" - ) + 1, + len(list_lbruleinstance_applied_false), + "No Instances are available to assign to Load Balancer Rule" + ) # Verifying that Instance created above is listed self.assertEquals( - vm_created.id, - list_lbruleinstance_applied_false[0].id, - "Failed to list Instance available to asign a Load Balancer Rule" - ) + vm_created.id, + list_lbruleinstance_applied_false[0].id, + "Failed to list Instance available to asign a Load Balancer Rule" + ) # Destroying the VM Launched vm_created.delete(self.apiClient) self.cleanup.append(self.account) @@ -1541,457 +1576,469 @@ class TestIpAddresses(cloudstackTestCase): @Steps: Step1: Creating a Network for the user Step2: Associating an IP Addresses for Network - Step3: Creating a Load Balancer Rule for IP Address associated in Step2 - Step4: Listing Load Balancer Sticky Policies for LB Rule created in Step3 + Step3: Creating a Load Balancer Rule for IP Address associated + in Step2 + Step4: Listing Load Balancer Sticky Policies for LB Rule created in + Step3 Step5: Verifying that no Load Balancer Sticky Policies are listed - Step6: Creating a Load Balancer Sticky Policies for LB Rule created in Step3 - Step7: Listing Load Balancer Sticky Policies for LB Rule created in Step3 + Step6: Creating a Load Balancer Sticky Policies for LB Rule created in + Step3 + Step7: Listing Load Balancer Sticky Policies for LB Rule created in + Step3 Step8: Verifying 1 Load Balancer Sticky Policy is listed Step9: Deleting the Load Balancer Sticky Policies - Step10: Listing Load Balancer Sticky Policies for LB Rule created in Step3 + Step10: Listing Load Balancer Sticky Policies for LB Rule created in + Step3 Step11: Verifying that no Load Balancer Sticky Policies are listed """ # Listing all the Networks's for a user list_networks_before = Network.list( - self.userapiclient, - listall=self.services["listall"], - type="Isolated" - ) + self.userapiclient, + listall=self.services["listall"], + type="Isolated" + ) # Verifying No Networks are listed self.assertIsNone( - list_networks_before, - "Networks listed for newly created User" - ) + list_networks_before, + "Networks listed for newly created User" + ) # Listing Network Offerings network_offerings_list = NetworkOffering.list( - self.apiClient, - forvpc="false", - guestiptype="Isolated", - state="Enabled", - supportedservices="SourceNat,Lb", - zoneid=self.zone.id - ) + self.apiClient, + forvpc="false", + guestiptype="Isolated", + state="Enabled", + supportedservices="SourceNat,Lb", + zoneid=self.zone.id + ) status = validateList(network_offerings_list) self.assertEquals( - PASS, - status[0], - "Isolated Network Offerings with sourceNat, Lb enabled are not found" - ) + PASS, + status[0], + "Isolated Network Offerings with sourceNat,\ + Lb enabled are not found" + ) # Creating a network network = Network.create( - self.userapiclient, - self.services["network"], - accountid=self.account.name, - domainid=self.domain.id, - networkofferingid=network_offerings_list[0].id, - zoneid=self.zone.id - ) + self.userapiclient, + self.services["network"], + accountid=self.account.name, + domainid=self.domain.id, + networkofferingid=network_offerings_list[0].id, + zoneid=self.zone.id + ) self.assertIsNotNone( - network, - "Network creation failed" - ) + network, + "Network creation failed" + ) self.cleanup.append(network) # Listing Networks again list_networks_after = Network.list( - self.userapiclient, - listall=self.services["listall"], - type="Isolated" - ) + self.userapiclient, + listall=self.services["listall"], + type="Isolated" + ) status = validateList(list_networks_after) self.assertEquals( - PASS, - status[0], - "Network Creation Failed" - ) + PASS, + status[0], + "Network Creation Failed" + ) # Verifying network list count is increased by 1 self.assertEquals( - 1, - len(list_networks_after), - "Network Creation Failed" - ) + 1, + len(list_networks_after), + "Network Creation Failed" + ) # Listing all the IP Addresses for a user list_ipaddresses_before = PublicIPAddress.list( - self.userapiclient, - listall=self.services["listall"] - ) + self.userapiclient, + listall=self.services["listall"] + ) # Verifying no IP Addresses are listed self.assertIsNone( - list_ipaddresses_before, - "IP Addresses listed for newly created User" - ) + list_ipaddresses_before, + "IP Addresses listed for newly created User" + ) # Associating an IP Addresses to Network created associated_ipaddress = PublicIPAddress.create( - self.userapiclient, - services=self.services["network"], - networkid=network.id - ) + self.userapiclient, + services=self.services["network"], + networkid=network.id + ) self.assertIsNotNone( - associated_ipaddress, - "Failed to Associate IP Address" - ) + associated_ipaddress, + "Failed to Associate IP Address" + ) # Listing all the IP Addresses for a user list_ipaddresses_after = PublicIPAddress.list( - self.userapiclient, - listall=self.services["listall"] - ) + self.userapiclient, + listall=self.services["listall"] + ) status = validateList(list_ipaddresses_after) self.assertEquals( - PASS, - status[0], - "IP Addresses Association Failed" - ) + PASS, + status[0], + "IP Addresses Association Failed" + ) # Verifying the length of the list is 1 self.assertEqual( - 1, - len(list_ipaddresses_after), - "Number of IP Addresses associated are not matching expected" - ) + 1, + len(list_ipaddresses_after), + "Number of IP Addresses associated are not matching expected" + ) # Listing Load Balancer Rules for the Ip Address list_lbrules_before = LoadBalancerRule.list( - self.userapiclient, - listall=self.services["listall"], - publicipid=associated_ipaddress.ipaddress.id - ) + self.userapiclient, + listall=self.services["listall"], + publicipid=associated_ipaddress.ipaddress.id + ) # Verifying no Load Balancer Rules are listed self.assertIsNone( - list_lbrules_before, - "Load Balancer Rules listed for newly Acquired Ip Address" - ) + list_lbrules_before, + "Load Balancer Rules listed for newly Acquired Ip Address" + ) self.services["lbrule"]["openfirewall"] = 'false' # Creating a Load Balancer Rule for Ip Address lb_rule = LoadBalancerRule.create( - self.userapiclient, - self.services["lbrule"], - ipaddressid=associated_ipaddress.ipaddress.id, - ) + self.userapiclient, + self.services["lbrule"], + ipaddressid=associated_ipaddress.ipaddress.id, + ) self.assertIsNotNone( - lb_rule, - "Failed to create Load Balancer Rule" - ) + lb_rule, + "Failed to create Load Balancer Rule" + ) # Listing Load Balancer Rules for the Ip Address list_lbrules_after = LoadBalancerRule.list( - self.userapiclient, - listall=self.services["listall"], - publicipid=associated_ipaddress.ipaddress.id - ) + self.userapiclient, + listall=self.services["listall"], + publicipid=associated_ipaddress.ipaddress.id + ) status = validateList(list_lbrules_after) self.assertEquals( - PASS, - status[0], - "Load Balancer Rule creation Failed" - ) + PASS, + status[0], + "Load Balancer Rule creation Failed" + ) # Verifying the length of the list is 1 self.assertEqual( - 1, - len(list_lbrules_after), - "Load Balancer Rule creation Failed" - ) + 1, + len(list_lbrules_after), + "Load Balancer Rule creation Failed" + ) # Listing Load Balancer Stickyness Policies for LB Rule list_lbstickypolicy_before = LoadBalancerRule.listStickyPolicies( - self.userapiclient, - lbruleid=lb_rule.id, - listall=self.services["listall"] - ) + self.userapiclient, + lbruleid=lb_rule.id, + listall=self.services["listall"] + ) # Verifying no Sticky Policies are listed self.assertEquals( - 0, - len(list_lbstickypolicy_before[0].stickinesspolicy), - "Sticky Policy listed for newly created Load Balancer Rule" - ) + 0, + len(list_lbstickypolicy_before[0].stickinesspolicy), + "Sticky Policy listed for newly created Load Balancer Rule" + ) # Creating a Sticy Policy for Load Balancer Rule sticky_policy = LoadBalancerRule.createSticky( - lb_rule, - self.userapiclient, - methodname='LbCookie', - name='LbCookieSticky' - ) + lb_rule, + self.userapiclient, + methodname='LbCookie', + name='LbCookieSticky' + ) self.assertIsNotNone( - sticky_policy, - "Failed to create Sticky Policy for Load Balancer Rule" - ) + sticky_policy, + "Failed to create Sticky Policy for Load Balancer Rule" + ) # Verifying details of Sticky Policy created # Creating expected and actual values dictionaries expected_dict = { - "account":self.account.name, - "domainid":self.domain.id, - "lbruleid":lb_rule.id, - "methodname":"LbCookie", - "name":"LbCookieSticky", - } + "account": self.account.name, + "domainid": self.domain.id, + "lbruleid": lb_rule.id, + "methodname": "LbCookie", + "name": "LbCookieSticky", + } actual_dict = { - "account":sticky_policy.account, - "domainid":sticky_policy.domainid, - "lbruleid":sticky_policy.lbruleid, - "methodname":sticky_policy.stickinesspolicy[0].methodname, - "name":sticky_policy.stickinesspolicy[0].name, - } + "account": sticky_policy.account, + "domainid": sticky_policy.domainid, + "lbruleid": sticky_policy.lbruleid, + "methodname": sticky_policy.stickinesspolicy[0].methodname, + "name": sticky_policy.stickinesspolicy[0].name, + } lbstickypolicy_status = self.__verify_values( - expected_dict, - actual_dict - ) + expected_dict, + actual_dict + ) self.assertEqual( - True, - lbstickypolicy_status, - "Created Load Balancer Sticky Policy details are not as expected" - ) + True, + lbstickypolicy_status, + "Created Load Balancer Sticky Policy details are not as expected" + ) # Listing Load Balancer Stickyness Policies for LB Rule list_lbstickypolicy_after = LoadBalancerRule.listStickyPolicies( - self.userapiclient, - lbruleid=lb_rule.id, - listall=self.services["listall"] - ) + self.userapiclient, + lbruleid=lb_rule.id, + listall=self.services["listall"] + ) status = validateList(list_lbstickypolicy_after[0].stickinesspolicy) self.assertEquals( - PASS, - status[0], - "Load Balancer Sticky Policy creation Failed" - ) + PASS, + status[0], + "Load Balancer Sticky Policy creation Failed" + ) # Verifying the length of the list is 1 self.assertEqual( - 1, - len(list_lbstickypolicy_after[0].stickinesspolicy), - "Load Balancer Sticky Policy creation Failed" - ) + 1, + len(list_lbstickypolicy_after[0].stickinesspolicy), + "Load Balancer Sticky Policy creation Failed" + ) # Deleting the Sticky Policy LoadBalancerRule.deleteSticky( - lb_rule, - self.userapiclient, - id=sticky_policy.stickinesspolicy[0].id - ) + lb_rule, + self.userapiclient, + id=sticky_policy.stickinesspolicy[0].id + ) # Listing Load Balancer Stickyness Policies for LB Rule list_lbstickypolicy_after = LoadBalancerRule.listStickyPolicies( - self.userapiclient, - lbruleid=lb_rule.id, - listall=self.services["listall"] - ) + self.userapiclient, + lbruleid=lb_rule.id, + listall=self.services["listall"] + ) # Verifying no Sticky Policies are listed self.assertEquals( - 0, - len(list_lbstickypolicy_after[0].stickinesspolicy), - "Sticky Policy listed for newly created Load Balancer Rule" - ) + 0, + len(list_lbstickypolicy_after[0].stickinesspolicy), + "Sticky Policy listed for newly created Load Balancer Rule" + ) self.cleanup.append(self.account) return @attr(tags=["advanced"], required_hardware="true") def test_09_create_delete_portforwarding_fornonvpc(self): """ - @summary: Test to list, create and delete Port Forwarding for IP Address associated to Non VPC network + @summary: Test to list, create and delete Port Forwarding for + IP Address associated to Non VPC network @Steps: Step1: Creating a Network for the user Step2: Associating an IP Addresses for Network Step3: Launching Virtual Machine in network created in step 2 - Step4: Listing Port Forwarding Rules for the IP Address associated in Step2 + Step4: Listing Port Forwarding Rules for the IP Address associated + in Step2 Step5: Verifying that no Port Forwarding Rules are listed - Step6: Creating a Port Forwarding Rule for IP Address associated in Step2 - Step7: Listing Port Forwarding Rules for the IP Address associated in Step2 + Step6: Creating a Port Forwarding Rule for IP Address associated in + Step2 + Step7: Listing Port Forwarding Rules for the IP Address associated in + Step2 Step8: Verifying 1 Port Forwarding Rule is listed Step9: Deleting the Port Forwarding Rule created in Step6 - Step10: Listing Port Forwarding Rules for the IP Address associated in Step2 + Step10: Listing Port Forwarding Rules for the IP Address associated in + Step2 Step11: Verifying that no Port Forwarding Rules are listed """ # Listing all the Networks's for a user list_networks_before = Network.list( - self.userapiclient, - listall=self.services["listall"], - type="Isolated" - ) + self.userapiclient, + listall=self.services["listall"], + type="Isolated" + ) # Verifying No Networks are listed self.assertIsNone( - list_networks_before, - "Networks listed for newly created User" - ) + list_networks_before, + "Networks listed for newly created User" + ) # Listing Network Offerings network_offerings_list = NetworkOffering.list( - self.apiClient, - forvpc="false", - guestiptype="Isolated", - state="Enabled", - supportedservices="SourceNat,PortForwarding", - zoneid=self.zone.id - ) + self.apiClient, + forvpc="false", + guestiptype="Isolated", + state="Enabled", + supportedservices="SourceNat,PortForwarding", + zoneid=self.zone.id + ) status = validateList(network_offerings_list) self.assertEquals( - PASS, - status[0], - "Isolated Network Offerings with sourceNat, PortForwarding enabled are not found" - ) + PASS, + status[0], + "Isolated Network Offerings with sourceNat,\ + PortForwarding enabled are not found" + ) # Creating a network network = Network.create( - self.userapiclient, - self.services["network"], - accountid=self.account.name, - domainid=self.domain.id, - networkofferingid=network_offerings_list[0].id, - zoneid=self.zone.id - ) + self.userapiclient, + self.services["network"], + accountid=self.account.name, + domainid=self.domain.id, + networkofferingid=network_offerings_list[0].id, + zoneid=self.zone.id + ) self.assertIsNotNone( - network, - "Network creation failed" - ) + network, + "Network creation failed" + ) # Listing all the IP Addresses for a user list_ipaddresses_before = PublicIPAddress.list( - self.userapiclient, - listall=self.services["listall"] - ) + self.userapiclient, + listall=self.services["listall"] + ) # Verifying no IP Addresses are listed self.assertIsNone( - list_ipaddresses_before, - "IP Addresses listed for newly created User" - ) + list_ipaddresses_before, + "IP Addresses listed for newly created User" + ) # Associating an IP Addresses to Network created associated_ipaddress = PublicIPAddress.create( - self.userapiclient, - services=self.services["network"], - networkid=network.id - ) + self.userapiclient, + services=self.services["network"], + networkid=network.id + ) self.assertIsNotNone( - associated_ipaddress, - "Failed to Associate IP Address" - ) + associated_ipaddress, + "Failed to Associate IP Address" + ) # Listing all the IP Addresses for a user list_ipaddresses_after = PublicIPAddress.list( - self.userapiclient, - listall=self.services["listall"] - ) + self.userapiclient, + listall=self.services["listall"] + ) status = validateList(list_ipaddresses_after) self.assertEquals( - PASS, - status[0], - "IP Addresses Association Failed" - ) + PASS, + status[0], + "IP Addresses Association Failed" + ) # Verifying the length of the list is 1 self.assertEqual( - 1, - len(list_ipaddresses_after), - "Number of IP Addresses associated are not matching expected" - ) + 1, + len(list_ipaddresses_after), + "Number of IP Addresses associated are not matching expected" + ) # Launching a Virtual Machine with above created Network vm_created = VirtualMachine.create( - self.userapiclient, - self.services["virtual_machine"], - accountid=self.account.name, - domainid=self.account.domainid, - networkids=network.id, - serviceofferingid=self.service_offering.id, - ) + self.userapiclient, + self.services["virtual_machine"], + accountid=self.account.name, + domainid=self.account.domainid, + networkids=network.id, + serviceofferingid=self.service_offering.id, + ) self.assertIsNotNone( - vm_created, - "Failed to launch a VM under network created" - ) + vm_created, + "Failed to launch a VM under network created" + ) self.cleanup.append(network) # Listing Virtual Machines in running state in above created network list_vms_running = VirtualMachine.list( - self.userapiclient, - listall=self.services["listall"], - state="Running", - networkid=network.id - ) + self.userapiclient, + listall=self.services["listall"], + state="Running", + networkid=network.id + ) status = validateList(list_vms_running) self.assertEquals( - PASS, - status[0], - "VM Created is not in Running state" - ) + PASS, + status[0], + "VM Created is not in Running state" + ) # Verifying the length of the list is 1 self.assertEqual( - 1, - len(list_ipaddresses_after), - "VM Created is not in Runnning state" - ) + 1, + len(list_ipaddresses_after), + "VM Created is not in Runnning state" + ) self.assertEquals( - vm_created.id, - list_vms_running[0].id, - "VM Created is not in Runnning state" - ) + vm_created.id, + list_vms_running[0].id, + "VM Created is not in Runnning state" + ) # Listing Virtual Machines in stopped state in above created network list_vms_stopped = VirtualMachine.list( - self.userapiclient, - listall=self.services["listall"], - state="Stopped", - networkid=network.id - ) + self.userapiclient, + listall=self.services["listall"], + state="Stopped", + networkid=network.id + ) # Verifying no VMs are in stopped state self.assertIsNone( - list_vms_stopped, - "VM Created is in stopped state" - ) + list_vms_stopped, + "VM Created is in stopped state" + ) # Listing Port Forwarding Rules for the IP Address associated list_prtfwdrule_before = NATRule.list( - self.userapiclient, - listall=self.services["listall"], - ipaddressid=associated_ipaddress.ipaddress.id - ) + self.userapiclient, + listall=self.services["listall"], + ipaddressid=associated_ipaddress.ipaddress.id + ) # Verifying no port forwarding rules are listed self.assertIsNone( - list_prtfwdrule_before, - "Port Forwarding Rules listed for newly associated IP Address" - ) + list_prtfwdrule_before, + "Port Forwarding Rules listed for newly associated IP Address" + ) # Creating a Port Forwarding rule portfwd_rule = NATRule.create( - self.userapiclient, - virtual_machine=vm_created, - services=self.services["natrule"], - ipaddressid=associated_ipaddress.ipaddress.id, - ) + self.userapiclient, + virtual_machine=vm_created, + services=self.services["natrule"], + ipaddressid=associated_ipaddress.ipaddress.id, + ) self.assertIsNotNone( - portfwd_rule, - "Failed to create Port Forwarding Rule" - ) + portfwd_rule, + "Failed to create Port Forwarding Rule" + ) # Verifying details of Sticky Policy created # Creating expected and actual values dictionaries expected_dict = { - "ipaddressid":associated_ipaddress.ipaddress.id, - "privateport":str(self.services["natrule"]["privateport"]), - "publicport":str(self.services["natrule"]["publicport"]), - "protocol":str(self.services["natrule"]["protocol"]).lower(), - } + "ipaddressid": associated_ipaddress.ipaddress.id, + "privateport": str(self.services["natrule"]["privateport"]), + "publicport": str(self.services["natrule"]["publicport"]), + "protocol": str(self.services["natrule"]["protocol"]).lower(), + } actual_dict = { - "ipaddressid":portfwd_rule.ipaddressid, - "privateport":str(portfwd_rule.privateport), - "publicport":str(portfwd_rule.publicport), - "protocol":portfwd_rule.protocol, - } + "ipaddressid": portfwd_rule.ipaddressid, + "privateport": str(portfwd_rule.privateport), + "publicport": str(portfwd_rule.publicport), + "protocol": portfwd_rule.protocol, + } portfwd_status = self.__verify_values( - expected_dict, - actual_dict - ) + expected_dict, + actual_dict + ) self.assertEqual( - True, - portfwd_status, - "Created Port Forward Rule details are not as expected" - ) + True, + portfwd_status, + "Created Port Forward Rule details are not as expected" + ) # Listing Port Forwarding Rules for the IP Address associated list_prtfwdrule_after = NATRule.list( - self.userapiclient, - listall=self.services["listall"], - ipaddressid=associated_ipaddress.ipaddress.id - ) + self.userapiclient, + listall=self.services["listall"], + ipaddressid=associated_ipaddress.ipaddress.id + ) status = validateList(list_prtfwdrule_after) self.assertEquals( - PASS, - status[0], - "Failed to create Port Forwarding Rule" - ) + PASS, + status[0], + "Failed to create Port Forwarding Rule" + ) # Verifying the length of the list is 1 self.assertEqual( - 1, - len(list_prtfwdrule_after), - "Failed to create Port Forwarding Rule" - ) + 1, + len(list_prtfwdrule_after), + "Failed to create Port Forwarding Rule" + ) # Deleting Port Forwarding Rule portfwd_rule.delete(self.userapiclient) - # # Listing Port Forwarding Rules for the IP Address associated + # Listing Port Forwarding Rules for the IP Address associated list_prtfwdrule_after = NATRule.list( - self.userapiclient, - listall=self.services["listall"], - ipaddressid=associated_ipaddress.ipaddress.id - ) + self.userapiclient, + listall=self.services["listall"], + ipaddressid=associated_ipaddress.ipaddress.id + ) # Verifying no port forwarding rules are listed self.assertIsNone( - list_prtfwdrule_after, - "Port Forwarding Rules listed after deletion" - ) + list_prtfwdrule_after, + "Port Forwarding Rules listed after deletion" + ) # Destroying the VM Launched vm_created.delete(self.apiClient) self.cleanup.append(self.account) @@ -2000,221 +2047,222 @@ class TestIpAddresses(cloudstackTestCase): @attr(tags=["advanced"], required_hardware="true") def test_10_create_delete_portforwarding_forvpc(self): """ - @summary: Test to list, create and delete Port Forwarding Rule for IP Address associated to VPC + @summary: Test to list, create and delete Port Forwarding Rule + for IP Address associated to VPC @Steps: Step1: Creating a VPC for the user Step2: Creating Network inside VPC Step3: Associating an IP Addresses for VPC Step4: Launching a VM in the Network created in Step 2 - Step5: Listing Port Forwarding Rules for the IP Address associated in Step3 + Step5: Listing Port Forwarding Rules for the IP Address + associated in Step3 Step6: Verifying that no Port Forwarding Rules are listed - Step7: Creating a Port Forwarding Rule for IP Address associated in Step3 - Step8: Listing Port Forwarding Rules for the IP Address associated in Step3 + Step7: Creating a Port Forwarding Rule for IP Address associated + in Step3 + Step8: Listing Port Forwarding Rules for the IP Address + associated in Step3 Step9: Verifying 1 Port Forwarding Rule is listed Step10: Deleting the Port Forwarding Rule created in Step7 - Step11: Listing Port Forwarding Rules for the IP Address associated in Step3 + Step11: Listing Port Forwarding Rules for the IP Address + associated in Step3 Step12: Verifying that no Port Forwarding Rules are listed """ # Listing all the vpc's for a user list_vpc_before = VPC.list(self.userapiclient) # Verifying No VPCs are listed self.assertIsNone( - list_vpc_before, - "VPC's Listed for newly Created User" - ) - # Listing VPC Offerings - list_vpc_offering = VpcOffering.list(self.userapiclient) - status = validateList(list_vpc_offering) - self.assertEquals( - PASS, - status[0], - "list vpc offering is none" - ) + list_vpc_before, + "VPC's Listed for newly Created User" + ) # Creating a vpc vpc_created = VPC.create( - self.userapiclient, - self.services["vpc"], - list_vpc_offering[0].id, - self.zone.id - ) + self.userapiclient, + self.services["vpc"], + self.vpc_offering.id, + self.zone.id + ) self.assertIsNotNone( - vpc_created, - "VPC Creation Failed" - ) + vpc_created, + "VPC Creation Failed" + ) # Listing the vpc for a user after creating a vpc list_vpc_after = VPC.list(self.userapiclient) status = validateList(list_vpc_after) self.assertEquals( - PASS, - status[0], - "list VPC not as expected" - ) + PASS, + status[0], + "list VPC not as expected" + ) # Verifying the list vpc size is increased by 1 self.assertEquals( - 1, - len(list_vpc_after), - "list VPC not equal as expected" - ) + 1, + len(list_vpc_after), + "list VPC not equal as expected" + ) # List network offering for vpc = true network_offering_vpc_true_list = NetworkOffering.list( - self.userapiclient, - forvpc="true", - zoneid=self.zone.id, - supportedServices="SourceNat,PortForwarding", - state="Enabled" - ) + self.userapiclient, + forvpc="true", + zoneid=self.zone.id, + supportedServices="SourceNat,PortForwarding", + state="Enabled" + ) status = validateList(network_offering_vpc_true_list) - self.assertEquals(PASS, status[0], "Default network offering not present for vpc = true with PortForwarding") + self.assertEquals( + PASS, + status[0], + "Default network offering not present for\ + vpc = true with PortForwarding") # Creating network under VPC network_created = Network.create( - self.userapiclient, - self.services["ntwk"], - networkofferingid=network_offering_vpc_true_list[0].id, - vpcid=vpc_created.id, - zoneid=self.zone.id, - gateway=self.services["ntwk"]["gateway"], - netmask=self.services["ntwk"]["netmask"] - ) + self.userapiclient, + self.services["ntwk"], + networkofferingid=network_offering_vpc_true_list[0].id, + vpcid=vpc_created.id, + zoneid=self.zone.id, + gateway=self.services["ntwk"]["gateway"], + netmask=self.services["ntwk"]["netmask"] + ) self.assertIsNotNone( - network_created, - "Network is not created" - ) + network_created, + "Network is not created" + ) # Listing all the IP Addresses for a user list_ipaddresses_before = PublicIPAddress.list( - self.userapiclient, - listall=self.services["listall"] - ) + self.userapiclient, + listall=self.services["listall"] + ) status = validateList(list_ipaddresses_before) self.assertEquals( - PASS, - status[0], - "list IP Addresses not as expected" - ) + PASS, + status[0], + "list IP Addresses not as expected" + ) # Verifying the list vpc size is increased by 1 self.assertEquals( - 1, - len(list_ipaddresses_before), - "list IP Addresses not equal as expected" - ) + 1, + len(list_ipaddresses_before), + "list IP Addresses not equal as expected" + ) # Associating an IP Addresses to VPC created associated_ipaddress = PublicIPAddress.create( - self.userapiclient, - services=self.services["network"], - vpcid=vpc_created.id - ) + self.userapiclient, + services=self.services["network"], + vpcid=vpc_created.id + ) self.assertIsNotNone( - associated_ipaddress, - "Failed to Associate IP Address" - ) + associated_ipaddress, + "Failed to Associate IP Address" + ) # Listing all the IP Addresses for a user list_ipaddresses_after = PublicIPAddress.list( - self.userapiclient, - listall=self.services["listall"] - ) + self.userapiclient, + listall=self.services["listall"] + ) status = validateList(list_ipaddresses_after) self.assertEquals( - PASS, - status[0], - "IP Addresses Association Failed" - ) + PASS, + status[0], + "IP Addresses Association Failed" + ) # Verifying the length of the list is 1 self.assertEqual( - len(list_ipaddresses_before) + 1, - len(list_ipaddresses_after), - "Number of IP Addresses associated are not matching expected" - ) + len(list_ipaddresses_before) + 1, + len(list_ipaddresses_after), + "Number of IP Addresses associated are not matching expected" + ) # Launching a Virtual Machine with above created Network vm_created = VirtualMachine.create( - self.userapiclient, - self.services["virtual_machine"], - accountid=self.account.name, - domainid=self.account.domainid, - networkids=network_created.id, - serviceofferingid=self.service_offering.id, - ) + self.userapiclient, + self.services["virtual_machine"], + accountid=self.account.name, + domainid=self.account.domainid, + networkids=network_created.id, + serviceofferingid=self.service_offering.id, + ) self.assertIsNotNone( - vm_created, - "Failed to launch a VM under network created" - ) + vm_created, + "Failed to launch a VM under network created" + ) self.cleanup.append(network_created) self.cleanup.append(vpc_created) # Listing Port Forwarding Rules for the IP Address associated list_prtfwdrule_before = NATRule.list( - self.userapiclient, - listall=self.services["listall"], - ipaddressid=associated_ipaddress.ipaddress.id - ) + self.userapiclient, + listall=self.services["listall"], + ipaddressid=associated_ipaddress.ipaddress.id + ) # Verifying no port forwarding rules are listed self.assertIsNone( - list_prtfwdrule_before, - "Port Forwarding Rules listed for newly associated IP Address" - ) + list_prtfwdrule_before, + "Port Forwarding Rules listed for newly associated IP Address" + ) # Creating a Port Forwarding rule portfwd_rule = NATRule.create( - self.userapiclient, - virtual_machine=vm_created, - services=self.services["natrule"], - ipaddressid=associated_ipaddress.ipaddress.id, - networkid=network_created.id - ) + self.userapiclient, + virtual_machine=vm_created, + services=self.services["natrule"], + ipaddressid=associated_ipaddress.ipaddress.id, + networkid=network_created.id + ) self.assertIsNotNone( - portfwd_rule, - "Failed to create Port Forwarding Rule" - ) + portfwd_rule, + "Failed to create Port Forwarding Rule" + ) # Verifying details of Sticky Policy created # Creating expected and actual values dictionaries expected_dict = { - "ipaddressid":associated_ipaddress.ipaddress.id, - "privateport":str(self.services["natrule"]["privateport"]), - "publicport":str(self.services["natrule"]["publicport"]), - "protocol":str(self.services["natrule"]["protocol"]).lower(), - } + "ipaddressid": associated_ipaddress.ipaddress.id, + "privateport": str(self.services["natrule"]["privateport"]), + "publicport": str(self.services["natrule"]["publicport"]), + "protocol": str(self.services["natrule"]["protocol"]).lower(), + } actual_dict = { - "ipaddressid":portfwd_rule.ipaddressid, - "privateport":str(portfwd_rule.privateport), - "publicport":str(portfwd_rule.publicport), - "protocol":portfwd_rule.protocol, - } + "ipaddressid": portfwd_rule.ipaddressid, + "privateport": str(portfwd_rule.privateport), + "publicport": str(portfwd_rule.publicport), + "protocol": portfwd_rule.protocol, + } portfwd_status = self.__verify_values( - expected_dict, - actual_dict - ) + expected_dict, + actual_dict + ) self.assertEqual( - True, - portfwd_status, - "Created Port Forward Rule details are not as expected" - ) + True, + portfwd_status, + "Created Port Forward Rule details are not as expected" + ) # Listing Port Forwarding Rules for the IP Address associated list_prtfwdrule_after = NATRule.list( - self.userapiclient, - listall=self.services["listall"], - ipaddressid=associated_ipaddress.ipaddress.id - ) + self.userapiclient, + listall=self.services["listall"], + ipaddressid=associated_ipaddress.ipaddress.id + ) status = validateList(list_prtfwdrule_after) self.assertEquals( - PASS, - status[0], - "Failed to create Port Forwarding Rule" - ) + PASS, + status[0], + "Failed to create Port Forwarding Rule" + ) # Verifying the length of the list is 1 self.assertEqual( - 1, - len(list_prtfwdrule_after), - "Failed to create Port Forwarding Rule" - ) + 1, + len(list_prtfwdrule_after), + "Failed to create Port Forwarding Rule" + ) # Deleting Port Forwarding Rule portfwd_rule.delete(self.userapiclient) - # # Listing Port Forwarding Rules for the IP Address associated + # Listing Port Forwarding Rules for the IP Address associated list_prtfwdrule_after = NATRule.list( - self.userapiclient, - listall=self.services["listall"], - ipaddressid=associated_ipaddress.ipaddress.id - ) + self.userapiclient, + listall=self.services["listall"], + ipaddressid=associated_ipaddress.ipaddress.id + ) # Verifying no port forwarding rules are listed self.assertIsNone( - list_prtfwdrule_after, - "Port Forwarding Rules listed after deletion" - ) + list_prtfwdrule_after, + "Port Forwarding Rules listed after deletion" + ) # Destroying the VM Launched vm_created.delete(self.apiClient) self.cleanup.append(self.account) @@ -2223,7 +2271,8 @@ class TestIpAddresses(cloudstackTestCase): @attr(tags=["advanced"], required_hardware="true") def test_11_create_delete_firewallrule(self): """ - @summary: Test to list, create and delete Firewall Rule for IP Address associated to Non VPC network + @summary: Test to list, create and delete Firewall Rule for + IP Address associated to Non VPC network @Steps: Step1: Creating a Network for the user Step2: Associating an IP Addresses for Network @@ -2238,161 +2287,162 @@ class TestIpAddresses(cloudstackTestCase): """ # Listing all the Networks's for a user list_networks_before = Network.list( - self.userapiclient, - listall=self.services["listall"], - type="Isolated" - ) + self.userapiclient, + listall=self.services["listall"], + type="Isolated" + ) # Verifying No Networks are listed self.assertIsNone( - list_networks_before, - "Networks listed for newly created User" - ) + list_networks_before, + "Networks listed for newly created User" + ) # Listing Network Offerings network_offerings_list = NetworkOffering.list( - self.apiClient, - forvpc="false", - guestiptype="Isolated", - state="Enabled", - supportedservices="SourceNat,Firewall", - zoneid=self.zone.id - ) + self.apiClient, + forvpc="false", + guestiptype="Isolated", + state="Enabled", + supportedservices="SourceNat,Firewall", + zoneid=self.zone.id + ) status = validateList(network_offerings_list) self.assertEquals( - PASS, - status[0], - "Isolated Network Offerings with sourceNat, Firewall enabled are not found" - ) + PASS, + status[0], + "Isolated Network Offerings with sourceNat,\ + Firewall enabled are not found" + ) # Creating a network network = Network.create( - self.userapiclient, - self.services["network"], - accountid=self.account.name, - domainid=self.domain.id, - networkofferingid=network_offerings_list[0].id, - zoneid=self.zone.id - ) + self.userapiclient, + self.services["network"], + accountid=self.account.name, + domainid=self.domain.id, + networkofferingid=network_offerings_list[0].id, + zoneid=self.zone.id + ) self.assertIsNotNone( - network, - "Network creation failed" - ) + network, + "Network creation failed" + ) self.cleanup.append(network) # Listing all the IP Addresses for a user list_ipaddresses_before = PublicIPAddress.list( - self.userapiclient, - listall=self.services["listall"] - ) + self.userapiclient, + listall=self.services["listall"] + ) # Verifying no IP Addresses are listed self.assertIsNone( - list_ipaddresses_before, - "IP Addresses listed for newly created User" - ) + list_ipaddresses_before, + "IP Addresses listed for newly created User" + ) # Associating an IP Addresses to Network created associated_ipaddress = PublicIPAddress.create( - self.userapiclient, - services=self.services["network"], - networkid=network.id - ) + self.userapiclient, + services=self.services["network"], + networkid=network.id + ) self.assertIsNotNone( - associated_ipaddress, - "Failed to Associate IP Address" - ) + associated_ipaddress, + "Failed to Associate IP Address" + ) # Listing all the IP Addresses for a user list_ipaddresses_after = PublicIPAddress.list( - self.userapiclient, - listall=self.services["listall"] - ) + self.userapiclient, + listall=self.services["listall"] + ) status = validateList(list_ipaddresses_after) self.assertEquals( - PASS, - status[0], - "IP Addresses Association Failed" - ) + PASS, + status[0], + "IP Addresses Association Failed" + ) # Verifying the length of the list is 1 self.assertEqual( - 1, - len(list_ipaddresses_after), - "Number of IP Addresses associated are not matching expected" - ) + 1, + len(list_ipaddresses_after), + "Number of IP Addresses associated are not matching expected" + ) # Listing Firewall rules for the IP Associated list_firewalls_before = FireWallRule.list( - self.userapiclient, - listall=self.services["listall"], - ipaddressid=associated_ipaddress.ipaddress.id - ) + self.userapiclient, + listall=self.services["listall"], + ipaddressid=associated_ipaddress.ipaddress.id + ) # Verifying no firewall rules are listed self.assertIsNone( - list_firewalls_before, - "Firewall Rules listed for newly associated IP Address" - ) + list_firewalls_before, + "Firewall Rules listed for newly associated IP Address" + ) # Creating a Firewall Rule firewall_rule = FireWallRule.create( - self.userapiclient, - ipaddressid=associated_ipaddress.ipaddress.id, - protocol='tcp', - cidrlist='10.1.1.1/16', - startport='22', - endport='2222' - ) + self.userapiclient, + ipaddressid=associated_ipaddress.ipaddress.id, + protocol='tcp', + cidrlist='10.1.1.1/16', + startport='22', + endport='2222' + ) self.assertIsNotNone( - firewall_rule, - "Failed to create Firewall Rule" - ) + firewall_rule, + "Failed to create Firewall Rule" + ) # Verifying details of the created Firewall Rule # Creating expected and actual values dictionaries expected_dict = { - "ipaddressid":associated_ipaddress.ipaddress.id, - "startport":"22", - "endport":"2222", - "protocol":"tcp", - "cidrlist":"10.1.1.1/16" - } + "ipaddressid": associated_ipaddress.ipaddress.id, + "startport": "22", + "endport": "2222", + "protocol": "tcp", + "cidrlist": "10.1.1.1/16" + } actual_dict = { - "ipaddressid":firewall_rule.ipaddressid, - "startport":firewall_rule.startport, - "endport":firewall_rule.endport, - "protocol":firewall_rule.protocol, - "cidrlist":firewall_rule.cidrlist - } + "ipaddressid": firewall_rule.ipaddressid, + "startport": firewall_rule.startport, + "endport": firewall_rule.endport, + "protocol": firewall_rule.protocol, + "cidrlist": firewall_rule.cidrlist + } firewall_status = self.__verify_values( - expected_dict, - actual_dict - ) + expected_dict, + actual_dict + ) self.assertEqual( - True, - firewall_status, - "Created Firewall Rule details are not as expected" - ) + True, + firewall_status, + "Created Firewall Rule details are not as expected" + ) # Listing Firewall rules for the IP Associated list_firewalls_after = FireWallRule.list( - self.userapiclient, - listall=self.services["listall"], - ipaddressid=associated_ipaddress.ipaddress.id - ) + self.userapiclient, + listall=self.services["listall"], + ipaddressid=associated_ipaddress.ipaddress.id + ) status = validateList(list_firewalls_after) self.assertEquals( - PASS, - status[0], - "Failed to create Firewall Rule" - ) + PASS, + status[0], + "Failed to create Firewall Rule" + ) # Verifying the length of the list is 1 self.assertEqual( - 1, - len(list_firewalls_after), - "Failed to create Firewall Rule" - ) + 1, + len(list_firewalls_after), + "Failed to create Firewall Rule" + ) # Deleting the Firewall Rule firewall_rule.delete(self.userapiclient) # Listing Firewall rules for the IP Associated list_firewalls_after = FireWallRule.list( - self.userapiclient, - listall=self.services["listall"], - ipaddressid=associated_ipaddress.ipaddress.id - ) + self.userapiclient, + listall=self.services["listall"], + ipaddressid=associated_ipaddress.ipaddress.id + ) # Verifying no firewall rules are listed self.assertIsNone( - list_firewalls_after, - "Failed to create Firewall Rule" - ) + list_firewalls_after, + "Failed to create Firewall Rule" + ) self.cleanup.append(self.account) return @@ -2403,169 +2453,174 @@ class TestIpAddresses(cloudstackTestCase): @Steps: Step1: Creating a Network for the user Step2: Associating an IP Addresses for Network - Step3: Listing Remore Access VPNs for the IP Address associated in Step2 + Step3: Listing Remore Access VPNs for the IP Address associated + in Step2 Step4: Verifying that no Remore Access VPNs are listed - Step5: Creating a Remore Access VPN for IP Address associated in Step2 - Step6: Listing Remore Access VPNs for the IP Address associated in Step2 + Step5: Creating a Remore Access VPN for IP Address associated + in Step2 + Step6: Listing Remore Access VPNs for the IP Address associated in + Step2 Step7: Verifying 1 Remore Access VPN is listed Step8: Deleting the Remore Access VPNs created in Step5 - Step9: Listing Remore Access VPNs for the IP Address associated in Step2 + Step9: Listing Remore Access VPNs for the IP Address associated i + Step2 Step10: Verifying that no Remore Access VPNs are listed """ # Listing all the Networks's for a user list_networks_before = Network.list( - self.userapiclient, - listall=self.services["listall"], - type="Isolated" - ) + self.userapiclient, + listall=self.services["listall"], + type="Isolated" + ) # Verifying No Networks are listed self.assertIsNone( - list_networks_before, - "Networks listed for newly created User" - ) + list_networks_before, + "Networks listed for newly created User" + ) # Listing Network Offerings network_offerings_list = NetworkOffering.list( - self.apiClient, - forvpc="false", - guestiptype="Isolated", - state="Enabled", - supportedservices="SourceNat,Vpn", - zoneid=self.zone.id - ) + self.apiClient, + forvpc="false", + guestiptype="Isolated", + state="Enabled", + supportedservices="SourceNat,Vpn", + zoneid=self.zone.id + ) status = validateList(network_offerings_list) self.assertEquals( - PASS, - status[0], - "Isolated Network Offerings with sourceNat, Vpn enabled are not found" - ) + PASS, + status[0], + "Isolated Network Offerings with sourceNat,\ + Vpn enabled are not found" + ) # Creating a network network = Network.create( - self.userapiclient, - self.services["network"], - accountid=self.account.name, - domainid=self.domain.id, - networkofferingid=network_offerings_list[0].id, - zoneid=self.zone.id - ) + self.userapiclient, + self.services["network"], + accountid=self.account.name, + domainid=self.domain.id, + networkofferingid=network_offerings_list[0].id, + zoneid=self.zone.id + ) self.assertIsNotNone( - network, - "Network creation failed" - ) + network, + "Network creation failed" + ) self.cleanup.append(network) # Listing all the IP Addresses for a user list_ipaddresses_before = PublicIPAddress.list( - self.userapiclient, - listall=self.services["listall"] - ) + self.userapiclient, + listall=self.services["listall"] + ) # Verifying no IP Addresses are listed self.assertIsNone( - list_ipaddresses_before, - "IP Addresses listed for newly created User" - ) + list_ipaddresses_before, + "IP Addresses listed for newly created User" + ) # Associating an IP Addresses to Network created associated_ipaddress = PublicIPAddress.create( - self.userapiclient, - services=self.services["network"], - networkid=network.id - ) + self.userapiclient, + services=self.services["network"], + networkid=network.id + ) self.assertIsNotNone( - associated_ipaddress, - "Failed to Associate IP Address" - ) + associated_ipaddress, + "Failed to Associate IP Address" + ) # Listing all the IP Addresses for a user list_ipaddresses_after = PublicIPAddress.list( - self.userapiclient, - listall=self.services["listall"] - ) + self.userapiclient, + listall=self.services["listall"] + ) status = validateList(list_ipaddresses_after) self.assertEquals( - PASS, - status[0], - "IP Addresses Association Failed" - ) + PASS, + status[0], + "IP Addresses Association Failed" + ) # Verifying the length of the list is 1 self.assertEqual( - 1, - len(list_ipaddresses_after), - "Number of IP Addresses associated are not matching expected" - ) + 1, + len(list_ipaddresses_after), + "Number of IP Addresses associated are not matching expected" + ) # Listing Remote access VPNs for the IP Associated list_vpns_before = Vpn.list( - self.userapiclient, - listall=self.services["listall"], - ipaddressid=associated_ipaddress.ipaddress.id - ) + self.userapiclient, + listall=self.services["listall"], + ipaddressid=associated_ipaddress.ipaddress.id + ) # Verifying no Remote Access VPNs are listed self.assertIsNone( - list_vpns_before, - "Remote Access VPNs listed for newly associated IP Address" - ) + list_vpns_before, + "Remote Access VPNs listed for newly associated IP Address" + ) # Creating a Remote Access VPN vpn_created = Vpn.create( - self.userapiclient, - publicipid=associated_ipaddress.ipaddress.id, - account=self.account.name, - domainid=self.domain.id, - openfirewall='false' - ) + self.userapiclient, + publicipid=associated_ipaddress.ipaddress.id, + account=self.account.name, + domainid=self.domain.id, + openfirewall='false' + ) self.assertIsNotNone( - vpn_created, - "Failed to create Remote Access VPN" - ) + vpn_created, + "Failed to create Remote Access VPN" + ) # Verifying details of the created Remote Access VPN # Creating expected and actual values dictionaries expected_dict = { - "ipaddressid":associated_ipaddress.ipaddress.id, - "account":self.account.name, - "domainid":self.domain.id, - "state":"Running", - } + "ipaddressid": associated_ipaddress.ipaddress.id, + "account": self.account.name, + "domainid": self.domain.id, + "state": "Running", + } actual_dict = { - "ipaddressid":vpn_created.publicipid, - "account":vpn_created.account, - "domainid":vpn_created.domainid, - "state":vpn_created.state, - } + "ipaddressid": vpn_created.publicipid, + "account": vpn_created.account, + "domainid": vpn_created.domainid, + "state": vpn_created.state, + } vpn_status = self.__verify_values( - expected_dict, - actual_dict - ) + expected_dict, + actual_dict + ) self.assertEqual( - True, - vpn_status, - "Created Remote Access VPN details are not as expected" - ) + True, + vpn_status, + "Created Remote Access VPN details are not as expected" + ) # Listing Remote Access VPNs for the IP Associated list_vpns_after = Vpn.list( - self.userapiclient, - listall=self.services["listall"], - ipaddressid=associated_ipaddress.ipaddress.id - ) + self.userapiclient, + listall=self.services["listall"], + ipaddressid=associated_ipaddress.ipaddress.id + ) status = validateList(list_vpns_after) self.assertEquals( - PASS, - status[0], - "Failed to create Remote Access VPN" - ) + PASS, + status[0], + "Failed to create Remote Access VPN" + ) # Verifying the length of the list is 1 self.assertEqual( - 1, - len(list_vpns_after), - "Failed to create Remote Access VPN" - ) + 1, + len(list_vpns_after), + "Failed to create Remote Access VPN" + ) # Deleting the Remote Access VPN vpn_created.delete(self.userapiclient) # Listing Remote Access VPNs for the IP Associated list_vpns_after = Vpn.list( - self.userapiclient, - listall=self.services["listall"], - ipaddressid=associated_ipaddress.ipaddress.id - ) + self.userapiclient, + listall=self.services["listall"], + ipaddressid=associated_ipaddress.ipaddress.id + ) # Verifying no Remote Access VPNs are listed self.assertIsNone( - list_vpns_after, - "Failed to create Remote Access VPN" - ) + list_vpns_after, + "Failed to create Remote Access VPN" + ) self.cleanup.append(self.account) return @@ -2589,192 +2644,193 @@ class TestIpAddresses(cloudstackTestCase): """ # Listing all the Networks's for a user list_networks_before = Network.list( - self.userapiclient, - listall=self.services["listall"], - type="Isolated" - ) + self.userapiclient, + listall=self.services["listall"], + type="Isolated" + ) # Verifying No Networks are listed self.assertIsNone( - list_networks_before, - "Networks listed for newly created User" - ) + list_networks_before, + "Networks listed for newly created User" + ) # Listing Network Offerings network_offerings_list = NetworkOffering.list( - self.apiClient, - forvpc="false", - guestiptype="Isolated", - state="Enabled", - supportedservices="SourceNat,Vpn", - zoneid=self.zone.id - ) + self.apiClient, + forvpc="false", + guestiptype="Isolated", + state="Enabled", + supportedservices="SourceNat,Vpn", + zoneid=self.zone.id + ) status = validateList(network_offerings_list) self.assertEquals( - PASS, - status[0], - "Isolated Network Offerings with sourceNat, Vpn enabled are not found" - ) + PASS, + status[0], + "Isolated Network Offerings with sourceNat,\ + Vpn enabled are not found" + ) # Creating a network network = Network.create( - self.userapiclient, - self.services["network"], - accountid=self.account.name, - domainid=self.domain.id, - networkofferingid=network_offerings_list[0].id, - zoneid=self.zone.id - ) + self.userapiclient, + self.services["network"], + accountid=self.account.name, + domainid=self.domain.id, + networkofferingid=network_offerings_list[0].id, + zoneid=self.zone.id + ) self.assertIsNotNone( - network, - "Network creation failed" - ) + network, + "Network creation failed" + ) self.cleanup.append(network) # Listing all the IP Addresses for a user list_ipaddresses_before = PublicIPAddress.list( - self.userapiclient, - listall=self.services["listall"] - ) + self.userapiclient, + listall=self.services["listall"] + ) # Verifying no IP Addresses are listed self.assertIsNone( - list_ipaddresses_before, - "IP Addresses listed for newly created User" - ) + list_ipaddresses_before, + "IP Addresses listed for newly created User" + ) # Associating an IP Addresses to Network created associated_ipaddress = PublicIPAddress.create( - self.userapiclient, - services=self.services["network"], - networkid=network.id - ) + self.userapiclient, + services=self.services["network"], + networkid=network.id + ) self.assertIsNotNone( - associated_ipaddress, - "Failed to Associate IP Address" - ) + associated_ipaddress, + "Failed to Associate IP Address" + ) # Listing all the IP Addresses for a user list_ipaddresses_after = PublicIPAddress.list( - self.userapiclient, - listall=self.services["listall"] - ) + self.userapiclient, + listall=self.services["listall"] + ) status = validateList(list_ipaddresses_after) self.assertEquals( - PASS, - status[0], - "IP Addresses Association Failed" - ) + PASS, + status[0], + "IP Addresses Association Failed" + ) # Verifying the length of the list is 1 self.assertEqual( - 1, - len(list_ipaddresses_after), - "Number of IP Addresses associated are not matching expected" - ) + 1, + len(list_ipaddresses_after), + "Number of IP Addresses associated are not matching expected" + ) # Launching Virtual Machine vm_created = VirtualMachine.create( - self.userapiclient, - self.services["virtual_machine"], - accountid=self.account.name, - domainid=self.account.domainid, - networkids=network.id, - serviceofferingid=self.service_offering.id, - ) + self.userapiclient, + self.services["virtual_machine"], + accountid=self.account.name, + domainid=self.account.domainid, + networkids=network.id, + serviceofferingid=self.service_offering.id, + ) self.assertIsNotNone( - vm_created, - "Failed to launch a VM under network created" - ) + vm_created, + "Failed to launch a VM under network created" + ) # Listing Remote access VPNs for the IP Associated list_vpns_before = Vpn.list( - self.userapiclient, - listall=self.services["listall"], - ipaddressid=associated_ipaddress.ipaddress.id - ) + self.userapiclient, + listall=self.services["listall"], + ipaddressid=associated_ipaddress.ipaddress.id + ) # Verifying no Remote Access VPNs are listed self.assertIsNone( - list_vpns_before, - "Remote Access VPNs listed for newly associated IP Address" - ) + list_vpns_before, + "Remote Access VPNs listed for newly associated IP Address" + ) # Creating a Remote Access VPN vpn_created = Vpn.create( - self.userapiclient, - publicipid=associated_ipaddress.ipaddress.id, - account=self.account.name, - domainid=self.domain.id, - openfirewall='false' - ) + self.userapiclient, + publicipid=associated_ipaddress.ipaddress.id, + account=self.account.name, + domainid=self.domain.id, + openfirewall='false' + ) self.assertIsNotNone( - vpn_created, - "Failed to create Remote Access VPN" - ) + vpn_created, + "Failed to create Remote Access VPN" + ) # Listing Remote Access VPNs for the IP Associated list_vpns_after = Vpn.list( - self.userapiclient, - listall=self.services["listall"], - ipaddressid=associated_ipaddress.ipaddress.id - ) + self.userapiclient, + listall=self.services["listall"], + ipaddressid=associated_ipaddress.ipaddress.id + ) status = validateList(list_vpns_after) self.assertEquals( - PASS, - status[0], - "Failed to create Remote Access VPN" - ) + PASS, + status[0], + "Failed to create Remote Access VPN" + ) # Verifying the length of the list is 1 self.assertEqual( - 1, - len(list_vpns_after), - "Failed to create Remote Access VPN" - ) + 1, + len(list_vpns_after), + "Failed to create Remote Access VPN" + ) # Listing VPN Users list_vpnusers_beore = VpnUser.list( - self.userapiclient, - listall=self.services["listall"], - account=self.account.name, - domainid=self.domain.id - ) + self.userapiclient, + listall=self.services["listall"], + account=self.account.name, + domainid=self.domain.id + ) # Verifying no VPN Users listed self.assertIsNone( - list_vpnusers_beore, - "VPN Users listed for newly created VPN" - ) + list_vpnusers_beore, + "VPN Users listed for newly created VPN" + ) # Creating a VPN User vpnuser_created = VpnUser.create( - self.userapiclient, - username=self.services["vpn_user"]["username"], - password=self.services["vpn_user"]["password"], - account=self.account.name, - domainid=self.domain.id - ) + self.userapiclient, + username=self.services["vpn_user"]["username"], + password=self.services["vpn_user"]["password"], + account=self.account.name, + domainid=self.domain.id + ) self.assertIsNotNone( - vpnuser_created, - "Failed to create VPN User" - ) + vpnuser_created, + "Failed to create VPN User" + ) # Listing VPN Users list_vpnusers_after = VpnUser.list( - self.userapiclient, - listall=self.services["listall"], - account=self.account.name, - domainid=self.domain.id - ) + self.userapiclient, + listall=self.services["listall"], + account=self.account.name, + domainid=self.domain.id + ) status = validateList(list_vpnusers_after) self.assertEquals( - PASS, - status[0], - "Failed to list VPN user after creation" - ) + PASS, + status[0], + "Failed to list VPN user after creation" + ) # Verifying the length of the list is 1 self.assertEqual( - 1, - len(list_vpnusers_after), - "Failed to list VPN user after creation" - ) + 1, + len(list_vpnusers_after), + "Failed to list VPN user after creation" + ) # Deleting the VPN User vpnuser_created.delete(self.userapiclient) # Listing VPN Users list_vpnusers_after = VpnUser.list( - self.userapiclient, - listall=self.services["listall"], - account=self.account.name, - domainid=self.domain.id - ) + self.userapiclient, + listall=self.services["listall"], + account=self.account.name, + domainid=self.domain.id + ) # Verifying no VPN Users are listed self.assertIsNone( - list_vpnusers_after, - "VPN User listed after deletion" - ) + list_vpnusers_after, + "VPN User listed after deletion" + ) # Destroying the VM vm_created.delete(self.apiClient) self.cleanup.append(self.account) @@ -2783,7 +2839,8 @@ class TestIpAddresses(cloudstackTestCase): @attr(tags=["advanced"], required_hardware="true") def test_14_enable_disable_staticnat_fornonvpc(self): """ - @summary: Test to Enable and Disable StaticNat for IP Address associated to Non VPC Network + @summary: Test to Enable and Disable StaticNat for + IP Address associated to Non VPC Network @Steps: Step1: Creating a Network for the user Step2: Associating an IP Addresses for Network created in step1 @@ -2796,161 +2853,162 @@ class TestIpAddresses(cloudstackTestCase): """ # Listing all the Networks's for a user list_networks_before = Network.list( - self.userapiclient, - listall=self.services["listall"], - type="Isolated" - ) + self.userapiclient, + listall=self.services["listall"], + type="Isolated" + ) # Verifying No Networks are listed self.assertIsNone( - list_networks_before, - "Networks listed for newly created User" - ) + list_networks_before, + "Networks listed for newly created User" + ) # Listing Network Offerings network_offerings_list = NetworkOffering.list( - self.apiClient, - forvpc="false", - guestiptype="Isolated", - state="Enabled", - supportedservices="SourceNat,StaticNat", - zoneid=self.zone.id - ) + self.apiClient, + forvpc="false", + guestiptype="Isolated", + state="Enabled", + supportedservices="SourceNat,StaticNat", + zoneid=self.zone.id + ) status = validateList(network_offerings_list) self.assertEquals( - PASS, - status[0], - "Isolated Network Offerings with sourceNat, Vpn enabled are not found" - ) + PASS, + status[0], + "Isolated Network Offerings with sourceNat,\ + Vpn enabled are not found" + ) # Creating a network network = Network.create( - self.userapiclient, - self.services["network"], - accountid=self.account.name, - domainid=self.domain.id, - networkofferingid=network_offerings_list[0].id, - zoneid=self.zone.id - ) + self.userapiclient, + self.services["network"], + accountid=self.account.name, + domainid=self.domain.id, + networkofferingid=network_offerings_list[0].id, + zoneid=self.zone.id + ) self.assertIsNotNone( - network, - "Network creation failed" - ) + network, + "Network creation failed" + ) self.cleanup.append(network) # Listing all the IP Addresses for a user list_ipaddresses_before = PublicIPAddress.list( - self.userapiclient, - listall=self.services["listall"] - ) + self.userapiclient, + listall=self.services["listall"] + ) # Verifying no IP Addresses are listed self.assertIsNone( - list_ipaddresses_before, - "IP Addresses listed for newly created User" - ) + list_ipaddresses_before, + "IP Addresses listed for newly created User" + ) # Associating an IP Addresses to Network created associated_ipaddress1 = PublicIPAddress.create( - self.userapiclient, - services=self.services["network"], - networkid=network.id - ) + self.userapiclient, + services=self.services["network"], + networkid=network.id + ) self.assertIsNotNone( - associated_ipaddress1, - "Failed to Associate IP Address" - ) + associated_ipaddress1, + "Failed to Associate IP Address" + ) # Associating another IP Addresses to Network created associated_ipaddress2 = PublicIPAddress.create( - self.userapiclient, - services=self.services["network"], - networkid=network.id - ) + self.userapiclient, + services=self.services["network"], + networkid=network.id + ) self.assertIsNotNone( - associated_ipaddress2, - "Failed to Associate IP Address" - ) + associated_ipaddress2, + "Failed to Associate IP Address" + ) # Listing all the IP Addresses for a user list_ipaddresses_after = PublicIPAddress.list( - self.userapiclient, - listall=self.services["listall"] - ) + self.userapiclient, + listall=self.services["listall"] + ) status = validateList(list_ipaddresses_after) self.assertEquals( - PASS, - status[0], - "IP Addresses Association Failed" - ) + PASS, + status[0], + "IP Addresses Association Failed" + ) # Verifying the length of the list is 1 self.assertEqual( - 2, - len(list_ipaddresses_after), - "Number of IP Addresses associated are not matching expected" - ) + 2, + len(list_ipaddresses_after), + "Number of IP Addresses associated are not matching expected" + ) # Launching a Virtual Machine vm_created = VirtualMachine.create( - self.userapiclient, - self.services["virtual_machine"], - accountid=self.account.name, - domainid=self.account.domainid, - networkids=network.id, - serviceofferingid=self.service_offering.id, - ) + self.userapiclient, + self.services["virtual_machine"], + accountid=self.account.name, + domainid=self.account.domainid, + networkids=network.id, + serviceofferingid=self.service_offering.id, + ) self.assertIsNotNone( - vm_created, - "Failed to launch a VM under network created" - ) + vm_created, + "Failed to launch a VM under network created" + ) # Enabling static Nat for Ip Address associated StaticNATRule.enable( - self.userapiclient, - ipaddressid=associated_ipaddress2.ipaddress.id, - virtualmachineid=vm_created.id, - ) + self.userapiclient, + ipaddressid=associated_ipaddress2.ipaddress.id, + virtualmachineid=vm_created.id, + ) # Listing Ip Address by id list_ipaddress = PublicIPAddress.list( - self.userapiclient, - id=associated_ipaddress2.ipaddress.id, - listall=self.services["listall"] - ) + self.userapiclient, + id=associated_ipaddress2.ipaddress.id, + listall=self.services["listall"] + ) status = validateList(list_ipaddress) self.assertEquals( - PASS, - status[0], - "Failed to List IP Address" - ) + PASS, + status[0], + "Failed to List IP Address" + ) # Verifying the length of the list is 1 self.assertEqual( - 1, - len(list_ipaddress), - "Failed to List IP Address" - ) + 1, + len(list_ipaddress), + "Failed to List IP Address" + ) self.assertEquals( - True, - list_ipaddress[0].isstaticnat, - "Failed to Enable Static Nat" - ) + True, + list_ipaddress[0].isstaticnat, + "Failed to Enable Static Nat" + ) # Disabling static Nat StaticNATRule.disable( - self.userapiclient, - ipaddressid=associated_ipaddress2.ipaddress.id - ) + self.userapiclient, + ipaddressid=associated_ipaddress2.ipaddress.id + ) # Listing Ip Address by id list_ipaddress = PublicIPAddress.list( - self.userapiclient, - id=associated_ipaddress2.ipaddress.id, - listall=self.services["listall"] - ) + self.userapiclient, + id=associated_ipaddress2.ipaddress.id, + listall=self.services["listall"] + ) status = validateList(list_ipaddress) self.assertEquals( - PASS, - status[0], - "Failed to List IP Address" - ) + PASS, + status[0], + "Failed to List IP Address" + ) # Verifying the length of the list is 1 self.assertEqual( - 1, - len(list_ipaddress), - "Failed to List IP Address" - ) + 1, + len(list_ipaddress), + "Failed to List IP Address" + ) self.assertEquals( - False, - list_ipaddress[0].isstaticnat, - "Failed to Disable Static Nat" - ) + False, + list_ipaddress[0].isstaticnat, + "Failed to Disable Static Nat" + ) # Destroying the VM vm_created.delete(self.apiClient) self.cleanup.append(self.account) @@ -2959,7 +3017,8 @@ class TestIpAddresses(cloudstackTestCase): @attr(tags=["advanced"], required_hardware="true") def test_15_enable_disable_staticnat_forvpc(self): """ - @summary: Test to Enable and Disable StaticNat for IP Address associated to VPC Network + @summary: Test to Enable and Disable StaticNat for + IP Address associated to VPC Network @Steps: Step1: Creating a VPC Step2: Creating a Network under VPC for the user @@ -2970,187 +3029,183 @@ class TestIpAddresses(cloudstackTestCase): Step7: Disabling the staticNat to IP Associated in Step3 Step8: Verifying that StaticNat is disabled """ - # Listing all the vpc's for a user + # Listing all the vpc's for a user list_vpc_before = VPC.list(self.userapiclient) # Verifying No VPCs are listed self.assertIsNone( - list_vpc_before, - "VPC's Listed for newly Created User" - ) - # Listing VPC Offerings - list_vpc_offering = VpcOffering.list(self.userapiclient) - status = validateList(list_vpc_offering) - self.assertEquals( - PASS, - status[0], - "list vpc offering is none" - ) + list_vpc_before, + "VPC's Listed for newly Created User" + ) # Creating a vpc vpc_created = VPC.create( - self.userapiclient, - self.services["vpc"], - list_vpc_offering[0].id, - self.zone.id - ) + self.userapiclient, + self.services["vpc"], + self.vpc_offering.id, + self.zone.id + ) self.assertIsNotNone( - vpc_created, - "VPC Creation Failed" - ) + vpc_created, + "VPC Creation Failed" + ) # Listing the vpc for a user after creating a vpc list_vpc_after = VPC.list(self.userapiclient) status = validateList(list_vpc_after) self.assertEquals( - PASS, - status[0], - "list VPC not as expected" - ) + PASS, + status[0], + "list VPC not as expected" + ) # Verifying the list vpc size is increased by 1 self.assertEquals( - 1, - len(list_vpc_after), - "list VPC not equal as expected" - ) + 1, + len(list_vpc_after), + "list VPC not equal as expected" + ) # List network offering for vpc = true network_offering_vpc_true_list = NetworkOffering.list( - self.userapiclient, - forvpc="true", - zoneid=self.zone.id, - supportedServices="SourceNat,PortForwarding,StaticNat", - state="Enabled" - ) + self.userapiclient, + forvpc="true", + zoneid=self.zone.id, + supportedServices="SourceNat,PortForwarding,StaticNat", + state="Enabled" + ) status = validateList(network_offering_vpc_true_list) - self.assertEquals(PASS, status[0], "Default network offering not present for vpc = true with PortForwarding") + self.assertEquals( + PASS, + status[0], + "Default network offering not present\ + for vpc = true with PortForwarding") # Creating network under VPC network_created = Network.create( - self.userapiclient, - self.services["ntwk"], - networkofferingid=network_offering_vpc_true_list[0].id, - vpcid=vpc_created.id, - zoneid=self.zone.id, - gateway=self.services["ntwk"]["gateway"], - netmask=self.services["ntwk"]["netmask"] - ) + self.userapiclient, + self.services["ntwk"], + networkofferingid=network_offering_vpc_true_list[0].id, + vpcid=vpc_created.id, + zoneid=self.zone.id, + gateway=self.services["ntwk"]["gateway"], + netmask=self.services["ntwk"]["netmask"] + ) self.assertIsNotNone( - network_created, - "Network is not created" - ) + network_created, + "Network is not created" + ) # Listing all the IP Addresses for a user list_ipaddresses_before = PublicIPAddress.list( - self.userapiclient, - listall=self.services["listall"] - ) + self.userapiclient, + listall=self.services["listall"] + ) status = validateList(list_ipaddresses_before) self.assertEquals( - PASS, - status[0], - "list IP Addresses not as expected" - ) + PASS, + status[0], + "list IP Addresses not as expected" + ) # Verifying the list vpc size is increased by 1 self.assertEquals( - 1, - len(list_ipaddresses_before), - "list IP Addresses not equal as expected" - ) + 1, + len(list_ipaddresses_before), + "list IP Addresses not equal as expected" + ) # Associating an IP Addresses to VPC created associated_ipaddress = PublicIPAddress.create( - self.userapiclient, - services=self.services["network"], - vpcid=vpc_created.id - ) + self.userapiclient, + services=self.services["network"], + vpcid=vpc_created.id + ) self.assertIsNotNone( - associated_ipaddress, - "Failed to Associate IP Address" - ) + associated_ipaddress, + "Failed to Associate IP Address" + ) # Listing all the IP Addresses for a user list_ipaddresses_after = PublicIPAddress.list( - self.userapiclient, - listall=self.services["listall"] - ) + self.userapiclient, + listall=self.services["listall"] + ) status = validateList(list_ipaddresses_after) self.assertEquals( - PASS, - status[0], - "IP Addresses Association Failed" - ) + PASS, + status[0], + "IP Addresses Association Failed" + ) # Verifying the length of the list is 1 self.assertEqual( - len(list_ipaddresses_before) + 1, - len(list_ipaddresses_after), - "Number of IP Addresses associated are not matching expected" - ) + len(list_ipaddresses_before) + 1, + len(list_ipaddresses_after), + "Number of IP Addresses associated are not matching expected" + ) # Launching a Virtual Machine with above created Network vm_created = VirtualMachine.create( - self.userapiclient, - self.services["virtual_machine"], - accountid=self.account.name, - domainid=self.account.domainid, - networkids=network_created.id, - serviceofferingid=self.service_offering.id, - ) + self.userapiclient, + self.services["virtual_machine"], + accountid=self.account.name, + domainid=self.account.domainid, + networkids=network_created.id, + serviceofferingid=self.service_offering.id, + ) self.assertIsNotNone( - vm_created, - "Failed to launch a VM under network created" - ) + vm_created, + "Failed to launch a VM under network created" + ) self.cleanup.append(network_created) self.cleanup.append(vpc_created) # Enabling static Nat for Ip Address associated StaticNATRule.enable( - self.userapiclient, - ipaddressid=associated_ipaddress.ipaddress.id, - virtualmachineid=vm_created.id, - networkid=network_created.id - ) + self.userapiclient, + ipaddressid=associated_ipaddress.ipaddress.id, + virtualmachineid=vm_created.id, + networkid=network_created.id + ) # Listing Ip Address by id list_ipaddress = PublicIPAddress.list( - self.userapiclient, - id=associated_ipaddress.ipaddress.id, - listall=self.services["listall"] - ) + self.userapiclient, + id=associated_ipaddress.ipaddress.id, + listall=self.services["listall"] + ) status = validateList(list_ipaddress) self.assertEquals( - PASS, - status[0], - "Failed to List IP Address" - ) + PASS, + status[0], + "Failed to List IP Address" + ) # Verifying the length of the list is 1 self.assertEqual( - 1, - len(list_ipaddress), - "Failed to List IP Address" - ) + 1, + len(list_ipaddress), + "Failed to List IP Address" + ) self.assertEquals( - True, - list_ipaddress[0].isstaticnat, - "Failed to Enable Static Nat" - ) + True, + list_ipaddress[0].isstaticnat, + "Failed to Enable Static Nat" + ) # Disabling static Nat StaticNATRule.disable( - self.userapiclient, - ipaddressid=associated_ipaddress.ipaddress.id - ) + self.userapiclient, + ipaddressid=associated_ipaddress.ipaddress.id + ) # Listing Ip Address by id list_ipaddress = PublicIPAddress.list( - self.userapiclient, - id=associated_ipaddress.ipaddress.id, - listall=self.services["listall"] - ) + self.userapiclient, + id=associated_ipaddress.ipaddress.id, + listall=self.services["listall"] + ) status = validateList(list_ipaddress) self.assertEquals( - PASS, - status[0], - "Failed to List IP Address" - ) + PASS, + status[0], + "Failed to List IP Address" + ) # Verifying the length of the list is 1 self.assertEqual( - 1, - len(list_ipaddress), - "Failed to List IP Address" - ) + 1, + len(list_ipaddress), + "Failed to List IP Address" + ) self.assertEquals( - False, - list_ipaddress[0].isstaticnat, - "Failed to Disable Static Nat" - ) + False, + list_ipaddress[0].isstaticnat, + "Failed to Disable Static Nat" + ) # Destroying the VM vm_created.delete(self.apiClient) self.cleanup.append(self.account) @@ -3159,7 +3214,8 @@ class TestIpAddresses(cloudstackTestCase): @attr(tags=["advanced"], required_hardware="true") def test_16_create_delete_ipforwardingrule(self): """ - @summary: Test to list, create and delete IP Forwarding Rules for IP Address + @summary: Test to list, create and + delete IP Forwarding Rules for IP Address @Steps: Step1: Creating a Network for the user Step2: Associating an IP Addresses for Network created in step1 @@ -3177,188 +3233,189 @@ class TestIpAddresses(cloudstackTestCase): """ # Listing all the Networks's for a user list_networks_before = Network.list( - self.userapiclient, - listall=self.services["listall"], - type="Isolated" - ) + self.userapiclient, + listall=self.services["listall"], + type="Isolated" + ) # Verifying No Networks are listed self.assertIsNone( - list_networks_before, - "Networks listed for newly created User" - ) + list_networks_before, + "Networks listed for newly created User" + ) # Listing Network Offerings network_offerings_list = NetworkOffering.list( - self.apiClient, - forvpc="false", - guestiptype="Isolated", - state="Enabled", - supportedservices="SourceNat,Vpn", - zoneid=self.zone.id - ) + self.apiClient, + forvpc="false", + guestiptype="Isolated", + state="Enabled", + supportedservices="SourceNat,Vpn", + zoneid=self.zone.id + ) status = validateList(network_offerings_list) self.assertEquals( - PASS, - status[0], - "Isolated Network Offerings with sourceNat, Vpn enabled are not found" - ) + PASS, + status[0], + "Isolated Network Offerings with sourceNat,\ + Vpn enabled are not found" + ) # Creating a network network = Network.create( - self.userapiclient, - self.services["network"], - accountid=self.account.name, - domainid=self.domain.id, - networkofferingid=network_offerings_list[0].id, - zoneid=self.zone.id - ) + self.userapiclient, + self.services["network"], + accountid=self.account.name, + domainid=self.domain.id, + networkofferingid=network_offerings_list[0].id, + zoneid=self.zone.id + ) self.assertIsNotNone( - network, - "Network creation failed" - ) + network, + "Network creation failed" + ) self.cleanup.append(network) # Listing all the IP Addresses for a user list_ipaddresses_before = PublicIPAddress.list( - self.userapiclient, - listall=self.services["listall"] - ) + self.userapiclient, + listall=self.services["listall"] + ) # Verifying no IP Addresses are listed self.assertIsNone( - list_ipaddresses_before, - "IP Addresses listed for newly created User" - ) + list_ipaddresses_before, + "IP Addresses listed for newly created User" + ) # Associating an IP Addresses to Network created associated_ipaddress1 = PublicIPAddress.create( - self.userapiclient, - services=self.services["network"], - networkid=network.id - ) + self.userapiclient, + services=self.services["network"], + networkid=network.id + ) self.assertIsNotNone( - associated_ipaddress1, - "Failed to Associate IP Address" - ) + associated_ipaddress1, + "Failed to Associate IP Address" + ) # Associating another IP Addresses to Network created associated_ipaddress2 = PublicIPAddress.create( - self.userapiclient, - services=self.services["network"], - networkid=network.id - ) + self.userapiclient, + services=self.services["network"], + networkid=network.id + ) self.assertIsNotNone( - associated_ipaddress2, - "Failed to Associate IP Address" - ) + associated_ipaddress2, + "Failed to Associate IP Address" + ) # Listing all the IP Addresses for a user list_ipaddresses_after = PublicIPAddress.list( - self.userapiclient, - listall=self.services["listall"] - ) + self.userapiclient, + listall=self.services["listall"] + ) status = validateList(list_ipaddresses_after) self.assertEquals( - PASS, - status[0], - "IP Addresses Association Failed" - ) + PASS, + status[0], + "IP Addresses Association Failed" + ) # Verifying the length of the list is 1 self.assertEqual( - 2, - len(list_ipaddresses_after), - "Number of IP Addresses associated are not matching expected" - ) + 2, + len(list_ipaddresses_after), + "Number of IP Addresses associated are not matching expected" + ) # Launching a Virtual Machine vm_created = VirtualMachine.create( - self.userapiclient, - self.services["virtual_machine"], - accountid=self.account.name, - domainid=self.account.domainid, - networkids=network.id, - serviceofferingid=self.service_offering.id, - ) + self.userapiclient, + self.services["virtual_machine"], + accountid=self.account.name, + domainid=self.account.domainid, + networkids=network.id, + serviceofferingid=self.service_offering.id, + ) self.assertIsNotNone( - vm_created, - "Failed to launch a VM under network created" - ) + vm_created, + "Failed to launch a VM under network created" + ) # Enabling static Nat for Ip Address associated StaticNATRule.enable( - self.userapiclient, - ipaddressid=associated_ipaddress2.ipaddress.id, - virtualmachineid=vm_created.id, - ) + self.userapiclient, + ipaddressid=associated_ipaddress2.ipaddress.id, + virtualmachineid=vm_created.id, + ) # Listing Ip Address by id list_ipaddress = PublicIPAddress.list( - self.userapiclient, - id=associated_ipaddress2.ipaddress.id, - listall=self.services["listall"] - ) + self.userapiclient, + id=associated_ipaddress2.ipaddress.id, + listall=self.services["listall"] + ) status = validateList(list_ipaddress) self.assertEquals( - PASS, - status[0], - "Failed to List IP Address" - ) + PASS, + status[0], + "Failed to List IP Address" + ) # Verifying the length of the list is 1 self.assertEqual( - 1, - len(list_ipaddress), - "Failed to List IP Address" - ) + 1, + len(list_ipaddress), + "Failed to List IP Address" + ) self.assertEquals( - True, - list_ipaddress[0].isstaticnat, - "Failed to Enable Static Nat" - ) + True, + list_ipaddress[0].isstaticnat, + "Failed to Enable Static Nat" + ) # Listing IP Forwarding Rules list_ipfwdrule_before = StaticNATRule.list( - self.userapiclient, - listall=self.services["listall"], - ipaddressid=associated_ipaddress2.ipaddress.id - ) + self.userapiclient, + listall=self.services["listall"], + ipaddressid=associated_ipaddress2.ipaddress.id + ) # Verifying no IP Forwarding Rules are listed self.assertIsNone( - list_ipfwdrule_before, - "IP Forwardign Rule listed for newly enabled StaticNat IP" - ) + list_ipfwdrule_before, + "IP Forwardign Rule listed for newly enabled StaticNat IP" + ) # Creating IP Forwardign Rule ipfwd_rule = StaticNATRule.createIpForwardingRule( - self.userapiclient, - startport='80', - endport='89', - protocol='tcp', - ipaddressid=associated_ipaddress2.ipaddress.id, - openfirewall=False - ) + self.userapiclient, + startport='80', + endport='89', + protocol='tcp', + ipaddressid=associated_ipaddress2.ipaddress.id, + openfirewall=False + ) self.assertIsNotNone( - ipfwd_rule, - "Failed to create IP Forwarding Rule" - ) + ipfwd_rule, + "Failed to create IP Forwarding Rule" + ) # Listing IP Forwarding Rules list_ipfwdrule_after = StaticNATRule.list( - self.userapiclient, - listall=self.services["listall"], - ipaddressid=associated_ipaddress2.ipaddress.id - ) + self.userapiclient, + listall=self.services["listall"], + ipaddressid=associated_ipaddress2.ipaddress.id + ) status = validateList(list_ipfwdrule_after) self.assertEquals( - PASS, - status[0], - "Failed to List IP Forwarding Rule after Creation" - ) + PASS, + status[0], + "Failed to List IP Forwarding Rule after Creation" + ) # Verifying the length of the list is 1 self.assertEqual( - 1, - len(list_ipfwdrule_after), - "Failed to List IP Forwarding Rule after Creation" - ) + 1, + len(list_ipfwdrule_after), + "Failed to List IP Forwarding Rule after Creation" + ) # Deleting IP Forwarding Rule ipfwd_rule.delete(self.userapiclient) # Listing IP Forwarding Rules list_ipfwdrule_after = StaticNATRule.list( - self.userapiclient, - listall=self.services["listall"], - ipaddressid=associated_ipaddress2.ipaddress.id - ) - # Verifying no IP Forwarding Rules are listed + self.userapiclient, + listall=self.services["listall"], + ipaddressid=associated_ipaddress2.ipaddress.id + ) + # Verifying no IP Forwarding Rules are listed self.assertIsNone( - list_ipfwdrule_after, - "IP Forwardign Rule listed after deletion" - ) + list_ipfwdrule_after, + "IP Forwardign Rule listed after deletion" + ) # Destroying the VM vm_created.delete(self.apiClient) self.cleanup.append(self.account) @@ -3369,7 +3426,8 @@ class TestIpAddresses(cloudstackTestCase): """ @summary: Test to list, create and update Autoscale Policy @Steps: - Step1: Creating a Network Offering for Supported Service LB with Netscaler + Step1: Creating a Network Offering for Supported + Service LB with Netscaler Step2: Create a Network using Network Offering created in Step1 Step3: Launching a VM using Network created in Step2 Step4: Associating IP Address for Network created in Step2 @@ -3389,254 +3447,254 @@ class TestIpAddresses(cloudstackTestCase): Step18: Verifying Autoscale policy is updated with condition2 """ if self.hypervisor.lower() == 'kvm': - raise unittest.SkipTest("ScaleVM is not supported on KVM. Hence, skipping the test") + raise unittest.SkipTest( + "ScaleVM is not supported on KVM. Hence, skipping the test") list_physical_networks = PhysicalNetwork.list( - self.apiClient, - zoneid=self.zone.id - ) - physical_networks_size = 0 - if list_physical_networks is not None: - physical_networks_size = len(list_physical_networks) - + self.apiClient, + zoneid=self.zone.id + ) run_flag = False for i in range(0, len(list_physical_networks)): list_network_serviceprovider = NetworkServiceProvider.list( - self.apiClient, - physicalnetworkid=list_physical_networks[i].id - ) + self.apiClient, + physicalnetworkid=list_physical_networks[i].id + ) for j in range(0, len(list_network_serviceprovider)): - if((list_network_serviceprovider[j].name == 'Netscaler') and (list_network_serviceprovider[j].state == 'Enabled')): + if((list_network_serviceprovider[j].name == 'Netscaler') and + (list_network_serviceprovider[j].state == 'Enabled')): run_flag = True break - if(run_flag == False): - self.debug("Netscaler is not enabled and auto scale VM is applicable only for Netscaler") + if not run_flag: + self.debug( + "Netscaler is not enabled and auto scale VM is\ + applicable only for Netscaler") else: # Listing Network Offerings list_nwoff_before = NetworkOffering.list( - self.apiClient, - forvpc="false", - guestiptype="Isolated", - state="Enabled", - supportedservices="SourceNat,Lb", - zoneid=self.zone.id - ) + self.apiClient, + forvpc="false", + guestiptype="Isolated", + state="Enabled", + supportedservices="SourceNat,Lb", + zoneid=self.zone.id + ) # Creating Network Offerign with LB as Netscalar nwoff_created = NetworkOffering.create( - self.apiClient, - self.services["nw_off_isolated_netscaler"] - ) + self.apiClient, + self.services["nw_off_isolated_netscaler"] + ) self.assertIsNotNone( - nwoff_created, - "Failed to Create Network Offering with LB sercvice for Netscaler" - ) + nwoff_created, + "Failed to Create Network Offering with\ + LB sercvice for Netscaler") # Enable Network offering nwoff_created.update(self.apiClient, state='Enabled') # Listing Network Offerings again list_nwoff_after = NetworkOffering.list( - self.apiClient, - forvpc="false", - guestiptype="Isolated", - state="Enabled", - supportedservices="SourceNat,Lb", - zoneid=self.zone.id - ) + self.apiClient, + forvpc="false", + guestiptype="Isolated", + state="Enabled", + supportedservices="SourceNat,Lb", + zoneid=self.zone.id + ) self.assertEquals( - len(list_nwoff_before) + 1, - len(list_nwoff_after), - "Failed to create Network Offering" - ) + len(list_nwoff_before) + 1, + len(list_nwoff_after), + "Failed to create Network Offering" + ) # Creating a Network Using the Network Offering network = Network.create( - self.userapiclient, - self.services["network"], - accountid=self.account.name, - domainid=self.domain.id, - networkofferingid=nwoff_created.id, - zoneid=self.zone.id - ) + self.userapiclient, + self.services["network"], + accountid=self.account.name, + domainid=self.domain.id, + networkofferingid=nwoff_created.id, + zoneid=self.zone.id + ) self.assertIsNotNone( - network, - "Network creation failed" - ) + network, + "Network creation failed" + ) self.cleanup.append(network) self.cleanup.append(nwoff_created) # Launching a Virtual Machine vm_created = VirtualMachine.create( - self.userapiclient, - self.services["virtual_machine"], - accountid=self.account.name, - domainid=self.account.domainid, - networkids=network.id, - serviceofferingid=self.service_offering.id, - ) + self.userapiclient, + self.services["virtual_machine"], + accountid=self.account.name, + domainid=self.account.domainid, + networkids=network.id, + serviceofferingid=self.service_offering.id, + ) self.assertIsNotNone( - vm_created, - "Failed to launch a VM under network created" - ) + vm_created, + "Failed to launch a VM under network created" + ) # Listing all the IP Addresses for a user list_ipaddresses_before = PublicIPAddress.list( - self.userapiclient, - listall=self.services["listall"] - ) + self.userapiclient, + listall=self.services["listall"] + ) status = validateList(list_ipaddresses_before) self.assertEquals( - PASS, - status[0], - "IP Addresses Association Failed while launching a VM" - ) + PASS, + status[0], + "IP Addresses Association Failed while launching a VM" + ) # Verifying the length of the list is 1 self.assertEqual( - 1, - len(list_ipaddresses_before), - "IP Addresses Association Failed while launching a VM" - ) + 1, + len(list_ipaddresses_before), + "IP Addresses Association Failed while launching a VM" + ) # Associating an IP Addresses to Network created associated_ipaddress = PublicIPAddress.create( - self.userapiclient, - services=self.services["network"], - networkid=network.id - ) + self.userapiclient, + services=self.services["network"], + networkid=network.id + ) self.assertIsNotNone( - associated_ipaddress, - "Failed to Associate IP Address" - ) + associated_ipaddress, + "Failed to Associate IP Address" + ) # Listing all the IP Addresses for a user list_ipaddresses_after = PublicIPAddress.list( - self.userapiclient, - listall=self.services["listall"] - ) + self.userapiclient, + listall=self.services["listall"] + ) status = validateList(list_ipaddresses_after) self.assertEquals( - PASS, - status[0], - "IP Addresses Association Failed" - ) + PASS, + status[0], + "IP Addresses Association Failed" + ) # Verifying the length of the list is 1 self.assertEqual( - 2, - len(list_ipaddresses_after), - "Number of IP Addresses associated are not matching expected" - ) + 2, + len(list_ipaddresses_after), + "Number of IP Addresses associated are not matching expected" + ) # Listing Counters list_counters = Autoscale.listCounters( - self.userapiclient, - ) + self.userapiclient, + ) status = validateList(list_counters) self.assertEquals( - PASS, - status[0], - "Failed to list counters" - ) + PASS, + status[0], + "Failed to list counters" + ) # Listing Conditions list_conditions_before = Autoscale.listConditions( - self.userapiclient, - listall=self.services["listall"], - account=self.account.name, - domainid=self.domain.id - ) + self.userapiclient, + listall=self.services["listall"], + account=self.account.name, + domainid=self.domain.id + ) self.assertIsNone( - list_conditions_before, - "Listed Conditions for newly created user" - ) + list_conditions_before, + "Listed Conditions for newly created user" + ) # Creating first Condition condition_created1 = Autoscale.createCondition( - self.userapiclient, - counterid=list_counters[0].id, - relationaloperator='GT', - threshold='1000' - ) + self.userapiclient, + counterid=list_counters[0].id, + relationaloperator='GT', + threshold='1000' + ) self.assertIsNotNone( - condition_created1, - "Failed to create Condition" - ) + condition_created1, + "Failed to create Condition" + ) # Creating second Condition condition_created2 = Autoscale.createCondition( - self.userapiclient, - counterid=list_counters[0].id, - relationaloperator='GT', - threshold='1500' - ) + self.userapiclient, + counterid=list_counters[0].id, + relationaloperator='GT', + threshold='1500' + ) self.assertIsNotNone( - condition_created2, - "Failed to create Condition" - ) + condition_created2, + "Failed to create Condition" + ) # Listing Conditions again list_conditions_after = Autoscale.listConditions( - self.userapiclient, - listall=self.services["listall"], - account=self.account.name, - domainid=self.domain.id - ) + self.userapiclient, + listall=self.services["listall"], + account=self.account.name, + domainid=self.domain.id + ) status = validateList(list_conditions_after) self.assertEquals( - PASS, - status[0], - "Failed to list Conditions after creation" - ) + PASS, + status[0], + "Failed to list Conditions after creation" + ) # Listing Autoscale policies list_autoscalepolicies_before = Autoscale.listAutoscalePolicies( - self.userapiclient, - listall=self.services["listall"] - ) + self.userapiclient, + listall=self.services["listall"] + ) # Verifying no Autoscale policies are listed self.assertIsNone( - list_autoscalepolicies_before, - "Autoscale policies listed" - ) + list_autoscalepolicies_before, + "Autoscale policies listed" + ) # Creating Autoscale Policy autoscalepolicy_created = Autoscale.createAutoscalePolicy( - self.userapiclient, - action='scaleup', - conditionids=condition_created1.id, - duration='100', - quiettime='100' - ) + self.userapiclient, + action='scaleup', + conditionids=condition_created1.id, + duration='100', + quiettime='100' + ) self.assertIsNotNone( - autoscalepolicy_created, - "Failed to create Autoscale VM Policy" - ) + autoscalepolicy_created, + "Failed to create Autoscale VM Policy" + ) # Verifying autoscalepolicy is created using condition1 self.assertEquals( - condition_created1.id, - autoscalepolicy_created.conditions[0].id, - "Autoscale Policy not created by given condition" - ) + condition_created1.id, + autoscalepolicy_created.conditions[0].id, + "Autoscale Policy not created by given condition" + ) # Listing Autoscale policies list_autoscalepolicies_after = Autoscale.listAutoscalePolicies( - self.userapiclient, - listall=self.services["listall"] - ) + self.userapiclient, + listall=self.services["listall"] + ) status = validateList(list_autoscalepolicies_after) self.assertEquals( - PASS, - status[0], - "Failed to list Autoscale Policy after creation" - ) + PASS, + status[0], + "Failed to list Autoscale Policy after creation" + ) self.assertEquals( - 1, - len(list_autoscalepolicies_after), - "Autoscale Policies count is not matching" - ) + 1, + len(list_autoscalepolicies_after), + "Autoscale Policies count is not matching" + ) # Updating Autoscale Policy autoscalepolicy_updated = Autoscale.updateAutoscalePolicy( - self.userapiclient, - id=autoscalepolicy_created.id, - conditionids=condition_created2.id, - duration='100', - quiettime='100' - ) + self.userapiclient, + id=autoscalepolicy_created.id, + conditionids=condition_created2.id, + duration='100', + quiettime='100' + ) self.assertIsNotNone( - autoscalepolicy_updated, - "Failed to update Autoscale Policy" - ) + autoscalepolicy_updated, + "Failed to update Autoscale Policy" + ) # Verifying the Autoscale Policy is updated self.assertEquals( - condition_created2.id, - autoscalepolicy_updated.conditions[0].id, - "Autoscale Policy not updated to given condition" - ) + condition_created2.id, + autoscalepolicy_updated.conditions[0].id, + "Autoscale Policy not updated to given condition" + ) # Destroying the VM vm_created.delete(self.apiClient) self.cleanup.append(self.account) @@ -3647,316 +3705,324 @@ class TestIpAddresses(cloudstackTestCase): """ @summary: Test to list, create and update Autoscale VM Profiles @Steps: - Step1: Creating a Network Offering for Supported Service LB with Netscaler + Step1: Creating a Network Offering for Supported Service LB with + Netscaler Step2: Create a Network using Network Offering created in Step1 Step3: Launching a VM using Network created in Step2 Step4: Associating IP Address for Network created in Step2 Step5: Listing Available Service Offerings Step6: Listing all types of templates - Step7: Verifying only featured templates are listed for newly created user + Step7: Verifying only featured templates are listed for + newly created user Step8: Listing autoscale vm profiles Step9: Verifying no Autoscale VM Profiles are listed Step10: Creating a Autoscale VM Profile Step11: Listing Autoscale VM Profile Step12: Verifying 1 Autoscale VM Profile is listed Step13: Listing Autoscale VM Profile by id - Step14: Verifying details of the created autoscale vm profile are matching with listed autoscal vm profile + Step14: Verifying details of the created autoscale + vm profile are matching with listed autoscal vm profile Step15: Updating Autoscale VM profile with destroy vm grace period Step16: Verifying that Autoscale VM is updated """ if self.hypervisor.lower() == 'kvm': - raise unittest.SkipTest("ScaleVM is not supported on KVM. Hence, skipping the test") + raise unittest.SkipTest( + "ScaleVM is not supported on KVM. Hence, skipping the test") list_physical_networks = PhysicalNetwork.list( - self.apiClient, - zoneid=self.zone.id - ) - physical_networks_size = 0 - if list_physical_networks is not None: - physical_networks_size = len(list_physical_networks) + self.apiClient, + zoneid=self.zone.id + ) run_flag = False for i in range(0, len(list_physical_networks)): list_network_serviceprovider = NetworkServiceProvider.list( - self.apiClient, - physicalnetworkid=list_physical_networks[i].id - ) + self.apiClient, + physicalnetworkid=list_physical_networks[i].id + ) for j in range(0, len(list_network_serviceprovider)): - if((list_network_serviceprovider[j].name == 'Netscaler') and (list_network_serviceprovider[j].state == 'Enabled')): + if((list_network_serviceprovider[j].name == 'Netscaler') and + (list_network_serviceprovider[j].state == 'Enabled')): run_flag = True break - if(run_flag == False): - self.debug("Netscaler is not enabled and auto scale VM is applicable only for Netscaler") + if not run_flag: + self.debug( + "Netscaler is not enabled and auto scale VM\ + is applicable only for Netscaler") else: # Listing Network Offerings list_nwoff_before = NetworkOffering.list( - self.apiClient, - forvpc="false", - guestiptype="Isolated", - state="Enabled", - supportedservices="SourceNat,Lb", - zoneid=self.zone.id - ) + self.apiClient, + forvpc="false", + guestiptype="Isolated", + state="Enabled", + supportedservices="SourceNat,Lb", + zoneid=self.zone.id + ) # Creating Network Offerign with LB as Netscalar nwoff_created = NetworkOffering.create( - self.apiClient, - self.services["nw_off_isolated_netscaler"] - ) + self.apiClient, + self.services["nw_off_isolated_netscaler"] + ) self.assertIsNotNone( - nwoff_created, - "Failed to Create Network Offering with LB sercvice for Netscaler" - ) + nwoff_created, + "Failed to Create Network Offering with\ + LB sercvice for Netscaler") # Enable Network offering nwoff_created.update(self.apiClient, state='Enabled') # Listing Network Offerings again list_nwoff_after = NetworkOffering.list( - self.apiClient, - forvpc="false", - guestiptype="Isolated", - state="Enabled", - supportedservices="SourceNat,Lb", - zoneid=self.zone.id - ) + self.apiClient, + forvpc="false", + guestiptype="Isolated", + state="Enabled", + supportedservices="SourceNat,Lb", + zoneid=self.zone.id + ) self.assertEquals( - len(list_nwoff_before) + 1, - len(list_nwoff_after), - "Failed to create Network Offering" - ) + len(list_nwoff_before) + 1, + len(list_nwoff_after), + "Failed to create Network Offering" + ) # Creating a Network Using the Network Offering network = Network.create( - self.userapiclient, - self.services["network"], - accountid=self.account.name, - domainid=self.domain.id, - networkofferingid=nwoff_created.id, - zoneid=self.zone.id - ) + self.userapiclient, + self.services["network"], + accountid=self.account.name, + domainid=self.domain.id, + networkofferingid=nwoff_created.id, + zoneid=self.zone.id + ) self.assertIsNotNone( - network, - "Network creation failed" - ) + network, + "Network creation failed" + ) self.cleanup.append(network) self.cleanup.append(nwoff_created) # Launching a Virtual Machine vm_created = VirtualMachine.create( - self.userapiclient, - self.services["virtual_machine"], - accountid=self.account.name, - domainid=self.account.domainid, - networkids=network.id, - serviceofferingid=self.service_offering.id, - ) + self.userapiclient, + self.services["virtual_machine"], + accountid=self.account.name, + domainid=self.account.domainid, + networkids=network.id, + serviceofferingid=self.service_offering.id, + ) self.assertIsNotNone( - vm_created, - "Failed to launch a VM under network created" - ) + vm_created, + "Failed to launch a VM under network created" + ) # Listing all the IP Addresses for a user list_ipaddresses_before = PublicIPAddress.list( - self.userapiclient, - listall=self.services["listall"] - ) + self.userapiclient, + listall=self.services["listall"] + ) status = validateList(list_ipaddresses_before) self.assertEquals( - PASS, - status[0], - "IP Addresses Association Failed while launching a VM" - ) + PASS, + status[0], + "IP Addresses Association Failed while launching a VM" + ) # Verifying the length of the list is 1 self.assertEqual( - 1, - len(list_ipaddresses_before), - "IP Addresses Association Failed while launching a VM" - ) + 1, + len(list_ipaddresses_before), + "IP Addresses Association Failed while launching a VM" + ) # Associating an IP Addresses to Network created associated_ipaddress = PublicIPAddress.create( - self.userapiclient, - services=self.services["network"], - networkid=network.id - ) + self.userapiclient, + services=self.services["network"], + networkid=network.id + ) self.assertIsNotNone( - associated_ipaddress, - "Failed to Associate IP Address" - ) + associated_ipaddress, + "Failed to Associate IP Address" + ) # Listing all the IP Addresses for a user list_ipaddresses_after = PublicIPAddress.list( - self.userapiclient, - listall=self.services["listall"] - ) + self.userapiclient, + listall=self.services["listall"] + ) status = validateList(list_ipaddresses_after) self.assertEquals( - PASS, - status[0], - "IP Addresses Association Failed" - ) + PASS, + status[0], + "IP Addresses Association Failed" + ) # Verifying the length of the list is 1 self.assertEqual( - 2, - len(list_ipaddresses_after), - "Number of IP Addresses associated are not matching expected" - ) + 2, + len(list_ipaddresses_after), + "Number of IP Addresses associated are not matching expected" + ) # Listing Service Offerings list_service_offerings = ServiceOffering.list( - self.userapiclient, - listall=self.services["listall"], - issystem='false' - ) + self.userapiclient, + listall=self.services["listall"], + issystem='false' + ) status = validateList(list_service_offerings) self.assertEquals( - PASS, - status[0], - "Failed to list Service Offerings" - ) + PASS, + status[0], + "Failed to list Service Offerings" + ) # Listing Users list_users = User.list( - self.apiClient, - listall=self.services["listall"], - account=self.account.name, - domainid=self.domain.id - ) + self.apiClient, + listall=self.services["listall"], + account=self.account.name, + domainid=self.domain.id + ) status = validateList(list_users) self.assertEquals( - PASS, - status[0], - "Failed to list Users" - ) + PASS, + status[0], + "Failed to list Users" + ) # Listing Featured Templates list_templates_featured = Template.list( - self.userapiclient, - listall=self.services["listall"], - templatefilter="featured", - zoneid=self.zone.id - ) + self.userapiclient, + listall=self.services["listall"], + templatefilter="featured", + zoneid=self.zone.id + ) status = validateList(list_templates_featured) self.assertEquals( - PASS, - status[0], - "Failed to list Featured Templates" - ) + PASS, + status[0], + "Failed to list Featured Templates" + ) # Listing Community Templates list_templates_community = Template.list( - self.userapiclient, - listall=self.services["listall"], - templatefilter="community", - zoneid=self.zone.id - ) + self.userapiclient, + listall=self.services["listall"], + templatefilter="community", + zoneid=self.zone.id + ) self.assertIsNone( - list_templates_community, - "Community Templates listed for newly created User" - ) + list_templates_community, + "Community Templates listed for newly created User" + ) # Listing selfexecutable Templates list_templates_selfexecutable = Template.list( - self.userapiclient, - listall=self.services["listall"], - templatefilter="selfexecutable", - zoneid=self.zone.id - ) + self.userapiclient, + listall=self.services["listall"], + templatefilter="selfexecutable", + zoneid=self.zone.id + ) self.assertIsNone( - list_templates_selfexecutable, - "Self Executable Templates listed for newly created User" - ) + list_templates_selfexecutable, + "Self Executable Templates listed for newly created User" + ) # Listing Autoscale VM Profiles - list_autoscalevm_profiles_before = Autoscale.listAutoscaleVmPofiles( - self.userapiclient, - listall=self.services["listall"] - ) + list_autoscalevm_profiles_before =\ + Autoscale.listAutoscaleVmPofiles( + self.userapiclient, + listall=self.services["listall"] + ) self.assertIsNone( - list_autoscalevm_profiles_before, - "Autoscale VM Profiles listed" - ) + list_autoscalevm_profiles_before, + "Autoscale VM Profiles listed" + ) # Creating Autoscale VM Profile - counterparam = { "snmpcommunity": "public", "snmpport": "161"} + counterparam = {"snmpcommunity": "public", "snmpport": "161"} autoscalevm_profile = Autoscale.createAutoscaleVmProfile( - self.userapiclient, - serviceofferingid=list_service_offerings[0].id, - zoneid=self.zone.id, - templateid=list_templates_featured[0].id, - autoscaleuserid=list_users[0].id, - destroyvmgraceperiod='100', - counterparam=counterparam - ) + self.userapiclient, + serviceofferingid=list_service_offerings[0].id, + zoneid=self.zone.id, + templateid=list_templates_featured[0].id, + autoscaleuserid=list_users[0].id, + destroyvmgraceperiod='100', + counterparam=counterparam + ) self.assertIsNotNone( - autoscalevm_profile, - "Failed to create Autoscale VM Profile" - ) + autoscalevm_profile, + "Failed to create Autoscale VM Profile" + ) # Listing Autoscale VM Profiles list_autoscalevm_profiles_after = Autoscale.listAutoscaleVmPofiles( - self.userapiclient, - listall=self.services["listall"] - ) + self.userapiclient, + listall=self.services["listall"] + ) status = validateList(list_autoscalevm_profiles_after) self.assertEquals( - PASS, - status[0], - "Failed to list Autoscale VM Profile after creation" - ) + PASS, + status[0], + "Failed to list Autoscale VM Profile after creation" + ) # Verifying only 1 autoscale vm profile is created self.assertEquals( - 1, - len(list_autoscalevm_profiles_after), - "Count of Autoscale VM profiles listed is not matching" - ) + 1, + len(list_autoscalevm_profiles_after), + "Count of Autoscale VM profiles listed is not matching" + ) # Listing the Autoscale VM Profile by id list_autoscalvmprofile = Autoscale.listAutoscaleVmPofiles( - self.userapiclient, - listall=self.services["listall"], - id=autoscalevm_profile.id - ) + self.userapiclient, + listall=self.services["listall"], + id=autoscalevm_profile.id + ) status = validateList(list_autoscalvmprofile) self.assertEquals( - PASS, - status[0], - "Failed to list Autoscale VM Profile by Id after creation" - ) + PASS, + status[0], + "Failed to list Autoscale VM Profile by Id after creation" + ) # Verifying details of the listed Autoscale VM Profile # Creating expected and actual values dictionaries expected_dict = { - "id":autoscalevm_profile.id, - "account":self.account.name, - "domainid":self.domain.id, - "autoscaleuserid":list_users[0].id, - "serviceofferingid":list_service_offerings[0].id, - "zoneid":self.zone.id, - "templateid":list_templates_featured[0].id, - "destroyvmgraceperiod":autoscalevm_profile.destroyvmgraceperiod - } + "id": autoscalevm_profile.id, + "account": self.account.name, + "domainid": self.domain.id, + "autoscaleuserid": list_users[0].id, + "serviceofferingid": list_service_offerings[0].id, + "zoneid": self.zone.id, + "templateid": list_templates_featured[0].id, + "destroyvmgraceperiod": + autoscalevm_profile.destroyvmgraceperiod} actual_dict = { - "id":list_autoscalvmprofile[0].id, - "account":list_autoscalvmprofile[0].account, - "domainid":list_autoscalvmprofile[0].domainid, - "autoscaleuserid":list_autoscalvmprofile[0].autoscaleuserid, - "serviceofferingid":list_autoscalvmprofile[0].serviceofferingid, - "zoneid":list_autoscalvmprofile[0].zoneid, - "templateid":list_autoscalvmprofile[0].templateid, - "destroyvmgraceperiod":list_autoscalvmprofile[0].destroyvmgraceperiod - } + "id": list_autoscalvmprofile[0].id, + "account": list_autoscalvmprofile[0].account, + "domainid": list_autoscalvmprofile[0].domainid, + "autoscaleuserid": + list_autoscalvmprofile[0].autoscaleuserid, + "serviceofferingid": + list_autoscalvmprofile[0].serviceofferingid, + "zoneid": list_autoscalvmprofile[0].zoneid, + "templateid": list_autoscalvmprofile[0].templateid, + "destroyvmgraceperiod": + list_autoscalvmprofile[0].destroyvmgraceperiod} autoscalevm_profile_status = self.__verify_values( - expected_dict, - actual_dict - ) + expected_dict, + actual_dict + ) self.assertEqual( - True, - autoscalevm_profile_status, - "Created Autoscale VM Profile details are not as expected" - ) + True, + autoscalevm_profile_status, + "Created Autoscale VM Profile details are not as expected" + ) # Updating destroyvmgrageperiod for created Autoscale VM Profile autoscalevm_profile_updated = Autoscale.updateAutoscaleVMProfile( - self.userapiclient, - id=autoscalevm_profile.id, - autoscaleuserid=list_users[0].id, - destroyvmgraceperiod='200', - templateid=list_templates_featured[0].id, - ) + self.userapiclient, + id=autoscalevm_profile.id, + autoscaleuserid=list_users[0].id, + destroyvmgraceperiod='200', + templateid=list_templates_featured[0].id, + ) self.assertIsNotNone( - autoscalevm_profile_updated, - "Failed to update Autoscale VM Profile" - ) - # Verifyign that Destroy VM Graceperiod is updated in autoscale VM Profile + autoscalevm_profile_updated, + "Failed to update Autoscale VM Profile" + ) + # Verifyign that Destroy VM Graceperiod is updated in autoscale VM + # Profile self.assertEquals( - 200, - autoscalevm_profile_updated.destroyvmgraceperiod, - "Failed to update destroy vm grace period" - ) + 200, + autoscalevm_profile_updated.destroyvmgraceperiod, + "Failed to update destroy vm grace period" + ) # Destroying the VM vm_created.delete(self.apiClient) self.cleanup.append(self.account) @@ -3964,10 +4030,12 @@ class TestIpAddresses(cloudstackTestCase): @attr(tags=["advanced"], required_hardware="true") def test_19_create_update_autoscalevmgroup(self): - """ - @summary: Test to list, create, update, enable, disable Autoscale VM Profiles + """ + @summary: Test to list, create, update, enable,\ + disable Autoscale VM Profiles @Steps: - Step1: Creating a Network Offering for Supported Service LB with Netscaler + Step1: Creating a Network Offering for Supported Service LB with + Netscaler Step2: Create a Network using Network Offering created in Step1 Step3: Launching a VM using Network created in Step2 Step4: Associating IP Address for Network created in Step2 @@ -3975,333 +4043,336 @@ class TestIpAddresses(cloudstackTestCase): Step6: Creating Scaledown condition and scaledown policy Step7: Creating Autoscale VM profile Step8: Creating Load Balancer Rule - Step9: Listing Autoscale Vm groups and verifying no Autoscale VM groups are listed + Step9: Listing Autoscale Vm groups and verifying no Autoscale VM groups + are listed Step10: Creating Autoscale VM Group and verifying it was created - Step11: Listing Autoscale Vm groups and verifying 1 Autoscale VM groups is listed + Step11: Listing Autoscale Vm groups and verifying 1 Autoscale VM groups + is listed Step12: Disabling Autoscale VM group and verifying it was disabled Step13: Updating Autoscale VM group and verifying it was updated Step14: Enabling Autoscale VM group and verifying it was enabled """ if self.hypervisor.lower() == 'kvm': - raise unittest.SkipTest("ScaleVM is not supported on KVM. Hence, skipping the test") + raise unittest.SkipTest( + "ScaleVM is not supported on KVM. Hence, skipping the test") list_physical_networks = PhysicalNetwork.list( - self.apiClient, - zoneid=self.zone.id - ) - physical_networks_size = 0 - if list_physical_networks is not None: - physical_networks_size = len(list_physical_networks) + self.apiClient, + zoneid=self.zone.id + ) run_flag = False for i in range(0, len(list_physical_networks)): list_network_serviceprovider = NetworkServiceProvider.list( - self.apiClient, - physicalnetworkid=list_physical_networks[i].id - ) + self.apiClient, + physicalnetworkid=list_physical_networks[i].id + ) for j in range(0, len(list_network_serviceprovider)): - if((list_network_serviceprovider[j].name == 'Netscaler') and (list_network_serviceprovider[j].state == 'Enabled')): + if((list_network_serviceprovider[j].name == 'Netscaler') and + (list_network_serviceprovider[j].state == 'Enabled')): run_flag = True break - if(run_flag == False): - self.debug("Netscaler is not enabled and auto scale VM is applicable only for Netscaler") + if not run_flag: + self.debug( + "Netscaler is not enabled and auto scale VM is\ + applicable only for Netscaler") else: # Listing Network Offerings list_nwoff_before = NetworkOffering.list( - self.apiClient, - forvpc="false", - guestiptype="Isolated", - state="Enabled", - supportedservices="SourceNat,Lb", - zoneid=self.zone.id - ) + self.apiClient, + forvpc="false", + guestiptype="Isolated", + state="Enabled", + supportedservices="SourceNat,Lb", + zoneid=self.zone.id + ) # Creating Network Offerign with LB as Netscalar nwoff_created = NetworkOffering.create( - self.apiClient, - self.services["nw_off_isolated_netscaler"] - ) + self.apiClient, + self.services["nw_off_isolated_netscaler"] + ) self.assertIsNotNone( - nwoff_created, - "Failed to Create Network Offering with LB sercvice for Netscaler" - ) + nwoff_created, + "Failed to Create Network Offering with\ + LB sercvice for Netscaler") # Enable Network offering nwoff_created.update(self.apiClient, state='Enabled') # Listing Network Offerings again list_nwoff_after = NetworkOffering.list( - self.apiClient, - forvpc="false", - guestiptype="Isolated", - state="Enabled", - supportedservices="SourceNat,Lb", - zoneid=self.zone.id - ) + self.apiClient, + forvpc="false", + guestiptype="Isolated", + state="Enabled", + supportedservices="SourceNat,Lb", + zoneid=self.zone.id + ) self.assertEquals( - len(list_nwoff_before) + 1, - len(list_nwoff_after), - "Failed to create Network Offering" - ) + len(list_nwoff_before) + 1, + len(list_nwoff_after), + "Failed to create Network Offering" + ) # Creating a Network Using the Network Offering network = Network.create( - self.userapiclient, - self.services["network"], - accountid=self.account.name, - domainid=self.domain.id, - networkofferingid=nwoff_created.id, - zoneid=self.zone.id - ) + self.userapiclient, + self.services["network"], + accountid=self.account.name, + domainid=self.domain.id, + networkofferingid=nwoff_created.id, + zoneid=self.zone.id + ) self.assertIsNotNone( - network, - "Network creation failed" - ) + network, + "Network creation failed" + ) self.cleanup.append(network) # self.cleanup.append(nwoff_created) # Launching a Virtual Machine vm_created = VirtualMachine.create( - self.userapiclient, - self.services["virtual_machine"], - accountid=self.account.name, - domainid=self.account.domainid, - networkids=network.id, - serviceofferingid=self.service_offering.id, - ) + self.userapiclient, + self.services["virtual_machine"], + accountid=self.account.name, + domainid=self.account.domainid, + networkids=network.id, + serviceofferingid=self.service_offering.id, + ) self.assertIsNotNone( - vm_created, - "Failed to launch a VM under network created" - ) + vm_created, + "Failed to launch a VM under network created" + ) # Listing all the IP Addresses for a user list_ipaddresses_before = PublicIPAddress.list( - self.userapiclient, - listall=self.services["listall"] - ) + self.userapiclient, + listall=self.services["listall"] + ) status = validateList(list_ipaddresses_before) self.assertEquals( - PASS, - status[0], - "IP Addresses Association Failed while launching a VM" - ) + PASS, + status[0], + "IP Addresses Association Failed while launching a VM" + ) # Verifying the length of the list is 1 self.assertEqual( - 1, - len(list_ipaddresses_before), - "IP Addresses Association Failed while launching a VM" - ) + 1, + len(list_ipaddresses_before), + "IP Addresses Association Failed while launching a VM" + ) # Associating an IP Addresses to Network created associated_ipaddress = PublicIPAddress.create( - self.userapiclient, - services=self.services["network"], - networkid=network.id - ) + self.userapiclient, + services=self.services["network"], + networkid=network.id + ) self.assertIsNotNone( - associated_ipaddress, - "Failed to Associate IP Address" - ) + associated_ipaddress, + "Failed to Associate IP Address" + ) # Listing all the IP Addresses for a user list_ipaddresses_after = PublicIPAddress.list( - self.userapiclient, - listall=self.services["listall"] - ) + self.userapiclient, + listall=self.services["listall"] + ) status = validateList(list_ipaddresses_after) self.assertEquals( - PASS, - status[0], - "IP Addresses Association Failed" - ) + PASS, + status[0], + "IP Addresses Association Failed" + ) # Verifying the length of the list is 1 self.assertEqual( - 2, - len(list_ipaddresses_after), - "Number of IP Addresses associated are not matching expected" - ) + 2, + len(list_ipaddresses_after), + "Number of IP Addresses associated are not matching expected" + ) # Listing Users list_users = User.list( - self.apiClient, - listall=self.services["listall"], - account=self.account.name, - domainid=self.domain.id - ) + self.apiClient, + listall=self.services["listall"], + account=self.account.name, + domainid=self.domain.id + ) status = validateList(list_users) self.assertEquals( - PASS, - status[0], - "Failed to list Users" - ) + PASS, + status[0], + "Failed to list Users" + ) # Listing counters list_counters = Autoscale.listCounters(self.userapiclient) status = validateList(list_counters) self.assertEquals( - PASS, - status[0], - "Failed to list Counters" - ) + PASS, + status[0], + "Failed to list Counters" + ) # Create Condition for scaleup Vm Policy condition_scaleup = Autoscale.createCondition( - self.userapiclient, - counterid=list_counters[0].id, - relationaloperator='GT', - threshold='40' - ) + self.userapiclient, + counterid=list_counters[0].id, + relationaloperator='GT', + threshold='40' + ) self.assertIsNotNone( - condition_scaleup, - "Failed to create Scaleup Condition" - ) + condition_scaleup, + "Failed to create Scaleup Condition" + ) # Creating scaleup Vm Policy scaleup_policy = Autoscale.createAutoscalePolicy( - self.userapiclient, - action='scaleup', - conditionids=condition_scaleup.id, - duration='40', - quiettime='300' - ) + self.userapiclient, + action='scaleup', + conditionids=condition_scaleup.id, + duration='40', + quiettime='300' + ) self.assertIsNotNone( - scaleup_policy, - "Failed to create Scaleup VM Policy" - ) + scaleup_policy, + "Failed to create Scaleup VM Policy" + ) # Create Condition for scaledown Vm Policy condition_scaledown = Autoscale.createCondition( - self.userapiclient, - counterid=list_counters[0].id, - relationaloperator='GT', - threshold='10' - ) + self.userapiclient, + counterid=list_counters[0].id, + relationaloperator='GT', + threshold='10' + ) self.assertIsNotNone( - condition_scaledown, - "Failed to create Scaledown Condition" - ) + condition_scaledown, + "Failed to create Scaledown Condition" + ) # Creating scaledown Vm Policy scaledown_policy = Autoscale.createAutoscalePolicy( - self.userapiclient, - action='scaledown', - conditionids=condition_scaledown.id, - duration='40', - quiettime='300' - ) + self.userapiclient, + action='scaledown', + conditionids=condition_scaledown.id, + duration='40', + quiettime='300' + ) self.assertIsNotNone( - scaledown_policy, - "Failed to create Scaledown VM Policy" - ) - counterparam = { "snmpcommunity": "public", "snmpport": "161"} + scaledown_policy, + "Failed to create Scaledown VM Policy" + ) + counterparam = {"snmpcommunity": "public", "snmpport": "161"} # Create Autoscale VM Profile vmprofile = Autoscale.createAutoscaleVmProfile( - self.userapiclient, - serviceofferingid=self.service_offering.id, - zoneid=self.zone.id, - templateid=self.template.id, - autoscaleuserid=list_users[0].id, - destroyvmgraceperiod='30', - counterparam=counterparam - ) + self.userapiclient, + serviceofferingid=self.service_offering.id, + zoneid=self.zone.id, + templateid=self.template.id, + autoscaleuserid=list_users[0].id, + destroyvmgraceperiod='30', + counterparam=counterparam + ) self.assertIsNotNone( - vmprofile, - "Failed to create Autoscale Vm Profile" - ) + vmprofile, + "Failed to create Autoscale Vm Profile" + ) self.services["lbrule"]["openfirewall"] = False # Creating Load Balancer Rule lbrule = LoadBalancerRule.create( - self.userapiclient, - self.services["lbrule"], - ipaddressid=associated_ipaddress.ipaddress.id, - accountid=self.account.name, - networkid=network.id, - domainid=self.domain.id - ) + self.userapiclient, + self.services["lbrule"], + ipaddressid=associated_ipaddress.ipaddress.id, + accountid=self.account.name, + networkid=network.id, + domainid=self.domain.id + ) self.assertIsNotNone( - lbrule, - "Failed to create Load Balancer Rule" - ) + lbrule, + "Failed to create Load Balancer Rule" + ) # Listing Autoscale VM Groups list_vmgroup_before = Autoscale.listAutoscaleVmGroup( - self.userapiclient, - listall=self.services["listall"], - lbruleid=lbrule.id - ) + self.userapiclient, + listall=self.services["listall"], + lbruleid=lbrule.id + ) # Verifying No Autoscale VM Groups are listed self.assertIsNone( - list_vmgroup_before, - "Listed Autoscale VM Groups for newly created LB Rule" - ) + list_vmgroup_before, + "Listed Autoscale VM Groups for newly created LB Rule" + ) # Creating Autoscale VM Group vmgroup = Autoscale.createAutoscaleVmGroup( - self.userapiclient, - lbruleid=lbrule.id, - minmembers='3', - maxmembers='10', - scaledownpolicyids=scaledown_policy.id, - scaleuppolicyids=scaleup_policy.id, - vmprofileid=vmprofile.id, - interval='30' - ) + self.userapiclient, + lbruleid=lbrule.id, + minmembers='3', + maxmembers='10', + scaledownpolicyids=scaledown_policy.id, + scaleuppolicyids=scaleup_policy.id, + vmprofileid=vmprofile.id, + interval='30' + ) self.assertIsNotNone( - vmgroup, - "Failed to create Autoscale VM Group" - ) + vmgroup, + "Failed to create Autoscale VM Group" + ) # Listing Autoscale VM Groups list_vmgroup_after = Autoscale.listAutoscaleVmGroup( - self.userapiclient, - listall=self.services["listall"], - lbruleid=lbrule.id - ) + self.userapiclient, + listall=self.services["listall"], + lbruleid=lbrule.id + ) status = validateList(list_vmgroup_after) self.assertEquals( - PASS, - status[0], - "Failed to list Autoscale VM group after creation" - ) + PASS, + status[0], + "Failed to list Autoscale VM group after creation" + ) # Verifying only 1 Autoscale VM group is listed self.assertEquals( - 1, - len(list_vmgroup_after), - "Autoscale VM group list count is not matching" - ) + 1, + len(list_vmgroup_after), + "Autoscale VM group list count is not matching" + ) # Disabling Autoscale VM group vmgroup_disabled = Autoscale.disableAutoscaleVmGroup( - self.userapiclient, - id=vmgroup.id - ) + self.userapiclient, + id=vmgroup.id + ) self.assertIsNotNone( - vmgroup_disabled, - "Failed to disable Autoscale VM group" - ) + vmgroup_disabled, + "Failed to disable Autoscale VM group" + ) # Verifyign the state of the VM Group afte renabling self.assertEquals( - "disabled", - vmgroup_disabled.state, - "Disabled VM Group state is not matching" - ) + "disabled", + vmgroup_disabled.state, + "Disabled VM Group state is not matching" + ) # Updating Autoscale VM Group vmgroup_updated = Autoscale.updateAutoscaleVMGroup( - self.userapiclient, - id=vmgroup.id, - minmembers='3', - maxmembers='10', - scaledownpolicyids=scaledown_policy.id, - scaleuppolicyids=scaleup_policy.id, - interval='40' - ) + self.userapiclient, + id=vmgroup.id, + minmembers='3', + maxmembers='10', + scaledownpolicyids=scaledown_policy.id, + scaleuppolicyids=scaleup_policy.id, + interval='40' + ) self.assertIsNotNone( - vmgroup_updated, - "Failed to update Autoscale VM group" - ) + vmgroup_updated, + "Failed to update Autoscale VM group" + ) self.assertEquals( - 40, - vmgroup_updated.interval, - "Updated Autoscale VM group interval value is not matching" - ) + 40, + vmgroup_updated.interval, + "Updated Autoscale VM group interval value is not matching" + ) # Enabling Autoscale VM group vmgroup_enabled = Autoscale.enableAutoscaleVmGroup( - self.userapiclient, - id=vmgroup.id - ) + self.userapiclient, + id=vmgroup.id + ) self.assertIsNotNone( - vmgroup_enabled, - "Failed to enable Autoscale VM group" - ) + vmgroup_enabled, + "Failed to enable Autoscale VM group" + ) # Verifyign the state of the VM Group afte renabling self.assertEquals( - "enabled", - vmgroup_enabled.state, - "Enabled VM Group state is not matching" - ) + "enabled", + vmgroup_enabled.state, + "Enabled VM Group state is not matching" + ) # Destroying the VM vm_created.delete(self.apiClient) self.cleanup.append(self.account) From 285cdae773f0ce04fceae1fe5e274e5b3c7411fe Mon Sep 17 00:00:00 2001 From: sanjeev Date: Wed, 13 Aug 2014 16:11:11 +0530 Subject: [PATCH 045/129] Test script to verify vm deployment with two networks in SG enabled advanced zone Test data to deploy new data center and execute test using the deployed zone Signed-off-by: sanjeev Incorporated review comments provided in RR 25097 Fixed review comments mentioned in RR25293 Conflicts: tools/marvin/marvin/config/test_data.py (cherry picked from commit 9e5da759b315955cf5bc8d606f6929ac1603708f) --- .../component/test_advancedsg_networks.py | 197 +++++++++++++++++- tools/marvin/marvin/config/test_data.py | 41 +++- 2 files changed, 226 insertions(+), 12 deletions(-) diff --git a/test/integration/component/test_advancedsg_networks.py b/test/integration/component/test_advancedsg_networks.py index 85ab697ea4e..fddca9bb74c 100644 --- a/test/integration/component/test_advancedsg_networks.py +++ b/test/integration/component/test_advancedsg_networks.py @@ -29,26 +29,35 @@ from marvin.lib.base import (Zone, VpcOffering, VPC, SecurityGroup, - Host) + Host, + ) from marvin.lib.common import (get_domain, get_zone, get_template, get_free_vlan, list_virtual_machines, - wait_for_cleanup) + wait_for_cleanup, + ) from marvin.lib.utils import (cleanup_resources, random_gen, - validateList) + validateList,) from marvin.cloudstackAPI import (authorizeSecurityGroupIngress, revokeSecurityGroupIngress, - deleteSecurityGroup) + deleteSecurityGroup, + listCapacity) +from marvin import deployDataCenter from nose.plugins.attrib import attr -from marvin.codes import PASS +from marvin.codes import PASS,FAIL,FAILED +from netaddr import iter_iprange import time import sys import random +import json +import os +from platform import system + class TestCreateZoneSG(cloudstackTestCase): @@ -1251,6 +1260,59 @@ class TestNetworksInAdvancedSG_VmOperations(cloudstackTestCase): return + def dump_config_deploy_DC(self): + configLines = [] + #Read zone and ip range information from config file + file = self.services["test_34_DeployVM_in_SecondSGNetwork"]["config"] + with open(file, 'r') as fp: + for line in fp: + ws = line.strip() + if not ws.startswith("#"): + configLines.append(ws) + config = json.loads("\n".join(configLines)) + config['zones'][0]['name'] = self.services["test_34_DeployVM_in_SecondSGNetwork"]["zone"] + config['zones'][0]['ipranges'][0]['startip'] = \ + self.services["test_34_DeployVM_in_SecondSGNetwork"]["ipranges"][0]["startip"] + config['zones'][0]['ipranges'][0]['endip'] = \ + self.services["test_34_DeployVM_in_SecondSGNetwork"]["ipranges"][0]["endip"] + config['zones'][0]['ipranges'][0]['vlan'] = \ + self.services["test_34_DeployVM_in_SecondSGNetwork"]["ipranges"][0]["vlan"] + config['zones'][0]['ipranges'][0]['gateway'] = \ + self.services["test_34_DeployVM_in_SecondSGNetwork"]["ipranges"][0]["gateway"] + config["dbSvr"]["dbSvr"] = self.services["test_34_DeployVM_in_SecondSGNetwork"]["dbSvr"]["dbSvr"] + config["dbSvr"]["passwd"] = self.services["test_34_DeployVM_in_SecondSGNetwork"]["dbSvr"]["passwd"] + config["dbSvr"]["db"] = self.services["test_34_DeployVM_in_SecondSGNetwork"]["dbSvr"]["db"] + config["dbSvr"]["port"] = self.services["test_34_DeployVM_in_SecondSGNetwork"]["dbSvr"]["port"] + config["dbSvr"]["user"] = self.services["test_34_DeployVM_in_SecondSGNetwork"]["dbSvr"]["user"] + config['mgtSvr'][0]['mgtSvrIp'] = self.services["test_34_DeployVM_in_SecondSGNetwork"]["mgtSvr"][0]["mgtSvrIp"] + config['mgtSvr'][0]["passwd"] = self.services["test_34_DeployVM_in_SecondSGNetwork"]["mgtSvr"][0]["passwd"] + config['mgtSvr'][0]["user"] = self.services["test_34_DeployVM_in_SecondSGNetwork"]["mgtSvr"][0]["user"] + config['mgtSvr'][0]["port"] = self.services["test_34_DeployVM_in_SecondSGNetwork"]["mgtSvr"][0]["port"] + config['zones'][0]['pods'][0]['clusters'][0]['primaryStorages'][0]['url'] = \ + "nfs://10.147.28.6:/export/home/sandbox/primary_"+str(random.randrange(0,1000,3)) + config['zones'][0]['pods'][0]['clusters'][0]['primaryStorages'][0]['name'] = \ + "PS_"+str(random.randrange(0,1000,3)) + config['zones'][0]['secondaryStorages'][0]['url'] = \ + "nfs://10.147.28.6:/export/home/sandbox/sstor_"+str(random.randrange(0,1000,3)) + if system().lower() != 'windows': + config_file = "/tmp/advsg.cfg" + with open(config_file, 'w+') as fp: + fp.write(json.dump(config, indent=4)) + cfg_file = file.split('/')[-1] + file2 = file.replace("/setup/dev/advanced/"+cfg_file, "") + file2 = file2+"/tools/marvin/marvin/deployDataCenter.py" + else : + config_file = "D:\\advsg.cfg" + with open(config_file, 'w+') as fp: + fp.write(json.dumps(config, indent=4)) + cfg_file = file.split('\\')[-1] + file2 = file.replace("\setup\dev\\"+cfg_file, "") + file2 = file2+"\\tools\marvin\marvin\deployDataCenter.py" + #Run deployDataCenter with new config file stored in \tmp + self.debug("Executing deployAndRun") + status = os.system("%s -i %s" %(file2, config_file)) + return status + @attr(tags = ["advancedsg"]) def test__16_AccountSpecificNwAccess(self): """ Test account specific network access of users""" @@ -2078,6 +2140,131 @@ class TestNetworksInAdvancedSG_VmOperations(cloudstackTestCase): self.assertEqual(vm_list[0].hostid, hosts_to_migrate[0].id, "VM host id does not reflect the migration") return + @attr(tags=["advancedsg"], required_hardware="false") + def test_34_DeployVM_in_SecondSGNetwork(self): + """ + @Desc: VM Cannot deploy to second network in advanced SG network + @step1:Create shared SG network1 + @step2: Consume all ip addresses in network1 + @step3: Create shared SG network2 + @step4: Deploy vm without specifying the network id + @step5: Verify that vm deployment should pick network2 and should not fail by picking network1 + """ + #Deploy data center with custom data + status = self.dump_config_deploy_DC() + if status == 1: + self.fail("Deploy DataCenter failed.") + zone_list = Zone.list( + self.api_client, + name=self.services["test_34_DeployVM_in_SecondSGNetwork"]["zone"] + ) + status = validateList(zone_list) + self.assertEquals(status[0],PASS,"Failed to list the zones") + count = 0 + """ + In simulator environment default guest os template should be in ready state immediately after the ssvm is up. + In worst case test would wait for 100sec for the template to get ready else it would fail. + """ + while (count < 10): + time.sleep(10) + template = get_template( + self.api_client, + zone_list[0].id + ) + if template != FAILED and str(template.isready).lower() == 'true': + break + else: + count=count+1 + if count == 10: + self.fail("Template is not in ready state even after 100sec. something wrong with the SSVM") + self.debug("Creating virtual machine in default shared network to consume all IPs") + vm_1 = VirtualMachine.create( + self.api_client, + self.services["virtual_machine"], + templateid=template.id, + zoneid=zone_list[0].id, + serviceofferingid=self.service_offering.id + ) + self.assertIsNotNone(vm_1,"Failed to deploy vm in default shared network") + self.cleanup_vms.append(vm_1) + #verify that all the IPs are consumed in the default shared network + cmd = listCapacity.listCapacityCmd() + cmd.type=8 + cmd.zoneid = zone_list[0].id + cmd.fetchlatest='true' + count = 0 + """ + Created zone with only 4 guest IP addresses so limiting the loop count to 4 + """ + while count < 5: + listCapacityRes = self.api_client.listCapacity(cmd) + self.assertEqual(validateList(listCapacityRes)[0],PASS,"listCapacity returned invalid list") + percentused = listCapacityRes[0].percentused + if percentused == '100': + break + self.debug("Creating virtual machine in default shared network to consume all IPs") + vm = VirtualMachine.create( + self.api_client, + self.services["virtual_machine"], + templateid=template.id, + zoneid=zone_list[0].id, + serviceofferingid=self.service_offering.id + ) + self.assertIsNotNone(vm,"Failed to deploy vm in default shared network") + self.cleanup_vms.append(vm) + count = count+1 + if count == 5: + self.fail("IPs are not getting consumed. Please check the setup") + #Create another SG enabled shared network after consuming all IPs + self.services["shared_network_sg"]["acltype"] = "domain" + self.services["shared_network_sg"]["networkofferingid"] = self.shared_network_offering_sg.id + physical_network, vlan = get_free_vlan(self.api_client, zone_list[0].id) + #create network using the shared network offering created + self.services["shared_network_sg"]["vlan"] = vlan + self.services["shared_network_sg"]["physicalnetworkid"] = physical_network.id + nwIPs = 3 + self.setSharedNetworkParams("shared_network_sg", range=nwIPs) + self.debug("Creating shared sg network1 with vlan %s" % vlan) + shared_network = Network.create( + self.api_client, + self.services["shared_network_sg"], + networkofferingid=self.shared_network_offering_sg.id, + zoneid=zone_list[0].id + ) + self.assertIsNotNone(shared_network,"shared SG network1 creation failed") + self.cleanup_networks.append(shared_network) + # Deploying 1 VM will exhaust the IP range because we are passing range as 2, and one of the IPs + # already gets consumed by the virtual router of the shared network + self.debug("Deploying vm2 without passing network id after consuming all IPs from default shared nw") + try: + vm_2 = VirtualMachine.create( + self.api_client, + self.services["virtual_machine"], + templateid=template.id, + zoneid=zone_list[0].id, + serviceofferingid=self.service_offering.id + ) + vm2_res = VirtualMachine.list( + self.api_client, + id=vm_2.id + ) + self.assertEqual(validateList(vm2_res)[0],PASS,"Failed to list vms in new network") + vm_ip = vm2_res[0].nic[0].ipaddress + ips_in_new_network = [] + ip_gen = iter_iprange( + self.services["shared_network_sg"]["startip"], + self.services["shared_network_sg"]["endip"] + ) + #construct ip list using start and end ips in the network + for i in range(0,nwIPs): + ips_in_new_network.append(str(ip_gen.next())) + if vm_ip not in ips_in_new_network: + self.fail("vm did not get the ip from new SG enabled shared network") + self.cleanup_vms.append(vm_2) + except Exception as e: + self.fail("Failed to deploy vm with two advanced sg networks %s" % e) + return + class TestSecurityGroups_BasicSanity(cloudstackTestCase): @classmethod diff --git a/tools/marvin/marvin/config/test_data.py b/tools/marvin/marvin/config/test_data.py index 88dccd749ba..14514c54c68 100644 --- a/tools/marvin/marvin/config/test_data.py +++ b/tools/marvin/marvin/config/test_data.py @@ -932,7 +932,7 @@ test_data = { "name": "hostantiaffinity", "type": "host anti-affinity", }, - "vgpu":{ + "vgpu":{ "disk_offering":{ "displaytext": "Small", "name": "Small", @@ -1172,8 +1172,6 @@ test_data = { "username": "testD12B", "password": "password", }, - - "domain2": { "name": "D2", }, @@ -1192,7 +1190,6 @@ test_data = { "username": "testD2A", "password": "password", }, - "accountROOTA": { "email": "testROOTA@test.com", "firstname": "testROOTA", @@ -1338,8 +1335,7 @@ test_data = { "username": "rmurphy", "password": "internalcloudstackpassword", }, - "ldapConfiguration_1": - { + "ldapConfiguration_1": { "basedn": "dc=cloudstack,dc=org", "emailAttribute": "mail", "userObject": "inetOrgPerson", @@ -1348,5 +1344,36 @@ test_data = { "port": "10389", "ldapUsername": "rmurphy", "ldapPassword": "password" - } + }, + + "test_34_DeployVM_in_SecondSGNetwork": { + "zone": "advsg", + "config": "D:\ACS-Repo\setup\dev\\advancedsg.cfg",#Absolute path to cfg file + #For sample configuration please refer to /setup/dev/advancedsg.cfg + "template": "CentOS 5.3(64-bit) no GUI (Simulator)", + "dbSvr": { + "dbSvr": "10.146.0.133", + "passwd": "cloud", + "db": "cloud", + "port": 3306, + "user": "cloud" + }, + "mgtSvr": [ + { + "mgtSvrIp": "10.146.0.133", + "passwd": "password", + "user": "root", + "port": 8096 + } + ], + "ipranges": [ + { + "startip": "10.147.32.150", + "endip": "10.147.32.153", + "netmask": "255.255.255.0", + "vlan": "32", + "gateway": "10.147.32.1" + } + ] + }, } From ecb662517fe8afaa6d3c084521a95fef445171f1 Mon Sep 17 00:00:00 2001 From: Gaurav Aradhye Date: Tue, 23 Sep 2014 14:18:18 +0530 Subject: [PATCH 046/129] CLOUDSTACK-7408: Fixed - Private key of the ssh keypair was getting corrupted Signed-off-by: SrikanteswaraRao Talluri (cherry picked from commit e921ec6ec79c50096d58264d60c15091969ff888) --- tools/marvin/marvin/lib/base.py | 8 +++++--- tools/marvin/marvin/lib/utils.py | 7 +++++-- tools/marvin/marvin/sshClient.py | 20 +++++++++++++++++--- 3 files changed, 27 insertions(+), 8 deletions(-) diff --git a/tools/marvin/marvin/lib/base.py b/tools/marvin/marvin/lib/base.py index 5bd89318523..d6233862fd3 100755 --- a/tools/marvin/marvin/lib/base.py +++ b/tools/marvin/marvin/lib/base.py @@ -552,7 +552,7 @@ class VirtualMachine: def get_ssh_client( self, ipaddress=None, reconnect=False, port=None, - keyPairFileLocation=None): + keyPairFileLocation=None, knownHostsFilePath=None): """Get SSH object of VM""" # If NAT Rules are not created while VM deployment in Advanced mode @@ -571,14 +571,16 @@ class VirtualMachine: self.ssh_port, self.username, self.password, - keyPairFileLocation=keyPairFileLocation + keyPairFileLocation=keyPairFileLocation, + knownHostsFilePath=knownHostsFilePath ) self.ssh_client = self.ssh_client or is_server_ssh_ready( self.ssh_ip, self.ssh_port, self.username, self.password, - keyPairFileLocation=keyPairFileLocation + keyPairFileLocation=keyPairFileLocation, + knownHostsFilePath=knownHostsFilePath ) return self.ssh_client diff --git a/tools/marvin/marvin/lib/utils.py b/tools/marvin/marvin/lib/utils.py index 8788b3b736f..b58b59dccab 100644 --- a/tools/marvin/marvin/lib/utils.py +++ b/tools/marvin/marvin/lib/utils.py @@ -121,7 +121,9 @@ def cleanup_resources(api_client, resources): obj.delete(api_client) -def is_server_ssh_ready(ipaddress, port, username, password, retries=20, retryinterv=30, timeout=10.0, keyPairFileLocation=None): +def is_server_ssh_ready(ipaddress, port, username, password, retries=20, + retryinterv=30, timeout=10.0, keyPairFileLocation=None, + knownHostsFilePath=None): ''' @Name: is_server_ssh_ready @Input: timeout: tcp connection timeout flag, @@ -140,7 +142,8 @@ def is_server_ssh_ready(ipaddress, port, username, password, retries=20, retryin keyPairFiles=keyPairFileLocation, retries=retries, delay=retryinterv, - timeout=timeout) + timeout=timeout, + knownHostsFilePath=knownHostsFilePath) except Exception, e: raise Exception("SSH connection has Failed. Waited %ss. Error is %s" % (retries * retryinterv, str(e))) else: diff --git a/tools/marvin/marvin/sshClient.py b/tools/marvin/marvin/sshClient.py index df2eeee1d4c..f027890522f 100644 --- a/tools/marvin/marvin/sshClient.py +++ b/tools/marvin/marvin/sshClient.py @@ -24,6 +24,7 @@ from paramiko import (BadHostKeyException, SFTPClient) import socket import time +import os from marvin.cloudstackException import ( internalError, GetDetailExceptionInfo @@ -49,7 +50,8 @@ class SshClient(object): ''' def __init__(self, host, port, user, passwd, retries=60, delay=10, - log_lvl=logging.DEBUG, keyPairFiles=None, timeout=10.0): + log_lvl=logging.DEBUG, keyPairFiles=None, timeout=10.0, + knownHostsFilePath=None): self.host = None self.port = 22 self.user = user @@ -77,6 +79,18 @@ class SshClient(object): self.timeout = timeout if port is not None and port >= 0: self.port = port + + # If the known_hosts file is not at default location, + # then its location can be passed, or else the default + # path will be considered (which is ~/.ssh/known_hosts) + if knownHostsFilePath: + self.knownHostsFilePath = knownHostsFilePath + else: + self.knownHostsFilePath = os.path.expanduser( + os.path.join( + "~", + ".ssh", + "known_hosts")) if self.createConnection() == FAILED: raise internalError("SSH Connection Failed") @@ -120,14 +134,14 @@ class SshClient(object): password=self.passwd, timeout=self.timeout) else: - self.ssh.load_host_keys(self.keyPairFiles) + self.ssh.load_host_keys(self.knownHostsFilePath) self.ssh.connect(hostname=self.host, port=self.port, username=self.user, password=self.passwd, key_filename=self.keyPairFiles, timeout=self.timeout, - look_for_keys=True + look_for_keys=False ) self.logger.debug("===SSH to Host %s port : %s SUCCESSFUL===" % (str(self.host), str(self.port))) From 2116f7dbb79db538628c339343401ed40af5a363 Mon Sep 17 00:00:00 2001 From: sailajamada Date: Fri, 26 Sep 2014 17:11:31 +0530 Subject: [PATCH 047/129] Additional Guest OS support for vGPU Test Automation (cherry picked from commit 402a3323f87cdb7ae456d1486702269463c8b32c) --- .../component/test_deploy_vgpu_vm.py | 512 ++++++++++++------ tools/marvin/marvin/config/test_data.py | 33 +- 2 files changed, 383 insertions(+), 162 deletions(-) diff --git a/test/integration/component/test_deploy_vgpu_vm.py b/test/integration/component/test_deploy_vgpu_vm.py index 081ab4b1d2e..b5af092fada 100644 --- a/test/integration/component/test_deploy_vgpu_vm.py +++ b/test/integration/component/test_deploy_vgpu_vm.py @@ -68,8 +68,14 @@ class TestvGPUWindowsVm(cloudstackTestCase): cls.k1passthroughgpuhosts=0 cls.k2passthroughgpuhosts=0 cls.nongpuhosts=[] - k2hosts=0 - k1hosts=0 + cls.k2hosts=0 + cls.k1hosts=0 + cls.k100_vgpu_service_offering=[] + cls.k200_vgpu_service_offering=[] + cls.vm_k1_card=[] + cls.vm_k2_card=[] + cls.vm2_k2_card=[] + cls.vmlifecycletest=0 for ghost in hosts : if ghost.hypervisorversion >= "6.2.0": @@ -86,7 +92,7 @@ class TestvGPUWindowsVm(cloudstackTestCase): if (k2card==0) and (k1card==0): cls.nongpuhosts.append(ghost.ipaddress) if k2card !=0: - k2hosts=k2hosts+1 + cls.k2hosts=cls.k2hosts+1 k260q = len(sshClient.execute("xe vgpu-type-list model-name=\"GRID K260Q\"")) k240q = len(sshClient.execute("xe vgpu-type-list model-name=\"GRID K240Q\"")) k220q = len(sshClient.execute("xe vgpu-type-list model-name=\"GRID K220Q\"")) @@ -107,7 +113,7 @@ class TestvGPUWindowsVm(cloudstackTestCase): cls.k2passthroughgpuhosts=cls.k2passthroughgpuhosts+1 if k1card != 0: - k1hosts=k1hosts+1 + cls.k1hosts=cls.k1hosts+1 k100 = len(sshClient.execute("xe vgpu-type-list model-name=\"GRID K100\"")) k120q = len(sshClient.execute("xe vgpu-type-list model-name=\"GRID K120Q\"")) k140q = len(sshClient.execute("xe vgpu-type-list model-name=\"GRID K140Q\"")) @@ -123,7 +129,7 @@ class TestvGPUWindowsVm(cloudstackTestCase): cls.k100gpuhosts=cls.k100gpuhosts+1 if k1passthrough != 0 : cls.k1passthroughgpuhosts=cls.k1passthroughgpuhosts+1 - if (k1hosts == 0) and (k2hosts == 0): + if (cls.k2hosts == 0) and (cls.k1hosts == 0): raise unittest.SkipTest("No XenServer available with GPU Drivers installed") cls.zone = get_zone(cls.apiclient, cls.testClient.getZoneForTests()) @@ -139,6 +145,8 @@ class TestvGPUWindowsVm(cloudstackTestCase): #cls.template = get_windows_template(cls.apiclient, cls.zone.id ,ostype_desc="Windows Server 2012 (64-bit)") if cls.template == FAILED: + if "http://pleaseupdateURL/dummy.vhd" in cls.testdata["vgpu"] ["templateregister1"]["url"]: + raise unittest.SkipTest("Check Test Data file if it has the valid template URL") cls.template = Template.register( cls.apiclient, cls.testdata["vgpu"] ["templateregister1"], @@ -166,86 +174,17 @@ class TestvGPUWindowsVm(cloudstackTestCase): template_response = list_template_response[0] if template_response.isready == True: break - + if timeout == 0: - raise unittest.SkipTest("Failed to download template(ID: %s)" % template_response.id) + raise unittest.SkipTest("Failed to download template(ID: %s). " % template_response.id) timeout = timeout - 1 - """ - Create Service Offerings for Both K1 and K2 cards to be used for VM life cycle tests - """ - - if(k1hosts != 0): - if(cls.k140qgpuhosts != 0): - gtype = "GRID K140Q" - elif(cls.k120qgpuhosts != 0): - gtype = "GRID K120Q" - elif(cls.k100gpuhosts !=0): - gtype = "GRID K100" - else: - gtype = "passthrough" - - cls.testdata["vgpu"]["service_offerings"][gtype]["serviceofferingdetails"] = [{'pciDevice':'Group of NVIDIA Corporation GK107GL [GRID K1] GPUs'}, - {'vgpuType':gtype}] - try: - cls.k100_vgpu_service_offering = ServiceOffering.create( - cls.apiclient, - cls.testdata["vgpu"]["service_offerings"][gtype] - ) - except Exception as e: - cls.fail("Failed to create the service offering, %s" % e) - - if(k2hosts != 0): - if(cls.k240qgpuhosts != 0): - gtype = "GRID K240Q" - elif(cls.k220qgpuhosts != 0): - gtype = "GRID K220Q" - elif(cls.k200gpuhosts !=0): - gtype = "GRID K200" - else: - gtype = "passthrough" - - cls.testdata["vgpu"]["service_offerings"][gtype]["serviceofferingdetails"] = [{'pciDevice': 'Group of NVIDIA Corporation GK104GL [GRID K2] GPUs'}, - {'vgpuType':gtype}] - try: - cls.k200_vgpu_service_offering = ServiceOffering.create( - cls.apiclient, - cls.testdata["vgpu"]["service_offerings"][gtype] - ) - except Exception as e: - cls.fail("Failed to create the service offering, %s" % e) - - """ - Create Virtual Machines for Both K1 and K2 cards to be used for VM life cycle tests - """ - - if(k1hosts != 0): - cls.vm_k1_card = VirtualMachine.create( - cls.apiclient, - cls.testdata["virtual_machine"], - accountid=cls.account.name, - zoneid=cls.zone.id, - domainid=cls.account.domainid, - serviceofferingid=cls.k100_vgpu_service_offering.id, - templateid=cls.template.id - ) - if(k2hosts !=0): - cls.vm_k2_card = VirtualMachine.create( - cls.apiclient, - cls.testdata["virtual_machine"], - accountid=cls.account.name, - zoneid=cls.zone.id, - domainid=cls.account.domainid, - serviceofferingid=cls.k200_vgpu_service_offering.id, - templateid=cls.template.id - ) - cls._cleanup = [ cls.account, - cls.k100_vgpu_service_offering, - cls.k200_vgpu_service_offering + #cls.k100_vgpu_service_offering, + #cls.k200_vgpu_service_offering ] @attr(tags = ['advanced', 'basic', 'vgpu'], required_hardware="true") @@ -486,6 +425,7 @@ class TestvGPUWindowsVm(cloudstackTestCase): self.fail("Failed to start VM (ID: %s) with %s vGPU card " % (vm.id,vgpucard)) return(list_vm_response[0]) + @attr(tags = ['advanced', 'basic' , 'vgpu'], required_hardware="true") def destroy_vm(self): """Destroy Virtual Machine @@ -606,6 +546,282 @@ class TestvGPUWindowsVm(cloudstackTestCase): return + def new_template_register(self,guestostype): + + template1 = get_windows_template(self.apiclient, self.zone.id ,ostype_desc=guestostype) + + if template1 == FAILED: + if "http://pleaseupdateURL/dummy.vhd" in cls.testdata["vgpu"] [guestostype]["url"]: + raise unittest.SkipTest("Check Test Data file if it has the valid template URL") + template1 = Template.register( + self.apiclient, + self.testdata["vgpu"] [guestostype], + hypervisor = "XenServer", + zoneid=cls.zone.id, + domainid=cls.account.domainid, + account=cls.account.name + ) + timeout = self.testdata["vgpu"]["timeout"] + + while True: + time.sleep(self.testdata["vgpu"]["sleep"]) + list_template_response = Template.list( + self.apiclient, + templatefilter=\ + self.testdata["templatefilter"], + id=template1.id + ) + if (isinstance(list_template_response, list)) is not True: + raise unittest.SkipTest("Check list template api response returns a valid list") + + if len(list_template_response) is None : + raise unittest.SkipTest("Check template registered is in List Templates") + + template_response = list_template_response[0] + if template_response.isready == True: + break + if timeout == 0: + raise unittest.SkipTest("Failed to download template(ID: %s)" % template_response.id) + + timeout = timeout - 1 + return(template1.id) + + def deploy_vm_lifecycle(self): + """ + Create Service Offerings for Both K1 and K2 cards to be used for VM life cycle tests + """ + + if(self.k1hosts != 0): + if(self.k140qgpuhosts != 0): + gtype = "GRID K140Q" + elif(self.k120qgpuhosts != 0): + gtype = "GRID K120Q" + elif(self.k100gpuhosts !=0): + gtype = "GRID K100" + else: + gtype = "passthrough" + + self.testdata["vgpu"]["service_offerings"][gtype]["serviceofferingdetails"] = [{'pciDevice':'Group of NVIDIA Corporation GK107GL [GRID K1] GPUs'}, + {'vgpuType':gtype}] + try: + self.__class__.k100_vgpu_service_offering = ServiceOffering.create( + self.apiclient, + self.testdata["vgpu"]["service_offerings"][gtype] + ) + except Exception as e: + self.fail("Failed to create the service offering, %s" % e) + + if(self.k2hosts != 0): + if(self.k240qgpuhosts != 0): + gtype = "GRID K240Q" + elif(cls.k220qgpuhosts != 0): + gtype = "GRID K220Q" + elif(self.k200gpuhosts !=0): + gtype = "GRID K200" + else: + gtype = "passthrough" + + self.testdata["vgpu"]["service_offerings"][gtype]["serviceofferingdetails"] = [{'pciDevice': 'Group of NVIDIA Corporation GK104GL [GRID K2] GPUs'}, + {'vgpuType':gtype}] + try: + self.__class__.k200_vgpu_service_offering = ServiceOffering.create( + self.apiclient, + self.testdata["vgpu"]["service_offerings"][gtype] + ) + except Exception as e: + self.fail("Failed to create the service offering, %s" % e) + + win8templateid=self.new_template_register("Windows 8 (64-bit)") + win2012templateid=self.new_template_register("Windows Server 2012 (64-bit)") + win7templateid=self.new_template_register("Windows 7 (64-bit)") + + """ + Create Virtual Machines for Both K1 and K2 cards to be used for VM life cycle tests + """ + + if(self.k1hosts != 0): + self.__class__.vm_k1_card = VirtualMachine.create( + self.apiclient, + self.testdata["virtual_machine"], + accountid=self.account.name, + zoneid=self.zone.id, + domainid=self.account.domainid, + serviceofferingid=self.k100_vgpu_service_offering.id, + templateid=win8templateid + ) + if(self.k2hosts !=0): + self.__class__.vm_k2_card = VirtualMachine.create( + self.apiclient, + self.testdata["virtual_machine"], + accountid=self.account.name, + zoneid=self.zone.id, + domainid=self.account.domainid, + serviceofferingid=self.k200_vgpu_service_offering.id, + templateid=win2012templateid + ) + if(self.k2hosts !=0): + self.__class__.vm2_k2_card = VirtualMachine.create( + self.apiclient, + self.testdata["virtual_machine"], + accountid=self.account.name, + zoneid=self.zone.id, + domainid=self.account.domainid, + serviceofferingid=self.k200_vgpu_service_offering.id, + templateid=win7templateid + ) + return + + + def check_gpu_resources_released_vm(self,gpuhostid,vm_vgpu_type,rcapacity): + hhosts = list_hosts( + self.apiclient, + hypervisor="XenServer", + id=gpuhostid + ) + self.assertEqual( + isinstance(hhosts, list), + True, + "Check list hosts response returns a valid list" + ) + + self.assertNotEqual( + len(hhosts), + 0, + "Check Host details are available in List Hosts" + ) + for ggroup in hhosts: + if ggroup.ipaddress not in self.nongpuhosts: + for gp in ggroup.gpugroup: + #if gp.gpugroupname == "Group of NVIDIA Corporation GK104GL [GRID K2] GPUs": + for gptype in gp.vgpu: + if gptype.vgputype==vm_vgpu_type: + self.debug("Latest remainingcapacity is %s and before remainingcapacity is %s"%(gptype.remainingcapacity,rcapacity)) + if gptype.remainingcapacity != rcapacity+1: + self.fail("Host capacity is not updated .GPU resources should be released when VM is stopped/Destroyed ") + return + + def check_vm_state(self,vmid): + list_vm_response = list_virtual_machines( + self.apiclient, + id=vmid + ) + + if list_vm_response is None: + return("Expunge") + return(list_vm_response[0].state) + + def check_host_vgpu_remaining_capacity(self,gpuhostid,gtype): + gputhosts = list_hosts( + self.apiclient, + hypervisor="XenServer", + id=gpuhostid + ) + vgpucapacity=0 + for ghost in gputhosts: + if ghost.gpugroup is not None: + for gp in ghost.gpugroup: + #if gp.gpugroupname == gpucard: + for gptype in gp.vgpu: + if gptype.vgputype == gtype: + vgpucapacity=vgpucapacity+gptype.remainingcapacity + + return(vgpucapacity) + + def verify_vm(self,vm_gpu_card): + if(vm_gpu_card): + vm_gpu_card.getState( + self.apiclient, + "Running") + + self.check_for_vGPU_resource(vm_gpu_card.hostid,vm_gpu_card.instancename,vm_gpu_card.serviceofferingid,vm_gpu_card.vgpu) + + def stop_life_cycle_vm (self,vm_gpu_card): + + if(vm_gpu_card): + vm_gpu_card.stop(self.apiclient) + time.sleep(self.testdata["vgpu"]["sleep"]) + vm_gpu_card.getState( + self.apiclient, + "Stopped") + + def start_life_cycle_vm(self,vm_gpu_card): + + if(vm_gpu_card): + vm_gpu_card.start(self.apiclient) + time.sleep(self.testdata["vgpu"]["sleep"]) + + def restore_life_cycle_vm(self,vm_gpu_card): + if(vm_gpu_card): + vm_gpu_card.restore(self.apiclient) + time.sleep(self.testdata["vgpu"]["sleep"]) + + def reboot_life_cycle_vm(self,vm_gpu_card): + + if(vm_gpu_card): + vm_gpu_card.reboot(self.apiclient) + time.sleep(self.testdata["vgpu"]["sleep"]) + + def delete_vm_life_cycle_vm(self,vm_gpu_card): + if(vm_gpu_card): + vm_gpu_card.delete(self.apiclient) + time.sleep(self.testdata["vgpu"]["sleep"]) + vm_gpu_card.getState( + self.apiclient, + "Destroyed") + + def recover_vm_life_cycle_vm(self,vm_gpu_card): + if(vm_gpu_card): + vm_gpu_card.recover(self.apiclient) + vm_gpu_card.getState( + self.apiclient, + "Stopped") + + + def recovervm(self,vm_gpu_card): + if self.check_vm_state(vm_gpu_card.id)=="Expunge": + raise unittest.SkipTest("VM is already deleted hence skipping") + self.recover_vm_life_cycle_vm(vm_gpu_card) + self.start_life_cycle_vm(vm_gpu_card) + self.verify_vm(vm_gpu_card) + return + + + def startvm(self,vm_gpu_card): + + self.start_life_cycle_vm(vm_gpu_card) + self.verify_vm(vm_gpu_card) + return + + def stopvm(self,vm_gpu_card): + + rcapacity=self.check_host_vgpu_remaining_capacity(vm_gpu_card.hostid,vm_gpu_card.vgpu) + self.stop_life_cycle_vm(vm_gpu_card) + self.check_gpu_resources_released_vm(vm_gpu_card.hostid,vm_gpu_card.vgpu,rcapacity) + return + + def deletevm(self,vm_gpu_card): + + rcapacity=self.check_host_vgpu_remaining_capacity(vm_gpu_card.hostid,vm_gpu_card.vgpu) + hostid=vm_gpu_card.hostid + vgputype=vm_gpu_card.vgpu + self.delete_vm_life_cycle_vm(vm_gpu_card) + self.check_gpu_resources_released_vm(hostid,vgputype,rcapacity) + return + + def restorevm(self,vm_gpu_card): + + self.restore_life_cycle_vm(vm_gpu_card) + self.verify_vm(vm_gpu_card) + return + + + def rebootvm(self,vm_vgpu_card): + + self.reboot_life_cycle_vm(vm_vgpu_card) + self.verify_vm(vm_vgpu_card) + return + + def test_01_list_vgpu_host_details(self): """ list vGPU host details """ hhosts = list_hosts( @@ -909,31 +1125,28 @@ class TestvGPUWindowsVm(cloudstackTestCase): def test_12_validate_deployed_vGPU_windows_vm(self): """ Test deploy virtual machine """ + + self.deploy_vm_lifecycle() + self.debug("Check if deployed VMs are in running state?") - if(self.vm_k1_card): - self.vm_k1_card.getState( - self.apiclient, - "Running") - self.check_for_vGPU_resource(self.vm_k1_card.hostid,self.vm_k1_card.instancename,self.vm_k1_card.serviceofferingid,self.vm_k1_card.vgpu) - if(self.vm_k2_card): - self.vm_k2_card.getState( - self.apiclient, - "Running") - - self.check_for_vGPU_resource(self.vm_k2_card.hostid,self.vm_k2_card.instancename,self.vm_k2_card.serviceofferingid,self.vm_k2_card.vgpu) + self.verify_vm(self.__class__.vm_k1_card) + self.verify_vm(self.__class__.vm_k2_card) + self.verify_vm(self.__class__.vm2_k2_card) + self.__class__.vmlifecycletest=1 return @attr(tags = ['advanced', 'basic' , 'vgpu'], required_hardware="true") def test_13_stop_vGPU_windows_vm(self): """ Test stop virtual machine """ - if(self.vm_k1_card): - self.vm_k1_card.stop(self.apiclient) + if self.__class__.vmlifecycletest==0: + raise unittest.SkipTest("VM Life Cycle Deploy VM test failed hence skipping") - if(self.vm_k2_card): - self.vm_k2_card.stop(self.apiclient) + self.stopvm(self.__class__.vm_k1_card) + self.stopvm(self.__class__.vm_k2_card) + self.stopvm(self.__class__.vm2_k2_card) return @@ -941,15 +1154,12 @@ class TestvGPUWindowsVm(cloudstackTestCase): def test_14_start_vGPU_windows_vm(self): """ Test start virtual machine """ - if(self.vm_k1_card): - self.vm_k1_card.start(self.apiclient) - time.sleep(200) - self.check_for_vGPU_resource(self.vm_k1_card.hostid,self.vm_k1_card.instancename,self.vm_k1_card.serviceofferingid,self.vm_k1_card.vgpu) + if self.__class__.vmlifecycletest==0: + raise unittest.SkipTest("VM Life Cycle Deploy VM test failed hence skipping") - if(self.vm_k2_card): - self.vm_k2_card.start(self.apiclient) - time.sleep(200) - self.check_for_vGPU_resource(self.vm_k2_card.hostid,self.vm_k2_card.instancename,self.vm_k2_card.serviceofferingid,self.vm_k2_card.vgpu) + self.startvm(self.__class__.vm_k1_card) + self.startvm(self.__class__.vm_k2_card) + self.startvm(self.__class__.vm2_k2_card) return @@ -957,23 +1167,13 @@ class TestvGPUWindowsVm(cloudstackTestCase): def test_15_restore_vGPU_windows_vm(self): """Test restore Virtual Machine """ - if(self.vm_k1_card): - self.vm_k1_card.restore(self.apiclient) - time.sleep(200) - self.vm_k1_card.getState( - self.apiclient, - "Running") - self.check_for_vGPU_resource(self.vm_k1_card.hostid,self.vm_k1_card.instancename,self.vm_k1_card.serviceofferingid,self.vm_k1_card.vgpu) + if self.__class__.vmlifecycletest==0: + raise unittest.SkipTest("VM Life Cycle Deploy VM test failed hence skipping") - if(self.vm_k2_card): - self.vm_k2_card.restore(self.apiclient) - time.sleep(200) - self.vm_k2_card.getState( - self.apiclient, - "Running") - - self.check_for_vGPU_resource(self.vm_k2_card.hostid,self.vm_k2_card.instancename,self.vm_k2_card.serviceofferingid,self.vm_k2_card.vgpu) + self.restorevm(self.__class__.vm_k1_card) + self.restorevm(self.__class__.vm_k2_card) + self.restorevm(self.__class__.vm2_k2_card) return @@ -981,23 +1181,13 @@ class TestvGPUWindowsVm(cloudstackTestCase): def test_16_reboot_vGPU_windows_vm(self): """ Test reboot virtual machine """ - if(self.vm_k1_card): - self.vm_k1_card.reboot(self.apiclient) - time.sleep(200) - self.vm_k1_card.getState( - self.apiclient, - "Running") - self.check_for_vGPU_resource(self.vm_k1_card.hostid,self.vm_k1_card.instancename,self.vm_k1_card.serviceofferingid,self.vm_k1_card.vgpu) + if self.__class__.vmlifecycletest==0: + raise unittest.SkipTest("VM Life Cycle Deploy VM test failed hence skipping") - if(self.vm_k2_card): - self.vm_k2_card.reboot(self.apiclient) - time.sleep(200) - self.vm_k2_card.getState( - self.apiclient, - "Running") - - self.check_for_vGPU_resource(self.vm_k2_card.hostid,self.vm_k2_card.instancename,self.vm_k2_card.serviceofferingid,self.vm_k2_card.vgpu) + self.rebootvm(self.__class__.vm_k1_card) + self.rebootvm(self.__class__.vm_k2_card) + self.rebootvm(self.__class__.vm2_k2_card) return @@ -1005,17 +1195,18 @@ class TestvGPUWindowsVm(cloudstackTestCase): def test_17_destroy_vGPU_windows_vm(self): """Test destroy Virtual Machine """ - if(self.vm_k1_card): - self.vm_k1_card.delete(self.apiclient) - self.vm_k1_card.getState( - self.apiclient, - "Destroyed") - if(self.vm_k2_card): - self.vm_k2_card.delete(self.apiclient) - self.vm_k2_card.getState( - self.apiclient, - "Destroyed") + if self.__class__.vmlifecycletest==0: + raise unittest.SkipTest("VM Life Cycle Deploy VM test failed hence skipping") + + + self.deletevm(self.__class__.vm_k1_card) + self.deletevm(self.__class__.vm_k2_card) + self.deletevm(self.__class__.vm2_k2_card) + + + self.cleanup.append(self.__class__.k100_vgpu_service_offering) + self.cleanup.append(self.__class__.k200_vgpu_service_offering) return @@ -1023,35 +1214,34 @@ class TestvGPUWindowsVm(cloudstackTestCase): def test_18_recover_vGPU_windows_vm(self): """Test recover Virtual Machine """ - if(self.vm_k1_card): - self.vm_k1_card.recover(self.apiclient) - self.vm_k1_card.getState( - self.apiclient, - "Stopped") + if self.__class__.vmlifecycletest==0: + raise unittest.SkipTest("VM Life Cycle Deploy VM test failed hence skipping") - if(self.vm_k2_card): - self.vm_k2_card.recover(self.apiclient) - self.vm_k2_card.getState( - self.apiclient, - "Stopped") + self.recovervm(self.__class__.vm_k1_card) + self.recovervm(self.__class__.vm_k2_card) + self.recovervm(self.__class__.vm2_k2_card) return def test_19_destroy_vGPU_windows_vm_after_recover(self): """Test destroy Virtual Machine """ - if(self.vm_k1_card): - self.vm_k1_card.delete(self.apiclient) - self.vm_k1_card.getState( - self.apiclient, - "Destroyed") - if(self.vm_k2_card): - self.vm_k2_card.delete(self.apiclient) - self.vm_k2_card.getState( - self.apiclient, - "Destroyed") + if self.__class__.vmlifecycletest==0: + raise unittest.SkipTest("VM Life Cycle Deploy VM test failed hence skipping") + + if self.check_vm_state(self.__class__.vm_k1_card.id)=="Expunge": + raise unittest.SkipTest("VM is already deleted hence skipping") + self.deletevm(self.__class__.vm_k1_card) + + if self.check_vm_state(self.__class__.vm_k2_card.id)=="Expunge": + raise unittest.SkipTest("VM is already deleted hence skipping") + self.deletevm(self.__class__.vm_k2_card) + + if self.check_vm_state(self.__class__.vm2_k1_card.id)=="Expunge": + raise unittest.SkipTest("VM is already deleted hence skipping") + self.deletevm(self.__class__.vm2_k2_card) return diff --git a/tools/marvin/marvin/config/test_data.py b/tools/marvin/marvin/config/test_data.py index 14514c54c68..ffc3518a1d4 100644 --- a/tools/marvin/marvin/config/test_data.py +++ b/tools/marvin/marvin/config/test_data.py @@ -942,12 +942,43 @@ test_data = { "displaytext": "win8withpv", "name": "win8withpv", "passwordenabled": False, - "url": "http://10.147.28.7/templates/Windows8/Windows864.vhd", + "url": "http://pleaseupdateURL/dummy.vhd", "format": "VHD" , "ostype": "Windows 8 (64-bit)", "ispublic": "true", "hypervisor": "XenServer" }, + "Windows 8 (64-bit)": { + "displaytext": "Windows 8 (64-bit)", + "name": "win8withpv", + "passwordenabled": False, + "url": "http://pleaseupdateURL/dummy.vhd", + "format": "VHD" , + "ostype": "Windows 8 (64-bit)", + "ispublic": "true", + "hypervisor": "XenServer" + }, + "Windows Server 2012 (64-bit)": { + "displaytext": "Windows Server 2012 (64-bit)", + "name": "Windows Server 2012 (64-bit)", + "passwordenabled": False, + "url": "http://pleaseupdateURL/dummy.vhd", + "format": "VHD" , + "ostype": "Windows Server 2012 (64-bit)", + "ispublic": "true", + "hypervisor": "XenServer" + }, + + "Windows 7 (64-bit)": { + "displaytext": "Windows 7 (64-bit)", + "name": "Windows 7 (64-bit)", + "passwordenabled": False, + "url": "http://pleaseupdateURL/dummy.vhd", + "format": "VHD" , + "ostype": "Windows 7 (64-bit)", + "ispublic": "true", + "hypervisor": "XenServer" + }, "clusters": { "clustername": "Xen Cluster Vgpu", "clustertype": "CloudManaged", From 354cb21109952761ae1321c3051a02764b3243e0 Mon Sep 17 00:00:00 2001 From: Jessica Wang Date: Fri, 26 Sep 2014 12:02:48 -0700 Subject: [PATCH 048/129] CLOUDSTACK-7637: UI > fix a bug produced by 4.5 feature "template accross multiple zones" > fix it by including all properties to jsonObj. (cherry picked from commit 59b0103a5325074e0e0c105a9afd2b39a5e1117b) --- ui/scripts/templates.js | 9 ++------- 1 file changed, 2 insertions(+), 7 deletions(-) diff --git a/ui/scripts/templates.js b/ui/scripts/templates.js index d71a77444d2..9665ffda6d7 100644 --- a/ui/scripts/templates.js +++ b/ui/scripts/templates.js @@ -622,15 +622,10 @@ }); if (existing.length == 0) { - itemsView.push({ - id: item.id, - name: item.name, - description: item.description, - hypervisor: item.hypervisor, - ostypeid: item.ostypeid, + itemsView.push($.extend(item, { zones: item.zonename, zoneids: [item.zoneid] - }); + })); } else { existing[0].zones = 'label.multiplezones'; From 83967c93c576476c90ed4c2e087229fa021cc079 Mon Sep 17 00:00:00 2001 From: Wido den Hollander Date: Sun, 28 Sep 2014 11:55:25 +0200 Subject: [PATCH 049/129] CLOUDSTACK-7641: Do not always ask libvirt to refresh a storage pool On larger (especially RBD) storage pools this can take a lot of time slowing operations like creating volumes down. The getStorageStats command will still ask a pool to be refreshed so that the management server has accurate information about the storage pools. On larger deployments, with thousands of volumes in one pool, this should significantly improve storage related operations (cherry picked from commit b53a9dcc9f3ee95d40761b9c2c860f821595a661) --- .../resource/LibvirtComputingResource.java | 2 +- .../kvm/storage/IscsiAdmStorageAdaptor.java | 5 +++++ .../kvm/storage/KVMStoragePoolManager.java | 6 +++++- .../kvm/storage/LibvirtStorageAdaptor.java | 21 ++++++++++++++++++- .../kvm/storage/StorageAdaptor.java | 3 +++ 5 files changed, 34 insertions(+), 3 deletions(-) diff --git a/plugins/hypervisors/kvm/src/com/cloud/hypervisor/kvm/resource/LibvirtComputingResource.java b/plugins/hypervisors/kvm/src/com/cloud/hypervisor/kvm/resource/LibvirtComputingResource.java index a79526a0b15..d7b2af62409 100755 --- a/plugins/hypervisors/kvm/src/com/cloud/hypervisor/kvm/resource/LibvirtComputingResource.java +++ b/plugins/hypervisors/kvm/src/com/cloud/hypervisor/kvm/resource/LibvirtComputingResource.java @@ -2654,7 +2654,7 @@ public class LibvirtComputingResource extends ServerResourceBase implements Serv protected GetStorageStatsAnswer execute(final GetStorageStatsCommand cmd) { try { - KVMStoragePool sp = _storagePoolMgr.getStoragePool(cmd.getPooltype(), cmd.getStorageId()); + KVMStoragePool sp = _storagePoolMgr.getStoragePool(cmd.getPooltype(), cmd.getStorageId(), true); return new GetStorageStatsAnswer(cmd, sp.getCapacity(), sp.getUsed()); } catch (CloudRuntimeException e) { return new GetStorageStatsAnswer(cmd, e.toString()); diff --git a/plugins/hypervisors/kvm/src/com/cloud/hypervisor/kvm/storage/IscsiAdmStorageAdaptor.java b/plugins/hypervisors/kvm/src/com/cloud/hypervisor/kvm/storage/IscsiAdmStorageAdaptor.java index 2ea17e79143..f7a8cf715d0 100644 --- a/plugins/hypervisors/kvm/src/com/cloud/hypervisor/kvm/storage/IscsiAdmStorageAdaptor.java +++ b/plugins/hypervisors/kvm/src/com/cloud/hypervisor/kvm/storage/IscsiAdmStorageAdaptor.java @@ -52,6 +52,11 @@ public class IscsiAdmStorageAdaptor implements StorageAdaptor { return MapStorageUuidToStoragePool.get(uuid); } + @Override + public KVMStoragePool getStoragePool(String uuid, boolean refreshInfo) { + return MapStorageUuidToStoragePool.get(uuid); + } + @Override public boolean deleteStoragePool(String uuid) { return MapStorageUuidToStoragePool.remove(uuid) != null; diff --git a/plugins/hypervisors/kvm/src/com/cloud/hypervisor/kvm/storage/KVMStoragePoolManager.java b/plugins/hypervisors/kvm/src/com/cloud/hypervisor/kvm/storage/KVMStoragePoolManager.java index ab819b25729..583db0f4a36 100644 --- a/plugins/hypervisors/kvm/src/com/cloud/hypervisor/kvm/storage/KVMStoragePoolManager.java +++ b/plugins/hypervisors/kvm/src/com/cloud/hypervisor/kvm/storage/KVMStoragePoolManager.java @@ -195,11 +195,15 @@ public class KVMStoragePoolManager { } public KVMStoragePool getStoragePool(StoragePoolType type, String uuid) { + return this.getStoragePool(type, uuid, false); + } + + public KVMStoragePool getStoragePool(StoragePoolType type, String uuid, boolean refreshInfo) { StorageAdaptor adaptor = getStorageAdaptor(type); KVMStoragePool pool = null; try { - pool = adaptor.getStoragePool(uuid); + pool = adaptor.getStoragePool(uuid, refreshInfo); } catch (Exception e) { StoragePoolInformation info = _storagePools.get(uuid); if (info != null) { diff --git a/plugins/hypervisors/kvm/src/com/cloud/hypervisor/kvm/storage/LibvirtStorageAdaptor.java b/plugins/hypervisors/kvm/src/com/cloud/hypervisor/kvm/storage/LibvirtStorageAdaptor.java index ffd44230d3f..26237ba69b2 100644 --- a/plugins/hypervisors/kvm/src/com/cloud/hypervisor/kvm/storage/LibvirtStorageAdaptor.java +++ b/plugins/hypervisors/kvm/src/com/cloud/hypervisor/kvm/storage/LibvirtStorageAdaptor.java @@ -338,6 +338,11 @@ public class LibvirtStorageAdaptor implements StorageAdaptor { @Override public KVMStoragePool getStoragePool(String uuid) { + return this.getStoragePool(uuid, false); + } + + @Override + public KVMStoragePool getStoragePool(String uuid, boolean refreshInfo) { s_logger.debug("Trying to fetch storage pool " + uuid + " from libvirt"); StoragePool storage = null; try { @@ -383,7 +388,21 @@ public class LibvirtStorageAdaptor implements StorageAdaptor { } } - pool.refresh(); + /** + * On large (RBD) storage pools it can take up to a couple of minutes + * for libvirt to refresh the pool. + * + * Refreshing a storage pool means that libvirt will have to iterate the whole pool + * and fetch information of each volume in there + * + * It is not always required to refresh a pool. So we can control if we want to or not + * + * By default only the getStorageStats call in the LibvirtComputingResource will ask to + * refresh the pool + */ + if (refreshInfo) { + pool.refresh(); + } pool.setCapacity(storage.getInfo().capacity); pool.setUsed(storage.getInfo().allocation); pool.setAvailable(storage.getInfo().available); diff --git a/plugins/hypervisors/kvm/src/com/cloud/hypervisor/kvm/storage/StorageAdaptor.java b/plugins/hypervisors/kvm/src/com/cloud/hypervisor/kvm/storage/StorageAdaptor.java index 38ee3e6ed94..dceb2910c57 100644 --- a/plugins/hypervisors/kvm/src/com/cloud/hypervisor/kvm/storage/StorageAdaptor.java +++ b/plugins/hypervisors/kvm/src/com/cloud/hypervisor/kvm/storage/StorageAdaptor.java @@ -28,6 +28,9 @@ public interface StorageAdaptor { public KVMStoragePool getStoragePool(String uuid); + // Get the storage pool from libvirt, but control if libvirt should refresh the pool (can take a long time) + public KVMStoragePool getStoragePool(String uuid, boolean refreshInfo); + // given disk path (per database) and pool, create new KVMPhysicalDisk, populate // it with info from local disk, and return it public KVMPhysicalDisk getPhysicalDisk(String volumeUuid, KVMStoragePool pool); From d97ad972b41cc60f1a270cd931a304db6d882f17 Mon Sep 17 00:00:00 2001 From: Sanjay Tripathi Date: Thu, 25 Sep 2014 16:01:37 +0530 Subject: [PATCH 050/129] CLOUDSTACK-7373: Incorrect Japanese keyboard mapping with CentOS CLI and windows guestOS on VMware. (cherry picked from commit bdf7d6530593db33636b2fecf18bb2cf4c61d21f) --- systemvm/js/ajaxkeys.js | 28 +++++++++++++++------------- systemvm/js/ajaxviewer.js | 6 +++--- 2 files changed, 18 insertions(+), 16 deletions(-) diff --git a/systemvm/js/ajaxkeys.js b/systemvm/js/ajaxkeys.js index f992c62ed5f..26c29967c61 100644 --- a/systemvm/js/ajaxkeys.js +++ b/systemvm/js/ajaxkeys.js @@ -229,32 +229,32 @@ var keyboardTables = [ {keycode: JS_KEY_ALT, entry : X11_KEY_ALT}, //{keycode: JS_KEY_GRAVE_ACCENT, entry : X11_KEY_GRAVE_ACCENT}, //[192 / 64 = "' @"] - {keycode: 192, entry : 0x5b, browser: "IE"}, - {keycode: 64, entry : 0x5b, guestos: "windows", browser: "Firefox"}, + {keycode: 192, entry : 0x40, guestos: "windows", browser: "IE"}, + {keycode: 64, entry : 0x40, guestos: "windows", browser: "Firefox"}, //{keycode: JS_KEY_ADD, entry : X11_KEY_ADD}, //[187 / 59 = "; +"] - {keycode: 187, entry : 0x3a, browser: "IE"}, + {keycode: 187, entry : 0x3b, guestos: "windows", browser: "IE"}, {keycode: 59, entry : 0x3b, guestos: "windows", browser: "Firefox"}, //{keycode: JS_KEY_OPEN_BRACKET, entry : X11_KEY_OPEN_BRACKET}, //[219 = "[{"] - {keycode: 219, entry : 0x5d, guestos: "windows", browser: "IE"}, - {keycode: 219, entry : 0x5d, guestos: "windows", browser: "Firefox"}, + {keycode: 219, entry : 0x5b, guestos: "windows", browser: "IE"}, + {keycode: 219, entry : 0x5b, guestos: "windows", browser: "Firefox"}, //{keycode: JS_KEY_CLOSE_BRACKET, entry : X11_KEY_CLOSE_BRACKET}, //[221 = "]}"] - {keycode: 221, entry : 0x5c, guestos: "windows", browser: "IE"}, - {keycode: 221, entry : 0x5c, guestos: "windows", browser: "Firefox"}, + {keycode: 221, entry : 0x5d, guestos: "windows", browser: "IE"}, + {keycode: 221, entry : 0x5d, guestos: "windows", browser: "Firefox"}, {keycode: JS_KEY_BACK_SLASH, entry : X11_KEY_BACK_SLASH, guestos: "windows"}, //{keycode: JS_KEY_SINGLE_QUOTE, entry : X11_KEY_SINGLE_QUOTE}, //[222 / 160 = "~^"] - {keycode: 222, entry : 0x3d, browser: "IE"}, - {keycode: 160, entry : 0x3d, guestos: "windows", browser: "Firefox"}, + {keycode: 222, entry : 0x5e, guestos: "windows", browser: "IE"}, + {keycode: 160, entry : 0x5e, guestos: "windows", browser: "Firefox"}, //[173 = "-=" ] specific to Firefox browser {keycode: 173, entry : 0x2d, guestos: "windows", browser: "Firefox"}, {keycode: JS_KEY_COMMA, entry : X11_KEY_COMMA, guestos: "windows"}, {keycode: JS_KEY_PERIOD, entry : X11_KEY_PERIOD, guestos: "windows"}, {keycode: JS_KEY_FORWARD_SLASH, entry : X11_KEY_FORWARD_SLASH, guestos: "windows"}, - {keycode: JS_KEY_DASH, entry : X11_KEY_DASH}, - {keycode: JS_KEY_SEMI_COLON, entry : X11_KEY_SEMI_COLON}, + {keycode: JS_KEY_DASH, entry : X11_KEY_DASH, guestos: "windows"}, + {keycode: JS_KEY_SEMI_COLON, entry : 0x3a, guestos: "windows"}, {keycode: JS_KEY_NUMPAD0, entry : X11_KEY_NUMPAD0, guestos: "windows"}, {keycode: JS_KEY_NUMPAD1, entry : X11_KEY_NUMPAD1, guestos: "windows"}, {keycode: JS_KEY_NUMPAD2, entry : X11_KEY_NUMPAD2, guestos: "windows"}, @@ -276,8 +276,10 @@ var keyboardTables = [ //Caps Lock = 240 {keycode: 240, entry : 0xffe5}, //[186 / 58 = "~^"] - {keycode: 186, entry : 0x22, browser: "IE"}, - {keycode: 58, entry : 0x22, guestos: "windows", browser: "Firefox"}, + {keycode: 186, entry : 0x3a, guestos: "windows", browser: "IE"}, + {keycode: 58, entry : 0x3a, guestos: "windows", browser: "Firefox"}, + //[226 = "_"] + {keycode: 226, entry : 0x5f, guestos: "windows"}, ], keyPress: [ // These mappings are for japanese guestOS. it is recommended that admin should deploy diff --git a/systemvm/js/ajaxviewer.js b/systemvm/js/ajaxviewer.js index 5b5e805ad0b..9e46f7962c1 100644 --- a/systemvm/js/ajaxviewer.js +++ b/systemvm/js/ajaxviewer.js @@ -200,7 +200,7 @@ KeyboardMapper.prototype = { this.mappedInput.push({type : AjaxViewer.KEY_DOWN, code: X11Keysym, modifiers: modifiers}); this.mappedInput.push({type : AjaxViewer.KEY_UP, code: X11Keysym, modifiers: modifiers}); } - } else { + } else if(!(code == 48 && modifiers == AjaxViewer.SHIFT_KEY_MASK) && !(code == 95 && modifiers == 0)){ this.mappedInput.push({type : AjaxViewer.KEY_DOWN, code: code, modifiers: modifiers}); this.mappedInput.push({type : AjaxViewer.KEY_UP, code: code, modifiers: modifiers}); } @@ -239,9 +239,9 @@ KeyboardMapper.prototype = { } // special handling for ALT/CTRL key - if(eventType == AjaxViewer.KEY_UP && (code == AjaxViewer.JS_KEY_ALT || code == code == AjaxViewer.JS_KEY_CTRL)) + if(eventType == AjaxViewer.KEY_UP && (code == AjaxViewer.JS_KEY_ALT || code == code == AjaxViewer.JS_KEY_CTRL)) { this.mappedInput.push({type : eventType, code: this.jsX11KeysymMap[code], modifiers: modifiers}); - + } } else if(eventType == AjaxViewer.KEY_PRESS) { // special handling for * and + key on number pad if(code == AjaxViewer.JS_NUMPAD_MULTIPLY) { From 26ac4dd3959c7574b271c8f1bd03d9ce6aa42f21 Mon Sep 17 00:00:00 2001 From: Jayapal Date: Mon, 29 Sep 2014 17:09:38 +0530 Subject: [PATCH 051/129] CLOUDSTACK-7615: Update log msg to print error msg rather than exception (cherry picked from commit 1d01ee3a60259b2113d14c2890306d7f2e56fbff) --- server/src/com/cloud/network/firewall/FirewallManagerImpl.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/server/src/com/cloud/network/firewall/FirewallManagerImpl.java b/server/src/com/cloud/network/firewall/FirewallManagerImpl.java index 50ac9d12d1b..ddc2f732373 100644 --- a/server/src/com/cloud/network/firewall/FirewallManagerImpl.java +++ b/server/src/com/cloud/network/firewall/FirewallManagerImpl.java @@ -659,7 +659,7 @@ public class FirewallManagerImpl extends ManagerBase implements FirewallService, return false; } } catch (ResourceUnavailableException ex) { - s_logger.warn("Failed to apply firewall rules due to ", ex); + s_logger.warn("Failed to apply firewall rules due to : "+ ex.getMessage()); return false; } From 69d1b44bbfa87bdecc34aac5824b58a9bf4f0293 Mon Sep 17 00:00:00 2001 From: Anthony Xu Date: Mon, 29 Sep 2014 11:24:10 -0700 Subject: [PATCH 052/129] cloudmanagementserver.keystore is corrupted by ant.filters.ReplaceTokens, (cherry picked from commit 055fdd5048cea691e82aa2cb0b33d2d2656afe9b) --- client/pom.xml | 8 +------- ...r.keystore.in => cloudmanagementserver.keystore} | Bin 2 files changed, 1 insertion(+), 7 deletions(-) rename client/tomcatconf/{cloudmanagementserver.keystore.in => cloudmanagementserver.keystore} (100%) diff --git a/client/pom.xml b/client/pom.xml index dccf18d2d4d..a0fe596677e 100644 --- a/client/pom.xml +++ b/client/pom.xml @@ -485,14 +485,8 @@ - + - - - - - - diff --git a/client/tomcatconf/cloudmanagementserver.keystore.in b/client/tomcatconf/cloudmanagementserver.keystore similarity index 100% rename from client/tomcatconf/cloudmanagementserver.keystore.in rename to client/tomcatconf/cloudmanagementserver.keystore From f2b6aa4fe6f628bb7d740fd678d66dd762fd0515 Mon Sep 17 00:00:00 2001 From: Brian Federle Date: Mon, 29 Sep 2014 12:58:40 -0700 Subject: [PATCH 053/129] CLOUDSTACK-7647: Fix 'isReverse' checkboxes which are checked by default (cherry picked from commit ef4b5d41b7dd9ba16afd04c7716bada4a4721f79) --- ui/scripts/ui/dialog.js | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/ui/scripts/ui/dialog.js b/ui/scripts/ui/dialog.js index 950d596ca50..2bd0797a927 100644 --- a/ui/scripts/ui/dialog.js +++ b/ui/scripts/ui/dialog.js @@ -225,8 +225,11 @@ if ($dependsOn.is('[type=checkbox]')) { var isReverse = false; - if (args.form.fields[dependsOn]) + if (args.form.fields[dependsOn]) { isReverse = args.form.fields[dependsOn].isReverse; + isChecked = args.form.fields[dependsOn].isChecked; + } + // Checkbox $dependsOn.bind('click', function(event) { @@ -260,6 +263,10 @@ // Show fields by default if it is reverse checkbox if (isReverse) { $dependsOn.click(); + + if (isChecked) { + $dependsOn.attr('checked', true); + } } } } From e338cdd1ed5ca370ca24b5e715131d91bd24675a Mon Sep 17 00:00:00 2001 From: Likitha Shetty Date: Tue, 23 Sep 2014 13:32:06 +0530 Subject: [PATCH 054/129] BUG-ID: CLOUDSTACK-7652. [VMware] 'SOAPFaultException: The object has already been deleted or has not been completely created' exceptions. If CCP thread local context which is used to handle connections to a vCenter is being re-used, validate that the context corresponds to the right vCenter API session. (cherry picked from commit 6b069703666c33636a545e7093eccf04efff88e7) --- .../vmware/resource/VmwareResource.java | 20 +++++++++++++------ 1 file changed, 14 insertions(+), 6 deletions(-) diff --git a/plugins/hypervisors/vmware/src/com/cloud/hypervisor/vmware/resource/VmwareResource.java b/plugins/hypervisors/vmware/src/com/cloud/hypervisor/vmware/resource/VmwareResource.java index 489cf434c4f..226a884bc45 100755 --- a/plugins/hypervisors/vmware/src/com/cloud/hypervisor/vmware/resource/VmwareResource.java +++ b/plugins/hypervisors/vmware/src/com/cloud/hypervisor/vmware/resource/VmwareResource.java @@ -239,6 +239,7 @@ import com.cloud.hypervisor.vmware.mo.VmwareHypervisorHost; import com.cloud.hypervisor.vmware.mo.VmwareHypervisorHostNetworkSummary; import com.cloud.hypervisor.vmware.mo.VmwareHypervisorHostResourceSummary; import com.cloud.hypervisor.vmware.util.VmwareContext; +import com.cloud.hypervisor.vmware.util.VmwareContextPool; import com.cloud.hypervisor.vmware.util.VmwareHelper; import com.cloud.network.Networks; import com.cloud.network.Networks.BroadcastDomainType; @@ -4794,14 +4795,21 @@ public class VmwareResource implements StoragePoolResource, ServerResource, Vmwa VmwareContext context = null; if(s_serviceContext.get() != null) { context = s_serviceContext.get(); - if (context.validate()) { - if (s_logger.isTraceEnabled()) { - s_logger.trace("ThreadLocal context is still valid, just reuse"); + String poolKey = VmwareContextPool.composePoolKey(_vCenterAddress, _username); + // Before re-using the thread local context, ensure it corresponds to the right vCenter API session and that it is valid to make calls. + if(context.getPoolKey().equals(poolKey)) { + if (context.validate()) { + if (s_logger.isTraceEnabled()) { + s_logger.trace("ThreadLocal context is still valid, just reuse"); + } + return context; + } else { + s_logger.info("Validation of the context failed, dispose and use a new one"); + invalidateServiceContext(context); } - return context; } else { - s_logger.info("Validation of the context failed, dispose and use a new one"); - invalidateServiceContext(context); + // Exisitng ThreadLocal context corresponds to a different vCenter API session. Why has it not been recycled? + s_logger.warn("ThreadLocal VMware context: " + poolKey + " doesn't correspond to the right vCenter. Expected VMware context: " + context.getPoolKey()); } } try { From 9f653d740443a6205bd1e7c3be26e860f90f6b61 Mon Sep 17 00:00:00 2001 From: Likitha Shetty Date: Mon, 8 Sep 2014 15:42:48 +0530 Subject: [PATCH 055/129] BUG-ID: CLOUDSTACK-7653. VM's are not getting deleted from hypervisor after deleting from UI when using zone wide primary storage. While expunging a volume, CS chooses the endpoint to perform delete operation by selecting any host that has the storage containing the volume mounted on it. Instead, if the volume to be deleted is attached to a VM, the endpoint chosen by CCP should be the host that contains the VM. (cherry picked from commit f1e3e83bbf763860dd33a18c36618b4714bf0dbe) --- .../engine/subsystem/api/storage/StorageAction.java | 3 ++- .../storage/endpoint/DefaultEndPointSelector.java | 11 +++++++++++ .../storage/resource/VmwareStorageProcessor.java | 9 ++++++--- .../driver/CloudStackPrimaryDataStoreDriverImpl.java | 7 ++++++- 4 files changed, 25 insertions(+), 5 deletions(-) diff --git a/engine/api/src/org/apache/cloudstack/engine/subsystem/api/storage/StorageAction.java b/engine/api/src/org/apache/cloudstack/engine/subsystem/api/storage/StorageAction.java index 965df84c2dd..dc93f4aa41e 100644 --- a/engine/api/src/org/apache/cloudstack/engine/subsystem/api/storage/StorageAction.java +++ b/engine/api/src/org/apache/cloudstack/engine/subsystem/api/storage/StorageAction.java @@ -22,5 +22,6 @@ public enum StorageAction { TAKESNAPSHOT, BACKUPSNAPSHOT, DELETESNAPSHOT, - MIGRATEVOLUME + MIGRATEVOLUME, + DELETEVOLUME } diff --git a/engine/storage/src/org/apache/cloudstack/storage/endpoint/DefaultEndPointSelector.java b/engine/storage/src/org/apache/cloudstack/storage/endpoint/DefaultEndPointSelector.java index 0a867f6291b..c620c40d981 100644 --- a/engine/storage/src/org/apache/cloudstack/storage/endpoint/DefaultEndPointSelector.java +++ b/engine/storage/src/org/apache/cloudstack/storage/endpoint/DefaultEndPointSelector.java @@ -302,6 +302,17 @@ public class DefaultEndPointSelector implements EndPointSelector { return getEndPointFromHostId(hostId); } } + } else if (action == StorageAction.DELETEVOLUME) { + VolumeInfo volume = (VolumeInfo)object; + if (volume.getHypervisorType() == Hypervisor.HypervisorType.VMware) { + VirtualMachine vm = volume.getAttachedVM(); + if (vm != null) { + Long hostId = vm.getHostId() != null ? vm.getHostId() : vm.getLastHostId(); + if (hostId != null) { + return getEndPointFromHostId(hostId); + } + } + } } return select(object); } diff --git a/plugins/hypervisors/vmware/src/com/cloud/storage/resource/VmwareStorageProcessor.java b/plugins/hypervisors/vmware/src/com/cloud/storage/resource/VmwareStorageProcessor.java index b225e39bc0e..8a4ba08c8d9 100644 --- a/plugins/hypervisors/vmware/src/com/cloud/storage/resource/VmwareStorageProcessor.java +++ b/plugins/hypervisors/vmware/src/com/cloud/storage/resource/VmwareStorageProcessor.java @@ -1594,9 +1594,12 @@ public class VmwareStorageProcessor implements StorageProcessor { String vmName = vol.getVmName(); if (vmName != null) { - // Find VM under the datacenter and not just the cluster. - DatacenterMO dcMo = new DatacenterMO(context, morDc); - VirtualMachineMO vmMo = dcMo.findVm(vmName); + VirtualMachineMO vmMo = clusterMo.findVmOnHyperHost(vmName); + if (vmMo == null) { + // Volume might be on a zone-wide storage pool, look for VM in datacenter + DatacenterMO dcMo = new DatacenterMO(context, morDc); + vmMo = dcMo.findVm(vmName); + } if (vmMo != null) { if (s_logger.isInfoEnabled()) { s_logger.info("Destroy root volume and VM itself. vmName " + vmName); diff --git a/plugins/storage/volume/default/src/org/apache/cloudstack/storage/datastore/driver/CloudStackPrimaryDataStoreDriverImpl.java b/plugins/storage/volume/default/src/org/apache/cloudstack/storage/datastore/driver/CloudStackPrimaryDataStoreDriverImpl.java index d58c0b15d11..bcc06b021b6 100644 --- a/plugins/storage/volume/default/src/org/apache/cloudstack/storage/datastore/driver/CloudStackPrimaryDataStoreDriverImpl.java +++ b/plugins/storage/volume/default/src/org/apache/cloudstack/storage/datastore/driver/CloudStackPrimaryDataStoreDriverImpl.java @@ -204,7 +204,12 @@ public class CloudStackPrimaryDataStoreDriverImpl implements PrimaryDataStoreDri CommandResult result = new CommandResult(); try { - EndPoint ep = epSelector.select(data); + EndPoint ep = null; + if (data.getType() == DataObjectType.VOLUME) { + ep = epSelector.select(data, StorageAction.DELETEVOLUME); + } else { + ep = epSelector.select(data); + } if (ep == null) { String errMsg = "No remote endpoint to send DeleteCommand, check if host or ssvm is down?"; s_logger.error(errMsg); From 26b501b5e47579919892b6810bf965ac8b0e6840 Mon Sep 17 00:00:00 2001 From: Kishan Kavala Date: Tue, 30 Sep 2014 12:02:56 +0530 Subject: [PATCH 056/129] CLOUDSTACK-7197: Added new system template DB changes in 4.5 upgrade. Removed 4.3 DB upgrade code for system template (cherry picked from commit d1e0a8972b30b25e26339abf19d277c3b93fb7e6) --- .../cloud/upgrade/dao/Upgrade421to430.java | 136 ------------------ .../cloud/upgrade/dao/Upgrade441to450.java | 132 +++++++++++++++++ 2 files changed, 132 insertions(+), 136 deletions(-) diff --git a/engine/schema/src/com/cloud/upgrade/dao/Upgrade421to430.java b/engine/schema/src/com/cloud/upgrade/dao/Upgrade421to430.java index 889cad457af..fef29dd3d9d 100644 --- a/engine/schema/src/com/cloud/upgrade/dao/Upgrade421to430.java +++ b/engine/schema/src/com/cloud/upgrade/dao/Upgrade421to430.java @@ -24,15 +24,10 @@ import java.sql.PreparedStatement; import java.sql.ResultSet; import java.sql.SQLException; import java.sql.Types; -import java.util.HashMap; -import java.util.HashSet; -import java.util.Map; -import java.util.Set; import org.apache.commons.lang.StringUtils; import org.apache.log4j.Logger; -import com.cloud.hypervisor.Hypervisor; import com.cloud.utils.crypt.DBEncryptionUtil; import com.cloud.utils.exception.CloudRuntimeException; import com.cloud.utils.script.Script; @@ -70,7 +65,6 @@ public class Upgrade421to430 implements DbUpgrade { encryptLdapConfigParams(conn); encryptImageStoreDetails(conn); upgradeMemoryOfSsvmOffering(conn); - updateSystemVmTemplates(conn); } private void upgradeMemoryOfSsvmOffering(Connection conn) { @@ -196,136 +190,6 @@ public class Upgrade421to430 implements DbUpgrade { } - private void updateSystemVmTemplates(Connection conn) { - PreparedStatement pstmt = null; - ResultSet rs = null; - s_logger.debug("Updating System Vm template IDs"); - try{ - //Get all hypervisors in use - Set hypervisorsListInUse = new HashSet(); - try { - pstmt = conn.prepareStatement("select distinct(hypervisor_type) from `cloud`.`cluster` where removed is null"); - rs = pstmt.executeQuery(); - while(rs.next()){ - switch (Hypervisor.HypervisorType.getType(rs.getString(1))) { - case XenServer: hypervisorsListInUse.add(Hypervisor.HypervisorType.XenServer); - break; - case KVM: hypervisorsListInUse.add(Hypervisor.HypervisorType.KVM); - break; - case VMware: hypervisorsListInUse.add(Hypervisor.HypervisorType.VMware); - break; - case Hyperv: hypervisorsListInUse.add(Hypervisor.HypervisorType.Hyperv); - break; - case LXC: hypervisorsListInUse.add(Hypervisor.HypervisorType.LXC); - break; - } - } - } catch (SQLException e) { - throw new CloudRuntimeException("Error while listing hypervisors in use", e); - } - - Map NewTemplateNameList = new HashMap(){ - { put(Hypervisor.HypervisorType.XenServer, "systemvm-xenserver-4.3"); - put(Hypervisor.HypervisorType.VMware, "systemvm-vmware-4.3"); - put(Hypervisor.HypervisorType.KVM, "systemvm-kvm-4.3"); - put(Hypervisor.HypervisorType.LXC, "systemvm-lxc-4.3"); - put(Hypervisor.HypervisorType.Hyperv, "systemvm-hyperv-4.3"); - } - }; - - Map routerTemplateConfigurationNames = new HashMap(){ - { put(Hypervisor.HypervisorType.XenServer, "router.template.xen"); - put(Hypervisor.HypervisorType.VMware, "router.template.vmware"); - put(Hypervisor.HypervisorType.KVM, "router.template.kvm"); - put(Hypervisor.HypervisorType.LXC, "router.template.lxc"); - put(Hypervisor.HypervisorType.Hyperv, "router.template.hyperv"); - } - }; - - Map newTemplateUrl = new HashMap(){ - { put(Hypervisor.HypervisorType.XenServer, "http://download.cloud.com/templates/4.3/systemvm64template-2014-01-14-master-xen.vhd.bz2"); - put(Hypervisor.HypervisorType.VMware, "http://download.cloud.com/templates/4.3/systemvm64template-2014-01-14-master-vmware.ova"); - put(Hypervisor.HypervisorType.KVM, "http://download.cloud.com/templates/4.3/systemvm64template-2014-01-14-master-kvm.qcow2.bz2"); - put(Hypervisor.HypervisorType.LXC, "http://download.cloud.com/templates/4.3/systemvm64template-2014-01-14-master-kvm.qcow2.bz2"); - put(Hypervisor.HypervisorType.Hyperv, "http://download.cloud.com/templates/4.3/systemvm64template-2013-12-23-hyperv.vhd.bz2"); - } - }; - - Map newTemplateChecksum = new HashMap(){ - { put(Hypervisor.HypervisorType.XenServer, "74b92f031cc5c2089ee89efb81344dcf"); - put(Hypervisor.HypervisorType.VMware, "ef593a061f3b7594ab0bfd9b0ed0a0d4"); - put(Hypervisor.HypervisorType.KVM, "85a1bed07bf43cbf022451cb2ecae4ff"); - put(Hypervisor.HypervisorType.LXC, "85a1bed07bf43cbf022451cb2ecae4ff"); - put(Hypervisor.HypervisorType.Hyperv, "5df45ee6ebe1b703a8805f4e1f4d0818"); - } - }; - - for (Map.Entry hypervisorAndTemplateName : NewTemplateNameList.entrySet()){ - s_logger.debug("Updating " + hypervisorAndTemplateName.getKey() + " System Vms"); - try { - //Get 4.3.0 system Vm template Id for corresponding hypervisor - pstmt = conn.prepareStatement("select id from `cloud`.`vm_template` where name = ? and removed is null order by id desc limit 1"); - pstmt.setString(1, hypervisorAndTemplateName.getValue()); - rs = pstmt.executeQuery(); - if(rs.next()){ - long templateId = rs.getLong(1); - rs.close(); - pstmt.close(); -// // Mark the old system templates as removed -// pstmt = conn.prepareStatement("UPDATE `cloud`.`vm_template` SET removed = now() WHERE hypervisor_type = ? AND type = 'SYSTEM' AND removed is null"); -// pstmt.setString(1, hypervisorAndTemplateName.getKey().toString()); -// pstmt.executeUpdate(); -// pstmt.close(); - // change template type to SYSTEM - pstmt = conn.prepareStatement("update `cloud`.`vm_template` set type='SYSTEM' where id = ?"); - pstmt.setLong(1, templateId); - pstmt.executeUpdate(); - pstmt.close(); - // update templete ID of system Vms - pstmt = conn.prepareStatement("update `cloud`.`vm_instance` set vm_template_id = ? where type <> 'User' and hypervisor_type = ?"); - pstmt.setLong(1, templateId); - pstmt.setString(2, hypervisorAndTemplateName.getKey().toString()); - pstmt.executeUpdate(); - pstmt.close(); - // Change value of global configuration parameter router.template.* for the corresponding hypervisor - pstmt = conn.prepareStatement("UPDATE `cloud`.`configuration` SET value = ? WHERE name = ?"); - pstmt.setString(1, hypervisorAndTemplateName.getValue()); - pstmt.setString(2, routerTemplateConfigurationNames.get(hypervisorAndTemplateName.getKey())); - pstmt.executeUpdate(); - pstmt.close(); - } else { - if (hypervisorsListInUse.contains(hypervisorAndTemplateName.getKey())){ - throw new CloudRuntimeException("4.3.0 " + hypervisorAndTemplateName.getKey() + " SystemVm template not found. Cannot upgrade system Vms"); - } else { - s_logger.warn("4.3.0 " + hypervisorAndTemplateName.getKey() + " SystemVm template not found. " + hypervisorAndTemplateName.getKey() + " hypervisor is not used, so not failing upgrade"); - // Update the latest template URLs for corresponding hypervisor - pstmt = conn.prepareStatement("UPDATE `cloud`.`vm_template` SET url = ? , checksum = ? WHERE hypervisor_type = ? AND type = 'SYSTEM' AND removed is null order by id desc limit 1"); - pstmt.setString(1, newTemplateUrl.get(hypervisorAndTemplateName.getKey())); - pstmt.setString(2, newTemplateChecksum.get(hypervisorAndTemplateName.getKey())); - pstmt.setString(3, hypervisorAndTemplateName.getKey().toString()); - pstmt.executeUpdate(); - pstmt.close(); - } - } - } catch (SQLException e) { - throw new CloudRuntimeException("Error while updating "+ hypervisorAndTemplateName.getKey() +" systemVm template", e); - } - } - s_logger.debug("Updating System Vm Template IDs Complete"); - } finally { - try { - if (rs != null) { - rs.close(); - } - - if (pstmt != null) { - pstmt.close(); - } - } catch (SQLException e) { - } - } - } - private void encryptImageStoreDetails(Connection conn) { s_logger.debug("Encrypting image store details"); PreparedStatement pstmt = null; diff --git a/engine/schema/src/com/cloud/upgrade/dao/Upgrade441to450.java b/engine/schema/src/com/cloud/upgrade/dao/Upgrade441to450.java index 21b2e135d81..cde661bbdda 100644 --- a/engine/schema/src/com/cloud/upgrade/dao/Upgrade441to450.java +++ b/engine/schema/src/com/cloud/upgrade/dao/Upgrade441to450.java @@ -19,11 +19,17 @@ package com.cloud.upgrade.dao; import java.io.File; import java.sql.Connection; +import java.sql.PreparedStatement; +import java.sql.ResultSet; +import java.sql.SQLException; import java.util.ArrayList; import java.util.HashMap; +import java.util.HashSet; import java.util.List; import java.util.Map; +import java.util.Set; +import com.cloud.hypervisor.Hypervisor; import org.apache.log4j.Logger; import com.cloud.utils.exception.CloudRuntimeException; @@ -59,6 +65,7 @@ public class Upgrade441to450 implements DbUpgrade { @Override public void performDataMigration(Connection conn) { + updateSystemVmTemplates(conn); dropInvalidKeyFromStoragePoolTable(conn); dropDuplicatedForeignKeyFromAsyncJobTable(conn); } @@ -74,6 +81,131 @@ public class Upgrade441to450 implements DbUpgrade { return new File[] {new File(script)}; } + private void updateSystemVmTemplates(Connection conn) { + PreparedStatement pstmt = null; + ResultSet rs = null; + s_logger.debug("Updating System Vm template IDs"); + try{ + //Get all hypervisors in use + Set hypervisorsListInUse = new HashSet(); + try { + pstmt = conn.prepareStatement("select distinct(hypervisor_type) from `cloud`.`cluster` where removed is null"); + rs = pstmt.executeQuery(); + while(rs.next()){ + switch (Hypervisor.HypervisorType.getType(rs.getString(1))) { + case XenServer: hypervisorsListInUse.add(Hypervisor.HypervisorType.XenServer); + break; + case KVM: hypervisorsListInUse.add(Hypervisor.HypervisorType.KVM); + break; + case VMware: hypervisorsListInUse.add(Hypervisor.HypervisorType.VMware); + break; + case Hyperv: hypervisorsListInUse.add(Hypervisor.HypervisorType.Hyperv); + break; + case LXC: hypervisorsListInUse.add(Hypervisor.HypervisorType.LXC); + break; + } + } + } catch (SQLException e) { + throw new CloudRuntimeException("Error while listing hypervisors in use", e); + } + + Map NewTemplateNameList = new HashMap(){ + { put(Hypervisor.HypervisorType.XenServer, "systemvm-xenserver-4.5"); + put(Hypervisor.HypervisorType.VMware, "systemvm-vmware-4.5"); + put(Hypervisor.HypervisorType.KVM, "systemvm-kvm-4.5"); + put(Hypervisor.HypervisorType.LXC, "systemvm-lxc-4.5"); + put(Hypervisor.HypervisorType.Hyperv, "systemvm-hyperv-4.5"); + } + }; + + Map routerTemplateConfigurationNames = new HashMap(){ + { put(Hypervisor.HypervisorType.XenServer, "router.template.xen"); + put(Hypervisor.HypervisorType.VMware, "router.template.vmware"); + put(Hypervisor.HypervisorType.KVM, "router.template.kvm"); + put(Hypervisor.HypervisorType.LXC, "router.template.lxc"); + put(Hypervisor.HypervisorType.Hyperv, "router.template.hyperv"); + } + }; + + Map newTemplateUrl = new HashMap(){ + { put(Hypervisor.HypervisorType.XenServer, "http://download.cloud.com/templates/4.5/systemvm64template-4.5-xen.vhd.bz2"); + put(Hypervisor.HypervisorType.VMware, "http://download.cloud.com/templates/4.5/systemvm64template-4.5-vmware.ova"); + put(Hypervisor.HypervisorType.KVM, "http://download.cloud.com/templates/4.5/systemvm64template-4.5-kvm.qcow2.bz2"); + put(Hypervisor.HypervisorType.LXC, "http://download.cloud.com/templates/4.5/systemvm64template-4.5-kvm.qcow2.bz2"); + put(Hypervisor.HypervisorType.Hyperv, "http://download.cloud.com/templates/4.5/systemvm64template-4.5-hyperv.vhd.zip"); + } + }; + + Map newTemplateChecksum = new HashMap(){ + { put(Hypervisor.HypervisorType.XenServer, "2b15ab4401c2d655264732d3fc600241"); + put(Hypervisor.HypervisorType.VMware, "3106a79a4ce66cd7f6a7c50e93f2db57"); + put(Hypervisor.HypervisorType.KVM, "aa9f501fecd3de1daeb9e2f357f6f002"); + put(Hypervisor.HypervisorType.LXC, "aa9f501fecd3de1daeb9e2f357f6f002"); + put(Hypervisor.HypervisorType.Hyperv, "70bd30ea02ee9ed67d2c6b85c179cee9"); + } + }; + + for (Map.Entry hypervisorAndTemplateName : NewTemplateNameList.entrySet()){ + s_logger.debug("Updating " + hypervisorAndTemplateName.getKey() + " System Vms"); + try { + //Get 4.5.0 system Vm template Id for corresponding hypervisor + pstmt = conn.prepareStatement("select id from `cloud`.`vm_template` where name = ? and removed is null order by id desc limit 1"); + pstmt.setString(1, hypervisorAndTemplateName.getValue()); + rs = pstmt.executeQuery(); + if(rs.next()){ + long templateId = rs.getLong(1); + rs.close(); + pstmt.close(); + pstmt = conn.prepareStatement("update `cloud`.`vm_template` set type='SYSTEM' where id = ?"); + pstmt.setLong(1, templateId); + pstmt.executeUpdate(); + pstmt.close(); + // update templete ID of system Vms + pstmt = conn.prepareStatement("update `cloud`.`vm_instance` set vm_template_id = ? where type <> 'User' and hypervisor_type = ?"); + pstmt.setLong(1, templateId); + pstmt.setString(2, hypervisorAndTemplateName.getKey().toString()); + pstmt.executeUpdate(); + pstmt.close(); + // Change value of global configuration parameter router.template.* for the corresponding hypervisor + pstmt = conn.prepareStatement("UPDATE `cloud`.`configuration` SET value = ? WHERE name = ?"); + pstmt.setString(1, hypervisorAndTemplateName.getValue()); + pstmt.setString(2, routerTemplateConfigurationNames.get(hypervisorAndTemplateName.getKey())); + pstmt.executeUpdate(); + pstmt.close(); + } else { + if (hypervisorsListInUse.contains(hypervisorAndTemplateName.getKey())){ + throw new CloudRuntimeException("4.5.0 " + hypervisorAndTemplateName.getKey() + " SystemVm template not found. Cannot upgrade system Vms"); + } else { + s_logger.warn("4.5.0 " + hypervisorAndTemplateName.getKey() + " SystemVm template not found. " + hypervisorAndTemplateName.getKey() + " hypervisor is not used, so not failing upgrade"); + // Update the latest template URLs for corresponding hypervisor + pstmt = conn.prepareStatement("UPDATE `cloud`.`vm_template` SET url = ? , checksum = ? WHERE hypervisor_type = ? AND type = 'SYSTEM' AND removed is null order by id desc limit 1"); + pstmt.setString(1, newTemplateUrl.get(hypervisorAndTemplateName.getKey())); + pstmt.setString(2, newTemplateChecksum.get(hypervisorAndTemplateName.getKey())); + pstmt.setString(3, hypervisorAndTemplateName.getKey().toString()); + pstmt.executeUpdate(); + pstmt.close(); + } + } + } catch (SQLException e) { + throw new CloudRuntimeException("Error while updating "+ hypervisorAndTemplateName.getKey() +" systemVm template", e); + } + } + s_logger.debug("Updating System Vm Template IDs Complete"); + } finally { + try { + if (rs != null) { + rs.close(); + } + + if (pstmt != null) { + pstmt.close(); + } + } catch (SQLException e) { + } + } + } + + private void dropInvalidKeyFromStoragePoolTable(Connection conn) { HashMap> uniqueKeys = new HashMap>(); List keys = new ArrayList(); From ee23be1942001ab732cfb3ad50fa24163cb88a48 Mon Sep 17 00:00:00 2001 From: Anthony Xu Date: Tue, 30 Sep 2014 12:34:32 -0700 Subject: [PATCH 057/129] when system VM ping times out, stop system VM (cherry picked from commit 847e1e47aee6b4edeb0265a1a4d3d9a12ffde11d) --- .../com/cloud/agent/manager/AgentManagerImpl.java | 4 ++-- .../consoleproxy/ConsoleProxyManagerImpl.java | 1 + .../secondary/SecondaryStorageListener.java | 1 + .../secondary/SecondaryStorageVmManager.java | 3 +++ .../SecondaryStorageManagerImpl.java | 15 +++++++++++++++ 5 files changed, 22 insertions(+), 2 deletions(-) diff --git a/engine/orchestration/src/com/cloud/agent/manager/AgentManagerImpl.java b/engine/orchestration/src/com/cloud/agent/manager/AgentManagerImpl.java index c6664d951ba..31ef8be4b0c 100755 --- a/engine/orchestration/src/com/cloud/agent/manager/AgentManagerImpl.java +++ b/engine/orchestration/src/com/cloud/agent/manager/AgentManagerImpl.java @@ -775,7 +775,7 @@ public class AgentManagerImpl extends ManagerBase implements AgentManager, Handl } if (s_logger.isDebugEnabled()) { - s_logger.debug("The next status of agent " + hostId + "is " + nextStatus + ", current status is " + currentStatus); + s_logger.debug("The next status of agent " + hostId + " is " + nextStatus + ", current status is " + currentStatus); } } } @@ -1513,7 +1513,7 @@ public class AgentManagerImpl extends ManagerBase implements AgentManager, Handl || host.getType() == Host.Type.SecondaryStorageCmdExecutor)) { s_logger.warn("Disconnect agent for CPVM/SSVM due to physical connection close. host: " + host.getId()); - disconnectWithoutInvestigation(agentId, Event.ShutdownRequested); + disconnectWithoutInvestigation(agentId, Event.PingTimeout); } else { status_logger.debug("Ping timeout for host " + agentId + ", do invstigation"); disconnectWithInvestigation(agentId, Event.PingTimeout); diff --git a/server/src/com/cloud/consoleproxy/ConsoleProxyManagerImpl.java b/server/src/com/cloud/consoleproxy/ConsoleProxyManagerImpl.java index 14d782a47ef..825af39e9fe 100755 --- a/server/src/com/cloud/consoleproxy/ConsoleProxyManagerImpl.java +++ b/server/src/com/cloud/consoleproxy/ConsoleProxyManagerImpl.java @@ -324,6 +324,7 @@ public class ConsoleProxyManagerImpl extends ManagerBase implements ConsoleProxy final ConsoleProxyVO proxy = _consoleProxyDao.findById(proxyVmId); if (proxy != null) { + stopProxy(proxyVmId); // Disable this feature for now, as it conflicts // with // the case of allowing user to reboot console proxy diff --git a/server/src/com/cloud/storage/secondary/SecondaryStorageListener.java b/server/src/com/cloud/storage/secondary/SecondaryStorageListener.java index 43613e7f9ca..81a42400c29 100755 --- a/server/src/com/cloud/storage/secondary/SecondaryStorageListener.java +++ b/server/src/com/cloud/storage/secondary/SecondaryStorageListener.java @@ -88,6 +88,7 @@ public class SecondaryStorageListener implements Listener { @Override public boolean processDisconnect(long agentId, Status state) { + _ssVmMgr.onAgentDisconnect(agentId, state); return true; } diff --git a/server/src/com/cloud/storage/secondary/SecondaryStorageVmManager.java b/server/src/com/cloud/storage/secondary/SecondaryStorageVmManager.java index 3b32c851f0a..f2f5aa080b4 100755 --- a/server/src/com/cloud/storage/secondary/SecondaryStorageVmManager.java +++ b/server/src/com/cloud/storage/secondary/SecondaryStorageVmManager.java @@ -21,6 +21,7 @@ import java.util.List; import com.cloud.agent.api.Command; import com.cloud.agent.api.StartupCommand; import com.cloud.host.HostVO; +import com.cloud.host.Status; import com.cloud.utils.Pair; import com.cloud.utils.component.Manager; import com.cloud.vm.SecondaryStorageVmVO; @@ -45,6 +46,8 @@ public interface SecondaryStorageVmManager extends Manager { public void onAgentConnect(Long dcId, StartupCommand cmd); + public void onAgentDisconnect(long agentId, Status state); + public boolean generateFirewallConfiguration(Long agentId); public boolean generateVMSetupCommand(Long hostId); diff --git a/services/secondary-storage/controller/src/org/apache/cloudstack/secondarystorage/SecondaryStorageManagerImpl.java b/services/secondary-storage/controller/src/org/apache/cloudstack/secondarystorage/SecondaryStorageManagerImpl.java index 1ddc8f5e950..9288be479a4 100755 --- a/services/secondary-storage/controller/src/org/apache/cloudstack/secondarystorage/SecondaryStorageManagerImpl.java +++ b/services/secondary-storage/controller/src/org/apache/cloudstack/secondarystorage/SecondaryStorageManagerImpl.java @@ -78,6 +78,7 @@ import com.cloud.exception.StorageUnavailableException; import com.cloud.host.Host; import com.cloud.host.HostVO; import com.cloud.host.Status; +import com.cloud.host.Host.Type; import com.cloud.host.dao.HostDao; import com.cloud.hypervisor.Hypervisor.HypervisorType; import com.cloud.info.RunningHostCountInfo; @@ -998,6 +999,20 @@ public class SecondaryStorageManagerImpl extends ManagerBase implements Secondar public void onAgentConnect(Long dcId, StartupCommand cmd) { } + @Override + public void onAgentDisconnect(long agentId, Status state) { + HostVO host = _hostDao.findById(agentId); + if (host == null || !Type.SecondaryStorageVM.equals(host.getType())) { + return; + } + if (state == Status.Alert || state == Status.Disconnected) { + SecondaryStorageVmVO ssvm = getSSVMfromHost(host); + if ( ssvm != null ) { + stopSecStorageVm(ssvm.getId()); + } + } + } + private String getAllocLockName() { // to improve security, it may be better to return a unique mashed // name(for example MD5 hashed) From e1d554c35284710443b0afde5a4cf9d53aed0b69 Mon Sep 17 00:00:00 2001 From: Jessica Wang Date: Tue, 30 Sep 2014 12:54:16 -0700 Subject: [PATCH 058/129] Revert "CLOUDSTACK-7647: Fix 'isReverse' checkboxes which are checked by default" This reverts commit ef4b5d41b7dd9ba16afd04c7716bada4a4721f79. (cherry picked from commit 38bd1b934ef770e8a2993c8f42b3fff03484f266) --- ui/scripts/ui/dialog.js | 9 +-------- 1 file changed, 1 insertion(+), 8 deletions(-) diff --git a/ui/scripts/ui/dialog.js b/ui/scripts/ui/dialog.js index 2bd0797a927..950d596ca50 100644 --- a/ui/scripts/ui/dialog.js +++ b/ui/scripts/ui/dialog.js @@ -225,11 +225,8 @@ if ($dependsOn.is('[type=checkbox]')) { var isReverse = false; - if (args.form.fields[dependsOn]) { + if (args.form.fields[dependsOn]) isReverse = args.form.fields[dependsOn].isReverse; - isChecked = args.form.fields[dependsOn].isChecked; - } - // Checkbox $dependsOn.bind('click', function(event) { @@ -263,10 +260,6 @@ // Show fields by default if it is reverse checkbox if (isReverse) { $dependsOn.click(); - - if (isChecked) { - $dependsOn.attr('checked', true); - } } } } From 09cc23841bd76b3173529c889c59b6a783bfc1e4 Mon Sep 17 00:00:00 2001 From: Anthony Xu Date: Tue, 30 Sep 2014 14:48:44 -0700 Subject: [PATCH 059/129] add guest OS Centos 7 and Oracle Linux 7 (cherry picked from commit fe1a53b0e07d0f4907fd5c1c892bae832b02d19a) --- setup/db/db/schema-441to450.sql | 36 ++++++++++++++++++++------------- 1 file changed, 22 insertions(+), 14 deletions(-) diff --git a/setup/db/db/schema-441to450.sql b/setup/db/db/schema-441to450.sql index 39ac88c678b..41a67556480 100644 --- a/setup/db/db/schema-441to450.sql +++ b/setup/db/db/schema-441to450.sql @@ -548,21 +548,25 @@ CREATE VIEW `cloud`.`domain_router_view` AS and async_job.job_status = 0; -INSERT IGNORE INTO `cloud`.`guest_os` (id, uuid, category_id, display_name, created) VALUES (231, UUID(), 1, 'CentOS 5.10 (32-bit)', utc_timestamp()); -INSERT IGNORE INTO `cloud`.`guest_os` (id, uuid, category_id, display_name, created) VALUES (232, UUID(), 1, 'CentOS 5.10 (64-bit)', utc_timestamp()); -INSERT IGNORE INTO `cloud`.`guest_os` (id, uuid, category_id, display_name, created) VALUES (233, UUID(), 3, 'Oracle Enterprise Linux 5.10 (32-bit)', utc_timestamp()); -INSERT IGNORE INTO `cloud`.`guest_os` (id, uuid, category_id, display_name, created) VALUES (234, UUID(), 3, 'Oracle Enterprise Linux 5.10 (64-bit)', utc_timestamp()); -INSERT IGNORE INTO `cloud`.`guest_os` (id, uuid, category_id, display_name, created) VALUES (235, UUID(), 3, 'Oracle Enterprise Linux 6.5 (32-bit)', utc_timestamp()); -INSERT IGNORE INTO `cloud`.`guest_os` (id, uuid, category_id, display_name, created) VALUES (236, UUID(), 3, 'Oracle Enterprise Linux 6.5 (64-bit)', utc_timestamp()); -INSERT IGNORE INTO `cloud`.`guest_os` (id, uuid, category_id, display_name, created) VALUES (237, UUID(), 4, 'Red Hat Enterprise Linux 5.10 (32-bit)', utc_timestamp()); -INSERT IGNORE INTO `cloud`.`guest_os` (id, uuid, category_id, display_name, created) VALUES (238, UUID(), 4, 'Red Hat Enterprise Linux 5.10 (64-bit)', utc_timestamp()); -INSERT IGNORE INTO `cloud`.`guest_os` (id, uuid, category_id, display_name, created) VALUES (239, UUID(), 4, 'Red Hat Enterprise Linux 6.5 (32-bit)', utc_timestamp()); -INSERT IGNORE INTO `cloud`.`guest_os` (id, uuid, category_id, display_name, created) VALUES (240, UUID(), 4, 'Red Hat Enterprise Linux 6.5 (64-bit)', utc_timestamp()); +INSERT IGNORE INTO `cloud`.`guest_os` (id, uuid, category_id, display_name, created) VALUES (231, UUID(), 1, 'CentOS 5 (32-bit)', utc_timestamp()); +INSERT IGNORE INTO `cloud`.`guest_os` (id, uuid, category_id, display_name, created) VALUES (232, UUID(), 1, 'CentOS 5 (64-bit)', utc_timestamp()); +INSERT IGNORE INTO `cloud`.`guest_os` (id, uuid, category_id, display_name, created) VALUES (233, UUID(), 3, 'Oracle Enterprise Linux 5 (32-bit)', utc_timestamp()); +INSERT IGNORE INTO `cloud`.`guest_os` (id, uuid, category_id, display_name, created) VALUES (234, UUID(), 3, 'Oracle Enterprise Linux 5 (64-bit)', utc_timestamp()); +INSERT IGNORE INTO `cloud`.`guest_os` (id, uuid, category_id, display_name, created) VALUES (235, UUID(), 3, 'Oracle Enterprise Linux 6 (32-bit)', utc_timestamp()); +INSERT IGNORE INTO `cloud`.`guest_os` (id, uuid, category_id, display_name, created) VALUES (236, UUID(), 3, 'Oracle Enterprise Linux 6 (64-bit)', utc_timestamp()); +INSERT IGNORE INTO `cloud`.`guest_os` (id, uuid, category_id, display_name, created) VALUES (237, UUID(), 4, 'Red Hat Enterprise Linux 5 (32-bit)', utc_timestamp()); +INSERT IGNORE INTO `cloud`.`guest_os` (id, uuid, category_id, display_name, created) VALUES (238, UUID(), 4, 'Red Hat Enterprise Linux 5 (64-bit)', utc_timestamp()); +INSERT IGNORE INTO `cloud`.`guest_os` (id, uuid, category_id, display_name, created) VALUES (239, UUID(), 4, 'Red Hat Enterprise Linux 6 (32-bit)', utc_timestamp()); +INSERT IGNORE INTO `cloud`.`guest_os` (id, uuid, category_id, display_name, created) VALUES (240, UUID(), 4, 'Red Hat Enterprise Linux 6 (64-bit)', utc_timestamp()); INSERT IGNORE INTO `cloud`.`guest_os` (id, uuid, category_id, display_name, created) VALUES (241, UUID(), 10, 'Ubuntu 14.04 (32-bit)', utc_timestamp()); INSERT IGNORE INTO `cloud`.`guest_os` (id, uuid, category_id, display_name, created) VALUES (242, UUID(), 10, 'Ubuntu 14.04 (64-bit)', utc_timestamp()); INSERT IGNORE INTO `cloud`.`guest_os` (id, uuid, category_id, display_name, created) VALUES (243, UUID(), 5, 'SUSE Linux Enterprise Server 12 (32-bit)', utc_timestamp()); INSERT IGNORE INTO `cloud`.`guest_os` (id, uuid, category_id, display_name, created) VALUES (244, UUID(), 5, 'SUSE Linux Enterprise Server 12 (64-bit)', utc_timestamp()); -INSERT IGNORE INTO `cloud`.`guest_os` (id, uuid, category_id, display_name, created) VALUES (245, UUID(), 4, 'Red Hat Enterprise Linux 7.0', utc_timestamp()); +INSERT IGNORE INTO `cloud`.`guest_os` (id, uuid, category_id, display_name, created) VALUES (245, UUID(), 4, 'Red Hat Enterprise Linux 7', utc_timestamp()); +INSERT IGNORE INTO `cloud`.`guest_os` (id, uuid, category_id, display_name, created) VALUES (246, UUID(), 1, 'CentOS 7', utc_timestamp()); +INSERT IGNORE INTO `cloud`.`guest_os` (id, uuid, category_id, display_name, created) VALUES (247, UUID(), 3, 'Oracle Linux 7', utc_timestamp()); +INSERT IGNORE INTO `cloud`.`guest_os` (id, uuid, category_id, display_name, created) VALUES (248, UUID(), 1, 'CentOS 6 (32-bit)', utc_timestamp()); +INSERT IGNORE INTO `cloud`.`guest_os` (id, uuid, category_id, display_name, created) VALUES (249, UUID(), 1, 'CentOS 6 (64-bit)', utc_timestamp()); INSERT IGNORE INTO `cloud`.`guest_os_hypervisor` (uuid,hypervisor_type, hypervisor_version, guest_os_name, guest_os_id, created, is_user_defined) VALUES (UUID(),'Xenserver', '6.5.0', 'CentOS 4.5 (32-bit)', 1, utc_timestamp(), 0); INSERT IGNORE INTO `cloud`.`guest_os_hypervisor` (uuid,hypervisor_type, hypervisor_version, guest_os_name, guest_os_id, created, is_user_defined) VALUES (UUID(),'Xenserver', '6.5.0', 'CentOS 4.6 (32-bit)', 2, utc_timestamp(), 0); @@ -603,7 +607,10 @@ INSERT IGNORE INTO `cloud`.`guest_os_hypervisor` (uuid,hypervisor_type, hypervis INSERT IGNORE INTO `cloud`.`guest_os_hypervisor` (uuid,hypervisor_type, hypervisor_version, guest_os_name, guest_os_id, created, is_user_defined) VALUES (UUID(),'Xenserver', '6.5.0', 'CentOS 6 (32-bit)', 181, utc_timestamp(), 0); INSERT IGNORE INTO `cloud`.`guest_os_hypervisor` (uuid,hypervisor_type, hypervisor_version, guest_os_name, guest_os_id, created, is_user_defined) VALUES (UUID(),'Xenserver', '6.5.0', 'CentOS 6 (64-bit)', 182, utc_timestamp(), 0); INSERT IGNORE INTO `cloud`.`guest_os_hypervisor` (uuid,hypervisor_type, hypervisor_version, guest_os_name, guest_os_id, created, is_user_defined) VALUES (UUID(),'Xenserver', '6.5.0', 'CentOS 6 (32-bit)', 227, utc_timestamp(), 0); -INSERT IGNORE INTO `cloud`.`guest_os_hypervisor` (uuid,hypervisor_type, hypervisor_version, guest_os_name, guest_os_id, created, is_user_defined) VALUES (UUID(),'Xenserver', '6.5.0', 'CentOS 6 (64-bit)', 227, utc_timestamp(), 0); +INSERT IGNORE INTO `cloud`.`guest_os_hypervisor` (uuid,hypervisor_type, hypervisor_version, guest_os_name, guest_os_id, created, is_user_defined) VALUES (UUID(),'Xenserver', '6.5.0', 'CentOS 6 (64-bit)', 228, utc_timestamp(), 0); +INSERT IGNORE INTO `cloud`.`guest_os_hypervisor` (uuid,hypervisor_type, hypervisor_version, guest_os_name, guest_os_id, created, is_user_defined) VALUES (UUID(),'Xenserver', '6.5.0', 'CentOS 6 (32-bit)', 248, utc_timestamp(), 0); +INSERT IGNORE INTO `cloud`.`guest_os_hypervisor` (uuid,hypervisor_type, hypervisor_version, guest_os_name, guest_os_id, created, is_user_defined) VALUES (UUID(),'Xenserver', '6.5.0', 'CentOS 6 (64-bit)', 249, utc_timestamp(), 0); +INSERT IGNORE INTO `cloud`.`guest_os_hypervisor` (uuid,hypervisor_type, hypervisor_version, guest_os_name, guest_os_id, created, is_user_defined) VALUES (UUID(),'Xenserver', '6.5.0', 'CentOS 7', 246, utc_timestamp(), 0); INSERT IGNORE INTO `cloud`.`guest_os_hypervisor` (uuid,hypervisor_type, hypervisor_version, guest_os_name, guest_os_id, created, is_user_defined) VALUES (UUID(),'Xenserver', '6.5.0', 'Debian Squeeze 6.0 (32-bit)', 132, utc_timestamp(), 0); INSERT IGNORE INTO `cloud`.`guest_os_hypervisor` (uuid,hypervisor_type, hypervisor_version, guest_os_name, guest_os_id, created, is_user_defined) VALUES (UUID(),'Xenserver', '6.5.0', 'Debian Squeeze 6.0 (64-bit)', 133, utc_timestamp(), 0); INSERT IGNORE INTO `cloud`.`guest_os_hypervisor` (uuid,hypervisor_type, hypervisor_version, guest_os_name, guest_os_id, created, is_user_defined) VALUES (UUID(),'Xenserver', '6.5.0', 'Debian Wheezy 7.0 (32-bit)', 183, utc_timestamp(), 0); @@ -640,8 +647,9 @@ INSERT IGNORE INTO `cloud`.`guest_os_hypervisor` (uuid,hypervisor_type, hypervis INSERT IGNORE INTO `cloud`.`guest_os_hypervisor` (uuid,hypervisor_type, hypervisor_version, guest_os_name, guest_os_id, created, is_user_defined) VALUES (UUID(),'Xenserver', '6.5.0', 'Oracle Enterprise Linux 6 (64-bit)', 218, utc_timestamp(), 0); INSERT IGNORE INTO `cloud`.`guest_os_hypervisor` (uuid,hypervisor_type, hypervisor_version, guest_os_name, guest_os_id, created, is_user_defined) VALUES (UUID(),'Xenserver', '6.5.0', 'Oracle Enterprise Linux 6 (32-bit)', 219, utc_timestamp(), 0); INSERT IGNORE INTO `cloud`.`guest_os_hypervisor` (uuid,hypervisor_type, hypervisor_version, guest_os_name, guest_os_id, created, is_user_defined) VALUES (UUID(),'Xenserver', '6.5.0', 'Oracle Enterprise Linux 6 (64-bit)', 220, utc_timestamp(), 0); -INSERT IGNORE INTO `cloud`.`guest_os_hypervisor` (uuid,hypervisor_type, hypervisor_version, guest_os_name, guest_os_id, created, is_user_defined) VALUES (UUID(),'Xenserver', '6.5.0', 'Oracle Enterprise Linux 6 (32-bit)', 219, utc_timestamp(), 0); -INSERT IGNORE INTO `cloud`.`guest_os_hypervisor` (uuid,hypervisor_type, hypervisor_version, guest_os_name, guest_os_id, created, is_user_defined) VALUES (UUID(),'Xenserver', '6.5.0', 'Oracle Enterprise Linux 6 (64-bit)', 220, utc_timestamp(), 0); +INSERT IGNORE INTO `cloud`.`guest_os_hypervisor` (uuid,hypervisor_type, hypervisor_version, guest_os_name, guest_os_id, created, is_user_defined) VALUES (UUID(),'Xenserver', '6.5.0', 'Oracle Enterprise Linux 6 (32-bit)', 235, utc_timestamp(), 0); +INSERT IGNORE INTO `cloud`.`guest_os_hypervisor` (uuid,hypervisor_type, hypervisor_version, guest_os_name, guest_os_id, created, is_user_defined) VALUES (UUID(),'Xenserver', '6.5.0', 'Oracle Enterprise Linux 6 (64-bit)', 236, utc_timestamp(), 0); +INSERT IGNORE INTO `cloud`.`guest_os_hypervisor` (uuid,hypervisor_type, hypervisor_version, guest_os_name, guest_os_id, created, is_user_defined) VALUES (UUID(),'Xenserver', '6.5.0', 'Oracle Linux 7', 247, utc_timestamp(), 0); INSERT IGNORE INTO `cloud`.`guest_os_hypervisor` (uuid,hypervisor_type, hypervisor_version, guest_os_name, guest_os_id, created, is_user_defined) VALUES (UUID(),'Xenserver', '6.5.0', 'Red Hat Enterprise Linux 4.5 (32-bit)', 26, utc_timestamp(), 0); INSERT IGNORE INTO `cloud`.`guest_os_hypervisor` (uuid,hypervisor_type, hypervisor_version, guest_os_name, guest_os_id, created, is_user_defined) VALUES (UUID(),'Xenserver', '6.5.0', 'Red Hat Enterprise Linux 4.6 (32-bit)', 27, utc_timestamp(), 0); INSERT IGNORE INTO `cloud`.`guest_os_hypervisor` (uuid,hypervisor_type, hypervisor_version, guest_os_name, guest_os_id, created, is_user_defined) VALUES (UUID(),'Xenserver', '6.5.0', 'Red Hat Enterprise Linux 4.7 (32-bit)', 28, utc_timestamp(), 0); From fa5c42c40932f4a8e0352c883b413d25605496ce Mon Sep 17 00:00:00 2001 From: Brian Federle Date: Tue, 30 Sep 2014 15:03:10 -0700 Subject: [PATCH 060/129] Undo "Revert "CLOUDSTACK-7647" This reverts commit 38bd1b934ef770e8a2993c8f42b3fff03484f266. (cherry picked from commit 9c56b3d4db045163ffc3b5efb5f2c067c13eb57d) --- ui/scripts/ui/dialog.js | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/ui/scripts/ui/dialog.js b/ui/scripts/ui/dialog.js index 950d596ca50..f7946dc8a95 100644 --- a/ui/scripts/ui/dialog.js +++ b/ui/scripts/ui/dialog.js @@ -223,10 +223,12 @@ }); if ($dependsOn.is('[type=checkbox]')) { - var isReverse = false; - if (args.form.fields[dependsOn]) + + if (args.form.fields[dependsOn]) { isReverse = args.form.fields[dependsOn].isReverse; + isChecked = args.form.fields[dependsOn].isChecked; + } // Checkbox $dependsOn.bind('click', function(event) { @@ -260,6 +262,10 @@ // Show fields by default if it is reverse checkbox if (isReverse) { $dependsOn.click(); + + if (isChecked) { + $dependsOn.attr('checked', true); + } } } } From ae0bf7db5f16d2c76cc0a17c152a81b61621eee9 Mon Sep 17 00:00:00 2001 From: Edison Su Date: Tue, 30 Sep 2014 16:52:36 -0700 Subject: [PATCH 061/129] speed up template download: don't sync io for each write (cherry picked from commit 6de4dcb10a076671acc0f7486d493e914b59d1d4) --- .../cloud/storage/template/HttpTemplateDownloader.java | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/core/src/com/cloud/storage/template/HttpTemplateDownloader.java b/core/src/com/cloud/storage/template/HttpTemplateDownloader.java index ed6c9f03f43..62762b97a74 100644 --- a/core/src/com/cloud/storage/template/HttpTemplateDownloader.java +++ b/core/src/com/cloud/storage/template/HttpTemplateDownloader.java @@ -26,6 +26,7 @@ import java.io.InputStream; import java.io.RandomAccessFile; import java.net.URI; import java.net.URISyntaxException; +import java.net.URL; import java.util.Date; import org.apache.commons.httpclient.ChunkedInputStream; @@ -233,9 +234,10 @@ public class HttpTemplateDownloader extends ManagedContextRunnable implements Te remoteSize = maxTemplateSizeInBytes; } - InputStream in = !chunked ? new BufferedInputStream(request.getResponseBodyAsStream()) : new ChunkedInputStream(request.getResponseBodyAsStream()); + URL url = new URL(getDownloadUrl()); + InputStream in = url.openStream(); - RandomAccessFile out = new RandomAccessFile(file, "rwd"); + RandomAccessFile out = new RandomAccessFile(file, "rw"); out.seek(localFileSize); s_logger.info("Starting download from " + getDownloadUrl() + " to " + toFile + " remoteSize=" + remoteSize + " , max size=" + maxTemplateSizeInBytes); @@ -279,6 +281,8 @@ public class HttpTemplateDownloader extends ManagedContextRunnable implements Te done = true; } } + out.getFD().sync(); + Date finish = new Date(); String downloaded = "(incomplete download)"; if (totalBytes >= remoteSize) { From 9278a6378b6ffb40fcc30ea7dd21fd6cc2d0e019 Mon Sep 17 00:00:00 2001 From: Edison Su Date: Tue, 30 Sep 2014 17:08:59 -0700 Subject: [PATCH 062/129] fix checkstyle (cherry picked from commit 8db4f197eff294d82846c637111bd2fdb4192abd) --- core/src/com/cloud/storage/template/HttpTemplateDownloader.java | 2 -- 1 file changed, 2 deletions(-) diff --git a/core/src/com/cloud/storage/template/HttpTemplateDownloader.java b/core/src/com/cloud/storage/template/HttpTemplateDownloader.java index 62762b97a74..5644af4f8e8 100644 --- a/core/src/com/cloud/storage/template/HttpTemplateDownloader.java +++ b/core/src/com/cloud/storage/template/HttpTemplateDownloader.java @@ -19,7 +19,6 @@ package com.cloud.storage.template; -import java.io.BufferedInputStream; import java.io.File; import java.io.IOException; import java.io.InputStream; @@ -29,7 +28,6 @@ import java.net.URISyntaxException; import java.net.URL; import java.util.Date; -import org.apache.commons.httpclient.ChunkedInputStream; import org.apache.commons.httpclient.Credentials; import org.apache.commons.httpclient.Header; import org.apache.commons.httpclient.HttpClient; From b29d0751087981f99b61066b3b77ef6c2589eee3 Mon Sep 17 00:00:00 2001 From: Saksham Srivastava Date: Wed, 1 Oct 2014 13:38:38 +0530 Subject: [PATCH 063/129] CLOUDSTACK-7657: cloud.log is being rotated by multiple rotation policies on SSVM and CPVM (cherry picked from commit 3e02bfa74fc7ec0f26ad53fcc528e3f3b5e8f742) --- systemvm/patches/debian/config/etc/init.d/cloud-early-config | 2 ++ 1 file changed, 2 insertions(+) diff --git a/systemvm/patches/debian/config/etc/init.d/cloud-early-config b/systemvm/patches/debian/config/etc/init.d/cloud-early-config index 17c9f0a076f..a8750ba4ae8 100755 --- a/systemvm/patches/debian/config/etc/init.d/cloud-early-config +++ b/systemvm/patches/debian/config/etc/init.d/cloud-early-config @@ -1163,6 +1163,7 @@ setup_secstorage() { enable_svc dnsmasq 0 enable_svc cloud-passwd-srvr 0 enable_svc cloud 1 + rm /etc/logrotate.d/cloud } setup_console_proxy() { @@ -1189,6 +1190,7 @@ setup_console_proxy() { enable_svc cloud-passwd-srvr 0 enable_svc cloud 1 chkconfig nfs-common off + rm /etc/logrotate.d/cloud } setup_elbvm() { From 759b5fa0487871ade1f372742560430ea1993759 Mon Sep 17 00:00:00 2001 From: Kishan Kavala Date: Wed, 1 Oct 2014 12:12:58 +0530 Subject: [PATCH 064/129] For network stats aggregation job, get the most recent mgmt server id to do the aggregation. Set dao filter to descending. (cherry picked from commit ce5c35b193a60159d4376860b729b5c5b6467a94) --- .../network/router/VirtualNetworkApplianceManagerImpl.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/server/src/com/cloud/network/router/VirtualNetworkApplianceManagerImpl.java b/server/src/com/cloud/network/router/VirtualNetworkApplianceManagerImpl.java index c95867e04b9..987a5564857 100755 --- a/server/src/com/cloud/network/router/VirtualNetworkApplianceManagerImpl.java +++ b/server/src/com/cloud/network/router/VirtualNetworkApplianceManagerImpl.java @@ -1020,7 +1020,7 @@ VirtualMachineGuru, Listener, Configurable, StateListener Date: Wed, 1 Oct 2014 14:30:52 +0530 Subject: [PATCH 065/129] CLOUDSTACK-6969. Data Volume Shrink operation failing with "Unexpected Exception". (cherry picked from commit bca71ec16953791bf0980fca4c55817ded8885b2) --- server/src/com/cloud/storage/VolumeApiServiceImpl.java | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/server/src/com/cloud/storage/VolumeApiServiceImpl.java b/server/src/com/cloud/storage/VolumeApiServiceImpl.java index d89ea4f7ebe..e089b77a37c 100644 --- a/server/src/com/cloud/storage/VolumeApiServiceImpl.java +++ b/server/src/com/cloud/storage/VolumeApiServiceImpl.java @@ -1046,12 +1046,17 @@ public class VolumeApiServiceImpl extends ManagerBase implements VolumeApiServic } else { _resourceLimitMgr.decrementResourceCount(volume.getAccountId(), ResourceType.primary_storage, volume.isDisplayVolume(), new Long(currentSize - newSize)); } + return volume; } catch (InterruptedException e) { s_logger.warn("failed get resize volume result", e); + throw new CloudRuntimeException(e.getMessage()); } catch (ExecutionException e) { s_logger.warn("failed get resize volume result", e); + throw new CloudRuntimeException(e.getMessage()); + } catch (Exception e) { + s_logger.warn("failed get resize volume result", e); + throw new CloudRuntimeException(e.getMessage()); } - return volume; } @Override From 4b581bfa5f2d62de0452fee0a47ed20336667056 Mon Sep 17 00:00:00 2001 From: Likitha Shetty Date: Tue, 13 Aug 2013 12:44:44 -0700 Subject: [PATCH 066/129] BUG-ID: CLOUDSTACK-7662. Resize of detached volume fails. Support offline volume resize on ESX by creating a worker VM to attach the unattached volume to and then resize it. (cherry picked from commit 65ed25b7a63586e25a568d845527d547f0045889) --- .../vmware/resource/VmwareResource.java | 53 +++++++++++++++---- 1 file changed, 44 insertions(+), 9 deletions(-) diff --git a/plugins/hypervisors/vmware/src/com/cloud/hypervisor/vmware/resource/VmwareResource.java b/plugins/hypervisors/vmware/src/com/cloud/hypervisor/vmware/resource/VmwareResource.java index 226a884bc45..085b6bbed49 100755 --- a/plugins/hypervisors/vmware/src/com/cloud/hypervisor/vmware/resource/VmwareResource.java +++ b/plugins/hypervisors/vmware/src/com/cloud/hypervisor/vmware/resource/VmwareResource.java @@ -545,11 +545,43 @@ public class VmwareResource implements StoragePoolResource, ServerResource, Vmwa String path = cmd.getPath(); String vmName = cmd.getInstanceName(); long newSize = cmd.getNewSize() / 1024; + long oldSize = cmd.getCurrentSize()/1024; + boolean useWorkerVm = false; + + VmwareHypervisorHost hyperHost = getHyperHost(getServiceContext()); + String poolId = cmd.getPoolUuid(); + VirtualMachineMO vmMo = null; + DatastoreMO dsMo = null; + ManagedObjectReference morDS = null; + String vmdkDataStorePath = null; try { - VmwareHypervisorHost hyperHost = getHyperHost(getServiceContext()); + if (newSize < oldSize) { + throw new Exception("VMware doesn't support shrinking volume from larger size: " + oldSize/(1024*1024) + " GB to a smaller size: " + newSize/(1024*1024) + " GB"); + } else if (newSize == oldSize) { + return new ResizeVolumeAnswer(cmd, true, "success", newSize*1024); + } + if (vmName.equalsIgnoreCase("none")) { + // we need to spawn a worker VM to attach the volume to and + // resize the volume. + useWorkerVm = true; + vmName = this.getWorkerName(getServiceContext(), cmd, 0); + + morDS = HypervisorHostHelper.findDatastoreWithBackwardsCompatibility(hyperHost, poolId); + dsMo = new DatastoreMO(hyperHost.getContext(), morDS); + s_logger.info("Create worker VM " + vmName); + vmMo = HypervisorHostHelper.createWorkerVM(hyperHost, dsMo, vmName); + if (vmMo == null) { + throw new Exception("Unable to create a worker VM for volume resize"); + } + + synchronized (this) { + vmdkDataStorePath = VmwareStorageLayoutHelper.getLegacyDatastorePathFromVmdkFileName(dsMo, path + ".vmdk"); + vmMo.attachDisk(new String[] { vmdkDataStorePath }, morDS); + } + } // find VM through datacenter (VM is not at the target host yet) - VirtualMachineMO vmMo = hyperHost.findVmOnPeerHyperHost(vmName); + vmMo = hyperHost.findVmOnPeerHyperHost(vmName); if (vmMo == null) { String msg = "VM " + vmName + " does not exist in VMware datacenter"; s_logger.error(msg); @@ -563,13 +595,6 @@ public class VmwareResource implements StoragePoolResource, ServerResource, Vmwa throw new Exception("No such disk device: " + path); } VirtualDisk disk = vdisk.first(); - long oldSize = disk.getCapacityInKB(); - if (newSize < oldSize) { - throw new Exception("VMware doesn't support shrinking volume from larger size: " + oldSize/(1024*1024) + " GB to a smaller size: " - + newSize/(1024*1024) + " GB"); - } else if (newSize == oldSize) { - return new ResizeVolumeAnswer(cmd, true, "success", newSize * 1024); - } disk.setCapacityInKB(newSize); VirtualMachineConfigSpec vmConfigSpec = new VirtualMachineConfigSpec(); @@ -586,6 +611,16 @@ public class VmwareResource implements StoragePoolResource, ServerResource, Vmwa s_logger.error("Unable to resize volume", e); String error = "Failed to resize volume: " + e.getMessage(); return new ResizeVolumeAnswer(cmd, false, error); + } finally { + try { + if (useWorkerVm == true) { + s_logger.info("Destroy worker VM after volume resize"); + vmMo.detachDisk(vmdkDataStorePath, false); + vmMo.destroy(); + } + } catch (Throwable e) { + s_logger.info("Failed to destroy worker VM: " + vmName); + } } } From 14ace9e758eeb5f974a8d9f146d660f734058aa5 Mon Sep 17 00:00:00 2001 From: Saksham Srivastava Date: Wed, 1 Oct 2014 16:02:56 +0530 Subject: [PATCH 067/129] CLOUDSTACK-7663: Fix typo in response name string: there is an extra 's' (cherry picked from commit e7134b82f90cfa9482cd08c3cf4633c64d621117) --- .../user/loadbalancer/ListApplicationLoadBalancersCmd.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/api/src/org/apache/cloudstack/api/command/user/loadbalancer/ListApplicationLoadBalancersCmd.java b/api/src/org/apache/cloudstack/api/command/user/loadbalancer/ListApplicationLoadBalancersCmd.java index f8696d4b3f6..299d7308bb4 100644 --- a/api/src/org/apache/cloudstack/api/command/user/loadbalancer/ListApplicationLoadBalancersCmd.java +++ b/api/src/org/apache/cloudstack/api/command/user/loadbalancer/ListApplicationLoadBalancersCmd.java @@ -40,7 +40,7 @@ import com.cloud.utils.Pair; public class ListApplicationLoadBalancersCmd extends BaseListTaggedResourcesCmd { public static final Logger s_logger = Logger.getLogger(ListApplicationLoadBalancersCmd.class.getName()); - private static final String s_name = "listloadbalancerssresponse"; + private static final String s_name = "listloadbalancersresponse"; // /////////////////////////////////////////////////// // ////////////// API parameters ///////////////////// From 47d2a578eef03f5fdb305333eef46ef99f4f3317 Mon Sep 17 00:00:00 2001 From: Sanjay Tripathi Date: Wed, 1 Oct 2014 15:40:27 +0530 Subject: [PATCH 068/129] CLOUDSTACK-6650: Reorder Cluster list in deployment planner to protect GPU enabled hosts from non-GPU VM deployment. Cluster reordering is based on the number of unique host tags in a cluster, cluster with most number of unique host tags will put at the end of list. Hosts with GPU capability will get tagged with implicit tags defined by global config param 'implicit.host.tags' at the time os host discovery. Also added FirstFitPlannerTest unit test file. (cherry picked from commit 39fe766c2b6fb6edd4c1bf828625b29d9bb87719) --- .../agent/api/StartupRoutingCommand.java | 11 + .../src/com/cloud/host/dao/HostTagsDao.java | 2 + .../com/cloud/host/dao/HostTagsDaoImpl.java | 17 + .../implicitplanner/ImplicitPlannerTest.java | 12 + .../resource/XenServer620SP1Resource.java | 3 + .../src/com/cloud/configuration/Config.java | 8 + .../src/com/cloud/deploy/FirstFitPlanner.java | 50 ++- .../cloud/resource/ResourceManagerImpl.java | 13 + .../vm/DeploymentPlanningManagerImplTest.java | 12 + .../com/cloud/vm/FirstFitPlannerTest.java | 385 ++++++++++++++++++ setup/db/db/schema-441to450.sql | 2 + 11 files changed, 511 insertions(+), 4 deletions(-) create mode 100644 server/test/com/cloud/vm/FirstFitPlannerTest.java diff --git a/core/src/com/cloud/agent/api/StartupRoutingCommand.java b/core/src/com/cloud/agent/api/StartupRoutingCommand.java index 834d0768297..c4138367b7d 100755 --- a/core/src/com/cloud/agent/api/StartupRoutingCommand.java +++ b/core/src/com/cloud/agent/api/StartupRoutingCommand.java @@ -19,7 +19,9 @@ package com.cloud.agent.api; +import java.util.ArrayList; import java.util.HashMap; +import java.util.List; import java.util.Map; import com.cloud.host.Host; @@ -39,6 +41,7 @@ public class StartupRoutingCommand extends StartupCommand { String pool; HypervisorType hypervisorType; Map hostDetails; //stuff like host os, cpu capabilities + List hostTags = new ArrayList(); String hypervisorVersion; HashMap> groupDetails = new HashMap>(); @@ -162,6 +165,14 @@ public class StartupRoutingCommand extends StartupCommand { this.hypervisorVersion = hypervisorVersion; } + public List getHostTags() { + return hostTags; + } + + public void setHostTags(String hostTag) { + this.hostTags.add(hostTag); + } + public HashMap> getGpuGroupDetails() { return groupDetails; } diff --git a/engine/schema/src/com/cloud/host/dao/HostTagsDao.java b/engine/schema/src/com/cloud/host/dao/HostTagsDao.java index 50c0b7e6d59..8901716ddfd 100644 --- a/engine/schema/src/com/cloud/host/dao/HostTagsDao.java +++ b/engine/schema/src/com/cloud/host/dao/HostTagsDao.java @@ -27,4 +27,6 @@ public interface HostTagsDao extends GenericDao { List gethostTags(long hostId); + List getDistinctImplicitHostTags(List hostIds, String[] implicitHostTags); + } diff --git a/engine/schema/src/com/cloud/host/dao/HostTagsDaoImpl.java b/engine/schema/src/com/cloud/host/dao/HostTagsDaoImpl.java index 041a8fe200b..7e8615a26ad 100644 --- a/engine/schema/src/com/cloud/host/dao/HostTagsDaoImpl.java +++ b/engine/schema/src/com/cloud/host/dao/HostTagsDaoImpl.java @@ -25,19 +25,28 @@ import org.springframework.stereotype.Component; import com.cloud.host.HostTagVO; import com.cloud.utils.db.GenericDaoBase; +import com.cloud.utils.db.GenericSearchBuilder; import com.cloud.utils.db.SearchBuilder; import com.cloud.utils.db.SearchCriteria; import com.cloud.utils.db.TransactionLegacy; +import com.cloud.utils.db.SearchCriteria.Func; @Component @Local(value = HostTagsDao.class) public class HostTagsDaoImpl extends GenericDaoBase implements HostTagsDao { protected final SearchBuilder HostSearch; + protected final GenericSearchBuilder DistinctImplictTagsSearch; public HostTagsDaoImpl() { HostSearch = createSearchBuilder(); HostSearch.and("hostId", HostSearch.entity().getHostId(), SearchCriteria.Op.EQ); HostSearch.done(); + + DistinctImplictTagsSearch = createSearchBuilder(String.class); + DistinctImplictTagsSearch.select(null, Func.DISTINCT, DistinctImplictTagsSearch.entity().getTag()); + DistinctImplictTagsSearch.and("hostIds", DistinctImplictTagsSearch.entity().getHostId(), SearchCriteria.Op.IN); + DistinctImplictTagsSearch.and("implicitTags", DistinctImplictTagsSearch.entity().getTag(), SearchCriteria.Op.IN); + DistinctImplictTagsSearch.done(); } @Override @@ -54,6 +63,14 @@ public class HostTagsDaoImpl extends GenericDaoBase implements return hostTags; } + @Override + public List getDistinctImplicitHostTags(List hostIds, String[] implicitHostTags) { + SearchCriteria sc = DistinctImplictTagsSearch.create(); + sc.setParameters("hostIds", hostIds.toArray(new Object[hostIds.size()])); + sc.setParameters("implicitTags", (Object[])implicitHostTags); + return customSearch(sc, null); + } + @Override public void persist(long hostId, List hostTags) { TransactionLegacy txn = TransactionLegacy.currentTxn(); diff --git a/plugins/deployment-planners/implicit-dedication/test/org/apache/cloudstack/implicitplanner/ImplicitPlannerTest.java b/plugins/deployment-planners/implicit-dedication/test/org/apache/cloudstack/implicitplanner/ImplicitPlannerTest.java index 4182193a17f..e8342480a92 100644 --- a/plugins/deployment-planners/implicit-dedication/test/org/apache/cloudstack/implicitplanner/ImplicitPlannerTest.java +++ b/plugins/deployment-planners/implicit-dedication/test/org/apache/cloudstack/implicitplanner/ImplicitPlannerTest.java @@ -69,8 +69,10 @@ import com.cloud.deploy.DataCenterDeployment; import com.cloud.deploy.DeploymentPlanner.ExcludeList; import com.cloud.deploy.ImplicitDedicationPlanner; import com.cloud.exception.InsufficientServerCapacityException; +import com.cloud.gpu.dao.HostGpuGroupsDao; import com.cloud.host.HostVO; import com.cloud.host.dao.HostDao; +import com.cloud.host.dao.HostTagsDao; import com.cloud.resource.ResourceManager; import com.cloud.service.ServiceOfferingVO; import com.cloud.service.dao.ServiceOfferingDao; @@ -467,6 +469,16 @@ public class ImplicitPlannerTest { return Mockito.mock(HostDao.class); } + @Bean + public HostTagsDao hostTagsDao() { + return Mockito.mock(HostTagsDao.class); + } + + @Bean + public HostGpuGroupsDao hostGpuGroupsDao() { + return Mockito.mock(HostGpuGroupsDao.class); + } + @Bean public DataCenterDao dcDao() { return Mockito.mock(DataCenterDao.class); diff --git a/plugins/hypervisors/xenserver/src/com/cloud/hypervisor/xenserver/resource/XenServer620SP1Resource.java b/plugins/hypervisors/xenserver/src/com/cloud/hypervisor/xenserver/resource/XenServer620SP1Resource.java index 88e46005ac6..5553553d49a 100644 --- a/plugins/hypervisors/xenserver/src/com/cloud/hypervisor/xenserver/resource/XenServer620SP1Resource.java +++ b/plugins/hypervisors/xenserver/src/com/cloud/hypervisor/xenserver/resource/XenServer620SP1Resource.java @@ -84,6 +84,9 @@ public class XenServer620SP1Resource extends XenServer620Resource { try { HashMap> groupDetails = getGPUGroupDetails(conn); cmd.setGpuGroupDetails(groupDetails); + if (groupDetails != null && !groupDetails.isEmpty()) { + cmd.setHostTags("GPU"); + } } catch (Exception e) { if (s_logger.isDebugEnabled()) { s_logger.debug("Error while getting GPU device info from host " + cmd.getName(), e); diff --git a/server/src/com/cloud/configuration/Config.java b/server/src/com/cloud/configuration/Config.java index 0365246f718..2fc535636a4 100755 --- a/server/src/com/cloud/configuration/Config.java +++ b/server/src/com/cloud/configuration/Config.java @@ -1360,6 +1360,14 @@ public enum Config { "false", "Deploys a VM per zone to manage secondary storage if true, otherwise secondary storage is mounted on management server", null), + ImplicitHostTags( + "Hidden", + ManagementServer.class, + String.class, + "implicit.host.tags", + "GPU", + "Tag hosts at the time of host disovery based on the host properties/capabilities", + null), CreatePoolsInPod( "Hidden", ManagementServer.class, diff --git a/server/src/com/cloud/deploy/FirstFitPlanner.java b/server/src/com/cloud/deploy/FirstFitPlanner.java index 48780a72ffd..9d79304e7c1 100755 --- a/server/src/com/cloud/deploy/FirstFitPlanner.java +++ b/server/src/com/cloud/deploy/FirstFitPlanner.java @@ -17,6 +17,8 @@ package com.cloud.deploy; import java.util.ArrayList; +import java.util.Collections; +import java.util.Comparator; import java.util.HashMap; import java.util.List; import java.util.Map; @@ -44,9 +46,14 @@ import com.cloud.dc.dao.ClusterDao; import com.cloud.dc.dao.DataCenterDao; import com.cloud.dc.dao.HostPodDao; import com.cloud.exception.InsufficientServerCapacityException; +import com.cloud.gpu.GPU; +import com.cloud.gpu.dao.HostGpuGroupsDao; +import com.cloud.host.Host; import com.cloud.host.dao.HostDao; +import com.cloud.host.dao.HostTagsDao; import com.cloud.hypervisor.Hypervisor.HypervisorType; import com.cloud.offering.ServiceOffering; +import com.cloud.service.dao.ServiceOfferingDetailsDao; import com.cloud.storage.StorageManager; import com.cloud.storage.dao.DiskOfferingDao; import com.cloud.storage.dao.GuestOSCategoryDao; @@ -102,9 +109,16 @@ public class FirstFitPlanner extends PlannerBase implements DeploymentClusterPla DataStoreManager dataStoreMgr; @Inject protected ClusterDetailsDao _clusterDetailsDao; + @Inject + protected ServiceOfferingDetailsDao _serviceOfferingDetailsDao; + @Inject + protected HostGpuGroupsDao _hostGpuGroupsDao; + @Inject + protected HostTagsDao _hostTagsDao; protected String _allocationAlgorithm = "random"; protected String _globalDeploymentPlanner = "FirstFitPlanner"; + protected String[] _implicitHostTags; @Override public List orderClusters(VirtualMachineProfile vmProfile, DeploymentPlan plan, ExcludeList avoid) throws InsufficientServerCapacityException { @@ -131,7 +145,6 @@ public class FirstFitPlanner extends PlannerBase implements DeploymentClusterPla clusterList.add(clusterIdSpecified); removeClustersCrossingThreshold(clusterList, avoid, vmProfile, plan); } - return clusterList; } else { s_logger.debug("The specified cluster cannot be found, returning."); avoid.addCluster(plan.getClusterId()); @@ -152,7 +165,6 @@ public class FirstFitPlanner extends PlannerBase implements DeploymentClusterPla avoid.addPod(plan.getPodId()); } } - return clusterList; } else { s_logger.debug("The specified Pod cannot be found, returning."); avoid.addPod(plan.getPodId()); @@ -164,13 +176,39 @@ public class FirstFitPlanner extends PlannerBase implements DeploymentClusterPla boolean applyAllocationAtPods = Boolean.parseBoolean(_configDao.getValue(Config.ApplyAllocationAlgorithmToPods.key())); if (applyAllocationAtPods) { //start scan at all pods under this zone. - return scanPodsForDestination(vmProfile, plan, avoid); + clusterList = scanPodsForDestination(vmProfile, plan, avoid); } else { //start scan at clusters under this zone. - return scanClustersForDestinationInZoneOrPod(plan.getDataCenterId(), true, vmProfile, plan, avoid); + clusterList = scanClustersForDestinationInZoneOrPod(plan.getDataCenterId(), true, vmProfile, plan, avoid); } } + if (clusterList != null && !clusterList.isEmpty()) { + ServiceOffering offering = vmProfile.getServiceOffering(); + // In case of non-GPU VMs, protect GPU enabled Hosts and prefer VM deployment on non-GPU Hosts. + if ((_serviceOfferingDetailsDao.findDetail(offering.getId(), GPU.Keys.vgpuType.toString()) == null) && !(_hostGpuGroupsDao.listHostIds().isEmpty())) { + int requiredCpu = offering.getCpu() * offering.getSpeed(); + long requiredRam = offering.getRamSize() * 1024L * 1024L; + reorderClustersBasedOnImplicitTags(clusterList, requiredCpu, requiredRam); + } + } + return clusterList; + } + + private void reorderClustersBasedOnImplicitTags(List clusterList, int requiredCpu, long requiredRam) { + final HashMap UniqueTagsInClusterMap = new HashMap(); + for (Long clusterId : clusterList) { + List hostList = _capacityDao.listHostsWithEnoughCapacity(requiredCpu, requiredRam, clusterId, Host.Type.Routing.toString()); + UniqueTagsInClusterMap.put(clusterId, new Long(_hostTagsDao.getDistinctImplicitHostTags(hostList, _implicitHostTags).size())); + } + Collections.sort(clusterList, new Comparator() { + @Override + public int compare(Long o1, Long o2) { + Long t1 = UniqueTagsInClusterMap.get(o1); + Long t2 = UniqueTagsInClusterMap.get(o2); + return t1.compareTo(t2); + } + }); } private List scanPodsForDestination(VirtualMachineProfile vmProfile, DeploymentPlan plan, ExcludeList avoid) { @@ -504,6 +542,10 @@ public class FirstFitPlanner extends PlannerBase implements DeploymentClusterPla super.configure(name, params); _allocationAlgorithm = _configDao.getValue(Config.VmAllocationAlgorithm.key()); _globalDeploymentPlanner = _configDao.getValue(Config.VmDeploymentPlanner.key()); + String configValue; + if ((configValue = _configDao.getValue(Config.ImplicitHostTags.key())) != null) { + _implicitHostTags = configValue.trim().split("\\s*,\\s*"); + } return true; } diff --git a/server/src/com/cloud/resource/ResourceManagerImpl.java b/server/src/com/cloud/resource/ResourceManagerImpl.java index 477b08f6af2..c38c5843f0e 100755 --- a/server/src/com/cloud/resource/ResourceManagerImpl.java +++ b/server/src/com/cloud/resource/ResourceManagerImpl.java @@ -1631,6 +1631,19 @@ public class ResourceManagerImpl extends ManagerBase implements ResourceManager, clusterId = c.getId(); } } + StartupRoutingCommand ssCmd = (StartupRoutingCommand)startup; + List implicitHostTags = ssCmd.getHostTags(); + if (!implicitHostTags.isEmpty()) { + if (hostTags == null) { + hostTags = _hostTagsDao.gethostTags(host.getId()); + } + if (hostTags != null) { + implicitHostTags.removeAll(hostTags); + hostTags.addAll(implicitHostTags); + } else { + hostTags = implicitHostTags; + } + } host.setDataCenterId(dc.getId()); host.setPodId(podId); diff --git a/server/test/com/cloud/vm/DeploymentPlanningManagerImplTest.java b/server/test/com/cloud/vm/DeploymentPlanningManagerImplTest.java index 94c1d186e4a..b9e283153e6 100644 --- a/server/test/com/cloud/vm/DeploymentPlanningManagerImplTest.java +++ b/server/test/com/cloud/vm/DeploymentPlanningManagerImplTest.java @@ -76,7 +76,9 @@ import com.cloud.deploy.PlannerHostReservationVO; import com.cloud.deploy.dao.PlannerHostReservationDao; import com.cloud.exception.AffinityConflictException; import com.cloud.exception.InsufficientServerCapacityException; +import com.cloud.gpu.dao.HostGpuGroupsDao; import com.cloud.host.dao.HostDao; +import com.cloud.host.dao.HostTagsDao; import com.cloud.hypervisor.Hypervisor.HypervisorType; import com.cloud.resource.ResourceManager; import com.cloud.service.ServiceOfferingVO; @@ -239,6 +241,11 @@ public class DeploymentPlanningManagerImplTest { return Mockito.mock(VirtualMachineProfileImpl.class); } + @Bean + public HostTagsDao hostTagsDao() { + return Mockito.mock(HostTagsDao.class); + } + @Bean public ClusterDetailsDao clusterDetailsDao() { return Mockito.mock(ClusterDetailsDao.class); @@ -389,6 +396,11 @@ public class DeploymentPlanningManagerImplTest { return Mockito.mock(AffinityGroupService.class); } + @Bean + public HostGpuGroupsDao hostGpuGroupsDap() { + return Mockito.mock(HostGpuGroupsDao.class); + } + public static class Library implements TypeFilter { @Override diff --git a/server/test/com/cloud/vm/FirstFitPlannerTest.java b/server/test/com/cloud/vm/FirstFitPlannerTest.java new file mode 100644 index 00000000000..05e1817c786 --- /dev/null +++ b/server/test/com/cloud/vm/FirstFitPlannerTest.java @@ -0,0 +1,385 @@ +// Licensed to the Apache Software Foundation (ASF) under one +// or more contributor license agreements. See the NOTICE file +// distributed with this work for additional information +// regarding copyright ownership. The ASF licenses this file +// to you under the Apache License, Version 2.0 (the +// "License"); you may not use this file except in compliance +// with the License. You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, +// software distributed under the License is distributed on an +// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +// KIND, either express or implied. See the License for the +// specific language governing permissions and limitations +// under the License. +package com.cloud.vm; + +import static org.junit.Assert.assertTrue; +import static org.mockito.Matchers.anyString; +import static org.mockito.Mockito.mock; +import static org.mockito.Mockito.when; + +import java.io.IOException; +import java.util.ArrayList; +import java.util.Arrays; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +import javax.inject.Inject; + +import org.apache.cloudstack.context.CallContext; +import org.apache.cloudstack.engine.subsystem.api.storage.DataStoreManager; +import org.apache.cloudstack.framework.config.dao.ConfigurationDao; +import org.apache.cloudstack.storage.datastore.db.PrimaryDataStoreDao; +import org.apache.cloudstack.test.utils.SpringUtils; +import org.junit.After; +import org.junit.Before; +import org.junit.Test; +import org.junit.runner.RunWith; +import org.mockito.Matchers; +import org.mockito.Mockito; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.ComponentScan; +import org.springframework.context.annotation.ComponentScan.Filter; +import org.springframework.context.annotation.Configuration; +import org.springframework.context.annotation.FilterType; +import org.springframework.core.type.classreading.MetadataReader; +import org.springframework.core.type.classreading.MetadataReaderFactory; +import org.springframework.core.type.filter.TypeFilter; +import org.springframework.test.context.ContextConfiguration; +import org.springframework.test.context.junit4.SpringJUnit4ClassRunner; +import org.springframework.test.context.support.AnnotationConfigContextLoader; + +import com.cloud.capacity.Capacity; +import com.cloud.capacity.CapacityManager; +import com.cloud.capacity.dao.CapacityDao; +import com.cloud.dc.ClusterDetailsDao; +import com.cloud.dc.DataCenterVO; +import com.cloud.dc.dao.ClusterDao; +import com.cloud.dc.dao.DataCenterDao; +import com.cloud.dc.dao.HostPodDao; +import com.cloud.deploy.DataCenterDeployment; +import com.cloud.deploy.DeploymentPlanner.ExcludeList; +import com.cloud.deploy.FirstFitPlanner; +import com.cloud.exception.InsufficientServerCapacityException; +import com.cloud.gpu.dao.HostGpuGroupsDao; +import com.cloud.host.Host; +import com.cloud.host.dao.HostDao; +import com.cloud.host.dao.HostTagsDao; +import com.cloud.resource.ResourceManager; +import com.cloud.service.ServiceOfferingVO; +import com.cloud.service.dao.ServiceOfferingDao; +import com.cloud.service.dao.ServiceOfferingDetailsDao; +import com.cloud.storage.StorageManager; +import com.cloud.storage.dao.DiskOfferingDao; +import com.cloud.storage.dao.GuestOSCategoryDao; +import com.cloud.storage.dao.GuestOSDao; +import com.cloud.storage.dao.StoragePoolHostDao; +import com.cloud.storage.dao.VolumeDao; +import com.cloud.user.Account; +import com.cloud.user.AccountManager; +import com.cloud.user.AccountVO; +import com.cloud.utils.Pair; +import com.cloud.utils.component.ComponentContext; +import com.cloud.vm.dao.UserVmDao; +import com.cloud.vm.dao.VMInstanceDao; + +@RunWith(SpringJUnit4ClassRunner.class) +@ContextConfiguration(loader = AnnotationConfigContextLoader.class) +public class FirstFitPlannerTest { + + @Inject + FirstFitPlanner planner = new FirstFitPlanner(); + @Inject + DataCenterDao dcDao; + @Inject + ClusterDao clusterDao; + @Inject + UserVmDao vmDao; + @Inject + ConfigurationDao configDao; + @Inject + CapacityDao capacityDao; + @Inject + AccountManager accountMgr; + @Inject + ServiceOfferingDao serviceOfferingDao; + @Inject + ServiceOfferingDetailsDao serviceOfferingDetailsDao; + @Inject + HostGpuGroupsDao hostGpuGroupsDao; + @Inject + HostTagsDao hostTagsDao; + + private static long domainId = 1L; + long dataCenterId = 1L; + long accountId = 1L; + long offeringId = 12L; + int noOfCpusInOffering = 1; + int cpuSpeedInOffering = 500; + int ramInOffering = 512; + AccountVO acct = new AccountVO(accountId); + + @Before + public void setUp() { + ComponentContext.initComponentsLifeCycle(); + + acct.setType(Account.ACCOUNT_TYPE_ADMIN); + acct.setAccountName("user1"); + acct.setDomainId(domainId); + acct.setId(accountId); + } + + @After + public void tearDown() { + CallContext.unregister(); + } + + @Test + public void checkClusterReorderingBasedOnImplicitHostTags() throws InsufficientServerCapacityException { + VirtualMachineProfileImpl vmProfile = mock(VirtualMachineProfileImpl.class); + DataCenterDeployment plan = mock(DataCenterDeployment.class); + ExcludeList avoids = mock(ExcludeList.class); + initializeForTest(vmProfile, plan, avoids); + + List clusterList = planner.orderClusters(vmProfile, plan, avoids); + List reorderedClusterList = new ArrayList(); + reorderedClusterList.add(4L); + reorderedClusterList.add(3L); + reorderedClusterList.add(1L); + reorderedClusterList.add(5L); + reorderedClusterList.add(6L); + reorderedClusterList.add(2L); + + assertTrue("Reordered cluster list is not ownering the implict host tags", (clusterList.equals(reorderedClusterList))); + } + + private void initializeForTest(VirtualMachineProfileImpl vmProfile, DataCenterDeployment plan, ExcludeList avoids) { + DataCenterVO mockDc = mock(DataCenterVO.class); + VMInstanceVO vm = mock(VMInstanceVO.class); + UserVmVO userVm = mock(UserVmVO.class); + ServiceOfferingVO offering = mock(ServiceOfferingVO.class); + + AccountVO account = mock(AccountVO.class); + when(account.getId()).thenReturn(accountId); + when(account.getAccountId()).thenReturn(accountId); + when(vmProfile.getOwner()).thenReturn(account); + when(vmProfile.getVirtualMachine()).thenReturn(vm); + when(vmProfile.getId()).thenReturn(12L); + when(vmDao.findById(12L)).thenReturn(userVm); + when(userVm.getAccountId()).thenReturn(accountId); + + when(vm.getDataCenterId()).thenReturn(dataCenterId); + when(dcDao.findById(1L)).thenReturn(mockDc); + when(avoids.shouldAvoid(mockDc)).thenReturn(false); + when(plan.getDataCenterId()).thenReturn(dataCenterId); + when(plan.getClusterId()).thenReturn(null); + when(plan.getPodId()).thenReturn(null); + when(configDao.getValue("implicit.host.tags")).thenReturn("GPU"); + + // Mock offering details. + when(vmProfile.getServiceOffering()).thenReturn(offering); + when(offering.getId()).thenReturn(offeringId); + when(vmProfile.getServiceOfferingId()).thenReturn(offeringId); + when(offering.getCpu()).thenReturn(noOfCpusInOffering); + when(offering.getSpeed()).thenReturn(cpuSpeedInOffering); + when(offering.getRamSize()).thenReturn(ramInOffering); + + List clustersWithEnoughCapacity = new ArrayList(); + clustersWithEnoughCapacity.add(1L); + clustersWithEnoughCapacity.add(2L); + clustersWithEnoughCapacity.add(3L); + clustersWithEnoughCapacity.add(4L); + clustersWithEnoughCapacity.add(5L); + clustersWithEnoughCapacity.add(6L); + + when( + capacityDao.listClustersInZoneOrPodByHostCapacities(dataCenterId, noOfCpusInOffering * cpuSpeedInOffering, ramInOffering * 1024L * 1024L, + Capacity.CAPACITY_TYPE_CPU, true)).thenReturn(clustersWithEnoughCapacity); + + Map clusterCapacityMap = new HashMap(); + clusterCapacityMap.put(1L, 2048D); + clusterCapacityMap.put(2L, 2048D); + clusterCapacityMap.put(3L, 2048D); + clusterCapacityMap.put(4L, 2048D); + clusterCapacityMap.put(5L, 2048D); + clusterCapacityMap.put(6L, 2048D); + + Pair, Map> clustersOrderedByCapacity = new Pair, Map>(clustersWithEnoughCapacity, clusterCapacityMap); + when(capacityDao.orderClustersByAggregateCapacity(dataCenterId, Capacity.CAPACITY_TYPE_CPU, true)).thenReturn(clustersOrderedByCapacity); + + List disabledClusters = new ArrayList(); + List clustersWithDisabledPods = new ArrayList(); + when(clusterDao.listDisabledClusters(dataCenterId, null)).thenReturn(disabledClusters); + when(clusterDao.listClustersWithDisabledPods(dataCenterId)).thenReturn(clustersWithDisabledPods); + + List hostList0 = new ArrayList(); + List hostList1 = new ArrayList(); + List hostList2 = new ArrayList(); + List hostList3 = new ArrayList(); + List hostList4 = new ArrayList(); + List hostList5 = new ArrayList(); + List hostList6 = new ArrayList(); + hostList0.add(new Long(1)); + hostList1.add(new Long(10)); + hostList2.add(new Long(11)); + hostList3.add(new Long(12)); + hostList4.add(new Long(13)); + hostList5.add(new Long(14)); + hostList6.add(new Long(15)); + String[] implicitHostTags = null; + int ramInBytes = ramInOffering * 1024 * 1024; + when(serviceOfferingDetailsDao.findDetail(Matchers.anyLong(), anyString())).thenReturn(null); + when(hostGpuGroupsDao.listHostIds()).thenReturn(hostList0); + when(capacityDao.listHostsWithEnoughCapacity(noOfCpusInOffering * cpuSpeedInOffering, ramInBytes, new Long(1), Host.Type.Routing.toString())).thenReturn(hostList1); + when(capacityDao.listHostsWithEnoughCapacity(noOfCpusInOffering * cpuSpeedInOffering, ramInBytes, new Long(2), Host.Type.Routing.toString())).thenReturn(hostList2); + when(capacityDao.listHostsWithEnoughCapacity(noOfCpusInOffering * cpuSpeedInOffering, ramInBytes, new Long(3), Host.Type.Routing.toString())).thenReturn(hostList3); + when(capacityDao.listHostsWithEnoughCapacity(noOfCpusInOffering * cpuSpeedInOffering, ramInBytes, new Long(4), Host.Type.Routing.toString())).thenReturn(hostList4); + when(capacityDao.listHostsWithEnoughCapacity(noOfCpusInOffering * cpuSpeedInOffering, ramInBytes, new Long(5), Host.Type.Routing.toString())).thenReturn(hostList5); + when(capacityDao.listHostsWithEnoughCapacity(noOfCpusInOffering * cpuSpeedInOffering, ramInBytes, new Long(6), Host.Type.Routing.toString())).thenReturn(hostList6); + when(hostTagsDao.getDistinctImplicitHostTags(hostList1, implicitHostTags)).thenReturn(Arrays.asList("abc", "pqr","xyz")); + when(hostTagsDao.getDistinctImplicitHostTags(hostList2, implicitHostTags)).thenReturn(Arrays.asList("abc", "123", "pqr", "456", "xyz")); + when(hostTagsDao.getDistinctImplicitHostTags(hostList3, implicitHostTags)).thenReturn(Arrays.asList("abc", "pqr")); + when(hostTagsDao.getDistinctImplicitHostTags(hostList4, implicitHostTags)).thenReturn(Arrays.asList("abc")); + when(hostTagsDao.getDistinctImplicitHostTags(hostList5, implicitHostTags)).thenReturn(Arrays.asList("abc", "pqr","xyz")); + when(hostTagsDao.getDistinctImplicitHostTags(hostList6, implicitHostTags)).thenReturn(Arrays.asList("abc", "123", "pqr","xyz")); + } + + @Configuration + @ComponentScan(basePackageClasses = {FirstFitPlanner.class}, + includeFilters = {@Filter(value = TestConfiguration.Library.class, type = FilterType.CUSTOM)}, + useDefaultFilters = false) + public static class TestConfiguration extends SpringUtils.CloudStackTestConfiguration { + + @Bean + public HostDao hostDao() { + return Mockito.mock(HostDao.class); + } + + @Bean + public HostTagsDao hostTagsDao() { + return Mockito.mock(HostTagsDao.class); + } + + @Bean + public HostGpuGroupsDao hostGpuGroupsDao() { + return Mockito.mock(HostGpuGroupsDao.class); + } + + @Bean + public DataCenterDao dcDao() { + return Mockito.mock(DataCenterDao.class); + } + + @Bean + public HostPodDao hostPodDao() { + return Mockito.mock(HostPodDao.class); + } + + @Bean + public ClusterDao clusterDao() { + return Mockito.mock(ClusterDao.class); + } + + @Bean + public GuestOSDao guestOsDao() { + return Mockito.mock(GuestOSDao.class); + } + + @Bean + public GuestOSCategoryDao guestOsCategoryDao() { + return Mockito.mock(GuestOSCategoryDao.class); + } + + @Bean + public DiskOfferingDao diskOfferingDao() { + return Mockito.mock(DiskOfferingDao.class); + } + + @Bean + public StoragePoolHostDao storagePoolHostDao() { + return Mockito.mock(StoragePoolHostDao.class); + } + + @Bean + public UserVmDao userVmDao() { + return Mockito.mock(UserVmDao.class); + } + + @Bean + public VMInstanceDao vmInstanceDao() { + return Mockito.mock(VMInstanceDao.class); + } + + @Bean + public VolumeDao volumeDao() { + return Mockito.mock(VolumeDao.class); + } + + @Bean + public CapacityManager capacityManager() { + return Mockito.mock(CapacityManager.class); + } + + @Bean + public ConfigurationDao configurationDao() { + return Mockito.mock(ConfigurationDao.class); + } + + @Bean + public PrimaryDataStoreDao primaryDataStoreDao() { + return Mockito.mock(PrimaryDataStoreDao.class); + } + + @Bean + public CapacityDao capacityDao() { + return Mockito.mock(CapacityDao.class); + } + + @Bean + public AccountManager accountManager() { + return Mockito.mock(AccountManager.class); + } + + @Bean + public StorageManager storageManager() { + return Mockito.mock(StorageManager.class); + } + + @Bean + public DataStoreManager dataStoreManager() { + return Mockito.mock(DataStoreManager.class); + } + + @Bean + public ClusterDetailsDao clusterDetailsDao() { + return Mockito.mock(ClusterDetailsDao.class); + } + + @Bean + public ServiceOfferingDao serviceOfferingDao() { + return Mockito.mock(ServiceOfferingDao.class); + } + + @Bean + public ServiceOfferingDetailsDao serviceOfferingDetailsDao() { + return Mockito.mock(ServiceOfferingDetailsDao.class); + } + + @Bean + public ResourceManager resourceManager() { + return Mockito.mock(ResourceManager.class); + } + + public static class Library implements TypeFilter { + @Override + public boolean match(MetadataReader mdr, MetadataReaderFactory arg1) throws IOException { + ComponentScan cs = TestConfiguration.class.getAnnotation(ComponentScan.class); + return SpringUtils.includedInBasePackageClasses(mdr.getClassMetadata().getClassName(), cs); + } + } + } +} \ No newline at end of file diff --git a/setup/db/db/schema-441to450.sql b/setup/db/db/schema-441to450.sql index 41a67556480..dcfcb88ff1f 100644 --- a/setup/db/db/schema-441to450.sql +++ b/setup/db/db/schema-441to450.sql @@ -443,6 +443,8 @@ CREATE VIEW `cloud`.`template_view` AS UPDATE configuration SET value='KVM,XenServer,VMware,BareMetal,Ovm,LXC,Hyperv' WHERE name='hypervisor.list'; UPDATE `cloud`.`configuration` SET description="If set to true, will set guest VM's name as it appears on the hypervisor, to its hostname. The flag is supported for VMware hypervisor only" WHERE name='vm.instancename.flag'; +INSERT IGNORE INTO `cloud`.`configuration`(category, instance, component, name, value, description, default_value) VALUES ('Hidden', 'DEFAULT', 'ImplicitHostTags', 'implicit.host.tags', 'GPU', 'Tag hosts at the time of host disovery based on the host properties/capabilities ', 'GPU') ON DUPLICATE KEY UPDATE category='Hidden'; + DROP VIEW IF EXISTS `cloud`.`domain_router_view`; CREATE VIEW `cloud`.`domain_router_view` AS select From 38e4be8e7bff1d0c5e88bcdb3aecf73b1948d5bd Mon Sep 17 00:00:00 2001 From: Mihaela Stoica Date: Wed, 1 Oct 2014 13:51:44 +0100 Subject: [PATCH 069/129] CLOUDSTACK-7664: [UI] Handle change in API response for listloadbalancer - replaced all occurrences of "listloadbalancerssresponse" with "listloadbalancersresponse" in ui\scripts\vpc.js, following the change in the listLoadBalancers API response string. Signed-off-by: Rohit Yadav (cherry picked from commit ea5c8eed0cb28bc3ec6a371e6e2ffb99d698b12c) --- ui/scripts/vpc.js | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/ui/scripts/vpc.js b/ui/scripts/vpc.js index 3e576312d55..af19d8714eb 100644 --- a/ui/scripts/vpc.js +++ b/ui/scripts/vpc.js @@ -84,7 +84,7 @@ }, async: false, success: function(json) { - assignedInstances = json.listloadbalancerssresponse.loadbalancer[0].loadbalancerinstance; + assignedInstances = json.listloadbalancersresponse.loadbalancer[0].loadbalancerinstance; if (assignedInstances == null) assignedInstances = []; } @@ -773,7 +773,7 @@ networkid: args.context.networks[0].id }, success: function(json) { - var items = json.listloadbalancerssresponse.loadbalancer; + var items = json.listloadbalancersresponse.loadbalancer; if (items != null) { for (var i = 0; i < items.length; i++) { var item = items[i]; @@ -984,7 +984,7 @@ id: args.context.internalLoadBalancers[0].id }, success: function(json) { - var item = json.listloadbalancerssresponse.loadbalancer[0]; + var item = json.listloadbalancersresponse.loadbalancer[0]; //remove Rules tab and add sourceport, instanceport at Details tab because there is only one element in loadbalancerrul array property. item.sourceport = item.loadbalancerrule[0].sourceport; @@ -1015,7 +1015,7 @@ id: args.context.internalLoadBalancers[0].id }, success: function(json) { - var item = json.listloadbalancerssresponse.loadbalancer[0]; + var item = json.listloadbalancersresponse.loadbalancer[0]; args.response.success({ data: item.loadbalancerrule }); } }); @@ -1042,7 +1042,7 @@ id: args.context.internalLoadBalancers[0].id }, success: function(json) { - var item = json.listloadbalancerssresponse.loadbalancer[0]; + var item = json.listloadbalancersresponse.loadbalancer[0]; args.response.success({ data: item.loadbalancerinstance }); @@ -4248,7 +4248,7 @@ networkid: tier.id }, success: function(json) { - internalLoadBalancers = json.listloadbalancerssresponse; + internalLoadBalancers = json.listloadbalancersresponse; }, error: function(json) { error = true; From 3540828d440d690b065c2877a4c1463502a54080 Mon Sep 17 00:00:00 2001 From: Anthony Xu Date: Wed, 1 Oct 2014 16:17:18 -0700 Subject: [PATCH 070/129] added more log for create vm snapshot (cherry picked from commit 70efe1507c3bc1cf6c3a9477bae4f31afc35375f) --- .../hypervisor/xenserver/resource/CitrixResourceBase.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/plugins/hypervisors/xenserver/src/com/cloud/hypervisor/xenserver/resource/CitrixResourceBase.java b/plugins/hypervisors/xenserver/src/com/cloud/hypervisor/xenserver/resource/CitrixResourceBase.java index 07b6f7fdcb2..9313e5673f3 100644 --- a/plugins/hypervisors/xenserver/src/com/cloud/hypervisor/xenserver/resource/CitrixResourceBase.java +++ b/plugins/hypervisors/xenserver/src/com/cloud/hypervisor/xenserver/resource/CitrixResourceBase.java @@ -6380,9 +6380,9 @@ public abstract class CitrixResourceBase implements ServerResource, HypervisorRe msg = licenseKeyWord; } } else { - msg = e.getMessage(); + msg = e.toString(); } - s_logger.error("Creating VM Snapshot " + cmd.getTarget().getSnapshotName() + " failed due to: " + msg); + s_logger.warn("Creating VM Snapshot " + cmd.getTarget().getSnapshotName() + " failed due to: " + msg, e); return new CreateVMSnapshotAnswer(cmd, false, msg); } finally { try { From dba4a8c8373dec0cd4f5ff60f47cf3445a4bab1c Mon Sep 17 00:00:00 2001 From: Hugo Trippaers Date: Wed, 24 Sep 2014 17:24:23 +0200 Subject: [PATCH 071/129] cleaning more conflicts --- .../framework/config/impl/ConfigurationVO.java | 4 ++-- setup/db/db/schema-440to441.sql | 14 ++++++++++++++ 2 files changed, 16 insertions(+), 2 deletions(-) diff --git a/framework/config/src/org/apache/cloudstack/framework/config/impl/ConfigurationVO.java b/framework/config/src/org/apache/cloudstack/framework/config/impl/ConfigurationVO.java index d7edfe0f0c7..cda96c9414a 100644 --- a/framework/config/src/org/apache/cloudstack/framework/config/impl/ConfigurationVO.java +++ b/framework/config/src/org/apache/cloudstack/framework/config/impl/ConfigurationVO.java @@ -43,10 +43,10 @@ public class ConfigurationVO implements Configuration { @Column(name = "name") private String name; - @Column(name = "value", length = 4095) + @Column(name = "value", length = 8191) private String value; - @Column(name = "default_value", length = 4095) + @Column(name = "default_value", length = 8191) private String defaultValue; @Column(name = "description", length = 1024) diff --git a/setup/db/db/schema-440to441.sql b/setup/db/db/schema-440to441.sql index 44605596103..337d5752754 100644 --- a/setup/db/db/schema-440to441.sql +++ b/setup/db/db/schema-440to441.sql @@ -167,3 +167,17 @@ INSERT IGNORE INTO `cloud`.`guest_os_hypervisor` (uuid,hypervisor_type, hypervis INSERT IGNORE INTO `cloud`.`guest_os_hypervisor` (uuid,hypervisor_type, hypervisor_version, guest_os_name, guest_os_id, created, is_user_defined) VALUES (UUID(), 'LXC', 'default', 'FreeBSD 10', 226, now(), 0); INSERT IGNORE INTO `cloud`.`guest_os_hypervisor` (uuid,hypervisor_type, hypervisor_version, guest_os_name, guest_os_id, created, is_user_defined) VALUES (UUID(), 'LXC', 'default', 'Other PV', 139, now(), 0); INSERT IGNORE INTO `cloud`.`guest_os_hypervisor` (uuid,hypervisor_type, hypervisor_version, guest_os_name, guest_os_id, created, is_user_defined) VALUES (UUID(), 'LXC', 'default', 'Other PV', 140, now(), 0); + +-- Add missing OS/hypervisor mapping for OStype added in 4.3.0 and 4.4.0 +INSERT IGNORE INTO `cloud`.`guest_os_hypervisor` (uuid,hypervisor_type, hypervisor_version, guest_os_name, guest_os_id, created, is_user_defined) VALUES (UUID(),'Xenserver', '6.2.0', 'CentOS 6 (32-bit)', 227, now(), 0); +INSERT IGNORE INTO `cloud`.`guest_os_hypervisor` (uuid,hypervisor_type, hypervisor_version, guest_os_name, guest_os_id, created, is_user_defined) VALUES (UUID(),'Xenserver', '6.2.0', 'CentOS 6 (64-bit)', 228, now(), 0); +INSERT IGNORE INTO `cloud`.`guest_os_hypervisor` (uuid,hypervisor_type, hypervisor_version, guest_os_name, guest_os_id, created, is_user_defined) VALUES (UUID(),'Xenserver', '6.2.0', 'Windows 8 (64-bit)', 229, now(), 0); +INSERT IGNORE INTO `cloud`.`guest_os_hypervisor` (uuid,hypervisor_type, hypervisor_version, guest_os_name, guest_os_id, created, is_user_defined) VALUES (UUID(),'Xenserver', '6.2.0', 'Windows Server 2012 (64-bit)', 168, now(), 0); + +INSERT IGNORE INTO `cloud`.`guest_os_hypervisor` (uuid,hypervisor_type, hypervisor_version, guest_os_name, guest_os_id, created, is_user_defined) VALUES (UUID(),'Xenserver', '6.2.5', 'CentOS 6 (32-bit)', 227, now(), 0); +INSERT IGNORE INTO `cloud`.`guest_os_hypervisor` (uuid,hypervisor_type, hypervisor_version, guest_os_name, guest_os_id, created, is_user_defined) VALUES (UUID(),'Xenserver', '6.2.5', 'CentOS 6 (64-bit)', 228, now(), 0); +INSERT IGNORE INTO `cloud`.`guest_os_hypervisor` (uuid,hypervisor_type, hypervisor_version, guest_os_name, guest_os_id, created, is_user_defined) VALUES (UUID(),'Xenserver', '6.2.5', 'Windows 8 (64-bit)', 229, now(), 0); +INSERT IGNORE INTO `cloud`.`guest_os_hypervisor` (uuid,hypervisor_type, hypervisor_version, guest_os_name, guest_os_id, created, is_user_defined) VALUES (UUID(),'Xenserver', '6.2.5', 'Windows Server 2012 (64-bit)', 168, now(), 0); + +-- Fix CLOUDSTACK-7624 +ALTER TABLE `cloud`.`configuration` MODIFY default_value varchar(8191), MODIFY value varchar(8191); From 160aa846a57b528e133626af8ff872a564496ba1 Mon Sep 17 00:00:00 2001 From: Hugo Trippaers Date: Thu, 2 Oct 2014 09:54:53 +0200 Subject: [PATCH 072/129] CLOUDSTACK-7665 File.separator shouldn't be used in this case, the separator is fixed just like the rest of the path (cherry picked from commit 47ac3e4fd1aa9b117b5ce72035e6d09239f1ca4f) --- .../storage/image/TemplateServiceImpl.java | 29 +++++++++---------- 1 file changed, 14 insertions(+), 15 deletions(-) diff --git a/engine/storage/image/src/org/apache/cloudstack/storage/image/TemplateServiceImpl.java b/engine/storage/image/src/org/apache/cloudstack/storage/image/TemplateServiceImpl.java index 4e6ab6ba300..c15cda07cab 100644 --- a/engine/storage/image/src/org/apache/cloudstack/storage/image/TemplateServiceImpl.java +++ b/engine/storage/image/src/org/apache/cloudstack/storage/image/TemplateServiceImpl.java @@ -18,7 +18,6 @@ */ package org.apache.cloudstack.storage.image; -import java.io.File; import java.util.ArrayList; import java.util.Date; import java.util.HashSet; @@ -334,7 +333,7 @@ public class TemplateServiceImpl implements TemplateService { s_logger.info("msg"); if (tmplt.getUrl() == null) { msg = - "Private Template (" + tmplt + ") with install path " + tmpltInfo.getInstallPath() + + "Private Template (" + tmplt + ") with install path " + tmpltInfo.getInstallPath() + "is corrupted, please check in image store: " + tmpltStore.getDataStoreId(); s_logger.warn(msg); } else { @@ -362,22 +361,22 @@ public class TemplateServiceImpl implements TemplateService { long accountId = tmplt.getAccountId(); try { _resourceLimitMgr.checkResourceLimit(_accountMgr.getAccount(accountId), - com.cloud.configuration.Resource.ResourceType.secondary_storage, - tmpltInfo.getSize() - UriUtils.getRemoteSize(tmplt.getUrl())); + com.cloud.configuration.Resource.ResourceType.secondary_storage, + tmpltInfo.getSize() - UriUtils.getRemoteSize(tmplt.getUrl())); } catch (ResourceAllocationException e) { s_logger.warn(e.getMessage()); _alertMgr.sendAlert(AlertManager.AlertType.ALERT_TYPE_RESOURCE_LIMIT_EXCEEDED, zoneId, null, e.getMessage(), e.getMessage()); } finally { _resourceLimitMgr.recalculateResourceCount(accountId, _accountMgr.getAccount(accountId).getDomainId(), - com.cloud.configuration.Resource.ResourceType.secondary_storage.getOrdinal()); + com.cloud.configuration.Resource.ResourceType.secondary_storage.getOrdinal()); } } } _vmTemplateStoreDao.update(tmpltStore.getId(), tmpltStore); } else { tmpltStore = - new TemplateDataStoreVO(storeId, tmplt.getId(), new Date(), 100, Status.DOWNLOADED, null, null, null, tmpltInfo.getInstallPath(), - tmplt.getUrl()); + new TemplateDataStoreVO(storeId, tmplt.getId(), new Date(), 100, Status.DOWNLOADED, null, null, null, tmpltInfo.getInstallPath(), + tmplt.getUrl()); tmpltStore.setSize(tmpltInfo.getSize()); tmpltStore.setPhysicalSize(tmpltInfo.getPhysicalSize()); tmpltStore.setDataStoreRole(store.getRole()); @@ -392,7 +391,7 @@ public class TemplateServiceImpl implements TemplateService { } } else { s_logger.info("Template Sync did not find " + uniqueName + " on image store " + storeId + - ", may request download based on available hypervisor types"); + ", may request download based on available hypervisor types"); if (tmpltStore != null) { if (_storeMgr.isRegionStore(store) && tmpltStore.getDownloadState() == VMTemplateStorageResourceAssoc.Status.DOWNLOADED && tmpltStore.getState() == State.Ready @@ -451,7 +450,7 @@ public class TemplateServiceImpl implements TemplateService { createTemplateAsync(tmpl, store, null); } else { s_logger.info("Skip downloading template " + tmplt.getUniqueName() + " since current data center does not have hypervisor " + - tmplt.getHypervisorType().toString()); + tmplt.getHypervisorType().toString()); } } } @@ -652,8 +651,8 @@ public class TemplateServiceImpl implements TemplateService { // But we need to set default install path so that sync can be done in the right s3 path TemplateInfo templateOnStore = _templateFactory.getTemplate(template, store); String installPath = - TemplateConstants.DEFAULT_TMPLT_ROOT_DIR + "/" + TemplateConstants.DEFAULT_TMPLT_FIRST_LEVEL_DIR + template.getAccountId() + "/" + template.getId() + "/" + - template.getUniqueName(); + TemplateConstants.DEFAULT_TMPLT_ROOT_DIR + "/" + TemplateConstants.DEFAULT_TMPLT_FIRST_LEVEL_DIR + template.getAccountId() + "/" + template.getId() + "/" + + template.getUniqueName(); ((TemplateObject)templateOnStore).setInstallPath(installPath); TemplateOpContext context = new TemplateOpContext(null, (TemplateObject)templateOnStore, future); AsyncCallbackDispatcher caller = AsyncCallbackDispatcher.create(this); @@ -710,7 +709,7 @@ public class TemplateServiceImpl implements TemplateService { TemplateApiResult result = future.get(); if (result.isFailed()) { throw new CloudRuntimeException("sync template from cache to region wide store failed for image store " + store.getName() + ":" + - result.getResult()); + result.getResult()); } _cacheMgr.releaseCacheObject(srcTemplate); // reduce reference count for template on cache, so it can recycled by schedule } catch (Exception ex) { @@ -733,7 +732,7 @@ public class TemplateServiceImpl implements TemplateService { String url = generateCopyUrl(srcTemplate); if (url == null) { s_logger.warn("Unable to start/resume copy of template " + srcTemplate.getUniqueName() + " to " + destStore.getName() + - ", no secondary storage vm in running state in source zone"); + ", no secondary storage vm in running state in source zone"); throw new CloudRuntimeException("No secondary VM in running state in source template zone "); } @@ -877,8 +876,8 @@ public class TemplateServiceImpl implements TemplateService { TemplateDataStoreVO tmpltStore = _vmTemplateStoreDao.findByStoreTemplate(storeId, tmplt.getId()); if (tmpltStore == null) { tmpltStore = - new TemplateDataStoreVO(storeId, tmplt.getId(), new Date(), 100, Status.DOWNLOADED, null, null, null, - TemplateConstants.DEFAULT_SYSTEM_VM_TEMPLATE_PATH + tmplt.getId() + File.separator, tmplt.getUrl()); + new TemplateDataStoreVO(storeId, tmplt.getId(), new Date(), 100, Status.DOWNLOADED, null, null, null, + TemplateConstants.DEFAULT_SYSTEM_VM_TEMPLATE_PATH + tmplt.getId() + '/', tmplt.getUrl()); tmpltStore.setSize(0L); tmpltStore.setPhysicalSize(0); // no size information for // pre-seeded system vm templates From 5990ed461049a51c57e76ff8c9ae1fb3355c3ea3 Mon Sep 17 00:00:00 2001 From: Hugo Trippaers Date: Tue, 30 Sep 2014 14:59:38 +0200 Subject: [PATCH 073/129] Move the PrepareKickstartPxeServerCommand to the core api so other modules can use it. (cherry picked from commit b6401b04f22b0a5b686c7c477da4c6e0fd18df84) Conflicts: plugins/hypervisors/baremetal/src/com/cloud/baremetal/networkservice/BaremetalKickStartServiceImpl.java --- .../agent/api/baremetal}/PrepareKickstartPxeServerCommand.java | 2 +- .../networkservice/BaremetalKickStartPxeResource.java | 1 + .../networkservice/BaremetalKickStartServiceImpl.java | 3 +++ 3 files changed, 5 insertions(+), 1 deletion(-) rename {plugins/hypervisors/baremetal/src/com/cloud/baremetal/networkservice => core/src/com/cloud/agent/api/baremetal}/PrepareKickstartPxeServerCommand.java (97%) diff --git a/plugins/hypervisors/baremetal/src/com/cloud/baremetal/networkservice/PrepareKickstartPxeServerCommand.java b/core/src/com/cloud/agent/api/baremetal/PrepareKickstartPxeServerCommand.java similarity index 97% rename from plugins/hypervisors/baremetal/src/com/cloud/baremetal/networkservice/PrepareKickstartPxeServerCommand.java rename to core/src/com/cloud/agent/api/baremetal/PrepareKickstartPxeServerCommand.java index 4f59a833187..6f7ddad8a72 100755 --- a/plugins/hypervisors/baremetal/src/com/cloud/baremetal/networkservice/PrepareKickstartPxeServerCommand.java +++ b/core/src/com/cloud/agent/api/baremetal/PrepareKickstartPxeServerCommand.java @@ -16,7 +16,7 @@ // under the License. // // Automatically generated by addcopyright.py at 01/29/2013 -package com.cloud.baremetal.networkservice; +package com.cloud.agent.api.baremetal; import com.cloud.agent.api.Command; diff --git a/plugins/hypervisors/baremetal/src/com/cloud/baremetal/networkservice/BaremetalKickStartPxeResource.java b/plugins/hypervisors/baremetal/src/com/cloud/baremetal/networkservice/BaremetalKickStartPxeResource.java index 260f4f16e87..75be5970431 100755 --- a/plugins/hypervisors/baremetal/src/com/cloud/baremetal/networkservice/BaremetalKickStartPxeResource.java +++ b/plugins/hypervisors/baremetal/src/com/cloud/baremetal/networkservice/BaremetalKickStartPxeResource.java @@ -34,6 +34,7 @@ import com.cloud.agent.api.Command; import com.cloud.agent.api.HostVmStateReportEntry; import com.cloud.agent.api.PingCommand; import com.cloud.agent.api.PingRoutingCommand; +import com.cloud.agent.api.baremetal.PrepareKickstartPxeServerCommand; import com.cloud.agent.api.routing.VmDataCommand; import com.cloud.utils.exception.CloudRuntimeException; import com.cloud.utils.script.Script; diff --git a/plugins/hypervisors/baremetal/src/com/cloud/baremetal/networkservice/BaremetalKickStartServiceImpl.java b/plugins/hypervisors/baremetal/src/com/cloud/baremetal/networkservice/BaremetalKickStartServiceImpl.java index bd363f698aa..df066501714 100755 --- a/plugins/hypervisors/baremetal/src/com/cloud/baremetal/networkservice/BaremetalKickStartServiceImpl.java +++ b/plugins/hypervisors/baremetal/src/com/cloud/baremetal/networkservice/BaremetalKickStartServiceImpl.java @@ -30,6 +30,8 @@ import java.util.Map; import javax.ejb.Local; import javax.inject.Inject; +import com.cloud.configuration.Config; + import org.apache.log4j.Logger; import org.apache.cloudstack.api.AddBaremetalKickStartPxeCmd; @@ -39,6 +41,7 @@ import org.apache.cloudstack.framework.config.dao.ConfigurationDao; import com.cloud.agent.api.Answer; import com.cloud.agent.api.baremetal.IpmISetBootDevCommand; +import com.cloud.agent.api.baremetal.PrepareKickstartPxeServerCommand; import com.cloud.agent.api.baremetal.IpmISetBootDevCommand.BootDev; import com.cloud.baremetal.database.BaremetalPxeDao; import com.cloud.baremetal.database.BaremetalPxeVO; From 28f8c41a196ed57752831e7c38079d28304371a7 Mon Sep 17 00:00:00 2001 From: Mihaela Stoica Date: Wed, 1 Oct 2014 08:51:37 +0100 Subject: [PATCH 074/129] CLOUDSTACK-7645: [UI] Fixing incorrect labels, including instances of "???label.*???" - removed duplicate entries in dictionary - added dictionary entries that have been missed during the dictionary split - added missing entries in messages.properties - fixed other localization issues (cherry picked from commit 0646588fc6d5cfc6d9b0da80d8e44697d72005d3) --- .../classes/resources/messages.properties | 93 +++++++++++++++++++ ui/dictionary.jsp | 1 - ui/dictionary2.jsp | 54 +++-------- ui/scripts/configuration.js | 2 +- ui/scripts/storage.js | 2 +- ui/scripts/templates.js | 2 +- ui/scripts/ui-custom/physicalResources.js | 6 +- 7 files changed, 110 insertions(+), 50 deletions(-) diff --git a/client/WEB-INF/classes/resources/messages.properties b/client/WEB-INF/classes/resources/messages.properties index c9eb7ae2466..a76855f763e 100644 --- a/client/WEB-INF/classes/resources/messages.properties +++ b/client/WEB-INF/classes/resources/messages.properties @@ -1524,6 +1524,77 @@ label.vgpu.video.ram=Video RAM label.vgpu.max.resolution=Max resolution label.vgpu.max.vgpu.per.gpu=vGPUs per GPU label.vgpu.remaining.capacity=Remaining capacity +label.routing.host=Routing Host +label.usage.server=Usage Server +label.user.vm=User VM +label.resource.limit.exceeded=Resource Limit Exceeded +label.direct.attached.public.ip=Direct Attached Public IP +label.usage.sanity.result=Usage Sanity Result +label.select.region=Select region +label.info.upper=INFO +label.warn.upper=WARN +label.error.upper=ERROR +label.event.deleted=Event Deleted +label.add.ciscoASA1000v=Add CiscoASA1000v Resource +label.delete.ciscoASA1000v=Delete CiscoASA1000v +label.inside.port.profile=Inside Port Profile +label.archive=Archive +label.event.archived=Event Archived +label.alert.details=Alert details +label.alert.deleted=Alert Deleted +label.alert.archived=Alert Archived +label.volume.details=Volume details +label.volume.migrated=Volume migrated +label.storage.pool=Storage Pool +label.enable.host=Enable Host +label.disable.host=Disable Host +label.copying.iso=Copying ISO +label.add.internal.lb=Add Internal LB +label.internal.lb.details=Internal LB details +label.delete.internal.lb=Delete Internal LB +label.remove.vm.load.balancer=Remove VM from load balancer +label.add.acl.list=Add ACL List +label.add.list.name=ACL List Name +label.add.network.acl.list=Add Network ACL List +label.delete.acl.list=Delete ACL List +label.acl.replaced=ACL replaced +label.ipv4.dns1=IPv4 DNS1 +label.ipv4.dns2=IPv4 DNS2 +label.protocol.number=Protocol Number +label.edit.acl.rule=Edit ACL rule +label.source.ip.address=Source IP Address +label.source.port=Source Port +label.instance.port=Instance Port +label.assigned.vms=Assigned VMs +label.replace.acl=Replace ACL +label.source.nat.supported=SourceNAT Supported +label.acl.name=ACL Name +label.acl.id=ACL ID +label.passive=Passive +label.replace.acl.list=Replace ACL List +label.vswitch.name=vSwitch Name +label.vSwitch.type=vSwitch Type +label.ping.path=Ping Path +label.response.timeout.in.sec=Response Timeout (in sec) +label.health.check.interval.in.sec=Health Check Interval (in sec) +label.healthy.threshold=Healthy Threshold +label.unhealthy.threshold=Unhealthy Threshold +label.other=Other +label.vm.id=VM ID +label.vnmc=VNMC +label.scale.up.policy=SCALE UP POLICY +label.counter=Counter +label.operator=Operator +label.threshold=Threshold +label.load.balancer.type=Load Balancer Type +label.vgpu=VGPU +label.sticky.name=Sticky Name +label.stickiness.method=Stickiness method +label.gslb=GSLB +label.portable.ip=Portable IP +label.internallbvm=InternalLbVm +label.agent.state=Agent State +label.duration.in.sec=Duration(in sec) managed.state=Managed State message.acquire.new.ip.vpc=Please confirm that you would like to acquire a new IP for this VPC. message.acquire.new.ip=Please confirm that you would like to acquire a new IP for this network. @@ -1656,6 +1727,25 @@ message.confirm.enable.provider=Please confirm that you would like to enable thi message.confirm.join.project=Please confirm you wish to join this project. message.confirm.remove.IP.range=Please confirm that you would like to remove this IP range. message.confirm.shutdown.provider=Please confirm that you would like to shutdown this provider +message.confirm.current.guest.CIDR.unchanged=Do you want to keep the current guest network CIDR unchanged? +message.confirm.delete.ciscoASA1000v=Please confirm you want to delete CiscoASA1000v +message.confirm.remove.selected.events=Please confirm you would like to remove the selected events +message.confirm.archive.selected.events=Please confirm you would like to archive the selected events +message.confirm.remove.event=Are you sure you want to remove this event? +message.confirm.archive.event=Please confirm that you want to archive this event. +message.confirm.remove.selected.alerts=Please confirm you would like to remove the selected alerts +message.confirm.archive.selected.alerts=Please confirm you would like to archive the selected alerts +message.confirm.delete.alert=Are you sure you want to delete this alert ? +message.confirm.archive.alert=Please confirm that you want to archive this alert. +message.confirm.migrate.volume=Do you want to migrate this volume? +message.confirm.attach.disk=Are you sure you want to attach disk? +message.confirm.create.volume=Are you sure you want to create volume? +message.confirm.enable.host=Please confirm that you want to enable the host +message.confirm.disable.host=Please confirm that you want to disable the host +message.confirm.delete.internal.lb=Please confirm you want to delete Internal LB +message.confirm.remove.load.balancer=Please confirm you want to remove VM from load balancer +message.confirm.delete.acl.list=Are you sure you want to delete this ACL list? +message.confirm.replace.acl.new.one=Do you want to replace the ACL with a new one? message.copy.iso.confirm=Please confirm that you wish to copy your ISO to message.copy.template=Copy template XXX from zone to message.create.template.vm=Create VM from template @@ -1826,6 +1916,8 @@ message.tooltip.zone.name=A name for the zone. message.update.os.preference=Please choose a OS preference for this host. All virtual instances with similar preferences will be first allocated to this host before choosing another. message.update.resource.count=Please confirm that you want to update resource counts for this account. message.update.ssl=Please submit a new X.509 compliant SSL certificate chain to be updated to each console proxy and secondary storage virtual instance\: +message.update.ssl.succeeded=Update SSL Certificates succeeded +message.update.ssl.failed=Failed to update SSL Certificate. message.validate.instance.name=Instance name can not be longer than 63 characters. Only ASCII letters a~z, A~Z, digits 0~9, hyphen are allowed. Must start with a letter and end with a letter or a digit. message.virtual.network.desc=A dedicated virtualized network for your account. The broadcast domain is contained within a VLAN and all public network access is routed out by a virtual router. message.vm.create.template.confirm=Create Template will reboot the VM automatically. @@ -1944,6 +2036,7 @@ state.Completed=Completed state.Creating=Creating state.Declined=Declined state.Destroyed=Destroyed +state.detached=Detached state.Disabled=Disabled state.Enabled=Enabled state.enabled=Enabled diff --git a/ui/dictionary.jsp b/ui/dictionary.jsp index c03ad67a9e0..7751b1fc271 100644 --- a/ui/dictionary.jsp +++ b/ui/dictionary.jsp @@ -964,7 +964,6 @@ dictionary = { 'label.projects': '', 'label.project.view': '', 'label.protocol': '', -'label.providers': '', 'label.provider': '', 'label.providers': '', 'label.public': '', diff --git a/ui/dictionary2.jsp b/ui/dictionary2.jsp index 39299b3dacc..8f2a378de81 100644 --- a/ui/dictionary2.jsp +++ b/ui/dictionary2.jsp @@ -25,21 +25,6 @@ under the License. <% long now = System.currentTimeMillis(); %>