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 146352e977d6..9eaef1ea8901 100755 --- a/server/src/com/cloud/deploy/DeploymentPlanningManagerImpl.java +++ b/server/src/com/cloud/deploy/DeploymentPlanningManagerImpl.java @@ -403,15 +403,6 @@ public DeployDestination planDeployment(VirtualMachineProfile vmProfile, Deploym 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 @@ public DeployDestination planDeployment(VirtualMachineProfile vmProfile, Deploym 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 a153e7fb0c6a..ae28efad6dbf 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 void releaseVlan(Network nw, VirtualMachineProfile vm) { 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 26f42bee8237..6a54527a8607 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 PingCommand getCurrentStatus(long id) { 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 3b88ca63f0c9..58a05088f25b 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 @@ private boolean preparePxeInAdvancedZone(VirtualMachineProfile profile, NicProfi } 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 10b81c2b3d74..5d20d3130f53 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 @@ 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 boolean prepare(Network network, NicProfile nic, VirtualMachineProfile vm } } + /* if (dest.getDataCenter().getNetworkType() == DataCenter.NetworkType.Advanced){ prepareVlan(network, dest); } + */ return true; } @@ -158,10 +159,12 @@ public boolean release(Network network, NicProfile nic, VirtualMachineProfile vm 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 ceaf25cb57bb..9009b02d3fba --- 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.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 String getSwitchBackendType() { @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 void prepareVlan(BaremetalVlanStruct struct) { } } - 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 void prepareVlan(BaremetalVlanStruct struct) { @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 void removePortFromVlan(BaremetalVlanStruct struct) { 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 @@ private HttpHeaders createBasicAuthenticationHeader(BaremetalVlanStruct struct) 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 22e56692d7d3..f35a16f8e96f 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 5bc1a9380dce..bd9ece69f7ad 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 List getAsList(String elementStr) { 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 String dump() { } 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 f0e8ce312613..321af0ce9c80 --- 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.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 static XmlObject parseFromFile(String filePath) { 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 faaf9803c14f..cbd24b029c4b --- a/utils/test/com/cloud/utils/xmlobject/TestXmlObject.java +++ b/utils/test/com/cloud/utils/xmlobject/TestXmlObject.java @@ -43,11 +43,6 @@ public void test() { } } */ - - 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 | 36 +++----- .../VirtualNetworkApplianceManagerImpl.java | 4 +- 8 files changed, 15 insertions(+), 209 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 3a1d58a66a6e..7477152b706f 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 629153a2b38d..5db29d2fd69f 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 @@ 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 d4a75dc7732d..f6a41133e3a3 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.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 boolean postStateTransitionEvent(State oldState, Event event, State newSt 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 6a54527a8607..fedfb8bd9f65 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.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 boolean configure(String name, Map params) throws Configu 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 @@ protected StartAnswer execute(StartCommand cmd) { } } - 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 58a05088f25b..bd363f698aad 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 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 @@ private boolean preparePxeInAdvancedZone(VirtualMachineProfile profile, NicProfi 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 9cb4b57bbafc..000000000000 --- 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 9309e3aba3ce..1f15d39f81ea 100755 --- a/server/src/com/cloud/configuration/Config.java +++ b/server/src/com/cloud/configuration/Config.java @@ -1849,37 +1849,29 @@ public enum Config { "The maximum number of retrying times to search for an available IPv6 address in the table", null), - BaremetalInternalStorageServer( - "Advanced", - ManagementServer.class, - String.class, - "baremetal.internal.storage.server.ip", - null, - "the ip address of server that stores kickstart file, kernel, initrd, ISO for advanced networking baremetal provisioning", - null), - BaremetalProvisionDoneNotificationEnabled( + BaremetalEnableCompleteNotification( "Advanced", ManagementServer.class, Boolean.class, - "baremetal.provision.done.notification.enabled", - "true", - "whether to enable baremetal provison done notification", + "baremetal.provision.done.notification", + "false", + "Enable provision done notification through virtual router", null), - BaremetalProvisionDoneNotificationTimeout( + BaremetalPeerHypervisorType( "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", + 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), - BaremetalProvisionDoneNotificationPort( + BaremetalInternalStorageServer( "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", + String.class, + "baremetal.internal.storage.server.ip", + null, + "the ip address of server that stores kickstart file, kernel, initrd, ISO for advanced networking baremetal provisioning", null), ExternalBaremetalSystemUrl( "Advanced", diff --git a/server/src/com/cloud/network/router/VirtualNetworkApplianceManagerImpl.java b/server/src/com/cloud/network/router/VirtualNetworkApplianceManagerImpl.java index 898aec9a6a59..c95867e04b93 100755 --- a/server/src/com/cloud/network/router/VirtualNetworkApplianceManagerImpl.java +++ b/server/src/com/cloud/network/router/VirtualNetworkApplianceManagerImpl.java @@ -2323,7 +2323,7 @@ public boolean finalizeVirtualMachineProfile(final VirtualMachineProfile profile } } - if (Boolean.valueOf(_configDao.getValue(Config.BaremetalProvisionDoneNotificationEnabled.key()))) { + if (Boolean.valueOf(_configDao.getValue("baremetal.provision.done.notification"))) { QueryBuilder acntq = QueryBuilder.create(UserVO.class); acntq.and(acntq.entity().getUsername(), SearchCriteria.Op.EQ, "baremetal-system-account"); UserVO user = acntq.find(); @@ -2332,8 +2332,6 @@ public boolean finalizeVirtualMachineProfile(final VirtualMachineProfile profile } else { buf.append(String.format(" baremetalnotificationsecuritykey=%s", user.getSecretKey())); buf.append(String.format(" baremetalnotificationapikey=%s", user.getApiKey())); - buf.append(" host=").append(ApiServiceConfiguration.ManagementHostIPAdr.value()); - buf.append(" port=").append(_configDao.getValue(Config.BaremetalProvisionDoneNotificationPort.key())); } } From f456cda8cc337fc7b13dc53c9a0a274cd1e851a7 Mon Sep 17 00:00:00 2001 From: Gabor Apati-Nagy Date: Tue, 16 Sep 2014 18:08:36 +0100 Subject: [PATCH 004/129] CLOUDSTACK-7561: UI: After creating a new account, the "Add Account" dialog remains open -Removed unused code that was causing javascript exception Signed-off-by: Brian Federle (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 f0221932706c..6b0dd19682fa 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 9b0086f66870..b6c94f833760 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 59119f15c6e4..b1e2575a0c34 100644 --- a/test/integration/component/test_acl_isolatednetwork.py +++ b/test/integration/component/test_acl_isolatednetwork.py @@ -357,7 +357,7 @@ def tearDown(cls): ## 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 @@ def test_01_createNetwork_admin(self): "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 @@ def test_02_createNetwork_admin_foruserinsamedomain(self): 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 @@ def test_03_createNetwork_admin_foruserinotherdomain(self): ## 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 @@ def test_04_createNetwork_domaindmin(self): "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 @@ def test_05_createNetwork_domaindmin_foruserinsamedomain(self): 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 @@ def test_06_createNetwork_domaindmin_foruserinsubdomain(self): 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 @@ def test_07_createNetwork_domaindmin_forcrossdomainuser(self): ## 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 @@ def test_08_createNetwork_user(self): "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 @@ def test_09_createNetwork_user_foruserinsamedomain(self): 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 @@ def test_10_createNetwork_user_foruserinotherdomain(self): ## 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 @@ def test_11_deployvm_admin(self): "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 @@ def test_12_deployvm_admin_foruserinsamedomain(self): 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 @@ def test_13_deployvm_admin_foruserinotherdomain(self): 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 @@ def test_13_1_deployvm_admin_foruserinotherdomain_crossnetwork(self): ## 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 @@ def test_14_deployvm_domaindmin(self): "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 @@ def test_15_deployvm_domaindmin_foruserinsamedomain(self): 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 @@ def test_16_deployvm_domaindmin_foruserinsubdomain(self): 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 @@ def test_17_deployvm_domaindmin_forcrossdomainuser(self): 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 @@ def test_17_1_deployvm_domainadmin_foruserinotherdomain_crossnetwork(self): ## 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 @@ def test_18_deployvm_user(self): "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 @@ def test_19_deployvm_user_foruserinsamedomain(self): 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 @@ def test_20_deployvm_user_foruserincrossdomain(self): 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 @@ def test_20_1_deployvm_user_incrossnetwork(self): ## 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 @@ def test_21_restartNetwork_admin(self): "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 @@ def test_22_restartNetwork_admin_foruserinsamedomain(self): 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 @@ def test_23_restartNetwork_admin_foruserinotherdomain(self): ## 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 @@ def test_24_restartNetwork_domaindmin(self): "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 @@ def test_25_restartNetwork_domaindmin_foruserinsamedomain(self): 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 @@ def test_26_restartNetwork_domaindmin_foruserinsubdomain(self): 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 @@ def test_27_restartNetwork_domaindmin_forcrossdomainuser(self): ## 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 @@ def test_28_restartNetwork_user(self): "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 @@ def test_29_restartNetwork_user_foruserinsamedomain(self): 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 3d09390c1ab9..9d34e88f0c0f 100644 --- a/test/integration/component/test_acl_isolatednetwork_delete.py +++ b/test/integration/component/test_acl_isolatednetwork_delete.py @@ -343,7 +343,7 @@ def tearDown(cls): ## 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 @@ def test_deleteNetwork_admin(self): "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 @@ def test_deleteNetwork_admin_foruserinsamedomain(self): 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 @@ def test_deleteNetwork_admin_foruserinotherdomain(self): ## 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 @@ def test_deleteNetwork_domaindmin(self): "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 @@ def test_deleteNetwork_domaindmin_foruserinsamedomain(self): 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 @@ def test_deleteNetwork_domaindmin_foruserinsubdomain(self): 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 @@ def test_deleteNetwork_domaindmin_forcrossdomainuser(self): ## 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 @@ def test_deleteNetwork_user(self): "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 @@ def test_deleteNetwork_user_foruserinsamedomain(self): 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 ac8748d0b4f6..394072d9c64f 100644 --- a/test/integration/component/test_acl_listsnapshot.py +++ b/test/integration/component/test_acl_listsnapshot.py @@ -384,7 +384,7 @@ def tearDown(cls): ## 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 @@ def test_listSnapshot_as_domainadmin_listall_true(self): 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 @@ def test_listSnapshot_as_domainadmin_listall_true_rec_true(self): 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 @@ def test_listSnapshot_as_domainadmin_listall_true_rec_false(self): ## 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 @@ def test_listSnapshot_as_domainadmin_listall_false(self): 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 @@ def test_listSnapshot_as_domainadmin_listall_false_rec_true(self): 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 @@ def test_listSnapshot_as_domainadmin_listall_false_rec_false(self): ## 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 @@ def test_listSnapshot_as_domainadmin(self): 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 @@ def test_listSnapshot_as_domainadmin_rec_true(self): 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 @@ def test_listSnapshot_as_domainadmin_true_rec_false(self): ## 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 @@ def test_listSnapshot_as_domainadmin_domainid_listall_true(self): 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 @@ def test_listSnapshot_as_domainadmin_domainid_listall_true_rec_true(self): 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 @@ def test_listSnapshot_as_domainadmin_domainid_listall_true_rec_false(self): ## 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 @@ def test_listSnapshot_as_domainadmin_domainid_listall_false(self): 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 @@ def test_listSnapshot_as_domainadmin_domainid_listall_false_rec_true(self): 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 @@ def test_listSnapshot_as_domainadmin_domainid_listall_false_rec_false(self): ## 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 @@ def test_listSnapshot_as_domainadmin_domainid(self): 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 @@ def test_listSnapshot_as_domainadmin_domainid_rec_true(self): 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 @@ def test_listSnapshot_as_domainadmin_domainid_rec_false(self): ## 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 @@ def test_listSnapshot_as_domainadmin_domainid_accountid_listall_true(self): 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 @@ def test_listSnapshot_as_domainadmin_domainid_accountid_listall_true_rec_true(se 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 @@ def test_listSnapshot_as_domainadmin_domainid_accountid_listall_true_rec_false(s ## 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 @@ def test_listSnapshot_as_domainadmin_domainid_accountid_listall_false(self): 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 @@ def test_listSnapshot_as_domainadmin_domainid_accountid_listall_false_rec_true(s 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 @@ def test_listSnapshot_as_domainadmin_domainid_accountid_listall_false_rec_false( ## 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 @@ def test_listSnapshot_as_domainadmin_domainid_accountid(self): 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 @@ def test_listSnapshot_as_domainadmin_domainid_accountid_rec_true(self): 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 @@ def test_listSnapshot_as_domainadmin_domainid_accountid_rec_false(self): ## 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 @@ def test_listSnapshot_as_rootadmin_listall_true(self): 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 @@ def test_listSnapshot_as_rootadmin_listall_true_rec_true(self): 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 @@ def test_listSnapshot_as_rootadmin_listall_true_rec_false(self): ## 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 @@ def test_listSnapshot_as_rootadmin_listall_false(self): 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 @@ def test_listSnapshot_as_rootadmin_listall_false_rec_true(self): "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 @@ def test_listSnapshot_as_rootadmin_listall_false_rec_false(self): ## 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 @@ def test_listSnapshot_as_rootadmin(self): 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 @@ def test_listSnapshot_as_rootadmin_rec_true(self): 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 @@ def test_listSnapshot_as_rootadmin_rec_false(self): ## 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 @@ def test_listSnapshot_as_rootadmin_domainid_listall_true(self): 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 @@ def test_listSnapshot_as_rootadmin_domainid_listall_true_rec_true(self): 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 @@ def test_listSnapshot_as_rootadmin_domainid_listall_true_rec_false(self): ## 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 @@ def test_listSnapshot_as_rootadmin_domainid_listall_false(self): 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 @@ def test_listSnapshot_as_rootadmin_domainid_listall_false_rec_true(self): 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 @@ def test_listSnapshot_as_rootadmin_domainid_listall_false_rec_false(self): ## 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 @@ def test_listSnapshot_as_rootadmin_domainid(self): 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 @@ def test_listSnapshot_as_rootadmin_domainid_rec_true(self): 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 @@ def test_listSnapshot_as_rootadmin_domainid_rec_false(self): ## 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 @@ def test_listSnapshot_as_rootadmin_domainid_accountid_listall_true(self): 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 @@ def test_listSnapshot_as_rootadmin_domainid_accountid_listall_true_rec_true(self 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 @@ def test_listSnapshot_as_rootadmin_domainid_accountid_listall_true_rec_false(sel ## 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 @@ def test_listSnapshot_as_rootadmin_domainid_accountid_listall_false(self): 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 @@ def test_listSnapshot_as_rootadmin_domainid_accountid_listall_false_rec_true(sel 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 @@ def test_listSnapshot_as_rootadmin_domainid_accountid_listall_false_rec_false(se ## 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 @@ def test_listSnapshot_as_rootadmin_domainid_accountid(self): 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 @@ def test_listSnapshot_as_rootadmin_domainid_accountid_rec_true(self): 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 @@ def test_listSnapshot_as_rootadmin_domainid_accountid_rec_false(self): ## 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 @@ def test_listSnapshot_as_regularuser_listall_true(self): 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 @@ def test_listSnapshot_as_regularuser_listall_true_rec_true(self): 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 @@ def test_listSnapshot_as_regularuser_listall_true_rec_false(self): ## 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 @@ def test_listSnapshot_as_regularuser_listall_false(self): 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 @@ def test_listSnapshot_as_regularuser_listall_false_rec_true(self): "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 @@ def test_listSnapshot_as_regularuser_listall_false_rec_false(self): ## 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 @@ def test_listSnapshot_as_regularuser(self): 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 @@ def test_listSnapshot_as_regularuser_rec_true(self): 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 @@ def test_listSnapshot_as_regularuser_rec_false(self): ## 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 @@ def test_listSnapshot_as_regularuser_domainid_listall_true(self): 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 @@ def test_listSnapshot_as_regularuser_domainid_listall_true_rec_true(self): 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 @@ def test_listSnapshot_as_regularuser_domainid_listall_true_rec_false(self): ## 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 @@ def test_listSnapshot_as_regularuser_domainid_listall_false(self): "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 @@ def test_listSnapshot_as_regularuser_domainid_listall_false_rec_true(self): - @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 @@ def test_listSnapshot_as_regularuser_domainid_listall_false_rec_false(self): ## 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 @@ def test_listSnapshot_as_regularuser_domainid(self): "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 @@ def test_listSnapshot_as_regularuser_domainid_true_rec_true(self): - @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 @@ def test_listSnapshot_as_regularuser_domainid__rec_false(self): ## 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 @@ def test_listSnapshot_as_regularuser_domainid_accountid_listall_true(self): 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 @@ def test_listSnapshot_as_regularuser_domainid_accountid_listall_true_rec_true(se 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 @@ def test_listSnapshot_as_regularuser_domainid_accountid_listall_true_rec_false(s ## 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 @@ def test_listSnapshot_as_regularuser_domainid_accountid_listall_false(self): "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 @@ def test_listSnapshot_as_regularuser_domainid_accountid_listall_false_rec_true(s 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 @@ def test_listSnapshot_as_regularuser_domainid_accountid_listall_false_rec_false( ## 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 @@ def test_listSnapshot_as_regularuser_domainid_accountid(self): "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 @@ def test_listSnapshot_as_regularuser_domainid_accountid_rec_true(self): "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 @@ def test_listSnapshot_as_regularuser_domainid_accountid_rec_false(self): ## 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 @@ def test_listSnapshot_as_regularuser_cross_domainid_accountid(self): 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 @@ def test_listSnapshot_as_regularuser_cross_domainid(self): 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 @@ def test_listSnapshot_as_domainadmin_cross_domainid_accountid(self): 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 @@ def test_listSnapshot_as_domainadmin_cross_domainid(self): ## 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 @@ def test_listSnapshot_by_id_as_domainadmin_owns(self): 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 @@ def test_listSnapshot_by_id_as_domainadmin_ownedbyusersindomain(self): 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 @@ def test_listSnapshot_by_id_as_domainadmin_ownedbyusersinsubdomain(self): 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 @@ def test_listSnapshot_by_id_as_domainadmin_ownedbyusersnotindomain(self): 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 @@ def test_listSnapshot_by_id_as_domainadmin_ownedbyusersinsubdomain2(self): "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 @@ def test_listSnapshot_by_id_as_rootadmin_owns(self): 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 @@ def test_listSnapshot_by_id_as_rootadmin_Snapshotsownedbyothers(self): 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 @@ def test_listSnapshot_by_id_as_user_own(self): 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 @@ def test_listSnapshot_by_id_as_user_snapshotfromsamedomaindifferentaccount(self) 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 398f98af0599..de997183aa48 100644 --- a/test/integration/component/test_acl_listvm.py +++ b/test/integration/component/test_acl_listvm.py @@ -360,7 +360,7 @@ def tearDown(cls): ## 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 @@ def test_listVM_as_domainadmin_listall_true(self): 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 @@ def test_listVM_as_domainadmin_listall_true_rec_true(self): 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 @@ def test_listVM_as_domainadmin_listall_true_rec_false(self): ## 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 @@ def test_listVM_as_domainadmin_listall_false(self): 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 @@ def test_listVM_as_domainadmin_listall_false_rec_true(self): 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 @@ def test_listVM_as_domainadmin_listall_false_rec_false(self): ## 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 @@ def test_listVM_as_domainadmin(self): 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 @@ def test_listVM_as_domainadmin_rec_true(self): 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 @@ def test_listVM_as_domainadmin_true_rec_false(self): ## 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 @@ def test_listVM_as_domainadmin_domainid_listall_true(self): 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 @@ def test_listVM_as_domainadmin_domainid_listall_true_rec_true(self): 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 @@ def test_listVM_as_domainadmin_domainid_listall_true_rec_false(self): ## 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 @@ def test_listVM_as_domainadmin_domainid_listall_false(self): 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 @@ def test_listVM_as_domainadmin_domainid_listall_false_rec_true(self): 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 @@ def test_listVM_as_domainadmin_domainid_listall_false_rec_false(self): ## 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 @@ def test_listVM_as_domainadmin_domainid(self): 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 @@ def test_listVM_as_domainadmin_domainid_rec_true(self): 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 @@ def test_listVM_as_domainadmin_domainid_rec_false(self): ## 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 @@ def test_listVM_as_domainadmin_domainid_accountid_listall_true(self): 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 @@ def test_listVM_as_domainadmin_domainid_accountid_listall_true_rec_true(self): 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 @@ def test_listVM_as_domainadmin_domainid_accountid_listall_true_rec_false(self): ## 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 @@ def test_listVM_as_domainadmin_domainid_accountid_listall_false(self): 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 @@ def test_listVM_as_domainadmin_domainid_accountid_listall_false_rec_true(self): 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 @@ def test_listVM_as_domainadmin_domainid_accountid_listall_false_rec_false(self): ## 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 @@ def test_listVM_as_domainadmin_domainid_accountid(self): 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 @@ def test_listVM_as_domainadmin_domainid_accountid_rec_true(self): 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 @@ def test_listVM_as_domainadmin_domainid_accountid_rec_false(self): ## 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 @@ def test_listVM_as_rootadmin_listall_true(self): 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 @@ def test_listVM_as_rootadmin_listall_true_rec_true(self): 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 @@ def test_listVM_as_rootadmin_listall_true_rec_false(self): ## 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 @@ def test_listVM_as_rootadmin_listall_false(self): 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 @@ def test_listVM_as_rootadmin_listall_false_rec_true(self): "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 @@ def test_listVM_as_rootadmin_listall_false_rec_false(self): ## 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 @@ def test_listVM_as_rootadmin(self): 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 @@ def test_listVM_as_rootadmin_rec_true(self): 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 @@ def test_listVM_as_rootadmin_rec_false(self): ## 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 @@ def test_listVM_as_rootadmin_domainid_listall_true(self): 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 @@ def test_listVM_as_rootadmin_domainid_listall_true_rec_true(self): 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 @@ def test_listVM_as_rootadmin_domainid_listall_true_rec_false(self): ## 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 @@ def test_listVM_as_rootadmin_domainid_listall_false(self): 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 @@ def test_listVM_as_rootadmin_domainid_listall_false_rec_true(self): 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 @@ def test_listVM_as_rootadmin_domainid_listall_false_rec_false(self): ## 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 @@ def test_listVM_as_rootadmin_domainid(self): 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 @@ def test_listVM_as_rootadmin_domainid_rec_true(self): 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 @@ def test_listVM_as_rootadmin_domainid_rec_false(self): ## 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 @@ def test_listVM_as_rootadmin_domainid_accountid_listall_true(self): 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 @@ def test_listVM_as_rootadmin_domainid_accountid_listall_true_rec_true(self): 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 @@ def test_listVM_as_rootadmin_domainid_accountid_listall_true_rec_false(self): ## 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 @@ def test_listVM_as_rootadmin_domainid_accountid_listall_false(self): 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 @@ def test_listVM_as_rootadmin_domainid_accountid_listall_false_rec_true(self): 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 @@ def test_listVM_as_rootadmin_domainid_accountid_listall_false_rec_false(self): ## 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 @@ def test_listVM_as_rootadmin_domainid_accountid(self): 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 @@ def test_listVM_as_rootadmin_domainid_accountid_rec_true(self): 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 @@ def test_listVM_as_rootadmin_domainid_accountid_rec_false(self): ## 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 @@ def test_listVM_as_regularuser_listall_true(self): 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 @@ def test_listVM_as_regularuser_listall_true_rec_true(self): 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 @@ def test_listVM_as_regularuser_listall_true_rec_false(self): ## 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 @@ def test_listVM_as_regularuser_listall_false(self): 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 @@ def test_listVM_as_regularuser_listall_false_rec_true(self): "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 @@ def test_listVM_as_regularuser_listall_false_rec_false(self): ## 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 @@ def test_listVM_as_regularuser(self): 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 @@ def test_listVM_as_regularuser_rec_true(self): 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 @@ def test_listVM_as_regularuser_rec_false(self): ## 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 @@ def test_listVM_as_regularuser_domainid_listall_true(self): 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 @@ def test_listVM_as_regularuser_domainid_listall_true_rec_true(self): 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 @@ def test_listVM_as_regularuser_domainid_listall_true_rec_false(self): ## 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 @@ def test_listVM_as_regularuser_domainid_listall_false(self): "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 @@ def test_listVM_as_regularuser_domainid_listall_false_rec_true(self): - @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 @@ def test_listVM_as_regularuser_domainid_listall_false_rec_false(self): ## 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 @@ def test_listVM_as_regularuser_domainid(self): "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 @@ def test_listVM_as_regularuser_domainid_true_rec_true(self): - @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 @@ def test_listVM_as_regularuser_domainid__rec_false(self): ## 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 @@ def test_listVM_as_regularuser_domainid_accountid_listall_true(self): 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 @@ def test_listVM_as_regularuser_domainid_accountid_listall_true_rec_true(self): 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 @@ def test_listVM_as_regularuser_domainid_accountid_listall_true_rec_false(self): ## 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 @@ def test_listVM_as_regularuser_domainid_accountid_listall_false(self): "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 @@ def test_listVM_as_regularuser_domainid_accountid_listall_false_rec_true(self): 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 @@ def test_listVM_as_regularuser_domainid_accountid_listall_false_rec_false(self): ## 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 @@ def test_listVM_as_regularuser_domainid_accountid(self): "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 @@ def test_listVM_as_regularuser_domainid_accountid_rec_true(self): "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 @@ def test_listVM_as_regularuser_domainid_accountid_rec_false(self): ## 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 @@ def test_listVM_as_regularuser_cross_domainid_accountid(self): 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 @@ def test_listVM_as_regularuser_cross_domainid(self): 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 @@ def test_listVM_as_domainadmin_cross_domainid_accountid(self): 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 @@ def test_listVM_as_domainadmin_cross_domainid(self): ## 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 @@ def test_listVM_by_id_as_domainadmin_owns(self): 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 @@ def test_listVM_by_id_as_domainadmin_ownedbyusersindomain(self): 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 @@ def test_listVM_by_id_as_domainadmin_ownedbyusersinsubdomain(self): 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 @@ def test_listVM_by_id_as_domainadmin_ownedbyusersnotindomain(self): 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 @@ def test_listVM_by_id_as_domainadmin_ownedbyusersinsubdomain2(self): "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 @@ def test_listVM_by_id_as_rootadmin_owns(self): 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 @@ def test_listVM_by_id_as_rootadmin_Vmsownedbyothers(self): 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 @@ def test_listVM_by_id_as_user_own(self): 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 @@ def test_listVM_by_id_as_user_vmfromsamedomaindifferentaccount(self): 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 e52758255150..65a1201571d6 100644 --- a/test/integration/component/test_acl_listvolume.py +++ b/test/integration/component/test_acl_listvolume.py @@ -374,7 +374,7 @@ def tearDown(cls): ## 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 @@ def test_listVolume_as_domainadmin_listall_true(self): 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 @@ def test_listVolume_as_domainadmin_listall_true_rec_true(self): 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 @@ def test_listVolume_as_domainadmin_listall_true_rec_false(self): ## 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 @@ def test_listVolume_as_domainadmin_listall_false(self): 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 @@ def test_listVolume_as_domainadmin_listall_false_rec_true(self): 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 @@ def test_listVolume_as_domainadmin_listall_false_rec_false(self): ## 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 @@ def test_listVolume_as_domainadmin(self): 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 @@ def test_listVolume_as_domainadmin_rec_true(self): 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 @@ def test_listVolume_as_domainadmin_true_rec_false(self): ## 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 @@ def test_listVolume_as_domainadmin_domainid_listall_true(self): 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 @@ def test_listVolume_as_domainadmin_domainid_listall_true_rec_true(self): 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 @@ def test_listVolume_as_domainadmin_domainid_listall_true_rec_false(self): ## 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 @@ def test_listVolume_as_domainadmin_domainid_listall_false(self): 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 @@ def test_listVolume_as_domainadmin_domainid_listall_false_rec_true(self): 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 @@ def test_listVolume_as_domainadmin_domainid_listall_false_rec_false(self): ## 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 @@ def test_listVolume_as_domainadmin_domainid(self): 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 @@ def test_listVolume_as_domainadmin_domainid_rec_true(self): 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 @@ def test_listVolume_as_domainadmin_domainid_rec_false(self): ## 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 @@ def test_listVolume_as_domainadmin_domainid_accountid_listall_true(self): 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 @@ def test_listVolume_as_domainadmin_domainid_accountid_listall_true_rec_true(self 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 @@ def test_listVolume_as_domainadmin_domainid_accountid_listall_true_rec_false(sel ## 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 @@ def test_listVolume_as_domainadmin_domainid_accountid_listall_false(self): 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 @@ def test_listVolume_as_domainadmin_domainid_accountid_listall_false_rec_true(sel 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 @@ def test_listVolume_as_domainadmin_domainid_accountid_listall_false_rec_false(se ## 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 @@ def test_listVolume_as_domainadmin_domainid_accountid(self): 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 @@ def test_listVolume_as_domainadmin_domainid_accountid_rec_true(self): 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 @@ def test_listVolume_as_domainadmin_domainid_accountid_rec_false(self): ## 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 @@ def test_listVolume_as_rootadmin_listall_true(self): 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 @@ def test_listVolume_as_rootadmin_listall_true_rec_true(self): 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 @@ def test_listVolume_as_rootadmin_listall_true_rec_false(self): ## 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 @@ def test_listVolume_as_rootadmin_listall_false(self): 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 @@ def test_listVolume_as_rootadmin_listall_false_rec_true(self): "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 @@ def test_listVolume_as_rootadmin_listall_false_rec_false(self): ## 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 @@ def test_listVolume_as_rootadmin(self): 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 @@ def test_listVolume_as_rootadmin_rec_true(self): 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 @@ def test_listVolume_as_rootadmin_rec_false(self): ## 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 @@ def test_listVolume_as_rootadmin_domainid_listall_true(self): 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 @@ def test_listVolume_as_rootadmin_domainid_listall_true_rec_true(self): 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 @@ def test_listVolume_as_rootadmin_domainid_listall_true_rec_false(self): ## 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 @@ def test_listVolume_as_rootadmin_domainid_listall_false(self): 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 @@ def test_listVolume_as_rootadmin_domainid_listall_false_rec_true(self): 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 @@ def test_listVolume_as_rootadmin_domainid_listall_false_rec_false(self): ## 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 @@ def test_listVolume_as_rootadmin_domainid(self): 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 @@ def test_listVolume_as_rootadmin_domainid_rec_true(self): 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 @@ def test_listVolume_as_rootadmin_domainid_rec_false(self): ## 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 @@ def test_listVolume_as_rootadmin_domainid_accountid_listall_true(self): 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 @@ def test_listVolume_as_rootadmin_domainid_accountid_listall_true_rec_true(self): 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 @@ def test_listVolume_as_rootadmin_domainid_accountid_listall_true_rec_false(self) ## 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 @@ def test_listVolume_as_rootadmin_domainid_accountid_listall_false(self): 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 @@ def test_listVolume_as_rootadmin_domainid_accountid_listall_false_rec_true(self) 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 @@ def test_listVolume_as_rootadmin_domainid_accountid_listall_false_rec_false(self ## 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 @@ def test_listVolume_as_rootadmin_domainid_accountid(self): 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 @@ def test_listVolume_as_rootadmin_domainid_accountid_rec_true(self): 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 @@ def test_listVolume_as_rootadmin_domainid_accountid_rec_false(self): ## 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 @@ def test_listVolume_as_regularuser_listall_true(self): 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 @@ def test_listVolume_as_regularuser_listall_true_rec_true(self): 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 @@ def test_listVolume_as_regularuser_listall_true_rec_false(self): ## 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 @@ def test_listVolume_as_regularuser_listall_false(self): 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 @@ def test_listVolume_as_regularuser_listall_false_rec_true(self): "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 @@ def test_listVolume_as_regularuser_listall_false_rec_false(self): ## 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 @@ def test_listVolume_as_regularuser(self): 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 @@ def test_listVolume_as_regularuser_rec_true(self): 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 @@ def test_listVolume_as_regularuser_rec_false(self): ## 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 @@ def test_listVolume_as_regularuser_domainid_listall_true(self): 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 @@ def test_listVolume_as_regularuser_domainid_listall_true_rec_true(self): 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 @@ def test_listVolume_as_regularuser_domainid_listall_true_rec_false(self): ## 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 @@ def test_listVolume_as_regularuser_domainid_listall_false(self): "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 @@ def test_listVolume_as_regularuser_domainid_listall_false_rec_true(self): - @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 @@ def test_listVolume_as_regularuser_domainid_listall_false_rec_false(self): ## 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 @@ def test_listVolume_as_regularuser_domainid(self): "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 @@ def test_listVolume_as_regularuser_domainid_true_rec_true(self): - @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 @@ def test_listVolume_as_regularuser_domainid__rec_false(self): ## 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 @@ def test_listVolume_as_regularuser_domainid_accountid_listall_true(self): 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 @@ def test_listVolume_as_regularuser_domainid_accountid_listall_true_rec_true(self 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 @@ def test_listVolume_as_regularuser_domainid_accountid_listall_true_rec_false(sel ## 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 @@ def test_listVolume_as_regularuser_domainid_accountid_listall_false(self): "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 @@ def test_listVolume_as_regularuser_domainid_accountid_listall_false_rec_true(sel 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 @@ def test_listVolume_as_regularuser_domainid_accountid_listall_false_rec_false(se ## 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 @@ def test_listVolume_as_regularuser_domainid_accountid(self): "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 @@ def test_listVolume_as_regularuser_domainid_accountid_rec_true(self): "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 @@ def test_listVolume_as_regularuser_domainid_accountid_rec_false(self): ## 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 @@ def test_listVolume_as_regularuser_cross_domainid_accountid(self): 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 @@ def test_listVolume_as_regularuser_cross_domainid(self): 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 @@ def test_listVolume_as_domainadmin_cross_domainid_accountid(self): 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 @@ def test_listVolume_as_domainadmin_cross_domainid(self): ## 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 @@ def test_listVolume_by_id_as_domainadmin_owns(self): 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 @@ def test_listVolume_by_id_as_domainadmin_ownedbyusersindomain(self): 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 @@ def test_listVolume_by_id_as_domainadmin_ownedbyusersinsubdomain(self): 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 @@ def test_listVolume_by_id_as_domainadmin_ownedbyusersnotindomain(self): 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 @@ def test_listVolume_by_id_as_domainadmin_ownedbyusersinsubdomain2(self): "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 @@ def test_listVolume_by_id_as_rootadmin_owns(self): 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 @@ def test_listVolume_by_id_as_rootadmin_Volumesownedbyothers(self): 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 @@ def test_listVolume_by_id_as_user_own(self): 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 @@ def test_listVolume_by_id_as_user_volumefromsamedomaindifferentaccount(self): 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 5d57f301ba50..b74405e79a4f 100644 --- a/test/integration/component/test_acl_sharednetwork.py +++ b/test/integration/component/test_acl_sharednetwork.py @@ -343,7 +343,7 @@ def tearDown(cls): ## 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 @@ def test_deployVM_in_sharedNetwork_scope_all_domainuser(self): "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 @@ def test_deployVM_in_sharedNetwork_scope_all_domainadminuser(self): "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 @@ def test_deployVM_in_sharedNetwork_scope_all_subdomainuser(self): 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 @@ def test_deployVM_in_sharedNetwork_scope_all_subdomainadminuser(self): "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 @@ def test_deployVM_in_sharedNetwork_scope_all_ROOTuser(self): 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 @@ def test_deployVM_in_sharedNetwork_scope_all_ROOTadmin(self): ## 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 @@ def test_deployVM_in_sharedNetwork_scope_domain_nosubdomainaccess_domainuser(sel "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 @@ def test_deployVM_in_sharedNetwork_scope_domain_nosubdomainaccess_domainadminuse 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 @@ def test_deployVM_in_sharedNetwork_scope_domain_nosubdomainaccess_subdomainuser( 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 @@ def test_deployVM_in_sharedNetwork_scope_domain_nosubdomainaccess_subdomainadmin - @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 @@ def test_deployVM_in_sharedNetwork_scope_domain_nosubdomainaccess_parentdomainus 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 @@ def test_deployVM_in_sharedNetwork_scope_domain_nosubdomainaccess_parentdomainad - @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 @@ def test_deployVM_in_sharedNetwork_scope_domain_nosubdomainaccess_ROOTuser(self) - @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 @@ def test_deployVM_in_sharedNetwork_scope_domain_nosubdomainaccess_ROOTadmin(self ## 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 @@ def test_deployVM_in_sharedNetwork_scope_domain_withsubdomainaccess_domainuser(s "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 @@ def test_deployVM_in_sharedNetwork_scope_domain_withsubdomainaccess_domainadminu 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 @@ def test_deployVM_in_sharedNetwork_scope_domain_withsubdomainaccess_subdomainuse 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 @@ def test_deployVM_in_sharedNetwork_scope_domain_withsubdomainaccess_subdomainadm 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 @@ def test_deployVM_in_sharedNetwork_scope_domain_withsubdomainaccess_parentdomain 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 @@ def test_deployVM_in_sharedNetwork_scope_domain_withsubdomainaccess_parentdomain - @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 @@ def test_deployVM_in_sharedNetwork_scope_domain_withsubdomainaccess_ROOTuser(sel 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 @@ def test_deployVM_in_sharedNetwork_scope_domain_withsubdomainaccess_ROOTadmin(se ## 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 @@ def test_deployVM_in_sharedNetwork_scope_account_domainuser(self): - @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 @@ def test_deployVM_in_sharedNetwork_scope_account_domainadminuser(self): 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 @@ def test_deployVM_in_sharedNetwork_scope_account_user(self): 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 @@ def test_deployVM_in_sharedNetwork_scope_account_differentdomain(self): - @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 @@ def test_deployVM_in_sharedNetwork_scope_account_ROOTuser(self): 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 a05a2d89bb4d..09347bac6be8 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 @@ def tearDown(cls): ## 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 @@ def test_deployVM_in_sharedNetwork_as_admin_scope_all_domainuser(self): "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 @@ def test_deployVM_in_sharedNetwork_as_admin_scope_all_domainadminuser(self): "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 @@ def test_deployVM_in_sharedNetwork_as_admin_scope_all_subdomainuser(self): 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 @@ def test_deployVM_in_sharedNetwork_as_admin_scope_all_subdomainadminuser(self): 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 @@ def test_deployVM_in_sharedNetwork_as_admin_scope_all_ROOTuser(self): ## 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 @@ def test_deployVM_in_sharedNetwork_as_admin_scope_domain_nosubdomainaccess_domai "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 @@ def test_deployVM_in_sharedNetwork_as_admin_scope_domain_nosubdomainaccess_domai 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 @@ def test_deployVM_in_sharedNetwork_as_admin_scope_domain_nosubdomainaccess_subdo 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 @@ def test_deployVM_in_sharedNetwork_as_admin_scope_domain_nosubdomainaccess_subdo 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 @@ def test_deployVM_in_sharedNetwork_as_admin_scope_domain_nosubdomainaccess_paren 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 @@ def test_deployVM_in_sharedNetwork_as_admin_scope_domain_nosubdomainaccess_paren - @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 @@ def test_deployVM_in_sharedNetwork_as_admin_scope_domain_nosubdomainaccess_ROOTu ## 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 @@ def test_deployVM_in_sharedNetwork_as_admin_scope_domain_withsubdomainaccess_dom "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 @@ def test_deployVM_in_sharedNetwork_as_admin_scope_domain_withsubdomainaccess_dom 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 @@ def test_deployVM_in_sharedNetwork_as_admin_scope_domain_withsubdomainaccess_sub 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 @@ def test_deployVM_in_sharedNetwork_as_admin_scope_domain_withsubdomainaccess_sub 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 @@ def test_deployVM_in_sharedNetwork_as_admin_scope_domain_withsubdomainaccess_par 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 @@ def test_deployVM_in_sharedNetwork_as_admin_scope_domain_withsubdomainaccess_par 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 @@ def test_deployVM_in_sharedNetwork_as_admin_scope_domain_withsubdomainaccess_ROO ## 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 @@ def test_deployVM_in_sharedNetwork_as_admin_scope_account_domainuser(self): 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 @@ def test_deployVM_in_sharedNetwork_as_admin_scope_account_domainadminuser(self): 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 @@ def test_deployVM_in_sharedNetwork_as_admin_scope_account_user(self): 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 @@ def test_deployVM_in_sharedNetwork_as_admin_scope_account_differentdomain(self): 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 @@ def test_deployVM_in_sharedNetwork_as_admin_scope_account_ROOTuser(self): ## 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 @@ def test_deployVM_in_sharedNetwork_as_domainadmin_scope_all_domainuser(self): "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 @@ def test_deployVM_in_sharedNetwork_as_domainadmin_scope_all_domainadminuser(self "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 @@ def test_deployVM_in_sharedNetwork_as_domainadmin_scope_all_subdomainuser(self): 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 @@ def test_deployVM_in_sharedNetwork_as_domainadmin_scope_all_subdomainadminuser(s 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 @@ def test_deployVM_in_sharedNetwork_as_domainadmin_scope_all_ROOTuser(self): 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 @@ def test_deployVM_in_sharedNetwork_as_domainadmin_scope_all_crossdomainuser(self ## 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 @@ def test_deployVM_in_sharedNetwork_as_domainadmin_scope_domain_nosubdomainaccess "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 @@ def test_deployVM_in_sharedNetwork_as_domainadmin_scope_domain_nosubdomainaccess 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 @@ def test_deployVM_in_sharedNetwork_as_domainadmin_scope_domain_nosubdomainaccess 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 @@ def test_deployVM_in_sharedNetwork_as_domainadmin_scope_domain_nosubdomainaccess 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 @@ def test_deployVM_in_sharedNetwork_as_domainadmin_scope_domain_nosubdomainaccess 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 @@ def test_deployVM_in_sharedNetwork_as_domainadmin_scope_domain_nosubdomainaccess - @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 @@ def test_deployVM_in_sharedNetwork_as_domainadmin_scope_domain_nosubdomainaccess ## 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 @@ def test_deployVM_in_sharedNetwork_as_domainadmin_scope_domain_withsubdomainacce "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 @@ def test_deployVM_in_sharedNetwork_as_domainadmin_scope_domain_withsubdomainacce 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 @@ def test_deployVM_in_sharedNetwork_as_domainadmin_scope_domain_withsubdomainacce 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 @@ def test_deployVM_in_sharedNetwork_as_domainadmin_scope_domain_withsubdomainacce 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 @@ def test_deployVM_in_sharedNetwork_as_domainadmin_scope_domain_withsubdomainacce 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 @@ def test_deployVM_in_sharedNetwork_as_domainadmin_scope_domain_withsubdomainacce 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 @@ def test_deployVM_in_sharedNetwork_as_domainadmin_scope_domain_withsubdomainacce ## 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 @@ def test_deployVM_in_sharedNetwork_as_domainadmin_scope_account_domainuser(self) 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 @@ def test_deployVM_in_sharedNetwork_as_domainadmin_scope_account_domainadminuser( 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 @@ def test_deployVM_in_sharedNetwork_as_domainadmin_scope_account_user(self): 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 @@ def test_deployVM_in_sharedNetwork_as_domainadmin_scope_account_differentdomain( 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 @@ def test_deployVM_in_sharedNetwork_as_domainadmin_scope_account_ROOTuser(self): ## 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 @@ def test_deployVM_in_sharedNetwork_as_regularuser_scope_all_anotherusersamedomai 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 9a77cbf873aa..d44de221a871 100755 --- a/engine/schema/src/com/cloud/storage/VMTemplateVO.java +++ b/engine/schema/src/com/cloud/storage/VMTemplateVO.java @@ -159,10 +159,8 @@ public VMTemplateVO() { 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 VMTemplateVO(Long id, String uniqueName, String name, ImageFormat format, 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 VMTemplateVO(Long id, String uniqueName, String name, ImageFormat format, 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 06ca5e0209e6..247ed0037119 100755 --- a/server/src/com/cloud/template/TemplateManagerImpl.java +++ b/server/src/com/cloud/template/TemplateManagerImpl.java @@ -22,7 +22,6 @@ 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 VMTemplateVO createPrivateTemplateRecord(CreateTemplateCmd cmd, Account t 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 VMTemplateVO createPrivateTemplateRecord(CreateTemplateCmd cmd, Account t 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 df68fb8ed049..805765b1e7fb 100755 --- a/engine/schema/src/com/cloud/service/ServiceOfferingVO.java +++ b/engine/schema/src/com/cloud/service/ServiceOfferingVO.java @@ -177,7 +177,9 @@ public ServiceOfferingVO(ServiceOfferingVO offering) { 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 152fa2c797c3..74f65ab94e55 100755 --- a/engine/schema/src/com/cloud/storage/DiskOfferingVO.java +++ b/engine/schema/src/com/cloud/storage/DiskOfferingVO.java @@ -214,7 +214,7 @@ public DiskOfferingVO(String name, String displayText, Storage.ProvisioningType } 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 DiskOfferingVO(long id, String name, String displayText, Storage.Provisio 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 7d374da31425..4c4d3c21f726 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 @@ private long getMsid() { 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 boolean configure(String name, Map params) throws Configu 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 void onManagementNodeJoined(List nodeList @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 void onManagementNodeIsolated() { @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 b521ffe5df18..32d84647a2d4 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 5160e05db77e..1cfec4dba414 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.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 void purgeAsyncJobQueueItemId(long asyncJobId) { 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 6c6ec56f4242..76f56d9b644e 100644 --- a/plugins/hypervisors/hyperv/DotNet/ServerResource/HypervResource/HypervResourceController.cs +++ b/plugins/hypervisors/hyperv/DotNet/ServerResource/HypervResource/HypervResourceController.cs @@ -873,7 +873,7 @@ public JContainer CheckVirtualMachineCommand([FromBody]dynamic cmd) 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 @@ public JContainer CheckVirtualMachineCommand([FromBody]dynamic cmd) } else { - state = EnabledState.ToCloudStackState(sys.EnabledState); // TODO: V2 changes? + powerState = EnabledState.ToCloudStackPowerState(sys.EnabledState); result = true; } @@ -892,7 +892,7 @@ public JContainer CheckVirtualMachineCommand([FromBody]dynamic cmd) { 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 04217b2709fb..b0dd6e2511e0 100755 --- a/tools/marvin/marvin/lib/base.py +++ b/tools/marvin/marvin/lib/base.py @@ -2571,6 +2571,13 @@ def listForMigration(cls, apiclient, **kwargs): 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 c52e27744664..8788b3b736f5 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 4c4d3c21f726..7e65ede3e539 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.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 @@ 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 void reallyRun() { // 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 @@ protected void expungeAsyncJob(final AsyncJobVO job) { @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 1f15d39f81ea..0365246f718a 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 0d78c58f852a..8d6ba9938d62 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 @@ get_zone, get_template) from nose.plugins.attrib import attr +from marvin.codes import PASS class TestVolumes(cloudstackTestCase): @@ -1793,3 +1794,68 @@ def test_12_volume_upload(self): "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 b0dd6e2511e0..528fc7890ac3 100755 --- a/tools/marvin/marvin/lib/base.py +++ b/tools/marvin/marvin/lib/base.py @@ -1971,9 +1971,6 @@ def create(cls, apiclient, services, custom=False, domainid=None): 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 65fb350bf19a..53b4a1a5b8a7 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 a99ec28a2356..0943518a9853 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 122f2d18d020..36a910be4c3e 100644 --- a/test/integration/component/test_volumes.py +++ b/test/integration/component/test_volumes.py @@ -1209,3 +1209,141 @@ def test_deployVmWithCustomDisk(self): 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 f6df4934a9f1..66215d3781e3 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 boolean acquire(String key, int timeInSeconds) { } 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 66215d3781e3..0c76fb5886d9 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 boolean acquire(String key, int timeInSeconds) { } 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 boolean release(String key) { 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 55c4937a1faa..8bbde6a51660 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 ee8748adee04..d38de0ebadd0 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 void expungeCompletedWorkJobs(final Date cutDate) { // 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 9bb23a967631..ab5a21c74061 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 Pair doInTransaction(TransactionStatus status) { 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 @@ protected void removeNic(VirtualMachineProfile vm, NicVO nic) { 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 boolean shutdownNetworkElementsAndResources(ReservationContext context, b 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 boolean destroyNetwork(long networkId, final ReservationContext context, 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 e99bb816c294..81cce48c0621 100644 --- a/test/integration/component/test_usage.py +++ b/test/integration/component/test_usage.py @@ -744,7 +744,9 @@ def test_01_template_usage(self): 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 9cf643f3bc48..f39bf1d2ebd9 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 @@ protected synchronized void runInContext() { 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 e18271e5fb17..d2a04ca97fe1 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 cf18555bfcac..8ccede7d156b 100644 --- a/server/src/com/cloud/storage/VolumeApiServiceImpl.java +++ b/server/src/com/cloud/storage/VolumeApiServiceImpl.java @@ -291,11 +291,6 @@ private boolean validateVolume(Account caller, long ownerId, Long zoneId, String 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 a119f489154a..7772cbba1442 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 @@ 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 e2f261e1ba37..e5e50178d9b8 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 void create() throws ResourceAllocationException { @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 68a328b82052..2ac43036c34f 100755 --- a/server/src/com/cloud/event/ActionEventUtils.java +++ b/server/src/com/cloud/event/ActionEventUtils.java @@ -301,7 +301,7 @@ private static void populateFirstClassEntities(Map eventDescript 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 9eaef1ea8901..ca66403f192a 100755 --- a/server/src/com/cloud/deploy/DeploymentPlanningManagerImpl.java +++ b/server/src/com/cloud/deploy/DeploymentPlanningManagerImpl.java @@ -512,8 +512,6 @@ public DeployDestination planDeployment(VirtualMachineProfile vmProfile, Deploym 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 4f775fc83fa8..475b42c385b3 100644 --- a/server/src/com/cloud/api/query/QueryManagerImpl.java +++ b/server/src/com/cloud/api/query/QueryManagerImpl.java @@ -912,11 +912,8 @@ private Pair, Integer> searchForUserVMsInternal(ListVMsCmd cm 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 25e63250155a..b7f33bf25d3b 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 741317bde439..3a1d053be2d1 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 741317bde439..3a1d053be2d1 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 0e8705307e8b..c30e526d282e 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 9e3d6d6b2a8c..774113745d75 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 eb2c3d14754b..7e4e7d03802e 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 d19391800936..e6129c26b6c0 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 558f5a2ee986..51b4f58e179e 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 558f5a2ee986..51b4f58e179e 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 cb5beb5cff1a..cd12a1c03750 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 cb5beb5cff1a..cd12a1c03750 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 f9682635b1e9..985e2fe2bfbb 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 cb5beb5cff1a..cd12a1c03750 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 f9682635b1e9..985e2fe2bfbb 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 f9682635b1e9..985e2fe2bfbb 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 7772cbba1442..eeeb9590986d 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 @@ protected FenceAnswer execute(FenceCommand cmd) { */ @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 c1678458b618..84c1b5b44e57 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 @@ private boolean createOrUpdateRecord(Long domainId, String name, String ip, Stri 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 dd380fb255ae..7453b535c0df 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 6888a9f951a1..7bc90b538a4f 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 2f8922d6fdb2..ebba5e0bb07a 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 9d9008a6335b..fcd497e7421f 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 @@ 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 @@ def setUpClass(cls): @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 @@ def tearDownClass(cls): 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 @@ def test_01_user_provided_hostname(self): # 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 @@ def test_01_user_provided_hostname(self): @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 @@ def test_vm_instance_name_duplicate_different_accounts(self): 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 @@ def test_vm_instance_name_duplicate_different_accounts(self): 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 @@ def test_02_instancename_from_default_configuration(self): # 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 @@ def test_03_duplicate_name(self): # 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 @@ def test_instance_name_with_hyphens(self): # 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 @@ def test_04_edit_display_name(self): # 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 @@ def test_04_edit_display_name(self): 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 @@ def test_05_unsupported_chars_in_display_name(self): 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 @@ def setUp(self): 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 @@ def test_01_custom_hostname_instancename_false(self): # 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 3498ad737ec3..4bd66b5dc4ed 100644 --- a/test/integration/smoke/test_iso.py +++ b/test/integration/smoke/test_iso.py @@ -229,6 +229,21 @@ def tearDown(self): 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 @@ def test_03_delete_iso(self): "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 @@ def test_06_copy_iso(self): 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 d1d253c02b72..542fff592bf9 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.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 49fd6ca194fd..4ec94494ac18 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 String getEventDescription() { @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 8ccede7d156b..d89ea4f7ebe5 100644 --- a/server/src/com/cloud/storage/VolumeApiServiceImpl.java +++ b/server/src/com/cloud/storage/VolumeApiServiceImpl.java @@ -720,7 +720,7 @@ public VolumeVO resizeVolume(ResizeVolumeCmd cmd) throws ResourceAllocationExcep 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 7014e5c8d1d5..74dbd4dcc4c4 100644 --- a/utils/src/com/cloud/utils/StringUtils.java +++ b/utils/src/com/cloud/utils/StringUtils.java @@ -159,9 +159,7 @@ public static String getMaskedPasswordForDisplay(String password) { } // 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 static String cleanString(String stringToClean) { 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 5f6e8ecdf1ef..7324c2008827 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 @@ String createSyslogMessage() { } 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 @@ String createSyslogMessage() { 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 57993483a256..7b7dbe0ada40 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 void setSyslogAppendersTest() { 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 void appendTest() { 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 000000000000..978b68af62a4 --- /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 000000000000..226621fa5f34 --- /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 6b02476f5ab9..88dccd749baa 100644 --- a/tools/marvin/marvin/config/test_data.py +++ b/tools/marvin/marvin/config/test_data.py @@ -549,7 +549,7 @@ "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 @@ "Vpn": "VpcVirtualRouter", "UserData": "VpcVirtualRouter", "StaticNat": "VpcVirtualRouter", - "NetworkACL": "VpcVirtualRouter" + "NetworkACL": "VpcVirtualRouter", + "Lb": "VpcVirtualRouter" } }, "nw_off_persistent_VPCVR_LB": { @@ -696,6 +697,13 @@ "publicport": 2222, "protocol": 'TCP' }, + "vpclbrule": { + "name": "SSH", + "alg": "roundrobin", + "privateport": 22, + "publicport": 22, + "protocol": 'TCP' + }, "icmprule": { "icmptype":-1, "icmpcode":-1, @@ -750,6 +758,16 @@ "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 528fc7890ac3..5bd89318523c 100755 --- a/tools/marvin/marvin/lib/base.py +++ b/tools/marvin/marvin/lib/base.py @@ -528,12 +528,20 @@ def reboot(self, apiclient): 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 | 3001 +++++++++-------- 1 file changed, 1567 insertions(+), 1434 deletions(-) diff --git a/test/integration/component/test_escalations_networks.py b/test/integration/component/test_escalations_networks.py index 5fad43aec9fa..c0ab709a5e8c 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 @@ def setUpClass(cls): 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 @@ def __verify_values(self, expected_vals, actual_vals): """ @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 @@ def __verify_values(self, expected_vals, actual_vals): 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 @@ def test_01_list_networks_pagination(self): @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 @@ def test_02_create_network_without_sourcenat(self): """ # 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 @@ def test_03_list_vpc_pagination(self): 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 @@ def test_03_list_vpc_pagination(self): 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 @@ def test_04_create_vpc_with_networkdomain(self): 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 @@ def test_05_list_network_offerings_with_and_without_vpc(self): 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 @@ def test_06_create_network_in_vpc(self): 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 @@ def test_06_create_network_in_vpc(self): 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 @@ def test_06_create_network_in_vpc(self): 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 @@ def test_07_create_delete_network(self): 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 @@ def test_08_update_network(self): 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 @@ def test_08_update_network(self): 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 @@ def test_09_list_virtual_machines_single_network(self): 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 @@ def test_10_list_networks_in_vpc(self): 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 @@ def test_10_list_networks_in_vpc(self): 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 @@ def test_11_update_vpc(self): 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 @@ def test_12_list_create_delete_networkACL(self): 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 @@ def test_12_list_create_delete_networkACL(self): 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 @@ def setUpClass(cls): 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 @@ 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 """ @@ -1517,10 +1669,10 @@ def __verify_values(self, expected_vals, actual_vals): 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 @@ def test_13_list_vpc_byid(self): 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 @@ def test_14_list_public_ipadress_by_associated_networkid(self): """ @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 @@ def test_14_list_public_ipadress_by_associated_networkid(self): 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 @@ def test_15_list_privategateway_byvpcid(self): @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 @@ def test_15_list_privategateway_byvpcid(self): 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 @@ def test_16_create_list_delete_egressfirewallrule_bynetworkid(self): @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 @@ def test_16_create_list_delete_egressfirewallrule_bynetworkid(self): """ # 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.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" - ) + 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.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" - ) + 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 - ) + 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" - ) + 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 + 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"] - } + "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() - } + "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 - ) + expected_dict, + actual_dict + ) self.assertEqual( - True, - list_egressfirewallrule_status, - "Listed EgressFirewall Rule details are not as expected" - ) + True, + list_egressfirewallrule_status, + "Listed EgressFirewall Rule details are not as expected" + ) # Deleting the EgressFirewall Rule by networkid - egressfirewallrule_created.delete(self.userapiclient); + 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_deleted_egressfirewallrule_bynetworkid, + "EgressFirewall Rule deletion fails" + ) return @attr(tags=["advanced"], required_hardware="true") @@ -2050,68 +2202,60 @@ def test_17_restart_vpc(self): 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 @@ def test_18_create_list_vpn_gateway(self): 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 @@ def test_19_create_list_reset_delete_vpnconnections(self): 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 @@ def test_20_list_capabilities(self): 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 @@ def test_21_listNetworkacls_by_privategateway_aclid(self): """ # 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 00aacbff24a2..b29cd1d275ff 100644 --- a/test/integration/component/test_escalations_ipaddresses.py +++ b/test/integration/component/test_escalations_ipaddresses.py @@ -43,6 +43,7 @@ from marvin.codes import PASS from nose.plugins.attrib import attr + class TestIpAddresses(cloudstackTestCase): @classmethod @@ -55,30 +56,41 @@ def setUpClass(cls): 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 @@ def setUp(self): 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 @@ def tearDownClass(cls): 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 @@ def __verify_values(self, expected_vals, actual_vals): 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 @@ def test_01_list_ipaddresses_pagination(self): 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 @@ def test_01_list_ipaddresses_pagination(self): """ # 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 @@ def test_02_list_ipaddresses_byid(self): """ # 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 @@ def test_03_associate_ipaddress_for_vpc(self): 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 @@ def test_07_assign_remove_lbrule_toinstance(self): """ # 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 @@ def test_08_list_create_delete_lbsticky_policy(self): @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 @@ def test_09_create_delete_portforwarding_fornonvpc(self): @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 @@ def test_10_create_delete_portforwarding_forvpc(self): @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 @@ def test_11_create_delete_firewallrule(self): """ # 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 @@ def test_12_create_delete_remoteaccessvpn(self): @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 @@ def test_13_add_remove_vpnusers(self): """ # 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 @@ def test_13_add_remove_vpnusers(self): @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 @@ def test_14_enable_disable_staticnat_fornonvpc(self): """ # 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 @@ def test_14_enable_disable_staticnat_fornonvpc(self): @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 @@ def test_15_enable_disable_staticnat_forvpc(self): 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 @@ def test_15_enable_disable_staticnat_forvpc(self): @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 @@ def test_16_create_delete_ipforwardingrule(self): """ # 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 @@ def test_17_create_update_autoscalepolicy(self): """ @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 @@ def test_17_create_update_autoscalepolicy(self): 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 @@ def test_18_create_update_autoscaleprofiles(self): """ @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 @@ def test_18_create_update_autoscaleprofiles(self): @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 @@ def test_19_create_update_autoscalevmgroup(self): 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 85ab697ea4e2..fddca9bb74ca 100644 --- a/test/integration/component/test_advancedsg_networks.py +++ b/test/integration/component/test_advancedsg_networks.py @@ -29,26 +29,35 @@ 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 @@ def setVmState(self, vm, state): 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 @@ def test_33_VM_Migrate_SharedNwSG(self, value): 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 88dccd749baa..14514c54c681 100644 --- a/tools/marvin/marvin/config/test_data.py +++ b/tools/marvin/marvin/config/test_data.py @@ -932,7 +932,7 @@ "name": "hostantiaffinity", "type": "host anti-affinity", }, - "vgpu":{ + "vgpu":{ "disk_offering":{ "displaytext": "Small", "name": "Small", @@ -1172,8 +1172,6 @@ "username": "testD12B", "password": "password", }, - - "domain2": { "name": "D2", }, @@ -1192,7 +1190,6 @@ "username": "testD2A", "password": "password", }, - "accountROOTA": { "email": "testROOTA@test.com", "firstname": "testROOTA", @@ -1338,8 +1335,7 @@ "username": "rmurphy", "password": "internalcloudstackpassword", }, - "ldapConfiguration_1": - { + "ldapConfiguration_1": { "basedn": "dc=cloudstack,dc=org", "emailAttribute": "mail", "userObject": "inetOrgPerson", @@ -1348,5 +1344,36 @@ "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 5bd89318523c..d6233862fd34 100755 --- a/tools/marvin/marvin/lib/base.py +++ b/tools/marvin/marvin/lib/base.py @@ -552,7 +552,7 @@ def restore(self, apiclient, templateid=None): 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 @@ def get_ssh_client( 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 8788b3b736f5..b58b59dccabb 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 df2eeee1d4cf..f027890522f7 100644 --- a/tools/marvin/marvin/sshClient.py +++ b/tools/marvin/marvin/sshClient.py @@ -24,6 +24,7 @@ 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 @@ def __init__(self, host, port, user, passwd, retries=60, delay=10, 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 @@ def createConnection(self): 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 081ab4b1d2e1..b5af092fada2 100644 --- a/test/integration/component/test_deploy_vgpu_vm.py +++ b/test/integration/component/test_deploy_vgpu_vm.py @@ -68,8 +68,14 @@ def setUpClass(cls): 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 @@ def setUpClass(cls): 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 @@ def setUpClass(cls): 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 @@ def setUpClass(cls): 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 @@ def setUpClass(cls): #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 @@ def setUpClass(cls): 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 @@ def check_for_vm(self,vgpucard,vgpuofferingid,vmid): 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 @@ def deploy_vm(self,type,model): 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 @@ def test_11_add_nonvgpu_host_to_vgpucluster(self): def test_12_validate_deployed_vGPU_windows_vm(self): """ Test deploy virtual machine """ - 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.deploy_vm_lifecycle() - 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.debug("Check if deployed VMs are in running state?") + + 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 @@ def test_13_stop_vGPU_windows_vm(self): 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 @@ def test_14_start_vGPU_windows_vm(self): 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.vm_k2_card): - self.vm_k2_card.restore(self.apiclient) - time.sleep(200) - self.vm_k2_card.getState( - self.apiclient, - "Running") + if self.__class__.vmlifecycletest==0: + raise unittest.SkipTest("VM Life Cycle Deploy VM test failed hence skipping") - 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 @@ def test_15_restore_vGPU_windows_vm(self): 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.vm_k2_card): - self.vm_k2_card.reboot(self.apiclient) - time.sleep(200) - self.vm_k2_card.getState( - self.apiclient, - "Running") + if self.__class__.vmlifecycletest==0: + raise unittest.SkipTest("VM Life Cycle Deploy VM test failed hence skipping") - 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 @@ def test_16_reboot_vGPU_windows_vm(self): 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 @@ def test_17_destroy_vGPU_windows_vm(self): 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 14514c54c681..ffc3518a1d45 100644 --- a/tools/marvin/marvin/config/test_data.py +++ b/tools/marvin/marvin/config/test_data.py @@ -942,12 +942,43 @@ "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 d71a77444d26..9665ffda6d79 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 a79526a0b15d..d7b2af624095 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 @@ protected CreatePrivateTemplateAnswer execute(final CreatePrivateTemplateFromSna 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 2ea17e79143b..f7a8cf715d0d 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 KVMStoragePool getStoragePool(String uuid) { 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 ab819b257293..583db0f4a36d 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 boolean disconnectPhysicalDisksViaVmSpec(VirtualMachineTO vmSpec) { } 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 ffd44230d3fb..26237ba69b24 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 LibvirtStorageVolumeDef getStorageVolumeDef(Connect conn, StorageVol vol) @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 KVMStoragePool getStoragePool(String uuid) { } } - 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 38ee3e6ed940..dceb2910c575 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 f992c62ed5ff..26c29967c616 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 5b5e805ad0b7..9e46f7962c17 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 50ac9d12d1be..ddc2f7323738 100644 --- a/server/src/com/cloud/network/firewall/FirewallManagerImpl.java +++ b/server/src/com/cloud/network/firewall/FirewallManagerImpl.java @@ -659,7 +659,7 @@ public boolean applyFirewallRules(List rules, boolean continueOn 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 dccf18d2d4de..a0fe596677e8 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 950d596ca50f..2bd0797a9272 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 489cf434c4f3..226a884bc458 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.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 VmwareContext getServiceContext(Command cmd) { 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 965df84c2ddc..dc93f4aa41e1 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 0a867f6291b5..c620c40d981f 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 EndPoint select(DataObject object, StorageAction action) { 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 b225e39bc0e6..8a4ba08c8d93 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 Answer deleteVolume(DeleteCommand cmd) { 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 d58c0b15d11d..bcc06b021b65 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 void deleteAsync(DataStore dataStore, DataObject data, AsyncCompletionCal 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 889cad457af6..fef29dd3d9d8 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.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 void performDataMigration(Connection conn) { encryptLdapConfigParams(conn); encryptImageStoreDetails(conn); upgradeMemoryOfSsvmOffering(conn); - updateSystemVmTemplates(conn); } private void upgradeMemoryOfSsvmOffering(Connection conn) { @@ -196,136 +190,6 @@ private void encryptLdapConfigParams(Connection conn) { } - 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 21b2e135d818..cde661bbdda6 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 @@ 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 File[] getPrepareScripts() { @Override public void performDataMigration(Connection conn) { + updateSystemVmTemplates(conn); dropInvalidKeyFromStoragePoolTable(conn); dropDuplicatedForeignKeyFromAsyncJobTable(conn); } @@ -74,6 +81,131 @@ public File[] getCleanupScripts() { 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 c6664d951baa..31ef8be4b0c7 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 @@ protected boolean handleDisconnectWithoutInvestigation(AgentAttache attache, Sta } 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 @@ protected void runInContext() { || 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 14d782a47efd..825af39e9fe5 100755 --- a/server/src/com/cloud/consoleproxy/ConsoleProxyManagerImpl.java +++ b/server/src/com/cloud/consoleproxy/ConsoleProxyManagerImpl.java @@ -324,6 +324,7 @@ public void onAgentDisconnect(long agentId, com.cloud.host.Status state) { 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 43613e7f9ca0..81a42400c29a 100755 --- a/server/src/com/cloud/storage/secondary/SecondaryStorageListener.java +++ b/server/src/com/cloud/storage/secondary/SecondaryStorageListener.java @@ -88,6 +88,7 @@ public void processConnect(Host agent, StartupCommand cmd, boolean forRebalance) @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 3b32c851f0a1..f2f5aa080b4c 100755 --- a/server/src/com/cloud/storage/secondary/SecondaryStorageVmManager.java +++ b/server/src/com/cloud/storage/secondary/SecondaryStorageVmManager.java @@ -21,6 +21,7 @@ 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 1ddc8f5e950c..9288be479a43 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.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 boolean destroySecStorageVm(long vmId) { 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 2bd0797a9272..950d596ca50f 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 39ac88c678bc..41a67556480a 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 950d596ca50f..f7946dc8a95f 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 ed6c9f03f435..62762b97a74d 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.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 long download(boolean resume, DownloadCompleteCallback callback) { 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 long download(boolean resume, DownloadCompleteCallback callback) { 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 62762b97a74d..5644af4f8e89 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.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 17c9f0a076fa..a8750ba4ae8c 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 c95867e04b93..987a55648571 100755 --- a/server/src/com/cloud/network/router/VirtualNetworkApplianceManagerImpl.java +++ b/server/src/com/cloud/network/router/VirtualNetworkApplianceManagerImpl.java @@ -1020,7 +1020,7 @@ protected void runInContext() { if (scanLock.lock(ACQUIRE_GLOBAL_LOCK_TIMEOUT_FOR_COOPERATION)) { //Check for ownership //msHost in UP state with min id should run the job - final ManagementServerHostVO msHost = _msHostDao.findOneInUpState(new Filter(ManagementServerHostVO.class, "id", true, 0L, 1L)); + final ManagementServerHostVO msHost = _msHostDao.findOneInUpState(new Filter(ManagementServerHostVO.class, "id", false, 0L, 1L)); if (msHost == null || (msHost.getMsid() != mgmtSrvrId)) { s_logger.debug("Skipping aggregate network stats update"); scanLock.unlock(); From 54110edda13ac192b8850439dcdd89aea1e278d4 Mon Sep 17 00:00:00 2001 From: Likitha Shetty 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 d89ea4f7ebe5..e089b77a37c4 100644 --- a/server/src/com/cloud/storage/VolumeApiServiceImpl.java +++ b/server/src/com/cloud/storage/VolumeApiServiceImpl.java @@ -1046,12 +1046,17 @@ private VolumeVO orchestrateResizeVolume(long volumeId, long currentSize, long n } 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 226a884bc458..085b6bbed491 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 @@ private Answer execute(ResizeVolumeCommand cmd) { 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 @@ private Answer execute(ResizeVolumeCommand cmd) { 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 @@ private Answer execute(ResizeVolumeCommand cmd) { 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 f8696d4b3f6a..299d7308bb48 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 @@ 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 834d0768297d..c4138367b7de 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 void setHypervisorVersion(String hypervisorVersion) { 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 50c0b7e6d59f..8901716ddfda 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 041a8fe200b4..7e8615a26add 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 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 List gethostTags(long hostId) { 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 4182193a17ff..e8342480a92c 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.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 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); 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 88e46005ac68..5553553d49a0 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 @@ protected void fillHostInfo(Connection conn, StartupRoutingCommand cmd) { 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 0365246f718a..2fc535636a42 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 48780a72ffdd..9d79304e7c14 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.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 List orderClusters(VirtualMachineProfile vmProfile, DeploymentPlan 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 List orderClusters(VirtualMachineProfile vmProfile, DeploymentPlan 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 List orderClusters(VirtualMachineProfile vmProfile, DeploymentPlan 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 boolean configure(String name, Map params) throws Configu 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 477b08f6af20..c38c5843f0e9 100755 --- a/server/src/com/cloud/resource/ResourceManagerImpl.java +++ b/server/src/com/cloud/resource/ResourceManagerImpl.java @@ -1631,6 +1631,19 @@ protected HostVO createHostVO(StartupCommand[] cmds, ServerResource resource, Ma 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 94c1d186e4a0..b9e283153e6d 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.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 VirtualMachineProfileImpl virtualMachineProfileImpl() { 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 AffinityGroupService affinityGroupService() { 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 000000000000..05e1817c7863 --- /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 41a67556480a..dcfcb88ff1f4 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 3e576312d55a..af19d8714eba 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 07b6f7fdcb2f..9313e5673f30 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 @@ protected Answer execute(final CreateVMSnapshotCommand cmd) { 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 d7edfe0f0c71..cda96c9414aa 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 446055961037..337d5752754c 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 4e6ab6ba300a..c15cda07cab2 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 void handleTemplateSync(DataStore store) { 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 void handleTemplateSync(DataStore store) { 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 void handleTemplateSync(DataStore store) { } } 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 void handleTemplateSync(DataStore store) { 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 @@ private AsyncCallFuture syncToRegionStoreAsync(TemplateInfo t // 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 void syncTemplateToRegionStore(long templateId, DataStore store) { 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 AsyncCallFuture copyTemplate(TemplateInfo srcTemplate, 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 void addSystemVMTemplatesToSecondary(DataStore store) { 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 4f59a8331876..6f7ddad8a725 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 260f4f16e878..75be59704315 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.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 bd363f698aad..df0665017145 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 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 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 c9eb7ae24666..a76855f763e0 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 c03ad67a9e0a..7751b1fc2713 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 39299b3dacc2..8f2a378de819 100644 --- a/ui/dictionary2.jsp +++ b/ui/dictionary2.jsp @@ -25,21 +25,6 @@ under the License. <% long now = System.currentTimeMillis(); %>