mirror of https://github.com/apache/cloudstack.git
Merge branch 'pr/812' into interfacePatternCheck
This commit is contained in:
commit
fea976a694
|
|
@ -85,7 +85,6 @@ configure-stamp
|
|||
*_flymake.js
|
||||
engine/storage/integration-test/test-output
|
||||
tools/apidoc/log/
|
||||
log/
|
||||
plugins/network-elements/juniper-contrail/logs/
|
||||
scripts/vm/hypervisor/xenserver/vhd-util
|
||||
*.orig
|
||||
|
|
|
|||
|
|
@ -105,4 +105,3 @@ $ git checkout master
|
|||
$ git branch -D feature_x
|
||||
$ git push origin :feature_x
|
||||
```
|
||||
|
||||
|
|
|
|||
37
Dockerfile
37
Dockerfile
|
|
@ -1,37 +0,0 @@
|
|||
FROM ubuntu:14.04
|
||||
|
||||
RUN apt-get -y update && apt-get install -y \
|
||||
genisoimage \
|
||||
git \
|
||||
maven \
|
||||
openjdk-7-jdk \
|
||||
python-dev \
|
||||
python-setuptools \
|
||||
python-pip \
|
||||
supervisor
|
||||
|
||||
RUN echo 'mysql-server mysql-server/root_password password root' | debconf-set-selections; \
|
||||
echo 'mysql-server mysql-server/root_password_again password root' | debconf-set-selections;
|
||||
|
||||
RUN apt-get install -qqy mysql-server && \
|
||||
apt-get clean all
|
||||
|
||||
RUN (/usr/bin/mysqld_safe &); sleep 5; mysqladmin -u root -proot password ''
|
||||
|
||||
RUN pip install --allow-external mysql-connector-python mysql-connector-python
|
||||
|
||||
COPY supervisord.conf /etc/supervisor/conf.d/supervisord.conf
|
||||
COPY . ./root
|
||||
WORKDIR /root
|
||||
|
||||
RUN mvn -Pdeveloper -Dsimulator -DskipTests clean install
|
||||
|
||||
RUN (/usr/bin/mysqld_safe &); \
|
||||
sleep 3; \
|
||||
mvn -Pdeveloper -pl developer -Ddeploydb; \
|
||||
mvn -Pdeveloper -pl developer -Ddeploydb-simulator; \
|
||||
pip install tools/marvin/dist/Marvin-4.6.0-SNAPSHOT.tar.gz
|
||||
|
||||
EXPOSE 8080
|
||||
|
||||
CMD ["/usr/bin/supervisord"]
|
||||
|
|
@ -65,7 +65,7 @@ def getUserInputs():
|
|||
if oldHypervisor == "":
|
||||
oldHypervisor = "kvm"
|
||||
|
||||
hypervisor = raw_input("Please input the Hypervisor type kvm/lxc:[%s]"%oldCluster)
|
||||
hypervisor = raw_input("Please input the Hypervisor type kvm/lxc:[%s]"%oldHypervisor)
|
||||
if hypervisor == "":
|
||||
hypervisor = oldHypervisor
|
||||
|
||||
|
|
|
|||
|
|
@ -16,6 +16,7 @@
|
|||
# specific language governing permissions and limitations
|
||||
# under the License.
|
||||
import sys
|
||||
import re
|
||||
from xml.dom.minidom import parse
|
||||
from cloudutils.configFileOps import configFileOps
|
||||
from cloudutils.networkConfig import networkConfig
|
||||
|
|
@ -24,21 +25,29 @@ def isOldStyleBridge(brName):
|
|||
return True
|
||||
else:
|
||||
return False
|
||||
def isNewStyleBridge(brName):
|
||||
if re.match(r"br(\w+)-(\d+)", brName) == None:
|
||||
return False
|
||||
else:
|
||||
return True
|
||||
def getGuestNetworkDevice():
|
||||
netlib = networkConfig()
|
||||
cfo = configFileOps("/etc/cloudstack/agent/agent.properties")
|
||||
guestDev = cfo.getEntry("guest.network.device")
|
||||
enslavedDev = netlib.getEnslavedDev(guestDev, 1)
|
||||
return enslavedDev
|
||||
return enslavedDev.split(".")[0]
|
||||
def handleMigrateBegin():
|
||||
try:
|
||||
domain = parse(sys.stdin)
|
||||
for interface in domain.getElementsByTagName("interface"):
|
||||
source = interface.getElementsByTagName("source")[0]
|
||||
bridge = source.getAttribute("bridge")
|
||||
if not isOldStyleBridge(bridge):
|
||||
if isOldStyleBridge(bridge):
|
||||
vlanId = bridge.replace("cloudVirBr","")
|
||||
elif isNewStyleBridge(bridge):
|
||||
vlanId = re.sub(r"br(\w+)-","",bridge)
|
||||
else:
|
||||
continue
|
||||
vlanId = bridge.replace("cloudVirBr","")
|
||||
phyDev = getGuestNetworkDevice()
|
||||
newBrName="br" + phyDev + "-" + vlanId
|
||||
source.setAttribute("bridge", newBrName)
|
||||
|
|
|
|||
|
|
@ -133,6 +133,22 @@ hypervisor.type=kvm
|
|||
# Disable memory ballooning on vm guests for overcommit, by default overcommit
|
||||
# feature enables balloon and sets currentMemory to a minimum value.
|
||||
#
|
||||
# vm.diskactivity.checkenabled=false
|
||||
# Set to true to check disk activity on VM's disks before starting a VM. This only applies
|
||||
# to QCOW2 files, and ensures that there is no other running instance accessing
|
||||
# the file before starting. It works by checking the modify time against the current time,
|
||||
# so care must be taken to ensure the cluster has time synced, otherwise VMs may fail to start.
|
||||
#
|
||||
# vm.diskactivity.checktimeout_s=120
|
||||
# Timeout for giving up on waiting for VM's disk files to become inactive. Hitting
|
||||
# this timeout will result in failure to start VM.
|
||||
#
|
||||
# vm.diskactivity.inactivetime_ms=30000
|
||||
# This is the length of time that the disk needs to be inactive in order to pass the check.
|
||||
# This means current time minus mtime of disk file needs to be greater than this number.
|
||||
# It also has the side effect of setting the minimum threshold between a stop and start of
|
||||
# a given VM.
|
||||
#
|
||||
# kvmclock.disable=false
|
||||
# Some newer linux kernels are incapable of reliably migrating vms with kvmclock
|
||||
# This is a workaround for the bug, admin can set this to true per-host
|
||||
|
|
|
|||
|
|
@ -35,9 +35,8 @@ import java.util.concurrent.atomic.AtomicInteger;
|
|||
|
||||
import javax.naming.ConfigurationException;
|
||||
|
||||
import org.apache.log4j.Logger;
|
||||
|
||||
import org.apache.cloudstack.managed.context.ManagedContextTimerTask;
|
||||
import org.apache.log4j.Logger;
|
||||
|
||||
import com.cloud.agent.api.AgentControlAnswer;
|
||||
import com.cloud.agent.api.AgentControlCommand;
|
||||
|
|
@ -59,6 +58,8 @@ import com.cloud.utils.PropertiesUtil;
|
|||
import com.cloud.utils.backoff.BackoffAlgorithm;
|
||||
import com.cloud.utils.concurrency.NamedThreadFactory;
|
||||
import com.cloud.utils.exception.CloudRuntimeException;
|
||||
import com.cloud.utils.exception.NioConnectionException;
|
||||
import com.cloud.utils.exception.TaskExecutionException;
|
||||
import com.cloud.utils.nio.HandlerFactory;
|
||||
import com.cloud.utils.nio.Link;
|
||||
import com.cloud.utils.nio.NioClient;
|
||||
|
|
@ -121,11 +122,11 @@ public class Agent implements HandlerFactory, IAgentControl {
|
|||
long _startupWait = _startupWaitDefault;
|
||||
boolean _reconnectAllowed = true;
|
||||
//For time sentitive task, e.g. PingTask
|
||||
private ThreadPoolExecutor _ugentTaskPool;
|
||||
private final ThreadPoolExecutor _ugentTaskPool;
|
||||
ExecutorService _executor;
|
||||
|
||||
// for simulator use only
|
||||
public Agent(IAgentShell shell) {
|
||||
public Agent(final IAgentShell shell) {
|
||||
_shell = shell;
|
||||
_link = null;
|
||||
|
||||
|
|
@ -134,29 +135,29 @@ public class Agent implements HandlerFactory, IAgentControl {
|
|||
Runtime.getRuntime().addShutdownHook(new ShutdownThread(this));
|
||||
|
||||
_ugentTaskPool =
|
||||
new ThreadPoolExecutor(shell.getPingRetries(), 2 * shell.getPingRetries(), 10, TimeUnit.MINUTES, new SynchronousQueue<Runnable>(), new NamedThreadFactory(
|
||||
"UgentTask"));
|
||||
new ThreadPoolExecutor(shell.getPingRetries(), 2 * shell.getPingRetries(), 10, TimeUnit.MINUTES, new SynchronousQueue<Runnable>(), new NamedThreadFactory(
|
||||
"UgentTask"));
|
||||
|
||||
_executor =
|
||||
new ThreadPoolExecutor(_shell.getWorkers(), 5 * _shell.getWorkers(), 1, TimeUnit.DAYS, new LinkedBlockingQueue<Runnable>(), new NamedThreadFactory(
|
||||
"agentRequest-Handler"));
|
||||
new ThreadPoolExecutor(_shell.getWorkers(), 5 * _shell.getWorkers(), 1, TimeUnit.DAYS, new LinkedBlockingQueue<Runnable>(), new NamedThreadFactory(
|
||||
"agentRequest-Handler"));
|
||||
}
|
||||
|
||||
public Agent(IAgentShell shell, int localAgentId, ServerResource resource) throws ConfigurationException {
|
||||
public Agent(final IAgentShell shell, final int localAgentId, final ServerResource resource) throws ConfigurationException {
|
||||
_shell = shell;
|
||||
_resource = resource;
|
||||
_link = null;
|
||||
|
||||
resource.setAgentControl(this);
|
||||
|
||||
String value = _shell.getPersistentProperty(getResourceName(), "id");
|
||||
final String value = _shell.getPersistentProperty(getResourceName(), "id");
|
||||
_id = value != null ? Long.parseLong(value) : null;
|
||||
s_logger.info("id is " + ((_id != null) ? _id : ""));
|
||||
s_logger.info("id is " + (_id != null ? _id : ""));
|
||||
|
||||
final Map<String, Object> params = PropertiesUtil.toMap(_shell.getProperties());
|
||||
|
||||
// merge with properties from command line to let resource access command line parameters
|
||||
for (Map.Entry<String, Object> cmdLineProp : _shell.getCmdLineProperties().entrySet()) {
|
||||
for (final Map.Entry<String, Object> cmdLineProp : _shell.getCmdLineProperties().entrySet()) {
|
||||
params.put(cmdLineProp.getKey(), cmdLineProp.getValue());
|
||||
}
|
||||
|
||||
|
|
@ -172,15 +173,15 @@ public class Agent implements HandlerFactory, IAgentControl {
|
|||
Runtime.getRuntime().addShutdownHook(new ShutdownThread(this));
|
||||
|
||||
_ugentTaskPool =
|
||||
new ThreadPoolExecutor(shell.getPingRetries(), 2 * shell.getPingRetries(), 10, TimeUnit.MINUTES, new SynchronousQueue<Runnable>(), new NamedThreadFactory(
|
||||
"UgentTask"));
|
||||
new ThreadPoolExecutor(shell.getPingRetries(), 2 * shell.getPingRetries(), 10, TimeUnit.MINUTES, new SynchronousQueue<Runnable>(), new NamedThreadFactory(
|
||||
"UgentTask"));
|
||||
|
||||
_executor =
|
||||
new ThreadPoolExecutor(_shell.getWorkers(), 5 * _shell.getWorkers(), 1, TimeUnit.DAYS, new LinkedBlockingQueue<Runnable>(), new NamedThreadFactory(
|
||||
"agentRequest-Handler"));
|
||||
new ThreadPoolExecutor(_shell.getWorkers(), 5 * _shell.getWorkers(), 1, TimeUnit.DAYS, new LinkedBlockingQueue<Runnable>(), new NamedThreadFactory(
|
||||
"agentRequest-Handler"));
|
||||
|
||||
s_logger.info("Agent [id = " + (_id != null ? _id : "new") + " : type = " + getResourceName() + " : zone = " + _shell.getZone() + " : pod = " + _shell.getPod() +
|
||||
" : workers = " + _shell.getWorkers() + " : host = " + _shell.getHost() + " : port = " + _shell.getPort());
|
||||
" : workers = " + _shell.getWorkers() + " : host = " + _shell.getHost() + " : port = " + _shell.getPort());
|
||||
}
|
||||
|
||||
public String getVersion() {
|
||||
|
|
@ -188,7 +189,7 @@ public class Agent implements HandlerFactory, IAgentControl {
|
|||
}
|
||||
|
||||
public String getResourceGuid() {
|
||||
String guid = _shell.getGuid();
|
||||
final String guid = _shell.getGuid();
|
||||
return guid + "-" + getResourceName();
|
||||
}
|
||||
|
||||
|
|
@ -222,11 +223,19 @@ public class Agent implements HandlerFactory, IAgentControl {
|
|||
throw new CloudRuntimeException("Unable to start the resource: " + _resource.getName());
|
||||
}
|
||||
|
||||
_connection.start();
|
||||
try {
|
||||
_connection.start();
|
||||
} catch (final NioConnectionException e) {
|
||||
throw new CloudRuntimeException("Unable to start the connection!", e);
|
||||
}
|
||||
while (!_connection.isStartup()) {
|
||||
_shell.getBackoffAlgorithm().waitBeforeRetry();
|
||||
_connection = new NioClient("Agent", _shell.getHost(), _shell.getPort(), _shell.getWorkers(), this);
|
||||
_connection.start();
|
||||
try {
|
||||
_connection.start();
|
||||
} catch (final NioConnectionException e) {
|
||||
throw new CloudRuntimeException("Unable to start the connection!", e);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -236,12 +245,12 @@ public class Agent implements HandlerFactory, IAgentControl {
|
|||
final ShutdownCommand cmd = new ShutdownCommand(reason, detail);
|
||||
try {
|
||||
if (_link != null) {
|
||||
Request req = new Request((_id != null ? _id : -1), -1, cmd, false);
|
||||
final Request req = new Request(_id != null ? _id : -1, -1, cmd, false);
|
||||
_link.send(req.toBytes());
|
||||
}
|
||||
} catch (final ClosedChannelException e) {
|
||||
s_logger.warn("Unable to send: " + cmd.toString());
|
||||
} catch (Exception e) {
|
||||
} catch (final Exception e) {
|
||||
s_logger.warn("Unable to send: " + cmd.toString() + " due to exception: ", e);
|
||||
}
|
||||
s_logger.debug("Sending shutdown to management server");
|
||||
|
|
@ -294,13 +303,13 @@ public class Agent implements HandlerFactory, IAgentControl {
|
|||
_watchList.clear();
|
||||
}
|
||||
}
|
||||
public synchronized void lockStartupTask(Link link)
|
||||
public synchronized void lockStartupTask(final Link link)
|
||||
{
|
||||
_startup = new StartupTask(link);
|
||||
_timer.schedule(_startup, _startupWait);
|
||||
}
|
||||
|
||||
public void sendStartup(Link link) {
|
||||
public void sendStartup(final Link link) {
|
||||
final StartupCommand[] startup = _resource.initialize();
|
||||
if (startup != null) {
|
||||
final Command[] commands = new Command[startup.length];
|
||||
|
|
@ -323,7 +332,7 @@ public class Agent implements HandlerFactory, IAgentControl {
|
|||
}
|
||||
}
|
||||
|
||||
protected void setupStartupCommand(StartupCommand startup) {
|
||||
protected void setupStartupCommand(final StartupCommand startup) {
|
||||
InetAddress addr;
|
||||
try {
|
||||
addr = InetAddress.getLocalHost();
|
||||
|
|
@ -349,7 +358,7 @@ public class Agent implements HandlerFactory, IAgentControl {
|
|||
}
|
||||
|
||||
@Override
|
||||
public Task create(Task.Type type, Link link, byte[] data) {
|
||||
public Task create(final Task.Type type, final Link link, final byte[] data) {
|
||||
return new ServerHandler(type, link, data);
|
||||
}
|
||||
|
||||
|
|
@ -391,19 +400,23 @@ public class Agent implements HandlerFactory, IAgentControl {
|
|||
|
||||
try {
|
||||
_connection.cleanUp();
|
||||
} catch (IOException e) {
|
||||
} catch (final IOException e) {
|
||||
s_logger.warn("Fail to clean up old connection. " + e);
|
||||
}
|
||||
_connection = new NioClient("Agent", _shell.getHost(), _shell.getPort(), _shell.getWorkers(), this);
|
||||
do {
|
||||
s_logger.info("Reconnecting...");
|
||||
_connection.start();
|
||||
try {
|
||||
_connection.start();
|
||||
} catch (final NioConnectionException e) {
|
||||
throw new CloudRuntimeException("Unable to start the connection!", e);
|
||||
}
|
||||
_shell.getBackoffAlgorithm().waitBeforeRetry();
|
||||
} while (!_connection.isStartup());
|
||||
s_logger.info("Connected to the server");
|
||||
}
|
||||
|
||||
public void processStartupAnswer(Answer answer, Response response, Link link) {
|
||||
public void processStartupAnswer(final Answer answer, final Response response, final Link link) {
|
||||
boolean cancelled = false;
|
||||
synchronized (this) {
|
||||
if (_startup != null) {
|
||||
|
|
@ -450,7 +463,7 @@ public class Agent implements HandlerFactory, IAgentControl {
|
|||
if (s_logger.isDebugEnabled()) {
|
||||
if (!requestLogged) // ensures request is logged only once per method call
|
||||
{
|
||||
String requestMsg = request.toString();
|
||||
final String requestMsg = request.toString();
|
||||
if (requestMsg != null) {
|
||||
s_logger.debug("Request:" + requestMsg);
|
||||
}
|
||||
|
|
@ -464,7 +477,7 @@ public class Agent implements HandlerFactory, IAgentControl {
|
|||
scheduleWatch(link, request, (long)watch.getInterval() * 1000, watch.getInterval() * 1000);
|
||||
answer = new Answer(cmd, true, null);
|
||||
} else if (cmd instanceof ShutdownCommand) {
|
||||
ShutdownCommand shutdown = (ShutdownCommand)cmd;
|
||||
final ShutdownCommand shutdown = (ShutdownCommand)cmd;
|
||||
s_logger.debug("Received shutdownCommand, due to: " + shutdown.getReason());
|
||||
cancelTasks();
|
||||
_reconnectAllowed = false;
|
||||
|
|
@ -481,7 +494,7 @@ public class Agent implements HandlerFactory, IAgentControl {
|
|||
} else if (cmd instanceof AgentControlCommand) {
|
||||
answer = null;
|
||||
synchronized (_controlListeners) {
|
||||
for (IAgentControlListener listener : _controlListeners) {
|
||||
for (final IAgentControlListener listener : _controlListeners) {
|
||||
answer = listener.processControlRequest(request, (AgentControlCommand)cmd);
|
||||
if (answer != null) {
|
||||
break;
|
||||
|
|
@ -527,7 +540,7 @@ public class Agent implements HandlerFactory, IAgentControl {
|
|||
response = new Response(request, answers);
|
||||
} finally {
|
||||
if (s_logger.isDebugEnabled()) {
|
||||
String responseMsg = response.toString();
|
||||
final String responseMsg = response.toString();
|
||||
if (responseMsg != null) {
|
||||
s_logger.debug(response.toString());
|
||||
}
|
||||
|
|
@ -553,7 +566,7 @@ public class Agent implements HandlerFactory, IAgentControl {
|
|||
} else if (answer instanceof AgentControlAnswer) {
|
||||
// Notice, we are doing callback while holding a lock!
|
||||
synchronized (_controlListeners) {
|
||||
for (IAgentControlListener listener : _controlListeners) {
|
||||
for (final IAgentControlListener listener : _controlListeners) {
|
||||
listener.processControlResponse(response, (AgentControlAnswer)answer);
|
||||
}
|
||||
}
|
||||
|
|
@ -562,7 +575,7 @@ public class Agent implements HandlerFactory, IAgentControl {
|
|||
}
|
||||
}
|
||||
|
||||
public void processReadyCommand(Command cmd) {
|
||||
public void processReadyCommand(final Command cmd) {
|
||||
|
||||
final ReadyCommand ready = (ReadyCommand)cmd;
|
||||
|
||||
|
|
@ -574,10 +587,10 @@ public class Agent implements HandlerFactory, IAgentControl {
|
|||
|
||||
}
|
||||
|
||||
public void processOtherTask(Task task) {
|
||||
public void processOtherTask(final Task task) {
|
||||
final Object obj = task.get();
|
||||
if (obj instanceof Response) {
|
||||
if ((System.currentTimeMillis() - _lastPingResponseTime) > _pingInterval * _shell.getPingRetries()) {
|
||||
if (System.currentTimeMillis() - _lastPingResponseTime > _pingInterval * _shell.getPingRetries()) {
|
||||
s_logger.error("Ping Interval has gone past " + _pingInterval * _shell.getPingRetries() + ". Won't reconnect to mgt server, as connection is still alive");
|
||||
return;
|
||||
}
|
||||
|
|
@ -633,25 +646,25 @@ public class Agent implements HandlerFactory, IAgentControl {
|
|||
}
|
||||
|
||||
@Override
|
||||
public void registerControlListener(IAgentControlListener listener) {
|
||||
public void registerControlListener(final IAgentControlListener listener) {
|
||||
synchronized (_controlListeners) {
|
||||
_controlListeners.add(listener);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void unregisterControlListener(IAgentControlListener listener) {
|
||||
public void unregisterControlListener(final IAgentControlListener listener) {
|
||||
synchronized (_controlListeners) {
|
||||
_controlListeners.remove(listener);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public AgentControlAnswer sendRequest(AgentControlCommand cmd, int timeoutInMilliseconds) throws AgentControlChannelException {
|
||||
Request request = new Request(this.getId(), -1, new Command[] {cmd}, true, false);
|
||||
public AgentControlAnswer sendRequest(final AgentControlCommand cmd, final int timeoutInMilliseconds) throws AgentControlChannelException {
|
||||
final Request request = new Request(getId(), -1, new Command[] {cmd}, true, false);
|
||||
request.setSequence(getNextSequence());
|
||||
|
||||
AgentControlListener listener = new AgentControlListener(request);
|
||||
final AgentControlListener listener = new AgentControlListener(request);
|
||||
|
||||
registerControlListener(listener);
|
||||
try {
|
||||
|
|
@ -659,7 +672,7 @@ public class Agent implements HandlerFactory, IAgentControl {
|
|||
synchronized (listener) {
|
||||
try {
|
||||
listener.wait(timeoutInMilliseconds);
|
||||
} catch (InterruptedException e) {
|
||||
} catch (final InterruptedException e) {
|
||||
s_logger.warn("sendRequest is interrupted, exit waiting");
|
||||
}
|
||||
}
|
||||
|
|
@ -671,13 +684,13 @@ public class Agent implements HandlerFactory, IAgentControl {
|
|||
}
|
||||
|
||||
@Override
|
||||
public void postRequest(AgentControlCommand cmd) throws AgentControlChannelException {
|
||||
Request request = new Request(this.getId(), -1, new Command[] {cmd}, true, false);
|
||||
public void postRequest(final AgentControlCommand cmd) throws AgentControlChannelException {
|
||||
final Request request = new Request(getId(), -1, new Command[] {cmd}, true, false);
|
||||
request.setSequence(getNextSequence());
|
||||
postRequest(request);
|
||||
}
|
||||
|
||||
private void postRequest(Request request) throws AgentControlChannelException {
|
||||
private void postRequest(final Request request) throws AgentControlChannelException {
|
||||
if (_link != null) {
|
||||
try {
|
||||
_link.send(request.toBytes());
|
||||
|
|
@ -694,7 +707,7 @@ public class Agent implements HandlerFactory, IAgentControl {
|
|||
private AgentControlAnswer _answer;
|
||||
private final Request _request;
|
||||
|
||||
public AgentControlListener(Request request) {
|
||||
public AgentControlListener(final Request request) {
|
||||
_request = request;
|
||||
}
|
||||
|
||||
|
|
@ -703,12 +716,12 @@ public class Agent implements HandlerFactory, IAgentControl {
|
|||
}
|
||||
|
||||
@Override
|
||||
public Answer processControlRequest(Request request, AgentControlCommand cmd) {
|
||||
public Answer processControlRequest(final Request request, final AgentControlCommand cmd) {
|
||||
return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void processControlResponse(Response response, AgentControlAnswer answer) {
|
||||
public void processControlResponse(final Response response, final AgentControlAnswer answer) {
|
||||
if (_request.getSequence() == response.getSequence()) {
|
||||
_answer = answer;
|
||||
synchronized (this) {
|
||||
|
|
@ -797,13 +810,13 @@ public class Agent implements HandlerFactory, IAgentControl {
|
|||
}
|
||||
|
||||
public class AgentRequestHandler extends Task {
|
||||
public AgentRequestHandler(Task.Type type, Link link, Request req) {
|
||||
public AgentRequestHandler(final Task.Type type, final Link link, final Request req) {
|
||||
super(type, link, req);
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void doTask(Task task) throws Exception {
|
||||
Request req = (Request)this.get();
|
||||
protected void doTask(final Task task) throws TaskExecutionException {
|
||||
final Request req = (Request)get();
|
||||
if (!(req instanceof Response)) {
|
||||
processRequest(req, task.getLink());
|
||||
}
|
||||
|
|
@ -811,16 +824,16 @@ public class Agent implements HandlerFactory, IAgentControl {
|
|||
}
|
||||
|
||||
public class ServerHandler extends Task {
|
||||
public ServerHandler(Task.Type type, Link link, byte[] data) {
|
||||
public ServerHandler(final Task.Type type, final Link link, final byte[] data) {
|
||||
super(type, link, data);
|
||||
}
|
||||
|
||||
public ServerHandler(Task.Type type, Link link, Request req) {
|
||||
public ServerHandler(final Task.Type type, final Link link, final Request req) {
|
||||
super(type, link, req);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void doTask(final Task task) {
|
||||
public void doTask(final Task task) throws TaskExecutionException {
|
||||
if (task.getType() == Task.Type.CONNECT) {
|
||||
_shell.getBackoffAlgorithm().reset();
|
||||
setLink(task.getLink());
|
||||
|
|
@ -835,7 +848,7 @@ public class Agent implements HandlerFactory, IAgentControl {
|
|||
} else {
|
||||
//put the requests from mgt server into another thread pool, as the request may take a longer time to finish. Don't block the NIO main thread pool
|
||||
//processRequest(request, task.getLink());
|
||||
_executor.execute(new AgentRequestHandler(this.getType(), this.getLink(), request));
|
||||
_executor.submit(new AgentRequestHandler(getType(), getLink(), request));
|
||||
}
|
||||
} catch (final ClassNotFoundException e) {
|
||||
s_logger.error("Unable to find this request ");
|
||||
|
|
|
|||
|
|
@ -464,6 +464,7 @@ public class AgentShell implements IAgentShell, Daemon {
|
|||
while (!_exit)
|
||||
Thread.sleep(1000);
|
||||
} catch (InterruptedException e) {
|
||||
s_logger.debug("[ignored] AgentShell was interupted.");
|
||||
}
|
||||
|
||||
} catch (final ConfigurationException e) {
|
||||
|
|
|
|||
|
|
@ -0,0 +1,27 @@
|
|||
// 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.exception;
|
||||
|
||||
public class StorageConflictException extends ManagementServerException {
|
||||
|
||||
private static final long serialVersionUID = -294905017911859479L;
|
||||
|
||||
public StorageConflictException(String message) {
|
||||
super(message);
|
||||
}
|
||||
|
||||
}
|
||||
|
|
@ -39,6 +39,7 @@ public interface Volume extends ControlledEntity, Identity, InternalIdentity, Ba
|
|||
Ready("The volume is ready to be used."),
|
||||
Migrating("The volume is migrating to other storage pool"),
|
||||
Snapshotting("There is a snapshot created on this volume, not backed up to secondary storage yet"),
|
||||
RevertSnapshotting("There is a snapshot created on this volume, the volume is being reverting from snapshot"),
|
||||
Resizing("The volume is being resized"),
|
||||
Expunging("The volume is being expunging"),
|
||||
Expunged("The volume has been expunged"),
|
||||
|
|
@ -91,6 +92,9 @@ public interface Volume extends ControlledEntity, Identity, InternalIdentity, Ba
|
|||
s_fsm.addTransition(new StateMachine2.Transition<State, Event>(Ready, Event.SnapshotRequested, Snapshotting, null));
|
||||
s_fsm.addTransition(new StateMachine2.Transition<State, Event>(Snapshotting, Event.OperationSucceeded, Ready, null));
|
||||
s_fsm.addTransition(new StateMachine2.Transition<State, Event>(Snapshotting, Event.OperationFailed, Ready,null));
|
||||
s_fsm.addTransition(new StateMachine2.Transition<State, Event>(Ready, Event.RevertSnapshotRequested, RevertSnapshotting, null));
|
||||
s_fsm.addTransition(new StateMachine2.Transition<State, Event>(RevertSnapshotting, Event.OperationSucceeded, Ready, null));
|
||||
s_fsm.addTransition(new StateMachine2.Transition<State, Event>(RevertSnapshotting, Event.OperationFailed, Ready,null));
|
||||
s_fsm.addTransition(new StateMachine2.Transition<State, Event>(Allocated, Event.MigrationCopyRequested, Creating, null));
|
||||
s_fsm.addTransition(new StateMachine2.Transition<State, Event>(Creating, Event.MigrationCopyFailed, Allocated, null));
|
||||
s_fsm.addTransition(new StateMachine2.Transition<State, Event>(Creating, Event.MigrationCopySucceeded, Ready, Arrays.asList(new StateMachine2.Transition.Impact[]{StateMachine2.Transition.Impact.USAGE})));
|
||||
|
|
@ -131,6 +135,7 @@ public interface Volume extends ControlledEntity, Identity, InternalIdentity, Ba
|
|||
MigrationCopySucceeded,
|
||||
MigrationCopyFailed,
|
||||
SnapshotRequested,
|
||||
RevertSnapshotRequested,
|
||||
DestroyRequested,
|
||||
ExpungingRequested,
|
||||
ResizeRequested,
|
||||
|
|
|
|||
|
|
@ -106,7 +106,7 @@ public interface SnapshotApiService {
|
|||
*/
|
||||
Long getHostIdForSnapshotOperation(Volume vol);
|
||||
|
||||
boolean revertSnapshot(Long snapshotId);
|
||||
Snapshot revertSnapshot(Long snapshotId);
|
||||
|
||||
SnapshotPolicy updateSnapshotPolicy(UpdateSnapshotPolicyCmd updateSnapshotPolicyCmd);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -51,7 +51,7 @@ public interface TemplateApiService {
|
|||
|
||||
VirtualMachineTemplate copyTemplate(CopyTemplateCmd cmd) throws StorageUnavailableException, ResourceAllocationException;
|
||||
|
||||
VirtualMachineTemplate prepareTemplate(long templateId, long zoneId);
|
||||
VirtualMachineTemplate prepareTemplate(long templateId, long zoneId, Long storageId);
|
||||
|
||||
boolean detachIso(long vmId);
|
||||
|
||||
|
|
|
|||
|
|
@ -115,14 +115,8 @@ public interface Nic extends Identity, InternalIdentity {
|
|||
|
||||
boolean isDefaultNic();
|
||||
|
||||
String getIp4Address();
|
||||
|
||||
String getMacAddress();
|
||||
|
||||
String getNetmask();
|
||||
|
||||
String getGateway();
|
||||
|
||||
/**
|
||||
* @return network profile id that this
|
||||
*/
|
||||
|
|
@ -145,11 +139,25 @@ public interface Nic extends Identity, InternalIdentity {
|
|||
|
||||
AddressFormat getAddressFormat();
|
||||
|
||||
String getIp6Gateway();
|
||||
|
||||
String getIp6Cidr();
|
||||
|
||||
String getIp6Address();
|
||||
|
||||
boolean getSecondaryIp();
|
||||
|
||||
//
|
||||
// IPv4
|
||||
//
|
||||
|
||||
String getIPv4Address();
|
||||
|
||||
String getIPv4Netmask();
|
||||
|
||||
String getIPv4Gateway();
|
||||
|
||||
//
|
||||
// IPv6
|
||||
//
|
||||
|
||||
String getIPv6Gateway();
|
||||
|
||||
String getIPv6Cidr();
|
||||
|
||||
String getIPv6Address();
|
||||
}
|
||||
|
|
|
|||
|
|
@ -33,214 +33,64 @@ public class NicProfile implements InternalIdentity, Serializable {
|
|||
|
||||
long id;
|
||||
long networkId;
|
||||
BroadcastDomainType broadcastType;
|
||||
Mode mode;
|
||||
long vmId;
|
||||
String gateway;
|
||||
AddressFormat format;
|
||||
TrafficType trafficType;
|
||||
String ip4Address;
|
||||
String ip6Address;
|
||||
String ip6Gateway;
|
||||
String ip6Cidr;
|
||||
String macAddress;
|
||||
URI isolationUri;
|
||||
String netmask;
|
||||
URI broadcastUri;
|
||||
ReservationStrategy strategy;
|
||||
String reservationId;
|
||||
boolean defaultNic;
|
||||
Integer deviceId;
|
||||
String dns1;
|
||||
String dns2;
|
||||
String ip6Dns1;
|
||||
String ip6Dns2;
|
||||
Integer networkRate;
|
||||
boolean isSecurityGroupEnabled;
|
||||
|
||||
String name;
|
||||
String requestedIpv4;
|
||||
String requestedIpv6;
|
||||
String uuid;
|
||||
|
||||
public String getDns1() {
|
||||
return dns1;
|
||||
}
|
||||
String macAddress;
|
||||
BroadcastDomainType broadcastType;
|
||||
Mode mode;
|
||||
AddressFormat format;
|
||||
TrafficType trafficType;
|
||||
URI isolationUri;
|
||||
URI broadcastUri;
|
||||
ReservationStrategy strategy;
|
||||
boolean defaultNic;
|
||||
Integer networkRate;
|
||||
boolean isSecurityGroupEnabled;
|
||||
|
||||
public String getName() {
|
||||
return name;
|
||||
}
|
||||
// IPv4
|
||||
String iPv4Address;
|
||||
String iPv4Netmask;
|
||||
String iPv4Gateway;
|
||||
String iPv4Dns1;
|
||||
String iPv4Dns2;
|
||||
String requestedIPv4;
|
||||
|
||||
public void setName(String name) {
|
||||
this.name = name;
|
||||
}
|
||||
// IPv6
|
||||
String iPv6Address;
|
||||
String iPv6Gateway;
|
||||
String iPv6Cidr;
|
||||
String iPv6Dns1;
|
||||
String iPv6Dns2;
|
||||
String requestedIPv6;
|
||||
|
||||
public String getDns2() {
|
||||
return dns2;
|
||||
}
|
||||
//
|
||||
// CONSTRUCTORS
|
||||
//
|
||||
|
||||
public void setDns1(String dns1) {
|
||||
this.dns1 = dns1;
|
||||
}
|
||||
|
||||
public void setDns2(String dns2) {
|
||||
this.dns2 = dns2;
|
||||
}
|
||||
|
||||
public boolean isDefaultNic() {
|
||||
return defaultNic;
|
||||
}
|
||||
|
||||
public String getNetmask() {
|
||||
return netmask;
|
||||
}
|
||||
|
||||
public void setNetmask(String netmask) {
|
||||
this.netmask = netmask;
|
||||
}
|
||||
|
||||
public void setBroadcastUri(URI broadcastUri) {
|
||||
this.broadcastUri = broadcastUri;
|
||||
}
|
||||
|
||||
public URI getBroadCastUri() {
|
||||
return broadcastUri;
|
||||
}
|
||||
|
||||
public void setIsolationUri(URI isolationUri) {
|
||||
this.isolationUri = isolationUri;
|
||||
}
|
||||
|
||||
public URI getIsolationUri() {
|
||||
return isolationUri;
|
||||
}
|
||||
|
||||
public void setStrategy(ReservationStrategy strategy) {
|
||||
this.strategy = strategy;
|
||||
}
|
||||
|
||||
public BroadcastDomainType getType() {
|
||||
return broadcastType;
|
||||
}
|
||||
|
||||
public void setBroadcastType(BroadcastDomainType broadcastType) {
|
||||
this.broadcastType = broadcastType;
|
||||
}
|
||||
|
||||
public void setMode(Mode mode) {
|
||||
this.mode = mode;
|
||||
}
|
||||
|
||||
public void setDeviceId(int deviceId) {
|
||||
this.deviceId = deviceId;
|
||||
}
|
||||
|
||||
public void setDefaultNic(boolean defaultNic) {
|
||||
this.defaultNic = defaultNic;
|
||||
}
|
||||
|
||||
public Integer getDeviceId() {
|
||||
return deviceId;
|
||||
}
|
||||
|
||||
public void setGateway(String gateway) {
|
||||
this.gateway = gateway;
|
||||
}
|
||||
|
||||
public void setFormat(AddressFormat format) {
|
||||
this.format = format;
|
||||
}
|
||||
|
||||
public void setUuid(String uuid) {
|
||||
this.uuid = uuid;
|
||||
}
|
||||
|
||||
public void setTrafficType(TrafficType trafficType) {
|
||||
this.trafficType = trafficType;
|
||||
}
|
||||
|
||||
public void setIp6Address(String ip6Address) {
|
||||
this.ip6Address = ip6Address;
|
||||
}
|
||||
|
||||
public Mode getMode() {
|
||||
return mode;
|
||||
}
|
||||
|
||||
public long getNetworkId() {
|
||||
return networkId;
|
||||
}
|
||||
|
||||
public long getVirtualMachineId() {
|
||||
return vmId;
|
||||
}
|
||||
|
||||
@Override
|
||||
public long getId() {
|
||||
return id;
|
||||
}
|
||||
|
||||
public BroadcastDomainType getBroadcastType() {
|
||||
return broadcastType;
|
||||
}
|
||||
|
||||
public void setMacAddress(String macAddress) {
|
||||
this.macAddress = macAddress;
|
||||
}
|
||||
|
||||
public long getVmId() {
|
||||
return vmId;
|
||||
}
|
||||
|
||||
public String getGateway() {
|
||||
return gateway;
|
||||
}
|
||||
|
||||
public AddressFormat getFormat() {
|
||||
return format;
|
||||
}
|
||||
|
||||
public TrafficType getTrafficType() {
|
||||
return trafficType;
|
||||
}
|
||||
|
||||
public String getIp4Address() {
|
||||
return ip4Address;
|
||||
}
|
||||
|
||||
public String getIp6Address() {
|
||||
return ip6Address;
|
||||
}
|
||||
|
||||
public String getMacAddress() {
|
||||
return macAddress;
|
||||
}
|
||||
|
||||
public void setIp4Address(String ip4Address) {
|
||||
this.ip4Address = ip4Address;
|
||||
}
|
||||
|
||||
public Integer getNetworkRate() {
|
||||
return networkRate;
|
||||
}
|
||||
|
||||
public ReservationStrategy getStrategy() {
|
||||
return strategy;
|
||||
}
|
||||
|
||||
public String getUuid() {
|
||||
return uuid;
|
||||
public NicProfile() {
|
||||
}
|
||||
|
||||
public NicProfile(Nic nic, Network network, URI broadcastUri, URI isolationUri, Integer networkRate, boolean isSecurityGroupEnabled, String name) {
|
||||
id = nic.getId();
|
||||
networkId = network.getId();
|
||||
gateway = nic.getGateway();
|
||||
mode = network.getMode();
|
||||
broadcastType = network.getBroadcastDomainType();
|
||||
trafficType = network.getTrafficType();
|
||||
ip4Address = nic.getIp4Address();
|
||||
format = nic.getAddressFormat();
|
||||
ip6Address = nic.getIp6Address();
|
||||
|
||||
iPv4Address = nic.getIPv4Address();
|
||||
iPv4Netmask = nic.getIPv4Netmask();
|
||||
iPv4Gateway = nic.getIPv4Gateway();
|
||||
|
||||
iPv6Address = nic.getIPv6Address();
|
||||
iPv6Gateway = nic.getIPv6Gateway();
|
||||
iPv6Cidr = nic.getIPv6Cidr();
|
||||
|
||||
macAddress = nic.getMacAddress();
|
||||
reservationId = nic.getReservationId();
|
||||
strategy = nic.getReservationStrategy();
|
||||
|
|
@ -248,12 +98,10 @@ public class NicProfile implements InternalIdentity, Serializable {
|
|||
defaultNic = nic.isDefaultNic();
|
||||
this.broadcastUri = broadcastUri;
|
||||
this.isolationUri = isolationUri;
|
||||
netmask = nic.getNetmask();
|
||||
|
||||
this.isSecurityGroupEnabled = isSecurityGroupEnabled;
|
||||
vmId = nic.getInstanceId();
|
||||
this.name = name;
|
||||
ip6Cidr = nic.getIp6Cidr();
|
||||
ip6Gateway = nic.getIp6Gateway();
|
||||
uuid = nic.getUuid();
|
||||
|
||||
if (networkRate != null) {
|
||||
|
|
@ -261,25 +109,47 @@ public class NicProfile implements InternalIdentity, Serializable {
|
|||
}
|
||||
}
|
||||
|
||||
public NicProfile(ReservationStrategy strategy, String ip4Address, String macAddress, String gateway, String netmask) {
|
||||
public NicProfile(String requestedIPv4, String requestedIPv6) {
|
||||
this.requestedIPv4 = requestedIPv4;
|
||||
this.requestedIPv6 = requestedIPv6;
|
||||
}
|
||||
|
||||
public NicProfile(ReservationStrategy strategy, String iPv4Address, String macAddress, String iPv4gateway, String iPv4netmask) {
|
||||
format = AddressFormat.Ip4;
|
||||
this.ip4Address = ip4Address;
|
||||
this.iPv4Address = iPv4Address;
|
||||
this.iPv4Gateway = iPv4gateway;
|
||||
this.iPv4Netmask = iPv4netmask;
|
||||
this.macAddress = macAddress;
|
||||
this.gateway = gateway;
|
||||
this.netmask = netmask;
|
||||
this.strategy = strategy;
|
||||
}
|
||||
|
||||
public NicProfile(String requestedIpv4, String requestedIpv6) {
|
||||
this.requestedIpv4 = requestedIpv4;
|
||||
this.requestedIpv6 = requestedIpv6;
|
||||
//
|
||||
// GET & SET GENERAL
|
||||
//
|
||||
|
||||
@Override
|
||||
public long getId() {
|
||||
return id;
|
||||
}
|
||||
|
||||
public NicProfile() {
|
||||
public void setId(long id) {
|
||||
this.id = id;
|
||||
}
|
||||
|
||||
public ReservationStrategy getReservationStrategy() {
|
||||
return strategy;
|
||||
public long getNetworkId() {
|
||||
return networkId;
|
||||
}
|
||||
|
||||
public void setNetworId(long networkId){
|
||||
this.networkId = networkId;
|
||||
}
|
||||
|
||||
public long getVirtualMachineId() {
|
||||
return vmId;
|
||||
}
|
||||
|
||||
public void setVirtualMachineId(long virtualMachineId) {
|
||||
this.vmId = virtualMachineId;
|
||||
}
|
||||
|
||||
public String getReservationId() {
|
||||
|
|
@ -290,6 +160,110 @@ public class NicProfile implements InternalIdentity, Serializable {
|
|||
this.reservationId = reservationId;
|
||||
}
|
||||
|
||||
public Integer getDeviceId() {
|
||||
return deviceId;
|
||||
}
|
||||
|
||||
public void setDeviceId(int deviceId) {
|
||||
this.deviceId = deviceId;
|
||||
}
|
||||
|
||||
public String getName() {
|
||||
return name;
|
||||
}
|
||||
|
||||
public void setName(String name) {
|
||||
this.name = name;
|
||||
}
|
||||
|
||||
public String getUuid() {
|
||||
return uuid;
|
||||
}
|
||||
|
||||
public void setUuid(String uuid) {
|
||||
this.uuid = uuid;
|
||||
}
|
||||
|
||||
public String getMacAddress() {
|
||||
return macAddress;
|
||||
}
|
||||
|
||||
public void setMacAddress(String macAddress) {
|
||||
this.macAddress = macAddress;
|
||||
}
|
||||
|
||||
public BroadcastDomainType getBroadcastType() {
|
||||
return broadcastType;
|
||||
}
|
||||
|
||||
public void setBroadcastType(BroadcastDomainType broadcastType) {
|
||||
this.broadcastType = broadcastType;
|
||||
}
|
||||
|
||||
public Mode getMode() {
|
||||
return mode;
|
||||
}
|
||||
|
||||
public void setMode(Mode mode) {
|
||||
this.mode = mode;
|
||||
}
|
||||
|
||||
public AddressFormat getFormat() {
|
||||
return format;
|
||||
}
|
||||
|
||||
public void setFormat(AddressFormat format) {
|
||||
this.format = format;
|
||||
}
|
||||
|
||||
public TrafficType getTrafficType() {
|
||||
return trafficType;
|
||||
}
|
||||
|
||||
public void setTrafficType(TrafficType trafficType) {
|
||||
this.trafficType = trafficType;
|
||||
}
|
||||
|
||||
public URI getIsolationUri() {
|
||||
return isolationUri;
|
||||
}
|
||||
|
||||
public void setIsolationUri(URI isolationUri) {
|
||||
this.isolationUri = isolationUri;
|
||||
}
|
||||
|
||||
public URI getBroadCastUri() {
|
||||
return broadcastUri;
|
||||
}
|
||||
|
||||
public void setBroadcastUri(URI broadcastUri) {
|
||||
this.broadcastUri = broadcastUri;
|
||||
}
|
||||
|
||||
public ReservationStrategy getReservationStrategy() {
|
||||
return strategy;
|
||||
}
|
||||
|
||||
public void setReservationStrategy(ReservationStrategy strategy) {
|
||||
this.strategy = strategy;
|
||||
}
|
||||
|
||||
public boolean isDefaultNic() {
|
||||
return defaultNic;
|
||||
}
|
||||
|
||||
public void setDefaultNic(boolean defaultNic) {
|
||||
this.defaultNic = defaultNic;
|
||||
}
|
||||
|
||||
public Integer getNetworkRate() {
|
||||
return networkRate;
|
||||
}
|
||||
|
||||
public void setNetworkRate(Integer networkRate) {
|
||||
this.networkRate = networkRate;
|
||||
}
|
||||
|
||||
public boolean isSecurityGroupEnabled() {
|
||||
return isSecurityGroupEnabled;
|
||||
}
|
||||
|
|
@ -298,27 +272,139 @@ public class NicProfile implements InternalIdentity, Serializable {
|
|||
isSecurityGroupEnabled = enabled;
|
||||
}
|
||||
|
||||
public String getRequestedIpv4() {
|
||||
return requestedIpv4;
|
||||
//
|
||||
// GET & SET IPv4
|
||||
//
|
||||
|
||||
public String getIPv4Address() {
|
||||
return iPv4Address;
|
||||
}
|
||||
|
||||
public void setIPv4Address(String ipv4Address) {
|
||||
this.iPv4Address = ipv4Address;
|
||||
}
|
||||
|
||||
public String getIPv4Netmask() {
|
||||
return iPv4Netmask;
|
||||
}
|
||||
|
||||
public void setIPv4Netmask(String ipv4Netmask) {
|
||||
this.iPv4Netmask = ipv4Netmask;
|
||||
}
|
||||
|
||||
public String getIPv4Gateway() {
|
||||
return iPv4Gateway;
|
||||
}
|
||||
|
||||
public void setIPv4Gateway(String ipv4Gateway) {
|
||||
this.iPv4Gateway = ipv4Gateway;
|
||||
}
|
||||
|
||||
public String getIPv4Dns1() {
|
||||
return iPv4Dns1;
|
||||
}
|
||||
|
||||
public void setIPv4Dns1(String ipv4Dns1) {
|
||||
this.iPv4Dns1 = ipv4Dns1;
|
||||
}
|
||||
|
||||
public String getIPv4Dns2() {
|
||||
return iPv4Dns2;
|
||||
}
|
||||
|
||||
public void setIPv4Dns2(String ipv4Dns2) {
|
||||
this.iPv4Dns2 = ipv4Dns2;
|
||||
}
|
||||
|
||||
public String getRequestedIPv4() {
|
||||
return requestedIPv4;
|
||||
}
|
||||
|
||||
public void setRequestedIPv4(String requestedIPv4) {
|
||||
this.requestedIPv4 = requestedIPv4;
|
||||
}
|
||||
|
||||
//
|
||||
// GET & SET IPv6
|
||||
//
|
||||
|
||||
public String getIPv6Address() {
|
||||
return iPv6Address;
|
||||
}
|
||||
|
||||
public void setIPv6Address(String ipv6Address) {
|
||||
this.iPv6Address = ipv6Address;
|
||||
}
|
||||
|
||||
public String getIPv6Gateway() {
|
||||
return iPv6Gateway;
|
||||
}
|
||||
|
||||
public void setIPv6Gateway(String ipv6Gateway) {
|
||||
this.iPv6Gateway = ipv6Gateway;
|
||||
}
|
||||
|
||||
public String getIPv6Cidr() {
|
||||
return iPv6Cidr;
|
||||
}
|
||||
|
||||
public void setIPv6Cidr(String ipv6Cidr) {
|
||||
this.iPv6Cidr = ipv6Cidr;
|
||||
}
|
||||
|
||||
public String getIPv6Dns1() {
|
||||
return iPv6Dns1;
|
||||
}
|
||||
|
||||
public void setIPv6Dns1(String ipv6Dns1) {
|
||||
this.iPv6Dns1 = ipv6Dns1;
|
||||
}
|
||||
|
||||
public String getIPv6Dns2() {
|
||||
return iPv6Dns2;
|
||||
}
|
||||
|
||||
public void setIPv6Dns2(String ipv6Dns2) {
|
||||
this.iPv6Dns2 = ipv6Dns2;
|
||||
}
|
||||
|
||||
public String getRequestedIPv6() {
|
||||
return requestedIPv6;
|
||||
}
|
||||
|
||||
public void setRequestedIPv6(String requestedIPv6) {
|
||||
this.requestedIPv6 = requestedIPv6;
|
||||
}
|
||||
|
||||
//
|
||||
// OTHER METHODS
|
||||
//
|
||||
|
||||
public void deallocate() {
|
||||
gateway = null;
|
||||
mode = null;
|
||||
format = null;
|
||||
broadcastType = null;
|
||||
trafficType = null;
|
||||
ip4Address = null;
|
||||
ip6Address = null;
|
||||
|
||||
iPv4Address = null;
|
||||
iPv4Netmask = null;
|
||||
iPv4Gateway = null;
|
||||
iPv4Dns1 = null;
|
||||
iPv4Dns2 = null;
|
||||
|
||||
iPv6Address = null;
|
||||
iPv6Gateway = null;
|
||||
iPv6Cidr = null;
|
||||
iPv6Dns1 = null;
|
||||
iPv6Dns2 = null;
|
||||
|
||||
macAddress = null;
|
||||
reservationId = null;
|
||||
strategy = null;
|
||||
deviceId = null;
|
||||
broadcastUri = null;
|
||||
isolationUri = null;
|
||||
netmask = null;
|
||||
dns1 = null;
|
||||
dns2 = null;
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
|
|
@ -329,54 +415,9 @@ public class NicProfile implements InternalIdentity, Serializable {
|
|||
.append("-")
|
||||
.append(reservationId)
|
||||
.append("-")
|
||||
.append(ip4Address)
|
||||
.append(iPv4Address)
|
||||
.append("-")
|
||||
.append(broadcastUri)
|
||||
.toString();
|
||||
}
|
||||
|
||||
public String getIp6Gateway() {
|
||||
return ip6Gateway;
|
||||
}
|
||||
|
||||
public void setIp6Gateway(String ip6Gateway) {
|
||||
this.ip6Gateway = ip6Gateway;
|
||||
}
|
||||
|
||||
public String getIp6Cidr() {
|
||||
return ip6Cidr;
|
||||
}
|
||||
|
||||
public void setIp6Cidr(String ip6Cidr) {
|
||||
this.ip6Cidr = ip6Cidr;
|
||||
}
|
||||
|
||||
public String getRequestedIpv6() {
|
||||
return requestedIpv6;
|
||||
}
|
||||
|
||||
public void setRequestedIpv6(String requestedIpv6) {
|
||||
this.requestedIpv6 = requestedIpv6;
|
||||
}
|
||||
|
||||
public String getIp6Dns1() {
|
||||
return ip6Dns1;
|
||||
}
|
||||
|
||||
public void setIp6Dns1(String ip6Dns1) {
|
||||
this.ip6Dns1 = ip6Dns1;
|
||||
}
|
||||
|
||||
public String getIp6Dns2() {
|
||||
return ip6Dns2;
|
||||
}
|
||||
|
||||
public void setIp6Dns2(String ip6Dns2) {
|
||||
this.ip6Dns2 = ip6Dns2;
|
||||
}
|
||||
|
||||
public void setNetworId(long networkId){
|
||||
this.networkId = networkId;
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
|
@ -271,6 +271,7 @@ public class ApiConstants {
|
|||
public static final String VIRTUAL_MACHINE_ID = "virtualmachineid";
|
||||
public static final String VIRTUAL_MACHINE_IDS = "virtualmachineids";
|
||||
public static final String VIRTUAL_MACHINE_ID_IP = "vmidipmap";
|
||||
public static final String VIRTUAL_MACHINE_COUNT = "virtualmachinecount";
|
||||
public static final String USAGE_ID = "usageid";
|
||||
|
||||
public static final String VLAN = "vlan";
|
||||
|
|
@ -627,6 +628,8 @@ public class ApiConstants {
|
|||
public static final String OVM3_CLUSTER = "ovm3cluster";
|
||||
public static final String OVM3_VIP = "ovm3vip";
|
||||
|
||||
public static final String ADMIN = "admin";
|
||||
|
||||
public enum HostDetails {
|
||||
all, capacity, events, stats, min;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -19,6 +19,7 @@ package org.apache.cloudstack.api.command.admin.account;
|
|||
import java.util.Collection;
|
||||
import java.util.Map;
|
||||
|
||||
import org.apache.commons.lang.StringUtils;
|
||||
import org.apache.log4j.Logger;
|
||||
|
||||
import org.apache.cloudstack.api.APICommand;
|
||||
|
|
@ -31,7 +32,6 @@ import org.apache.cloudstack.api.ServerApiException;
|
|||
import org.apache.cloudstack.api.response.AccountResponse;
|
||||
import org.apache.cloudstack.api.response.DomainResponse;
|
||||
import org.apache.cloudstack.context.CallContext;
|
||||
import org.apache.commons.lang.StringUtils;
|
||||
|
||||
import com.cloud.user.Account;
|
||||
import com.cloud.user.UserAccount;
|
||||
|
|
@ -175,9 +175,7 @@ public class CreateAccountCmd extends BaseCmd {
|
|||
|
||||
@Override
|
||||
public void execute() {
|
||||
if (StringUtils.isEmpty(getPassword())) {
|
||||
throw new ServerApiException(ApiErrorCode.PARAM_ERROR, "Empty passwords are not allowed");
|
||||
}
|
||||
validateParams();
|
||||
CallContext.current().setEventDetails("Account Name: " + getAccountName() + ", Domain Id:" + getDomainId());
|
||||
UserAccount userAccount =
|
||||
_accountService.createUserAccount(getUsername(), getPassword(), getFirstName(), getLastName(), getEmail(), getTimeZone(), getAccountName(), getAccountType(),
|
||||
|
|
@ -190,4 +188,13 @@ public class CreateAccountCmd extends BaseCmd {
|
|||
throw new ServerApiException(ApiErrorCode.INTERNAL_ERROR, "Failed to create a user account");
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* TODO: this should be done through a validator. for now replicating the validation logic in create account and user
|
||||
*/
|
||||
private void validateParams() {
|
||||
if(StringUtils.isEmpty(getPassword())) {
|
||||
throw new ServerApiException(ApiErrorCode.PARAM_ERROR, "Empty passwords are not allowed");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -28,6 +28,7 @@ import org.apache.cloudstack.api.BaseCmd;
|
|||
import org.apache.cloudstack.api.Parameter;
|
||||
import org.apache.cloudstack.api.ResponseObject.ResponseView;
|
||||
import org.apache.cloudstack.api.response.ListResponse;
|
||||
import org.apache.cloudstack.api.response.StoragePoolResponse;
|
||||
import org.apache.cloudstack.api.response.TemplateResponse;
|
||||
import org.apache.cloudstack.api.response.ZoneResponse;
|
||||
|
||||
|
|
@ -60,6 +61,15 @@ public class PrepareTemplateCmd extends BaseCmd {
|
|||
description = "template ID of the template to be prepared in primary storage(s).")
|
||||
private Long templateId;
|
||||
|
||||
@ACL(accessType = AccessType.OperateEntry)
|
||||
@Parameter(name = ApiConstants.STORAGE_ID,
|
||||
type = CommandType.UUID,
|
||||
entityType = StoragePoolResponse.class,
|
||||
required = false,
|
||||
description = "storage pool ID of the primary storage pool to which the template should be prepared. If it is not provided the template" +
|
||||
" is prepared on all the available primary storage pools.")
|
||||
private Long storageId;
|
||||
|
||||
/////////////////////////////////////////////////////
|
||||
/////////////////// Accessors ///////////////////////
|
||||
/////////////////////////////////////////////////////
|
||||
|
|
@ -72,6 +82,10 @@ public class PrepareTemplateCmd extends BaseCmd {
|
|||
return templateId;
|
||||
}
|
||||
|
||||
public Long getStorageId() {
|
||||
return storageId;
|
||||
}
|
||||
|
||||
/////////////////////////////////////////////////////
|
||||
/////////////// API Implementation///////////////////
|
||||
/////////////////////////////////////////////////////
|
||||
|
|
@ -90,7 +104,7 @@ public class PrepareTemplateCmd extends BaseCmd {
|
|||
public void execute() {
|
||||
ListResponse<TemplateResponse> response = new ListResponse<TemplateResponse>();
|
||||
|
||||
VirtualMachineTemplate vmTemplate = _templateService.prepareTemplate(templateId, zoneId);
|
||||
VirtualMachineTemplate vmTemplate = _templateService.prepareTemplate(templateId, zoneId, storageId);
|
||||
List<TemplateResponse> templateResponses = _responseGenerator.createTemplateResponses(ResponseView.Full, vmTemplate, zoneId, true);
|
||||
response.setResponses(templateResponses);
|
||||
response.setResponseName(getCommandName());
|
||||
|
|
|
|||
|
|
@ -150,9 +150,7 @@ public class CreateUserCmd extends BaseCmd {
|
|||
|
||||
@Override
|
||||
public void execute() {
|
||||
if (StringUtils.isEmpty(getPassword())) {
|
||||
throw new ServerApiException(ApiErrorCode.PARAM_ERROR, "Empty passwords are not allowed");
|
||||
}
|
||||
validateParams();
|
||||
CallContext.current().setEventDetails("UserName: " + getUserName() + ", FirstName :" + getFirstName() + ", LastName: " + getLastName());
|
||||
User user =
|
||||
_accountService.createUser(getUserName(), getPassword(), getFirstName(), getLastName(), getEmail(), getTimezone(), getAccountName(), getDomainId(),
|
||||
|
|
@ -165,4 +163,13 @@ public class CreateUserCmd extends BaseCmd {
|
|||
throw new ServerApiException(ApiErrorCode.INTERNAL_ERROR, "Failed to create a user");
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* TODO: this should be done through a validator. for now replicating the validation logic in create account and user
|
||||
*/
|
||||
private void validateParams() {
|
||||
if(StringUtils.isEmpty(getPassword())) {
|
||||
throw new ServerApiException(ApiErrorCode.PARAM_ERROR, "Empty passwords are not allowed");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -134,7 +134,7 @@ public class CreateAutoScalePolicyCmd extends BaseAsyncCreateCmd {
|
|||
long conditionId = getConditionIds().get(0);
|
||||
Condition condition = _entityMgr.findById(Condition.class, conditionId);
|
||||
if (condition == null) {
|
||||
// it is an invalid condition, return system acccount, error will be thrown later.
|
||||
// it is an invalid condition, return system account, error will be thrown later.
|
||||
conditionDomainId = Domain.ROOT_DOMAIN;
|
||||
conditionAccountId = Account.ACCOUNT_ID_SYSTEM;
|
||||
} else {
|
||||
|
|
|
|||
|
|
@ -18,11 +18,10 @@ package org.apache.cloudstack.api.command.user.config;
|
|||
|
||||
import java.util.Map;
|
||||
|
||||
import org.apache.log4j.Logger;
|
||||
|
||||
import org.apache.cloudstack.api.APICommand;
|
||||
import org.apache.cloudstack.api.BaseCmd;
|
||||
import org.apache.cloudstack.api.response.CapabilitiesResponse;
|
||||
import org.apache.log4j.Logger;
|
||||
|
||||
import com.cloud.user.Account;
|
||||
|
||||
|
|
@ -57,6 +56,8 @@ public class ListCapabilitiesCmd extends BaseCmd {
|
|||
response.setDiskOffMaxSize((Long)capabilities.get("customDiskOffMaxSize"));
|
||||
response.setRegionSecondaryEnabled((Boolean)capabilities.get("regionSecondaryEnabled"));
|
||||
response.setKVMSnapshotEnabled((Boolean)capabilities.get("KVMSnapshotEnabled"));
|
||||
response.setAllowUserViewDestroyedVM((Boolean)capabilities.get("allowUserViewDestroyedVM"));
|
||||
response.setAllowUserExpungeRecoverVM((Boolean)capabilities.get("allowUserExpungeRecoverVM"));
|
||||
if (capabilities.containsKey("apiLimitInterval")) {
|
||||
response.setApiLimitInterval((Integer)capabilities.get("apiLimitInterval"));
|
||||
}
|
||||
|
|
|
|||
|
|
@ -29,8 +29,8 @@ import org.apache.cloudstack.api.BaseCmd;
|
|||
import org.apache.cloudstack.api.Parameter;
|
||||
import org.apache.cloudstack.api.ServerApiException;
|
||||
import org.apache.cloudstack.api.response.SnapshotResponse;
|
||||
import org.apache.cloudstack.api.response.SuccessResponse;
|
||||
import org.apache.cloudstack.context.CallContext;
|
||||
import org.apache.log4j.Logger;
|
||||
|
||||
import com.cloud.event.EventTypes;
|
||||
import com.cloud.storage.Snapshot;
|
||||
|
|
@ -39,17 +39,27 @@ import com.cloud.user.Account;
|
|||
@APICommand(name = "revertSnapshot", description = "revert a volume snapshot.", responseObject = SnapshotResponse.class, entityType = {Snapshot.class},
|
||||
requestHasSensitiveInfo = false, responseHasSensitiveInfo = false)
|
||||
public class RevertSnapshotCmd extends BaseAsyncCmd {
|
||||
public static final Logger s_logger = Logger.getLogger(RevertSnapshotCmd.class.getName());
|
||||
private static final String s_name = "revertsnapshotresponse";
|
||||
|
||||
/////////////////////////////////////////////////////
|
||||
//////////////// API parameters /////////////////////
|
||||
/////////////////////////////////////////////////////
|
||||
@ACL(accessType = AccessType.OperateEntry)
|
||||
@Parameter(name= ApiConstants.ID, type= BaseCmd.CommandType.UUID, entityType = SnapshotResponse.class,
|
||||
required=true, description="The ID of the snapshot")
|
||||
private Long id;
|
||||
|
||||
/////////////////////////////////////////////////////
|
||||
/////////////////// Accessors ///////////////////////
|
||||
/////////////////////////////////////////////////////
|
||||
public Long getId() {
|
||||
return id;
|
||||
}
|
||||
|
||||
/////////////////////////////////////////////////////
|
||||
/////////////// API Implementation///////////////////
|
||||
/////////////////////////////////////////////////////
|
||||
@Override
|
||||
public String getCommandName() {
|
||||
return s_name;
|
||||
|
|
@ -88,9 +98,9 @@ public class RevertSnapshotCmd extends BaseAsyncCmd {
|
|||
@Override
|
||||
public void execute() {
|
||||
CallContext.current().setEventDetails("Snapshot Id: " + getId());
|
||||
boolean result = _snapshotService.revertSnapshot(getId());
|
||||
if (result) {
|
||||
SuccessResponse response = new SuccessResponse(getCommandName());
|
||||
Snapshot snapshot = _snapshotService.revertSnapshot(getId());
|
||||
if (snapshot != null) {
|
||||
SnapshotResponse response = _responseGenerator.createSnapshotResponse(snapshot);
|
||||
response.setResponseName(getCommandName());
|
||||
setResponseObject(response);
|
||||
} else {
|
||||
|
|
|
|||
|
|
@ -20,6 +20,14 @@ import java.util.Collection;
|
|||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
import org.apache.cloudstack.acl.SecurityChecker;
|
||||
import org.apache.cloudstack.api.response.GuestOSResponse;
|
||||
import org.apache.cloudstack.api.response.SnapshotResponse;
|
||||
import org.apache.cloudstack.api.response.TemplateResponse;
|
||||
import org.apache.cloudstack.api.response.UserVmResponse;
|
||||
import org.apache.cloudstack.api.response.VolumeResponse;
|
||||
import org.apache.cloudstack.api.response.ProjectResponse;
|
||||
|
||||
import org.apache.log4j.Logger;
|
||||
|
||||
import org.apache.cloudstack.api.APICommand;
|
||||
|
|
@ -30,11 +38,6 @@ import org.apache.cloudstack.api.BaseAsyncCreateCmd;
|
|||
import org.apache.cloudstack.api.Parameter;
|
||||
import org.apache.cloudstack.api.ResponseObject.ResponseView;
|
||||
import org.apache.cloudstack.api.ServerApiException;
|
||||
import org.apache.cloudstack.api.response.GuestOSResponse;
|
||||
import org.apache.cloudstack.api.response.SnapshotResponse;
|
||||
import org.apache.cloudstack.api.response.TemplateResponse;
|
||||
import org.apache.cloudstack.api.response.UserVmResponse;
|
||||
import org.apache.cloudstack.api.response.VolumeResponse;
|
||||
import org.apache.cloudstack.context.CallContext;
|
||||
|
||||
import com.cloud.event.EventTypes;
|
||||
|
|
@ -124,6 +127,9 @@ public class CreateTemplateCmd extends BaseAsyncCreateCmd {
|
|||
description = "true if template contains XS/VMWare tools inorder to support dynamic scaling of VM cpu/memory")
|
||||
protected Boolean isDynamicallyScalable;
|
||||
|
||||
@Parameter(name = ApiConstants.PROJECT_ID, type = CommandType.UUID, entityType = ProjectResponse.class, description = "create template for the project")
|
||||
private Long projectId;
|
||||
|
||||
// ///////////////////////////////////////////////////
|
||||
// ///////////////// Accessors ///////////////////////
|
||||
// ///////////////////////////////////////////////////
|
||||
|
|
@ -211,37 +217,43 @@ public class CreateTemplateCmd extends BaseAsyncCreateCmd {
|
|||
public long getEntityOwnerId() {
|
||||
Long volumeId = getVolumeId();
|
||||
Long snapshotId = getSnapshotId();
|
||||
Long accountId = null;
|
||||
Account callingAccount = CallContext.current().getCallingAccount();
|
||||
if (volumeId != null) {
|
||||
Volume volume = _entityMgr.findById(Volume.class, volumeId);
|
||||
if (volume != null) {
|
||||
accountId = volume.getAccountId();
|
||||
_accountService.checkAccess(callingAccount, SecurityChecker.AccessType.UseEntry, false, volume);
|
||||
} else {
|
||||
throw new InvalidParameterValueException("Unable to find volume by id=" + volumeId);
|
||||
}
|
||||
} else {
|
||||
Snapshot snapshot = _entityMgr.findById(Snapshot.class, snapshotId);
|
||||
if (snapshot != null) {
|
||||
accountId = snapshot.getAccountId();
|
||||
_accountService.checkAccess(callingAccount, SecurityChecker.AccessType.UseEntry, false, snapshot);
|
||||
} else {
|
||||
throw new InvalidParameterValueException("Unable to find snapshot by id=" + snapshotId);
|
||||
}
|
||||
}
|
||||
|
||||
Account account = _accountService.getAccount(accountId);
|
||||
//Can create templates for enabled projects/accounts only
|
||||
if (account.getType() == Account.ACCOUNT_TYPE_PROJECT) {
|
||||
Project project = _projectService.findByProjectAccountId(accountId);
|
||||
if (project.getState() != Project.State.Active) {
|
||||
PermissionDeniedException ex =
|
||||
new PermissionDeniedException("Can't add resources to the specified project id in state=" + project.getState() + " as it's no longer active");
|
||||
ex.addProxyObject(project.getUuid(), "projectId");
|
||||
if(projectId != null){
|
||||
final Project project = _projectService.getProject(projectId);
|
||||
if (project != null) {
|
||||
if (project.getState() == Project.State.Active) {
|
||||
Account projectAccount= _accountService.getAccount(project.getProjectAccountId());
|
||||
_accountService.checkAccess(callingAccount, SecurityChecker.AccessType.UseEntry, false, projectAccount);
|
||||
return project.getProjectAccountId();
|
||||
} else {
|
||||
final PermissionDeniedException ex =
|
||||
new PermissionDeniedException("Can't add resources to the project with specified projectId in state=" + project.getState() +
|
||||
" as it's no longer active");
|
||||
ex.addProxyObject(project.getUuid(), "projectId");
|
||||
throw ex;
|
||||
}
|
||||
} else {
|
||||
throw new InvalidParameterValueException("Unable to find project by id");
|
||||
}
|
||||
} else if (account.getState() == Account.State.disabled) {
|
||||
throw new PermissionDeniedException("The owner of template is disabled: " + account);
|
||||
}
|
||||
|
||||
return accountId;
|
||||
return callingAccount.getId();
|
||||
}
|
||||
|
||||
@Override
|
||||
|
|
@ -267,7 +279,7 @@ public class CreateTemplateCmd extends BaseAsyncCreateCmd {
|
|||
public void create() throws ResourceAllocationException {
|
||||
VirtualMachineTemplate template = null;
|
||||
//TemplateOwner should be the caller https://issues.citrite.net/browse/CS-17530
|
||||
template = _templateService.createPrivateTemplateRecord(this, CallContext.current().getCallingAccount());
|
||||
template = _templateService.createPrivateTemplateRecord(this, _accountService.getAccount(getEntityOwnerId()));
|
||||
if (template != null) {
|
||||
setEntityId(template.getId());
|
||||
setEntityUuid(template.getUuid());
|
||||
|
|
|
|||
|
|
@ -40,7 +40,7 @@ import com.cloud.user.Account;
|
|||
import com.cloud.uservm.UserVm;
|
||||
import com.cloud.vm.VirtualMachine;
|
||||
|
||||
@APICommand(name = "destroyVirtualMachine", description = "Destroys a virtual machine. Once destroyed, only the administrator can recover it.", responseObject = UserVmResponse.class, responseView = ResponseView.Restricted, entityType = {VirtualMachine.class},
|
||||
@APICommand(name = "destroyVirtualMachine", description = "Destroys a virtual machine.", responseObject = UserVmResponse.class, responseView = ResponseView.Restricted, entityType = {VirtualMachine.class},
|
||||
requestHasSensitiveInfo = false,
|
||||
responseHasSensitiveInfo = true)
|
||||
public class DestroyVMCmd extends BaseAsyncCmd {
|
||||
|
|
@ -59,7 +59,7 @@ public class DestroyVMCmd extends BaseAsyncCmd {
|
|||
|
||||
@Parameter(name = ApiConstants.EXPUNGE,
|
||||
type = CommandType.BOOLEAN,
|
||||
description = "If true is passed, the vm is expunged immediately. False by default. Parameter can be passed to the call by ROOT/Domain admin only",
|
||||
description = "If true is passed, the vm is expunged immediately. False by default.",
|
||||
since = "4.2.1")
|
||||
private Boolean expunge;
|
||||
|
||||
|
|
|
|||
|
|
@ -94,7 +94,7 @@ public class UpdateVMCmd extends BaseCustomIdCmd {
|
|||
private String instanceName;
|
||||
|
||||
@Parameter(name = ApiConstants.DETAILS, type = CommandType.MAP, description = "Details in key/value pairs.")
|
||||
protected Map details;
|
||||
protected Map<String, String> details;
|
||||
|
||||
/////////////////////////////////////////////////////
|
||||
/////////////////// Accessors ///////////////////////
|
||||
|
|
@ -136,13 +136,13 @@ public class UpdateVMCmd extends BaseCustomIdCmd {
|
|||
return instanceName;
|
||||
}
|
||||
|
||||
public Map getDetails() {
|
||||
public Map<String, String> getDetails() {
|
||||
if (this.details == null || this.details.isEmpty()) {
|
||||
return null;
|
||||
}
|
||||
|
||||
Collection paramsCollection = this.details.values();
|
||||
return (Map) (paramsCollection.toArray())[0];
|
||||
Collection<String> paramsCollection = this.details.values();
|
||||
return (Map<String, String>) (paramsCollection.toArray())[0];
|
||||
}
|
||||
|
||||
/////////////////////////////////////////////////////
|
||||
|
|
|
|||
|
|
@ -16,12 +16,11 @@
|
|||
// under the License.
|
||||
package org.apache.cloudstack.api.response;
|
||||
|
||||
import com.google.gson.annotations.SerializedName;
|
||||
|
||||
import org.apache.cloudstack.api.ApiConstants;
|
||||
import org.apache.cloudstack.api.BaseResponse;
|
||||
|
||||
import com.cloud.serializer.Param;
|
||||
import com.google.gson.annotations.SerializedName;
|
||||
|
||||
@SuppressWarnings("unused")
|
||||
public class CapabilitiesResponse extends BaseResponse {
|
||||
|
|
@ -73,6 +72,14 @@ public class CapabilitiesResponse extends BaseResponse {
|
|||
@Param(description = "Max allowed number of api requests within the specified interval")
|
||||
private Integer apiLimitMax;
|
||||
|
||||
@SerializedName("allowuserviewdestroyedvm")
|
||||
@Param(description = "true if the user is allowed to view destroyed virtualmachines, false otherwise", since = "4.6.0")
|
||||
private boolean allowUserViewDestroyedVM;
|
||||
|
||||
@SerializedName("allowuserexpungerecovervm")
|
||||
@Param(description = "true if the user can recover and expunge virtualmachines, false otherwise", since = "4.6.0")
|
||||
private boolean allowUserExpungeRecoverVM;
|
||||
|
||||
public void setSecurityGroupsEnabled(boolean securityGroupsEnabled) {
|
||||
this.securityGroupsEnabled = securityGroupsEnabled;
|
||||
}
|
||||
|
|
@ -121,4 +128,11 @@ public class CapabilitiesResponse extends BaseResponse {
|
|||
this.apiLimitMax = apiLimitMax;
|
||||
}
|
||||
|
||||
}
|
||||
public void setAllowUserViewDestroyedVM(boolean allowUserViewDestroyedVM) {
|
||||
this.allowUserViewDestroyedVM = allowUserViewDestroyedVM;
|
||||
}
|
||||
|
||||
public void setAllowUserExpungeRecoverVM(boolean allowUserExpungeRecoverVM) {
|
||||
this.allowUserExpungeRecoverVM = allowUserExpungeRecoverVM;
|
||||
}
|
||||
}
|
||||
|
|
@ -16,20 +16,19 @@
|
|||
// under the License.
|
||||
package org.apache.cloudstack.api.response;
|
||||
|
||||
import java.util.Date;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
import com.google.gson.annotations.SerializedName;
|
||||
|
||||
import org.apache.cloudstack.api.ApiConstants;
|
||||
import org.apache.cloudstack.api.BaseResponse;
|
||||
import org.apache.cloudstack.api.EntityReference;
|
||||
|
||||
import com.cloud.host.Host;
|
||||
import com.cloud.host.Status;
|
||||
import com.cloud.hypervisor.Hypervisor.HypervisorType;
|
||||
import com.cloud.serializer.Param;
|
||||
import com.google.gson.annotations.SerializedName;
|
||||
import org.apache.cloudstack.api.ApiConstants;
|
||||
import org.apache.cloudstack.api.BaseResponse;
|
||||
import org.apache.cloudstack.api.EntityReference;
|
||||
|
||||
import java.util.Date;
|
||||
import java.util.HashMap;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
@EntityReference(value = Host.class)
|
||||
public class HostResponse extends BaseResponse {
|
||||
|
|
@ -217,6 +216,12 @@ public class HostResponse extends BaseResponse {
|
|||
@Param(description = "Host details in key/value pairs.", since = "4.5")
|
||||
private Map details;
|
||||
|
||||
|
||||
// Default visibility to support accessing the details from unit tests
|
||||
Map getDetails() {
|
||||
return details;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getObjectId() {
|
||||
return this.getId();
|
||||
|
|
@ -423,7 +428,21 @@ public class HostResponse extends BaseResponse {
|
|||
}
|
||||
|
||||
public void setDetails(Map details) {
|
||||
this.details = details;
|
||||
|
||||
if (details == null) {
|
||||
return;
|
||||
}
|
||||
|
||||
final Map detailsCopy = new HashMap(details);
|
||||
|
||||
// Fix for CVE ID 2015-3251
|
||||
// Remove sensitive host credential information from
|
||||
// the details to prevent leakage through API calls
|
||||
detailsCopy.remove("username");
|
||||
detailsCopy.remove("password");
|
||||
|
||||
this.details = detailsCopy;
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
|||
|
|
@ -19,14 +19,13 @@ package org.apache.cloudstack.api.response;
|
|||
import java.util.LinkedHashSet;
|
||||
import java.util.Set;
|
||||
|
||||
import com.google.gson.annotations.SerializedName;
|
||||
|
||||
import org.apache.cloudstack.api.ApiConstants;
|
||||
import org.apache.cloudstack.api.BaseResponse;
|
||||
import org.apache.cloudstack.api.EntityReference;
|
||||
|
||||
import com.cloud.network.security.SecurityGroup;
|
||||
import com.cloud.serializer.Param;
|
||||
import com.google.gson.annotations.SerializedName;
|
||||
|
||||
@SuppressWarnings("unused")
|
||||
@EntityReference(value = SecurityGroup.class)
|
||||
|
|
@ -76,7 +75,16 @@ public class SecurityGroupResponse extends BaseResponse implements ControlledVie
|
|||
@Param(description = "the list of resource tags associated with the rule", responseObject = ResourceTagResponse.class)
|
||||
private Set<ResourceTagResponse> tags;
|
||||
|
||||
@SerializedName(ApiConstants.VIRTUAL_MACHINE_COUNT)
|
||||
@Param(description = "the number of virtualmachines associated with this securitygroup", since = "4.6.0")
|
||||
private Integer virtualMachineCount;
|
||||
|
||||
@SerializedName(ApiConstants.VIRTUAL_MACHINE_IDS)
|
||||
@Param(description = "the list of virtualmachine ids associated with this securitygroup", since = "4.6.0")
|
||||
private Set<String> virtualMachineIds;
|
||||
|
||||
public SecurityGroupResponse() {
|
||||
this.virtualMachineIds = new LinkedHashSet<String>();
|
||||
this.ingressRules = new LinkedHashSet<SecurityGroupRuleResponse>();
|
||||
this.egressRules = new LinkedHashSet<SecurityGroupRuleResponse>();
|
||||
this.tags = new LinkedHashSet<ResourceTagResponse>();
|
||||
|
|
@ -176,4 +184,16 @@ public class SecurityGroupResponse extends BaseResponse implements ControlledVie
|
|||
public void addTag(ResourceTagResponse tag) {
|
||||
this.tags.add(tag);
|
||||
}
|
||||
|
||||
public void setVirtualMachineCount(Integer virtualMachineCount) {
|
||||
this.virtualMachineCount = virtualMachineCount;
|
||||
}
|
||||
|
||||
public void setVirtualMachineIds(Set<String> virtualMachineIds) {
|
||||
this.virtualMachineIds = virtualMachineIds;
|
||||
}
|
||||
|
||||
public void addVirtualMachineId(String virtualMachineId) {
|
||||
this.virtualMachineIds.add(virtualMachineId);
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -71,6 +71,7 @@ import org.apache.cloudstack.api.response.UserResponse;
|
|||
import org.apache.cloudstack.api.response.UserVmResponse;
|
||||
import org.apache.cloudstack.api.response.VolumeResponse;
|
||||
import org.apache.cloudstack.api.response.ZoneResponse;
|
||||
import org.apache.cloudstack.framework.config.ConfigKey;
|
||||
|
||||
import com.cloud.exception.PermissionDeniedException;
|
||||
|
||||
|
|
@ -80,6 +81,10 @@ import com.cloud.exception.PermissionDeniedException;
|
|||
*/
|
||||
public interface QueryService {
|
||||
|
||||
// Config keys
|
||||
static final ConfigKey<Boolean> AllowUserViewDestroyedVM = new ConfigKey<Boolean>("Advanced", Boolean.class, "allow.user.view.destroyed.vm", "false",
|
||||
"Determines whether users can view their destroyed or expunging vm ", true, ConfigKey.Scope.Account);
|
||||
|
||||
ListResponse<UserResponse> searchForUsers(ListUsersCmd cmd) throws PermissionDeniedException;
|
||||
|
||||
ListResponse<EventResponse> searchForEvents(ListEventsCmd cmd);
|
||||
|
|
|
|||
|
|
@ -0,0 +1,100 @@
|
|||
/*
|
||||
* 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.command.admin.account;
|
||||
|
||||
import org.apache.cloudstack.api.ApiErrorCode;
|
||||
import org.apache.cloudstack.api.ServerApiException;
|
||||
import org.apache.cloudstack.context.CallContext;
|
||||
import org.apache.log4j.Logger;
|
||||
import org.junit.After;
|
||||
import org.junit.Assert;
|
||||
import org.junit.Before;
|
||||
import org.junit.Test;
|
||||
import org.mockito.InjectMocks;
|
||||
import org.mockito.Mock;
|
||||
import org.mockito.Mockito;
|
||||
import org.mockito.MockitoAnnotations;
|
||||
import org.springframework.test.util.ReflectionTestUtils;
|
||||
|
||||
import com.cloud.user.Account;
|
||||
import com.cloud.user.AccountService;
|
||||
import com.cloud.user.User;
|
||||
|
||||
public class CreateAccountCmdTest {
|
||||
public static final Logger s_logger = Logger.getLogger(CreateAccountCmdTest.class.getName());
|
||||
|
||||
@Mock
|
||||
private AccountService accountService;
|
||||
|
||||
@InjectMocks
|
||||
private CreateAccountCmd createAccountCmd = new CreateAccountCmd();
|
||||
|
||||
private short accountType = 1;
|
||||
private Long domainId = 1L;
|
||||
|
||||
@Before
|
||||
public void setUp() throws Exception {
|
||||
MockitoAnnotations.initMocks(this);
|
||||
ReflectionTestUtils.setField(createAccountCmd, "domainId", domainId);
|
||||
ReflectionTestUtils.setField(createAccountCmd, "accountType", accountType);
|
||||
CallContext.register(Mockito.mock(User.class), Mockito.mock(Account.class));
|
||||
}
|
||||
|
||||
@After
|
||||
public void tearDown() throws Exception {
|
||||
CallContext.unregister();
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testExecuteWithNotBlankPassword() {
|
||||
ReflectionTestUtils.setField(createAccountCmd, "password", "Test");
|
||||
try {
|
||||
createAccountCmd.execute();
|
||||
} catch (ServerApiException e) {
|
||||
Assert.assertTrue("Received exception as the mock accountService createUserAccount returns null user", true);
|
||||
}
|
||||
Mockito.verify(accountService, Mockito.times(1)).createUserAccount(null, "Test", null, null, null, null, null, accountType, domainId, null, null, null, null);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testExecuteWithNullPassword() {
|
||||
ReflectionTestUtils.setField(createAccountCmd, "password", null);
|
||||
try {
|
||||
createAccountCmd.execute();
|
||||
Assert.fail("should throw exception for a null password");
|
||||
} catch (ServerApiException e) {
|
||||
Assert.assertEquals(ApiErrorCode.PARAM_ERROR, e.getErrorCode());
|
||||
Assert.assertEquals("Empty passwords are not allowed", e.getMessage());
|
||||
}
|
||||
Mockito.verify(accountService, Mockito.never()).createUserAccount(null, null, null, null, null, null, null, accountType, domainId, null, null, null, null);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testExecuteWithEmptyPassword() {
|
||||
ReflectionTestUtils.setField(createAccountCmd, "password", "");
|
||||
try {
|
||||
createAccountCmd.execute();
|
||||
Assert.fail("should throw exception for a empty password");
|
||||
} catch (ServerApiException e) {
|
||||
Assert.assertEquals(ApiErrorCode.PARAM_ERROR, e.getErrorCode());
|
||||
Assert.assertEquals("Empty passwords are not allowed", e.getMessage());
|
||||
}
|
||||
Mockito.verify(accountService, Mockito.never()).createUserAccount(null, null, null, null, null, null, null, accountType, domainId, null, null, null, null);
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,96 @@
|
|||
/*
|
||||
* 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.command.admin.user;
|
||||
|
||||
import org.apache.cloudstack.api.ApiErrorCode;
|
||||
import org.apache.cloudstack.api.ServerApiException;
|
||||
import org.apache.cloudstack.context.CallContext;
|
||||
import org.apache.log4j.Logger;
|
||||
import org.junit.After;
|
||||
import org.junit.Assert;
|
||||
import org.junit.Before;
|
||||
import org.junit.Test;
|
||||
import org.mockito.InjectMocks;
|
||||
import org.mockito.Mock;
|
||||
import org.mockito.Mockito;
|
||||
import org.mockito.MockitoAnnotations;
|
||||
import org.springframework.test.util.ReflectionTestUtils;
|
||||
|
||||
import com.cloud.user.Account;
|
||||
import com.cloud.user.AccountService;
|
||||
import com.cloud.user.User;
|
||||
|
||||
public class CreateUserCmdTest {
|
||||
public static final Logger s_logger = Logger.getLogger(CreateUserCmdTest.class.getName());
|
||||
|
||||
@Mock
|
||||
private AccountService accountService;
|
||||
|
||||
@InjectMocks
|
||||
private CreateUserCmd createUserCmd = new CreateUserCmd();
|
||||
|
||||
@Before
|
||||
public void setUp() throws Exception {
|
||||
MockitoAnnotations.initMocks(this);
|
||||
CallContext.register(Mockito.mock(User.class), Mockito.mock(Account.class));
|
||||
}
|
||||
|
||||
@After
|
||||
public void tearDown() throws Exception {
|
||||
CallContext.unregister();
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testExecuteWithNotBlankPassword() {
|
||||
ReflectionTestUtils.setField(createUserCmd, "password", "Test");
|
||||
try {
|
||||
createUserCmd.execute();
|
||||
} catch (ServerApiException e) {
|
||||
Assert.assertTrue("Received exception as the mock accountService createUser returns null user", true);
|
||||
}
|
||||
Mockito.verify(accountService, Mockito.times(1)).createUser(null, "Test", null, null, null, null, null, null, null);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testExecuteWithNullPassword() {
|
||||
ReflectionTestUtils.setField(createUserCmd, "password", null);
|
||||
try {
|
||||
createUserCmd.execute();
|
||||
Assert.fail("should throw exception for a null password");
|
||||
} catch (ServerApiException e) {
|
||||
Assert.assertEquals(ApiErrorCode.PARAM_ERROR,e.getErrorCode());
|
||||
Assert.assertEquals("Empty passwords are not allowed", e.getMessage());
|
||||
}
|
||||
Mockito.verify(accountService, Mockito.never()).createUser(null, null, null, null, null, null, null, null, null);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testExecuteWithEmptyPassword() {
|
||||
ReflectionTestUtils.setField(createUserCmd, "password", "");
|
||||
try {
|
||||
createUserCmd.execute();
|
||||
Assert.fail("should throw exception for a empty password");
|
||||
} catch (ServerApiException e) {
|
||||
Assert.assertEquals(ApiErrorCode.PARAM_ERROR,e.getErrorCode());
|
||||
Assert.assertEquals("Empty passwords are not allowed", e.getMessage());
|
||||
}
|
||||
Mockito.verify(accountService, Mockito.never()).createUser(null, null, null, null, null, null, null, null, null);
|
||||
}
|
||||
}
|
||||
|
|
@ -70,32 +70,6 @@ public class AddVpnUserCmdTest extends TestCase {
|
|||
};
|
||||
}
|
||||
|
||||
/*
|
||||
* @Test public void testExecuteVpnUserNotFound() {
|
||||
*
|
||||
* EntityManager entityManager = Mockito.mock(EntityManager.class);
|
||||
*
|
||||
* Mockito.when(entityManager.findById(VpnUser.class,
|
||||
* Mockito.anyLong())).thenReturn(null);
|
||||
*
|
||||
* addVpnUserCmd._entityMgr = entityManager; try { addVpnUserCmd.execute();
|
||||
* } catch (Exception e) { }
|
||||
*
|
||||
* }
|
||||
*
|
||||
*
|
||||
* @Test public void testExecuteVpnUserFound() {
|
||||
*
|
||||
* EntityManager entityManager = Mockito.mock(EntityManager.class);
|
||||
* addVpnUserCmd._entityMgr = entityManager;
|
||||
*
|
||||
* VpnUser vpnUser = Mockito.mock(VpnUser.class);
|
||||
* Mockito.when(entityManager.findById(VpnUser.class,
|
||||
* Mockito.anyLong())).thenReturn(vpnUser); addVpnUserCmd.execute();
|
||||
*
|
||||
* }
|
||||
*/
|
||||
|
||||
@Test
|
||||
public void testCreateSuccess() {
|
||||
|
||||
|
|
|
|||
|
|
@ -0,0 +1,80 @@
|
|||
// 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.response;
|
||||
|
||||
import junit.framework.TestCase;
|
||||
import org.apache.commons.collections.map.HashedMap;
|
||||
import org.junit.Test;
|
||||
|
||||
import java.util.HashMap;
|
||||
import java.util.Map;
|
||||
|
||||
public final class HostResponseTest extends TestCase {
|
||||
|
||||
private static final String VALID_KEY = "validkey";
|
||||
private static final String VALID_VALUE = "validvalue";
|
||||
|
||||
@Test
|
||||
public void testSetDetailsNull() {
|
||||
|
||||
final HostResponse hostResponse = new HostResponse();
|
||||
hostResponse.setDetails(null);
|
||||
|
||||
assertEquals(null, hostResponse.getDetails());
|
||||
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testSetDetailsWithRootCredentials() {
|
||||
|
||||
final HostResponse hostResponse = new HostResponse();
|
||||
final Map details = new HashMap<>();
|
||||
|
||||
details.put(VALID_KEY, VALID_VALUE);
|
||||
details.put("username", "test");
|
||||
details.put("password", "password");
|
||||
|
||||
final Map expectedDetails = new HashedMap();
|
||||
expectedDetails.put(VALID_KEY, VALID_VALUE);
|
||||
|
||||
hostResponse.setDetails(details);
|
||||
final Map actualDetails = hostResponse.getDetails();
|
||||
|
||||
assertTrue(details != actualDetails);
|
||||
assertEquals(expectedDetails, actualDetails);
|
||||
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testSetDetailsWithoutRootCredentials() {
|
||||
|
||||
final HostResponse hostResponse = new HostResponse();
|
||||
final Map details = new HashMap<>();
|
||||
|
||||
details.put(VALID_KEY, VALID_VALUE);
|
||||
|
||||
final Map expectedDetails = new HashedMap();
|
||||
expectedDetails.put(VALID_KEY, VALID_VALUE);
|
||||
|
||||
hostResponse.setDetails(details);
|
||||
final Map actualDetails = hostResponse.getDetails();
|
||||
|
||||
assertTrue(details != actualDetails);
|
||||
assertEquals(expectedDetails, actualDetails);
|
||||
|
||||
}
|
||||
}
|
||||
|
|
@ -461,6 +461,7 @@ label.cluster.type=Cluster Type
|
|||
label.cluster=Cluster
|
||||
label.clusters=Clusters
|
||||
label.clvm=CLVM
|
||||
label.custom.disk.offering=Custom Disk Offering
|
||||
label.rbd=RBD
|
||||
label.rbd.monitor=Ceph monitor
|
||||
label.rbd.pool=Ceph pool
|
||||
|
|
@ -492,6 +493,7 @@ label.cpu.mhz=CPU (in MHz)
|
|||
label.cpu.utilized=CPU Utilized
|
||||
label.cpu=CPU
|
||||
label.create.project=Create project
|
||||
label.create.ssh.key.pair=Create a SSH Key Pair
|
||||
label.create.template=Create template
|
||||
label.create.VPN.connection=Create VPN Connection
|
||||
label.created.by.system=Created by system
|
||||
|
|
@ -615,6 +617,7 @@ label.f5=F5
|
|||
label.failed=Failed
|
||||
label.featured=Featured
|
||||
label.fetch.latest=Fetch latest
|
||||
label.fingerprint=FingerPrint
|
||||
label.filterBy=Filter by
|
||||
label.firewall=Firewall
|
||||
label.first.name=First Name
|
||||
|
|
@ -650,6 +653,7 @@ label.hints=Hints
|
|||
label.host.alerts=Host Alerts
|
||||
label.host.MAC=Host MAC
|
||||
label.host.name=Host Name
|
||||
label.host.tag=Host Tag
|
||||
label.host.tags=Host Tags
|
||||
label.host=Host
|
||||
label.hosts=Hosts
|
||||
|
|
@ -762,6 +766,7 @@ label.local.storage.enabled=Enable local storage for User VMs
|
|||
label.local.storage.enabled.system.vms=Enable local storage for System VMs
|
||||
label.local.storage=Local Storage
|
||||
label.local=Local
|
||||
label.local.file=Local file
|
||||
label.login=Login
|
||||
label.logout=Logout
|
||||
label.saml.enable=Authorize SAML SSO
|
||||
|
|
@ -891,6 +896,7 @@ label.networking.and.security=Networking and security
|
|||
label.networks=Networks
|
||||
label.new.password=New Password
|
||||
label.new.project=New Project
|
||||
label.new.ssh.key.pair=New SSH Key Pair
|
||||
label.new.vm=New VM
|
||||
label.new=New
|
||||
label.next=Next
|
||||
|
|
@ -974,6 +980,7 @@ label.private.interface=Private Interface
|
|||
label.private.ip.range=Private IP Range
|
||||
label.private.ip=Private IP Address
|
||||
label.private.ips=Private IP Addresses
|
||||
label.private.key=Private Key
|
||||
label.private.network=Private network
|
||||
label.private.port=Private Port
|
||||
label.private.zone=Private Zone
|
||||
|
|
@ -991,6 +998,7 @@ label.providers=Providers
|
|||
label.public.interface=Public Interface
|
||||
label.public.ip=Public IP Address
|
||||
label.public.ips=Public IP Addresses
|
||||
label.public.key=Public Key
|
||||
label.public.network=Public network
|
||||
label.public.port=Public Port
|
||||
label.public.traffic=Public traffic
|
||||
|
|
@ -1018,6 +1026,7 @@ label.remove.pf=Remove port forwarding rule
|
|||
label.remove.project.account=Remove account from project
|
||||
label.remove.region=Remove Region
|
||||
label.remove.rule=Remove rule
|
||||
label.remove.ssh.key.pair=Remove SSH Key Pair
|
||||
label.remove.static.nat.rule=Remove static NAT rule
|
||||
label.remove.static.route=Remove static route
|
||||
label.remove.tier=Remove tier
|
||||
|
|
@ -1029,6 +1038,8 @@ label.required=Required
|
|||
label.reserved.system.gateway=Reserved system gateway
|
||||
label.reserved.system.ip=Reserved System IP
|
||||
label.reserved.system.netmask=Reserved system netmask
|
||||
label.reset.ssh.key.pair=Reset SSH Key Pair
|
||||
label.reset.ssh.key.pair.on.vm=Reset SSH Key Pair on VM
|
||||
label.reset.VPN.connection=Reset VPN connection
|
||||
label.resize.new.offering.id=New Offering
|
||||
label.resize.new.size=New Size (GB)
|
||||
|
|
@ -1092,8 +1103,8 @@ label.service.capabilities=Service Capabilities
|
|||
label.service.offering=Service Offering
|
||||
label.session.expired=Session Expired
|
||||
label.set.up.zone.type=Set up zone type
|
||||
label.setup.network=Setup Network
|
||||
label.setup.zone=Setup Zone
|
||||
label.setup.network=Set up Network
|
||||
label.setup.zone=Set up Zone
|
||||
label.setup=Setup
|
||||
label.shared=Shared
|
||||
label.SharedMountPoint=SharedMountPoint
|
||||
|
|
@ -1104,8 +1115,8 @@ label.size=Size
|
|||
label.skip.guide=I have used CloudStack before, skip this guide
|
||||
label.snapshot.limits=Snapshot Limits
|
||||
label.snapshot.name=Snapshot Name
|
||||
label.snapshot.s=Snapshot(s)
|
||||
label.snapshot.schedule=Setup Recurring Snapshot
|
||||
label.snapshot.s=Snapshots
|
||||
label.snapshot.schedule=Set up Recurring Snapshot
|
||||
label.snapshot=Snapshot
|
||||
label.snapshots=Snapshots
|
||||
label.source.nat=Source NAT
|
||||
|
|
@ -1114,6 +1125,8 @@ label.specify.vlan=Specify VLAN
|
|||
label.specify.vxlan=Specify VXLAN
|
||||
label.SR.name=SR Name-Label
|
||||
label.srx=SRX
|
||||
label.ssh.key.pair=SSH Key Pair
|
||||
label.ssh.key.pair.details=SSH Key Pair Details
|
||||
label.PA=Palo Alto
|
||||
label.start.IP=Start IP
|
||||
label.start.port=Start Port
|
||||
|
|
@ -1214,7 +1227,11 @@ label.update.project.resources=Update project resources
|
|||
label.update.ssl.cert= SSL Certificate
|
||||
label.update.ssl= SSL Certificate
|
||||
label.updating=Updating
|
||||
label.upload.from.local=Upload from Local
|
||||
label.upload.template.from.local=Upload Template from Local
|
||||
label.upload.volume=Upload volume
|
||||
label.upload.volume.from.local=Upload Volume from Local
|
||||
label.upload.volume.from.url=Upload volume from URL
|
||||
label.upload=Upload
|
||||
label.url=URL
|
||||
label.usage.interface=Usage Interface
|
||||
|
|
@ -1795,8 +1812,10 @@ message.delete.VPN.gateway=Please confirm that you want to delete this VPN Gatew
|
|||
message.desc.advanced.zone=For more sophisticated network topologies. This network model provides the most flexibility in defining guest networks and providing custom network offerings such as firewall, VPN, or load balancer support.
|
||||
message.desc.basic.zone=Provide a single network where each VM instance is assigned an IP directly from the network. Guest isolation can be provided through layer-3 means such as security groups (IP address source filtering).
|
||||
message.desc.cluster=Each pod must contain one or more clusters, and we will add the first cluster now. A cluster provides a way to group hosts. The hosts in a cluster all have identical hardware, run the same hypervisor, are on the same subnet, and access the same shared storage. Each cluster consists of one or more hosts and one or more primary storage servers.
|
||||
message.desc.created.ssh.key.pair=Created a SSH Key Pair.
|
||||
message.desc.host=Each cluster must contain at least one host (computer) for guest VMs to run on, and we will add the first host now. For a host to function in CloudStack, you must install hypervisor software on the host, assign an IP address to the host, and ensure the host is connected to the CloudStack management server.<br/><br/>Give the host\\'s DNS or IP address, the user name (usually root) and password, and any labels you use to categorize hosts.
|
||||
message.desc.primary.storage=Each cluster must contain one or more primary storage servers, and we will add the first one now. Primary storage contains the disk volumes for all the VMs running on hosts in the cluster. Use any standards-compliant protocol that is supported by the underlying hypervisor.
|
||||
message.desc.reset.ssh.key.pair=Please specify a ssh key pair that you would like to add to this VM. Please note the root password will be changed by this operation if password is enabled.
|
||||
message.desc.secondary.storage=Each zone must have at least one NFS or secondary storage server, and we will add the first one now. Secondary storage stores VM templates, ISO images, and VM disk volume snapshots. This server must be available to all hosts in the zone.<br/><br/>Provide the IP address and exported path.
|
||||
message.desc.zone=A zone is the largest organizational unit in CloudStack, and it typically corresponds to a single datacenter. Zones provide physical isolation and redundancy. A zone consists of one or more pods (each of which contains hosts and primary storage servers) and a secondary storage server which is shared by all pods in the zone.
|
||||
message.detach.disk=Are you sure you want to detach this disk?
|
||||
|
|
@ -1915,7 +1934,7 @@ message.select.template=Please select a template for your new virtual instance.
|
|||
message.setup.physical.network.during.zone.creation.basic=When adding a basic zone, you can set up one physical network, which corresponds to a NIC on the hypervisor. The network carries several types of traffic.<br/><br/>You may also <strong>drag and drop</strong> other traffic types onto the physical network.
|
||||
message.setup.physical.network.during.zone.creation=When adding an advanced zone, you need to set up one or more physical networks. Each network corresponds to a NIC on the hypervisor. Each physical network can carry one or more types of traffic, with certain restrictions on how they may be combined.<br/><br/><strong>Drag and drop one or more traffic types</strong> onto each physical network.
|
||||
message.setup.successful=Cloud setup successful\!
|
||||
message.snapshot.schedule=You can setup recurring snapshot schedules by selecting from the available options below and applying your policy preference
|
||||
message.snapshot.schedule=You can set up recurring snapshot schedules by selecting from the available options below and applying your policy preference
|
||||
message.specify.url=Please specify URL
|
||||
message.step.1.continue=Please select a template or ISO to continue
|
||||
message.step.1.desc=Please select a template for your new virtual instance. You can also choose to select a blank template from which an ISO image can be installed onto.
|
||||
|
|
@ -2106,7 +2125,6 @@ label.zone.name=Zone Name
|
|||
label.instances=Instances
|
||||
label.event=Event
|
||||
label.minutes.past.hour=minutes(s) past the hour
|
||||
label.snapshots=snapshot(s)
|
||||
label.time.colon=Time:
|
||||
label.min.past.the.hr=min past the hr
|
||||
label.timezone.colon=Timezone:
|
||||
|
|
@ -2115,3 +2133,48 @@ label.every=Every
|
|||
label.day=Day
|
||||
label.of.month=of month
|
||||
label.add.private.gateway=Add Private Gateway
|
||||
label.link.domain.to.ldap=Link Domain to LDAP
|
||||
message.link.domain.to.ldap=Enable autosync for this domain in LDAP
|
||||
label.ldap.link.type=Type
|
||||
label.account.type=Account Type
|
||||
message.desc.created.ssh.key.pair=Created a SSH Key Pair.
|
||||
message.please.confirm.remove.ssh.key.pair=Please confirm that you want to remove this SSH Key Pair
|
||||
message.password.has.been.reset.to=Password has been reset to
|
||||
message.password.of.the.vm.has.been.reset.to=Password of the VM has been reset to
|
||||
message.question.are.you.sure.you.want.to.add=Are you sure you want to add
|
||||
label.domain.details=Domain details
|
||||
label.account.details=Account details
|
||||
label.user.details=User details
|
||||
label.service.offering.details=Service offering details
|
||||
label.system.service.offering.details=System service offering details
|
||||
label.disk.offering.details=Disk offering details
|
||||
label.network.offering.details=Network offering details
|
||||
label.remove.this.physical.network=Remove this physical network
|
||||
label.physical.network.name=Physical network name
|
||||
label.save.changes=Save changes
|
||||
label.autoscale.configuration.wizard=AutoScale Configuration Wizard
|
||||
label.health.check.wizard=Health Check Wizard
|
||||
label.health.check.message.desc=Your load balancer will automatically perform health checks on your cloudstack instances and only route traffic to instances that pass the health check
|
||||
label.health.check.configurations.options=Configuration Options:
|
||||
label.health.check.advanced.options=Advanced Options:
|
||||
label.add.isolated.guest.network.with.sourcenat=Add Isolated Guest Network with SourceNat
|
||||
message.network.remote.access.vpn.configuration=Remote Access VPN configuration has been generated, but it failed to apply. Please check connectivity of the network element, then re-try.
|
||||
label.vpc.router.details=VPC Router Details
|
||||
label.edit.rule=Edit rule
|
||||
label.advanced.search=Advanced Search
|
||||
label.internal.lb=Internal LB
|
||||
label.public.lb=Public LB
|
||||
label.acl.list.rules=ACL List Rules
|
||||
label.static.routes=Static Routes
|
||||
label.network.details=Network Details
|
||||
label.scaleup.policy=ScaleUp Policy
|
||||
label.scaledown.policy=ScaleDown Policy
|
||||
label.configure.sticky.policy=Configure Sticky Policy
|
||||
label.please.complete.the.following.fields=Please complete the following fields
|
||||
message.desc.add.new.lb.sticky.rule=Add new LB sticky rule
|
||||
label.ssh.key.pairs=SSH Key Pairs
|
||||
message.desc.create.ssh.key.pair=Please fill in the following data to create or register a ssh key pair.<br><br>(1) If public key is set, CloudStack will register the public key. You can use it through your private key.<br><br>(2) If public key is not set, CloudStack will create a new SSH Key pair. In this case, please copy and save the private key. CloudStack will not keep it.<br>
|
||||
message.removed.ssh.key.pair=Removed a SSH Key Pair
|
||||
message.please.select.ssh.key.pair.use.with.this.vm=Please select a ssh key pair you want this VM to use:
|
||||
message.configure.firewall.rules.allow.traffic=Configure the rules to allow Traffic
|
||||
message.configure.firewall.rules.block.traffic=Configure the rules to block Traffic
|
||||
|
|
@ -38,6 +38,7 @@ label.about=\u00dcber
|
|||
label.accept.project.invitation=Projekteinladung annehmen
|
||||
label.account.and.security.group=Konto, Sicherheitsgruppe
|
||||
label.account=Benutzerkonto
|
||||
label.account.details=Kontodetails
|
||||
label.account.id=Benutzerkonto-ID
|
||||
label.account.lower=Konto
|
||||
label.account.name=Benutzerkonto-Name
|
||||
|
|
@ -45,6 +46,7 @@ label.accounts=Benutzerkonten
|
|||
label.account.specific=Besonderheiten des Benutzerkontos
|
||||
label.acl=ACL
|
||||
label.acl.id=ACL-Kennung
|
||||
label.acl.list.rules=ACL-Listenregeln
|
||||
label.acl.name=ACL-Name
|
||||
label.acl.replaced=ACL ersetzt
|
||||
label.acquire.new.ip=Neue IP erwerben
|
||||
|
|
@ -208,6 +210,7 @@ label.action.resource.limits=Grenzen der Ressourcen
|
|||
label.action.restore.instance=Instanz wiederherstellen
|
||||
label.action.restore.instance.processing=Instanz wird wiederhergestellt....
|
||||
label.action.revert.snapshot=Auf Schnappschuss zur\u00fcckkehren
|
||||
label.action.revert.snapshot.processing=Es wird auf den Schnappschuss zur\u00fcckgekehrt...
|
||||
label.actions=Aktionen
|
||||
label.action.start.instance=Instanz beginnen
|
||||
label.action.start.instance.processing=Instanz wird gestartet....
|
||||
|
|
@ -231,6 +234,7 @@ label.action.update.resource.count.processing=Ressourcenanzahl wird aktualisiert
|
|||
label.action.update.resource.count=Ressourcenanzahl aktualisieren
|
||||
label.action.vmsnapshot.create=VM-Schnappschuss machen
|
||||
label.action.vmsnapshot.delete=VM-Schnappschuss l\u00f6schen
|
||||
label.action.vmsnapshot.revert=Auf VM-Schnappschuss zur\u00fcckkehren
|
||||
label.activate.project=Projekt aktivieren
|
||||
label.active.sessions=Aktive Sitzungen
|
||||
label.add.account=Konto hinzuf\u00fcgen
|
||||
|
|
@ -264,11 +268,13 @@ label.add.ingress.rule=Zutrittsregel hinzuf\u00fcgen
|
|||
label.adding.succeeded=Erfolgreich hinzugef\u00fcgt
|
||||
label.adding.user=Nutzer hinzuf\u00fcgen
|
||||
label.adding.zone=Hinzuf\u00fcgen der Zone
|
||||
label.add.internal.lb=Interne LB hinzuf\u00fcgen
|
||||
label.add.ip.range=IP-Bereich hinzuf\u00fcgen
|
||||
label.add.isolated.guest.network=Isoliertes Gastnetzwerk hinzuf\u00fcgen
|
||||
label.add.isolated.network=Isoliertes Netzwerk hinzuf\u00fcgen
|
||||
label.additional.networks=Zus\u00e4tzliche Networks
|
||||
label.add.ldap.account=LDAP-Konto hinzuf\u00fcgen
|
||||
label.add.LDAP.account=LDAP-Konto hinzuf\u00fcgen
|
||||
label.add.list.name=ACL-Listename
|
||||
label.add.load.balancer=Serverlastverteilung hinzuf\u00fcgen
|
||||
label.add.more=Mehr hinzuf\u00fcgen
|
||||
|
|
@ -285,6 +291,7 @@ label.add.pod=Pod hinzuf\u00fcgen
|
|||
label.add.portable.ip.range=Portablen IP-Bereich hinzuf\u00fcgen
|
||||
label.add.port.forwarding.rule=Portweiterleitungsregel hinzuf\u00fcgen
|
||||
label.add.primary.storage=Hauptspeicher hinzuf\u00fcgen
|
||||
label.add.private.gateway=Privaten Gateway hinzuf\u00fcgen
|
||||
label.add.region=Region hinzuf\u00fcgen
|
||||
label.add.resources=Ressourcen hinzuf\u00fcgen
|
||||
label.add.route=Route hinzuf\u00fcgen
|
||||
|
|
@ -444,6 +451,7 @@ label.delete.ciscoASA1000v=CiscoASA1000v l\u00f6schen
|
|||
label.delete.ciscovnmc.resource=CiscoVNMC-Ressource l\u00f6schen
|
||||
label.delete.events=Ereignisse l\u00f6schen
|
||||
label.delete.F5=F5 l\u00f6schen
|
||||
label.delete.internal.lb=Interne LB l\u00f6schen
|
||||
label.delete=L\u00f6schen
|
||||
label.delete.PA=Palo Alto l\u00f6schen
|
||||
label.delete.portable.ip.range=Portablen IP-Bereich l\u00f6schen
|
||||
|
|
@ -478,12 +486,20 @@ label.disable.vpn=Fernzugriff-VPN deaktivieren
|
|||
label.disabling.vpn.access=Deaktivierung des VPN Zugangs
|
||||
label.disbale.vnmc.device=VNMC-Ger\u00e4t deaktivieren
|
||||
label.disk.allocated=Zugeordnete Festplatte
|
||||
label.disk.bytes.read.rate=Festplatten-Leserate (BPS)
|
||||
label.disk.bytes.write.rate=Festplatten-Schreibrate (BPS)
|
||||
label.disk.iops.read.rate=Festplatten-Leserate (IOPS)
|
||||
label.disk.iops.total=Gesamte IOPS
|
||||
label.disk.iops.write.rate=Festplatten-Schreibrate (IOPS)
|
||||
label.disk.offering=Festplatten-Angebot
|
||||
label.disk.read.bytes=Festplatte Lesen (Bytes)
|
||||
label.disk.read.io=Festplatte Lesen (EA)
|
||||
label.disk.size=Festplattengr\u00f6\u00dfe
|
||||
label.disk.size.gb=Festplattengr\u00f6\u00dfe (in GB)
|
||||
label.disk.total=Gesamtzahl der Festplatten
|
||||
label.disk.volume=Festplattenvolumen
|
||||
label.disk.write.bytes=Festplatte Schreiben (Bytes)
|
||||
label.disk.write.io=Festplatte Schreiben (EA)
|
||||
label.display.name=Anzeigename
|
||||
label.display.text=Anzeigetext
|
||||
label.distributedrouter=Verteilter Router
|
||||
|
|
@ -503,17 +519,21 @@ label.duration.in.sec=Dauer (in Sekunden)
|
|||
label.dynamically.scalable=Dynamisch skalierbar
|
||||
label.edit.acl.rule=ACL-Regel bearbeiten
|
||||
label.edit=Bearbeiten
|
||||
label.edit.lb.rule=LB-Regel bearbeiten
|
||||
label.edit.network.details=Netzwerkdetails bearbeiten
|
||||
label.edit.project.details=Projektdetails bearbeiten
|
||||
label.edit.region=Region bearbeiten
|
||||
label.edit.rule=Regel bearbeiten
|
||||
label.edit.secondary.ips=Sekund\u00e4re IPs bearbeiten
|
||||
label.edit.tags=Schlagw\u00f6rter bearbeiten
|
||||
label.edit.traffic.type=Datenverkehrstyp bearbeiten
|
||||
label.edit.vpc=VPC bearbeiten
|
||||
label.email=E-Mail
|
||||
label.email.lower=E-Mail-Adresse
|
||||
label.enable.autoscale=Automatische Skalierung aktivieren
|
||||
label.enable.host=Host aktivieren
|
||||
label.enable.network.offering=Netzwerkangebot aktivieren
|
||||
label.enable.provider=Anbieter aktivieren
|
||||
label.enable.swift=Swift aktivieren
|
||||
label.enable.vnmc.device=VNMC-Ger\u00e4t aktivieren
|
||||
label.enable.vnmc.provider=VNMC-Anbieter aktivieren
|
||||
|
|
@ -544,6 +564,7 @@ label.f5=F5
|
|||
label.failed=Fehlgeschlagen
|
||||
label.featured=Besonderheiten aufweisen
|
||||
label.filterBy=Filtern nach
|
||||
label.fingerprint=FingerAbdruck
|
||||
label.firewall=Firewall
|
||||
label.firstname.lower=Vorname
|
||||
label.first.name=Vorname
|
||||
|
|
@ -573,6 +594,7 @@ label.gslb.details=GSLB-Details
|
|||
label.gslb.domain.name=GSLB-Dom\u00e4nenname
|
||||
label.gslb=GSLB
|
||||
label.gslb.lb.details=Lastverteilungsdetails
|
||||
label.gslb.lb.remove=Lastverteilung aus diesem GSLB entfernen
|
||||
label.gslb.lb.rule=Lastverteilungsregel
|
||||
label.gslb.service=GSLB-Dienst
|
||||
label.gslb.service.private.ip=GSLB-Dienst Private IP
|
||||
|
|
@ -589,6 +611,8 @@ label.guest.networks=Gastnetzwerke
|
|||
label.guest.traffic=Gast-Datenverkehr
|
||||
label.guest.type=Gasttyp
|
||||
label.ha.enabled=HA aktiviert
|
||||
label.health.check.advanced.options=Erweiterte Optionen\:
|
||||
label.health.check.configurations.options=Konfigurationsoptionen\:
|
||||
label.help=Hilfe
|
||||
label.hide.ingress.rule=Verstecke Regeln, die den Zutritt steuern
|
||||
label.hints=Hinweise
|
||||
|
|
@ -634,6 +658,8 @@ label.instance.name=Name der Instanz
|
|||
label.instances=Instanzen
|
||||
label.internal.dns.1=Interne DNS 1
|
||||
label.internal.dns.2=Interne DNS 2
|
||||
label.internal.lb.details=Interne LB-Details
|
||||
label.internal.lb=Interne LB
|
||||
label.internal.name=Interner Name
|
||||
label.interval.type=Interval Typ
|
||||
label.introduction.to.cloudstack=Einf\u00fchrung in CloudStack&\#8482
|
||||
|
|
@ -706,6 +732,8 @@ label.last.name=Nachname
|
|||
label.latest.events=Neueste Ereignisse
|
||||
label.launch=Start
|
||||
label.launch.vm=VM starten
|
||||
label.launch.zone=Zone starten
|
||||
label.lb.algorithm.leastconn=Mindestverbindungen
|
||||
label.lb.algorithm.roundrobin=Rundlauf-Verfahren
|
||||
label.lb.algorithm.source=Quelle
|
||||
label.ldap.configuration=LDAP-Konfiguration
|
||||
|
|
@ -715,7 +743,9 @@ label.level=Ebene
|
|||
label.load.balancer=Serverlastverteilung
|
||||
label.load.balancer.type=Lastverteilungstyp
|
||||
label.load.balancing=Lastverteilung
|
||||
label.load.balancing.policies=Verteilungsrichtlinien laden
|
||||
label.loading=Laden
|
||||
label.local.file=Lokale Datei
|
||||
label.local=Lokal
|
||||
label.local.storage=Lokaler Speicher
|
||||
label.login=Login
|
||||
|
|
@ -819,11 +849,13 @@ label.network.ACL=Netzwerk-ACL
|
|||
label.network.ACLs=Netzwerk-ACLs
|
||||
label.network.addVM=Netzwerk zur VM hinzuf\u00fcgen
|
||||
label.network.cidr=Netzwerk-CIDR
|
||||
label.network.details=Netzwerkdetails
|
||||
label.network.device=Netzwerkger\u00e4t
|
||||
label.network.device.type=Netzwerkger\u00e4tetyp
|
||||
label.network.domain=Netzwerk-Domain
|
||||
label.network.domain.text=Netzwerkdom\u00e4ne
|
||||
label.network.id=Netzwerk-ID
|
||||
label.networking.and.security=Netzwerkbetrieb und Sicherheit
|
||||
label.network.limits=Netzwerkbegrenzungen
|
||||
label.network.name=Netzwerk Name
|
||||
label.network=Netzwerk
|
||||
|
|
@ -836,12 +868,14 @@ label.network.type=Netzwerk-Typ
|
|||
label.new=Neu
|
||||
label.new.password=Neues Passwort
|
||||
label.new.project=Neues Projekt
|
||||
label.new.ssh.key.pair=Neues SSH-Schl\u00fcsselpaar
|
||||
label.new.vm=Neue VM
|
||||
label.next=Weiter
|
||||
label.nexusVswitch=Nexus 1000v
|
||||
label.nfs=NFS
|
||||
label.nfs.server=NFS Server
|
||||
label.nfs.storage=NFS-Speicher
|
||||
label.nic.adapter.type=NIC-Adaptertyp
|
||||
label.nicira.nvp.details=Nicira NVP-Details
|
||||
label.nics=NICs
|
||||
label.no.actions=Nicht verf\u00fcgbare Aktionen
|
||||
|
|
@ -874,6 +908,7 @@ label.optional=optional
|
|||
label.order=Reihenfolge
|
||||
label.os.preference=OS Pr\u00e4ferenz
|
||||
label.os.type=OS Typ
|
||||
label.other=Andere
|
||||
label.override.guest.traffic=Gast-Datenverkehr \u00fcberschreiben
|
||||
label.override.public.traffic=\u00d6ffentlichen Datenverkehr \u00fcberschreiben
|
||||
label.ovs=OVS
|
||||
|
|
@ -887,6 +922,7 @@ label.passive=Passiv
|
|||
label.password.enabled=Passwort aktiviert
|
||||
label.password.lower=Passwort
|
||||
label.password=Passwort
|
||||
label.password.reset.confirm=Passwort wurde zur\u00fcckgesetzt auf
|
||||
label.path=Pfad
|
||||
label.persistent=Persistent
|
||||
label.physical.network.ID=Physikalisches Netzwerkkennung
|
||||
|
|
@ -899,6 +935,7 @@ label.PING.storage.IP=IP des externen Speichers anpingen
|
|||
label.please.wait=Bitte warten
|
||||
label.pod=Pod
|
||||
label.pods=Pod
|
||||
label.polling.interval.sec=Abfrageintervall (in Sekunden)
|
||||
label.portable.ip=Portable IP
|
||||
label.portable.ip.range.details=Portable IP-Bereichsdetails
|
||||
label.portable.ip.ranges=Portable IP-Bereiche
|
||||
|
|
@ -920,6 +957,7 @@ label.private.ip=Private IP-Adresse
|
|||
label.private.ip.range=Privater IP-Bereich
|
||||
label.private.ips=Private IP-Adressen
|
||||
label.privatekey=PKCS\#8 Privater Schl\u00fcssel
|
||||
label.private.key=Privater Schl\u00fcssel
|
||||
label.private.network=Privates Netzwerk
|
||||
label.private.port=Privater Port
|
||||
label.private.zone=Private Zone
|
||||
|
|
@ -938,6 +976,9 @@ label.providers=Anbieter
|
|||
label.public.interface=\u00d6ffentliches Interface
|
||||
label.public.ips=\u00d6ffentliche IP-Adressen
|
||||
label.public.ip=\u00d6ffentliche IP-Adresse
|
||||
label.public.key=\u00d6ffentlicher Schl\u00fcssel
|
||||
label.public.lb=\u00d6ffentliche LB
|
||||
label.public.load.balancer.provider=\u00d6ffentlicher Lastverteileranbieter
|
||||
label.public.network=\u00d6ffentliches Netzwerk
|
||||
label.public.port=\u00d6ffentlicher Port
|
||||
label.public.traffic=\u00d6ffentlicher Datenverkehr
|
||||
|
|
@ -946,6 +987,7 @@ label.public.zone=\u00d6ffentliche Zone
|
|||
label.purpose=Zweck
|
||||
label.Pxe.server.type=PXE Server Type
|
||||
label.quickview=Schnellansicht
|
||||
label.quiet.time.sec=Ruhezeit (in Sekunden)
|
||||
label.rbd.id=Cephx-Benutzer
|
||||
label.rbd=RBD
|
||||
label.rbd.secret=Cephx-Geheimnis
|
||||
|
|
@ -969,6 +1011,11 @@ label.remove.pf=Portweiterleitungsregel entfernen
|
|||
label.remove.project.account=Konto aus Projekt entfernen
|
||||
label.remove.region=Region entfernen
|
||||
label.remove.rule=Regel entfernen
|
||||
label.remove.ssh.key.pair=SSH-Schl\u00fcsselpaar entfernen
|
||||
label.remove.static.nat.rule=Statische NAT-Regel entfernen
|
||||
label.remove.static.route=Statische Route entfernen
|
||||
label.remove.this.physical.network=Dieses physikalische Netzwerk entfernen
|
||||
label.remove.vm.load.balancer=VM aus Lastverteiler entfernen
|
||||
label.remove.vmware.datacenter=VMware-Rechenzentrum entfernen
|
||||
label.remove.vpc.offering=VPC-Angebot entfernen
|
||||
label.remove.vpc=VPC entfernen
|
||||
|
|
@ -980,6 +1027,8 @@ label.required=Erforderlich
|
|||
label.requires.upgrade=Erfordert Aktualisierung
|
||||
label.reserved.ip.range=Reservierter IP-Bereich
|
||||
label.reserved.system.ip=Reservierte System-IP
|
||||
label.reset.ssh.key.pair.on.vm=SSH-Schl\u00fcsselpaar auf VM zur\u00fccksetzen
|
||||
label.reset.ssh.key.pair=SSH-Schl\u00fcsselpaar zur\u00fccksetzen
|
||||
label.resetVM=VM zur\u00fccksetzen
|
||||
label.reset.VPN.connection=VPN-Verbindung zur\u00fccksetzen
|
||||
label.resize.new.offering.id=Neues Angebot
|
||||
|
|
@ -1007,8 +1056,10 @@ label.s3.nfs.server=S3 NFS-Server
|
|||
label.s3.secret_key=Secret Key
|
||||
label.s3.socket_timeout=Socket-Zeit\u00fcberschreitung
|
||||
label.s3.use_https=HTTPS verwenden
|
||||
label.saml.entity=Identit\u00e4tsanbieter
|
||||
label.saturday=Samstag
|
||||
label.save.and.continue=Speichern und fortsetzen
|
||||
label.save.changes=\u00c4nderungen speichern
|
||||
label.save=Sichern
|
||||
label.saving.processing=Speichern....
|
||||
label.scope=Geltungsbereich
|
||||
|
|
@ -1058,8 +1109,8 @@ label.smb.username=SMB-Benutzername
|
|||
label.snapshot.limits=Schnappschuss Grenzen
|
||||
label.snapshot.name=Schnappschuss Name
|
||||
label.snapshot=Schnappschuss
|
||||
label.snapshot.s=Schnappsch\u00fcsse
|
||||
label.snapshots=Schnappsch\u00fcsse
|
||||
label.snapshot.s=Schnappschuss (Schnappsch\u00fcsse)
|
||||
label.SNMP.port=SNMP-Port
|
||||
label.sockets=CPU-Sockets
|
||||
label.specify.IP.ranges=IP-Bereiche angeben
|
||||
|
|
@ -1067,6 +1118,9 @@ label.specify.vlan=VLAN angeben
|
|||
label.specify.vxlan=VXLAN angeben
|
||||
label.srx.details=SRX-Details
|
||||
label.srx=SRX
|
||||
label.ssh.key.pair.details=SSH-Schl\u00fcsselpaardetails
|
||||
label.ssh.key.pair=SSH-Schl\u00fcsselpaar
|
||||
label.ssh.key.pairs=SSH-Schl\u00fcsselpaare
|
||||
label.standard.us.keyboard=Standard-(US)-Tastatur
|
||||
label.start.IP=Start-IP
|
||||
label.start.lb.vm=LB-VM starten
|
||||
|
|
@ -1075,6 +1129,7 @@ label.start.reserved.system.IP=Reservierte System-IP starten
|
|||
label.start.vxlan=VXLAN starten
|
||||
label.state=Status
|
||||
label.static.nat=Statische NAT
|
||||
label.static.routes=Statische Routen
|
||||
label.statistics=Statistiken
|
||||
label.status=Status
|
||||
label.step.1=Schritt 1
|
||||
|
|
@ -1140,6 +1195,7 @@ label.total.cpu=Gesamtanzahl CPU
|
|||
label.total.CPU=Gesamtanzahl CPU
|
||||
label.total.hosts=Gesamtanzahl Hosts
|
||||
label.total.memory=Gesamter Speicher
|
||||
label.total.of.ip=Gesamtzahl der IP-Adressen
|
||||
label.total.of.vm=Gesamtanzahl VMs
|
||||
label.total.storage=Gesamter Speicher
|
||||
label.total.vms=Gesamtanzahl VMs
|
||||
|
|
@ -1167,6 +1223,7 @@ label.usage.server=Auslastungsserver
|
|||
label.used=Gebraucht
|
||||
label.user=Benutzer
|
||||
label.user.data=Benutzerdaten
|
||||
label.user.details=Benutzerdetails
|
||||
label.username=Benutzername
|
||||
label.username.lower=Benutzername
|
||||
label.users=Benutzer
|
||||
|
|
@ -1279,6 +1336,7 @@ label.zone.step.4.title=Schritt 4\: <strong>F\u00fcgen Sie einen IP-Bereich hinz
|
|||
label.zones=Zonen
|
||||
label.zone.type=Zonentyp
|
||||
label.zone.wide=Zonenweit
|
||||
label.zoneWizard.trafficType.guest=Gast\: Datenverkehr zwischen den virtuellen Maschinen der Endbenutzer
|
||||
label.zone=Zone
|
||||
message.acquire.public.ip=Bitte w\u00e4hlen Sie eine Zone, von der Sie Ihre neue IP erlangen m\u00f6chten.
|
||||
message.action.cancel.maintenance=Ihr Host ist erfolgreich f\u00fcr die Wartung abgebrochen. Dieser Prozess kann ein paar Minuten dauern.
|
||||
|
|
@ -1292,6 +1350,7 @@ message.action.delete.ingress.rule=Bitte best\u00e4tigen Sie, dass Sie diese Zut
|
|||
message.action.delete.ISO=Bitte best\u00e4tigen Sie, dass Sie diese ISO l\u00f6schen m\u00f6chten.
|
||||
message.action.delete.ISO.for.all.zones=Die ISO gilt f\u00fcr alle Zonen. Bitte best\u00e4tigen Sie, dass Sie diese aus allen Zonen l\u00f6schen m\u00f6chten.
|
||||
message.action.delete.network=Bitte best\u00e4tigen Sie, dass Sie dieses Netzwerk l\u00f6schen m\u00f6chten.
|
||||
message.action.delete.physical.network=Bitte best\u00e4tigen Sie, dass Sie dieses physikalische Netzwerk l\u00f6schen m\u00f6chten
|
||||
message.action.delete.pod=Bitte best\u00e4tigen Sie, dass Sie dieses pod l\u00f6schen m\u00f6chten.
|
||||
message.action.delete.primary.storage=Bitte best\u00e4tigen Sie, dass Sie diese Hauptspeicher l\u00f6schen m\u00f6chten.
|
||||
message.action.delete.secondary.storage=Bitte best\u00e4tigen Sie, dass Sie diesen Sekund\u00e4rspeicher l\u00f6schen m\u00f6chten.
|
||||
|
|
@ -1305,17 +1364,22 @@ message.action.delete.zone=Bitte best\u00e4tigen Sie, dass Sie diese Zone l\u00f
|
|||
message.action.destroy.instance=Bitte best\u00e4tigen Sie, dass Sie diese Instanz l\u00f6schen m\u00f6chten.
|
||||
message.action.destroy.systemvm=Bitte best\u00e4tigen Sie, dass Sie diese System-VM zerst\u00f6ren m\u00f6chten.
|
||||
message.action.disable.cluster=Bitte best\u00e4tigen Sie, dass Sie diesen Cluster deaktivieren m\u00f6chten.
|
||||
message.action.disable.physical.network=Bitte best\u00e4tigen Sie, dass Sie dieses physikalische Netzwerk deaktivieren m\u00f6chten.
|
||||
message.action.disable.pod=Bitte best\u00e4tigen Sie, dass Sie diesen Pod deaktivieren m\u00f6chten.
|
||||
message.action.disable.static.NAT=Bitte best\u00e4tigen Sie, dass Sie die statische NAT deaktivieren m\u00f6chten.
|
||||
message.action.disable.zone=Bitte best\u00e4tigen Sie, dass Sie diese Zone deaktivieren m\u00f6chten.
|
||||
message.action.downloading.template=Vorlage wird heruntergeladen.
|
||||
message.action.download.iso=Bitte best\u00e4tigen Sie, dass Sie dieses ISO herunterladen m\u00f6chten.
|
||||
message.action.enable.cluster=Bitte best\u00e4tigen Sie, dass Sie diesen Cluster aktivieren m\u00f6chten.
|
||||
message.action.enable.physical.network=Bitte best\u00e4tigen Sie, dass Sie dieses physikalische Netzwerk aktivieren m\u00f6chten.
|
||||
message.action.enable.pod=Bitte best\u00e4tigen Sie, dass Sie diesen Pod aktivieren m\u00f6chten.
|
||||
message.action.enable.zone=Bitte best\u00e4tigen Sie, dass Sie diese Zone aktivieren m\u00f6chten.
|
||||
message.action.instance.reset.password=Bitte best\u00e4tigen Sie, dass Sie das ROOT Passwort f\u00fcr diese virtuelle Maschine \u00e4ndern m\u00f6chten.
|
||||
message.action.manage.cluster=Bitte best\u00e4tigen Sie, dass das Cluster bearbeitet werden soll.
|
||||
message.action.reboot.instance=Bitte best\u00e4tigen Sie, dass Sie diese Instanz neu starten m\u00f6chten.
|
||||
message.action.reboot.systemvm=Bitte best\u00e4tigen Sie, dass Sie diese System-VM neu starten m\u00f6chten.
|
||||
message.action.release.ip=Bitte best\u00e4tigen Sie, dass Sie diese IP freigeben m\u00f6chten.
|
||||
message.action.remove.host=Bitte best\u00e4tigen Sie, dass Sie diesen Host entfernen m\u00f6chten.
|
||||
message.action.reset.password.off=Ihre Instanz untersch\u00fctzt derzeitig nicht dieses Feature.
|
||||
message.action.reset.password.warning=Ihre Instanz muss zuerst unterbrochen werden, bevor Sie Ihr derzeitiges Passwort \u00e4ndern k\u00f6nnen.
|
||||
message.action.restore.instance=Bitte best\u00e4tigen Sie, dass Sie diese Instanz wiederherstellen m\u00f6chten.
|
||||
|
|
@ -1325,6 +1389,7 @@ message.action.start.systemvm=Bitte best\u00e4tigen Sie, dass Sie diese System-V
|
|||
message.action.stop.instance=Bitte best\u00e4tigen Sie, dass Sie diese Instanz anhalten m\u00f6chten.
|
||||
message.action.stop.systemvm=Bitte best\u00e4tigen Sie, dass Sie diese System-VM stoppen m\u00f6chten.
|
||||
message.action.unmanage.cluster=Bitte best\u00e4tigen Sie, dass Sie das Cluster vernachl\u00e4ssigen m\u00f6chten.
|
||||
message.action.vmsnapshot.revert=VM-Schnappschuss zur\u00fccksetzen
|
||||
message.added.vpc.offering=VPC-Angebot hinzugef\u00fcgt
|
||||
message.add.firewall=Eine Firewall zur Zone hinzuf\u00fcgen
|
||||
message.add.host=Bitte spezifizieren Sie die folgenden Parameter, um einen neuen Host hinzuzuf\u00fcgen.
|
||||
|
|
@ -1344,8 +1409,20 @@ message.configuring.guest.traffic=Gast-Datenverkehr wird konfiguriert
|
|||
message.configuring.physical.networks=Physikalische Netzwerke werden konfiguriert
|
||||
message.configuring.public.traffic=\u00d6ffentlicher Datenverkehr wird konfiguriert
|
||||
message.configuring.storage.traffic=Speicherungsdatenverkehr wird konfiguriert
|
||||
message.confirm.archive.event=Bitte best\u00e4tigen Sie, dass Sie dieses Ereignis archivieren m\u00f6chten.
|
||||
message.confirm.archive.selected.alerts=Bitte best\u00e4tigen Sie, dass Sie die ausgew\u00e4hlten Alarme archivieren m\u00f6chten
|
||||
message.confirm.create.volume=Sind Sie sicher, dass Sie ein Volumen erstellen m\u00f6chten?
|
||||
message.confirm.delete.acl.list=Sind Sie sicher, dass Sie diese ACL-Liste l\u00f6schen m\u00f6chten?
|
||||
message.confirm.delete.alert=Sind Sie sicher, dass Sie diesen Alarm l\u00f6schen m\u00f6chten?
|
||||
message.confirm.delete.ciscoASA1000v=Bitte best\u00e4tigen Sie, dass Sie CiscoASA1000v l\u00f6schen m\u00f6chten
|
||||
message.confirm.destroy.router=Bitte best\u00e4tigen Sie, dass Sie diesen Router zerst\u00f6ren m\u00f6chten
|
||||
message.confirm.disable.host=Bitte best\u00e4tigen Sie, dass Sie den Host deaktivieren m\u00f6chten
|
||||
message.confirm.enable.host=Bitte best\u00e4tigen Sie, dass Sie den Host aktivieren m\u00f6chten
|
||||
message.confirm.migrate.volume=M\u00f6chten Sie dieses Volumen migrieren?
|
||||
message.confirm.remove.event=Sind Sie sicher, dass Sie dieses Ereignis entfernen m\u00f6chten?
|
||||
message.confirm.remove.selected.alerts=Bitte best\u00e4tigen Sie, dass Sie die ausgew\u00e4hlten Alarme entfernen m\u00f6chten
|
||||
message.confirm.remove.selected.events=Bitte best\u00e4tigen Sie, dass Sie die ausgew\u00e4hlten Ereignisse entfernen m\u00f6chten
|
||||
message.confirm.replace.acl.new.one=M\u00f6chten Sie die ACL durch die neue ersetzen?
|
||||
message.copy.iso.confirm=Bitte best\u00e4tigen Sie, dass Sie Ihre ISO kopieren m\u00f6chten und zwar nach
|
||||
message.create.template=Sind Sie sicher, dass Sie eine Vorlage erstellen m\u00f6chten?
|
||||
message.create.template.vm=VM aus Vorlage <b id\="p_name"></b> erstellen
|
||||
|
|
@ -1356,16 +1433,23 @@ message.creating.primary.storage=Hauptspeicher wird erstellt
|
|||
message.creating.secondary.storage=Sekund\u00e4rspeicher wird erstellt
|
||||
message.creating.zone=Zone wird erstellt
|
||||
message.delete.account=Bitte best\u00e4tigen Sie, dass Sie dieses Benutzerkonto l\u00f6schen m\u00f6chten.
|
||||
message.delete.project=Sind Sie sicher, dass Sie dieses Projekt l\u00f6schen m\u00f6chten?
|
||||
message.delete.user=Bitte best\u00e4tigen Sie, dass Sie diesen Benutzer l\u00f6schen m\u00f6chten.
|
||||
message.delete.VPN.connection=Bitte best\u00e4tigen Sie, dass Sie die VPN-Verbindung l\u00f6schen m\u00f6chten
|
||||
message.desc.created.ssh.key.pair=Erstellte ein SSH-Schl\u00fcsselpaar.
|
||||
message.detach.iso.confirm=Bitte best\u00e4tigen Sie, dass Sie die ISO von der virtuellen Instanz trennen m\u00f6chten.
|
||||
message.disable.account=Bitte best\u00e4tigen Sie, dass Sie Ihr Benutzerkonto deaktivieren m\u00f6chten. Kein Nutzer dieses Kontos wird mehr Zugriff auf die Cloud Ressourcen haben. Alle laufenden virtuellen Maschinen werden sofort abgestellt.
|
||||
message.disable.snapshot.policy=Sie haben Ihre derzeitige Schnappschuss Richtlinie erfolgreich deaktiviert.
|
||||
message.disable.user=Bitte best\u00e4tigen Sie, dass Sie diesen Benutzer deaktivieren m\u00f6chten.
|
||||
message.disable.vpn.access=Bitte best\u00e4tigen Sie, dass Sie den VPN Zugriff deaktivieren m\u00f6chten.
|
||||
message.disable.vpn=Sind Sie sicher, dass Sie das VPN deaktivieren m\u00f6chten?
|
||||
message.disabling.network.offering=Netzwerkangebot wird deaktiviert
|
||||
message.disabling.vpc.offering=VPC-Angebot wird deaktiviert
|
||||
message.disallowed.characters=Nicht erlaubte Zeichen\: \\<\\,\\>
|
||||
message.download.ISO=Bitte klicken Sie auf <a href\="\#">00000</a>, um das ISO herunterzuladen
|
||||
message.download.template=Bitte klicken Sie auf <a href\="\#">00000</a>, um die Vorlage herunterzuladen
|
||||
message.download.volume=Bitte klicken Sie auf <a href\="\#">00000</a>, um das Volumen herunterzuladen
|
||||
message.download.volume.confirm=Bitte best\u00e4tigen Sie, dass Sie dieses Volumen herunterladen m\u00f6chten.
|
||||
message.enable.account=Bitte best\u00e4tigen Sie, dass Sie dieses Konto aktivieren m\u00f6chten.
|
||||
message.enabled.vpn=Ihr VPN Zugriff ist zurzeit aktiv und via IP k\u00f6nnen Sie darauf zugreifen
|
||||
message.enable.vpn.access=VPN ist zurzeit nicht f\u00fcr diese IP Addresse aktiviert. M\u00f6chten Sie den VPN Zugriff aktivieren?
|
||||
|
|
@ -1400,11 +1484,14 @@ message.number.clusters=<h2><span> \# of </span> Cluster</h2>
|
|||
message.number.hosts=<h2><span> \# of </span> Hosts</h2>
|
||||
message.number.storage=<h2><span> \# von </span> Hauptspeichervolumina</h2>
|
||||
message.number.zones=<h2><span> \# of </span> Zonen</h2>
|
||||
message.password.has.been.reset.to=Passwort wurde zur\u00fcckgesetzt auf
|
||||
message.password.of.the.vm.has.been.reset.to=Passwort der VM wurde zur\u00fcckgesetzt auf
|
||||
message.pending.projects.1=Sie haben ausstehende Projekteinladungen\:
|
||||
message.please.select.a.configuration.for.your.zone=Bitte w\u00e4hlen Sie eine Konfiguration f\u00fcr Ihre Zone aus.
|
||||
message.please.select.networks=Bitte w\u00e4hlen Sie Netzwerke f\u00fcr Ihre virtuelle Maschine aus.
|
||||
message.recover.vm=Bitte best\u00e4tigen Sie, dass Sie diese VM wiederherstellen m\u00f6chten.
|
||||
message.redirecting.region=Weiterleitung zu Region...
|
||||
message.removed.ssh.key.pair=Hat ein SSH-Schl\u00fcsselpaar entfernt
|
||||
message.remove.vpn.access=Bitte best\u00e4tigen Sie, dass Sie den VPN-Zugriff vom folgenden Benutzer entfernen m\u00f6chten.
|
||||
message.reset.VPN.connection=Bitte best\u00e4tigen Sie, dass Sie die VPN-Verbindung zur\u00fccksetzen m\u00f6chten
|
||||
message.restart.vpc=Bitte best\u00e4tigen Sie, dass Sie den VPC neu starten m\u00f6chten
|
||||
|
|
|
|||
|
|
@ -808,7 +808,7 @@ label.skip.guide=He utilizado CloudStack anteriormente, saltar esta gu\u00eda
|
|||
label.snapshot=Instant\u00c3\u00a1nea
|
||||
label.snapshot.limits=instant\u00c3\u00a1neas L\u00c3\u00admites
|
||||
label.snapshot.name=Nombre de instant\u00c3\u00a1neas
|
||||
label.snapshot.schedule=Lista de instant\u00c3\u00a1neas
|
||||
label.snapshot.s=instant\u00c3\u00a1neas
|
||||
label.snapshots=instant\u00c3\u00a1neas
|
||||
label.sockets=Sockets
|
||||
label.source.nat=NAT Fuente
|
||||
|
|
@ -1138,7 +1138,6 @@ message.select.iso=Por favor seleccione un ISO para su nueva instancia virtual
|
|||
message.select.item=Por favor, seleccionar un item .
|
||||
message.select.template=Por favor seleccione un template para su nueva instancia virtual
|
||||
message.setup.successful=La configuraci\u00f3n de la cloud finalizo satisfactoriamente.
|
||||
message.snapshot.schedule=Puede horarios de configuraci\u00c3\u00b3n recurrente instant\u00c3\u00a1neas mediante la selecci\u00c3\u00b3n de las opciones disponibles a continuaci\u00c3\u00b3n y la aplicaci\u00c3\u00b3n de su preferencia pol\u00c3\u00adtica
|
||||
message.specify.url=Por favor especifique la URL
|
||||
message.step.1.continue=Por favor seleccione una plantilla o ISO para continuar
|
||||
message.step.1.desc=Por favor seleccione una plantilla para la instancia virtual. Tambi\u00c3\u00a9n puede optar por seleccionar una plantilla en blanco desde el que puede ser una imagen ISO instalado en.
|
||||
|
|
|
|||
|
|
@ -26,7 +26,7 @@ error.login=Votre identifiant / mot de passe ne correspond pas \u00e0 nos enregi
|
|||
error.menu.select=\u00c9chec de l\\'action car il n\\'y a aucun \u00e9l\u00e9ment s\u00e9lectionn\u00e9.
|
||||
error.mgmt.server.inaccessible=Le serveur de gestion est inaccessible. Veuillez essayer plus tard.
|
||||
error.password.not.match=Les champs mot de passe ne correspondent pas
|
||||
error.please.specify.physical.network.tags=L\\'offre r\u00e9seau ne sera pas disponible tant que des libell\u00e9s n\\'auront pas \u00e9t\u00e9 renseign\u00e9s pour ce r\u00e9seau physique.
|
||||
error.please.specify.physical.network.tags=L\\'offre de r\u00e9seau ne sera pas disponible tant que des libell\u00e9s n\\'auront pas \u00e9t\u00e9 renseign\u00e9s pour ce r\u00e9seau physique.
|
||||
error.session.expired=Votre session a expir\u00e9e.
|
||||
error.something.went.wrong.please.correct.the.following=Quelque chose s\\'est mal pass\u00e9e ; veuillez corriger le point suivant
|
||||
error.unable.to.reach.management.server=Impossible d\\'attendre le serveur de gestion
|
||||
|
|
@ -51,6 +51,7 @@ label.about=A propos de
|
|||
label.accept.project.invitation=Accepter l\\'invitation au projet
|
||||
label.account.and.security.group=Compte, groupe de s\u00e9curit\u00e9
|
||||
label.account=Compte
|
||||
label.account.details=D\u00e9tails compte
|
||||
label.account.id=ID de compte
|
||||
label.account.lower=compte
|
||||
label.account.name=Nom de compte
|
||||
|
|
@ -58,6 +59,7 @@ label.accounts=Comptes
|
|||
label.account.specific=Sp\u00e9cifique au compte
|
||||
label.acl=ACL
|
||||
label.acl.id=ID ACL
|
||||
label.acl.list.rules=Liste r\u00e8gles ACL
|
||||
label.acl.name=Nom ACL
|
||||
label.acl.replaced=ACL remplac\u00e9e
|
||||
label.acquire.new.ip=Acqu\u00e9rir nouvelle adr. IP
|
||||
|
|
@ -70,8 +72,9 @@ label.action.attach.iso=Rattacher image ISO
|
|||
label.action.cancel.maintenance.mode=Annuler mode maintenance
|
||||
label.action.cancel.maintenance.mode.processing=Annulation du mode maintenance...
|
||||
label.action.change.password=Changer le mot de passe
|
||||
label.action.change.service=Changer d\\'offre de service
|
||||
label.action.change.service.processing=Changement de d\\'offre de service...
|
||||
label.action.change.service=Changer Service
|
||||
label.action.change.service.processing=Changement service...
|
||||
label.action.configure.samlauthorization=Configurer Autorisation SAML SSO
|
||||
label.action.copy.ISO=Copier une image ISO
|
||||
label.action.copy.ISO.processing=Copie ISO...
|
||||
label.action.copy.template=Copier mod\u00e8le
|
||||
|
|
@ -88,8 +91,8 @@ label.action.delete.account.processing=Suppression du compte...
|
|||
label.action.delete.account=Supprimer un compte
|
||||
label.action.delete.cluster.processing=Suppression du Cluster...
|
||||
label.action.delete.cluster=Supprimer le Cluster
|
||||
label.action.delete.disk.offering.processing=Suppression de l\\'offre Disque...
|
||||
label.action.delete.disk.offering=Supprimer Offre Disque
|
||||
label.action.delete.disk.offering.processing=Suppression de l\\'offre de disque...
|
||||
label.action.delete.disk.offering=Supprimer Offre de Disque
|
||||
label.action.delete.domain.processing=Suppression du domaine...
|
||||
label.action.delete.domain=Supprimer le domaine
|
||||
label.action.delete.firewall.processing=Suppression du Pare-feu...
|
||||
|
|
@ -298,8 +301,10 @@ label.add.intermediate.certificate=Ajouter certificat interm\u00e9diaire
|
|||
label.add.internal.lb=Ajouter LB interne
|
||||
label.add.ip.range=Ajouter une plage IP
|
||||
label.add.isolated.guest.network=Ajouter un r\u00e9seau d\\'invit\u00e9 isol\u00e9
|
||||
label.add.isolated.guest.network.with.sourcenat=Ajouter un r\u00e9seau d\\'invit\u00e9 isol\u00e9 avec SourceNat
|
||||
label.add.isolated.network=Ajouter un r\u00e9seau isol\u00e9
|
||||
label.additional.networks=R\u00e9seaux additionnels
|
||||
label.add.LDAP.account=Ajouter Compte LDAP
|
||||
label.add.ldap.account=Ajouter un compte LDAP
|
||||
label.add.list.name=Nom Liste ACL
|
||||
label.add.load.balancer=Ajouter un r\u00e9partiteur de charge
|
||||
|
|
@ -403,6 +408,7 @@ label.attached.iso=Image ISO attach\u00e9e
|
|||
label.author.email=Email auteur
|
||||
label.author.name=Nom auteur
|
||||
label.autoscale=AutoScale
|
||||
label.autoscale.configuration.wizard=Assistant de configuration AutoScale
|
||||
label.availability=Disponibilit\u00e9
|
||||
label.availabilityZone=availabilityZone
|
||||
label.availability.zone=Zone de disponibilit\u00e9
|
||||
|
|
@ -491,6 +497,7 @@ label.configuration=Configuration
|
|||
label.configure=Configurer
|
||||
label.configure.ldap=Configurer LDAP
|
||||
label.configure.network.ACLs=Configurer les r\u00e8gles d\\'acc\u00e8s r\u00e9seau ACL
|
||||
label.configure.sticky.policy=Configurer Strat\u00e9gie Sticky
|
||||
label.configure.vpc=Configurer le VPC
|
||||
label.confirmation=Confirmation
|
||||
label.confirm.password=Confirmer le mot de passe
|
||||
|
|
@ -515,10 +522,12 @@ label.created=Cr\u00e9\u00e9
|
|||
label.create.nfs.secondary.staging.storage=Cr\u00e9er le Stockage Secondaire Interm\u00e9diaire NFS
|
||||
label.create.nfs.secondary.staging.store=Cr\u00e9er le stockage secondaire interm\u00e9diaire NFS
|
||||
label.create.project=Cr\u00e9er un projet
|
||||
label.create.ssh.key.pair=Cr\u00e9er une bi-cl\u00e9 SSH
|
||||
label.create.template=Cr\u00e9er un mod\u00e8le
|
||||
label.create.VPN.connection=Cr\u00e9er une connexion VPN
|
||||
label.cross.zones=Multi Zones
|
||||
label.custom.disk.iops=IOPS personnalis\u00e9
|
||||
label.custom.disk.offering=Offre de disque personnalis\u00e9e
|
||||
label.custom.disk.size=Taille de disque personnalis\u00e9e
|
||||
label.custom=Personnalis\u00e9
|
||||
label.daily=Quotidien
|
||||
|
|
@ -607,6 +616,7 @@ label.disk.iops.min=IOPS minimum
|
|||
label.disk.iops.read.rate=D\u00e9bit lecture disque (IOPS)
|
||||
label.disk.iops.total=IOPS Total
|
||||
label.disk.iops.write.rate=D\u00e9bit \u00e9criture disque (IOPS)
|
||||
label.disk.offering.details=D\u00e9tails offre de disque
|
||||
label.diskoffering=diskoffering
|
||||
label.disk.offering=Offre de Disque
|
||||
label.disk.provisioningtype=Type de provisionnement
|
||||
|
|
@ -626,6 +636,7 @@ label.dns.2=DNS 2
|
|||
label.dns=DNS
|
||||
label.DNS.domain.for.guest.networks=Domaine DNS pour les r\u00e9seaux invit\u00e9s
|
||||
label.domain.admin=Administrateur du domaine
|
||||
label.domain.details=D\u00e9tails domaine
|
||||
label.domain=Domaine
|
||||
label.domain.id=ID du domaine
|
||||
label.domain.lower=domaine
|
||||
|
|
@ -645,6 +656,7 @@ label.edit=Modifier
|
|||
label.edit.network.details=Modifier les param\u00e8tres r\u00e9seau
|
||||
label.edit.project.details=Modifier les d\u00e9tails du projet
|
||||
label.edit.region=\u00c9diter R\u00e9gion
|
||||
label.edit.rule=Modifier r\u00e8gle
|
||||
label.edit.secondary.ips=\u00c9diter IPs secondaires
|
||||
label.edit.tags=Modifier les balises
|
||||
label.edit.traffic.type=Modifier le type de trafic
|
||||
|
|
@ -692,7 +704,7 @@ label.every=Tous
|
|||
label.example=Exemple
|
||||
label.expunge=Purger
|
||||
label.external.link=Lien externe
|
||||
label.extractable.lower=t\u00e9l\u00e9chargeable
|
||||
label.extractable.lower=T\u00e9l\u00e9chargeable
|
||||
label.extractable=T\u00e9l\u00e9chargeable
|
||||
label.f5.details=D\u00e9tails F5
|
||||
label.f5=F5
|
||||
|
|
@ -700,6 +712,7 @@ label.failed=\u00c9chou\u00e9
|
|||
label.featured=Sponsoris\u00e9
|
||||
label.fetch.latest=Rafra\u00eechir
|
||||
label.filterBy=Filtre
|
||||
label.fingerprint=Empreinte
|
||||
label.firewall=Pare-feu
|
||||
label.firstname.lower=pr\u00e9nom
|
||||
label.first.name=Pr\u00e9nom
|
||||
|
|
@ -753,8 +766,12 @@ label.guest.traffic.vswitch.name=Nom Trafic Invit\u00e9 vSwitch
|
|||
label.guest.traffic.vswitch.type=Type Trafic Invit\u00e9 vSwitch
|
||||
label.guest.type=Type d\\'invit\u00e9
|
||||
label.ha.enabled=Haute disponibilit\u00e9 activ\u00e9e
|
||||
label.health.check.advanced.options=Options avanc\u00e9es \:
|
||||
label.health.check.configurations.options=Options de configuration \:
|
||||
label.health.check.interval.in.sec=Fr\u00e9quence de v\u00e9rification d\\'\u00e9tat (sec)
|
||||
label.health.check.message.desc=Votre r\u00e9partiteur de charge va automatiquement effectuer des v\u00e9rifications d\\'\u00e9tat sur vos instances CloudStack et router seulement le trafic vers les instances ayant pass\u00e9es les v\u00e9rifications avec succ\u00e8s
|
||||
label.health.check=V\u00e9rification statut
|
||||
label.health.check.wizard=Assistant V\u00e9rification Sant\u00e9
|
||||
label.healthy.threshold=Seuil d\\'\u00e9tat
|
||||
label.help=Aide
|
||||
label.hide.ingress.rule=Cacher la r\u00e8gle d\\'entr\u00e9e
|
||||
|
|
@ -765,6 +782,7 @@ label.host=H\u00f4te
|
|||
label.host.MAC=Adresse MAC h\u00f4te
|
||||
label.host.name=Nom d\\'h\u00f4te
|
||||
label.hosts=H\u00f4tes
|
||||
label.host.tag=Etiquette h\u00f4te
|
||||
label.host.tags=\u00c9tiquettes d\\'h\u00f4te
|
||||
label.hourly=Chaque heure
|
||||
label.hvm=HVM
|
||||
|
|
@ -813,6 +831,7 @@ label.intermediate.certificate=Certificat interm\u00e9diaire {0}
|
|||
label.internal.dns.1=DNS interne 1
|
||||
label.internal.dns.2=DNS interne 2
|
||||
label.internal.lb.details=D\u00e9tails du LB interne
|
||||
label.internal.lb=R\u00e9partiteur interne
|
||||
label.internallbvm=InternalLbVm
|
||||
label.internal.name=Nom interne
|
||||
label.interval.type=Type d\\'intervalle
|
||||
|
|
@ -852,7 +871,7 @@ label.is.default=Est par d\u00e9faut
|
|||
label.iso.boot=D\u00e9marrage par ISO
|
||||
label.iso=ISO
|
||||
label.isolated.networks=R\u00e9seaux isol\u00e9s
|
||||
label.isolation.method=M\u00e9thode Isolation
|
||||
label.isolation.method=Isolation
|
||||
label.isolation.mode=Mode d\\'isolation
|
||||
label.isolation.uri=URI d\\'isolation
|
||||
label.is.redundant.router=Redondant
|
||||
|
|
@ -904,6 +923,7 @@ label.load.balancer.type=Type R\u00e9partiteur de charge
|
|||
label.load.balancing.policies=R\u00e8gles de r\u00e9partition de charge
|
||||
label.load.balancing=R\u00e9partition de charge
|
||||
label.loading=Chargement en cours
|
||||
label.local.file=Fichier local
|
||||
label.local=Local
|
||||
label.local.storage.enabled=Activer le stockage local pour les VMs Utilisateurs
|
||||
label.local.storage.enabled.system.vms=Active le stockage local pour les VMs Syst\u00e8mes
|
||||
|
|
@ -977,14 +997,14 @@ label.menu.snapshots=Instantan\u00e9s
|
|||
label.menu.sshkeypair=Bi-cl\u00e9 SSH
|
||||
label.menu.stopped.instances=Instances Arr\u00eat\u00e9es
|
||||
label.menu.storage=Stockage
|
||||
label.menu.system.service.offerings=Offres Syst\u00e8me
|
||||
label.menu.system.service.offerings=Offres de Syst\u00e8me
|
||||
label.menu.system=Syst\u00e8me
|
||||
label.menu.system.vms=\ VMs Syst\u00e8mes
|
||||
label.menu.templates=Mod\u00e8les
|
||||
label.menu.virtual.appliances=Appliances Virtuelles
|
||||
label.menu.virtual.resources=Ressources Virtuelles
|
||||
label.menu.volumes=Volumes
|
||||
label.menu.vpc.offerings=Offres VPC
|
||||
label.menu.vpc.offerings=Offres de VPC
|
||||
label.migrate.instance.to.host=Migration de l\\'instance sur un autre h\u00f4te
|
||||
label.migrate.instance.to=Migrer l\\'instance vers
|
||||
label.migrate.instance.to.ps=Migration de l\\'instance sur un autre stockage primaire
|
||||
|
|
@ -1025,6 +1045,7 @@ label.network.ACL.total=Total R\u00e8gles d\\'acc\u00e8s r\u00e9seau
|
|||
label.network.addVM=Ajouter r\u00e9seau \u00e0 la VM
|
||||
label.network.cidr=CIDR r\u00e9seau
|
||||
label.network.desc=Description r\u00e9seau
|
||||
label.network.details=D\u00e9tails r\u00e9seau
|
||||
label.network.device.type=Type d\\'\u00e9quipement r\u00e9seau
|
||||
label.network.device=\u00c9quipement R\u00e9seau
|
||||
label.network.domain=Nom de domaine
|
||||
|
|
@ -1034,6 +1055,7 @@ label.networking.and.security=R\u00e9seau et s\u00e9curit\u00e9
|
|||
label.network.label.display.for.blank.value=Utiliser la passerelle par d\u00e9faut
|
||||
label.network.limits=Limites r\u00e9seau
|
||||
label.network.name=Nom du r\u00e9seau
|
||||
label.network.offering.details=D\u00e9tails offre de r\u00e9seau
|
||||
label.network.offering.display.text=Texte affich\u00e9 Offre R\u00e9seau
|
||||
label.network.offering.id=ID Offre R\u00e9seau
|
||||
label.network.offering.name=Nom Offre R\u00e9seau
|
||||
|
|
@ -1049,6 +1071,7 @@ label.network.write=\u00c9criture r\u00e9seau
|
|||
label.new=Nouveau
|
||||
label.new.password=Nouveau mot de passe
|
||||
label.new.project=Nouveau projet
|
||||
label.new.ssh.key.pair=Nouvelle bi-cl\u00e9 SSH
|
||||
label.new.vm=Nouvelle VM
|
||||
label.next=Suivant
|
||||
label.nexusVswitch=Nexus 1000v
|
||||
|
|
@ -1121,6 +1144,7 @@ label.PA.threat.profile=Profil menace Palo Alto
|
|||
label.perfect.forward.secrecy=Confidentialit\u00e9 persistante
|
||||
label.persistent=Persistant
|
||||
label.physical.network.ID=Identifiant du r\u00e9seau physique
|
||||
label.physical.network.name=Nom r\u00e9seau physique
|
||||
label.physical.network=R\u00e9seau physique
|
||||
label.PING.CIFS.password=Mot de passe CIFS PING
|
||||
label.PING.CIFS.username=Identifiant CIFS PING
|
||||
|
|
@ -1128,6 +1152,7 @@ label.PING.dir=R\u00e9pertoire PING
|
|||
label.ping.path=Chemin Ping
|
||||
label.PING.storage.IP=IP stockage PING
|
||||
label.planner.mode=Mode planification
|
||||
label.please.complete.the.following.fields=Veuillez remplir les champs suivants
|
||||
label.please.specify.netscaler.info=Renseigner les informations sur le Netscaler
|
||||
label.please.wait=Patientez s\\'il vous plait
|
||||
label.plugin.details=D\u00e9tails extension
|
||||
|
|
@ -1159,6 +1184,7 @@ label.private.interface=Interface priv\u00e9e
|
|||
label.private.ip=Adresse IP Priv\u00e9e
|
||||
label.private.ip.range=Plage d\\'adresses IP Priv\u00e9es
|
||||
label.private.ips=Adresses IP Priv\u00e9es
|
||||
label.private.key=Cl\u00e9 priv\u00e9e
|
||||
label.privatekey=Cl\u00e9 priv\u00e9e PKCS\#8
|
||||
label.private.network=R\u00e9seau priv\u00e9
|
||||
label.private.port=Port priv\u00e9
|
||||
|
|
@ -1178,6 +1204,8 @@ label.providers=Fournisseurs
|
|||
label.public.interface=Interface publique
|
||||
label.public.ip=Adresse IP publique
|
||||
label.public.ips=Adresses IP publiques
|
||||
label.public.key=Cl\u00e9 publique
|
||||
label.public.lb=R\u00e9partiteur public
|
||||
label.public.load.balancer.provider=Fournisseur r\u00e9partition de charge public
|
||||
label.public.network=R\u00e9seau public
|
||||
label.public.port=Port public
|
||||
|
|
@ -1230,8 +1258,10 @@ label.remove.pf=Supprimer la r\u00e8gle de transfert de port
|
|||
label.remove.project.account=Supprimer le compte projet
|
||||
label.remove.region=Supprimer r\u00e9gion
|
||||
label.remove.rule=Supprimer la r\u00e8gle
|
||||
label.remove.ssh.key.pair=Supprimer bi-cl\u00e9 SSH
|
||||
label.remove.static.nat.rule=Supprimer le NAT statique
|
||||
label.remove.static.route=Supprimer une route statique
|
||||
label.remove.this.physical.network=Supprimer ce r\u00e9seau physique
|
||||
label.remove.tier=Supprimer le tiers
|
||||
label.remove.vm.from.lb=Supprimer la VM de la r\u00e8gle de r\u00e9partition de charge
|
||||
label.remove.vm.load.balancer=Supprimer VM du r\u00e9partiteur de charge
|
||||
|
|
@ -1249,6 +1279,8 @@ label.reserved.ip.range=Plage IP r\u00e9serv\u00e9e
|
|||
label.reserved.system.gateway=Passerelle r\u00e9serv\u00e9e Syst\u00e8me
|
||||
label.reserved.system.ip=Adresse IP Syst\u00e8me r\u00e9serv\u00e9e
|
||||
label.reserved.system.netmask=Masque de sous-r\u00e9seau r\u00e9serv\u00e9 Syst\u00e8me
|
||||
label.reset.ssh.key.pair.on.vm=R\u00e9-initialiser bi-cl\u00e9 sur la VM
|
||||
label.reset.ssh.key.pair=R\u00e9-initialiser bi-cl\u00e9 SSH
|
||||
label.resetVM=R\u00e9-initialiser VM
|
||||
label.reset.VPN.connection=R\u00e9-initialiser la connexion VPN
|
||||
label.resize.new.offering.id=Nouvelle Offre
|
||||
|
|
@ -1289,11 +1321,16 @@ label.s3.nfs.server=Serveur NFS S3
|
|||
label.s3.secret_key=Cl\u00e9 Priv\u00e9e
|
||||
label.s3.socket_timeout=D\u00e9lai d\\'expiration de la socket
|
||||
label.s3.use_https=Utiliser HTTPS
|
||||
label.saml.enable=Autoriser SAML SSO
|
||||
label.saml.entity=Fournisseur d\\'identit\u00e9
|
||||
label.saturday=Samedi
|
||||
label.save.and.continue=Enregistrer et continuer
|
||||
label.save.changes=Sauver changements
|
||||
label.save=Sauvegarder
|
||||
label.saving.processing=Sauvegarde en cours...
|
||||
label.scaledown.policy=Strat\u00e9gie ScaleDown
|
||||
label.scale.up.policy=POLITIQUE D\\'AGRANDISSEMENT
|
||||
label.scaleup.policy=Strat\u00e9gie ScaleUp
|
||||
label.scope=Port\u00e9e
|
||||
label.search=Rechercher
|
||||
label.secondary.ips=IPs secondaires
|
||||
|
|
@ -1327,6 +1364,7 @@ label.select.vm.for.static.nat=S\u00e9lectionner une VM pour le NAT statique
|
|||
label.sent=Envoy\u00e9
|
||||
label.server=Serveur
|
||||
label.service.capabilities=Fonctions disponibles
|
||||
label.service.offering.details=D\u00e9tails offre de service
|
||||
label.service.offering=Offre de Service
|
||||
label.services=Services
|
||||
label.service.state=\u00c9tat du service
|
||||
|
|
@ -1334,8 +1372,8 @@ label.session.expired=Session expir\u00e9e
|
|||
label.set.default.NIC=D\u00e9finir NIC par d\u00e9faut
|
||||
label.settings=Param\u00e8tres
|
||||
label.setup=Configuration
|
||||
label.setup.network=Configurer le r\u00e9seau
|
||||
label.setup.zone=Configurer la zone
|
||||
label.setup.network=Configurer R\u00e9seau
|
||||
label.setup.zone=Configurer Zone
|
||||
label.set.up.zone.type=Configurer le type de zone
|
||||
label.shared=En partage
|
||||
label.SharedMountPoint=Point de montage partag\u00e9
|
||||
|
|
@ -1353,7 +1391,7 @@ label.snapshot=Instantan\u00e9
|
|||
label.snapshot.limits=Limites d\\'instantan\u00e9s
|
||||
label.snapshot.name=Nom Instantan\u00e9
|
||||
label.snapshot.schedule=Configurer un instantan\u00e9 r\u00e9current
|
||||
label.snapshot.s=Instantan\u00e9(s)
|
||||
label.snapshot.s=Instantan\u00e9s
|
||||
label.snapshots=Instantan\u00e9s
|
||||
label.SNMP.community=Communaut\u00e9 SNMP
|
||||
label.SNMP.port=Port SNMP
|
||||
|
|
@ -1368,6 +1406,9 @@ label.specify.vxlan=Pr\u00e9ciser le VXLAN
|
|||
label.SR.name=Nom du point de montage
|
||||
label.srx.details=D\u00e9tails SRX
|
||||
label.srx=SRX
|
||||
label.ssh.key.pair=Bi-cl\u00e9 SSH
|
||||
label.ssh.key.pair.details=D\u00e9tails bi-cl\u00e9 SSH
|
||||
label.ssh.key.pairs=Bi-cl\u00e9s SSH
|
||||
label.standard.us.keyboard=Clavier standard (US)
|
||||
label.start.IP=IP d\u00e9but plage
|
||||
label.start.lb.vm=D\u00e9marrer LB VM
|
||||
|
|
@ -1380,6 +1421,7 @@ label.static.nat.enabled=NAT statique activ\u00e9
|
|||
label.static.nat=NAT Statique
|
||||
label.static.nat.to=NAT Statique vers
|
||||
label.static.nat.vm.details=D\u00e9tails des NAT statique VM
|
||||
label.static.routes=Routes statiques
|
||||
label.statistics=Statistiques
|
||||
label.status=Statut
|
||||
label.step.1.title=\u00c9tape 1 \: <strong>S\u00e9lectionnez un mod\u00e8le</strong>
|
||||
|
|
@ -1427,8 +1469,9 @@ label.supportsstrechedl2subnet=Sous-r\u00e9seau Streched L2 support\u00e9
|
|||
label.suspend.project=Suspendre projet
|
||||
label.switch.type=Type commutateur
|
||||
label.system.capacity=Capacit\u00e9 syst\u00e8me
|
||||
label.system.offering.for.router=Offre Syst\u00e8me pour Routeur
|
||||
label.system.offering=Offre de syst\u00e8me
|
||||
label.system.offering.for.router=Offre de Syst\u00e8me pour Routeur
|
||||
label.system.offering=Offre de Syst\u00e8me
|
||||
label.system.service.offering.details=D\u00e9tails offre de service syst\u00e8me
|
||||
label.system.service.offering=Offre de Service Syst\u00e8me
|
||||
label.system.vm.details=D\u00e9tails VM Syst\u00e8me
|
||||
label.system.vm.scaled.up=VM Syst\u00e8me agrandie
|
||||
|
|
@ -1490,14 +1533,19 @@ label.update.ssl= Certificat SSL
|
|||
label.updating=Mise \u00e0 jour
|
||||
label.upgrade.required=Une mise \u00e0 jour est n\u00e9cessaire
|
||||
label.upgrade.router.newer.template=Mette \u00e0 jour le routeur pour utiliser le mod\u00e8le le plus r\u00e9cent
|
||||
label.upload=Charger
|
||||
label.upload.volume=Charger un volume
|
||||
label.upload.from.local=T\u00e9l\u00e9verser depuis Local
|
||||
label.upload.template.from.local=T\u00e9l\u00e9verser Mod\u00e8le depuis Local
|
||||
label.upload=T\u00e9l\u00e9verser
|
||||
label.upload.volume.from.local=T\u00e9l\u00e9verser Volume depuis Local
|
||||
label.upload.volume.from.url=T\u00e9l\u00e9verser volume depuis URL
|
||||
label.upload.volume=T\u00e9l\u00e9verser un volume
|
||||
label.url=URL
|
||||
label.usage.interface=Interface Utilisation
|
||||
label.usage.sanity.result=R\u00e9sultat de sant\u00e9 Usage
|
||||
label.usage.server=Serveur d\\'Usage
|
||||
label.used=Utilis\u00e9
|
||||
label.user.data=Donn\u00e9es utilisateur
|
||||
label.user.details=D\u00e9tails utilisateur
|
||||
label.username=Identifiant
|
||||
label.username.lower=identifiant
|
||||
label.users=Utilisateurs
|
||||
|
|
@ -1589,7 +1637,8 @@ label.vpc.distributedvpcrouter=Routeur VPC Distribu\u00e9
|
|||
label.vpc.id=ID VPC
|
||||
label.VPC.limits=Limites VPC
|
||||
label.vpc.offering.details=D\u00e9tails offre VPC
|
||||
label.vpc.offering=Offre VPC
|
||||
label.vpc.offering=Offre de VPC
|
||||
label.vpc.router.details=D\u00e9tails Routeur VPC
|
||||
label.VPC.router.details=D\u00e9tails routeur VPC
|
||||
label.vpc.supportsregionlevelvpc=VPC niveau R\u00e9gion support\u00e9
|
||||
label.vpc.virtual.router=Routeur virtuel VPC
|
||||
|
|
@ -1718,7 +1767,7 @@ message.add.cluster.zone=Ajouter un cluster d\\'hyperviseurs g\u00e9r\u00e9 pour
|
|||
message.add.disk.offering=Renseignez les param\u00e8tres suivants pour ajouter un offre de service de disques
|
||||
message.add.domain=Sp\u00e9cifier le sous domaine que vous souhaitez cr\u00e9er sous ce domaine
|
||||
message.added.new.nuage.vsp.controller=Ajout d\\'un nouveau contr\u00f4leur Nuage Vsp
|
||||
message.added.vpc.offering=Ajout d\\'une offre VPC
|
||||
message.added.vpc.offering=Offre de VPC ajout\u00e9e
|
||||
message.add.firewall=Ajouter un pare-feu \u00e0 cette zone
|
||||
message.add.guest.network=Confirmer l\\'ajout du r\u00e9seau invit\u00e9
|
||||
message.add.host=Renseignez les param\u00e8tres suivants pour ajouter une h\u00f4te
|
||||
|
|
@ -1740,7 +1789,7 @@ message.add.primary.storage=Ajouter un nouveau stockage primaire \u00e0 la zone
|
|||
message.add.region=Renseigner les informations suivantes pour ajouter une nouvelle r\u00e9gion.
|
||||
message.add.secondary.storage=Ajouter un nouveau stockage pour la zone <b><span id\="zone_name"></span></b>
|
||||
message.add.service.offering=Renseigner les informations suivantes pour ajouter une nouvelle offre de service de calcul.
|
||||
message.add.system.service.offering=Ajouter les informations suivantes pour cr\u00e9er une nouvelle offre syst\u00e8me.
|
||||
message.add.system.service.offering=Ajouter les informations suivantes pour cr\u00e9er une nouvelle offre de syst\u00e8me.
|
||||
message.add.template=Renseignez les informations suivantes pour cr\u00e9er votre nouveau mod\u00e8le
|
||||
message.add.volume=Renseignez les informations suivantes pour ajouter un nouveau volume
|
||||
message.add.VPN.gateway=Confirmer l\\'ajout d\\'une passerelle VPN
|
||||
|
|
@ -1857,11 +1906,15 @@ message.delete.user=\u00cates-vous s\u00fbr que vous voulez supprimer cet utilis
|
|||
message.delete.VPN.connection=\u00cates-vous s\u00fbr que vous voulez supprimer la connexion VPN
|
||||
message.delete.VPN.customer.gateway=\u00cates-vous s\u00fbr que vous voulez supprimer cette passerelle VPN client
|
||||
message.delete.VPN.gateway=\u00cates-vous s\u00fbr que vous voulez supprimer cette passerelle VPN
|
||||
message.desc.add.new.lb.sticky.rule=Ajouter nouvelle r\u00e8gle LB sticky
|
||||
message.desc.advanced.zone=Pour des topologies de r\u00e9seau plus sophistiqu\u00e9es. Ce mod\u00e8le de r\u00e9seau permet plus de flexibilit\u00e9 dans la d\u00e9finition des r\u00e9seaux d\\'invit\u00e9s et propose des offres personnalis\u00e9es telles que le support de pare-feu, VPN ou d\\'\u00e9quilibrage de charge.
|
||||
message.desc.basic.zone=Fournit un r\u00e9seau unique o\u00f9 chaque instance de machine virtuelle se voit attribuer une adresse IP directement depuis le r\u00e9seau. L\\'isolation des invit\u00e9s peut \u00eatre assur\u00e9 au niveau de la couche r\u00e9seau-3 tels que les groupes de s\u00e9curit\u00e9 (filtrage d\\'adresse IP source).
|
||||
message.desc.cluster=Chaque pod doit contenir un ou plusieurs clusters, et le premier cluster sera ajout\u00e9 tout de suite. Un cluster est un regroupement pour h\u00f4tes. Les h\u00f4tes d\\'un cluster ont tous un mat\u00e9riel identique, ex\u00e9cutent le m\u00eame hyperviseur, sont dans le m\u00eame sous-r\u00e9seau, et acc\u00e8dent au m\u00eame stockage partag\u00e9. Chaque cluster comprend une ou plusieurs h\u00f4tes et un ou plusieurs serveurs de stockage primaire.
|
||||
message.desc.created.ssh.key.pair=Bi-cl\u00e9 SSH cr\u00e9\u00e9e
|
||||
message.desc.create.ssh.key.pair=Veuillez remplir les champs suivants pour cr\u00e9er ou enregistrer une bi-cl\u00e9 SSH.<br><br>(1) Si la cl\u00e9 publique est d\u00e9finie, CloudStack va enregistrer cette cl\u00e9. Vous pouvez ensuite l\\'utiliser avec sa cl\u00e9 priv\u00e9e.<br><br>(2) Si la cl\u00e9 publique n\\'est pas d\u00e9finie, CloudStack va cr\u00e9er une nouvelle bi-cl\u00e9 SSH. Dans ce cas, veuillez copier et sauvegarder la cl\u00e9 priv\u00e9e. CloudStack ne va pas la conserver.<br>
|
||||
message.desc.host=Chaque cluster doit contenir au moins un h\u00f4te (machine) pour ex\u00e9ctuer des machines virtuelles invit\u00e9es, et le premier h\u00f4te sera ajout\u00e9e maintenant. Pour un h\u00f4te fonctionnant dans CloudStack, vous devez installer un logiciel hyperviseur sur l\\'h\u00f4te, attribuer une adresse IP \u00e0 l\\'h\u00f4te, et s\\'assurer que l\\'h\u00f4te est connect\u00e9 au serveur d\\'administration CloudStack.<br/><br/>Indiquer le nom de l\\'h\u00f4te ou son adresse IP, l\\'identifiant de connexion (g\u00e9n\u00e9ralement root) et le mot de passe ainsi que toutes les \u00e9tiquettes permettant de classer les h\u00f4tes.
|
||||
message.desc.primary.storage=Chaque cluster doit contenir un ou plusieurs serveurs de stockage primaire, et le premier sera ajout\u00e9 tout de suite. Le stockage principal contient les volumes de disque pour les machines virtuelles s\\'ex\u00e9cutant sur les h\u00f4tes dans le cluster. Utiliser les protocoles standards pris en charge par l\\'hyperviseur sous-jacent.
|
||||
message.desc.reset.ssh.key.pair=Veuillez sp\u00e9cifier une bi-cl\u00e9 SSH que vous souhaitez ajouter \u00e0 cette VM. Noter que le mot de passe root sera chang\u00e9 durant cette op\u00e9ration si l\\'option mot de passe est activ\u00e9e.
|
||||
message.desc.secondary.storage=Chaque zone doit avoir au moins un serveur NFS ou un serveur de stockage secondaire, et sera ajout\u00e9 en premier tout de suite. Le stockage secondaire entrepose les mod\u00e8les de machines virtuelles, les images ISO et les images disques des volumes des machines virtuelles. Ce serveur doit \u00eatre accessible pour toutes les machines h\u00f4tes dans la zone.<br/><br/>Saisir l\\'adresse IP et le chemin d\\'export.
|
||||
message.desc.zone=Une zone est la plus grande unit\u00e9 organisationnelle dans CloudStack, et correspond typiquement \u00e0 un centre de donn\u00e9es. Les zones fournissent un isolement physique et de la redondance. Une zone est constitu\u00e9e d\\'un ou plusieurs pods (dont chacun contient les h\u00f4tes et les serveurs de stockage primaire) et un serveur de stockage secondaire qui est partag\u00e9e par tous les pods dans la zone.
|
||||
message.detach.disk=Voulez-vous d\u00e9tacher ce disque ?
|
||||
|
|
@ -1953,6 +2006,7 @@ message.migrate.systemvm.confirm=Confirmer la migration de la VM syst\u00e8me ve
|
|||
message.migrate.volume=Confirmer la migration du volume vers un autre stockage primaire.
|
||||
message.network.addVM.desc=Veuillez sp\u00e9cifier le r\u00e9seau que vous souhaitez ajouter \u00e0 cette VM. Une nouvelle interface NIC sera ajout\u00e9e pour ce r\u00e9seau.
|
||||
message.network.addVMNIC=Confirmer l\\'ajout d\\'une nouvelle NIC VM pour ce r\u00e9seau.
|
||||
message.network.remote.access.vpn.configuration=La configuration VPN Acc\u00e9s Distant a \u00e9t\u00e9 g\u00e9n\u00e9r\u00e9e mais elle n\\'a pas pu \u00eatre appliqu\u00e9e. Veuillez v\u00e9rifier la connectivit\u00e9 des \u00e9l\u00e9ments r\u00e9seau, et r\u00e9-essayez.
|
||||
message.new.user=Renseigner les informations suivantes pour ajouter un nouveau compte utilisateur
|
||||
message.no.affinity.groups=Vous n\\'avez pas de groupes d\\'affinit\u00e9. Continuer vers la prochaine \u00e9tape.
|
||||
message.no.host.available=Aucun h\u00f4te n\\'est disponible pour la migration
|
||||
|
|
@ -1965,23 +2019,29 @@ message.number.hosts=<h2><span> \# d\\' </span> H\u00f4tes</h2>
|
|||
message.number.pods=<h2><span> \# de </span> Pods</h2>
|
||||
message.number.storage=<h2><span> \# de </span> Volumes de Stockage Primaire</h2>
|
||||
message.number.zones=<h2><span> \# de </span> Zones</h2>
|
||||
message.password.has.been.reset.to=Le mot de passe a \u00e9t\u00e9 r\u00e9-initialiser en
|
||||
message.password.of.the.vm.has.been.reset.to=Le mot de passe de la VM a \u00e9t\u00e9 r\u00e9-initialis\u00e9 en
|
||||
message.pending.projects.1=Vous avez des invitations projet en attente \:
|
||||
message.pending.projects.2=Pour les visualiser, aller dans la section projets, puis s\u00e9lectionner invitation dans la liste d\u00e9roulante.
|
||||
message.please.add.at.lease.one.traffic.range=Ajouter au moins une plage r\u00e9seau
|
||||
message.please.confirm.remove.ssh.key.pair=Confirmer la suppression de cette bi-cl\u00e9 SSH
|
||||
message.please.proceed=Continuer vers la prochaine \u00e9tape.
|
||||
message.please.select.a.configuration.for.your.zone=S\u00e9lectionner une configuration pour la zone.
|
||||
message.please.select.a.different.public.and.management.network.before.removing=S\u00e9lectionner un r\u00e9seau public et d\\'administration diff\u00e9rent avant de supprimer
|
||||
message.please.select.networks=S\u00e9lectionner les r\u00e9seaux pour votre machine virtuelle.
|
||||
message.please.select.ssh.key.pair.use.with.this.vm=Veuillez s\u00e9lectionner la bi-cl\u00e9 SSH que vous souhaitez utiliser avec cette VM \:
|
||||
message.please.wait.while.zone.is.being.created=Patienter pendant la cr\u00e9ation de la zone, cela peut prendre du temps...
|
||||
message.pod.dedication.released=Lib\u00e9ration du pod d\u00e9di\u00e9
|
||||
message.portable.ip.delete.confirm=Supprimer la plage IP portable ?
|
||||
message.project.invite.sent=Invitation envoy\u00e9e ; les utilisateurs seront ajout\u00e9s apr\u00e8s acceptation de l\\'invitation
|
||||
message.public.traffic.in.advanced.zone=Le trafic public est g\u00e9n\u00e9r\u00e9 lorsque les machines virtuelles dans le nuage acc\u00e8dent \u00e0 Internet. Des adresses IP publiquement accessibles doivent \u00eatre pr\u00e9vues \u00e0 cet effet. Les utilisateurs peuvent utiliser l\\'interface d\\'administration de CloudStack pour acqu\u00e9rir ces adresses IP qui impl\u00e9menteront une translation d\\'adresse NAT entre le r\u00e9seau d\\'invit\u00e9 et le r\u00e9seau public.<br/><br/>Fournir au moins une plage d\\'adresses IP pour le trafic Internet.
|
||||
message.public.traffic.in.basic.zone=Le trafic public est g\u00e9n\u00e9r\u00e9 lorsque les machines virtuelles dans le nuage acc\u00e8dent \u00e0 Internet ou fournissent des services \u00e0 des utilisateurs sur Internet. Des adresses IP publiquement accessibles doivent \u00eatre pr\u00e9vus \u00e0 cet effet. Quand une instance est cr\u00e9\u00e9e, une adresse IP publique depuis un ensemble d\\'adresses IP publiques sera allou\u00e9e \u00e0 l\\'instance, en plus de l\\'adresse IP de l\\'invit\u00e9. La translation d\\'adresses statique NAT 1-1 sera mises en place automatiquement entre l\\'adresse IP publique et l\\'adresse IP de l\\'invit\u00e9. Les utilisateurs peuvent \u00e9galement utiliser l\\'interface d\\'administration CloudStack pour acqu\u00e9rir des adresses IP suppl\u00e9mentaires pour ajouter une translation d\\'adresse statique NAT entre leurs instances et le r\u00e9seau d\\'adresses IP publiques.
|
||||
message.question.are.you.sure.you.want.to.add=\u00cates-vous certain de vouloir ajouter
|
||||
message.read.admin.guide.scaling.up=Veuillez lire le paragraphe "dynamic scaling" dans le guide d\\'administration avant d\\'op\u00e9rer un dimensionnement dynamique.
|
||||
message.recover.vm=Confirmer la restauration de cette VM.
|
||||
message.redirecting.region=Redirection vers r\u00e9gion...
|
||||
message.reinstall.vm=NOTE\: Proc\u00e9dez avec prudence. Cela entra\u00eenera la r\u00e9-installation de la VM \u00e0 partir du mod\u00e8le; les donn\u00e9es sur le disque ROOT seront perdues. Les volumes de donn\u00e9es suppl\u00e9mentaires, le cas \u00e9ch\u00e9ant, ne seront pas touch\u00e9s.
|
||||
message.removed.ssh.key.pair=Bi-cl\u00e9 SSH supprim\u00e9e
|
||||
message.remove.ldap=Voulez-vous supprimer la configuration LDAP ?
|
||||
message.remove.region=Voulez-vous supprimer cette r\u00e9gion depuis ce serveur d\\'administration ?
|
||||
message.remove.vpc=Confirmer la suppression du VPC
|
||||
|
|
@ -2009,7 +2069,7 @@ message.set.default.NIC.manual=Veuillez mettre \u00e0 jour manuellement la NIC p
|
|||
message.setup.physical.network.during.zone.creation.basic=Quand vous ajoutez une zone basique, vous pouvez param\u00e9trer un seul r\u00e9seau physique, correspondant \u00e0 une carte r\u00e9seau sur l\\'hyperviseur. Ce r\u00e9seau comportera plusieurs types de trafic.<br/><br/>Vous pouvez \u00e9galement <strong>glisser et d\u00e9poser</strong> d\\'autres types de trafic sur le r\u00e9seau physique.
|
||||
message.setup.physical.network.during.zone.creation=Lorsque vous ajoutez une zone avanc\u00e9e, vous avez besoin de d\u00e9finir un ou plusieurs r\u00e9seaux physiques. Chaque r\u00e9seau correspond \u00e0 une carte r\u00e9seau sur l\\'hyperviseur. Chaque r\u00e9seau physique peut supporter un ou plusieurs types de trafic, avec certaines restrictions sur la fa\u00e7on dont ils peuvent \u00eatre combin\u00e9s.<br/><br/><strong>Glisser et d\u00e9poser un ou plusieurs types de trafic</strong> sur chaque r\u00e9seau physique.
|
||||
message.setup.successful=Installation du Cloud r\u00e9ussie \!
|
||||
message.snapshot.schedule=Vous pouvez mettre en place les politiques de g\u00e9n\u00e9ration d\\'instantan\u00e9s en s\u00e9lectionnant les options disponibles ci-dessous et en appliquant votre politique.
|
||||
message.snapshot.schedule=Vous pouvez configurer des plannings d\\'instantan\u00e9s r\u00e9currents en s\u00e9lectionnant les options disponibles ci-dessous et en appliquant votre politique pr\u00e9f\u00e9r\u00e9e.
|
||||
message.specifiy.tag.key.value=Sp\u00e9cifier une cl\u00e9 et valeur de tag
|
||||
message.specify.url=Renseigner l\\'URL
|
||||
message.step.1.continue=S\u00e9lectionnez un mod\u00e8le ou une image ISO pour continuer
|
||||
|
|
@ -2103,6 +2163,6 @@ state.Starting=D\u00e9marrage en cours
|
|||
state.Stopped=Arr\u00eat\u00e9e
|
||||
state.Stopping=Arr\u00eat en cours
|
||||
state.Suspended=Suspendu
|
||||
title.upload.volume=Charger Volume
|
||||
title.upload.volume=T\u00e9l\u00e9verser Volume
|
||||
ui.listView.filters.all=Tous
|
||||
ui.listView.filters.mine=Les miennes
|
||||
|
|
|
|||
|
|
@ -43,17 +43,17 @@ hint.type.part.host.tag=\u00cdrd be egy kiszolg\u00e1l\u00f3 c\u00edmke r\u00e9s
|
|||
hint.type.part.storage.tag=\u00cdrd be egy t\u00e1r c\u00edmke r\u00e9sz\u00e9t
|
||||
ICMP.code=ICMP k\u00f3d
|
||||
ICMP.type=ICMP t\u00edpus
|
||||
image.directory=Image Directory
|
||||
image.directory=Image K\u00f6nyvt\u00e1r
|
||||
inline=Inline
|
||||
instances.actions.reboot.label=P\u00e9ld\u00e1ny \u00fajraind\u00edt\u00e1sa
|
||||
label.about.app=A CloudStack-r\u0151l
|
||||
label.about=N\u00e9vjegy
|
||||
label.accept.project.invitation=Project-megh\u00edv\u00f3 elfogad\u00e1sa
|
||||
label.account.and.security.group=Account, Security group
|
||||
label.account.and.security.group=Sz\u00e1mla, biztons\u00e1gi csoport
|
||||
label.account.id=Sz\u00e1mla azonos\u00edt\u00f3
|
||||
label.account.lower=sz\u00e1mla
|
||||
label.account.name=Sz\u00e1mla n\u00e9v
|
||||
label.account.specific=Account-Specific
|
||||
label.account.specific=Sz\u00e1mla-specifikus
|
||||
label.accounts=Sz\u00e1ml\u00e1k
|
||||
label.account=Sz\u00e1mla
|
||||
label.acl=ACL
|
||||
|
|
@ -301,6 +301,7 @@ label.add.isolated.guest.network=Izol\u00e1lt vend\u00e9g h\u00e1l\u00f3zat felv
|
|||
label.add.isolated.network=Izol\u00e1lt h\u00e1l\u00f3zat felv\u00e9tele
|
||||
label.additional.networks=Tov\u00e1bbi h\u00e1l\u00f3zatok
|
||||
label.add.ldap.account=LDAP hozz\u00e1f\u00e9r\u00e9s felv\u00e9tele
|
||||
label.add.LDAP.account=LDAP sz\u00e1mla felv\u00e9tele
|
||||
label.add.list.name=ACL lista n\u00e9v
|
||||
label.add.load.balancer=Terhel\u00e9seloszt\u00f3 felv\u00e9tele
|
||||
label.add.more=Tov\u00e1bbi felv\u00e9tele
|
||||
|
|
@ -340,7 +341,7 @@ label.add.static.route=Statikus \u00fatvonal felv\u00e9tele
|
|||
label.add.system.service.offering=Add System Service Offering
|
||||
label.add.template=Sablon felv\u00e9tele
|
||||
label.add.to.group=Felv\u00e9tel a csoportba
|
||||
label.add.ucs.manager=Add UCS Manager
|
||||
label.add.ucs.manager=UCS Manager felv\u00e9tele
|
||||
label.add.userdata=Felhaszn\u00e1l\u00f3 adat
|
||||
label.add.user=Felhaszn\u00e1l\u00f3 felv\u00e9tele
|
||||
label.add.vlan=VLAN felv\u00e9tele
|
||||
|
|
@ -369,7 +370,7 @@ label.affinity.group=Affin\u00edt\u00e1si csoport
|
|||
label.affinity.groups=Affin\u00edt\u00e1si csoportok
|
||||
label.agent.password=\u00dcgyn\u00f6k jelsz\u00f3
|
||||
label.agent.port=\u00dcgyn\u00f6k port
|
||||
label.agent.state=Agent State
|
||||
label.agent.state=\u00dcgyn\u00f6k \u00e1llapot
|
||||
label.agent.username=\u00dcgyn\u00f6k felhaszn\u00e1l\u00f3n\u00e9v
|
||||
label.agree=Elfogadom
|
||||
label.alert.archived=Riaszt\u00e1s archiv\u00e1lva
|
||||
|
|
@ -392,7 +393,7 @@ label.archive=Archive
|
|||
label.archive.events=Esem\u00e9nyek archiv\u00e1l\u00e1sa
|
||||
label.assigned.vms=Hozz\u00e1rendelt VM-ek
|
||||
label.assign=Hozz\u00e1rendel\u00e9s
|
||||
label.assign.instance.another=Assign Instance to Another Account
|
||||
label.assign.instance.another=P\u00e9ld\u00e1ny hozz\u00e1rendel\u00e9se m\u00e1sik sz\u00e1ml\u00e1hoz
|
||||
label.assign.to.load.balancer=P\u00e9ld\u00e1ny hozz\u00e1rendel\u00e9se terhel\u00e9seloszt\u00f3hoz
|
||||
label.assign.vms=VM-ek hozz\u00e1rendel\u00e9se
|
||||
label.associated.network.id=Kapcsolt h\u00e1l\u00f3zat ID
|
||||
|
|
@ -429,8 +430,8 @@ label.broadcast.domain.type=Broadcast Domain Type
|
|||
label.broadcast.uri=Broadcast URI
|
||||
label.broadcasturi=broadcasturi
|
||||
label.broadcat.uri=Broadcast URI
|
||||
label.brocade.vcs.address=Vcs Switch Address
|
||||
label.brocade.vcs.details=Brocade Vcs Switch details
|
||||
label.brocade.vcs.address=Vcs Switch c\u00edm
|
||||
label.brocade.vcs.details=Brocade Vcs Switch r\u00e9szletek
|
||||
label.by.account=By Account
|
||||
label.by.alert.type=Riaszt\u00e1s t\u00edpus szerint
|
||||
label.by.availability=By Availability
|
||||
|
|
@ -497,7 +498,7 @@ label.confirm.password=Jelsz\u00f3 meger\u0151s\u00edt\u00e9s
|
|||
label.congratulations=Gratul\u00e1ci\u00f3\!
|
||||
label.conserve.mode=Conserve mode
|
||||
label.console.proxy=Konzol proxy
|
||||
label.console.proxy.vm=Console Proxy VM
|
||||
label.console.proxy.vm=Konzol Proxy VM
|
||||
label.continue.basic.install=Folytat\u00e1s alaptelep\u00edt\u00e9ssel
|
||||
label.continue=Tov\u00e1bb
|
||||
label.copying.iso=ISO m\u00e1sol\u00e1sa
|
||||
|
|
@ -515,10 +516,12 @@ label.created=L\u00e9trehoz\u00e1s d\u00e1tuma
|
|||
label.create.nfs.secondary.staging.storage=Create NFS Secondary Staging Store
|
||||
label.create.nfs.secondary.staging.store=NFS m\u00e1sodlagos t\u00e1r l\u00e9trehoz\u00e1sa
|
||||
label.create.project=Projekt l\u00e9trehoz\u00e1sa
|
||||
label.create.ssh.key.pair=SSH kulcsp\u00e1r l\u00e9trehoz\u00e1sa
|
||||
label.create.template=Sablon l\u00e9trehoz\u00e1sa
|
||||
label.create.VPN.connection=VPN kapcsolat l\u00e9trehoz\u00e1sa
|
||||
label.cross.zones=Cross Zones
|
||||
label.custom.disk.iops=Egyedi IOPS
|
||||
label.custom.disk.offering=Egyedi t\u00e1r aj\u00e1nlat
|
||||
label.custom.disk.size=Egyedi merevlemez m\u00e9ret
|
||||
label.custom=Egyedi
|
||||
label.daily=Napi
|
||||
|
|
@ -565,7 +568,7 @@ label.delete.project=Projekt t\u00f6rl\u00e9se
|
|||
label.delete.secondary.staging.store=Delete Secondary Staging Store
|
||||
label.delete.SRX=SRX t\u00f6rl\u00e9se
|
||||
label.delete=T\u00f6rl\u00e9s
|
||||
label.delete.ucs.manager=Delete UCS Manager
|
||||
label.delete.ucs.manager=UCS Manager t\u00f6rl\u00e9se
|
||||
label.delete.VPN.connection=VPN kapcsolat t\u00f6rl\u00e9se
|
||||
label.delete.VPN.customer.gateway=VPN \u00fcgyf\u00e9l kapu t\u00f6rl\u00e9se
|
||||
label.delete.VPN.gateway=VPN kapu t\u00f6rl\u00e9se
|
||||
|
|
@ -597,7 +600,7 @@ label.disable.vnmc.provider=VNMC szolg\u00e1ltat\u00f3 kikapcsol\u00e1sa
|
|||
label.disable.vpc.offering=VPC aj\u00e1nlat kikapcsol\u00e1sa
|
||||
label.disable.vpn=T\u00e1voli VPN hozz\u00e1f\u00e9r\u00e9s kikapcsol\u00e1sa
|
||||
label.disabling.vpn.access=VPN hozz\u00e1f\u00e9r\u00e9s kikapcsol\u00e1sa
|
||||
label.disassociate.profile.blade=Disassociate Profile from Blade
|
||||
label.disassociate.profile.blade=Profil elv\u00e1laszt\u00e1sa a blade-t\u0151l
|
||||
label.disbale.vnmc.device=VNMC eszk\u00f6sz kikapcsol\u00e1sa
|
||||
label.disk.allocated=Merevlemez lefoglalva
|
||||
label.disk.bytes.read.rate=Olvas\u00e1si r\u00e1ta (BPS)
|
||||
|
|
@ -642,7 +645,8 @@ label.edit.affinity.group=Affin\u00edt\u00e1si csoport szerkeszt\u00e9se
|
|||
label.edit.lb.rule=LB szab\u00e1ly m\u00f3dos\u00edt\u00e1sa
|
||||
label.edit.network.details=H\u00e1l\u00f3zat r\u00e9szleteinek szerkeszt\u00e9se
|
||||
label.edit.project.details=Projekt r\u00e9szletek szerkeszt\u00e9se
|
||||
label.edit.region=Edit Region
|
||||
label.edit.region=R\u00e9gi\u00f3 szerkeszt\u00e9se
|
||||
label.edit.rule=Szab\u00e1ly m\u00f3dos\u00edt\u00e1sa
|
||||
label.edit.secondary.ips=M\u00e1sodlagos IP c\u00edmek m\u00f3dos\u00edt\u00e1sa
|
||||
label.edit=Szerkeszt\u00e9s
|
||||
label.edit.tags=Cimk\u00e9k szerkeszt\u00e9se
|
||||
|
|
@ -699,6 +703,7 @@ label.failed=Hiba
|
|||
label.featured=Kiemelt
|
||||
label.fetch.latest=Legfrissebb let\u00f6lt\u00e9se
|
||||
label.filterBy=Sz\u0171r\u00e9s
|
||||
label.fingerprint=\u00dajlenyomat
|
||||
label.firewall=T\u0171zfal
|
||||
label.first.name=Keresztn\u00e9v
|
||||
label.firstname.lower=keresztn\u00e9v
|
||||
|
|
@ -718,9 +723,9 @@ label.go.step.3=3. l\u00e9p\u00e9sre
|
|||
label.go.step.4=4. l\u00e9p\u00e9sre
|
||||
label.go.step.5=5. l\u00e9psre
|
||||
label.gpu=CPU
|
||||
label.group.by.account=Group by account
|
||||
label.group.by.cluster=Group by cluster
|
||||
label.group.by.pod=Group by pod
|
||||
label.group.by.account=Sz\u00e1ml\u00e1nk\u00e9nt csoportos\u00edtva
|
||||
label.group.by.cluster=F\u00fcrt\u00f6nk\u00e9nt csoportos\u00edtva
|
||||
label.group.by.pod=Pod-onk\u00e9nt csoportos\u00edtva
|
||||
label.group.by.zone=Z\u00f3n\u00e1nk\u00e9nt csoportos\u00edtva
|
||||
label.group=Csoport
|
||||
label.group.optional=Csoport (opcion\u00e1lis)
|
||||
|
|
@ -731,7 +736,7 @@ label.gslb.details=GSLB r\u00e9szletek
|
|||
label.gslb.domain.name=GSLB dom\u00e9n n\u00e9v
|
||||
label.gslb=GSLB
|
||||
label.gslb.lb.details=Terhel\u00e9seloszt\u00f3 r\u00e9szletek
|
||||
label.gslb.lb.remove=Remove load balancing from this GSLB
|
||||
label.gslb.lb.remove=Terhel\u00e9seloszt\u00e1s t\u00f6rl\u00e9se ebb\u0151l a GSLB-b\u0151l
|
||||
label.gslb.lb.rule=Terhel\u00e9seloszt\u00f3 szab\u00e1ly
|
||||
label.gslb.service=GSLB szolg\u00e1ltat\u00e1s
|
||||
label.gslb.service.private.ip=GSLB szolg\u00e1ltat\u00e1s priv\u00e1t IP
|
||||
|
|
@ -747,11 +752,13 @@ label.guest.network.details=Vend\u00e9g h\u00e1l\u00f3zat r\u00e9szletek
|
|||
label.guest.networks=Vend\u00e9g h\u00e1l\u00f3zatok
|
||||
label.guest.start.ip=Kezd\u0151 vend\u00e9g IP
|
||||
label.guest.traffic=Vend\u00e9g forgalom
|
||||
label.guest.traffic.vswitch.name=Guest Traffic vSwitch Name
|
||||
label.guest.traffic.vswitch.type=Guest Traffic vSwitch Type
|
||||
label.guest.traffic.vswitch.name=Vend\u00e9g forgalom vSwitch n\u00e9v
|
||||
label.guest.traffic.vswitch.type=Vend\u00e9g forgalom vSwitch t\u00edpus
|
||||
label.guest.type=Vend\u00e9g t\u00edpus
|
||||
label.guest=Vend\u00e9g
|
||||
label.ha.enabled=HA bekapcsolva
|
||||
label.health.check.advanced.options=Halad\u00f3 be\u00e1ll\u00edt\u00e1sok\:
|
||||
label.health.check.configurations.options=Beall\u00edt\u00e1sok\:
|
||||
label.health.check=Ellen\u0151rz\u00e9s
|
||||
label.health.check.interval.in.sec=Ellen\u0151rz\u00e9s id\u0151k\u00f6z (mp)
|
||||
label.healthy.threshold=Eg\u00e9szs\u00e9ges k\u00fcsz\u00f6b
|
||||
|
|
@ -779,7 +786,7 @@ label.IKE.DH=IKE DH
|
|||
label.IKE.encryption=IKE titkos\u00edt\u00e1s
|
||||
label.IKE.hash=IKE Hash
|
||||
label.IKE.lifetime=IKE \u00e9lettartam (mp)
|
||||
label.IKE.policy=IKE policy
|
||||
label.IKE.policy=IKE szab\u00e1lyzat
|
||||
label.info=Inf\u00f3
|
||||
label.info.upper=INFO
|
||||
label.ingress.rule=Ingress szab\u00e1ly
|
||||
|
|
@ -893,7 +900,7 @@ label.lb.algorithm.roundrobin=K\u00f6rbe forg\u00f3
|
|||
label.lb.algorithm.source=Forr\u00e1s
|
||||
label.LB.isolation=Terhel\u00e9seloszt\u00f3 izol\u00e1ci\u00f3
|
||||
label.ldap.configuration=LDAP konfigur\u00e1ci\u00f3
|
||||
label.ldap.group.name=LDAP Group
|
||||
label.ldap.group.name=LDAP csoport
|
||||
label.ldap.port=LDAP port
|
||||
label.level=Szint
|
||||
label.linklocal.ip=Link Local IP Address
|
||||
|
|
@ -902,14 +909,17 @@ label.load.balancer.type=Terhel\u00e9seloszt\u00f3 t\u00edpus
|
|||
label.load.balancing.policies=Terhel\u00e9seloszt\u00f3 szab\u00e1lyok
|
||||
label.load.balancing=Terhel\u00e9seloszt\u00e1s
|
||||
label.loading=Bet\u00f6lt\u00e9s
|
||||
label.local.file=Helyi file
|
||||
label.local=Helyi
|
||||
label.local.storage.enabled=Helyi t\u00e1r bekapcsol\u00e1sa felhaszn\u00e1l\u00f3i VM-ek r\u00e9sz\u00e9re
|
||||
label.local.storage.enabled.system.vms=Helyi t\u00e1r bekapcsol\u00e1sa a rendszer VM sz\u00e1m\u00e1ra
|
||||
label.local.storage=Helyi t\u00e1r
|
||||
label.login=Bejelentkez\u00e9s
|
||||
label.logout=Kijelentkez\u00e9s
|
||||
label.lun=LUN
|
||||
label.LUN.number=LUN \#
|
||||
label.lxc.traffic.label=LXC Traffic Label
|
||||
label.make.project.owner=Make account project owner
|
||||
label.make.project.owner=Sz\u00e1mla projekt-tulajdonoss\u00e1 t\u00e9tele
|
||||
label.make.redundant=Redund\u00e1nss\u00e1 t\u00e9tel
|
||||
label.managed=Vez\u00e9relt
|
||||
label.management.ips=Vez\u00e9rl\u0151 IP c\u00edm
|
||||
|
|
@ -1018,7 +1028,7 @@ label.netScaler=NetScaler
|
|||
label.network.ACL=H\u00e1l\u00f3zati ACL
|
||||
label.network.ACLs=H\u00e1l\u00f3zati ACL-ek
|
||||
label.network.ACL.total=H\u00e1l\u00f3zati ACL \u00f6sszesen
|
||||
label.network.addVM=Add network to VM
|
||||
label.network.addVM=H\u00e1l\u00f3zat felv\u00e9tele a VM-hez
|
||||
label.network.cidr=H\u00e1l\u00f3zat CIDR
|
||||
label.network.desc=H\u00e1l\u00f3zat le\u00edr\u00e1s
|
||||
label.network.device=H\u00e1l\u00f3zati eszk\u00f6z
|
||||
|
|
@ -1044,6 +1054,7 @@ label.network.type=H\u00e1l\u00f3zat t\u00edpus
|
|||
label.network.write=H\u00e1l\u00f3zat \u00edr\u00e1s
|
||||
label.new.password=\u00daj jelsz\u00f3
|
||||
label.new.project=\u00daj projekt
|
||||
label.new.ssh.key.pair=\u00daj SSH kulcsp\u00e1r
|
||||
label.new=\u00daj
|
||||
label.new.vm=\u00daj VM
|
||||
label.next=K\u00f6vetkez\u0151
|
||||
|
|
@ -1092,13 +1103,13 @@ label.order=Sorrend
|
|||
label.os.preference=OS preferencia
|
||||
label.os.type=OS t\u00edpus
|
||||
label.other=M\u00e1s
|
||||
label.override.guest.traffic=Override Guest-Traffic
|
||||
label.override.guest.traffic=Vend\u00e9g forgalom fel\u00fclb\u00edr\u00e1l\u00e1sa
|
||||
label.override.public.traffic=Publikus forgalom fel\u00fclb\u00edr\u00e1l\u00e1sa
|
||||
label.ovm3.cluster=Nat\u00edv f\u00fcrt\u00f6z\u00e9s
|
||||
label.ovm.traffic.label=OVM traffic label
|
||||
label.ovs=OVS
|
||||
label.owned.public.ips=Owned Public IP Addresses
|
||||
label.owner.account=Owner Account
|
||||
label.owned.public.ips=Birtokolt publikus IP c\u00edmek
|
||||
label.owner.account=Tulajdonos sz\u00e1mla
|
||||
label.owner.domain=Owner Domain
|
||||
label.palo.alto.details=Palo Alto r\u00e9szletek
|
||||
label.PA.log.profile=Palo Alto log profil
|
||||
|
|
@ -1115,6 +1126,7 @@ label.perfect.forward.secrecy=Perfect Forward Secrecy
|
|||
label.persistent=Perzisztens
|
||||
label.physical.network=Fizikai h\u00e1l\u00f3zat
|
||||
label.physical.network.ID=Fizikai h\u00e1l\u00f3zat ID
|
||||
label.physical.network.name=A fizikai h\u00e1l\u00f3zat neve
|
||||
label.PING.CIFS.password=PING CIFS jelsz\u00f3
|
||||
label.PING.CIFS.username=PING CIFS felhaszn\u00e1l\u00f3
|
||||
label.PING.dir=PING Directory
|
||||
|
|
@ -1145,7 +1157,7 @@ label.primary.allocated=Els\u0151dleges t\u00e1r elk\u00fcl\u00f6n\u00edtve
|
|||
label.primary.network=Els\u0151dleges h\u00e1l\u00f3zat
|
||||
label.primary.storage.count=Primary Storage Pools
|
||||
label.primary.storage=Els\u0151dleges t\u00e1r
|
||||
label.primary.storage.limits=Primary Storage limits (GiB)
|
||||
label.primary.storage.limits=Els\u0151dleges t\u00e1r korl\u00e1tok (GiB)
|
||||
label.primary.used=Haszn\u00e1lt els\u0151dleges t\u00e1r
|
||||
label.private.Gateway=Priv\u00e1t \u00e1tj\u00e1r\u00f3
|
||||
label.private.interface=Private Interface
|
||||
|
|
@ -1153,6 +1165,7 @@ label.private.ip=Priv\u00e1t IP c\u00edm
|
|||
label.private.ip.range=Priv\u00e1t IP tartom\u00e1ny
|
||||
label.private.ips=Priv\u00e1t IP c\u00edmek
|
||||
label.privatekey=PKCS\#8 priv\u00e1t kulcs
|
||||
label.private.key=Priv\u00e1t kulcs
|
||||
label.private.network=Priv\u00e1t h\u00e1l\u00f3zat
|
||||
label.private.port=Priv\u00e1t port
|
||||
label.private.zone=Priv\u00e1t z\u00f3na
|
||||
|
|
@ -1171,20 +1184,21 @@ label.provider=Szolg\u00e1ltat\u00f3
|
|||
label.public.interface=Public Interface
|
||||
label.public.ip=Publikus IP c\u00edm
|
||||
label.public.ips=Publikus IP c\u00edmek
|
||||
label.public.key=Publikus kulcs
|
||||
label.public.load.balancer.provider=Publikus terhel\u00e9seloszt\u00f3 szolg\u00e1ltat\u00f3
|
||||
label.public.network=Publikus h\u00e1l\u00f3zat
|
||||
label.public.port=Publikus port
|
||||
label.public=Publikus
|
||||
label.public.traffic=Publikus forgalom
|
||||
label.public.traffic.vswitch.name=Publikus forgalom vSwitch n\u00e9v
|
||||
label.public.traffic.vswitch.type=Public Traffic vSwitch Type
|
||||
label.public.traffic.vswitch.type=Publikus forgalom vSwitch t\u00edpus
|
||||
label.public.zone=Publikus z\u00f3na
|
||||
label.purpose=Rendeltet\u00e9s
|
||||
label.Pxe.server.type=Pxe szerver t\u00edpus
|
||||
label.qos.type=QoS t\u00edpus
|
||||
label.quickview=Gyorsn\u00e9zet
|
||||
label.quiesce.vm=VM felf\u00fcggeszt\u00e9se
|
||||
label.quiet.time.sec=Quiet Time (in sec)
|
||||
label.quiet.time.sec=V\u00e1rakoz\u00e1s (mp)
|
||||
label.rbd.id=Cephx felhaszn\u00e1l\u00f3
|
||||
label.rbd.monitor=Ceph monitor
|
||||
label.rbd.pool=Ceph pool
|
||||
|
|
@ -1206,7 +1220,7 @@ label.reinstall.vm=VM \u00fajratelep\u00edt\u00e9se
|
|||
label.related=Kapcsol\u00f3d\u00f3
|
||||
label.release.account.lowercase=Release from account
|
||||
label.release.account=Release from Account
|
||||
label.release.dedicated.cluster=Release Dedicated Cluster
|
||||
label.release.dedicated.cluster=Dedik\u00e1lt f\u00fcrt elenged\u00e9se
|
||||
label.release.dedicated.host=Dedik\u00e1lt kiszolg\u00e1l\u00f3 elenged\u00e9se
|
||||
label.release.dedicated.pod=Dedik\u00e1lt pod elenged\u00e9se
|
||||
label.release.dedicated.vlan.range=Dedik\u00e1lt VLAN tartom\u00e1ny elenged\u00e9se
|
||||
|
|
@ -1223,13 +1237,15 @@ label.remove.pf=Port tov\u00e1bb\u00edt\u00f3 szab\u00e1ly elt\u00e1vol\u00edt\u
|
|||
label.remove.project.account=Sz\u00e1mla elt\u00e1vol\u00edt\u00e1sa a projektb\u0151l
|
||||
label.remove.region=R\u00e9gi\u00f3 elt\u00e1vol\u00edt\u00e1sa
|
||||
label.remove.rule=Szab\u00e1ly elt\u00e1vol\u00edt\u00e1sa
|
||||
label.remove.ssh.key.pair=SSH kulcsp\u00e1r elt\u00e1vol\u00edt\u00e1sa
|
||||
label.remove.static.nat.rule=Statikus NAT szab\u00e1ly elt\u00e1vol\u00edt\u00e1sa
|
||||
label.remove.static.route=Remove static route
|
||||
label.remove.this.physical.network=A fizikai h\u00e1l\u00f3zat elt\u00e1vol\u00edt\u00e1sa
|
||||
label.remove.tier=R\u00e9teg elt\u00e1vol\u00edt\u00e1sa
|
||||
label.remove.vm.from.lb=VM elt\u00e1vol\u00edt\u00e1sa terhel\u00e9seloszt\u00f3 szab\u00e1lyb\u00f3l
|
||||
label.remove.vm.load.balancer=VM elt\u00e1vol\u00edt\u00e1sa a terhel\u00e9seloszt\u00f3b\u00f3l
|
||||
label.remove.vmware.datacenter=VMware adatk\u00f6zpont elt\u00e1vol\u00edt\u00e1sa
|
||||
label.remove.vpc.offering=Remove VPC offering
|
||||
label.remove.vpc.offering=VPC aj\u00e1nlat t\u00f6rl\u00e9se
|
||||
label.remove.vpc=VPC elt\u00e1vol\u00edt\u00e1sa
|
||||
label.removing=T\u00f6rl\u00e9s
|
||||
label.removing.user=Felhaszn\u00e1l\u00f3 elt\u00e1vol\u00edt\u00e1sa
|
||||
|
|
@ -1242,13 +1258,15 @@ label.reserved.ip.range=Elk\u00fcl\u00f6n\u00edtett IP c\u00edmtartom\u00e1ny
|
|||
label.reserved.system.gateway=Reserved system gateway
|
||||
label.reserved.system.ip=Elk\u00fcl\u00f6n\u00edtett rendszer IP
|
||||
label.reserved.system.netmask=Elk\u00fcl\u00f6n\u00edtett rendszer h\u00e1l\u00f3zati maszk
|
||||
label.resetVM=Reset VM
|
||||
label.reset.ssh.key.pair.on.vm=SSH kulcsp\u00e1r \u00fajrabe\u00e1ll\u00edt\u00e1sa a VM-en
|
||||
label.reset.ssh.key.pair=SSH kulcsp\u00e1r \u00fajrabe\u00e1ll\u00edt\u00e1sa
|
||||
label.resetVM=VM \u00fajraind\u00edt\u00e1sa
|
||||
label.reset.VPN.connection=VPN kapcsolat \u00fajraind\u00edt\u00e1sa
|
||||
label.resize.new.offering.id=\u00daj aj\u00e1nlat
|
||||
label.resize.new.size=\u00daj m\u00e9ret (GB)
|
||||
label.resize.shrink.ok=Cs\u00f6kkent\u00e9s OK
|
||||
label.resource=Er\u0151forr\u00e1s
|
||||
label.resource.limit.exceeded=Resource Limit Exceeded
|
||||
label.resource.limit.exceeded=Er\u0151forr\u00e1s-korl\u00e1t t\u00fall\u00e9p\u00e9s
|
||||
label.resource.limits=Er\u0151forr\u00e1s korl\u00e1tok
|
||||
label.resource.name=Er\u0151forr\u00e1s n\u00e9v
|
||||
label.resources=Er\u0151forr\u00e1sok
|
||||
|
|
@ -1267,9 +1285,9 @@ label.root.disk.controller=Root disk controller
|
|||
label.root.disk.offering=Root Disk Offering
|
||||
label.root.disk.size=Root merevlemez m\u00e9ret
|
||||
label.router.vm.scaled.up=Router VM Scaled Up
|
||||
label.routing.host=Routing Host
|
||||
label.routing.host=Routing kiszolg\u00e1l\u00f3
|
||||
label.routing=\u00datvonalv\u00e1laszt\u00e1s
|
||||
label.rule.number=Rule Number
|
||||
label.rule.number=Szab\u00e1ly sz\u00e1m
|
||||
label.rules=Szab\u00e1lyok
|
||||
label.running.vms=Fut\u00f3 VM-ek
|
||||
label.s3.access_key=Hozz\u00e1f\u00e9r\u00e9si kulcs
|
||||
|
|
@ -1284,6 +1302,7 @@ label.s3.socket_timeout=Kapcsolat id\u0151t\u00fall\u00e9p\u00e9s
|
|||
label.s3.use_https=HTTPS haszn\u00e1lata
|
||||
label.saturday=Szombat
|
||||
label.save.and.continue=Ment\u00e9s \u00e9s folytat\u00e1s
|
||||
label.save.changes=V\u00e1ltoz\u00e1sok ment\u00e9se
|
||||
label.save=Ment\u00e9s
|
||||
label.saving.processing=Ment\u00e9s...
|
||||
label.scale.up.policy=SCALE UP POLICY
|
||||
|
|
@ -1294,7 +1313,7 @@ label.secondary.isolated.vlan.id=M\u00e1sodlagos izol\u00e1lt VLAN ID
|
|||
label.secondary.staging.store.details=Secondary Staging Store details
|
||||
label.secondary.staging.store=Secondary Staging Store
|
||||
label.secondary.storage.count=Secondary Storage Pools
|
||||
label.secondary.storage.details=Secondary storage details
|
||||
label.secondary.storage.details=M\u00e1sodlagos t\u00e1r r\u00e9szletek
|
||||
label.secondary.storage.limits=Secondary Storage limits (GiB)
|
||||
label.secondary.storage=M\u00e1sodlagos t\u00e1r
|
||||
label.secondary.storage.vm=Secondary storage VM
|
||||
|
|
@ -1315,7 +1334,7 @@ label.select.project=V\u00e1lassz projektet\!
|
|||
label.select.region=R\u00e9gi\u00f3 kiv\u00e1laszt\u00e1sa
|
||||
label.select.template=Sablon kiv\u00e1laszt\u00e1sa
|
||||
label.select.tier=V\u00e1lassz r\u00e9teget\!
|
||||
label.select-view=Select view
|
||||
label.select-view=N\u00e9zet
|
||||
label.select.vm.for.static.nat=V\u00e1lassz VM-et a statikus NAT-hoz
|
||||
label.sent=Elk\u00fcld\u00f6tt
|
||||
label.server=Szerver
|
||||
|
|
@ -1324,7 +1343,7 @@ label.service.offering=Szolg\u00e1ltat\u00e1s aj\u00e1nlat
|
|||
label.services=Szolg\u00e1ltat\u00e1sok
|
||||
label.service.state=Szolg\u00e1ltat\u00e1s \u00e1llapot
|
||||
label.session.expired=A munkamenet lej\u00e1rt
|
||||
label.set.default.NIC=Set default NIC
|
||||
label.set.default.NIC=Alap\u00e9rtelmezett NIC be\u00e1ll\u00edt\u00e1sa
|
||||
label.settings=Be\u00e1ll\u00edt\u00e1sok
|
||||
label.setup=Be\u00e1ll\u00edt\u00e1sok
|
||||
label.setup.network=H\u00e1l\u00f3zat be\u00e1ll\u00edt\u00e1sa
|
||||
|
|
@ -1345,8 +1364,7 @@ label.smb.username=SMB felhaszn\u00e1l\u00f3n\u00e9v
|
|||
label.snapshot.limits=Pillanatfelv\u00e9tel korl\u00e1tok
|
||||
label.snapshot.name=Pillanatfelv\u00e9tel n\u00e9v
|
||||
label.snapshot=Pillanatfelv\u00e9tel
|
||||
label.snapshot.schedule=Ism\u00e9tl\u0151d\u0151 pillanatfelv\u00e9telek be\u00e1ll\u00edt\u00e1sa
|
||||
label.snapshot.s=Pillanatfelv\u00e9tel(ek)
|
||||
label.snapshot.s=Pillanatfelv\u00e9telek
|
||||
label.snapshots=Pillanatfelv\u00e9telek
|
||||
label.SNMP.community=SNMP Community
|
||||
label.SNMP.port=SNMP Port
|
||||
|
|
@ -1361,6 +1379,9 @@ label.specify.vxlan=VXLAN megad\u00e1sa
|
|||
label.SR.name=SR Name-Label
|
||||
label.srx.details=SRX r\u00e9szletek
|
||||
label.srx=SRX
|
||||
label.ssh.key.pair.details=SSH kucsp\u00e1r r\u00e9szletei
|
||||
label.ssh.key.pair=SSH kulcsp\u00e1r
|
||||
label.ssh.key.pairs=SSH kulcsp\u00e1rok
|
||||
label.standard.us.keyboard=Amerikai (USA) szabv\u00e1nyos billenty\u0171zet
|
||||
label.start.IP=Kezd\u0151 IP
|
||||
label.start.lb.vm=Terhel\u00e9seloszt\u00f3 VM ind\u00edt\u00e1sa
|
||||
|
|
@ -1387,7 +1408,7 @@ label.step.5=5. l\u00e9p\u00e9s
|
|||
label.step.5.title=5. l\u00e9p\u00e9s\: <strong>Ellen\u0151rz\u00e9s</strong>
|
||||
label.stickiness.method=Stickiness method
|
||||
label.stickiness=Stickiness
|
||||
label.sticky.cookie-name=Cookie name
|
||||
label.sticky.cookie-name=Cookie n\u00e9v
|
||||
label.sticky.domain=Dom\u00e9n
|
||||
label.sticky.expire=Lej\u00e1rat
|
||||
label.sticky.holdtime=Hold time
|
||||
|
|
@ -1397,11 +1418,11 @@ label.sticky.mode=M\u00f3d
|
|||
label.sticky.name=Sticky Name
|
||||
label.sticky.nocache=Nincs gyors\u00edt\u00f3t\u00e1r
|
||||
label.sticky.postonly=Post only
|
||||
label.sticky.prefix=Prefix
|
||||
label.sticky.prefix=El\u0151tag
|
||||
label.sticky.request-learn=Request learn
|
||||
label.sticky.tablesize=T\u00e1bla m\u00e9ret
|
||||
label.stop.lb.vm=Terhel\u00e9seloszt\u00f3 VM le\u00e1ll\u00edt\u00e1sa
|
||||
label.stopped.vms=Stopped VMs
|
||||
label.stopped.vms=Le\u00e1ll\u00edtott VM-ek
|
||||
label.stop=\u00c1lj
|
||||
label.storage.pool=Storage Pool
|
||||
label.storage.tags=T\u00e1r c\u00edmk\u00e9k
|
||||
|
|
@ -1410,12 +1431,12 @@ label.storage=T\u00e1r
|
|||
label.storage.type=T\u00e1r t\u00edpus
|
||||
label.subdomain.access=Subdomain Access
|
||||
label.submit=Elk\u00fcld\u00e9s
|
||||
label.submitted.by=[Submitted by\: <span id\="submitted_by"></span>]
|
||||
label.submitted.by=[Bek\u00fcld\u0151\: <span id\="submitted_by"></span>]
|
||||
label.succeeded=Siker\u00fclt
|
||||
label.sunday=Vas\u00e1rnap
|
||||
label.super.cidr.for.guest.networks=Super CIDR for Guest Networks
|
||||
label.supported.services=T\u00e1mogatott szolg\u00e1ltat\u00e1sok
|
||||
label.supported.source.NAT.type=Supported Source NAT type
|
||||
label.supported.source.NAT.type=T\u00e1mogatott forr\u00e1s NAT t\u00edpus
|
||||
label.supportsstrechedl2subnet=Supports Streched L2 Subnet
|
||||
label.suspend.project=Projekt felf\u00fcggeszt\u00e9se
|
||||
label.switch.type=Switch t\u00edpus
|
||||
|
|
@ -1425,12 +1446,12 @@ label.system.offering=Rendszer aj\u00e1nlat
|
|||
label.system.service.offering=Rendszer szolg\u00e1ltat\u00e1s aj\u00e1nlat
|
||||
label.system.vm.details=Rendszer VM r\u00e9szletek
|
||||
label.system.vm=Rendszer VM
|
||||
label.system.vm.scaled.up=System VM Scaled Up
|
||||
label.system.vm.scaled.up=Rendszer VM felm\u00e9retezve
|
||||
label.system.vms=Rendszer VM-ek
|
||||
label.system.vm.type=Rendszer VM t\u00edpus
|
||||
label.system.wide.capacity=Rendszer-szint\u0171 kapac\u00edt\u00e1s
|
||||
label.tagged=Cimk\u00e9zve
|
||||
label.tag.key=Tag Key
|
||||
label.tag.key=C\u00edmke kulcs
|
||||
label.tags=Cimk\u00e9k
|
||||
label.tag.value=C\u00edmke \u00e9rt\u00e9k
|
||||
label.target.iqn=C\u00e9l IQN
|
||||
|
|
@ -1464,9 +1485,9 @@ label.total.storage=\u00d6sszes t\u00e1r
|
|||
label.total.virtual.routers=Total of Virtual Routers
|
||||
label.total.virtual.routers.upgrade=Total of Virtual Routers that require upgrade
|
||||
label.total.vms=\u00d6sszes VM
|
||||
label.traffic.label=Traffic label
|
||||
label.traffic.types=Traffic Types
|
||||
label.traffic.type=Traffic Type
|
||||
label.traffic.label=Forgalom c\u00edmke
|
||||
label.traffic.type=Forgalom t\u00edpus
|
||||
label.traffic.types=Forgalom t\u00edpusok
|
||||
label.tuesday=Kedd
|
||||
label.type.id=T\u00edpus ID
|
||||
label.type.lower=t\u00edpus
|
||||
|
|
@ -1484,6 +1505,10 @@ label.updating=Updating
|
|||
label.upgrade.required=Frissit\u00e9sre van sz\u00fcks\u00e9g
|
||||
label.upgrade.router.newer.template=Upgrade Router to Use Newer Template
|
||||
label.upload=Felt\u00f6lt\u00e9s
|
||||
label.upload.from.local=Felt\u00f6lt\u00e9s
|
||||
label.upload.template.from.local=Sablon felt\u00f6lt\u00e9se
|
||||
label.upload.volume.from.local=K\u00f6tet felt\u00f6lt\u00e9se
|
||||
label.upload.volume.from.url=K\u00f6tet felt\u00f6lt\u00e9se URL-r\u0151l
|
||||
label.upload.volume=K\u00f6tet felt\u00f6lt\u00e9se
|
||||
label.url=URL
|
||||
label.usage.interface=Usage Interface
|
||||
|
|
@ -1497,7 +1522,7 @@ label.username.lower=felhaszn\u00e1l\u00f3n\u00e9v
|
|||
label.users=Felhaszn\u00e1l\u00f3k
|
||||
label.user.vm=Felhaszn\u00e1l\u00f3i VM
|
||||
label.use.vm.ips=VM IP c\u00edmek haszn\u00e1lata
|
||||
label.use.vm.ip=Use VM IP\:
|
||||
label.use.vm.ip=VM IP c\u00edm haszn\u00e1lata\:
|
||||
label.value=\u00c9rt\u00e9k
|
||||
label.vcdcname=vCenter DC n\u00e9v
|
||||
label.vcenter.cluster=vCenter f\u00fcrt
|
||||
|
|
@ -1563,7 +1588,7 @@ label.vm.state=VM \u00e1llapot
|
|||
label.vm.stop=\u00c1lj
|
||||
label.vms=VM-ek
|
||||
label.vmware.datacenter.id=VMware adatk\u00f6zpont ID
|
||||
label.vmware.datacenter.name=VMware datacenter Name
|
||||
label.vmware.datacenter.name=VMware adatk\u00f6zpont n\u00e9v
|
||||
label.vmware.datacenter.vcenter=VMware datacenter vcenter
|
||||
label.vmware.traffic.label=VMware traffic label
|
||||
label.vnet.id=VLAN/VNI ID
|
||||
|
|
@ -1578,13 +1603,13 @@ label.volume.limits=K\u00f6teg korl\u00e1tok
|
|||
label.volume.migrated=K\u00f6tet \u00e1tk\u00f6lt\u00f6ztetve
|
||||
label.volume.name=K\u00f6tet n\u00e9v
|
||||
label.volumes=K\u00f6tetek
|
||||
label.vpc.distributedvpcrouter=Distributed VPC Router
|
||||
label.vpc.distributedvpcrouter=Elosztott VPC Router
|
||||
label.vpc.id=VPC ID
|
||||
label.VPC.limits=VPC korl\u00e1tok
|
||||
label.vpc.offering.details=VPC aj\u00e1nlat r\u00e9szletei
|
||||
label.vpc.offering=VPC aj\u00e1nlat
|
||||
label.VPC.router.details=VPC router details
|
||||
label.vpc.supportsregionlevelvpc=Supports Region Level VPC
|
||||
label.VPC.router.details=VPC router r\u00e9szletek
|
||||
label.vpc.supportsregionlevelvpc=R\u00e9gi\u00f3-szint\u0171 VPC-t t\u00e1mogat
|
||||
label.vpc.virtual.router=VPC virtu\u00e1lis router
|
||||
label.vpc=VPC
|
||||
label.VPN.connection=VPN kapcsolat
|
||||
|
|
@ -1626,10 +1651,10 @@ label.zone.step.4.title=4. l\u00e9p\u00e9s\: <strong>IP c\u00edmtartom\u00e1ny f
|
|||
label.zones=Z\u00f3n\u00e1k
|
||||
label.zone.type=Z\u00f3na t\u00edpus
|
||||
label.zone.wide=Eg\u00e9sz z\u00f3n\u00e1ra kiterjed\u0151
|
||||
label.zoneWizard.trafficType.guest=Guest\: Traffic between end-user virtual machines
|
||||
label.zoneWizard.trafficType.management=Management\: Traffic between CloudStack\\\\'s internal resources, including any components that communicate with the Management Server, such as hosts and CloudStack system VMs
|
||||
label.zoneWizard.trafficType.public=Public\: Traffic between the internet and virtual machines in the cloud.
|
||||
label.zoneWizard.trafficType.storage=Storage\: Traffic between primary and secondary storage servers, such as VM templates and snapshots
|
||||
label.zoneWizard.trafficType.guest=Vend\u00e9g\: forgalom v\u00e9gfelhaszn\u00e1l\u00f3i virtu\u00e1lis g\u00e9pek k\u00f6z\u00f6tt
|
||||
label.zoneWizard.trafficType.management=Vez\u00e9rl\u00e9s\: forgalom a CloudStack felh\u0151 er\u0151forr\u00e1sai k\u00f6z\u00f6tt, bele\u00e9rtve azokat a komponenseket, amelyek a vez\u00e9rl\u0151 szerverrel kommunik\u00e1lnak, mint a kiszolg\u00e1l\u00f3k \u00e9s a rendszer VM-ek
|
||||
label.zoneWizard.trafficType.public=Publikus\: forgalom az internet \u00e9s a felh\u0151 virtu\u00e1lis g\u00e9pei k\u00f6z\u00f6tt
|
||||
label.zoneWizard.trafficType.storage=T\u00e1r\: forgalom az els\u0151dleges \u00e9s m\u00e1sodlagos t\u00e1r szerverek k\u00f6z\u00f6tt, p\u00e9ld\u00e1ul VM sablonok \u00e9s pillanatfelv\u00e9telek
|
||||
label.zone=Z\u00f3na
|
||||
managed.state=Managed State
|
||||
message.acquire.ip.nic=Er\u0151s\u00edtsd meg, hogy \u00faj m\u00e1sodlagos IP c\u00edmet k\u00e9rsz ehhez a NIC-hez\!<br/>Megjegyz\u00e9s\: manu\u00e1lisan kell be\u00e1ll\u00edtanod a frissen beszerzett m\u00e1sodlagos IP c\u00edmet a virtu\u00e1lis g\u00e9pben.
|
||||
|
|
@ -1702,7 +1727,7 @@ message.action.stop.instance=Er\u0151s\u00edtsd meg, hogy le akarod \u00e1ll\u00
|
|||
message.action.stop.router=Minden ezzel a routerrel kapcsolatos szolg\u00e1ltat\u00e1s megszakad. Er\u0151s\u00edtsd meg, hogy le akarod \u00e1ll\u00edtani ezt a routert\!
|
||||
message.action.stop.systemvm=Er\u0151s\u00edtsd meg, hogy le akarod \u00e1ll\u00edtani ezt a rendszer VM-et\!
|
||||
message.action.take.snapshot=Er\u0151s\u00edtsd meg, hogy pillanatfelv\u00e9telt k\u00e9rsz err\u0151l a k\u00f6tetr\u0151l\!
|
||||
message.action.unmanage.cluster=Please confirm that you want to unmanage the cluster.
|
||||
message.action.unmanage.cluster=Er\u0151s\u00edtsd meg, hogy megszak\u00edtod a f\u00fcrt vez\u00e9rl\u00e9s\u00e9t\!
|
||||
message.action.vmsnapshot.delete=Er\u0151s\u00edtsd meg, hogy t\u00f6r\u00f6lni akarod ezt a VM pillanatfelv\u00e9telt\!
|
||||
message.action.vmsnapshot.revert=Revert VM snapshot
|
||||
message.activate.project=Biztosan aktiv\u00e1lni szeretn\u00e9d ezt a projektet?
|
||||
|
|
@ -1713,38 +1738,39 @@ message.add.domain=Please specify the subdomain you want to create under this do
|
|||
message.added.new.nuage.vsp.controller=\u00daj Nicira Vsp vez\u00e9rl\u0151 felv\u00e9ve
|
||||
message.added.vpc.offering=VPC aj\u00e1nlat felv\u00e9ve
|
||||
message.add.firewall=T\u0171zfal felv\u00e9tele a z\u00f3n\u00e1ba
|
||||
message.add.guest.network=Please confirm that you would like to add a guest network
|
||||
message.add.guest.network=Er\u0151s\u00edtsd meg, hogy vend\u00e9g h\u00e1l\u00f3zatot szeretn\u00e9l felvenni\!
|
||||
message.add.host=Add meg a k\u00f6vetkez\u0151 adatokat az \u00faj kiszolg\u00e1l\u00f3 felv\u00e9tel\u00e9hez
|
||||
message.adding.host=Kiszolg\u00e1l\u00f3 felv\u00e9tele
|
||||
message.adding.Netscaler.device=Netscaler eszk\u00f6z felv\u00e9tele
|
||||
message.adding.Netscaler.provider=Netscaler szolg\u00e1ltat\u00f3 felv\u00e9tele
|
||||
message.add.ip.range=Add an IP range to public network in zone
|
||||
message.add.ip.range.direct.network=Add an IP range to direct network <b><span id\="directnetwork_name"></span></b> in zone <b><span id\="zone_name"></span></b>
|
||||
message.add.ip.range.to.pod=<p>Add an IP range to pod\: <b><span id\="pod_name_label"></span></b></p>
|
||||
message.add.ip.range=IP tartom\u00e1ny felv\u00e9tele a z\u00f3na publikus h\u00e1l\u00f3zat\u00e1hoz
|
||||
message.add.ip.range.to.pod=<p>IP tartom\u00e1ny felv\u00e9tele a <b><span id\="pod_name_label"></span></b> pod-hoz</p>
|
||||
message.additional.networks.desc=V\u00e1laszd ki a tov\u00e1bbi h\u00e1l\u00f3zatokat, amelyhez a p\u00e9ld\u00e1ny csatlakozni fog\!
|
||||
message.add.load.balancer=Terhel\u00e9seloszt\u00f3 felv\u00e9tele a z\u00f3n\u00e1ba
|
||||
message.add.load.balancer.under.ip=The load balancer rule has been added under IP\:
|
||||
message.add.network=Add a new network for zone\: <b><span id\="zone_name"></span></b>
|
||||
message.add.network=H\u00e1l\u00f3zat felv\u00e9tele a <b><span id\="zone_name"></span></b> z\u00f3n\u00e1ban
|
||||
message.add.new.gateway.to.vpc=Please specify the information to add a new gateway to this VPC.
|
||||
message.add.pod=Add a new pod for zone <b><span id\="add_pod_zone_name"></span></b>
|
||||
message.add.pod.during.zone.creation=Minden z\u00f3n\u00e1nak egy vagy t\u00f6bb pod-ot kell tartalmaznia. Vegy\u00fck fel az els\u0151 pod-ot\! A pod tartalmaz kiszolg\u00e1l\u00f3kat \u00e9s els\u0151dleges t\u00e1r szervereket, amelyeket a k\u00f6vetkez\u0151 l\u00e9p\u00e9sekben vesz\u00fcnk majd fel. El\u0151sz\u00f6r \u00e1ll\u00edts be egy elk\u00fcl\u00f6n\u00edtett IP c\u00edmtartom\u00e1nyt a CloudStack bels\u0151 forgalm\u00e1nak. A c\u00edmtartom\u00e1nynak egyedinek kell lennie a felh\u0151ben.
|
||||
message.add.pod=\u00daj pod felv\u00e9tele a <b><span id\="add_pod_zone_name"></span></b> z\u00f3n\u00e1ban
|
||||
message.add.primary=Please specify the following parameters to add a new primary storage
|
||||
message.add.primary.storage=Add a new Primary Storage for zone <b><span id\="zone_name"></span></b>, pod <b><span id\="pod_name"></span></b>
|
||||
message.add.region=Please specify the required information to add a new region.
|
||||
message.add.secondary.storage=Add a new storage for zone <b><span id\="zone_name"></span></b>
|
||||
message.add.primary.storage=\u00daj els\u0151dleges t\u00e1r felv\u00e9tele a <b><span id\="zone_name"></span></b> z\u00f3n\u00e1ban a <b><span id\="pod_name"></span> pod-hoz</b>
|
||||
message.add.region=Add meg az inform\u00e1ci\u00f3kat az \u00faj r\u00e9gi\u00f3 felv\u00e9tel\u00e9hez\!
|
||||
message.add.secondary.storage=\u00daj t\u00e1r felv\u00e9tele a <b><span id\="zone_name"></span> z\u00f3n\u00e1hoz</b>
|
||||
message.add.service.offering=T\u00f6ltsd ki a k\u00f6vetkez\u0151 adatokat \u00faj sz\u00e1m\u00edt\u00e1si aj\u00e1nlat felv\u00e9tel\u00e9hez
|
||||
message.add.system.service.offering=T\u00f6ltsd ki a k\u00f6vetkez\u0151 adatokat \u00faj rendszer szolg\u00e1ltat\u00e1s aj\u00e1nlat felv\u00e9tel\u00e9hez
|
||||
message.add.template=Add meg a k\u00f6vetkez\u0151 adatokat \u00faj sablon l\u00e9trehoz\u00e1s\u00e1hoz
|
||||
message.add.volume=T\u00f6ltsd ki a k\u00f6vetkez\u0151 adatokat \u00faj k\u00f6tet l\u00e9trehoz\u00e1s\u00e1hoz
|
||||
message.add.VPN.gateway=Er\u0151s\u00edtsd meg, hogy \u00faj VPN \u00e1tj\u00e1r\u00f3t akarsz felvenni\!
|
||||
message.admin.guide.read=For VMware-based VMs, please read the dynamic scaling section in the admin guide before scaling. Would you like to continue?\\,
|
||||
message.admin.guide.read=VMware-alap\u00fa VM-ek eset\u00e9ben k\u00e9rlek olvasd el a dinakikus sk\u00e1l\u00e1z\u00e1sr\u00f3l sz\u00f3l\u00f3 fejezetet\! Szeretn\u00e9d folytatni?\\,
|
||||
message.advanced.mode.desc=Akkor v\u00e1laszd ezt a h\u00e1l\u00f3zat modellt, ha szeretn\u00e9d haszn\u00e1lni a VLAN t\u00e1mogat\u00e1st. Ez a h\u00e1l\u00f3zat modell biztos\u00edtja a legnagyobb rugalmass\u00e1got \u00e9s lehet\u0151v\u00e9 teszi, hogy a rendszergazd\u00e1k olyan aj\u00e1nlatokat biztos\u00edtsanak, mint a t\u0171zfalak, VPN vagy terhel\u00e9seloszt\u00f3k valamint a direkt \u00e9s virtu\u00e1lis h\u00e1l\u00f3zatok.
|
||||
message.advanced.security.group=V\u00e1laszd ezt, ha biztons\u00e1gi csoportokat akarsz haszn\u00e1lni a vend\u00e9g VM izol\u00e1ci\u00f3hoz\!
|
||||
message.advanced.virtual=Choose this if you wish to use zone-wide VLANs to provide guest VM isolation.
|
||||
message.after.enable.s3=S3-backed Secondary Storage configured. Note\: When you leave this page, you will not be able to re-configure S3 again.
|
||||
message.after.enable.swift=Swift configured. Note\: When you leave this page, you will not be able to re-configure Swift again.
|
||||
message.advanced.virtual=V\u00e1laszd ezt, ha z\u00f3na-szint\u0171 VLAN-okat szeretn\u00e9l haszn\u00e1lni a vend\u00e9g VM-ek izol\u00e1ci\u00f3j\u00e1ra\!
|
||||
message.after.enable.s3=Az S3-alap\u00fa m\u00e1sodlagos t\u00e1r konfigur\u00e1ci\u00f3ja k\u00e9sz. Megjegyz\u00e9s\: miut\u00e1n elhagytad ezt az oldalt, nem tudod majd az S3-at ism\u00e9t konfigur\u00e1lni.
|
||||
message.after.enable.swift=A Swift konfigur\u00e1ci\u00f3ja k\u00e9sz. Megjegyz\u00e9s\: miut\u00e1n elhagytad ezt az oldalt, nem tudod majd \u00fajrakonfigur\u00e1lni a Swift-et\!
|
||||
message.alert.state.detected=Alert state detected
|
||||
message.allow.vpn.access=Add meg a VPN felhaszn\u00e1l\u00f3 nev\u00e9t \u00e9s jelszav\u00e1t
|
||||
message.apply.snapshot.policy=You have successfully updated your current snapshot policy.
|
||||
message.apply.snapshot.policy=Sikeresen m\u00f3dos\u00edtottad a jelenlegi pillanatfelv\u00e9tel szab\u00e1lyzatodat\!
|
||||
message.attach.iso.confirm=Er\u0151s\u00edtsd meg, hogy az ISO-t ehhez a virtu\u00e1lis g\u00e9phez akarod csatolni\!
|
||||
message.attach.volume=T\u00f6ltsd ki a k\u00f6vetkez\u0151 adatokat a k\u00f6tet csatlakoztat\u00e1s\u00e1hoz\! Ha Windows-alap\u00fa virtu\u00e1lis g\u00e9phez csatlakoztatsz merevlemezt, akkor \u00fajra kell ind\u00edtanod a p\u00e9ld\u00e1nyt ahhoz, hogy l\u00e1sd a merevlemezt.
|
||||
message.basic.mode.desc=Akkor v\u00e1laszd ezt a h\u00e1l\u00f3zati modellt, ha <b>*<u>nem</u>*</b> akarsz VLAN t\u00e1mogat\u00e1st bekapcsolni. Ezen a h\u00e1l\u00f3zaton minden p\u00e9ld\u00e1ny k\u00f6zvetlen\u00fcl a h\u00e1l\u00f3zatt\u00f3l kap IP c\u00edmet \u00e9s a biztons\u00e1gi csoportok szolg\u00e1ltatnak biztons\u00e1got \u00e9s szegreg\u00e1ci\u00f3t.
|
||||
|
|
@ -1753,13 +1779,13 @@ message.change.password=V\u00e1ltoztass jelsz\u00f3t\!
|
|||
message.cluster.dedicated=F\u00fcrt dedik\u00e1lva
|
||||
message.cluster.dedication.released=F\u00fcrt dedik\u00e1l\u00e1s elengedve
|
||||
message.configure.all.traffic.types=T\u00f6bb fizikai h\u00e1l\u00f3zatod van. Kattints a \\'Szerkeszt\u00e9s\\' gombra \u00e9s \u00e1ll\u00edts be c\u00edmk\u00e9ket minden egyes forgalom t\u00edpushoz\!
|
||||
message.configure.ldap=Please confirm you would like to configure LDAP.
|
||||
message.configure.ldap=Er\u0151s\u00edtsd meg, hogy szeretn\u00e9l LDAP-t konfigur\u00e1lni\!
|
||||
message.configuring.guest.traffic=Vend\u00e9g forgalom konfigur\u00e1l\u00e1sa
|
||||
message.configuring.physical.networks=Fizikai h\u00e1l\u00f3zatok konfigur\u00e1l\u00e1sa
|
||||
message.configuring.public.traffic=Publikus forgalom konfigur\u00e1l\u00e1sa
|
||||
message.configuring.storage.traffic=T\u00e1r forgalom konfigur\u00e1l\u00e1sa
|
||||
message.confirm.action.force.reconnect=Er\u0151s\u00edtsd meg, hogy \u00fajrakapcsol\u00f3dni akarsz a kiszolg\u00e1l\u00f3hoz\!
|
||||
message.confirm.add.vnmc.provider=Please confirm you would like to add the VNMC provider.
|
||||
message.confirm.add.vnmc.provider=Er\u0151s\u00edtsd meg, hogy fel szeretn\u00e9d venni a VNMC szolg\u00e1ltat\u00f3t.
|
||||
message.confirm.archive.alert=Er\u0151s\u00edtsd meg, hogy archiv\u00e1lni akarod ezt a riaszt\u00e1st\!
|
||||
message.confirm.archive.event=Er\u0151s\u00edtsd meg, hogy archiv\u00e1lni szeretn\u00e9d az esem\u00e9nyt\!
|
||||
message.confirm.archive.selected.alerts=Er\u0151s\u00edtsd meg, hogy le akarod archiv\u00e1lni a kiv\u00e1lasztott riaszt\u00e1sokat\!
|
||||
|
|
@ -1777,7 +1803,7 @@ message.confirm.delete.baremetal.rack.configuration=Er\u0151s\u00edtsd meg, hogy
|
|||
message.confirm.delete.BigSwitchBcf=Er\u0151s\u00edtsd meg, hogy t\u00f6r\u00f6lni szeretn\u00e9d ezt a BigSwitch BCF vez\u00e9rl\u0151t\!
|
||||
message.confirm.delete.BrocadeVcs=Er\u0151s\u00edtsd meg, hogy t\u00f6r\u00f6lni szeretn\u00e9d a Brocade Vcs Switch-et
|
||||
message.confirm.delete.ciscoASA1000v=Er\u0151s\u00edtsd meg, hogy t\u00f6r\u00f6lni akarod a CiscoASA1000v-t
|
||||
message.confirm.delete.ciscovnmc.resource=Please confirm you want to delete CiscoVNMC resource
|
||||
message.confirm.delete.ciscovnmc.resource=Er\u0151s\u00edtsd meg, hogy t\u00f6r\u00f6lni akarod a CiscoVNMC er\u0151forr\u00e1st\!
|
||||
message.confirm.delete.F5=Er\u0151s\u00edtsd meg, hogy t\u00f6r\u00f6lni szeretn\u00e9d az F5-\u00f6t
|
||||
message.confirm.delete.internal.lb=Er\u0151s\u00edtsd meg, hogy t\u00f6r\u00f6lni akarod ezt a bels\u0151 LB-t\!
|
||||
message.confirm.delete.NetScaler=Er\u0151s\u00edtsd meg, hogy t\u00f6r\u00f6lni szeretn\u00e9d a NetScaler-t
|
||||
|
|
@ -1790,12 +1816,12 @@ message.confirm.destroy.router=Er\u0151s\u00edtsd meg, hogy el akarod puszt\u00e
|
|||
message.confirm.disable.host=Er\u0151s\u00edtsd meg, hogy ki akarod kapcsolni a kiszolg\u00e1l\u00f3t
|
||||
message.confirm.disable.network.offering=Biztos vagy abban, hogy ki akarod kapcsolni ezt a h\u00e1l\u00f3zat aj\u00e1nlatot?
|
||||
message.confirm.disable.provider=Er\u0151s\u00edtsd meg, hogy ki akarod kapcsolni ezt a szolg\u00e1ltat\u00f3t
|
||||
message.confirm.disable.vnmc.provider=Please confirm you would like to disable the VNMC provider.
|
||||
message.confirm.disable.vnmc.provider=Er\u0151s\u00edtsd meg, hogy ki szeretn\u00e9d kapcsolni a VNMC szolg\u00e1ltat\u00f3t\!
|
||||
message.confirm.disable.vpc.offering=Biztos vagy abban, hogy ki akarod kapcsolni ezt a VPC aj\u00e1nlatot?
|
||||
message.confirm.enable.host=Er\u0151s\u00edtsd meg, hogy be akarod kapcsolni a kiszolg\u00e1l\u00f3t
|
||||
message.confirm.enable.network.offering=Biztos vagy abban, hogy be akarod kapcsolni ezt a h\u00e1l\u00f3zati aj\u00e1nlatot?
|
||||
message.confirm.enable.provider=Er\u0151s\u00edtsd meg, hogy be szeretn\u00e9d kapcsolni ezt a szolg\u00e1ltat\u00f3t
|
||||
message.confirm.enable.vnmc.provider=Please confirm you would like to enable the VNMC provider.
|
||||
message.confirm.enable.vnmc.provider=Er\u0151s\u00edtsd meg, hogy be szeretn\u00e9d kapcsolni a VNMC szolg\u00e1ltat\u00f3t\!
|
||||
message.confirm.enable.vpc.offering=Biztos vagy abban, hogy be akarod kapcsolni ezt a VPC aj\u00e1nlatot?
|
||||
message.confirm.join.project=Er\u0151s\u00edtsd meg, hogy csatlakozni szeretn\u00e9l a projekthez
|
||||
message.confirm.migrate.volume=El akarod k\u00f6lt\u00f6ztetni ezt a k\u00f6tetet?
|
||||
|
|
@ -1804,7 +1830,7 @@ message.confirm.release.dedicated.cluster=El akarod engedni ezt a dedik\u00e1lt
|
|||
message.confirm.release.dedicated.host=El akarod engedni ezt a dedik\u00e1lt kiszolg\u00e1l\u00f3t?
|
||||
message.confirm.release.dedicated.pod=El akarod engedni ezt a dedik\u00e1lt pod-ot?
|
||||
message.confirm.release.dedicated.zone=El akarod engedni ezt a dedik\u00e1lt z\u00f3n\u00e1t?
|
||||
message.confirm.release.dedicate.vlan.range=Please confirm you want to release dedicated VLAN range
|
||||
message.confirm.release.dedicate.vlan.range=Er\u0151s\u00edtsd meg, hogy elengeded a dedik\u00e1lt VLAN tartom\u00e1nyt\!
|
||||
message.confirm.remove.event=Biztosan t\u00f6r\u00f6lni szeretn\u00e9d ezt az esem\u00e9nyt?
|
||||
message.confirm.remove.IP.range=Er\u0151s\u00edtsd meg, hogy el akarod t\u00e1vol\u00edtani ezt az IP tartom\u00e1nyt
|
||||
message.confirm.remove.load.balancer=Er\u0151s\u00edtsd meg, hogy el akarod t\u00e1vol\u00edtani a VM-et a terhel\u00e9seloszt\u00f3r\u00f3l\!
|
||||
|
|
@ -1819,10 +1845,10 @@ message.confirm.scale.up.system.vm=Biztosan fel akarod m\u00e9retezni a rendszer
|
|||
message.confirm.shutdown.provider=Er\u0151s\u00edtsd meg, hogy le akarod \u00e1ll\u00edtani ezt a szolg\u00e1ltat\u00f3t
|
||||
message.confirm.start.lb.vm=Er\u0151s\u00edtsd meg, hogy el akarod ind\u00edtani az LB VM-et\!
|
||||
message.confirm.stop.lb.vm=Er\u0151s\u00edtsd meg, hogy le akarod \u00e1ll\u00edtani az LB VM-et\!
|
||||
message.confirm.upgrade.router.newer.template=Please confirm that you want to upgrade router to use newer template
|
||||
message.confirm.upgrade.router.newer.template=Er\u0151s\u00edtsd meg, hogy a routert \u00faj sablonnal akarod friss\u00edteni\!
|
||||
message.confirm.upgrade.routers.account.newtemplate=Er\u0151s\u00edtsd meg, hogy minden a sz\u00e1mla minden router\u00e9t friss\u00edteni akarod az \u00faj sablonnal\!
|
||||
message.confirm.upgrade.routers.cluster.newtemplate=Please confirm that you want to upgrade all routers in this cluster to use newer template
|
||||
message.confirm.upgrade.routers.newtemplate=Please confirm that you want to upgrade all routers in this zone to use newer template
|
||||
message.confirm.upgrade.routers.newtemplate=Er\u0151s\u00edtsd meg, hogy a z\u00f3na minden router\u00e9t friss\u00edteni akarod \u00faj sablonnal\!
|
||||
message.confirm.upgrade.routers.pod.newtemplate=Please confirm that you want to upgrade all routers in this pod to use newer template
|
||||
message.copy.iso.confirm=Er\u0151s\u00edtsd meg, hogy az ISO-t m\u00e1solni akarod\:
|
||||
message.copy.template=A <b id\="copy_template_name_text">XXX</b> sablon m\u00e1sol\u00e1sa a <b id\="copy_template_source_zone_text"></b> z\u00f3n\u00e1b\u00f3l a
|
||||
|
|
@ -1852,8 +1878,11 @@ message.delete.VPN.gateway=Er\u0151s\u00edtsd meg, hogy t\u00f6r\u00f6lni akarod
|
|||
message.desc.advanced.zone=\u00d6sszetettebb h\u00e1l\u00f3zati topol\u00f3gi\u00e1khoz. Ez a h\u00e1l\u00f3zat modell biztos\u00edtja a legnagyobb rugalmass\u00e1got a vend\u00e9g h\u00e1l\u00f3zatok fel\u00e9p\u00edt\u00e9s\u00e9ben \u00e9s olyan h\u00e1l\u00f3zati aj\u00e1nlatokat tesz lehet\u0151v\u00e9, mint a t\u0171zfalak, VPN vagy terhel\u00e9seloszt\u00f3k.
|
||||
message.desc.basic.zone=Adj meg egy h\u00e1l\u00f3zatot, amelyen minden egyes VM p\u00e9ld\u00e1ny k\u00f6zvetlen\u00fcl a h\u00e1l\u00f3zatt\u00f3l kap IP c\u00edmet. A vend\u00e9g rendszerek izol\u00e1ci\u00f3j\u00e1t 3. r\u00e9teg-b\u00e9li megold\u00e1sokkal, mint p\u00e9ld\u00e1ul biztons\u00e1gi csoportokkal (IP c\u00edm filterez\u00e9s) oldhat\u00f3 meg.
|
||||
message.desc.cluster=Minden pod-nak tartalmaznia kell egy vagy t\u00f6bb f\u00fcrt\u00f6t \u00e9s most l\u00e9trehozzuk az els\u0151 f\u00fcrt\u00f6t. A f\u00fcrt csoportos\u00edtja a kiszolg\u00e1l\u00f3kat. Egy f\u00fcrtben tal\u00e1lhat\u00f3 kiszolg\u00e1l\u00f3k ugyanolyan hardverrel rendelkeznek, ugyanolyan hipervizort futtatnak \u00e9s ugyanahhoz az els\u0151dleges t\u00e1rol\u00f3hoz f\u00e9rnek hozz\u00e1. Minden f\u00fcrt egy vagy t\u00f6bb kiszolg\u00e1l\u00f3t \u00e9s els\u0151dleges t\u00e1r szervert tartalmaz.
|
||||
message.desc.created.ssh.key.pair=Az SSH kulcsp\u00e1r l\u00e9trej\u00f6tt.
|
||||
message.desc.create.ssh.key.pair=Add meg a k\u00f6vetkez\u0151 adatokat az ssh kulcs bejegyz\u00e9s\u00e9hez\!<br><br> (1) Ha publikus kulcsot adsz meg, a CloudStack elt\u00e1rolja \u00e9s a priv\u00e1t kulcsoddal haszn\u00e1lhatod. <br><br> (2) Ha nem adsz meg publikus kulcsot, a CloudStack k\u00e9sz\u00edt neked egyet. M\u00e1sold le \u00e9s mentsd el a priv\u00e1t kulcsot, a CloudStack nem tartja meg.<br>
|
||||
message.desc.host=Minden f\u00fcrtnek legal\u00e1bb egy kiszolg\u00e1l\u00f3t kell tartalmaznia, amelyen a VM-ek futhatnak. Most vegy\u00fck fel az els\u0151 kiszolg\u00e1l\u00f3t\! Hogy a kiszolg\u00e1l\u00f3 m\u0171k\u00f6dhessen, hipervizor szoftvert kell r\u00e1 telep\u00edteni, IP c\u00edmet rendelni hozz\u00e1 \u00e9s biztos\u00edtani a kapcsolatot a CloudStack vez\u00e9rl\u0151 szerverrel. <br/><br/> Add meg a kiszolg\u00e1l\u00f3 DNS vagy IP c\u00edm\u00e9t, a felhaszn\u00e1l\u00f3 nev\u00e9t (\u00e1ltal\u00e1ban root) \u00e9s jelszav\u00e1t, valamint a kiszolg\u00e1l\u00f3 kategoriz\u00e1l\u00e1s\u00e1ra szolg\u00e1l\u00f3 c\u00edmk\u00e9ket.
|
||||
message.desc.primary.storage=Minden f\u00fcrt tartalmaz egy vagy t\u00f6bb els\u0151dleges t\u00e1r szervert \u00e9s most l\u00e9trehozzuk az els\u0151t. Az els\u0151dleges t\u00e1r tartalmazza a f\u00fcrt kiszolg\u00e1l\u00f3in fut\u00f3 \u00f6sszes VM virtu\u00e1lis merevlemezeit.
|
||||
message.desc.reset.ssh.key.pair=Adj meg egy ssh kulcsp\u00e1rt, amelyet fel szeretn\u00e9l venni ehhez a VM-hez\! A root jelsz\u00f3 megv\u00e1ltozik, ha a jelsz\u00f3 enged\u00e9lyezett.
|
||||
message.desc.secondary.storage=Minden z\u00f3n\u00e1nak rendelkeznie kell legal\u00e1bb egy NFS vagy m\u00e1sodlagos t\u00e1r szervert \u00e9s most l\u00e9trehozzuk az els\u0151t. A m\u00e1sodlagos t\u00e1r t\u00e1rolja a VM sablonok, ISO f\u00e1jlok \u00e9s pillanatfelv\u00e9telek adatait. Ennek a szervernek minden kiszolg\u00e1l\u00f3 sz\u00e1m\u00e1ra hozz\u00e1f\u00e9rhet\u0151nek kell lennie.<br/><br/> Add meg az IP c\u00edmet \u00e9s az \u00fatvonalat\!
|
||||
message.desc.zone=A z\u00f3na a CloudStack legnagyobb egys\u00e9ge \u00e9s \u00e1ltal\u00e1ban egy adatk\u00f6zpontnak felel meg. A z\u00f3n\u00e1k fizikai izol\u00e1ci\u00f3t adnak. Egy z\u00f3na egy vagy t\u00f6bb pod-b\u00f3l \u00e1ll (amelyek kiszolg\u00e1l\u00f3kat \u00e9s els\u0151dleges t\u00e1rol\u00f3kat tartalmaznak) \u00e9s egy m\u00e1sodlagos t\u00e1rb\u00f3l, amelyet az \u00f6sszes pod haszn\u00e1l.
|
||||
message.detach.disk=Biztosan la akarod v\u00e1lasztani a merevlemezt?
|
||||
|
|
@ -1878,8 +1907,8 @@ message.enable.account=Er\u0151s\u00edtsd meg, hogy be akarod kapcsolni ezt a sz
|
|||
message.enabled.vpn=A t\u00e1voli hozz\u00e1f\u00e9r\u00e9s\u0171 VPN jelenleg be van kapcsolva \u00e9s hozz\u00e1f\u00e9rhet\u0151 az IP c\u00edmmel
|
||||
message.enabled.vpn.ip.sec=Your IPSec pre-shared key is
|
||||
message.enable.user=Er\u0151s\u00edtsd meg, hogy be akarod kapcsolni ezt a felhaszn\u00e1l\u00f3t\!
|
||||
message.enable.vpn.access=VPN is currently disabled for this IP Address. Would you like to enable VPN access?
|
||||
message.enable.vpn=Please confirm that you want Remote Access VPN enabled for this IP address.
|
||||
message.enable.vpn.access=A VPN jelenleg ki van kapcsolva erre az IP c\u00edmre. Szeretn\u00e9d bekapcsolni a VPN hozz\u00e1f\u00e9r\u00e9st?
|
||||
message.enable.vpn=Er\u0151s\u00edtsd meg, hogy be szeretn\u00e9d kapcsolni a t\u00e1voli hozz\u00e1f\u00e9r\u00e9s\u0171 VPN-t ehhez az IP c\u00edmhez\!
|
||||
message.enabling.network.offering=H\u00e1l\u00f3zat aj\u00e1nlat bekapcsol\u00e1sa
|
||||
message.enabling.security.group.provider=Biztons\u00e1gi csoport szolg\u00e1ltat\u00f3 bekapcsol\u00e1sa
|
||||
message.enabling.vpc.offering=VPC aj\u00e1nlat bekapcsol\u00e1sa
|
||||
|
|
@ -1930,21 +1959,21 @@ message.installWizard.tooltip.configureGuestTraffic.guestStartIp=The range of IP
|
|||
message.installWizard.tooltip.configureGuestTraffic.name=A h\u00e1l\u00f3zat neve
|
||||
message.instance.scaled.up.confirm=T\u00e9nyleg nagyobbra akarod m\u00e9retezni a p\u00e9ld\u00e1nyt?
|
||||
message.instanceWizard.noTemplates=You do not have any templates available; please add a compatible template, and re-launch the instance wizard.
|
||||
message.ip.address.changed=Your IP addresses may have changed; would you like to refresh the listing? Note that in this case the details pane will close.
|
||||
message.iso.desc=Disc image containing data or bootable media for OS
|
||||
message.join.project=You have now joined a project. Please switch to Project view to see the project.
|
||||
message.launch.vm.on.private.network=Do you wish to launch your instance on your own private dedicated network?
|
||||
message.ip.address.changed=Az IP c\u00edmid megv\u00e1ltzhattak, szeretn\u00e9d friss\u00edteni a list\u00e1t? Ebben az esetben a r\u00e9szletek f\u00fcl be fog z\u00e1rulni.
|
||||
message.iso.desc=A merevlemez k\u00e9p, amely az ind\u00edthat\u00f3 oper\u00e1ci\u00f3s rendszert tartalmazza
|
||||
message.join.project=Csatlakozt\u00e1l egy projekthez. V\u00e1lts a projekt n\u00e9zetre\!
|
||||
message.launch.vm.on.private.network=Szeretn\u00e9d a saj\u00e1t dedik\u00e1lt h\u00e1l\u00f3zatodon ind\u00edtani a p\u00e9ld\u00e1nyt?
|
||||
message.launch.zone=A z\u00f3na k\u00e9szen \u00e1ll az ind\u00edt\u00e1sra, folytasd a k\u00f6vetkez\u0151 l\u00e9p\u00e9ssel
|
||||
message.listView.subselect.multi=(Ctrl/Cmd-kattint\u00e1s)
|
||||
message.lock.account=Please confirm that you want to lock this account. By locking the account, all users for this account will no longer be able to manage their cloud resources. Existing resources can still be accessed.
|
||||
message.lock.account=Er\u0151s\u00edtsd meg, hogy z\u00e1rolni akarod ezt a sz\u00e1ml\u00e1t. A sz\u00e1mla z\u00e1rol\u00e1s\u00e1val a sz\u00e1mla felhaszn\u00e1l\u00f3i nem lesznek k\u00e9pesek a felh\u0151 er\u0151forr\u00e1saikat vez\u00e9relni. A l\u00e9tez\u0151 er\u0151forr\u00e1sok tov\u00e1bbra is hozz\u00e1f\u00e9rhet\u0151ek lesznek.
|
||||
message.migrate.instance.confirm=Er\u0151s\u00edtsd meg a kiszolg\u00e1l\u00f3 v\u00e1laszt\u00e1st, ahova a virtu\u00e1lis g\u00e9pet mozgatn\u00e1d\!
|
||||
message.migrate.instance.to.host=Er\u0151s\u00edtsd meg, hogy m\u00e1sik kiszolg\u00e1l\u00f3ra akarod mozgatni a p\u00e9ld\u00e1nyt\!
|
||||
message.migrate.instance.to.ps=Please confirm that you want to migrate instance to another primary storage.
|
||||
message.migrate.router.confirm=Please confirm the host you wish to migrate the router to\:
|
||||
message.migrate.systemvm.confirm=Please confirm the host you wish to migrate the system VM to\:
|
||||
message.migrate.instance.to.ps=Er\u0151s\u00edtsd meg, hogy a p\u00e9ld\u00e1nyt m\u00e1sik els\u0151dleges t\u00e1rra szeretn\u00e9d mozgatni\!
|
||||
message.migrate.router.confirm=Er\u0151s\u00edtsd meg, hogy a routert mozgatni szeretn\u00e9d a k\u00f6vetkez\u0151 c\u00e9lpontra\:
|
||||
message.migrate.systemvm.confirm=Er\u0151s\u00edtsd meg, hogy a rendszer VM-et a k\u00f6vetkez\u0151 c\u00e9lpontra szeretn\u00e9d mozgatni\:
|
||||
message.migrate.volume=Er\u0151s\u00edtsd meg, hogy m\u00e1sik els\u0151dleges t\u00e1rra akarod mozgatni a k\u00f6tetet
|
||||
message.network.addVM.desc=Please specify the network that you would like to add this VM to. A new NIC will be added for this network.
|
||||
message.network.addVMNIC=Please confirm that you would like to add a new VM NIC for this network.
|
||||
message.network.addVMNIC=Er\u0151s\u00edtsd meg, hogy szeretn\u00e9l egy \u00faj VM NIC-et ehhez a h\u00e1l\u00f3zathoz\!
|
||||
message.new.user=A k\u00f6vetkez\u0151ket adja meg \u00faj sz\u00e1mla l\u00e9trehoz\u00e1s\u00e1hoz
|
||||
message.no.affinity.groups=Nincsenek affin\u00edt\u00e1si csoportaid. K\u00e9rlek folytasd a k\u00f6vetkez\u0151 l\u00e9p\u00e9ssel\!
|
||||
message.no.host.available=Nincs el\u00e9rhet\u0151 kiszolg\u00e1l\u00f3 az \u00e1tk\u00f6lt\u00f6ztet\u00e9shez
|
||||
|
|
@ -1957,50 +1986,53 @@ message.number.hosts=<h2>Kiszolg\u00e1l\u00f3k <span>sz\u00e1ma</span></h2>
|
|||
message.number.pods=<h2>Pods-ok <span>sz\u00e1ma</span></h2>
|
||||
message.number.storage=<h2>Els\u0151dleges t\u00e1r k\u00f6tetek<span>sz\u00e1ma</span></h2>
|
||||
message.number.zones=<h2>Z\u00f3n\u00e1k <span>sz\u00e1ma</span></h2>
|
||||
message.password.has.been.reset.to=A jelsz\u00f3 \u00fajrabe\u00e1ll\u00edtva\:
|
||||
message.password.of.the.vm.has.been.reset.to=A VM jelszava \u00fajrabe\u00e1ll\u00edtva\:
|
||||
message.pending.projects.1=Projekt megh\u00edv\u00f3k v\u00e1rnak r\u00e1d\:
|
||||
message.pending.projects.2=A megtekint\u00e9shez menj a projektek szekci\u00f3hoz \u00e9s v\u00e1laszd a megh\u00edv\u00f3kat a leg\u00f6rd\u00fcl\u0151 men\u00fcb\u0151l\!
|
||||
message.please.add.at.lease.one.traffic.range=Please add at least one traffic range.
|
||||
message.please.proceed=Please proceed to the next step.
|
||||
message.please.select.a.configuration.for.your.zone=Please select a configuration for your zone.
|
||||
message.please.add.at.lease.one.traffic.range=Adj meg legal\u00e1bb egy forgalom tartom\u00e1nyt\!
|
||||
message.please.confirm.remove.ssh.key.pair=Er\u0151s\u00edtsd meg, hogy t\u00f6r\u00f6lni akarod ezt az SSH kulcsp\u00e1rt\!
|
||||
message.please.proceed=Menj tov\u00e1bb a k\u00f6vetkez\u0151 l\u00e9p\u00e9shez\!
|
||||
message.please.select.a.configuration.for.your.zone=V\u00e1lassz konfigur\u00e1ci\u00f3t a z\u00f3n\u00e1dnak\!
|
||||
message.please.select.a.different.public.and.management.network.before.removing=Please select a different public and management network before removing
|
||||
message.please.select.networks=Please select networks for your virtual machine.
|
||||
message.please.wait.while.zone.is.being.created=Please wait while your zone is being created; this may take a while...
|
||||
message.please.select.networks=V\u00e1lassz h\u00e1l\u00f3zatokat a virtu\u00e1lis g\u00e9pedhez\!
|
||||
message.please.wait.while.zone.is.being.created=K\u00e9rlek v\u00e1rj, am\u00edg a z\u00f3n\u00e1d l\u00e9trej\u00f6n. Ez eltarthat egy ideig...
|
||||
message.pod.dedication.released=Pod dedik\u00e1ci\u00f3 elengedve
|
||||
message.portable.ip.delete.confirm=Please confirm you want to delete Portable IP Range
|
||||
message.project.invite.sent=Invite sent to user; they will be added to the project once they accept the invitation
|
||||
message.portable.ip.delete.confirm=Er\u0151s\u00edtsd meg, hogy t\u00f6r\u00f6lni akarod a hordozhat\u00f3 IP tartom\u00e1nyt\!
|
||||
message.project.invite.sent=Megh\u00edv\u00f3 elk\u00fcldve a felhaszn\u00e1l\u00f3nak. A felhaszn\u00e1l\u00f3 akkor ker\u00fcl a projektbe, amikor elfogadja a megh\u00edv\u00f3t.
|
||||
message.public.traffic.in.advanced.zone=Public traffic is generated when VMs in the cloud access the internet. Publicly-accessible IPs must be allocated for this purpose. End users can use the CloudStack UI to acquire these IPs to implement NAT between their guest network and their public network.<br/><br/>Provide at least one range of IP addresses for internet traffic.
|
||||
message.public.traffic.in.basic.zone=Public traffic is generated when VMs in the cloud access the Internet or provide services to clients over the Internet. Publicly accessible IPs must be allocated for this purpose. When a instance is created, an IP from this set of Public IPs will be allocated to the instance in addition to the guest IP address. Static 1-1 NAT will be set up automatically between the public IP and the guest IP. End users can also use the CloudStack UI to acquire additional IPs to implement static NAT between their instances and the public IP.
|
||||
message.read.admin.guide.scaling.up=Please read the dynamic scaling section in the admin guide before scaling up.
|
||||
message.public.traffic.in.basic.zone=A publikus forgalom akkor keletkezik, amikor a felh\u0151 virtu\u00e1lis g\u00e9pei hozz\u00e1f\u00e9rnek az internethez vagy az interneten szolg\u00e1ltat\u00e1sokat biztos\u00edtanak. Publikusan el\u00e9rhet\u0151 IP c\u00edmeket kell erre a c\u00e9lra elk\u00fcl\u00f6n\u00edteni. Amikor l\u00e9trej\u00f6n egy p\u00e9ld\u00e1ny, ezekb\u0151l a publikus IP c\u00edmekb\u0151l kap egyet a p\u00e9ld\u00e1ny a vend\u00e9g IP c\u00edmen k\u00edv\u00fcl. Statikus 1-1 NAT lesz be\u00e1ll\u0167va a publikus \u00e9s a vend\u00e9g IP c\u00edmek k\u00f6z\u00f6tt. V\u00e9gfelhaszn\u00e1l\u00f3k haszn\u00e1lhatj\u00e1k a CloudStack fel\u00fcletet is \u00faj IP c\u00edmek beszerz\u00e9s\u00e9hez \u00e9s statikus NAT be\u00e1ll\u00edt\u00e1s\u00e1hoz.
|
||||
message.read.admin.guide.scaling.up=Olvasd el az adminisztr\u00e1torok \u00fatmutat\u00f3j\u00e1ban a dinamikus m\u00e9retez\u00e9sre vonatkoz\u00f3 r\u00e9szt miel\u0151tt folytatod\!
|
||||
message.recover.vm=Er\u0151s\u00edtsd meg, hogy helyre akarod \u00e1ll\u00edtani a VM-et.
|
||||
message.redirecting.region=Redirecting to region...
|
||||
message.redirecting.region=\u00c1tir\u00e1ny\u00edt\u00e1s r\u00e9gi\u00f3ba...
|
||||
message.reinstall.vm=Figyelmeztet\u00e9s\: \u00d3vatosan\! Ha folytatod, a VM \u00fajra lesz telep\u00edtve a sablon alapj\u00e1n, a f\u0151 lemez\u00e9n tal\u00e1lhat\u00f3 adat elveszik. Amennyiben vannak tov\u00e1bbi merevlemezek, azok \u00e9rintetlenek maradnak.
|
||||
message.remove.ldap=Biztosan t\u00f6r\u00f6lni akarod az LDAP konfigur\u00e1ci\u00f3t?
|
||||
message.remove.region=Are you sure you want to remove this region from this management server?
|
||||
message.remove.vpc=Please confirm that you want to remove the VPC
|
||||
message.remove.vpn.access=Please confirm that you want to remove VPN access from the following user.
|
||||
message.remove.region=Biztosan t\u00f6r\u00f6lni akarod ezt a r\u00e9gi\u00f3t err\u0151l a vez\u00e9rl\u0151 szerverr\u0151l?
|
||||
message.remove.vpc=Er\u0151s\u00edtsd meg, hoy el akarod t\u00e1vol\u00edtani ezt a VPC-t\!
|
||||
message.remove.vpn.access=Er\u0151s\u00edtsd meg, hogy t\u00f6r\u00f6lni akarod a k\u00f6vetkez\u0151 felhaszn\u00e1l\u00f3 VPN hozz\u00e1f\u00e9r\u00e9s\u00e9t\!
|
||||
message.reset.password.warning.notPasswordEnabled=A p\u00e9ld\u00e1ny sablonja jelsz\u00f3 bekapcsol\u00e1sa n\u00e9lk\u00fcl lett l\u00e9trehozva
|
||||
message.reset.password.warning.notStopped=A p\u00e9ld\u00e1nyt le kell \u00e1ll\u00edtanod, miel\u0151tt megpr\u00f3b\u00e1ln\u00e1l jelsz\u00f3t be\u00e1ll\u00edtani.
|
||||
message.reset.VPN.connection=Please confirm that you want to reset VPN connection
|
||||
message.restart.mgmt.server=Please restart your management server(s) for your new settings to take effect.
|
||||
message.reset.VPN.connection=Er\u0151s\u00edtsd meg, hogy alaphelyzetbe akarod \u00e1ll\u00edtani a VPN kapcsolatot\!
|
||||
message.restart.mgmt.server=Ind\u00edtsd \u00fajra a vez\u00e9rl\u0151 szervert (szervereket) ahhoz, hogy az \u00faj be\u00e1ll\u00edt\u00e1s hat\u00e1lyba l\u00e9pjen\!
|
||||
message.restart.mgmt.usage.server=Please restart your management server(s) and usage server(s) for your new settings to take effect.
|
||||
message.restart.network=All services provided by this network will be interrupted. Please confirm that you want to restart this network.
|
||||
message.restart.vpc=Please confirm that you want to restart the VPC
|
||||
message.restart.network=Megszakad minden szolg\u00e1ltat\u00e1s, amit a h\u00e1l\u00f3zat biztos\u00edt. Er\u0151s\u00edtsd meg, hogy \u00fajra akarod ind\u00edtani a h\u00e1l\u00f3zatot\!
|
||||
message.restart.vpc=Er\u0151s\u00edtsd meg, hogy \u00fajra akarod ind\u00edtani a VPC-t\!
|
||||
message.restart.vpc.remark=Er\u0151s\u00edtsd meg, hogy \u00fajra akarod ind\u00edtani a VPC-t\! <p><small><i>Megjegyz\u00e9s\: egy nem redund\u00e1ns VPC redund\u00e1nss\u00e1 t\u00e9tele takar\u00edt\u00e1st tesz sz\u00fcks\u00e9gess\u00e9. A h\u00e1l\u00f3zatok nem lesznek el\u00e9rhet\u0151ek egy p\u00e1r percig.</i>.</small></p>
|
||||
message.restoreVM=Helyre akarod \u00e1ll\u00edtani a VM-et?
|
||||
message.security.group.usage=(A <strong>Ctrl-kattint\u00e1s</strong> haszn\u00e1lat\u00e1val tudod az \u00f6sszes alkalmazhat\u00f3 biztons\u00e1gi csoportot kiv\u00e1lasztani)
|
||||
message.select.affinity.groups=V\u00e1lasszd ki azokat az affinit\u00e1si csoportokat, amelyekhez a VM tartozzon\:
|
||||
message.select.a.zone=A zone typically corresponds to a single datacenter. Multiple zones help make the cloud more reliable by providing physical isolation and redundancy.
|
||||
message.select.instance=Please select an instance.
|
||||
message.select.iso=Please select an ISO for your new virtual instance.
|
||||
message.select.item=Please select an item.
|
||||
message.select.a.zone=Egy z\u00f3na tipikusan egy adatk\u00f6zpontnak felel meg. T\u00f6bb z\u00f3na seg\u00edthet a felh\u0151t megb\u00edzhat\u00f3bb\u00e1 tenni fizikai izol\u00e1ci\u00f3val \u00e9s redundanci\u00e1val.
|
||||
message.select.instance=V\u00e1lassz egy p\u00e9ld\u00e1nyt\!
|
||||
message.select.iso=V\u00e1lassz egy ISO-t az \u00faj virtu\u00e1lis p\u00e9ld\u00e1nynak\!
|
||||
message.select.item=V\u00e1lassz egy elemet\!
|
||||
message.select.security.groups=V\u00e1lassz biztons\u00e1gi csoportokat az \u00faj VM-hez\!
|
||||
message.select.template=Please select a template for your new virtual instance.
|
||||
message.select.template=V\u00e1lassz egy sablont az \u00faj virtu\u00e1lis p\u00e9ld\u00e1nynak\!
|
||||
message.select.tier=V\u00e1lassz egy r\u00e9teget\!
|
||||
message.set.default.NIC.manual=Please manually update the default NIC on the VM now.
|
||||
message.set.default.NIC=Please confirm that you would like to make this NIC the default for this VM.
|
||||
message.setup.physical.network.during.zone.creation.basic=When adding a basic zone, you can set up one physical network, which corresponds to a NIC on the hypervisor. The network carries several types of traffic.<br/><br/>You may also <strong>drag and drop</strong> other traffic types onto the physical network.
|
||||
message.setup.physical.network.during.zone.creation=When adding an advanced zone, you need to set up one or more physical networks. Each network corresponds to a NIC on the hypervisor. Each physical network can carry one or more types of traffic, with certain restrictions on how they may be combined.<br/><br/><strong>Drag and drop one or more traffic types</strong> onto each physical network.
|
||||
message.set.default.NIC=Er\u0151s\u00edtsd meg, hogy alap\u00e9rtelmezett\u00e9 szeretn\u00e9d tenni ezt a NIC-et a VM-ben\!
|
||||
message.set.default.NIC.manual=Most manu\u00e1lisan m\u00f3dos\u00edtsd apal\u00e9rtelmezett NIC-et a VM-ben\!
|
||||
message.setup.physical.network.during.zone.creation.basic=Alap z\u00f3na l\u00e9trehoz\u00e1sakor egy fizikai h\u00e1l\u00f3zatot hozhatsz l\u00e9tre amely hiperv\u00edzor h\u00e1l\u00f3zati k\u00e1rty\u00e1j\u00e1nak felel meg.<br/><br/>M\u00e1s forgalom-t\u00edpusokat is <strong>r\u00e1h\u00fazhatsz</strong> a fizikai h\u00e1l\u00f3zatra.
|
||||
message.setup.physical.network.during.zone.creation=Halad\u00f3 z\u00f3na l\u00e9trehoz\u00e1sakor egy vagy t\u00f6bb fizikai h\u00e1l\u00f3zatot kell konfigur\u00e1lnod. Minden h\u00e1l\u00f3zat egy h\u00e1l\u00f3zati k\u00e1rty\u00e1nak felel meg a hiperv\u00edzoron. Minden fizikai h\u00e1l\u00f3zat egy vagy t\u00f6bb t\u00edpus\u00fa forgalmat bonyol\u00edthat, bizonyos megk\u00f6t\u00e9sekkel arra, hogy azokat hogyan lehet kombin\u00e1lni. <br/><br/><strong>H\u00fazz egy vagy t\u00f6bb forgalom t\u00edpust</strong> minden fizikai h\u00e1l\u00f3zatra.
|
||||
message.setup.successful=A felh\u0151 be\u00e1ll\u00edt\u00e1sa sikeres\!
|
||||
message.snapshot.schedule=Az ism\u00e9tl\u0151d\u0151 pillanatfelv\u00e9teleket az al\u00e1bbi opci\u00f3k kiv\u00e1laszt\u00e1s\u00e1val tudod be\u00e1ll\u00edtani
|
||||
message.specifiy.tag.key.value=Please specify a tag key and value
|
||||
message.specify.url=K\u00e9rlek adj meg egy URL-t\!
|
||||
message.step.1.continue=V\u00e1lassz egy sablont vagy ISO-t a folytat\u00e1shoz
|
||||
|
|
@ -2013,7 +2045,7 @@ message.storage.traffic=Traffic between CloudStack\\'s internal resources, inclu
|
|||
message.suspend.project=Biztosan fel akarod f\u00fcggeszteni ezt a projektet?
|
||||
message.systems.vms.ready=A rendszer VM-ek elk\u00e9sz\u00fcltek.
|
||||
message.template.copying=A sablon m\u00e1sol\u00e1s alatt \u00e1ll.
|
||||
message.template.desc=OS image that can be used to boot VMs
|
||||
message.template.desc=Oper\u00e1ci\u00f3s rendszer k\u00e9p, amelyet a virtu\u00e1lis g\u00e9pek el tudnak ind\u00edtani
|
||||
message.tier.required=A r\u00e9teg k\u00f6telez\u0151.
|
||||
message.tooltip.dns.1=Name of a DNS server for use by VMs in the zone. The public IP addresses for the zone must have a route to this server.
|
||||
message.tooltip.dns.2=A second DNS server name for use by VMs in the zone. The public IP addresses for the zone must have a route to this server.
|
||||
|
|
@ -2025,7 +2057,7 @@ message.tooltip.reserved.system.gateway=Az \u00e1tj\u00e1r\u00f3 a pod kiszolg\u
|
|||
message.tooltip.reserved.system.netmask=The network prefix that defines the pod subnet. Uses CIDR notation.
|
||||
message.tooltip.zone.name=N\u00e9v a z\u00f3n\u00e1nak.
|
||||
message.update.os.preference=Hat\u00e1rozz meg egy OS preferenci\u00e1t a kiszolg\u00e1l\u00f3hoz. Minden p\u00e9ld\u00e1ny, aminek hasonl\u00f3 preferenci\u00e1i vannak el\u0151sz\u00f6r ezen a kiszolg\u00e1l\u00f3n indul el.
|
||||
message.update.resource.count=Please confirm that you want to update resource counts for this account.
|
||||
message.update.resource.count=Er\u0151s\u00edtsd meg, hogy m\u00f3dos\u00edtani akarod a sz\u00e1mla er\u0151forr\u00e1sainak sz\u00e1m\u00e1t\!
|
||||
message.update.ssl.failed=Nem siker\u00fclt az SSL tan\u00fas\u00edtv\u00e1nyt m\u00f3dos\u00edtani
|
||||
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=Az SSL tan\u00fas\u00edtv\u00e1nyok m\u00f3dos\u00edt\u00e1sa sikeres
|
||||
|
|
@ -2038,7 +2070,7 @@ message.validate.email.address=Adj meg egy \u00e9rv\u00e9nyes e-mail c\u00edmet\
|
|||
message.validate.equalto=\u00cdrd be ugyanazt az \u00e9rt\u00e9ket \u00fajra\!
|
||||
message.validate.fieldrequired=Ez a mez\u0151 k\u00f6telez\u0151.
|
||||
message.validate.fixfield=Jav\u00edtsd ki ez a mez\u0151t\!
|
||||
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.validate.instance.name=A p\u00e9ld\u00e1ny neve nem lehet hosszabb 63 karaktern\u00e9l. Csak ASCII karakterek a-z \u00e9s A-Z, sz\u00e1mok 0-9 \u00e9s k\u00f6t\u0151jelek enged\u00e9lyezettek. Bet\u0171vel kell kezd\u0151dnie \u00e9s bet\u0171vel vagy sz\u00e1mmal kell v\u00e9gz\u0151dnie[
|
||||
message.validate.invalid.characters=\u00c9rv\u00e9nytelen karakter; k\u00e9rlek jav\u00edtsd\!
|
||||
message.validate.max=Adj meg egy \u00e9rt\u00e9ket, ami legfeljebb {0}\!
|
||||
message.validate.maxlength=Legfeljebb {0} karaktert adj meg\!
|
||||
|
|
@ -2050,8 +2082,8 @@ message.validate.URL=Adj meg egy \u00e9rv\u00e9nyes URL-t\!
|
|||
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=Sablon l\u00e9trehoz\u00e1sa automatikusan \u00fajraind\u00edtja a VM-et\!
|
||||
message.vm.review.launch=Please review the following information and confirm that your virtual instance is correct before launch.
|
||||
message.vnmc.available.list=VNMC is not available from provider list.
|
||||
message.vnmc.not.available.list=VNMC is not available from provider list.
|
||||
message.vnmc.available.list=VNMC nem el\u00e9rhet\u0151 a szolg\u00e1ltat\u00f3 list\u00e1r\u00f3l.
|
||||
message.vnmc.not.available.list=VNMC nem el\u00e9rhet\u0151 a szolg\u00e1ltat\u00f3 list\u00e1r\u00f3l.
|
||||
message.volume.create.template.confirm=Please confirm that you wish to create a template for this disk volume. Creation of the template can range from several minutes to longer depending on the size of the volume.
|
||||
message.waiting.for.builtin.templates.to.load=V\u00e1rakoz\u00e1s a be\u00e9p\u00edtett sablonk bet\u00f6lt\u00e9s\u00e9re...
|
||||
message.XSTools61plus.update.failed=Failed to update Original XS Version is 6.1\\+ field. Error\:
|
||||
|
|
@ -2059,11 +2091,11 @@ message.you.must.have.at.least.one.physical.network=Sz\u00fcks\u00e9ged van lega
|
|||
message.your.cloudstack.is.ready=A CloudStack k\u00e9szen \u00e1ll\!
|
||||
message.Zone.creation.complete=A z\u00f3na l\u00e9trehoz\u00e1sa befejez\u0151d\u00f6tt
|
||||
message.zone.creation.complete.would.you.like.to.enable.this.zone=A z\u00f3na l\u00e9trehoz\u00e1sa befejez\u0151d\u00f6tt. Szeretn\u00e9d bekapcsolni a z\u00f3n\u00e1t?
|
||||
message.zone.no.network.selection=The zone you selected does not have any choices for network selection.
|
||||
message.zone.step.1.desc=Please select a network model for your zone.
|
||||
message.zone.step.2.desc=Please enter the following info to add a new zone
|
||||
message.zone.step.3.desc=Please enter the following info to add a new pod
|
||||
message.zoneWizard.enable.local.storage=WARNING\: If you enable local storage for this zone, you must do the following, depending on where you would like your system VMs to launch\:<br/><br/>1. If system VMs need to be launched in shared primary storage, shared primary storage needs to be added to the zone after creation. You must also start the zone in a disabled state.<br/><br/>2. If system VMs need to be launched in local primary storage, system.vm.use.local.storage needs to be set to true before you enable the zone.<br/><br/><br/>Would you like to continue?
|
||||
message.zone.no.network.selection=A kiv\u00e1lasztott z\u00f3n\u00e1ban nem v\u00e1laszthat\u00f3 ki h\u00e1l\u00f3zat.
|
||||
message.zone.step.1.desc=V\u00e1lassz h\u00e1l\u00f3zat modellt a z\u00f3n\u00e1dnak\!
|
||||
message.zone.step.2.desc=Add meg a k\u00f6vetkez\u0151 inform\u00e1ci\u00f3kat az \u00faj z\u00f3n\u00e1hoz
|
||||
message.zone.step.3.desc=Add meg a k\u00f6vetkez\u0151 inform\u00e1ci\u00f3kat az \u00faj pod-hoz
|
||||
message.zoneWizard.enable.local.storage=Figyelmeztet\u00e9s\: Ha bekapcsolod a helyi t\u00e1rat ebben a z\u00f3n\u00e1ban, akkor a k\u00f6vetkez\u0151t kell tenned att\u00f3l f\u00fcgg\u0151en, hogy hol szeretn\u00e9d elind\u00edtani a rendszer VM-eket\: <br/><br/>1. Ha a rendszer VM-eknek osztott els\u0151dleges t\u00e1ron kell futnia, akkor egy elosztott t\u00e1rat kell l\u00e9trehoznod a z\u00f3na l\u00e9trej\u00f6tte ut\u00e1n. A z\u00f3n\u00e1t kikapcsolt \u00e1llapotban kell elind\u00edtanod.<br/><br/>2. Ha a rendszer VM-eknek helyi els\u0151dleges t\u00e1ron kell futni, akkor a system.vm.use.local.storage \u00e9rt\u00e9k\u00e9t true-ra kell \u00e1ll\u00edtani miel\u00f6tt a z\u00f3n\u00e1t bekapcsolod.<br/><br/><br/>Szeretn\u00e9d folytatni?
|
||||
messgae.validate.min=Adj meg egy \u00e9rt\u00e9ket, ami legal\u00e1bb {0}\!
|
||||
mode=M\u00f3d
|
||||
network.rate=H\u00e1l\u00f3zati r\u00e1ta
|
||||
|
|
|
|||
|
|
@ -542,8 +542,6 @@ label.select-view=Selezionare la vista
|
|||
label.select.vm.for.static.nat=Selezionare una VM per il NAT statico
|
||||
label.service.capabilities=Capacit\u00e0 di Servizio
|
||||
label.setup=Installazione
|
||||
label.setup.network=Configurazione Rete
|
||||
label.setup.zone=Configurazione Zona
|
||||
label.set.up.zone.type=Configurazione del tipo di Zona
|
||||
label.shutdown.provider=Arresto del provider
|
||||
label.site.to.site.VPN=Site-to-site VPN
|
||||
|
|
|
|||
File diff suppressed because it is too large
Load Diff
|
|
@ -930,10 +930,8 @@ label.service.capabilities=\uc11c\ube44\uc2a4 \uae30\ub2a5
|
|||
label.service.offering=\uc11c\ube44\uc2a4\uc81c\uacf5
|
||||
label.service.state=\uc11c\ube44\uc2a4
|
||||
label.session.expired=\uc138\uc158 \uc720\ud6a8\uae30\uac04\uc774 \ub04a\uc5b4\uc9d0
|
||||
label.setup.network=\ub124\ud2b8\uc6cc\ud06c \uc124\uc815
|
||||
label.setup=\uc124\uc815
|
||||
label.set.up.zone.type=Zone \uc885\ub958 \uc124\uc815
|
||||
label.setup.zone=Zone \uc124\uc815
|
||||
label.SharedMountPoint=SharedMountPoint
|
||||
label.shared=\uacf5\uc720
|
||||
label.show.ingress.rule=\uc218\uc2e0 \uaddc\uce59 \ud45c\uc2dc
|
||||
|
|
@ -943,7 +941,7 @@ label.size=\ud06c\uae30
|
|||
label.skip.guide=CloudStack \uc0ac\uc6a9 \uac00\uc774\ub4dc \uac74\ub108\ub6f0\uae30
|
||||
label.snapshot.limits=\uc2a4\ub0c5\uc0f7 \uc81c\ud55c
|
||||
label.snapshot.name=\uc2a4\ub0c5\uc0f7 \uc774\ub984
|
||||
label.snapshot.schedule=\uc815\uae30 \uc2a4\ub0c5\uc0f7 \uc124\uc815
|
||||
label.snapshot.s=\uc2a4\ub0c5\uc0f7
|
||||
label.snapshots=\uc2a4\ub0c5\uc0f7
|
||||
label.snapshot=\uc2a4\ub0c5\uc0f7
|
||||
label.source.nat=\uc804\uc1a1\uc6d0 NAT
|
||||
|
|
@ -1397,7 +1395,6 @@ message.select.template=\uc0c8\ub85c\uc6b4 \uac00\uc0c1 \uc778\uc2a4\ud134\uc2a4
|
|||
message.setup.physical.network.during.zone.creation.basic=\uae30\ubcf8 Zone\uc744 \ucd94\uac00\ud560 \ub54c\ub294 \ud558\uc774\ud37c \ubc14\uc774\uc800\uc0c1\uc758 \ub124\ud2b8\uc6cd\uce74\ub4dc(NIC)\uc5d0 \ub300\uc751\ud558\ub294 \ud55c \uac00\uc9c0 \ubb3c\ub9ac \ub124\ud2b8\uc6cc\ud06c\ub97c \uc124\uc815 \ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4. \ub124\ud2b8\uc6cc\ud06c\ub294 \uba87 \uac00\uc9c0 \uc885\ub958\uc758 \ud2b8\ub798\ud53d\uc744 \uc804\uc1a1\ud569\ub2c8\ub2e4. <br/><br/>\ubb3c\ub9ac \ub124\ud2b8\uc6cc\ud06c\uc5d0 \ub2e4\ub978 \ud2b8\ub798\ud53d\uc758 \uc885\ub958\ub97c<strong>\ub4dc\ub798\uadf8 \uc564 \ub4dc\ub86d</strong> \ud560 \uc218\ub3c4 \uc788\uc2b5\ub2c8\ub2e4.
|
||||
message.setup.physical.network.during.zone.creation=\ud655\uc7a5 Zone\uc744 \ucd94\uac00\ud560 \ub54c\ub294 \ud55c \uac1c \uc774\uc0c1 \ubb3c\ub9ac \ub124\ud2b8\uc6cc\ud06c\ub97c \uc124\uc815\ud574\uc57c \ud569\ub2c8\ub2e4. \uac01 \ub124\ud2b8\uc6cc\ud06c\ub294 \ud558\uc774\ud37c \ubc14\uc774\uc800\uc0c1 \ud55c \uac00\uc9c0 \ub124\ud2b8\uc6cc\ud06c \uce74\ub4dc(NIC)\uc5d0 \ub300\uc751\ud569\ub2c8\ub2e4. \uac01 \ubb3c\ub9ac \ub124\ud2b8\uc6cc\ud06c\uc5d0\uc11c\ub294 \uad6c\uc131\uc5d0 \uc81c\ud55c\uc774 \uc788\uc73c\ub098, \ud55c \uac00\uc9c0 \uc885\ub958 \uc774\uc0c1 \ud2b8\ub798\ud53d\uc744 \ud1b5\uc2e0\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4. <br/><br/>\uac01 \ubb3c\ub9ac \ub124\ud2b8\uc6cc\ud06c\uc5d0 \ub300\ud574\uc11c<strong>\ud2b8\ub798\ud53d \uc885\ub958\ub97c \ub4dc\ub798\uadf8 \uc564 \ub4dc\ub86d</strong>\ud574 \uc8fc\uc2ed\uc2dc\uc624.
|
||||
message.setup.successful=\ud074\ub77c\uc6b0\ub4dc\uac00 \uc124\uc815 \ub418\uc5c8\uc2b5\ub2c8\ub2e4.
|
||||
message.snapshot.schedule=\ub2e4\uc74c \uc635\uc158\uc5d0\uc11c \uc120\ud0dd\ud55c \uc815\ucc45 \uae30\ubcf8 \uc124\uc815\uc744 \uc801\uc6a9\ud558\uc5ec \uc815\uae30 \uc2a4\ub0c5\uc0f7 \uc2a4\ucf00\uc904\uc744 \uc124\uc815 \ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4.
|
||||
message.specify.url=URL\ub97c \uc9c0\uc815\ud574 \uc8fc\uc2ed\uc2dc\uc624
|
||||
message.step.1.continue=\uc2e4\ud589\ud558\ub824\uba74 \ud15c\ud50c\ub9bf \ub610\ub294 ISO\ub97c \uc120\ud0dd\ud574 \uc8fc\uc2ed\uc2dc\uc624.
|
||||
message.step.1.desc=\uc0c8\ub85c\uc6b4 \uac00\uc0c1 \uc778\uc2a4\ud134\uc2a4\uc6a9 \ud15c\ud50c\ub9bf\uc744 \uc120\ud0dd\ud574 \uc8fc\uc2ed\uc2dc\uc624.ISO\ub97c \uc124\uce58 \ud560 \uc218 \uc788\ub294 \uacf5\ubc31 \ud15c\ud50c\ub9bf\uc744 \uc120\ud0dd\ud560 \uc218\ub3c4 \uc788\uc2b5\ub2c8\ub2e4.
|
||||
|
|
|
|||
File diff suppressed because it is too large
Load Diff
|
|
@ -1203,8 +1203,6 @@ label.session.expired=Sessie Verlopen
|
|||
label.set.default.NIC=Stel standaard NIC in
|
||||
label.settings=Instellingen
|
||||
label.setup=Instellen
|
||||
label.setup.network=Stel Netwerk in
|
||||
label.setup.zone=Stel Zone in
|
||||
label.set.up.zone.type=Stel zone type in
|
||||
label.shared=Gedeeld
|
||||
label.SharedMountPoint=SharedMountPoint
|
||||
|
|
@ -1219,8 +1217,8 @@ label.smb.password=SMB Wachtwoord
|
|||
label.smb.username=SMB Gebruikersnaam
|
||||
label.snapshot.limits=Snapshot Limieten
|
||||
label.snapshot.name=Snapshot Naam
|
||||
label.snapshot.schedule=Stel herhalende Snapshot in
|
||||
label.snapshot=Snapshot
|
||||
label.snapshot.s=Snapshots
|
||||
label.snapshots=Snapshots
|
||||
label.SNMP.community=SNMP Community
|
||||
label.SNMP.port=SNMP Poort
|
||||
|
|
@ -1577,7 +1575,7 @@ message.add.system.service.offering=Specificeer de volgende gegevens om een nieu
|
|||
message.add.template=Specificeer de volgende gegevens om een nieuwe template aan te maken
|
||||
message.add.volume=Specificeer de volgende gegevens om een nieuw volume toe te voegen.
|
||||
message.add.VPN.gateway=Bevestig dat u een VPN Gateway wilt toevoegen
|
||||
message.admin.guide.read=Voor VMware-gebaseerde VMs, lees eerst de dynamic scaling sectie in de admin guide voordat u gaat schalen. Weet u zeker dat u verder wilt gaan?
|
||||
message.admin.guide.read=Voor VMware-gebaseerde VMs, lees eerst de dynamic scaling sectie in de admin guide voordat u gaat schalen. Weet u zeker dat u verder wilt gaan?\\,
|
||||
message.advanced.mode.desc=Kies dit netwerk model als u VLAN ondersteuning wilt inschakelen. Dit netwerk model geeft u de meeste flexibiliteit en stelt beheerders in staat om aangepaste netwerk aanbiedingen aan te maken met firewall, vpn, of load balancer ondersteuning. Ook kunt u kiezen tussen direct en virtual networking.
|
||||
message.advanced.security.group=Kies dit netwerk model als u security groups wilt gebruiken om virtueele machines te isoleren.
|
||||
message.advanced.virtual=Kies deze optie als u zone breede VLANs wilt gebruiken om virtueele machines te isoleren.
|
||||
|
|
@ -1817,7 +1815,6 @@ message.set.default.NIC.manual=U dient nu manueel de netwerk interface op de VM
|
|||
message.setup.physical.network.during.zone.creation.basic=Wanneer u een basis zone toevoegt bevat deze een fysiek netwerk welke correspondeert met de netwerkkaart op de hypervisor. Op dit netwerk zullen meerdere verkeerstypen gebruikt worden. <br/><br/> U kunt via drag & drop andere verkeerstypen toevoegen aan het fysieke netwerk.
|
||||
message.setup.physical.network.during.zone.creation=Wanneer u een geavanceerde zone toevoegt, dient u meerdere fysiek netwerken te configureren. Een netwerk correspondeert met een netwerkkaart op de hypervisor. Elk fysiek netwerk kan een of meerdere traffic types bevatten, met bepaald geldende restricties hoe deze gecombineerd mogen worden. Drag & Drop een of meerdere verkeerstypen op het fysieke netwerk.
|
||||
message.setup.successful=Cloud installatie is succesvol verlopen\!
|
||||
message.snapshot.schedule=U kunt terugkerende snapshots schema&\#39s aanmaken door een van de beschikbare opties hieronder te selecteren.
|
||||
message.specifiy.tag.key.value=Gelieve een tag sleutel en waarde te specificeren
|
||||
message.specify.url=Gelieve een URL te specificeren
|
||||
message.step.1.continue=Gelieve een template of ISO te selecteren om door te gaan
|
||||
|
|
|
|||
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
|
|
@ -29,6 +29,7 @@ getSPMetadata=15
|
|||
listIdps=15
|
||||
authorizeSamlSso=7
|
||||
listSamlAuthorization=7
|
||||
listAndSwitchSamlAccount=15
|
||||
|
||||
### Account commands
|
||||
createAccount=7
|
||||
|
|
@ -82,8 +83,8 @@ scaleVirtualMachine=15
|
|||
assignVirtualMachine=7
|
||||
migrateVirtualMachine=1
|
||||
migrateVirtualMachineWithVolume=1
|
||||
recoverVirtualMachine=7
|
||||
expungeVirtualMachine=7
|
||||
recoverVirtualMachine=15
|
||||
expungeVirtualMachine=15
|
||||
getVirtualMachineUserData=15
|
||||
|
||||
#### snapshot commands
|
||||
|
|
@ -770,6 +771,7 @@ deleteLdapConfiguration=3
|
|||
listLdapUsers=3
|
||||
ldapCreateAccount=3
|
||||
importLdapUsers=3
|
||||
linkDomainToLdap=3
|
||||
|
||||
|
||||
#### juniper-contrail commands
|
||||
|
|
|
|||
|
|
@ -1,64 +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 com.cloud.agent.api;
|
||||
|
||||
public class AttachVolumeAnswer extends Answer {
|
||||
private Long deviceId;
|
||||
private String vdiUuid;
|
||||
private String chainInfo;
|
||||
|
||||
public AttachVolumeAnswer(AttachVolumeCommand cmd, String result) {
|
||||
super(cmd, false, result);
|
||||
this.deviceId = null;
|
||||
}
|
||||
|
||||
public AttachVolumeAnswer(AttachVolumeCommand cmd, Long deviceId) {
|
||||
super(cmd);
|
||||
this.deviceId = deviceId;
|
||||
this.vdiUuid = "";
|
||||
}
|
||||
|
||||
public AttachVolumeAnswer(AttachVolumeCommand cmd, Long deviceId, String vdiUuid) {
|
||||
super(cmd);
|
||||
this.deviceId = deviceId;
|
||||
this.vdiUuid = vdiUuid;
|
||||
}
|
||||
|
||||
public AttachVolumeAnswer(AttachVolumeCommand cmd) {
|
||||
super(cmd);
|
||||
this.deviceId = null;
|
||||
}
|
||||
|
||||
public Long getDeviceId() {
|
||||
return deviceId;
|
||||
}
|
||||
|
||||
public String getVdiUuid() {
|
||||
return vdiUuid;
|
||||
}
|
||||
|
||||
public void setChainInfo(String chainInfo) {
|
||||
this.chainInfo = chainInfo;
|
||||
}
|
||||
|
||||
public String getChainInfo() {
|
||||
return chainInfo;
|
||||
}
|
||||
}
|
||||
|
|
@ -1,216 +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 com.cloud.agent.api;
|
||||
|
||||
import com.cloud.storage.Storage.StoragePoolType;
|
||||
|
||||
public class AttachVolumeCommand extends Command {
|
||||
private boolean attach;
|
||||
private boolean _managed;
|
||||
private String vmName;
|
||||
private StoragePoolType pooltype;
|
||||
private String volumePath;
|
||||
private String volumeName;
|
||||
private Long volumeSize;
|
||||
private Long deviceId;
|
||||
private String chainInfo;
|
||||
private String poolUuid;
|
||||
private String _storageHost;
|
||||
private int _storagePort;
|
||||
private String _iScsiName;
|
||||
private String _chapInitiatorUsername;
|
||||
private String _chapInitiatorPassword;
|
||||
private String _chapTargetUsername;
|
||||
private String _chapTargetPassword;
|
||||
private Long bytesReadRate;
|
||||
private Long bytesWriteRate;
|
||||
private Long iopsReadRate;
|
||||
private Long iopsWriteRate;
|
||||
private String cacheMode;
|
||||
|
||||
protected AttachVolumeCommand() {
|
||||
}
|
||||
|
||||
public AttachVolumeCommand(boolean attach, boolean managed, String vmName, StoragePoolType pooltype, String volumePath, String volumeName, Long volumeSize,
|
||||
Long deviceId, String chainInfo) {
|
||||
this.attach = attach;
|
||||
this._managed = managed;
|
||||
this.vmName = vmName;
|
||||
this.pooltype = pooltype;
|
||||
this.volumePath = volumePath;
|
||||
this.volumeName = volumeName;
|
||||
this.volumeSize = volumeSize;
|
||||
this.deviceId = deviceId;
|
||||
this.chainInfo = chainInfo;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean executeInSequence() {
|
||||
return true;
|
||||
}
|
||||
|
||||
public boolean getAttach() {
|
||||
return attach;
|
||||
}
|
||||
|
||||
public String getVmName() {
|
||||
return vmName;
|
||||
}
|
||||
|
||||
public StoragePoolType getPooltype() {
|
||||
return pooltype;
|
||||
}
|
||||
|
||||
public void setPooltype(StoragePoolType pooltype) {
|
||||
this.pooltype = pooltype;
|
||||
}
|
||||
|
||||
public String getVolumePath() {
|
||||
return volumePath;
|
||||
}
|
||||
|
||||
public String getVolumeName() {
|
||||
return volumeName;
|
||||
}
|
||||
|
||||
public Long getVolumeSize() {
|
||||
return volumeSize;
|
||||
}
|
||||
|
||||
public Long getDeviceId() {
|
||||
return deviceId;
|
||||
}
|
||||
|
||||
public void setDeviceId(Long deviceId) {
|
||||
this.deviceId = deviceId;
|
||||
}
|
||||
|
||||
public String getPoolUuid() {
|
||||
return poolUuid;
|
||||
}
|
||||
|
||||
public void setPoolUuid(String poolUuid) {
|
||||
this.poolUuid = poolUuid;
|
||||
}
|
||||
|
||||
public String getChainInfo() {
|
||||
return chainInfo;
|
||||
}
|
||||
|
||||
public void setStorageHost(String storageHost) {
|
||||
_storageHost = storageHost;
|
||||
}
|
||||
|
||||
public String getStorageHost() {
|
||||
return _storageHost;
|
||||
}
|
||||
|
||||
public void setStoragePort(int storagePort) {
|
||||
_storagePort = storagePort;
|
||||
}
|
||||
|
||||
public int getStoragePort() {
|
||||
return _storagePort;
|
||||
}
|
||||
|
||||
public boolean isManaged() {
|
||||
return _managed;
|
||||
}
|
||||
|
||||
public void set_iScsiName(String iScsiName) {
|
||||
this._iScsiName = iScsiName;
|
||||
}
|
||||
|
||||
public String get_iScsiName() {
|
||||
return _iScsiName;
|
||||
}
|
||||
|
||||
public void setChapInitiatorUsername(String chapInitiatorUsername) {
|
||||
_chapInitiatorUsername = chapInitiatorUsername;
|
||||
}
|
||||
|
||||
public String getChapInitiatorUsername() {
|
||||
return _chapInitiatorUsername;
|
||||
}
|
||||
|
||||
public void setChapInitiatorPassword(String chapInitiatorPassword) {
|
||||
_chapInitiatorPassword = chapInitiatorPassword;
|
||||
}
|
||||
|
||||
public String getChapInitiatorPassword() {
|
||||
return _chapInitiatorPassword;
|
||||
}
|
||||
|
||||
public void setChapTargetUsername(String chapTargetUsername) {
|
||||
_chapTargetUsername = chapTargetUsername;
|
||||
}
|
||||
|
||||
public String getChapTargetUsername() {
|
||||
return _chapTargetUsername;
|
||||
}
|
||||
|
||||
public void setChapTargetPassword(String chapTargetPassword) {
|
||||
_chapTargetPassword = chapTargetPassword;
|
||||
}
|
||||
|
||||
public String getChapTargetPassword() {
|
||||
return _chapTargetPassword;
|
||||
}
|
||||
|
||||
public void setBytesReadRate(Long bytesReadRate) {
|
||||
this.bytesReadRate = bytesReadRate;
|
||||
}
|
||||
|
||||
public Long getBytesReadRate() {
|
||||
return bytesReadRate;
|
||||
}
|
||||
|
||||
public void setBytesWriteRate(Long bytesWriteRate) {
|
||||
this.bytesWriteRate = bytesWriteRate;
|
||||
}
|
||||
|
||||
public Long getBytesWriteRate() {
|
||||
return bytesWriteRate;
|
||||
}
|
||||
|
||||
public void setIopsReadRate(Long iopsReadRate) {
|
||||
this.iopsReadRate = iopsReadRate;
|
||||
}
|
||||
|
||||
public Long getIopsReadRate() {
|
||||
return iopsReadRate;
|
||||
}
|
||||
|
||||
public void setIopsWriteRate(Long iopsWriteRate) {
|
||||
this.iopsWriteRate = iopsWriteRate;
|
||||
}
|
||||
|
||||
public Long getIopsWriteRate() {
|
||||
return iopsWriteRate;
|
||||
}
|
||||
|
||||
public void setCacheMode(String cacheMode) {
|
||||
this.cacheMode = cacheMode;
|
||||
}
|
||||
|
||||
public String getCacheMode() {
|
||||
return cacheMode;
|
||||
}
|
||||
}
|
||||
|
|
@ -25,8 +25,14 @@ import org.apache.cloudstack.storage.to.VolumeObjectTO;
|
|||
|
||||
|
||||
public class CreateVMSnapshotCommand extends VMSnapshotBaseCommand {
|
||||
private String vmUuid;
|
||||
|
||||
public CreateVMSnapshotCommand(String vmName, VMSnapshotTO snapshot, List<VolumeObjectTO> volumeTOs, String guestOSType) {
|
||||
public CreateVMSnapshotCommand(String vmName, String vmUuid, VMSnapshotTO snapshot, List<VolumeObjectTO> volumeTOs, String guestOSType) {
|
||||
super(vmName, snapshot, volumeTOs, guestOSType);
|
||||
this.vmUuid = vmUuid;
|
||||
}
|
||||
|
||||
public String getVmUuid() {
|
||||
return vmUuid;
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -26,6 +26,7 @@ import com.cloud.storage.template.TemplateProp;
|
|||
public class ModifyStoragePoolAnswer extends Answer {
|
||||
StoragePoolInfo poolInfo;
|
||||
Map<String, TemplateProp> templateInfo;
|
||||
String localDatastoreName = null;
|
||||
|
||||
protected ModifyStoragePoolAnswer() {
|
||||
}
|
||||
|
|
@ -55,4 +56,12 @@ public class ModifyStoragePoolAnswer extends Answer {
|
|||
this.templateInfo = templateInfo;
|
||||
}
|
||||
|
||||
public String getLocalDatastoreName() {
|
||||
return localDatastoreName;
|
||||
}
|
||||
|
||||
public void setLocalDatastoreName(String localDatastoreName) {
|
||||
this.localDatastoreName = localDatastoreName;
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
|||
|
|
@ -25,16 +25,18 @@ import org.apache.cloudstack.storage.to.VolumeObjectTO;
|
|||
|
||||
public class RevertToVMSnapshotCommand extends VMSnapshotBaseCommand {
|
||||
|
||||
public RevertToVMSnapshotCommand(String vmName, VMSnapshotTO snapshot, List<VolumeObjectTO> volumeTOs, String guestOSType) {
|
||||
public RevertToVMSnapshotCommand(String vmName, String vmUuid, VMSnapshotTO snapshot, List<VolumeObjectTO> volumeTOs, String guestOSType) {
|
||||
super(vmName, snapshot, volumeTOs, guestOSType);
|
||||
this.vmUuid = vmUuid;
|
||||
}
|
||||
|
||||
public RevertToVMSnapshotCommand(String vmName, VMSnapshotTO snapshot, List<VolumeObjectTO> volumeTOs, String guestOSType, boolean reloadVm) {
|
||||
this(vmName, snapshot, volumeTOs, guestOSType);
|
||||
public RevertToVMSnapshotCommand(String vmName, String vmUuid, VMSnapshotTO snapshot, List<VolumeObjectTO> volumeTOs, String guestOSType, boolean reloadVm) {
|
||||
this(vmName, vmUuid, snapshot, volumeTOs, guestOSType);
|
||||
setReloadVm(reloadVm);
|
||||
}
|
||||
|
||||
private boolean reloadVm = false;
|
||||
private String vmUuid;
|
||||
|
||||
public boolean isReloadVm() {
|
||||
return reloadVm;
|
||||
|
|
@ -43,4 +45,8 @@ public class RevertToVMSnapshotCommand extends VMSnapshotBaseCommand {
|
|||
public void setReloadVm(boolean reloadVm) {
|
||||
this.reloadVm = reloadVm;
|
||||
}
|
||||
|
||||
public String getVmUuid() {
|
||||
return vmUuid;
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -24,6 +24,7 @@ import com.cloud.agent.api.Command;
|
|||
|
||||
public class MigrateVolumeAnswer extends Answer {
|
||||
private String volumePath;
|
||||
private String volumeChain;
|
||||
|
||||
public MigrateVolumeAnswer(Command command, boolean success, String details, String volumePath) {
|
||||
super(command, success, details);
|
||||
|
|
@ -38,4 +39,12 @@ public class MigrateVolumeAnswer extends Answer {
|
|||
public String getVolumePath() {
|
||||
return volumePath;
|
||||
}
|
||||
|
||||
public void setVolumeChainInfo(String chainInfo) {
|
||||
this.volumeChain = chainInfo;
|
||||
}
|
||||
|
||||
public String getVolumeChainInfo() {
|
||||
return volumeChain;
|
||||
}
|
||||
}
|
||||
|
|
@ -123,6 +123,7 @@ public class LocalTemplateDownloader extends TemplateDownloaderBase implements T
|
|||
try {
|
||||
fic.close();
|
||||
} catch (IOException e) {
|
||||
s_logger.info("[ignore] error while closing file input channel.");
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -130,6 +131,7 @@ public class LocalTemplateDownloader extends TemplateDownloaderBase implements T
|
|||
try {
|
||||
foc.close();
|
||||
} catch (IOException e) {
|
||||
s_logger.info("[ignore] error while closing file output channel.");
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -137,6 +139,7 @@ public class LocalTemplateDownloader extends TemplateDownloaderBase implements T
|
|||
try {
|
||||
fis.close();
|
||||
} catch (IOException e) {
|
||||
s_logger.info("[ignore] error while closing file input stream.");
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -144,6 +147,7 @@ public class LocalTemplateDownloader extends TemplateDownloaderBase implements T
|
|||
try {
|
||||
fos.close();
|
||||
} catch (IOException e) {
|
||||
s_logger.info("[ignore] error while closing file output stream.");
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -155,16 +159,4 @@ public class LocalTemplateDownloader extends TemplateDownloaderBase implements T
|
|||
}
|
||||
}
|
||||
}
|
||||
|
||||
public static void main(String[] args) {
|
||||
String url = "file:///home/ahuang/Download/E3921_P5N7A-VM_manual.zip";
|
||||
TemplateDownloader td = new LocalTemplateDownloader(null, url, "/tmp/mysql", TemplateDownloader.DEFAULT_MAX_TEMPLATE_SIZE_IN_BYTES, null);
|
||||
long bytes = td.download(true, null);
|
||||
if (bytes > 0) {
|
||||
System.out.println("Downloaded (" + bytes + " bytes)" + " in " + td.getDownloadTime() / 1000 + " secs");
|
||||
} else {
|
||||
System.out.println("Failed download");
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -91,7 +91,8 @@ public class OVAProcessor extends AdapterBase implements Processor {
|
|||
long size = getTemplateVirtualSize(file.getParent(), file.getName());
|
||||
return size;
|
||||
} catch (Exception e) {
|
||||
|
||||
s_logger.info("[ignored]"
|
||||
+ "failed to get virtual template size for ova: " + e.getLocalizedMessage());
|
||||
}
|
||||
return file.length();
|
||||
}
|
||||
|
|
|
|||
|
|
@ -27,6 +27,8 @@ import java.io.IOException;
|
|||
import java.io.InputStream;
|
||||
import java.util.Date;
|
||||
|
||||
import org.apache.cloudstack.managed.context.ManagedContextRunnable;
|
||||
import org.apache.cloudstack.storage.command.DownloadCommand.ResourceType;
|
||||
import org.apache.commons.httpclient.ChunkedInputStream;
|
||||
import org.apache.commons.httpclient.Credentials;
|
||||
import org.apache.commons.httpclient.Header;
|
||||
|
|
@ -50,10 +52,6 @@ import com.amazonaws.services.s3.model.ProgressEvent;
|
|||
import com.amazonaws.services.s3.model.ProgressListener;
|
||||
import com.amazonaws.services.s3.model.PutObjectRequest;
|
||||
import com.amazonaws.services.s3.model.StorageClass;
|
||||
|
||||
import org.apache.cloudstack.managed.context.ManagedContextRunnable;
|
||||
import org.apache.cloudstack.storage.command.DownloadCommand.ResourceType;
|
||||
|
||||
import com.cloud.agent.api.storage.Proxy;
|
||||
import com.cloud.agent.api.to.S3TO;
|
||||
import com.cloud.utils.Pair;
|
||||
|
|
@ -61,46 +59,48 @@ import com.cloud.utils.S3Utils;
|
|||
import com.cloud.utils.UriUtils;
|
||||
|
||||
/**
|
||||
* Download a template file using HTTP
|
||||
*
|
||||
* Download a template file using HTTP(S)
|
||||
*/
|
||||
public class S3TemplateDownloader extends ManagedContextRunnable implements TemplateDownloader {
|
||||
public static final Logger s_logger = Logger.getLogger(S3TemplateDownloader.class.getName());
|
||||
private static final Logger s_logger = Logger.getLogger(S3TemplateDownloader.class.getName());
|
||||
private static final MultiThreadedHttpConnectionManager s_httpClientManager = new MultiThreadedHttpConnectionManager();
|
||||
|
||||
private String downloadUrl;
|
||||
private String installPath;
|
||||
private String s3Key;
|
||||
private String fileName;
|
||||
public TemplateDownloader.Status status = TemplateDownloader.Status.NOT_STARTED;
|
||||
public String errorString = " ";
|
||||
private long remoteSize = 0;
|
||||
public long downloadTime = 0;
|
||||
public long totalBytes;
|
||||
private String fileExtension;
|
||||
private String errorString = " ";
|
||||
|
||||
private TemplateDownloader.Status status = TemplateDownloader.Status.NOT_STARTED;
|
||||
private ResourceType resourceType = ResourceType.TEMPLATE;
|
||||
private final HttpClient client;
|
||||
private final HttpMethodRetryHandler myretryhandler;
|
||||
private GetMethod request;
|
||||
private boolean resume = false;
|
||||
private DownloadCompleteCallback completionCallback;
|
||||
private S3TO s3;
|
||||
private S3TO s3to;
|
||||
|
||||
private long remoteSize = 0;
|
||||
private long downloadTime = 0;
|
||||
private long totalBytes;
|
||||
private long maxTemplateSizeInByte;
|
||||
|
||||
private boolean resume = false;
|
||||
private boolean inited = true;
|
||||
|
||||
private long maxTemplateSizeInByte;
|
||||
private ResourceType resourceType = ResourceType.TEMPLATE;
|
||||
private final HttpMethodRetryHandler myretryhandler;
|
||||
|
||||
public S3TemplateDownloader(S3TO storageLayer, String downloadUrl, String installPath, DownloadCompleteCallback callback, long maxTemplateSizeInBytes, String user,
|
||||
String password, Proxy proxy, ResourceType resourceType) {
|
||||
s3 = storageLayer;
|
||||
public S3TemplateDownloader(S3TO s3to, String downloadUrl, String installPath, DownloadCompleteCallback callback,
|
||||
long maxTemplateSizeInBytes, String user, String password, Proxy proxy, ResourceType resourceType) {
|
||||
this.s3to = s3to;
|
||||
this.downloadUrl = downloadUrl;
|
||||
this.installPath = installPath;
|
||||
status = TemplateDownloader.Status.NOT_STARTED;
|
||||
this.status = TemplateDownloader.Status.NOT_STARTED;
|
||||
this.resourceType = resourceType;
|
||||
maxTemplateSizeInByte = maxTemplateSizeInBytes;
|
||||
this.maxTemplateSizeInByte = maxTemplateSizeInBytes;
|
||||
|
||||
totalBytes = 0;
|
||||
client = new HttpClient(s_httpClientManager);
|
||||
this.totalBytes = 0;
|
||||
this.client = new HttpClient(s_httpClientManager);
|
||||
|
||||
myretryhandler = new HttpMethodRetryHandler() {
|
||||
this.myretryhandler = new HttpMethodRetryHandler() {
|
||||
@Override
|
||||
public boolean retryMethod(final HttpMethod method, final IOException exception, int executionCount) {
|
||||
if (executionCount >= 2) {
|
||||
|
|
@ -128,6 +128,7 @@ public class S3TemplateDownloader extends ManagedContextRunnable implements Temp
|
|||
|
||||
Pair<String, Integer> hostAndPort = UriUtils.validateUrl(downloadUrl);
|
||||
fileName = StringUtils.substringAfterLast(downloadUrl, "/");
|
||||
fileExtension = StringUtils.substringAfterLast(fileName, ".");
|
||||
|
||||
if (proxy != null) {
|
||||
client.getHostConfiguration().setProxy(proxy.getHost(), proxy.getPort());
|
||||
|
|
@ -139,8 +140,10 @@ public class S3TemplateDownloader extends ManagedContextRunnable implements Temp
|
|||
if ((user != null) && (password != null)) {
|
||||
client.getParams().setAuthenticationPreemptive(true);
|
||||
Credentials defaultcreds = new UsernamePasswordCredentials(user, password);
|
||||
client.getState().setCredentials(new AuthScope(hostAndPort.first(), hostAndPort.second(), AuthScope.ANY_REALM), defaultcreds);
|
||||
s_logger.info("Added username=" + user + ", password=" + password + "for host " + hostAndPort.first() + ":" + hostAndPort.second());
|
||||
client.getState().setCredentials(
|
||||
new AuthScope(hostAndPort.first(), hostAndPort.second(), AuthScope.ANY_REALM), defaultcreds);
|
||||
s_logger.info("Added username=" + user + ", password=" + password + "for host " + hostAndPort.first()
|
||||
+ ":" + hostAndPort.second());
|
||||
} else {
|
||||
s_logger.info("No credentials configured for host=" + hostAndPort.first() + ":" + hostAndPort.second());
|
||||
}
|
||||
|
|
@ -160,11 +163,11 @@ public class S3TemplateDownloader extends ManagedContextRunnable implements Temp
|
|||
@Override
|
||||
public long download(boolean resume, DownloadCompleteCallback callback) {
|
||||
switch (status) {
|
||||
case ABORTED:
|
||||
case UNRECOVERABLE_ERROR:
|
||||
case DOWNLOAD_FINISHED:
|
||||
return 0;
|
||||
default:
|
||||
case ABORTED:
|
||||
case UNRECOVERABLE_ERROR:
|
||||
case DOWNLOAD_FINISHED:
|
||||
return 0;
|
||||
default:
|
||||
|
||||
}
|
||||
|
||||
|
|
@ -215,10 +218,11 @@ public class S3TemplateDownloader extends ManagedContextRunnable implements Temp
|
|||
contentType = contentTypeHeader.getValue();
|
||||
}
|
||||
|
||||
InputStream in = !chunked ? new BufferedInputStream(request.getResponseBodyAsStream()) : new ChunkedInputStream(request.getResponseBodyAsStream());
|
||||
InputStream in = !chunked ? new BufferedInputStream(request.getResponseBodyAsStream())
|
||||
: new ChunkedInputStream(request.getResponseBodyAsStream());
|
||||
|
||||
s_logger.info("Starting download from " + getDownloadUrl() + " to s3 bucket " + s3.getBucketName() + " remoteSize=" + remoteSize + " , max size=" +
|
||||
maxTemplateSizeInByte);
|
||||
s_logger.info("Starting download from " + getDownloadUrl() + " to s3 bucket " + s3to.getBucketName()
|
||||
+ " remoteSize=" + remoteSize + " , max size=" + maxTemplateSizeInByte);
|
||||
|
||||
Date start = new Date();
|
||||
// compute s3 key
|
||||
|
|
@ -230,9 +234,9 @@ public class S3TemplateDownloader extends ManagedContextRunnable implements Temp
|
|||
if (contentType != null) {
|
||||
metadata.setContentType(contentType);
|
||||
}
|
||||
PutObjectRequest putObjectRequest = new PutObjectRequest(s3.getBucketName(), s3Key, in, metadata);
|
||||
PutObjectRequest putObjectRequest = new PutObjectRequest(s3to.getBucketName(), s3Key, in, metadata);
|
||||
// check if RRS is enabled
|
||||
if (s3.getEnableRRS()) {
|
||||
if (s3to.getEnableRRS()) {
|
||||
putObjectRequest = putObjectRequest.withStorageClass(StorageClass.ReducedRedundancy);
|
||||
}
|
||||
// register progress listenser
|
||||
|
|
@ -257,14 +261,15 @@ public class S3TemplateDownloader extends ManagedContextRunnable implements Temp
|
|||
|
||||
});
|
||||
|
||||
if (!s3.getSingleUpload(remoteSize)) {
|
||||
if (!s3to.getSingleUpload(remoteSize)) {
|
||||
// use TransferManager to do multipart upload
|
||||
S3Utils.mputObject(s3, putObjectRequest);
|
||||
S3Utils.mputObject(s3to, putObjectRequest);
|
||||
} else {
|
||||
// single part upload, with 5GB limit in Amazon
|
||||
S3Utils.putObject(s3, putObjectRequest);
|
||||
while (status != TemplateDownloader.Status.DOWNLOAD_FINISHED && status != TemplateDownloader.Status.UNRECOVERABLE_ERROR &&
|
||||
status != TemplateDownloader.Status.ABORTED) {
|
||||
S3Utils.putObject(s3to, putObjectRequest);
|
||||
while (status != TemplateDownloader.Status.DOWNLOAD_FINISHED
|
||||
&& status != TemplateDownloader.Status.UNRECOVERABLE_ERROR
|
||||
&& status != TemplateDownloader.Status.ABORTED) {
|
||||
// wait for completion
|
||||
}
|
||||
}
|
||||
|
|
@ -324,32 +329,59 @@ public class S3TemplateDownloader extends ManagedContextRunnable implements Temp
|
|||
return totalBytes;
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns an InputStream only when the status is DOWNLOAD_FINISHED.
|
||||
*
|
||||
* The caller of this method must close the InputStream to prevent resource leaks!
|
||||
*
|
||||
* @return S3ObjectInputStream of the object.
|
||||
*/
|
||||
public InputStream getS3ObjectInputStream() {
|
||||
// Check if the download is finished
|
||||
if (status != Status.DOWNLOAD_FINISHED) {
|
||||
return null;
|
||||
}
|
||||
|
||||
return S3Utils.getObjectStream(s3to, s3to.getBucketName(), s3Key);
|
||||
}
|
||||
|
||||
public void cleanupAfterError() {
|
||||
if (status != Status.UNRECOVERABLE_ERROR) {
|
||||
s_logger.debug("S3Template downloader does not have state UNRECOVERABLE_ERROR, no cleanup neccesarry.");
|
||||
return;
|
||||
}
|
||||
|
||||
s_logger.info("Cleanup after UNRECOVERABLE_ERROR, trying to remove object: " + s3Key);
|
||||
|
||||
S3Utils.deleteObject(s3to, s3to.getBucketName(), s3Key);
|
||||
}
|
||||
|
||||
@Override
|
||||
@SuppressWarnings("fallthrough")
|
||||
public boolean stopDownload() {
|
||||
switch (getStatus()) {
|
||||
case IN_PROGRESS:
|
||||
if (request != null) {
|
||||
request.abort();
|
||||
}
|
||||
status = TemplateDownloader.Status.ABORTED;
|
||||
return true;
|
||||
case UNKNOWN:
|
||||
case NOT_STARTED:
|
||||
case RECOVERABLE_ERROR:
|
||||
case UNRECOVERABLE_ERROR:
|
||||
case ABORTED:
|
||||
status = TemplateDownloader.Status.ABORTED;
|
||||
case DOWNLOAD_FINISHED:
|
||||
try {
|
||||
S3Utils.deleteObject(s3, s3.getBucketName(), s3Key);
|
||||
} catch (Exception ex) {
|
||||
// ignore delete exception if it is not there
|
||||
}
|
||||
return true;
|
||||
case IN_PROGRESS:
|
||||
if (request != null) {
|
||||
request.abort();
|
||||
}
|
||||
status = TemplateDownloader.Status.ABORTED;
|
||||
return true;
|
||||
case UNKNOWN:
|
||||
case NOT_STARTED:
|
||||
case RECOVERABLE_ERROR:
|
||||
case UNRECOVERABLE_ERROR:
|
||||
case ABORTED:
|
||||
status = TemplateDownloader.Status.ABORTED;
|
||||
case DOWNLOAD_FINISHED:
|
||||
try {
|
||||
S3Utils.deleteObject(s3to, s3to.getBucketName(), s3Key);
|
||||
} catch (Exception ex) {
|
||||
// ignore delete exception if it is not there
|
||||
}
|
||||
return true;
|
||||
|
||||
default:
|
||||
return true;
|
||||
default:
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -359,7 +391,7 @@ public class S3TemplateDownloader extends ManagedContextRunnable implements Temp
|
|||
return 0;
|
||||
}
|
||||
|
||||
return (int)(100.0 * totalBytes / remoteSize);
|
||||
return (int) (100.0 * totalBytes / remoteSize);
|
||||
}
|
||||
|
||||
@Override
|
||||
|
|
@ -417,4 +449,11 @@ public class S3TemplateDownloader extends ManagedContextRunnable implements Temp
|
|||
return resourceType;
|
||||
}
|
||||
|
||||
}
|
||||
public long getTotalBytes() {
|
||||
return totalBytes;
|
||||
}
|
||||
|
||||
public String getFileExtension() {
|
||||
return fileExtension;
|
||||
}
|
||||
}
|
||||
|
|
@ -94,17 +94,10 @@ public class TemplateLocation {
|
|||
}
|
||||
|
||||
public boolean load() throws IOException {
|
||||
FileInputStream strm = null;
|
||||
try {
|
||||
strm = new FileInputStream(_file);
|
||||
try (FileInputStream strm = new FileInputStream(_file);) {
|
||||
_props.load(strm);
|
||||
} finally {
|
||||
if (strm != null) {
|
||||
try {
|
||||
strm.close();
|
||||
} catch (IOException e) {
|
||||
}
|
||||
}
|
||||
} catch (IOException e) {
|
||||
s_logger.warn("Unable to load the template properties", e);
|
||||
}
|
||||
|
||||
for (ImageFormat format : ImageFormat.values()) {
|
||||
|
|
@ -142,20 +135,11 @@ public class TemplateLocation {
|
|||
_props.setProperty(info.format.getFileExtension() + ".size", Long.toString(info.size));
|
||||
_props.setProperty(info.format.getFileExtension() + ".virtualsize", Long.toString(info.virtualSize));
|
||||
}
|
||||
FileOutputStream strm = null;
|
||||
try {
|
||||
strm = new FileOutputStream(_file);
|
||||
try (FileOutputStream strm = new FileOutputStream(_file);) {
|
||||
_props.store(strm, "");
|
||||
} catch (IOException e) {
|
||||
s_logger.warn("Unable to save the template properties ", e);
|
||||
return false;
|
||||
} finally {
|
||||
if (strm != null) {
|
||||
try {
|
||||
strm.close();
|
||||
} catch (IOException e) {
|
||||
}
|
||||
}
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -77,7 +77,8 @@ public class VmdkProcessor extends AdapterBase implements Processor {
|
|||
long size = getTemplateVirtualSize(file.getParent(), file.getName());
|
||||
return size;
|
||||
} catch (Exception e) {
|
||||
|
||||
s_logger.info("[ignored]"
|
||||
+ "failed to get template virtual size for vmdk: " + e.getLocalizedMessage());
|
||||
}
|
||||
return file.length();
|
||||
}
|
||||
|
|
@ -86,9 +87,10 @@ public class VmdkProcessor extends AdapterBase implements Processor {
|
|||
long virtualSize = 0;
|
||||
String templateFileFullPath = templatePath.endsWith(File.separator) ? templatePath : templatePath + File.separator;
|
||||
templateFileFullPath += templateName.endsWith(ImageFormat.VMDK.getFileExtension()) ? templateName : templateName + "." + ImageFormat.VMDK.getFileExtension();
|
||||
try {
|
||||
FileReader fileReader = new FileReader(templateFileFullPath);
|
||||
BufferedReader bufferedReader = new BufferedReader(fileReader);
|
||||
try (
|
||||
FileReader fileReader = new FileReader(templateFileFullPath);
|
||||
BufferedReader bufferedReader = new BufferedReader(fileReader);
|
||||
) {
|
||||
Pattern regex = Pattern.compile("(RW|RDONLY|NOACCESS) (\\d+) (FLAT|SPARSE|ZERO|VMFS|VMFSSPARSE|VMFSDRM|VMFSRAW)");
|
||||
String line = null;
|
||||
while((line = bufferedReader.readLine()) != null) {
|
||||
|
|
@ -99,7 +101,6 @@ public class VmdkProcessor extends AdapterBase implements Processor {
|
|||
break;
|
||||
}
|
||||
}
|
||||
bufferedReader.close();
|
||||
} catch(FileNotFoundException ex) {
|
||||
String msg = "Unable to open file '" + templateFileFullPath + "' " + ex.toString();
|
||||
s_logger.error(msg);
|
||||
|
|
|
|||
|
|
@ -0,0 +1,49 @@
|
|||
/*
|
||||
* 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.storage.command;
|
||||
|
||||
import org.apache.cloudstack.storage.to.SnapshotObjectTO;
|
||||
|
||||
public final class RevertSnapshotCommand extends StorageSubSystemCommand {
|
||||
private SnapshotObjectTO data;
|
||||
private boolean _executeInSequence = false;
|
||||
|
||||
public RevertSnapshotCommand(SnapshotObjectTO data) {
|
||||
super();
|
||||
this.data = data;
|
||||
}
|
||||
|
||||
protected RevertSnapshotCommand() {
|
||||
super();
|
||||
}
|
||||
|
||||
public SnapshotObjectTO getData() {
|
||||
return this.data;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setExecuteInSequence(final boolean executeInSequence) {
|
||||
_executeInSequence = executeInSequence;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean executeInSequence() {
|
||||
return _executeInSequence;
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,41 @@
|
|||
//
|
||||
// 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.storage.template;
|
||||
|
||||
import static org.junit.Assert.fail;
|
||||
|
||||
import java.io.File;
|
||||
|
||||
import org.junit.Test;
|
||||
|
||||
|
||||
public class LocalTemplateDownloaderTest {
|
||||
|
||||
@Test
|
||||
public void localTemplateDownloaderTest() {
|
||||
String url = "file://" + new File("pom.xml").getAbsolutePath();
|
||||
TemplateDownloader td = new LocalTemplateDownloader(null, url, "/tmp", TemplateDownloader.DEFAULT_MAX_TEMPLATE_SIZE_IN_BYTES, null);
|
||||
long bytes = td.download(true, null);
|
||||
if (!(bytes > 0)) {
|
||||
fail("Failed download");
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
|
@ -1,66 +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.agent.test;
|
||||
|
||||
import static org.junit.Assert.assertEquals;
|
||||
import static org.junit.Assert.assertTrue;
|
||||
|
||||
import org.junit.Test;
|
||||
|
||||
import com.cloud.agent.api.AttachVolumeAnswer;
|
||||
import com.cloud.agent.api.AttachVolumeCommand;
|
||||
import com.cloud.storage.Storage.StoragePoolType;
|
||||
|
||||
public class AttachVolumeAnswerTest {
|
||||
AttachVolumeCommand avc = new AttachVolumeCommand(true, false, "vmname", StoragePoolType.Filesystem, "vPath", "vName", 1073741824L, 123456789L, "chainInfo");
|
||||
AttachVolumeAnswer ava1 = new AttachVolumeAnswer(avc);
|
||||
String results = "";
|
||||
AttachVolumeAnswer ava2 = new AttachVolumeAnswer(avc, results);
|
||||
Long deviceId = 10L;
|
||||
AttachVolumeAnswer ava3 = new AttachVolumeAnswer(avc, deviceId);
|
||||
|
||||
@Test
|
||||
public void testGetDeviceId() {
|
||||
Long dId = ava1.getDeviceId();
|
||||
assertTrue(dId == null);
|
||||
|
||||
dId = ava2.getDeviceId();
|
||||
assertTrue(dId == null);
|
||||
|
||||
dId = ava3.getDeviceId();
|
||||
Long expected = 10L;
|
||||
assertEquals(expected, dId);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testGetChainInfo() {
|
||||
ava1.setChainInfo("chainInfo");
|
||||
String chainInfo = ava1.getChainInfo();
|
||||
assertTrue(chainInfo.equals("chainInfo"));
|
||||
|
||||
ava2.setChainInfo("chainInfo");
|
||||
chainInfo = ava2.getChainInfo();
|
||||
assertTrue(chainInfo.equals("chainInfo"));
|
||||
|
||||
ava3.setChainInfo("chainInfo");
|
||||
chainInfo = ava3.getChainInfo();
|
||||
assertTrue(chainInfo.equals("chainInfo"));
|
||||
}
|
||||
}
|
||||
|
|
@ -1,115 +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.agent.test;
|
||||
|
||||
import static org.junit.Assert.assertEquals;
|
||||
import static org.junit.Assert.assertTrue;
|
||||
|
||||
import org.junit.Test;
|
||||
|
||||
import com.cloud.agent.api.AttachVolumeCommand;
|
||||
import com.cloud.storage.Storage.StoragePoolType;
|
||||
|
||||
public class AttachVolumeCommandTest {
|
||||
AttachVolumeCommand avc = new AttachVolumeCommand(true, false, "vmname", StoragePoolType.Filesystem, "vPath", "vName", 1073741824L, 123456789L, "chainInfo");
|
||||
|
||||
@Test
|
||||
public void testExecuteInSequence() {
|
||||
boolean b = avc.executeInSequence();
|
||||
assertTrue(b);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testGetAttach() {
|
||||
boolean b = avc.getAttach();
|
||||
assertTrue(b);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testGetVmName() {
|
||||
String vmName = avc.getVmName();
|
||||
assertTrue(vmName.equals("vmname"));
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testGetPooltype() {
|
||||
StoragePoolType pt = avc.getPooltype();
|
||||
assertTrue(pt.equals(StoragePoolType.Filesystem));
|
||||
|
||||
avc.setPooltype(StoragePoolType.NetworkFilesystem);
|
||||
pt = avc.getPooltype();
|
||||
assertTrue(pt.equals(StoragePoolType.NetworkFilesystem));
|
||||
|
||||
avc.setPooltype(StoragePoolType.IscsiLUN);
|
||||
pt = avc.getPooltype();
|
||||
assertTrue(pt.equals(StoragePoolType.IscsiLUN));
|
||||
|
||||
avc.setPooltype(StoragePoolType.Iscsi);
|
||||
pt = avc.getPooltype();
|
||||
assertTrue(pt.equals(StoragePoolType.Iscsi));
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testGetVolumePath() {
|
||||
String vPath = avc.getVolumePath();
|
||||
assertTrue(vPath.equals("vPath"));
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testGetVolumeName() {
|
||||
String vName = avc.getVolumeName();
|
||||
assertTrue(vName.equals("vName"));
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testGetDeviceId() {
|
||||
Long dId = avc.getDeviceId();
|
||||
Long expected = 123456789L;
|
||||
assertEquals(expected, dId);
|
||||
|
||||
avc.setDeviceId(5L);
|
||||
dId = avc.getDeviceId();
|
||||
expected = 5L;
|
||||
assertEquals(expected, dId);
|
||||
|
||||
avc.setDeviceId(0L);
|
||||
dId = avc.getDeviceId();
|
||||
expected = 0L;
|
||||
assertEquals(expected, dId);
|
||||
|
||||
avc.setDeviceId(-5L);
|
||||
dId = avc.getDeviceId();
|
||||
expected = -5L;
|
||||
assertEquals(expected, dId);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testGetPoolUuid() {
|
||||
avc.setPoolUuid("420fa39c-4ef1-a83c-fd93-46dc1ff515ae");
|
||||
String pUuid = avc.getPoolUuid();
|
||||
assertTrue(pUuid.equals("420fa39c-4ef1-a83c-fd93-46dc1ff515ae"));
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testGetWait() {
|
||||
String cInfo = avc.getChainInfo();
|
||||
assertTrue(cInfo.equals("chainInfo"));
|
||||
}
|
||||
}
|
||||
|
|
@ -6,7 +6,7 @@ cloudstack (4.6.0-SNAPSHOT) unstable; urgency=low
|
|||
[ Rafael da Fonseca ]
|
||||
* Switch to dpkg-source 3.0 (native) format
|
||||
|
||||
-- Rafael da Fonseca <rsafonseca@gmail.com> Fri, 22 May 2015 16:03:55 +0200
|
||||
-- the Apache CloudStack project <dev@cloudstack.apache.org> Thu, 18 Jun 2015 11:17:09 +0200
|
||||
|
||||
cloudstack (4.5.0-snapshot) unstable; urgency=low
|
||||
|
||||
|
|
|
|||
|
|
@ -24,6 +24,7 @@
|
|||
/usr/share/cloudstack-common/scripts/vm/systemvm/*
|
||||
/usr/share/cloudstack-common/scripts/vm/pingtest.sh
|
||||
/usr/share/cloudstack-common/scripts/vm/hypervisor/kvm/*
|
||||
/usr/share/cloudstack-common/scripts/vm/hypervisor/update_host_passwd.sh
|
||||
/usr/share/cloudstack-common/scripts/vm/hypervisor/versions.sh
|
||||
/usr/share/cloudstack-common/scripts/vm/hypervisor/xenserver/*
|
||||
/usr/share/cloudstack-common/lib/*
|
||||
|
|
|
|||
|
|
@ -2,8 +2,8 @@ Source: cloudstack
|
|||
Section: libs
|
||||
Priority: extra
|
||||
Maintainer: Wido den Hollander <wido@widodh.nl>
|
||||
Build-Depends: debhelper (>= 7), openjdk-7-jdk | openjdk-8-jdk, genisoimage,
|
||||
python-mysqldb, maven (>= 3) | maven3, python (>= 2.6.6-3~)
|
||||
Build-Depends: debhelper (>= 9), openjdk-8-jdk | openjdk-7-jdk, genisoimage,
|
||||
python-mysqldb, maven (>= 3) | maven3, python (>= 2.7)
|
||||
Standards-Version: 3.8.1
|
||||
Homepage: http://www.cloudstack.org/
|
||||
|
||||
|
|
@ -15,14 +15,14 @@ Description: A common package which contains files which are shared by several C
|
|||
|
||||
Package: cloudstack-management
|
||||
Architecture: all
|
||||
Depends: ${misc:Depends}, ${python:Depends}, cloudstack-common (= ${source:Version}), tomcat6 | tomcat7 | tomcat8, sudo, jsvc, python-mysqldb, libmysql-java, python-paramiko, augeas-tools, mysql-client, adduser
|
||||
Depends: ${misc:Depends}, ${python:Depends}, cloudstack-common (= ${source:Version}), tomcat8 | tomcat7 | tomcat6, sudo, jsvc, python-mysqldb, libmysql-java, augeas-tools, mysql-client, adduser
|
||||
Conflicts: cloud-server, cloud-client, cloud-client-ui
|
||||
Description: CloudStack server library
|
||||
The CloudStack management server
|
||||
|
||||
Package: cloudstack-agent
|
||||
Architecture: all
|
||||
Depends: ${misc:Depends}, ${python:Depends}, openjdk-7-jre-headless | openjdk-8-jre-headless, cloudstack-common (= ${source:Version}), lsb-base (>= 3.2), libcommons-daemon-java, openssh-client, libvirt0, qemu-system-x86 | qemu-kvm, libvirt-bin, uuid-runtime, rsync, iproute, perl-modules, ebtables, vlan, wget, jsvc, ipset, python-libvirt, ethtool, iptables
|
||||
Depends: ${misc:Depends}, ${python:Depends}, openjdk-8-jre-headless | openjdk-7-jre-headless, cloudstack-common (= ${source:Version}), lsb-base (>= 4.0), libcommons-daemon-java, openssh-client, qemu-kvm (>= 1.0), libvirt-bin (>= 0.9.8), uuid-runtime, iproute, ebtables, vlan, jsvc, ipset, python-libvirt, ethtool, iptables
|
||||
Conflicts: cloud-agent, cloud-agent-libs, cloud-agent-deps, cloud-agent-scripts
|
||||
Description: CloudStack agent
|
||||
The CloudStack agent is in charge of managing shared computing resources in
|
||||
|
|
@ -31,7 +31,7 @@ Description: CloudStack agent
|
|||
|
||||
Package: cloudstack-usage
|
||||
Architecture: all
|
||||
Depends: ${misc:Depends}, openjdk-7-jre-headless | openjdk-8-jre-headless, cloudstack-common (= ${source:Version}), jsvc, libmysql-java
|
||||
Depends: ${misc:Depends}, openjdk-8-jre-headless | openjdk-7-jre-headless, cloudstack-common (= ${source:Version}), jsvc, libmysql-java
|
||||
Description: CloudStack usage monitor
|
||||
The CloudStack usage monitor provides usage accounting across the entire cloud for
|
||||
cloud operators to charge based on usage parameters.
|
||||
|
|
|
|||
|
|
@ -1,6 +1,6 @@
|
|||
#!/usr/bin/make -f
|
||||
# -*- makefile -*-
|
||||
VERSION := $(shell mvn org.apache.maven.plugins:maven-help-plugin:2.1.1:evaluate -Dexpression=project.version | grep -v "\[")
|
||||
VERSION := $(shell grep '^ <version>' pom.xml| cut -d'>' -f2 |cut -d'<' -f1)
|
||||
PACKAGE = $(shell dh_listpackages|head -n 1|cut -d '-' -f 1)
|
||||
SYSCONFDIR = "/etc"
|
||||
DESTDIR = "debian/tmp"
|
||||
|
|
|
|||
|
|
@ -18,8 +18,10 @@
|
|||
*/
|
||||
package org.apache.cloudstack.engine.subsystem.api.storage;
|
||||
|
||||
import com.cloud.exception.StorageConflictException;
|
||||
|
||||
public interface HypervisorHostListener {
|
||||
boolean hostConnect(long hostId, long poolId);
|
||||
boolean hostConnect(long hostId, long poolId) throws StorageConflictException;
|
||||
|
||||
boolean hostDisconnected(long hostId, long poolId);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -48,5 +48,5 @@ public interface PrimaryDataStoreDriver extends DataStoreDriver {
|
|||
|
||||
public void takeSnapshot(SnapshotInfo snapshot, AsyncCompletionCallback<CreateCmdResult> callback);
|
||||
|
||||
public void revertSnapshot(SnapshotInfo snapshot, AsyncCompletionCallback<CommandResult> callback);
|
||||
public void revertSnapshot(SnapshotInfo snapshotOnImageStore, SnapshotInfo snapshotOnPrimaryStore, AsyncCompletionCallback<CommandResult> callback);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -24,7 +24,7 @@ public interface SnapshotService {
|
|||
|
||||
boolean deleteSnapshot(SnapshotInfo snapshot);
|
||||
|
||||
boolean revertSnapshot(Long snapshotId);
|
||||
boolean revertSnapshot(SnapshotInfo snapshot);
|
||||
|
||||
void syncVolumeSnapshotsToRegionStore(long volumeId, DataStore store);
|
||||
|
||||
|
|
|
|||
|
|
@ -29,7 +29,7 @@ public interface SnapshotStrategy {
|
|||
|
||||
boolean deleteSnapshot(Long snapshotId);
|
||||
|
||||
boolean revertSnapshot(Long snapshotId);
|
||||
boolean revertSnapshot(SnapshotInfo snapshot);
|
||||
|
||||
StrategyPriority canHandle(Snapshot snapshot, SnapshotOperation op);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -103,6 +103,8 @@ import com.cloud.utils.db.SearchCriteria.Op;
|
|||
import com.cloud.utils.db.TransactionLegacy;
|
||||
import com.cloud.utils.exception.CloudRuntimeException;
|
||||
import com.cloud.utils.exception.HypervisorVersionChangedException;
|
||||
import com.cloud.utils.exception.NioConnectionException;
|
||||
import com.cloud.utils.exception.TaskExecutionException;
|
||||
import com.cloud.utils.fsm.NoTransitionException;
|
||||
import com.cloud.utils.fsm.StateMachine2;
|
||||
import com.cloud.utils.nio.HandlerFactory;
|
||||
|
|
@ -593,7 +595,11 @@ public class AgentManagerImpl extends ManagerBase implements AgentManager, Handl
|
|||
startDirectlyConnectedHosts();
|
||||
|
||||
if (_connection != null) {
|
||||
_connection.start();
|
||||
try {
|
||||
_connection.start();
|
||||
} catch (final NioConnectionException e) {
|
||||
s_logger.error("Error when connecting to the NioServer!", e);
|
||||
}
|
||||
}
|
||||
|
||||
_monitorExecutor.scheduleWithFixedDelay(new MonitorTask(), PingInterval.value(), PingInterval.value(), TimeUnit.SECONDS);
|
||||
|
|
@ -824,25 +830,30 @@ public class AgentManagerImpl extends ManagerBase implements AgentManager, Handl
|
|||
/* OK, we are going to the bad status, let's see what happened */
|
||||
s_logger.info("Investigating why host " + hostId + " has disconnected with event " + event);
|
||||
|
||||
final Status determinedState = investigate(attache);
|
||||
Status determinedState = investigate(attache);
|
||||
// if state cannot be determined do nothing and bail out
|
||||
if (determinedState == null) {
|
||||
s_logger.warn("Agent state cannot be determined, do nothing");
|
||||
return false;
|
||||
if ((System.currentTimeMillis() >> 10) - host.getLastPinged() > AlertWait.value()) {
|
||||
s_logger.warn("Agent " + hostId + " state cannot be determined for more than " + AlertWait + "(" + AlertWait.value() + ") seconds, will go to Alert state");
|
||||
determinedState = Status.Alert;
|
||||
} else {
|
||||
s_logger.warn("Agent " + hostId + " state cannot be determined, do nothing");
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
final Status currentStatus = host.getStatus();
|
||||
s_logger.info("The state determined is " + determinedState);
|
||||
s_logger.info("The agent " + hostId + " state determined is " + determinedState);
|
||||
|
||||
if (determinedState == Status.Down) {
|
||||
s_logger.error("Host is down: " + host.getId() + "-" + host.getName() + ". Starting HA on the VMs");
|
||||
final String message = "Host is down: " + host.getId() + "-" + host.getName() + ". Starting HA on the VMs";
|
||||
s_logger.error(message);
|
||||
if (host.getType() != Host.Type.SecondaryStorage && host.getType() != Host.Type.ConsoleProxy) {
|
||||
_alertMgr.sendAlert(AlertManager.AlertType.ALERT_TYPE_HOST, host.getDataCenterId(), host.getPodId(), "Host disconnected, " + host.getId(),
|
||||
"Host is down: " + host.getId() + "-" + host.getName() + ". Starting HA on the VMs");
|
||||
_alertMgr.sendAlert(AlertManager.AlertType.ALERT_TYPE_HOST, host.getDataCenterId(), host.getPodId(), "Host down, " + host.getId(), message);
|
||||
}
|
||||
event = Status.Event.HostDown;
|
||||
} else if (determinedState == Status.Up) {
|
||||
/* Got ping response from host, bring it back*/
|
||||
/* Got ping response from host, bring it back */
|
||||
s_logger.info("Agent is determined to be up and running");
|
||||
agentStatusTransitTo(host, Status.Event.Ping, _nodeId);
|
||||
return false;
|
||||
|
|
@ -850,10 +861,10 @@ public class AgentManagerImpl extends ManagerBase implements AgentManager, Handl
|
|||
s_logger.warn("Agent is disconnected but the host is still up: " + host.getId() + "-" + host.getName());
|
||||
if (currentStatus == Status.Disconnected) {
|
||||
if ((System.currentTimeMillis() >> 10) - host.getLastPinged() > AlertWait.value()) {
|
||||
s_logger.warn("Host " + host.getId() + " has been disconnected pass the time it should be disconnected.");
|
||||
s_logger.warn("Host " + host.getId() + " has been disconnected past the wait time it should be disconnected.");
|
||||
event = Status.Event.WaitedTooLong;
|
||||
} else {
|
||||
s_logger.debug("Host has been determined to be disconnected but it hasn't passed the wait time yet.");
|
||||
s_logger.debug("Host " + host.getId() + " has been determined to be disconnected but it hasn't passed the wait time yet.");
|
||||
return false;
|
||||
}
|
||||
} else if (currentStatus == Status.Up) {
|
||||
|
|
@ -862,7 +873,7 @@ public class AgentManagerImpl extends ManagerBase implements AgentManager, Handl
|
|||
final String hostDesc = "name: " + host.getName() + " (id:" + host.getId() + "), availability zone: " + dcVO.getName() + ", pod: " + podVO.getName();
|
||||
if (host.getType() != Host.Type.SecondaryStorage && host.getType() != Host.Type.ConsoleProxy) {
|
||||
_alertMgr.sendAlert(AlertManager.AlertType.ALERT_TYPE_HOST, host.getDataCenterId(), host.getPodId(), "Host disconnected, " + hostDesc,
|
||||
"If the agent for host [" + hostDesc + "] is not restarted within " + AlertWait + " seconds, HA will begin on the VMs");
|
||||
"If the agent for host [" + hostDesc + "] is not restarted within " + AlertWait + " seconds, host will go to Alert state");
|
||||
}
|
||||
event = Status.Event.AgentDisconnected;
|
||||
}
|
||||
|
|
@ -872,11 +883,10 @@ public class AgentManagerImpl extends ManagerBase implements AgentManager, Handl
|
|||
final HostPodVO podVO = _podDao.findById(host.getPodId());
|
||||
final String hostDesc = "name: " + host.getName() + " (id:" + host.getId() + "), availability zone: " + dcVO.getName() + ", pod: " + podVO.getName();
|
||||
_alertMgr.sendAlert(AlertManager.AlertType.ALERT_TYPE_HOST, host.getDataCenterId(), host.getPodId(), "Host in ALERT state, " + hostDesc,
|
||||
"In availability zone " + host.getDataCenterId() + ", " + host.getId() + "-" + host.getName()
|
||||
+ " disconnect due to event " + event + ", ms can't determine the host status" );
|
||||
"In availability zone " + host.getDataCenterId() + ", host is in alert state: " + host.getId() + "-" + host.getName());
|
||||
}
|
||||
} else {
|
||||
s_logger.debug("The next status of Agent " + host.getId() + " is not Alert, no need to investigate what happened");
|
||||
s_logger.debug("The next status of agent " + host.getId() + " is not Alert, no need to investigate what happened");
|
||||
}
|
||||
}
|
||||
handleDisconnectWithoutInvestigation(attache, event, true, true);
|
||||
|
|
@ -1295,7 +1305,7 @@ public class AgentManagerImpl extends ManagerBase implements AgentManager, Handl
|
|||
}
|
||||
|
||||
@Override
|
||||
protected void doTask(final Task task) throws Exception {
|
||||
protected void doTask(final Task task) throws TaskExecutionException {
|
||||
final TransactionLegacy txn = TransactionLegacy.open(TransactionLegacy.CLOUD_DB);
|
||||
try {
|
||||
final Type type = task.getType();
|
||||
|
|
@ -1311,6 +1321,10 @@ public class AgentManagerImpl extends ManagerBase implements AgentManager, Handl
|
|||
} catch (final UnsupportedVersionException e) {
|
||||
s_logger.warn(e.getMessage());
|
||||
// upgradeAgent(task.getLink(), data, e.getReason());
|
||||
} catch (final ClassNotFoundException e) {
|
||||
final String message = String.format("Exception occured when executing taks! Error '%s'", e.getMessage());
|
||||
s_logger.error(message);
|
||||
throw new TaskExecutionException(message, e);
|
||||
}
|
||||
} else if (type == Task.Type.CONNECT) {
|
||||
} else if (type == Task.Type.DISCONNECT) {
|
||||
|
|
|
|||
File diff suppressed because it is too large
Load Diff
|
|
@ -4297,7 +4297,7 @@ public class VirtualMachineManagerImpl extends ManagerBase implements VirtualMac
|
|||
workJob = new VmWorkJobVO(context.getContextId());
|
||||
|
||||
workJob.setDispatcher(VmWorkConstants.VM_WORK_JOB_DISPATCHER);
|
||||
workJob.setCmd(VmWorkMigrate.class.getName());
|
||||
workJob.setCmd(VmWorkMigrateWithStorage.class.getName());
|
||||
|
||||
workJob.setAccountId(account.getId());
|
||||
workJob.setUserId(user.getId());
|
||||
|
|
@ -4340,7 +4340,7 @@ public class VirtualMachineManagerImpl extends ManagerBase implements VirtualMac
|
|||
workJob = new VmWorkJobVO(context.getContextId());
|
||||
|
||||
workJob.setDispatcher(VmWorkConstants.VM_WORK_JOB_DISPATCHER);
|
||||
workJob.setCmd(VmWorkMigrate.class.getName());
|
||||
workJob.setCmd(VmWorkMigrateForScale.class.getName());
|
||||
|
||||
workJob.setAccountId(account.getId());
|
||||
workJob.setUserId(user.getId());
|
||||
|
|
|
|||
|
|
@ -18,30 +18,18 @@ package com.cloud.vm;
|
|||
|
||||
import com.cloud.deploy.DeployDestination;
|
||||
|
||||
public class VmWorkMigrateForScale extends VmWork {
|
||||
public class VmWorkMigrateForScale extends VmWorkMigrate {
|
||||
private static final long serialVersionUID = 6854870395568389613L;
|
||||
|
||||
long srcHostId;
|
||||
DeployDestination deployDestination;
|
||||
Long newSvcOfferingId;
|
||||
|
||||
public VmWorkMigrateForScale(long userId, long accountId, long vmId, String handlerName, long srcHostId,
|
||||
DeployDestination dest, Long newSvcOfferingId) {
|
||||
|
||||
super(userId, accountId, vmId, handlerName);
|
||||
this.srcHostId = srcHostId;
|
||||
deployDestination = dest;
|
||||
super(userId, accountId, vmId, handlerName, srcHostId, dest);
|
||||
this.newSvcOfferingId = newSvcOfferingId;
|
||||
}
|
||||
|
||||
public long getSrcHostId() {
|
||||
return srcHostId;
|
||||
}
|
||||
|
||||
public DeployDestination getDeployDestination() {
|
||||
return deployDestination;
|
||||
}
|
||||
|
||||
public Long getNewServiceOfferringId() {
|
||||
return newSvcOfferingId;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -611,7 +611,10 @@ public class EngineHostDaoImpl extends GenericDaoBase<EngineHostVO, Long> implem
|
|||
l.add(info);
|
||||
}
|
||||
} catch (SQLException e) {
|
||||
s_logger.error("sql exception while getting running hosts: " + e.getLocalizedMessage());
|
||||
} catch (Throwable e) {
|
||||
s_logger.info("[ignored]"
|
||||
+ "caught something while getting running hosts: " + e.getLocalizedMessage());
|
||||
}
|
||||
return l;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -37,9 +37,6 @@ import javax.ejb.Local;
|
|||
import javax.inject.Inject;
|
||||
import javax.naming.ConfigurationException;
|
||||
|
||||
import com.cloud.network.Networks;
|
||||
|
||||
import org.apache.log4j.Logger;
|
||||
import org.apache.cloudstack.acl.ControlledEntity.ACLType;
|
||||
import org.apache.cloudstack.context.CallContext;
|
||||
import org.apache.cloudstack.engine.cloud.entity.api.db.VMNetworkMapVO;
|
||||
|
|
@ -47,13 +44,14 @@ import org.apache.cloudstack.engine.cloud.entity.api.db.dao.VMNetworkMapDao;
|
|||
import org.apache.cloudstack.engine.orchestration.service.NetworkOrchestrationService;
|
||||
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.config.ConfigKey.Scope;
|
||||
import org.apache.cloudstack.framework.config.Configurable;
|
||||
import org.apache.cloudstack.framework.config.dao.ConfigurationDao;
|
||||
import org.apache.cloudstack.framework.messagebus.MessageBus;
|
||||
import org.apache.cloudstack.framework.messagebus.PublishScope;
|
||||
import org.apache.cloudstack.managed.context.ManagedContextRunnable;
|
||||
import org.apache.cloudstack.region.PortableIpDao;
|
||||
import org.apache.log4j.Logger;
|
||||
|
||||
import com.cloud.agent.AgentManager;
|
||||
import com.cloud.agent.Listener;
|
||||
|
|
@ -111,6 +109,7 @@ import com.cloud.network.NetworkMigrationResponder;
|
|||
import com.cloud.network.NetworkModel;
|
||||
import com.cloud.network.NetworkProfile;
|
||||
import com.cloud.network.NetworkStateListener;
|
||||
import com.cloud.network.Networks;
|
||||
import com.cloud.network.Networks.BroadcastDomainType;
|
||||
import com.cloud.network.Networks.TrafficType;
|
||||
import com.cloud.network.PhysicalNetwork;
|
||||
|
|
@ -839,7 +838,7 @@ public class NetworkOrchestrator extends ManagerBase implements NetworkOrchestra
|
|||
|
||||
vo.setDefaultNic(profile.isDefaultNic());
|
||||
|
||||
vo.setIp4Address(profile.getIp4Address());
|
||||
vo.setIPv4Address(profile.getIPv4Address());
|
||||
vo.setAddressFormat(profile.getFormat());
|
||||
|
||||
if (profile.getMacAddress() != null) {
|
||||
|
|
@ -847,8 +846,8 @@ public class NetworkOrchestrator extends ManagerBase implements NetworkOrchestra
|
|||
}
|
||||
|
||||
vo.setMode(profile.getMode());
|
||||
vo.setNetmask(profile.getNetmask());
|
||||
vo.setGateway(profile.getGateway());
|
||||
vo.setIPv4Netmask(profile.getIPv4Netmask());
|
||||
vo.setIPv4Gateway(profile.getIPv4Gateway());
|
||||
|
||||
if (profile.getBroadCastUri() != null) {
|
||||
vo.setBroadcastUri(profile.getBroadCastUri());
|
||||
|
|
@ -860,25 +859,25 @@ public class NetworkOrchestrator extends ManagerBase implements NetworkOrchestra
|
|||
|
||||
vo.setState(Nic.State.Allocated);
|
||||
|
||||
vo.setIp6Address(profile.getIp6Address());
|
||||
vo.setIp6Gateway(profile.getIp6Gateway());
|
||||
vo.setIp6Cidr(profile.getIp6Cidr());
|
||||
vo.setIPv6Address(profile.getIPv6Address());
|
||||
vo.setIPv6Gateway(profile.getIPv6Gateway());
|
||||
vo.setIPv6Cidr(profile.getIPv6Cidr());
|
||||
|
||||
return deviceId;
|
||||
}
|
||||
|
||||
protected void applyProfileToNicForRelease(NicVO vo, NicProfile profile) {
|
||||
vo.setGateway(profile.getGateway());
|
||||
vo.setIPv4Gateway(profile.getIPv4Gateway());
|
||||
vo.setAddressFormat(profile.getFormat());
|
||||
vo.setIp4Address(profile.getIp4Address());
|
||||
vo.setIp6Address(profile.getIp6Address());
|
||||
vo.setIPv4Address(profile.getIPv4Address());
|
||||
vo.setIPv6Address(profile.getIPv6Address());
|
||||
vo.setMacAddress(profile.getMacAddress());
|
||||
if (profile.getReservationStrategy() != null) {
|
||||
vo.setReservationStrategy(profile.getReservationStrategy());
|
||||
}
|
||||
vo.setBroadcastUri(profile.getBroadCastUri());
|
||||
vo.setIsolationUri(profile.getIsolationUri());
|
||||
vo.setNetmask(profile.getNetmask());
|
||||
vo.setIPv4Netmask(profile.getIPv4Netmask());
|
||||
}
|
||||
|
||||
protected void applyProfileToNetwork(NetworkVO network, NetworkProfile profile) {
|
||||
|
|
@ -893,13 +892,13 @@ public class NetworkOrchestrator extends ManagerBase implements NetworkOrchestra
|
|||
to.setDeviceId(nic.getDeviceId());
|
||||
to.setBroadcastType(config.getBroadcastDomainType());
|
||||
to.setType(config.getTrafficType());
|
||||
to.setIp(nic.getIp4Address());
|
||||
to.setNetmask(nic.getNetmask());
|
||||
to.setIp(nic.getIPv4Address());
|
||||
to.setNetmask(nic.getIPv4Netmask());
|
||||
to.setMac(nic.getMacAddress());
|
||||
to.setDns1(profile.getDns1());
|
||||
to.setDns2(profile.getDns2());
|
||||
if (nic.getGateway() != null) {
|
||||
to.setGateway(nic.getGateway());
|
||||
to.setDns1(profile.getIPv4Dns1());
|
||||
to.setDns2(profile.getIPv4Dns2());
|
||||
if (nic.getIPv4Gateway() != null) {
|
||||
to.setGateway(nic.getIPv4Gateway());
|
||||
} else {
|
||||
to.setGateway(config.getGateway());
|
||||
}
|
||||
|
|
@ -910,8 +909,8 @@ public class NetworkOrchestrator extends ManagerBase implements NetworkOrchestra
|
|||
to.setBroadcastUri(nic.getBroadcastUri());
|
||||
to.setIsolationuri(nic.getIsolationUri());
|
||||
if (profile != null) {
|
||||
to.setDns1(profile.getDns1());
|
||||
to.setDns2(profile.getDns2());
|
||||
to.setDns1(profile.getIPv4Dns1());
|
||||
to.setDns2(profile.getIPv4Dns2());
|
||||
}
|
||||
|
||||
Integer networkRate = _networkModel.getNetworkRate(config.getId(), null);
|
||||
|
|
@ -1240,7 +1239,7 @@ public class NetworkOrchestrator extends ManagerBase implements NetworkOrchestra
|
|||
DhcpServiceProvider sp = (DhcpServiceProvider)element;
|
||||
Map<Capability, String> dhcpCapabilities = element.getCapabilities().get(Service.Dhcp);
|
||||
String supportsMultipleSubnets = dhcpCapabilities.get(Capability.DhcpAccrossMultipleSubnets);
|
||||
if ((supportsMultipleSubnets != null && Boolean.valueOf(supportsMultipleSubnets)) && profile.getIp6Address() == null) {
|
||||
if ((supportsMultipleSubnets != null && Boolean.valueOf(supportsMultipleSubnets)) && profile.getIPv6Address() == null) {
|
||||
if (!sp.configDhcpSupportForSubnet(network, profile, vmProfile, dest, context)) {
|
||||
return false;
|
||||
}
|
||||
|
|
@ -1333,19 +1332,19 @@ public class NetworkOrchestrator extends ManagerBase implements NetworkOrchestra
|
|||
|
||||
networkRate, _networkModel.isSecurityGroupSupportedInNetwork(network), _networkModel.getNetworkTag(vmProfile.getHypervisorType(), network));
|
||||
guru.reserve(profile, network, vmProfile, dest, context);
|
||||
nic.setIp4Address(profile.getIp4Address());
|
||||
nic.setIPv4Address(profile.getIPv4Address());
|
||||
nic.setAddressFormat(profile.getFormat());
|
||||
nic.setIp6Address(profile.getIp6Address());
|
||||
nic.setIPv6Address(profile.getIPv6Address());
|
||||
nic.setMacAddress(profile.getMacAddress());
|
||||
nic.setIsolationUri(profile.getIsolationUri());
|
||||
nic.setBroadcastUri(profile.getBroadCastUri());
|
||||
nic.setReserver(guru.getName());
|
||||
nic.setState(Nic.State.Reserved);
|
||||
nic.setNetmask(profile.getNetmask());
|
||||
nic.setGateway(profile.getGateway());
|
||||
nic.setIPv4Netmask(profile.getIPv4Netmask());
|
||||
nic.setIPv4Gateway(profile.getIPv4Gateway());
|
||||
|
||||
if (profile.getStrategy() != null) {
|
||||
nic.setReservationStrategy(profile.getStrategy());
|
||||
if (profile.getReservationStrategy() != null) {
|
||||
nic.setReservationStrategy(profile.getReservationStrategy());
|
||||
}
|
||||
|
||||
updateNic(nic, network.getId(), 1);
|
||||
|
|
@ -1478,9 +1477,9 @@ public class NetworkOrchestrator extends ManagerBase implements NetworkOrchestra
|
|||
NetworkGuru guru = AdapterBase.getAdapterByName(networkGurus, network.getGuruName());
|
||||
NicProfile profile = new NicProfile();
|
||||
profile.setDeviceId(255); //dummyId
|
||||
profile.setIp4Address(userIp.getAddress().toString());
|
||||
profile.setNetmask(publicIp.getNetmask());
|
||||
profile.setGateway(publicIp.getGateway());
|
||||
profile.setIPv4Address(userIp.getAddress().toString());
|
||||
profile.setIPv4Netmask(publicIp.getNetmask());
|
||||
profile.setIPv4Gateway(publicIp.getGateway());
|
||||
profile.setMacAddress(publicIp.getMacAddress());
|
||||
profile.setBroadcastType(network.getBroadcastDomainType());
|
||||
profile.setTrafficType(network.getTrafficType());
|
||||
|
|
@ -1742,7 +1741,7 @@ public class NetworkOrchestrator extends ManagerBase implements NetworkOrchestra
|
|||
}
|
||||
|
||||
private boolean isLastNicInSubnet(NicVO nic) {
|
||||
if (_nicDao.listByNetworkIdTypeAndGatewayAndBroadcastUri(nic.getNetworkId(), VirtualMachine.Type.User, nic.getGateway(), nic.getBroadcastUri()).size() > 1) {
|
||||
if (_nicDao.listByNetworkIdTypeAndGatewayAndBroadcastUri(nic.getNetworkId(), VirtualMachine.Type.User, nic.getIPv4Gateway(), nic.getBroadcastUri()).size() > 1) {
|
||||
return false;
|
||||
}
|
||||
return true;
|
||||
|
|
@ -1754,7 +1753,7 @@ public class NetworkOrchestrator extends ManagerBase implements NetworkOrchestra
|
|||
Network network = _networksDao.findById(nic.getNetworkId());
|
||||
DhcpServiceProvider dhcpServiceProvider = getDhcpServiceProvider(network);
|
||||
try {
|
||||
final NicIpAliasVO ipAlias = _nicIpAliasDao.findByGatewayAndNetworkIdAndState(nic.getGateway(), network.getId(), NicIpAlias.state.active);
|
||||
final NicIpAliasVO ipAlias = _nicIpAliasDao.findByGatewayAndNetworkIdAndState(nic.getIPv4Gateway(), network.getId(), NicIpAlias.state.active);
|
||||
if (ipAlias != null) {
|
||||
ipAlias.setState(NicIpAlias.state.revoked);
|
||||
Transaction.execute(new TransactionCallbackNoReturn() {
|
||||
|
|
@ -3116,10 +3115,10 @@ public class NetworkOrchestrator extends ManagerBase implements NetworkOrchestra
|
|||
NicProfile nic = null;
|
||||
if (requested != null && requested.getBroadCastUri() != null) {
|
||||
String broadcastUri = requested.getBroadCastUri().toString();
|
||||
String ipAddress = requested.getIp4Address();
|
||||
String ipAddress = requested.getIPv4Address();
|
||||
NicVO nicVO = _nicDao.findByNetworkIdInstanceIdAndBroadcastUri(network.getId(), vm.getId(), broadcastUri);
|
||||
if (nicVO != null) {
|
||||
if (ipAddress == null || nicVO.getIp4Address().equals(ipAddress)) {
|
||||
if (ipAddress == null || nicVO.getIPv4Address().equals(ipAddress)) {
|
||||
nic = _networkModel.getNicProfile(vm, network.getId(), broadcastUri);
|
||||
}
|
||||
}
|
||||
|
|
@ -3316,8 +3315,8 @@ public class NetworkOrchestrator extends ManagerBase implements NetworkOrchestra
|
|||
@Override
|
||||
public NicVO savePlaceholderNic(Network network, String ip4Address, String ip6Address, Type vmType) {
|
||||
NicVO nic = new NicVO(null, null, network.getId(), null);
|
||||
nic.setIp4Address(ip4Address);
|
||||
nic.setIp6Address(ip6Address);
|
||||
nic.setIPv4Address(ip4Address);
|
||||
nic.setIPv6Address(ip6Address);
|
||||
nic.setReservationStrategy(ReservationStrategy.PlaceHolder);
|
||||
nic.setState(Nic.State.Reserved);
|
||||
nic.setVmType(vmType);
|
||||
|
|
|
|||
|
|
@ -17,44 +17,42 @@
|
|||
package org.apache.cloudstack.engine.orchestration;
|
||||
|
||||
import static org.mockito.Mockito.mock;
|
||||
import static org.mockito.Mockito.verify;
|
||||
import static org.mockito.Mockito.never;
|
||||
import static org.mockito.Mockito.times;
|
||||
import static org.mockito.Mockito.verify;
|
||||
import static org.mockito.Mockito.when;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.HashMap;
|
||||
import java.util.List;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Map;
|
||||
|
||||
import junit.framework.TestCase;
|
||||
|
||||
import org.apache.log4j.Logger;
|
||||
import org.junit.Before;
|
||||
import org.junit.Test;
|
||||
import org.mockito.Matchers;
|
||||
|
||||
import com.cloud.network.Network;
|
||||
|
||||
import com.cloud.network.NetworkModel;
|
||||
import com.cloud.network.Network.GuestType;
|
||||
import com.cloud.network.Network.Service;
|
||||
import com.cloud.network.NetworkModel;
|
||||
import com.cloud.network.Networks.TrafficType;
|
||||
import com.cloud.network.dao.NetworkDao;
|
||||
import com.cloud.network.dao.NetworkServiceMapDao;
|
||||
import com.cloud.network.dao.NetworkVO;
|
||||
import com.cloud.network.element.DhcpServiceProvider;
|
||||
import com.cloud.network.guru.NetworkGuru;
|
||||
|
||||
import com.cloud.vm.Nic;
|
||||
import com.cloud.vm.NicVO;
|
||||
import com.cloud.vm.VirtualMachine;
|
||||
import com.cloud.vm.VirtualMachineProfile;
|
||||
import com.cloud.vm.VirtualMachine.Type;
|
||||
import com.cloud.vm.VirtualMachineProfile;
|
||||
import com.cloud.vm.dao.NicDao;
|
||||
import com.cloud.vm.dao.NicIpAliasDao;
|
||||
import com.cloud.vm.dao.NicSecondaryIpDao;
|
||||
|
||||
import junit.framework.TestCase;
|
||||
|
||||
/**
|
||||
* NetworkManagerImpl implements NetworkManager.
|
||||
*/
|
||||
|
|
@ -106,7 +104,7 @@ public class NetworkOrchestratorTest extends TestCase {
|
|||
when(testOrchastrator._networkModel.areServicesSupportedInNetwork(network.getId(), Service.Dhcp)).thenReturn(true);
|
||||
when(network.getTrafficType()).thenReturn(TrafficType.Guest);
|
||||
when(network.getGuestType()).thenReturn(GuestType.Shared);
|
||||
when(testOrchastrator._nicDao.listByNetworkIdTypeAndGatewayAndBroadcastUri(nic.getNetworkId(), VirtualMachine.Type.User, nic.getGateway(), nic.getBroadcastUri())).thenReturn(new ArrayList<NicVO>());
|
||||
when(testOrchastrator._nicDao.listByNetworkIdTypeAndGatewayAndBroadcastUri(nic.getNetworkId(), VirtualMachine.Type.User, nic.getIPv4Gateway(), nic.getBroadcastUri())).thenReturn(new ArrayList<NicVO>());
|
||||
|
||||
|
||||
|
||||
|
|
|
|||
|
|
@ -16,9 +16,6 @@
|
|||
// under the License.
|
||||
package com.cloud.certificate.dao;
|
||||
|
||||
import java.io.BufferedInputStream;
|
||||
import java.io.IOException;
|
||||
|
||||
import javax.ejb.Local;
|
||||
|
||||
import org.apache.log4j.Logger;
|
||||
|
|
@ -41,7 +38,6 @@ public class CertificateDaoImpl extends GenericDaoBase<CertificateVO, Long> impl
|
|||
|
||||
@Override
|
||||
public Long persistCustomCertToDb(String certStr, CertificateVO cert, Long managementServerId) {
|
||||
BufferedInputStream f = null;
|
||||
try {
|
||||
cert.setCertificate(certStr);
|
||||
cert.setUpdated("Y");
|
||||
|
|
@ -50,12 +46,6 @@ public class CertificateDaoImpl extends GenericDaoBase<CertificateVO, Long> impl
|
|||
} catch (Exception e) {
|
||||
s_logger.warn("Unable to read the certificate: " + e);
|
||||
return new Long(0);
|
||||
} finally {
|
||||
if (f != null)
|
||||
try {
|
||||
f.close();
|
||||
} catch (IOException ignored) {
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -116,7 +116,6 @@ public class DataCenterIpAddressDaoImpl extends GenericDaoBase<DataCenterIpAddre
|
|||
String insertSql = "INSERT INTO `cloud`.`op_dc_ip_address_alloc` (ip_address, data_center_id, pod_id, mac_address) " +
|
||||
"VALUES (?, ?, ?, (select mac_address from `cloud`.`data_center` where id=?))";
|
||||
String updateSql = "UPDATE `cloud`.`data_center` set mac_address = mac_address+1 where id=?";
|
||||
PreparedStatement stmt = null;
|
||||
|
||||
long startIP = NetUtils.ip2Long(start);
|
||||
long endIP = NetUtils.ip2Long(end);
|
||||
|
|
@ -125,17 +124,17 @@ public class DataCenterIpAddressDaoImpl extends GenericDaoBase<DataCenterIpAddre
|
|||
txn.start();
|
||||
|
||||
while (startIP <= endIP) {
|
||||
stmt = txn.prepareStatement(insertSql);
|
||||
stmt.setString(1, NetUtils.long2Ip(startIP++));
|
||||
stmt.setLong(2, dcId);
|
||||
stmt.setLong(3, podId);
|
||||
stmt.setLong(4, dcId);
|
||||
stmt.executeUpdate();
|
||||
stmt.close();
|
||||
stmt = txn.prepareStatement(updateSql);
|
||||
stmt.setLong(1, dcId);
|
||||
stmt.executeUpdate();
|
||||
stmt.close();
|
||||
try(PreparedStatement insertPstmt = txn.prepareStatement(insertSql);) {
|
||||
insertPstmt.setString(1, NetUtils.long2Ip(startIP++));
|
||||
insertPstmt.setLong(2, dcId);
|
||||
insertPstmt.setLong(3, podId);
|
||||
insertPstmt.setLong(4, dcId);
|
||||
insertPstmt.executeUpdate();
|
||||
}
|
||||
try(PreparedStatement updatePstmt = txn.prepareStatement(updateSql);) {
|
||||
updatePstmt.setLong(1, dcId);
|
||||
updatePstmt.executeUpdate();
|
||||
}
|
||||
}
|
||||
txn.commit();
|
||||
} catch (SQLException ex) {
|
||||
|
|
|
|||
|
|
@ -740,32 +740,21 @@ public class HostDaoImpl extends GenericDaoBase<HostVO, Long> implements HostDao
|
|||
@DB
|
||||
@Override
|
||||
public List<HostVO> findLostHosts(long timeout) {
|
||||
TransactionLegacy txn = TransactionLegacy.currentTxn();
|
||||
PreparedStatement pstmt = null;
|
||||
List<HostVO> result = new ArrayList<HostVO>();
|
||||
ResultSet rs = null;
|
||||
try {
|
||||
String sql =
|
||||
String sql =
|
||||
"select h.id from host h left join cluster c on h.cluster_id=c.id where h.mgmt_server_id is not null and h.last_ping < ? and h.status in ('Up', 'Updating', 'Disconnected', 'Connecting') and h.type not in ('ExternalFirewall', 'ExternalLoadBalancer', 'TrafficMonitor', 'SecondaryStorage', 'LocalSecondaryStorage', 'L2Networking') and (h.cluster_id is null or c.managed_state = 'Managed') ;";
|
||||
pstmt = txn.prepareStatement(sql);
|
||||
try (
|
||||
TransactionLegacy txn = TransactionLegacy.currentTxn();
|
||||
PreparedStatement pstmt = txn.prepareStatement(sql);) {
|
||||
pstmt.setLong(1, timeout);
|
||||
rs = pstmt.executeQuery();
|
||||
while (rs.next()) {
|
||||
long id = rs.getLong(1); //ID column
|
||||
result.add(findById(id));
|
||||
try (ResultSet rs = pstmt.executeQuery();) {
|
||||
while (rs.next()) {
|
||||
long id = rs.getLong(1); //ID column
|
||||
result.add(findById(id));
|
||||
}
|
||||
}
|
||||
} catch (Exception e) {
|
||||
} catch (SQLException e) {
|
||||
s_logger.warn("Exception: ", e);
|
||||
} finally {
|
||||
try {
|
||||
if (rs != null) {
|
||||
rs.close();
|
||||
}
|
||||
if (pstmt != null) {
|
||||
pstmt.close();
|
||||
}
|
||||
} catch (SQLException e) {
|
||||
}
|
||||
}
|
||||
return result;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -24,7 +24,7 @@ import com.cloud.utils.db.GenericDao;
|
|||
public interface VpnUserDao extends GenericDao<VpnUserVO, Long> {
|
||||
List<VpnUserVO> listByAccount(Long accountId);
|
||||
|
||||
VpnUserVO findByAccountAndUsername(Long acccountId, String userName);
|
||||
VpnUserVO findByAccountAndUsername(Long accountId, String userName);
|
||||
|
||||
long getVpnUserCount(Long accountId);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -104,7 +104,7 @@ public class VmRulesetLogDaoImpl extends GenericDaoBase<VmRulesetLogVO, Long> im
|
|||
try {
|
||||
Thread.sleep(delayMs);
|
||||
} catch (InterruptedException ie) {
|
||||
|
||||
s_logger.debug("[ignored] interupted while inserting security group rule log.");
|
||||
}
|
||||
} else
|
||||
s_logger.warn("Caught another deadlock exception while retrying inserting security group rule log, giving up");
|
||||
|
|
|
|||
|
|
@ -41,12 +41,12 @@ import com.cloud.utils.db.DB;
|
|||
import com.cloud.utils.db.Filter;
|
||||
import com.cloud.utils.db.GenericDaoBase;
|
||||
import com.cloud.utils.db.GenericSearchBuilder;
|
||||
import com.cloud.utils.db.UpdateBuilder;
|
||||
import com.cloud.utils.db.JoinBuilder.JoinType;
|
||||
import com.cloud.utils.db.SearchBuilder;
|
||||
import com.cloud.utils.db.SearchCriteria;
|
||||
import com.cloud.utils.db.SearchCriteria.Func;
|
||||
import com.cloud.utils.db.TransactionLegacy;
|
||||
import com.cloud.utils.db.UpdateBuilder;
|
||||
import com.cloud.vm.VMInstanceVO;
|
||||
import com.cloud.vm.dao.VMInstanceDao;
|
||||
|
||||
|
|
@ -208,6 +208,8 @@ public class SnapshotDaoImpl extends GenericDaoBase<SnapshotVO, Long> implements
|
|||
return rs.getLong(1);
|
||||
}
|
||||
} catch (Exception ex) {
|
||||
s_logger.info("[ignored]"
|
||||
+ "caught something while getting sec. host id: " + ex.getLocalizedMessage());
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
|
@ -276,7 +278,7 @@ public class SnapshotDaoImpl extends GenericDaoBase<SnapshotVO, Long> implements
|
|||
|
||||
@Override
|
||||
public List<SnapshotVO> listByInstanceId(long instanceId, Snapshot.State... status) {
|
||||
SearchCriteria<SnapshotVO> sc = this.InstanceIdSearch.create();
|
||||
SearchCriteria<SnapshotVO> sc = InstanceIdSearch.create();
|
||||
|
||||
if (status != null && status.length != 0) {
|
||||
sc.setParameters("status", (Object[])status);
|
||||
|
|
@ -289,7 +291,7 @@ public class SnapshotDaoImpl extends GenericDaoBase<SnapshotVO, Long> implements
|
|||
|
||||
@Override
|
||||
public List<SnapshotVO> listByStatus(long volumeId, Snapshot.State... status) {
|
||||
SearchCriteria<SnapshotVO> sc = this.StatusSearch.create();
|
||||
SearchCriteria<SnapshotVO> sc = StatusSearch.create();
|
||||
sc.setParameters("volumeId", volumeId);
|
||||
sc.setParameters("status", (Object[])status);
|
||||
return listBy(sc, null);
|
||||
|
|
@ -311,7 +313,7 @@ public class SnapshotDaoImpl extends GenericDaoBase<SnapshotVO, Long> implements
|
|||
|
||||
@Override
|
||||
public List<SnapshotVO> listAllByStatus(Snapshot.State... status) {
|
||||
SearchCriteria<SnapshotVO> sc = this.StatusSearch.create();
|
||||
SearchCriteria<SnapshotVO> sc = StatusSearch.create();
|
||||
sc.setParameters("status", (Object[])status);
|
||||
return listBy(sc, null);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -54,8 +54,12 @@ public interface VMTemplateDao extends GenericDao<VMTemplateVO, Long>, StateDao<
|
|||
|
||||
public List<VMTemplateVO> listAllInZone(long dataCenterId);
|
||||
|
||||
public List<VMTemplateVO> listInZoneByState(long dataCenterId, VirtualMachineTemplate.State... states);
|
||||
|
||||
public List<VMTemplateVO> listAllActive();
|
||||
|
||||
public List<VMTemplateVO> listByState(VirtualMachineTemplate.State... states);
|
||||
|
||||
public List<VMTemplateVO> listByHypervisorType(List<HypervisorType> hyperTypes);
|
||||
|
||||
public List<VMTemplateVO> publicIsoSearch(Boolean bootable, boolean listRemoved, Map<String, String> tags);
|
||||
|
|
|
|||
|
|
@ -372,7 +372,7 @@ public class VMTemplateDaoImpl extends GenericDaoBase<VMTemplateVO, Long> implem
|
|||
tmpltZoneSearch.and("zoneId", tmpltZoneSearch.entity().getZoneId(), SearchCriteria.Op.EQ);
|
||||
|
||||
TmpltsInZoneSearch = createSearchBuilder();
|
||||
TmpltsInZoneSearch.and("state", TmpltsInZoneSearch.entity().getState(), SearchCriteria.Op.EQ);
|
||||
TmpltsInZoneSearch.and("state", TmpltsInZoneSearch.entity().getState(), SearchCriteria.Op.IN);
|
||||
TmpltsInZoneSearch.and().op("avoidtype", TmpltsInZoneSearch.entity().getTemplateType(), SearchCriteria.Op.NEQ);
|
||||
TmpltsInZoneSearch.or("templateType", TmpltsInZoneSearch.entity().getTemplateType(), SearchCriteria.Op.NULL);
|
||||
TmpltsInZoneSearch.cp();
|
||||
|
|
@ -381,7 +381,7 @@ public class VMTemplateDaoImpl extends GenericDaoBase<VMTemplateVO, Long> implem
|
|||
TmpltsInZoneSearch.done();
|
||||
|
||||
ActiveTmpltSearch = createSearchBuilder();
|
||||
ActiveTmpltSearch.and("state", ActiveTmpltSearch.entity().getState(), SearchCriteria.Op.EQ);
|
||||
ActiveTmpltSearch.and("state", ActiveTmpltSearch.entity().getState(), SearchCriteria.Op.IN);
|
||||
|
||||
CountTemplatesByAccount = createSearchBuilder(Long.class);
|
||||
CountTemplatesByAccount.select(null, Func.COUNT, null);
|
||||
|
|
@ -792,6 +792,15 @@ public class VMTemplateDaoImpl extends GenericDaoBase<VMTemplateVO, Long> implem
|
|||
return listBy(sc);
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<VMTemplateVO> listInZoneByState(long dataCenterId, VirtualMachineTemplate.State... states) {
|
||||
SearchCriteria<VMTemplateVO> sc = TmpltsInZoneSearch.create();
|
||||
sc.setParameters("avoidtype", TemplateType.PERHOST.toString());
|
||||
sc.setParameters("state", (Object[])states);
|
||||
sc.setJoinParameters("tmpltzone", "zoneId", dataCenterId);
|
||||
return listBy(sc);
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<VMTemplateVO> listAllActive() {
|
||||
SearchCriteria<VMTemplateVO> sc = ActiveTmpltSearch.create();
|
||||
|
|
@ -799,6 +808,13 @@ public class VMTemplateDaoImpl extends GenericDaoBase<VMTemplateVO, Long> implem
|
|||
return listBy(sc);
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<VMTemplateVO> listByState(VirtualMachineTemplate.State... states) {
|
||||
SearchCriteria<VMTemplateVO> sc = ActiveTmpltSearch.create();
|
||||
sc.setParameters("state", (Object[])states);
|
||||
return listBy(sc);
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<VMTemplateVO> listDefaultBuiltinTemplates() {
|
||||
SearchCriteria<VMTemplateVO> sc = tmpltTypeSearch.create();
|
||||
|
|
|
|||
|
|
@ -0,0 +1,42 @@
|
|||
// 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.upgrade.dao;
|
||||
|
||||
import org.apache.log4j.Logger;
|
||||
|
||||
public abstract class LegacyDbUpgrade implements DbUpgrade{
|
||||
|
||||
final static Logger s_logger = Logger.getLogger(LegacyDbUpgrade.class);
|
||||
|
||||
public LegacyDbUpgrade() {
|
||||
super();
|
||||
}
|
||||
|
||||
/**
|
||||
* @param closable
|
||||
*/
|
||||
protected void closeAutoCloseable(AutoCloseable closable) {
|
||||
if (closable != null) {
|
||||
try {
|
||||
closable.close();
|
||||
} catch (Exception e) {
|
||||
s_logger.info("[ignored]",e);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
File diff suppressed because it is too large
Load Diff
|
|
@ -411,6 +411,7 @@ public class Upgrade2214to30 extends Upgrade30xBase implements DbUpgrade {
|
|||
pstmt.close();
|
||||
}
|
||||
} catch (SQLException e) {
|
||||
s_logger.info("[ignored]",e);
|
||||
}
|
||||
}
|
||||
s_logger.debug("Done encrypting Config values");
|
||||
|
|
@ -861,6 +862,7 @@ public class Upgrade2214to30 extends Upgrade30xBase implements DbUpgrade {
|
|||
pstmt.executeUpdate();
|
||||
pstmt.close();
|
||||
} catch (SQLException e) {
|
||||
s_logger.info("[ignored]",e);
|
||||
}
|
||||
TransactionLegacy.closePstmts(pstmt2Close);
|
||||
}
|
||||
|
|
@ -1000,6 +1002,7 @@ public class Upgrade2214to30 extends Upgrade30xBase implements DbUpgrade {
|
|||
pstmt.executeUpdate();
|
||||
pstmt.close();
|
||||
} catch (SQLException e) {
|
||||
s_logger.info("[ignored]",e);
|
||||
}
|
||||
TransactionLegacy.closePstmts(pstmt2Close);
|
||||
}
|
||||
|
|
@ -1053,6 +1056,7 @@ public class Upgrade2214to30 extends Upgrade30xBase implements DbUpgrade {
|
|||
pstmt.close();
|
||||
}
|
||||
} catch (SQLException e) {
|
||||
s_logger.info("[ignored]",e);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -1151,11 +1155,10 @@ public class Upgrade2214to30 extends Upgrade30xBase implements DbUpgrade {
|
|||
} catch (SQLException e) {
|
||||
throw new CloudRuntimeException("Unable to switch networks to the new network offering", e);
|
||||
} finally {
|
||||
try {
|
||||
pstmt = conn.prepareStatement("DROP TABLE `cloud`.`network_offerings2`");
|
||||
pstmt.executeUpdate();
|
||||
pstmt.close();
|
||||
try (PreparedStatement dropStatement = conn.prepareStatement("DROP TABLE `cloud`.`network_offerings2`");){
|
||||
dropStatement.executeUpdate();
|
||||
} catch (SQLException e) {
|
||||
s_logger.info("[ignored]",e);
|
||||
}
|
||||
TransactionLegacy.closePstmts(pstmt2Close);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -207,18 +207,21 @@ public class Upgrade222to224 implements DbUpgrade {
|
|||
try {
|
||||
pstmtUpdate.close();
|
||||
} catch (SQLException e) {
|
||||
s_logger.info("[ignored]",e);
|
||||
}
|
||||
}
|
||||
if (rs != null) {
|
||||
try {
|
||||
rs.close();
|
||||
} catch (SQLException e) {
|
||||
s_logger.info("[ignored]",e);
|
||||
}
|
||||
}
|
||||
if (pstmt != null) {
|
||||
try {
|
||||
pstmt.close();
|
||||
} catch (SQLException e) {
|
||||
s_logger.info("[ignored]",e);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -406,18 +409,21 @@ public class Upgrade222to224 implements DbUpgrade {
|
|||
try {
|
||||
pstmtUpdate.close();
|
||||
} catch (SQLException e) {
|
||||
s_logger.info("[ignored]",e);
|
||||
}
|
||||
}
|
||||
if (rs != null) {
|
||||
try {
|
||||
rs.close();
|
||||
} catch (SQLException e) {
|
||||
s_logger.info("[ignored]",e);
|
||||
}
|
||||
}
|
||||
if (pstmt != null) {
|
||||
try {
|
||||
pstmt.close();
|
||||
} catch (SQLException e) {
|
||||
s_logger.info("[ignored]",e);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -68,41 +68,29 @@ public class Upgrade229to2210 implements DbUpgrade {
|
|||
}
|
||||
|
||||
private void updateSnapshots(Connection conn) {
|
||||
PreparedStatement pstmt = null;
|
||||
ResultSet rs = null;
|
||||
long currentSnapshotId = 0;
|
||||
try {
|
||||
pstmt =
|
||||
conn.prepareStatement("select id, prev_snap_id from snapshots where sechost_id is NULL and prev_snap_id is not NULL and status=\"BackedUp\" and removed is NULL order by id");
|
||||
rs = pstmt.executeQuery();
|
||||
try (
|
||||
PreparedStatement pstmt = conn.prepareStatement("select id, prev_snap_id from snapshots where sechost_id is NULL and prev_snap_id is not NULL and status=\"BackedUp\" and removed is NULL order by id");
|
||||
ResultSet rs = pstmt.executeQuery();
|
||||
PreparedStatement pstmt2 = conn.prepareStatement("select sechost_id from snapshots where id=? and sechost_id is not NULL");
|
||||
PreparedStatement updateSnapshotStatement = conn.prepareStatement("update snapshots set sechost_id=? where id=?");
|
||||
){
|
||||
while (rs.next()) {
|
||||
long id = rs.getLong(1);
|
||||
long preSnapId = rs.getLong(2);
|
||||
currentSnapshotId = id;
|
||||
pstmt = conn.prepareStatement("select sechost_id from snapshots where id=? and sechost_id is not NULL");
|
||||
pstmt.setLong(1, preSnapId);
|
||||
ResultSet sechost = pstmt.executeQuery();
|
||||
if (sechost.next()) {
|
||||
long secHostId = sechost.getLong(1);
|
||||
pstmt = conn.prepareStatement("update snapshots set sechost_id=? where id=?");
|
||||
pstmt.setLong(1, secHostId);
|
||||
pstmt.setLong(2, id);
|
||||
pstmt.executeUpdate();
|
||||
pstmt2.setLong(1, preSnapId);
|
||||
try (ResultSet sechost = pstmt2.executeQuery();) {
|
||||
if (sechost.next()) {
|
||||
long secHostId = sechost.getLong(1);
|
||||
updateSnapshotStatement.setLong(1, secHostId);
|
||||
updateSnapshotStatement.setLong(2, id);
|
||||
updateSnapshotStatement.executeUpdate();
|
||||
}
|
||||
}
|
||||
}
|
||||
} catch (SQLException e) {
|
||||
throw new CloudRuntimeException("Unable to update snapshots id=" + currentSnapshotId, e);
|
||||
} finally {
|
||||
try {
|
||||
if (rs != null) {
|
||||
rs.close();
|
||||
}
|
||||
|
||||
if (pstmt != null) {
|
||||
pstmt.close();
|
||||
}
|
||||
} catch (SQLException e) {
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -192,6 +180,7 @@ public class Upgrade229to2210 implements DbUpgrade {
|
|||
pstmt.close();
|
||||
}
|
||||
} catch (SQLException e) {
|
||||
s_logger.info("[ignored]",e);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -31,7 +31,7 @@ import org.apache.log4j.Logger;
|
|||
import com.cloud.utils.exception.CloudRuntimeException;
|
||||
import com.cloud.utils.script.Script;
|
||||
|
||||
public class Upgrade301to302 implements DbUpgrade {
|
||||
public class Upgrade301to302 extends LegacyDbUpgrade {
|
||||
final static Logger s_logger = Logger.getLogger(Upgrade301to302.class);
|
||||
|
||||
@Override
|
||||
|
|
@ -150,18 +150,9 @@ public class Upgrade301to302 implements DbUpgrade {
|
|||
} catch (SQLException e) {
|
||||
throw new CloudRuntimeException("Unable to update shared networks due to exception while executing query " + pstmt, e);
|
||||
} finally {
|
||||
try {
|
||||
if (rs != null) {
|
||||
rs.close();
|
||||
}
|
||||
if (rs1 != null) {
|
||||
rs1.close();
|
||||
}
|
||||
if (pstmt != null) {
|
||||
pstmt.close();
|
||||
}
|
||||
} catch (SQLException e) {
|
||||
}
|
||||
closeAutoCloseable(rs);
|
||||
closeAutoCloseable(rs1);
|
||||
closeAutoCloseable(pstmt);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -177,55 +168,34 @@ public class Upgrade301to302 implements DbUpgrade {
|
|||
|
||||
DbUpgradeUtils.dropKeysIfExist(conn, "cloud.vm_instance", keys, true);
|
||||
DbUpgradeUtils.dropKeysIfExist(conn, "cloud.vm_instance", keys, false);
|
||||
PreparedStatement pstmt = null;
|
||||
try {
|
||||
pstmt =
|
||||
try (
|
||||
PreparedStatement pstmt =
|
||||
conn.prepareStatement("ALTER TABLE `cloud`.`vm_instance` ADD CONSTRAINT `fk_vm_instance__last_host_id` FOREIGN KEY (`last_host_id`) REFERENCES `host` (`id`)");
|
||||
){
|
||||
pstmt.executeUpdate();
|
||||
pstmt.close();
|
||||
} catch (SQLException e) {
|
||||
throw new CloudRuntimeException("Unable to insert foreign key in vm_instance table ", e);
|
||||
} finally {
|
||||
try {
|
||||
if (pstmt != null) {
|
||||
pstmt.close();
|
||||
}
|
||||
} catch (SQLException e) {
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private void changeEngine(Connection conn) {
|
||||
s_logger.debug("Fixing engine and row_format for op_lock and op_nwgrp_work tables");
|
||||
PreparedStatement pstmt = null;
|
||||
try {
|
||||
pstmt = conn.prepareStatement("ALTER TABLE `cloud`.`op_lock` ENGINE=MEMORY, ROW_FORMAT = FIXED");
|
||||
String sqlOpLock = "ALTER TABLE `cloud`.`op_lock` ENGINE=MEMORY, ROW_FORMAT = FIXED";
|
||||
try (
|
||||
PreparedStatement pstmt = conn.prepareStatement(sqlOpLock);
|
||||
) {
|
||||
pstmt.executeUpdate();
|
||||
pstmt.close();
|
||||
} catch (Exception e) {
|
||||
s_logger.debug("Failed do execute the statement " + pstmt + ", moving on as it's not critical fix");
|
||||
} finally {
|
||||
try {
|
||||
if (pstmt != null) {
|
||||
pstmt.close();
|
||||
}
|
||||
} catch (SQLException e) {
|
||||
}
|
||||
s_logger.debug("Failed do execute the statement " + sqlOpLock + ", moving on as it's not critical fix");
|
||||
}
|
||||
|
||||
try {
|
||||
pstmt = conn.prepareStatement("ALTER TABLE `cloud`.`op_nwgrp_work` ENGINE=MEMORY, ROW_FORMAT = FIXED");
|
||||
String sqlOpNwgrpWork = "ALTER TABLE `cloud`.`op_nwgrp_work` ENGINE=MEMORY, ROW_FORMAT = FIXED";
|
||||
try (
|
||||
PreparedStatement pstmt = conn.prepareStatement(sqlOpNwgrpWork);
|
||||
) {
|
||||
pstmt.executeUpdate();
|
||||
pstmt.close();
|
||||
} catch (Exception e) {
|
||||
s_logger.debug("Failed do execute the statement " + pstmt + ", moving on as it's not critical fix");
|
||||
} finally {
|
||||
try {
|
||||
if (pstmt != null) {
|
||||
pstmt.close();
|
||||
}
|
||||
} catch (SQLException e) {
|
||||
}
|
||||
s_logger.debug("Failed do execute the statement " + sqlOpNwgrpWork + ", moving on as it's not critical fix");
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -36,7 +36,7 @@ import com.cloud.utils.crypt.DBEncryptionUtil;
|
|||
import com.cloud.utils.exception.CloudRuntimeException;
|
||||
import com.cloud.utils.script.Script;
|
||||
|
||||
public class Upgrade302to303 implements DbUpgrade {
|
||||
public class Upgrade302to303 extends LegacyDbUpgrade {
|
||||
final static Logger s_logger = Logger.getLogger(Upgrade302to303.class);
|
||||
|
||||
@Override
|
||||
|
|
@ -133,23 +133,10 @@ public class Upgrade302to303 implements DbUpgrade {
|
|||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (zoneResults != null) {
|
||||
try {
|
||||
zoneResults.close();
|
||||
} catch (SQLException e) {
|
||||
}
|
||||
}
|
||||
if (zoneSearchStmt != null) {
|
||||
try {
|
||||
zoneSearchStmt.close();
|
||||
} catch (SQLException e) {
|
||||
}
|
||||
}
|
||||
closeAutoCloseable(zoneResults);
|
||||
closeAutoCloseable(zoneSearchStmt);
|
||||
} catch (SQLException e) {
|
||||
throw new CloudRuntimeException("Exception while adding PhysicalNetworks", e);
|
||||
} finally {
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -176,12 +163,7 @@ public class Upgrade302to303 implements DbUpgrade {
|
|||
} catch (SQLException e) {
|
||||
throw new CloudRuntimeException("Exception while adding F5 load balancer device", e);
|
||||
} finally {
|
||||
if (pstmtUpdate != null) {
|
||||
try {
|
||||
pstmtUpdate.close();
|
||||
} catch (SQLException e) {
|
||||
}
|
||||
}
|
||||
closeAutoCloseable(pstmtUpdate);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -206,12 +188,7 @@ public class Upgrade302to303 implements DbUpgrade {
|
|||
} catch (SQLException e) {
|
||||
throw new CloudRuntimeException("Exception while adding SRX firewall device ", e);
|
||||
} finally {
|
||||
if (pstmtUpdate != null) {
|
||||
try {
|
||||
pstmtUpdate.close();
|
||||
} catch (SQLException e) {
|
||||
}
|
||||
}
|
||||
closeAutoCloseable(pstmtUpdate);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -235,12 +212,7 @@ public class Upgrade302to303 implements DbUpgrade {
|
|||
} catch (SQLException e) {
|
||||
throw new CloudRuntimeException("Exception while adding PhysicalNetworkServiceProvider F5BigIp", e);
|
||||
} finally {
|
||||
if (pstmtUpdate != null) {
|
||||
try {
|
||||
pstmtUpdate.close();
|
||||
} catch (SQLException e) {
|
||||
}
|
||||
}
|
||||
closeAutoCloseable(pstmtUpdate);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -264,12 +236,7 @@ public class Upgrade302to303 implements DbUpgrade {
|
|||
} catch (SQLException e) {
|
||||
throw new CloudRuntimeException("Exception while adding PhysicalNetworkServiceProvider JuniperSRX", e);
|
||||
} finally {
|
||||
if (pstmtUpdate != null) {
|
||||
try {
|
||||
pstmtUpdate.close();
|
||||
} catch (SQLException e) {
|
||||
}
|
||||
}
|
||||
closeAutoCloseable(pstmtUpdate);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -299,16 +266,8 @@ public class Upgrade302to303 implements DbUpgrade {
|
|||
} catch (UnsupportedEncodingException e) {
|
||||
throw new CloudRuntimeException("Unable encrypt configuration values ", e);
|
||||
} finally {
|
||||
try {
|
||||
if (rs != null) {
|
||||
rs.close();
|
||||
}
|
||||
|
||||
if (pstmt != null) {
|
||||
pstmt.close();
|
||||
}
|
||||
} catch (SQLException e) {
|
||||
}
|
||||
closeAutoCloseable(rs);
|
||||
closeAutoCloseable(pstmt);
|
||||
}
|
||||
s_logger.debug("Done encrypting Config values");
|
||||
}
|
||||
|
|
|
|||
|
|
@ -34,7 +34,7 @@ import com.cloud.utils.crypt.DBEncryptionUtil;
|
|||
import com.cloud.utils.exception.CloudRuntimeException;
|
||||
import com.cloud.utils.script.Script;
|
||||
|
||||
public class Upgrade302to40 extends Upgrade30xBase implements DbUpgrade {
|
||||
public class Upgrade302to40 extends Upgrade30xBase {
|
||||
final static Logger s_logger = Logger.getLogger(Upgrade302to40.class);
|
||||
|
||||
@Override
|
||||
|
|
@ -138,33 +138,10 @@ public class Upgrade302to40 extends Upgrade30xBase implements DbUpgrade {
|
|||
} catch (SQLException e) {
|
||||
throw new CloudRuntimeException("Exception while correcting Virtual Router Entries", e);
|
||||
} finally {
|
||||
if (rsVR != null) {
|
||||
try {
|
||||
rsVR.close();
|
||||
} catch (SQLException e) {
|
||||
}
|
||||
}
|
||||
|
||||
if (pstmtVR != null) {
|
||||
try {
|
||||
pstmtVR.close();
|
||||
} catch (SQLException e) {
|
||||
}
|
||||
}
|
||||
|
||||
if (rs != null) {
|
||||
try {
|
||||
rs.close();
|
||||
} catch (SQLException e) {
|
||||
}
|
||||
}
|
||||
|
||||
if (pstmt != null) {
|
||||
try {
|
||||
pstmt.close();
|
||||
} catch (SQLException e) {
|
||||
}
|
||||
}
|
||||
closeAutoCloseable(rsVR);
|
||||
closeAutoCloseable(pstmtVR);
|
||||
closeAutoCloseable(rs);
|
||||
closeAutoCloseable(pstmt);
|
||||
}
|
||||
|
||||
}
|
||||
|
|
@ -398,33 +375,10 @@ public class Upgrade302to40 extends Upgrade30xBase implements DbUpgrade {
|
|||
} catch (SQLException e) {
|
||||
throw new CloudRuntimeException("Exception while correcting PhysicalNetwork setup", e);
|
||||
} finally {
|
||||
if (rsZone != null) {
|
||||
try {
|
||||
rsZone.close();
|
||||
} catch (SQLException e) {
|
||||
}
|
||||
}
|
||||
|
||||
if (pstmtZone != null) {
|
||||
try {
|
||||
pstmtZone.close();
|
||||
} catch (SQLException e) {
|
||||
}
|
||||
}
|
||||
|
||||
if (rs != null) {
|
||||
try {
|
||||
rs.close();
|
||||
} catch (SQLException e) {
|
||||
}
|
||||
}
|
||||
|
||||
if (pstmt != null) {
|
||||
try {
|
||||
pstmt.close();
|
||||
} catch (SQLException e) {
|
||||
}
|
||||
}
|
||||
closeAutoCloseable(rsZone);
|
||||
closeAutoCloseable(pstmtZone);
|
||||
closeAutoCloseable(rs);
|
||||
closeAutoCloseable(pstmt);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -510,29 +464,23 @@ public class Upgrade302to40 extends Upgrade30xBase implements DbUpgrade {
|
|||
} catch (SQLException e) {
|
||||
throw new CloudRuntimeException("Exception while cloning NetworkOffering", e);
|
||||
} finally {
|
||||
closeAutoCloseable(rs);
|
||||
try {
|
||||
pstmt = conn.prepareStatement("DROP TEMPORARY TABLE `cloud`.`network_offerings2`");
|
||||
pstmt.executeUpdate();
|
||||
|
||||
if (rs != null) {
|
||||
rs.close();
|
||||
}
|
||||
|
||||
if (pstmt != null) {
|
||||
pstmt.close();
|
||||
}
|
||||
} catch (SQLException e) {
|
||||
s_logger.info("[ignored] ",e);
|
||||
}
|
||||
closeAutoCloseable(pstmt);
|
||||
}
|
||||
}
|
||||
|
||||
private void addHostDetailsUniqueKey(Connection conn) {
|
||||
s_logger.debug("Checking if host_details unique key exists, if not we will add it");
|
||||
PreparedStatement pstmt = null;
|
||||
ResultSet rs = null;
|
||||
try {
|
||||
pstmt = conn.prepareStatement("SHOW INDEX FROM `cloud`.`host_details` WHERE KEY_NAME = 'uk_host_id_name'");
|
||||
rs = pstmt.executeQuery();
|
||||
try (
|
||||
PreparedStatement pstmt = conn.prepareStatement("SHOW INDEX FROM `cloud`.`host_details` WHERE KEY_NAME = 'uk_host_id_name'");
|
||||
ResultSet rs = pstmt.executeQuery();
|
||||
) {
|
||||
if (rs.next()) {
|
||||
s_logger.debug("Unique key already exists on host_details - not adding new one");
|
||||
} else {
|
||||
|
|
@ -545,17 +493,6 @@ public class Upgrade302to40 extends Upgrade30xBase implements DbUpgrade {
|
|||
}
|
||||
} catch (SQLException e) {
|
||||
throw new CloudRuntimeException("Failed to check/update the host_details unique key ", e);
|
||||
} finally {
|
||||
try {
|
||||
if (rs != null) {
|
||||
rs.close();
|
||||
}
|
||||
|
||||
if (pstmt != null) {
|
||||
pstmt.close();
|
||||
}
|
||||
} catch (SQLException e) {
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -602,16 +539,8 @@ public class Upgrade302to40 extends Upgrade30xBase implements DbUpgrade {
|
|||
} catch (SQLException e) {
|
||||
throw new CloudRuntimeException("Unable add VPC physical network service provider ", e);
|
||||
} finally {
|
||||
try {
|
||||
if (rs != null) {
|
||||
rs.close();
|
||||
}
|
||||
|
||||
if (pstmt != null) {
|
||||
pstmt.close();
|
||||
}
|
||||
} catch (SQLException e) {
|
||||
}
|
||||
closeAutoCloseable(rs);
|
||||
closeAutoCloseable(pstmt);
|
||||
}
|
||||
s_logger.debug("Done adding VPC physical network service providers to all physical networks");
|
||||
}
|
||||
|
|
@ -619,46 +548,33 @@ public class Upgrade302to40 extends Upgrade30xBase implements DbUpgrade {
|
|||
private void updateRouterNetworkRef(Connection conn) {
|
||||
//Encrypt config params and change category to Hidden
|
||||
s_logger.debug("Updating router network ref");
|
||||
PreparedStatement pstmt = null;
|
||||
ResultSet rs = null;
|
||||
try {
|
||||
pstmt = conn.prepareStatement("SELECT d.id, d.network_id FROM `cloud`.`domain_router` d, `cloud`.`vm_instance` v " + "WHERE d.id=v.id AND v.removed is NULL");
|
||||
rs = pstmt.executeQuery();
|
||||
try (
|
||||
PreparedStatement pstmt = conn.prepareStatement("SELECT d.id, d.network_id FROM `cloud`.`domain_router` d, `cloud`.`vm_instance` v " + "WHERE d.id=v.id AND v.removed is NULL");
|
||||
PreparedStatement pstmt1 = conn.prepareStatement("SELECT guest_type from `cloud`.`networks` where id=?");
|
||||
PreparedStatement pstmt2 = conn.prepareStatement("INSERT INTO `cloud`.`router_network_ref` (router_id, network_id, guest_type) " + "VALUES (?, ?, ?)");
|
||||
ResultSet rs = pstmt.executeQuery();
|
||||
){
|
||||
while (rs.next()) {
|
||||
Long routerId = rs.getLong(1);
|
||||
Long networkId = rs.getLong(2);
|
||||
|
||||
//get the network type
|
||||
pstmt = conn.prepareStatement("SELECT guest_type from `cloud`.`networks` where id=?");
|
||||
pstmt.setLong(1, networkId);
|
||||
ResultSet rs1 = pstmt.executeQuery();
|
||||
rs1.next();
|
||||
String networkType = rs1.getString(1);
|
||||
|
||||
//insert the reference
|
||||
pstmt = conn.prepareStatement("INSERT INTO `cloud`.`router_network_ref` (router_id, network_id, guest_type) " + "VALUES (?, ?, ?)");
|
||||
|
||||
pstmt.setLong(1, routerId);
|
||||
pstmt.setLong(2, networkId);
|
||||
pstmt.setString(3, networkType);
|
||||
pstmt.executeUpdate();
|
||||
pstmt1.setLong(1, networkId);
|
||||
try (ResultSet rs1 = pstmt1.executeQuery();) {
|
||||
rs1.next();
|
||||
String networkType = rs1.getString(1);
|
||||
|
||||
//insert the reference
|
||||
pstmt2.setLong(1, routerId);
|
||||
pstmt2.setLong(2, networkId);
|
||||
pstmt2.setString(3, networkType);
|
||||
pstmt2.executeUpdate();
|
||||
}
|
||||
s_logger.debug("Added reference for router id=" + routerId + " and network id=" + networkId);
|
||||
|
||||
}
|
||||
} catch (SQLException e) {
|
||||
throw new CloudRuntimeException("Failed to update the router/network reference ", e);
|
||||
} finally {
|
||||
try {
|
||||
if (rs != null) {
|
||||
rs.close();
|
||||
}
|
||||
|
||||
if (pstmt != null) {
|
||||
pstmt.close();
|
||||
}
|
||||
} catch (SQLException e) {
|
||||
}
|
||||
}
|
||||
s_logger.debug("Done updating router/network references");
|
||||
}
|
||||
|
|
@ -768,33 +684,19 @@ public class Upgrade302to40 extends Upgrade30xBase implements DbUpgrade {
|
|||
}
|
||||
}
|
||||
|
||||
if (zoneResults != null) {
|
||||
try {
|
||||
zoneResults.close();
|
||||
} catch (SQLException e) {
|
||||
}
|
||||
}
|
||||
if (zoneSearchStmt != null) {
|
||||
try {
|
||||
zoneSearchStmt.close();
|
||||
} catch (SQLException e) {
|
||||
}
|
||||
}
|
||||
closeAutoCloseable(zoneResults);
|
||||
closeAutoCloseable(zoneSearchStmt);
|
||||
} catch (SQLException e) {
|
||||
throw new CloudRuntimeException("Exception while adding PhysicalNetworks", e);
|
||||
} finally {
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
private void addF5LoadBalancer(Connection conn, long hostId, long physicalNetworkId) {
|
||||
PreparedStatement pstmtUpdate = null;
|
||||
try {
|
||||
s_logger.debug("Adding F5 Big IP load balancer with host id " + hostId + " in to physical network" + physicalNetworkId);
|
||||
String insertF5 =
|
||||
"INSERT INTO `cloud`.`external_load_balancer_devices` (physical_network_id, host_id, provider_name, "
|
||||
+ "device_name, capacity, is_dedicated, device_state, allocation_state, is_inline, is_managed, uuid) VALUES ( ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)";
|
||||
pstmtUpdate = conn.prepareStatement(insertF5);
|
||||
s_logger.debug("Adding F5 Big IP load balancer with host id " + hostId + " in to physical network" + physicalNetworkId);
|
||||
String insertF5 =
|
||||
"INSERT INTO `cloud`.`external_load_balancer_devices` (physical_network_id, host_id, provider_name, "
|
||||
+ "device_name, capacity, is_dedicated, device_state, allocation_state, is_inline, is_managed, uuid) VALUES ( ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)";
|
||||
try (PreparedStatement pstmtUpdate = conn.prepareStatement(insertF5);) {
|
||||
pstmtUpdate.setLong(1, physicalNetworkId);
|
||||
pstmtUpdate.setLong(2, hostId);
|
||||
pstmtUpdate.setString(3, "F5BigIp");
|
||||
|
|
@ -809,24 +711,15 @@ public class Upgrade302to40 extends Upgrade30xBase implements DbUpgrade {
|
|||
pstmtUpdate.executeUpdate();
|
||||
} catch (SQLException e) {
|
||||
throw new CloudRuntimeException("Exception while adding F5 load balancer device", e);
|
||||
} finally {
|
||||
if (pstmtUpdate != null) {
|
||||
try {
|
||||
pstmtUpdate.close();
|
||||
} catch (SQLException e) {
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private void addSrxFirewall(Connection conn, long hostId, long physicalNetworkId) {
|
||||
PreparedStatement pstmtUpdate = null;
|
||||
try {
|
||||
s_logger.debug("Adding SRX firewall device with host id " + hostId + " in to physical network" + physicalNetworkId);
|
||||
String insertSrx =
|
||||
"INSERT INTO `cloud`.`external_firewall_devices` (physical_network_id, host_id, provider_name, "
|
||||
+ "device_name, capacity, is_dedicated, device_state, allocation_state, uuid) VALUES ( ?, ?, ?, ?, ?, ?, ?, ?, ?)";
|
||||
pstmtUpdate = conn.prepareStatement(insertSrx);
|
||||
s_logger.debug("Adding SRX firewall device with host id " + hostId + " in to physical network" + physicalNetworkId);
|
||||
String insertSrx =
|
||||
"INSERT INTO `cloud`.`external_firewall_devices` (physical_network_id, host_id, provider_name, "
|
||||
+ "device_name, capacity, is_dedicated, device_state, allocation_state, uuid) VALUES ( ?, ?, ?, ?, ?, ?, ?, ?, ?)";
|
||||
try (PreparedStatement pstmtUpdate = conn.prepareStatement(insertSrx);) {
|
||||
pstmtUpdate.setLong(1, physicalNetworkId);
|
||||
pstmtUpdate.setLong(2, hostId);
|
||||
pstmtUpdate.setString(3, "JuniperSRX");
|
||||
|
|
@ -839,28 +732,18 @@ public class Upgrade302to40 extends Upgrade30xBase implements DbUpgrade {
|
|||
pstmtUpdate.executeUpdate();
|
||||
} catch (SQLException e) {
|
||||
throw new CloudRuntimeException("Exception while adding SRX firewall device ", e);
|
||||
} finally {
|
||||
if (pstmtUpdate != null) {
|
||||
try {
|
||||
pstmtUpdate.close();
|
||||
} catch (SQLException e) {
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private void addF5ServiceProvider(Connection conn, long physicalNetworkId, long zoneId) {
|
||||
PreparedStatement pstmtUpdate = null;
|
||||
try {
|
||||
// add physical network service provider - F5BigIp
|
||||
s_logger.debug("Adding PhysicalNetworkServiceProvider F5BigIp" + " in to physical network" + physicalNetworkId);
|
||||
String insertPNSP =
|
||||
"INSERT INTO `cloud`.`physical_network_service_providers` (`uuid`, `physical_network_id` , `provider_name`, `state` ,"
|
||||
+ "`destination_physical_network_id`, `vpn_service_provided`, `dhcp_service_provided`, `dns_service_provided`, `gateway_service_provided`,"
|
||||
+ "`firewall_service_provided`, `source_nat_service_provided`, `load_balance_service_provided`, `static_nat_service_provided`,"
|
||||
+ "`port_forwarding_service_provided`, `user_data_service_provided`, `security_group_service_provided`) VALUES (?,?,?,?,0,0,0,0,0,0,0,1,0,0,0,0)";
|
||||
|
||||
pstmtUpdate = conn.prepareStatement(insertPNSP);
|
||||
// add physical network service provider - F5BigIp
|
||||
s_logger.debug("Adding PhysicalNetworkServiceProvider F5BigIp" + " in to physical network" + physicalNetworkId);
|
||||
String insertPNSP =
|
||||
"INSERT INTO `cloud`.`physical_network_service_providers` (`uuid`, `physical_network_id` , `provider_name`, `state` ,"
|
||||
+ "`destination_physical_network_id`, `vpn_service_provided`, `dhcp_service_provided`, `dns_service_provided`, `gateway_service_provided`,"
|
||||
+ "`firewall_service_provided`, `source_nat_service_provided`, `load_balance_service_provided`, `static_nat_service_provided`,"
|
||||
+ "`port_forwarding_service_provided`, `user_data_service_provided`, `security_group_service_provided`) VALUES (?,?,?,?,0,0,0,0,0,0,0,1,0,0,0,0)";
|
||||
try (PreparedStatement pstmtUpdate = conn.prepareStatement(insertPNSP);) {
|
||||
pstmtUpdate.setString(1, UUID.randomUUID().toString());
|
||||
pstmtUpdate.setLong(2, physicalNetworkId);
|
||||
pstmtUpdate.setString(3, "F5BigIp");
|
||||
|
|
@ -868,28 +751,18 @@ public class Upgrade302to40 extends Upgrade30xBase implements DbUpgrade {
|
|||
pstmtUpdate.executeUpdate();
|
||||
} catch (SQLException e) {
|
||||
throw new CloudRuntimeException("Exception while adding PhysicalNetworkServiceProvider F5BigIp", e);
|
||||
} finally {
|
||||
if (pstmtUpdate != null) {
|
||||
try {
|
||||
pstmtUpdate.close();
|
||||
} catch (SQLException e) {
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private void addSrxServiceProvider(Connection conn, long physicalNetworkId, long zoneId) {
|
||||
PreparedStatement pstmtUpdate = null;
|
||||
try {
|
||||
// add physical network service provider - JuniperSRX
|
||||
s_logger.debug("Adding PhysicalNetworkServiceProvider JuniperSRX");
|
||||
String insertPNSP =
|
||||
"INSERT INTO `cloud`.`physical_network_service_providers` (`uuid`, `physical_network_id` , `provider_name`, `state` ,"
|
||||
+ "`destination_physical_network_id`, `vpn_service_provided`, `dhcp_service_provided`, `dns_service_provided`, `gateway_service_provided`,"
|
||||
+ "`firewall_service_provided`, `source_nat_service_provided`, `load_balance_service_provided`, `static_nat_service_provided`,"
|
||||
+ "`port_forwarding_service_provided`, `user_data_service_provided`, `security_group_service_provided`) VALUES (?,?,?,?,0,0,0,0,1,1,1,0,1,1,0,0)";
|
||||
|
||||
pstmtUpdate = conn.prepareStatement(insertPNSP);
|
||||
// add physical network service provider - JuniperSRX
|
||||
s_logger.debug("Adding PhysicalNetworkServiceProvider JuniperSRX");
|
||||
String insertPNSP =
|
||||
"INSERT INTO `cloud`.`physical_network_service_providers` (`uuid`, `physical_network_id` , `provider_name`, `state` ,"
|
||||
+ "`destination_physical_network_id`, `vpn_service_provided`, `dhcp_service_provided`, `dns_service_provided`, `gateway_service_provided`,"
|
||||
+ "`firewall_service_provided`, `source_nat_service_provided`, `load_balance_service_provided`, `static_nat_service_provided`,"
|
||||
+ "`port_forwarding_service_provided`, `user_data_service_provided`, `security_group_service_provided`) VALUES (?,?,?,?,0,0,0,0,1,1,1,0,1,1,0,0)";
|
||||
try (PreparedStatement pstmtUpdate = conn.prepareStatement(insertPNSP);) {
|
||||
pstmtUpdate.setString(1, UUID.randomUUID().toString());
|
||||
pstmtUpdate.setLong(2, physicalNetworkId);
|
||||
pstmtUpdate.setString(3, "JuniperSRX");
|
||||
|
|
@ -897,13 +770,6 @@ public class Upgrade302to40 extends Upgrade30xBase implements DbUpgrade {
|
|||
pstmtUpdate.executeUpdate();
|
||||
} catch (SQLException e) {
|
||||
throw new CloudRuntimeException("Exception while adding PhysicalNetworkServiceProvider JuniperSRX", e);
|
||||
} finally {
|
||||
if (pstmtUpdate != null) {
|
||||
try {
|
||||
pstmtUpdate.close();
|
||||
} catch (SQLException e) {
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -1045,15 +911,8 @@ public class Upgrade302to40 extends Upgrade30xBase implements DbUpgrade {
|
|||
} catch (SQLException e) {
|
||||
throw new CloudRuntimeException("Unable create a mapping for the networks in network_external_lb_device_map and network_external_firewall_device_map", e);
|
||||
} finally {
|
||||
try {
|
||||
if (rs != null) {
|
||||
rs.close();
|
||||
}
|
||||
if (pstmt != null) {
|
||||
pstmt.close();
|
||||
}
|
||||
} catch (SQLException e) {
|
||||
}
|
||||
closeAutoCloseable(rs);
|
||||
closeAutoCloseable(pstmt);
|
||||
}
|
||||
s_logger.info("Successfully upgraded networks using F5 and SRX devices to have a entry in the network_external_lb_device_map and network_external_firewall_device_map");
|
||||
}
|
||||
|
|
@ -1062,12 +921,11 @@ public class Upgrade302to40 extends Upgrade30xBase implements DbUpgrade {
|
|||
private void encryptConfig(Connection conn) {
|
||||
//Encrypt config params and change category to Hidden
|
||||
s_logger.debug("Encrypting Config values");
|
||||
PreparedStatement pstmt = null;
|
||||
ResultSet rs = null;
|
||||
try {
|
||||
pstmt =
|
||||
conn.prepareStatement("select name, value from `cloud`.`configuration` where name in ('router.ram.size', 'secondary.storage.vm', 'security.hash.key') and category <> 'Hidden'");
|
||||
rs = pstmt.executeQuery();
|
||||
try (
|
||||
PreparedStatement pstmt = conn.prepareStatement("select name, value from `cloud`.`configuration` where name in ('router.ram.size', 'secondary.storage.vm', 'security.hash.key') and category <> 'Hidden'");
|
||||
PreparedStatement pstmt1 = conn.prepareStatement("update `cloud`.`configuration` set value=?, category = 'Hidden' where name=?");
|
||||
ResultSet rs = pstmt.executeQuery();
|
||||
) {
|
||||
while (rs.next()) {
|
||||
String name = rs.getString(1);
|
||||
String value = rs.getString(2);
|
||||
|
|
@ -1075,37 +933,25 @@ public class Upgrade302to40 extends Upgrade30xBase implements DbUpgrade {
|
|||
continue;
|
||||
}
|
||||
String encryptedValue = DBEncryptionUtil.encrypt(value);
|
||||
pstmt = conn.prepareStatement("update `cloud`.`configuration` set value=?, category = 'Hidden' where name=?");
|
||||
pstmt.setBytes(1, encryptedValue.getBytes("UTF-8"));
|
||||
pstmt.setString(2, name);
|
||||
pstmt.executeUpdate();
|
||||
pstmt1.setBytes(1, encryptedValue.getBytes("UTF-8"));
|
||||
pstmt1.setString(2, name);
|
||||
pstmt1.executeUpdate();
|
||||
}
|
||||
} catch (SQLException e) {
|
||||
throw new CloudRuntimeException("Unable encrypt configuration values ", e);
|
||||
} catch (UnsupportedEncodingException e) {
|
||||
throw new CloudRuntimeException("Unable encrypt configuration values ", e);
|
||||
} finally {
|
||||
try {
|
||||
if (rs != null) {
|
||||
rs.close();
|
||||
}
|
||||
|
||||
if (pstmt != null) {
|
||||
pstmt.close();
|
||||
}
|
||||
} catch (SQLException e) {
|
||||
}
|
||||
}
|
||||
s_logger.debug("Done encrypting Config values");
|
||||
}
|
||||
|
||||
private void encryptClusterDetails(Connection conn) {
|
||||
s_logger.debug("Encrypting cluster details");
|
||||
PreparedStatement pstmt = null;
|
||||
ResultSet rs = null;
|
||||
try {
|
||||
pstmt = conn.prepareStatement("select id, value from `cloud`.`cluster_details` where name = 'password'");
|
||||
rs = pstmt.executeQuery();
|
||||
try (
|
||||
PreparedStatement pstmt = conn.prepareStatement("select id, value from `cloud`.`cluster_details` where name = 'password'");
|
||||
PreparedStatement pstmt1 = conn.prepareStatement("update `cloud`.`cluster_details` set value=? where id=?");
|
||||
ResultSet rs = pstmt.executeQuery();
|
||||
) {
|
||||
while (rs.next()) {
|
||||
long id = rs.getLong(1);
|
||||
String value = rs.getString(2);
|
||||
|
|
@ -1113,26 +959,14 @@ public class Upgrade302to40 extends Upgrade30xBase implements DbUpgrade {
|
|||
continue;
|
||||
}
|
||||
String encryptedValue = DBEncryptionUtil.encrypt(value);
|
||||
pstmt = conn.prepareStatement("update `cloud`.`cluster_details` set value=? where id=?");
|
||||
pstmt.setBytes(1, encryptedValue.getBytes("UTF-8"));
|
||||
pstmt.setLong(2, id);
|
||||
pstmt.executeUpdate();
|
||||
pstmt1.setBytes(1, encryptedValue.getBytes("UTF-8"));
|
||||
pstmt1.setLong(2, id);
|
||||
pstmt1.executeUpdate();
|
||||
}
|
||||
} catch (SQLException e) {
|
||||
throw new CloudRuntimeException("Unable encrypt cluster_details values ", e);
|
||||
} catch (UnsupportedEncodingException e) {
|
||||
throw new CloudRuntimeException("Unable encrypt cluster_details values ", e);
|
||||
} finally {
|
||||
try {
|
||||
if (rs != null) {
|
||||
rs.close();
|
||||
}
|
||||
|
||||
if (pstmt != null) {
|
||||
pstmt.close();
|
||||
}
|
||||
} catch (SQLException e) {
|
||||
}
|
||||
}
|
||||
s_logger.debug("Done encrypting cluster_details");
|
||||
}
|
||||
|
|
|
|||
|
|
@ -33,7 +33,7 @@ import com.cloud.utils.crypt.DBEncryptionUtil;
|
|||
import com.cloud.utils.exception.CloudRuntimeException;
|
||||
import com.cloud.utils.script.Script;
|
||||
|
||||
public class Upgrade304to305 extends Upgrade30xBase implements DbUpgrade {
|
||||
public class Upgrade304to305 extends Upgrade30xBase {
|
||||
final static Logger s_logger = Logger.getLogger(Upgrade304to305.class);
|
||||
|
||||
@Override
|
||||
|
|
@ -173,16 +173,8 @@ public class Upgrade304to305 extends Upgrade30xBase implements DbUpgrade {
|
|||
} catch (SQLException e) {
|
||||
throw new CloudRuntimeException("Unable add VPC physical network service provider ", e);
|
||||
} finally {
|
||||
try {
|
||||
if (rs != null) {
|
||||
rs.close();
|
||||
}
|
||||
|
||||
if (pstmt != null) {
|
||||
pstmt.close();
|
||||
}
|
||||
} catch (SQLException e) {
|
||||
}
|
||||
closeAutoCloseable(rs);
|
||||
closeAutoCloseable(pstmt);
|
||||
}
|
||||
s_logger.debug("Done adding VPC physical network service providers to all physical networks");
|
||||
}
|
||||
|
|
@ -220,16 +212,8 @@ public class Upgrade304to305 extends Upgrade30xBase implements DbUpgrade {
|
|||
} catch (SQLException e) {
|
||||
throw new CloudRuntimeException("Failed to update the router/network reference ", e);
|
||||
} finally {
|
||||
try {
|
||||
if (rs != null) {
|
||||
rs.close();
|
||||
}
|
||||
|
||||
if (pstmt != null) {
|
||||
pstmt.close();
|
||||
}
|
||||
} catch (SQLException e) {
|
||||
}
|
||||
closeAutoCloseable(rs);
|
||||
closeAutoCloseable(pstmt);
|
||||
}
|
||||
s_logger.debug("Done updating router/network references");
|
||||
}
|
||||
|
|
@ -254,16 +238,8 @@ public class Upgrade304to305 extends Upgrade30xBase implements DbUpgrade {
|
|||
} catch (SQLException e) {
|
||||
throw new CloudRuntimeException("Failed to check/update the host_details unique key ", e);
|
||||
} finally {
|
||||
try {
|
||||
if (rs != null) {
|
||||
rs.close();
|
||||
}
|
||||
|
||||
if (pstmt != null) {
|
||||
pstmt.close();
|
||||
}
|
||||
} catch (SQLException e) {
|
||||
}
|
||||
closeAutoCloseable(rs);
|
||||
closeAutoCloseable(pstmt);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -407,15 +383,8 @@ public class Upgrade304to305 extends Upgrade30xBase implements DbUpgrade {
|
|||
} catch (SQLException e) {
|
||||
throw new CloudRuntimeException("Unable create a mapping for the networks in network_external_lb_device_map and network_external_firewall_device_map", e);
|
||||
} finally {
|
||||
try {
|
||||
if (rs != null) {
|
||||
rs.close();
|
||||
}
|
||||
if (pstmt != null) {
|
||||
pstmt.close();
|
||||
}
|
||||
} catch (SQLException e) {
|
||||
}
|
||||
closeAutoCloseable(rs);
|
||||
closeAutoCloseable(pstmt);
|
||||
}
|
||||
s_logger.info("Successfully upgraded network using F5 and SRX devices to have a entry in the network_external_lb_device_map and network_external_firewall_device_map");
|
||||
}
|
||||
|
|
@ -487,16 +456,8 @@ public class Upgrade304to305 extends Upgrade30xBase implements DbUpgrade {
|
|||
} catch (UnsupportedEncodingException e) {
|
||||
throw new CloudRuntimeException("Unable encrypt cluster_details values ", e);
|
||||
} finally {
|
||||
try {
|
||||
if (rs != null) {
|
||||
rs.close();
|
||||
}
|
||||
|
||||
if (pstmt != null) {
|
||||
pstmt.close();
|
||||
}
|
||||
} catch (SQLException e) {
|
||||
}
|
||||
closeAutoCloseable(rs);
|
||||
closeAutoCloseable(pstmt);
|
||||
}
|
||||
s_logger.debug("Done encrypting cluster_details");
|
||||
}
|
||||
|
|
|
|||
|
|
@ -31,7 +31,7 @@ import org.apache.log4j.Logger;
|
|||
import com.cloud.utils.exception.CloudRuntimeException;
|
||||
import com.cloud.utils.script.Script;
|
||||
|
||||
public class Upgrade305to306 extends Upgrade30xBase implements DbUpgrade {
|
||||
public class Upgrade305to306 extends Upgrade30xBase {
|
||||
final static Logger s_logger = Logger.getLogger(Upgrade305to306.class);
|
||||
|
||||
@Override
|
||||
|
|
@ -82,55 +82,33 @@ public class Upgrade305to306 extends Upgrade30xBase implements DbUpgrade {
|
|||
DbUpgradeUtils.dropKeysIfExist(conn, "alert", indexList, false);
|
||||
|
||||
//Now add index.
|
||||
PreparedStatement pstmt = null;
|
||||
try {
|
||||
pstmt = conn.prepareStatement("ALTER TABLE `cloud`.`alert` ADD INDEX `i_alert__last_sent`(`last_sent`)");
|
||||
try (PreparedStatement pstmt = conn.prepareStatement("ALTER TABLE `cloud`.`alert` ADD INDEX `i_alert__last_sent`(`last_sent`)");) {
|
||||
pstmt.executeUpdate();
|
||||
s_logger.debug("Added index i_alert__last_sent for table alert");
|
||||
} catch (SQLException e) {
|
||||
throw new CloudRuntimeException("Unable to add index i_alert__last_sent to alert table for the column last_sent", e);
|
||||
} finally {
|
||||
try {
|
||||
if (pstmt != null) {
|
||||
pstmt.close();
|
||||
}
|
||||
} catch (SQLException e) {
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
private void upgradeEIPNetworkOfferings(Connection conn) {
|
||||
PreparedStatement pstmt = null;
|
||||
ResultSet rs = null;
|
||||
|
||||
try {
|
||||
pstmt = conn.prepareStatement("select id, elastic_ip_service from `cloud`.`network_offerings` where traffic_type='Guest'");
|
||||
rs = pstmt.executeQuery();
|
||||
try (
|
||||
PreparedStatement pstmt = conn.prepareStatement("select id, elastic_ip_service from `cloud`.`network_offerings` where traffic_type='Guest'");
|
||||
PreparedStatement pstmt1 = conn.prepareStatement("UPDATE `cloud`.`network_offerings` set eip_associate_public_ip=? where id=?");
|
||||
ResultSet rs = pstmt.executeQuery();
|
||||
){
|
||||
while (rs.next()) {
|
||||
long id = rs.getLong(1);
|
||||
// check if elastic IP service is enabled for network offering
|
||||
if (rs.getLong(2) != 0) {
|
||||
//update network offering with eip_associate_public_ip set to true
|
||||
pstmt = conn.prepareStatement("UPDATE `cloud`.`network_offerings` set eip_associate_public_ip=? where id=?");
|
||||
pstmt.setBoolean(1, true);
|
||||
pstmt.setLong(2, id);
|
||||
pstmt.executeUpdate();
|
||||
pstmt1.setBoolean(1, true);
|
||||
pstmt1.setLong(2, id);
|
||||
pstmt1.executeUpdate();
|
||||
}
|
||||
}
|
||||
} catch (SQLException e) {
|
||||
throw new CloudRuntimeException("Unable to set eip_associate_public_ip for network offerings with EIP service enabled.", e);
|
||||
} finally {
|
||||
try {
|
||||
if (rs != null) {
|
||||
rs.close();
|
||||
}
|
||||
|
||||
if (pstmt != null) {
|
||||
pstmt.close();
|
||||
}
|
||||
} catch (SQLException e) {
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -143,20 +121,11 @@ public class Upgrade305to306 extends Upgrade30xBase implements DbUpgrade {
|
|||
DbUpgradeUtils.dropKeysIfExist(conn, "host_details", indexList, false);
|
||||
|
||||
//Now add index.
|
||||
PreparedStatement pstmt = null;
|
||||
try {
|
||||
pstmt = conn.prepareStatement("ALTER TABLE `cloud`.`host_details` ADD INDEX `fk_host_details__host_id`(`host_id`)");
|
||||
try (PreparedStatement pstmt = conn.prepareStatement("ALTER TABLE `cloud`.`host_details` ADD INDEX `fk_host_details__host_id`(`host_id`)");) {
|
||||
pstmt.executeUpdate();
|
||||
s_logger.debug("Added index fk_host_details__host_id for table host_details");
|
||||
} catch (SQLException e) {
|
||||
throw new CloudRuntimeException("Unable to add index fk_host_details__host_id to host_details table for the column host_id", e);
|
||||
} finally {
|
||||
try {
|
||||
if (pstmt != null) {
|
||||
pstmt.close();
|
||||
}
|
||||
} catch (SQLException e) {
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
|
@ -218,15 +187,8 @@ public class Upgrade305to306 extends Upgrade30xBase implements DbUpgrade {
|
|||
} catch (SQLException e) {
|
||||
throw new CloudRuntimeException("Unable to set egress firewall rules ", e);
|
||||
} finally {
|
||||
try {
|
||||
if (rs != null) {
|
||||
rs.close();
|
||||
}
|
||||
if (pstmt != null) {
|
||||
pstmt.close();
|
||||
}
|
||||
} catch (SQLException e) {
|
||||
}
|
||||
closeAutoCloseable(rs);
|
||||
closeAutoCloseable(pstmt);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -247,16 +209,8 @@ public class Upgrade305to306 extends Upgrade30xBase implements DbUpgrade {
|
|||
} catch (SQLException e) {
|
||||
throw new CloudRuntimeException("Unable to remove Firewall service for SG shared network offering.", e);
|
||||
} finally {
|
||||
try {
|
||||
if (rs != null) {
|
||||
rs.close();
|
||||
}
|
||||
|
||||
if (pstmt != null) {
|
||||
pstmt.close();
|
||||
}
|
||||
} catch (SQLException e) {
|
||||
}
|
||||
closeAutoCloseable(rs);
|
||||
closeAutoCloseable(pstmt);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -288,16 +242,8 @@ public class Upgrade305to306 extends Upgrade30xBase implements DbUpgrade {
|
|||
} catch (SQLException e) {
|
||||
throw new CloudRuntimeException("Unable to update backup id for KVM snapshots", e);
|
||||
} finally {
|
||||
try {
|
||||
if (rs != null) {
|
||||
rs.close();
|
||||
}
|
||||
|
||||
if (pstmt != null) {
|
||||
pstmt.close();
|
||||
}
|
||||
} catch (SQLException e) {
|
||||
}
|
||||
closeAutoCloseable(rs);
|
||||
closeAutoCloseable(pstmt);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -28,7 +28,7 @@ import org.apache.log4j.Logger;
|
|||
import com.cloud.utils.exception.CloudRuntimeException;
|
||||
import com.cloud.utils.script.Script;
|
||||
|
||||
public class Upgrade306to307 extends Upgrade30xBase implements DbUpgrade {
|
||||
public class Upgrade306to307 extends Upgrade30xBase {
|
||||
final static Logger s_logger = Logger.getLogger(Upgrade306to307.class);
|
||||
|
||||
@Override
|
||||
|
|
@ -97,20 +97,11 @@ public class Upgrade306to307 extends Upgrade30xBase implements DbUpgrade {
|
|||
pstmt = conn.prepareStatement("drop table `cloud`.`network_details`");
|
||||
pstmt.executeUpdate();
|
||||
} catch (SQLException e) {
|
||||
s_logger.info("[ignored] error during network offering update:" + e.getLocalizedMessage(), e);
|
||||
} finally {
|
||||
try {
|
||||
if (rs != null) {
|
||||
rs.close();
|
||||
}
|
||||
|
||||
if (rs1 != null) {
|
||||
rs1.close();
|
||||
}
|
||||
if (pstmt != null) {
|
||||
pstmt.close();
|
||||
}
|
||||
} catch (SQLException e) {
|
||||
}
|
||||
closeAutoCloseable(rs);
|
||||
closeAutoCloseable(rs1);
|
||||
closeAutoCloseable(pstmt);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -69,23 +69,14 @@ public class Upgrade307to410 implements DbUpgrade {
|
|||
if (regionId != null) {
|
||||
region_id = Integer.parseInt(regionId);
|
||||
}
|
||||
PreparedStatement pstmt = null;
|
||||
try {
|
||||
try (PreparedStatement pstmt = conn.prepareStatement("update `cloud`.`region` set id = ?");){
|
||||
//Update regionId in region table
|
||||
s_logger.debug("Updating region table with Id: " + region_id);
|
||||
pstmt = conn.prepareStatement("update `cloud`.`region` set id = ?");
|
||||
pstmt.setInt(1, region_id);
|
||||
pstmt.executeUpdate();
|
||||
|
||||
} catch (SQLException e) {
|
||||
throw new CloudRuntimeException("Error while updating region entries", e);
|
||||
} finally {
|
||||
try {
|
||||
if (pstmt != null) {
|
||||
pstmt.close();
|
||||
}
|
||||
} catch (SQLException e) {
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -28,7 +28,7 @@ import com.cloud.configuration.Resource.ResourceType;
|
|||
import com.cloud.utils.exception.CloudRuntimeException;
|
||||
import com.cloud.utils.script.Script;
|
||||
|
||||
public class Upgrade30to301 implements DbUpgrade {
|
||||
public class Upgrade30to301 extends LegacyDbUpgrade {
|
||||
final static Logger s_logger = Logger.getLogger(Upgrade30to301.class);
|
||||
|
||||
@Override
|
||||
|
|
@ -100,20 +100,9 @@ public class Upgrade30to301 implements DbUpgrade {
|
|||
} catch (SQLException e) {
|
||||
throw new CloudRuntimeException("Unable to update network resource count for account id=" + accountId, e);
|
||||
} finally {
|
||||
try {
|
||||
if (rs != null) {
|
||||
rs.close();
|
||||
}
|
||||
|
||||
if (rs1 != null) {
|
||||
rs1.close();
|
||||
}
|
||||
|
||||
if (pstmt != null) {
|
||||
pstmt.close();
|
||||
}
|
||||
} catch (SQLException e) {
|
||||
}
|
||||
closeAutoCloseable(rs);
|
||||
closeAutoCloseable(rs1);
|
||||
closeAutoCloseable(pstmt);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -27,37 +27,22 @@ import org.apache.log4j.Logger;
|
|||
|
||||
import com.cloud.utils.exception.CloudRuntimeException;
|
||||
|
||||
public abstract class Upgrade30xBase implements DbUpgrade {
|
||||
public abstract class Upgrade30xBase extends LegacyDbUpgrade {
|
||||
|
||||
final static Logger s_logger = Logger.getLogger(Upgrade30xBase.class);
|
||||
|
||||
protected String getNetworkLabelFromConfig(Connection conn, String name) {
|
||||
String sql = "SELECT value FROM `cloud`.`configuration` where name = ?";
|
||||
String networkLabel = null;
|
||||
PreparedStatement pstmt = null;
|
||||
ResultSet rs = null;
|
||||
try {
|
||||
pstmt = conn.prepareStatement(sql);
|
||||
try (PreparedStatement pstmt = conn.prepareStatement(sql);) {
|
||||
pstmt.setString(1,name);
|
||||
rs = pstmt.executeQuery();
|
||||
if (rs.next()) {
|
||||
networkLabel = rs.getString(1);
|
||||
try (ResultSet rs = pstmt.executeQuery();) {
|
||||
if (rs.next()) {
|
||||
networkLabel = rs.getString(1);
|
||||
}
|
||||
}
|
||||
} catch (SQLException e) {
|
||||
throw new CloudRuntimeException("Unable to fetch network label from configuration", e);
|
||||
} finally {
|
||||
if (rs != null) {
|
||||
try {
|
||||
rs.close();
|
||||
} catch (SQLException e) {
|
||||
}
|
||||
}
|
||||
if (pstmt != null) {
|
||||
try {
|
||||
pstmt.close();
|
||||
} catch (SQLException e) {
|
||||
}
|
||||
}
|
||||
}
|
||||
return networkLabel;
|
||||
}
|
||||
|
|
@ -117,19 +102,8 @@ public abstract class Upgrade30xBase implements DbUpgrade {
|
|||
} catch (SQLException e) {
|
||||
throw new CloudRuntimeException("Exception while adding PhysicalNetworks", e);
|
||||
} finally {
|
||||
if (pstmtUpdate != null) {
|
||||
try {
|
||||
pstmtUpdate.close();
|
||||
} catch (SQLException e) {
|
||||
}
|
||||
}
|
||||
if (pstmt2 != null) {
|
||||
try {
|
||||
pstmt2.close();
|
||||
} catch (SQLException e) {
|
||||
}
|
||||
}
|
||||
|
||||
closeAutoCloseable(pstmt2);
|
||||
closeAutoCloseable(pstmtUpdate);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -152,12 +126,7 @@ public abstract class Upgrade30xBase implements DbUpgrade {
|
|||
} catch (SQLException e) {
|
||||
throw new CloudRuntimeException("Exception while adding PhysicalNetworks", e);
|
||||
} finally {
|
||||
if (pstmtUpdate != null) {
|
||||
try {
|
||||
pstmtUpdate.close();
|
||||
} catch (SQLException e) {
|
||||
}
|
||||
}
|
||||
closeAutoCloseable(pstmtUpdate);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -204,18 +173,8 @@ public abstract class Upgrade30xBase implements DbUpgrade {
|
|||
} catch (SQLException e) {
|
||||
throw new CloudRuntimeException("Exception while adding default Security Group Provider", e);
|
||||
} finally {
|
||||
if (pstmtUpdate != null) {
|
||||
try {
|
||||
pstmtUpdate.close();
|
||||
} catch (SQLException e) {
|
||||
}
|
||||
}
|
||||
if (pstmt2 != null) {
|
||||
try {
|
||||
pstmt2.close();
|
||||
} catch (SQLException e) {
|
||||
}
|
||||
}
|
||||
closeAutoCloseable(pstmt2);
|
||||
closeAutoCloseable(pstmtUpdate);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -261,18 +220,8 @@ public abstract class Upgrade30xBase implements DbUpgrade {
|
|||
} catch (SQLException e) {
|
||||
throw new CloudRuntimeException("Exception while adding PhysicalNetworks", e);
|
||||
} finally {
|
||||
if (pstmtUpdate != null) {
|
||||
try {
|
||||
pstmtUpdate.close();
|
||||
} catch (SQLException e) {
|
||||
}
|
||||
}
|
||||
if (pstmt2 != null) {
|
||||
try {
|
||||
pstmt2.close();
|
||||
} catch (SQLException e) {
|
||||
}
|
||||
}
|
||||
closeAutoCloseable(pstmt2);
|
||||
closeAutoCloseable(pstmtUpdate);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -299,12 +248,7 @@ public abstract class Upgrade30xBase implements DbUpgrade {
|
|||
} catch (SQLException e) {
|
||||
throw new CloudRuntimeException("Exception while adding PhysicalNetworks", e);
|
||||
} finally {
|
||||
if (pstmtUpdate != null) {
|
||||
try {
|
||||
pstmtUpdate.close();
|
||||
} catch (SQLException e) {
|
||||
}
|
||||
}
|
||||
closeAutoCloseable(pstmtUpdate);
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
|||
|
|
@ -82,23 +82,14 @@ public class Upgrade40to41 implements DbUpgrade {
|
|||
if (regionId != null) {
|
||||
region_id = Integer.parseInt(regionId);
|
||||
}
|
||||
PreparedStatement pstmt = null;
|
||||
try {
|
||||
try (PreparedStatement pstmt = conn.prepareStatement("update `cloud`.`region` set id = ?");) {
|
||||
//Update regionId in region table
|
||||
s_logger.debug("Updating region table with Id: " + region_id);
|
||||
pstmt = conn.prepareStatement("update `cloud`.`region` set id = ?");
|
||||
pstmt.setInt(1, region_id);
|
||||
pstmt.executeUpdate();
|
||||
|
||||
} catch (SQLException e) {
|
||||
throw new CloudRuntimeException("Error while updating region entries", e);
|
||||
} finally {
|
||||
try {
|
||||
if (pstmt != null) {
|
||||
pstmt.close();
|
||||
}
|
||||
} catch (SQLException e) {
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -33,7 +33,6 @@ import java.util.Map;
|
|||
import java.util.UUID;
|
||||
|
||||
import org.apache.log4j.Logger;
|
||||
|
||||
import org.apache.cloudstack.api.ApiConstants;
|
||||
import org.apache.cloudstack.engine.subsystem.api.storage.DataStoreProvider;
|
||||
|
||||
|
|
@ -563,74 +562,47 @@ public class Upgrade410to420 implements DbUpgrade {
|
|||
|
||||
//update the cluster_details table with default overcommit ratios.
|
||||
private void updateOverCommitRatioClusterDetails(Connection conn) {
|
||||
PreparedStatement pstmt = null;
|
||||
PreparedStatement pstmt1 = null;
|
||||
PreparedStatement pstmt2 = null;
|
||||
PreparedStatement pstmt3 = null;
|
||||
ResultSet rs1 = null;
|
||||
ResultSet rscpu_global = null;
|
||||
ResultSet rsmem_global = null;
|
||||
try {
|
||||
pstmt = conn.prepareStatement("select id, hypervisor_type from `cloud`.`cluster` WHERE removed IS NULL");
|
||||
pstmt1 = conn.prepareStatement("INSERT INTO `cloud`.`cluster_details` (cluster_id, name, value) VALUES(?, 'cpuOvercommitRatio', ?)");
|
||||
pstmt2 = conn.prepareStatement("INSERT INTO `cloud`.`cluster_details` (cluster_id, name, value) VALUES(?, 'memoryOvercommitRatio', ?)");
|
||||
pstmt3 = conn.prepareStatement("select value from `cloud`.`configuration` where name=?");
|
||||
pstmt3.setString(1, "cpu.overprovisioning.factor");
|
||||
rscpu_global = pstmt3.executeQuery();
|
||||
try (
|
||||
PreparedStatement pstmt = conn.prepareStatement("select id, hypervisor_type from `cloud`.`cluster` WHERE removed IS NULL");
|
||||
PreparedStatement pstmt1 = conn.prepareStatement("INSERT INTO `cloud`.`cluster_details` (cluster_id, name, value) VALUES(?, 'cpuOvercommitRatio', ?)");
|
||||
PreparedStatement pstmt2 = conn.prepareStatement("INSERT INTO `cloud`.`cluster_details` (cluster_id, name, value) VALUES(?, 'memoryOvercommitRatio', ?)");
|
||||
PreparedStatement pstmt3 = conn.prepareStatement("select value from `cloud`.`configuration` where name=?");) {
|
||||
String global_cpu_overprovisioning_factor = "1";
|
||||
if (rscpu_global.next())
|
||||
global_cpu_overprovisioning_factor = rscpu_global.getString(1);
|
||||
pstmt3.setString(1, "mem.overprovisioning.factor");
|
||||
rsmem_global = pstmt3.executeQuery();
|
||||
String global_mem_overprovisioning_factor = "1";
|
||||
if (rsmem_global.next())
|
||||
global_mem_overprovisioning_factor = rsmem_global.getString(1);
|
||||
rs1 = pstmt.executeQuery();
|
||||
|
||||
while (rs1.next()) {
|
||||
long id = rs1.getLong(1);
|
||||
String hypervisor_type = rs1.getString(2);
|
||||
if (HypervisorType.VMware.toString().equalsIgnoreCase(hypervisor_type)) {
|
||||
pstmt1.setLong(1, id);
|
||||
pstmt1.setString(2, global_cpu_overprovisioning_factor);
|
||||
pstmt1.execute();
|
||||
pstmt2.setLong(1, id);
|
||||
pstmt2.setString(2, global_mem_overprovisioning_factor);
|
||||
pstmt2.execute();
|
||||
} else {
|
||||
//update cluster_details table with the default overcommit ratios.
|
||||
pstmt1.setLong(1,id);
|
||||
pstmt1.setString(2,global_cpu_overprovisioning_factor);
|
||||
pstmt1.execute();
|
||||
pstmt2.setLong(1, id);
|
||||
pstmt2.setString(2, "1");
|
||||
pstmt2.execute();
|
||||
pstmt3.setString(1, "cpu.overprovisioning.factor");
|
||||
try (ResultSet rscpu_global = pstmt3.executeQuery();) {
|
||||
if (rscpu_global.next())
|
||||
global_cpu_overprovisioning_factor = rscpu_global.getString(1);
|
||||
}
|
||||
pstmt3.setString(1, "mem.overprovisioning.factor");
|
||||
try (ResultSet rsmem_global = pstmt3.executeQuery();) {
|
||||
if (rsmem_global.next())
|
||||
global_mem_overprovisioning_factor = rsmem_global.getString(1);
|
||||
}
|
||||
try (ResultSet rs1 = pstmt.executeQuery();) {
|
||||
while (rs1.next()) {
|
||||
long id = rs1.getLong(1);
|
||||
String hypervisor_type = rs1.getString(2);
|
||||
if (HypervisorType.VMware.toString().equalsIgnoreCase(hypervisor_type)) {
|
||||
pstmt1.setLong(1, id);
|
||||
pstmt1.setString(2, global_cpu_overprovisioning_factor);
|
||||
pstmt1.execute();
|
||||
pstmt2.setLong(1, id);
|
||||
pstmt2.setString(2, global_mem_overprovisioning_factor);
|
||||
pstmt2.execute();
|
||||
} else {
|
||||
//update cluster_details table with the default overcommit ratios.
|
||||
pstmt1.setLong(1, id);
|
||||
pstmt1.setString(2, global_cpu_overprovisioning_factor);
|
||||
pstmt1.execute();
|
||||
pstmt2.setLong(1, id);
|
||||
pstmt2.setString(2, "1");
|
||||
pstmt2.execute();
|
||||
}
|
||||
}
|
||||
}
|
||||
} catch (SQLException e) {
|
||||
throw new CloudRuntimeException("Unable to update cluster_details with default overcommit ratios.", e);
|
||||
} finally {
|
||||
try {
|
||||
if (rs1 != null) {
|
||||
rs1.close();
|
||||
}
|
||||
if (rsmem_global != null) {
|
||||
rsmem_global.close();
|
||||
}
|
||||
if (rscpu_global != null) {
|
||||
rscpu_global.close();
|
||||
}
|
||||
if (pstmt != null) {
|
||||
pstmt.close();
|
||||
}
|
||||
if (pstmt2 != null) {
|
||||
pstmt2.close();
|
||||
}
|
||||
if (pstmt3 != null) {
|
||||
pstmt3.close();
|
||||
}
|
||||
} catch (SQLException e) {
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -846,94 +818,75 @@ public class Upgrade410to420 implements DbUpgrade {
|
|||
}
|
||||
|
||||
private void updateNonLegacyZones(Connection conn, List<Long> zones) {
|
||||
PreparedStatement clustersQuery = null;
|
||||
PreparedStatement clusterDetailsQuery = null;
|
||||
PreparedStatement pstmt = null;
|
||||
ResultSet clusters = null;
|
||||
ResultSet clusterDetails = null;
|
||||
ResultSet dcInfo = null;
|
||||
try {
|
||||
for (Long zoneId : zones) {
|
||||
s_logger.debug("Discovered non-legacy zone " + zoneId + ". Processing the zone to associate with VMware datacenter.");
|
||||
|
||||
// All clusters in a non legacy zone will belong to the same VMware DC, hence pick the first cluster
|
||||
clustersQuery = conn.prepareStatement("select id from `cloud`.`cluster` where removed is NULL AND data_center_id=?");
|
||||
clustersQuery.setLong(1, zoneId);
|
||||
clusters = clustersQuery.executeQuery();
|
||||
clusters.next();
|
||||
Long clusterId = clusters.getLong("id");
|
||||
try (PreparedStatement clustersQuery = conn.prepareStatement("select id from `cloud`.`cluster` where removed is NULL AND data_center_id=?");) {
|
||||
clustersQuery.setLong(1, zoneId);
|
||||
try (ResultSet clusters = clustersQuery.executeQuery();) {
|
||||
clusters.next();
|
||||
Long clusterId = clusters.getLong("id");
|
||||
|
||||
// Get VMware datacenter details from cluster_details table
|
||||
String user = null;
|
||||
String password = null;
|
||||
String url = null;
|
||||
clusterDetailsQuery = conn.prepareStatement("select name, value from `cloud`.`cluster_details` where cluster_id=?");
|
||||
clusterDetailsQuery.setLong(1, clusterId);
|
||||
clusterDetails = clusterDetailsQuery.executeQuery();
|
||||
while (clusterDetails.next()) {
|
||||
String key = clusterDetails.getString(1);
|
||||
String value = clusterDetails.getString(2);
|
||||
if (key.equalsIgnoreCase("username")) {
|
||||
user = value;
|
||||
} else if (key.equalsIgnoreCase("password")) {
|
||||
password = value;
|
||||
} else if (key.equalsIgnoreCase("url")) {
|
||||
url = value;
|
||||
// Get VMware datacenter details from cluster_details table
|
||||
String user = null;
|
||||
String password = null;
|
||||
String url = null;
|
||||
try (PreparedStatement clusterDetailsQuery = conn.prepareStatement("select name, value from `cloud`.`cluster_details` where cluster_id=?");) {
|
||||
clusterDetailsQuery.setLong(1, clusterId);
|
||||
try (ResultSet clusterDetails = clusterDetailsQuery.executeQuery();) {
|
||||
while (clusterDetails.next()) {
|
||||
String key = clusterDetails.getString(1);
|
||||
String value = clusterDetails.getString(2);
|
||||
if (key.equalsIgnoreCase("username")) {
|
||||
user = value;
|
||||
} else if (key.equalsIgnoreCase("password")) {
|
||||
password = value;
|
||||
} else if (key.equalsIgnoreCase("url")) {
|
||||
url = value;
|
||||
}
|
||||
}
|
||||
String[] tokens = url.split("/"); // url format - http://vcenter/dc/cluster
|
||||
String vc = tokens[2];
|
||||
String dcName = tokens[3];
|
||||
String guid = dcName + "@" + vc;
|
||||
|
||||
try (PreparedStatement insertVmWareDC = conn
|
||||
.prepareStatement("INSERT INTO `cloud`.`vmware_data_center` (uuid, name, guid, vcenter_host, username, password) values(?, ?, ?, ?, ?, ?)");) {
|
||||
insertVmWareDC.setString(1, UUID.randomUUID().toString());
|
||||
insertVmWareDC.setString(2, dcName);
|
||||
insertVmWareDC.setString(3, guid);
|
||||
insertVmWareDC.setString(4, vc);
|
||||
insertVmWareDC.setString(5, user);
|
||||
insertVmWareDC.setString(6, password);
|
||||
insertVmWareDC.executeUpdate();
|
||||
}
|
||||
try (PreparedStatement selectVmWareDC = conn.prepareStatement("SELECT id FROM `cloud`.`vmware_data_center` where guid=?");) {
|
||||
selectVmWareDC.setString(1, guid);
|
||||
try (ResultSet vmWareDcInfo = selectVmWareDC.executeQuery();) {
|
||||
Long vmwareDcId = -1L;
|
||||
if (vmWareDcInfo.next()) {
|
||||
vmwareDcId = vmWareDcInfo.getLong("id");
|
||||
}
|
||||
|
||||
try (PreparedStatement insertMapping = conn
|
||||
.prepareStatement("INSERT INTO `cloud`.`vmware_data_center_zone_map` (zone_id, vmware_data_center_id) values(?, ?)");) {
|
||||
insertMapping.setLong(1, zoneId);
|
||||
insertMapping.setLong(2, vmwareDcId);
|
||||
insertMapping.executeUpdate();
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
String[] tokens = url.split("/"); // url format - http://vcenter/dc/cluster
|
||||
String vc = tokens[2];
|
||||
String dcName = tokens[3];
|
||||
String guid = dcName + "@" + vc;
|
||||
|
||||
pstmt = conn.prepareStatement("INSERT INTO `cloud`.`vmware_data_center` (uuid, name, guid, vcenter_host, username, password) values(?, ?, ?, ?, ?, ?)");
|
||||
pstmt.setString(1, UUID.randomUUID().toString());
|
||||
pstmt.setString(2, dcName);
|
||||
pstmt.setString(3, guid);
|
||||
pstmt.setString(4, vc);
|
||||
pstmt.setString(5, user);
|
||||
pstmt.setString(6, password);
|
||||
pstmt.executeUpdate();
|
||||
|
||||
pstmt = conn.prepareStatement("SELECT id FROM `cloud`.`vmware_data_center` where guid=?");
|
||||
pstmt.setString(1, guid);
|
||||
dcInfo = pstmt.executeQuery();
|
||||
Long vmwareDcId = -1L;
|
||||
if (dcInfo.next()) {
|
||||
vmwareDcId = dcInfo.getLong("id");
|
||||
}
|
||||
|
||||
pstmt = conn.prepareStatement("INSERT INTO `cloud`.`vmware_data_center_zone_map` (zone_id, vmware_data_center_id) values(?, ?)");
|
||||
pstmt.setLong(1, zoneId);
|
||||
pstmt.setLong(2, vmwareDcId);
|
||||
pstmt.executeUpdate();
|
||||
}
|
||||
} catch (SQLException e) {
|
||||
String msg = "Unable to update non legacy zones." + e.getMessage();
|
||||
s_logger.error(msg);
|
||||
throw new CloudRuntimeException(msg, e);
|
||||
} finally {
|
||||
try {
|
||||
if (clustersQuery != null) {
|
||||
clustersQuery.close();
|
||||
}
|
||||
if (clusterDetails != null) {
|
||||
clusterDetails.close();
|
||||
}
|
||||
if (clusterDetailsQuery != null) {
|
||||
clusterDetailsQuery.close();
|
||||
}
|
||||
if (clusters != null) {
|
||||
clusters.close();
|
||||
}
|
||||
if (dcInfo != null) {
|
||||
dcInfo.close();
|
||||
}
|
||||
if (pstmt != null) {
|
||||
pstmt.close();
|
||||
}
|
||||
} catch (SQLException e) {
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -1086,129 +1039,131 @@ public class Upgrade410to420 implements DbUpgrade {
|
|||
|
||||
s_logger.debug("Updating network ACLs");
|
||||
|
||||
PreparedStatement pstmt = null;
|
||||
PreparedStatement pstmtDelete = null;
|
||||
ResultSet rs = null;
|
||||
ResultSet rsAcls = null;
|
||||
ResultSet rsCidr = null;
|
||||
|
||||
//1,2 are default acl Ids, start acl Ids from 3
|
||||
long nextAclId = 3;
|
||||
String sqlSelectNetworkIds = "SELECT id, vpc_id, uuid FROM `cloud`.`networks` where vpc_id is not null and removed is null";
|
||||
String sqlSelectFirewallRules = "SELECT id, uuid, start_port, end_port, state, protocol, icmp_code, icmp_type, created, traffic_type FROM `cloud`.`firewall_rules` where network_id = ? and purpose = 'NetworkACL'";
|
||||
String sqlInsertNetworkAcl = "INSERT INTO `cloud`.`network_acl` (id, uuid, vpc_id, description, name) values (?, UUID(), ? , ?, ?)";
|
||||
String sqlSelectFirewallCidrs = "SELECT id, source_cidr FROM `cloud`.`firewall_rules_cidrs` where firewall_rule_id = ?";
|
||||
String sqlDeleteFirewallCidr = "DELETE FROM `cloud`.`firewall_rules_cidrs` where id = ?";
|
||||
String sqlInsertNetworkAclItem = "INSERT INTO `cloud`.`network_acl_item` (uuid, acl_id, start_port, end_port, state, protocol, icmp_code, icmp_type, created, traffic_type, cidr, number, action) values (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ? )";
|
||||
String sqlDeleteFirewallRules = "DELETE FROM `cloud`.`firewall_rules` where id = ?";
|
||||
String sqlUpdateNetworks = "UPDATE `cloud`.`networks` set network_acl_id=? where id=?";
|
||||
|
||||
try {
|
||||
try (
|
||||
PreparedStatement pstmtSelectNetworkIds = conn.prepareStatement(sqlSelectNetworkIds);
|
||||
PreparedStatement pstmtUpdate = conn.prepareStatement(sqlUpdateNetworks);
|
||||
PreparedStatement pstmtInsertNetworkAclItem = conn.prepareStatement(sqlInsertNetworkAclItem);
|
||||
PreparedStatement pstmtSelectFirewallRules = conn.prepareStatement(sqlSelectFirewallRules);
|
||||
PreparedStatement pstmtInsertNetworkAcl = conn.prepareStatement(sqlInsertNetworkAcl);
|
||||
PreparedStatement pstmtSelectFirewallCidrs = conn.prepareStatement(sqlSelectFirewallCidrs);
|
||||
PreparedStatement pstmtDeleteFirewallCidr = conn.prepareStatement(sqlDeleteFirewallCidr);
|
||||
PreparedStatement pstmtDeleteFirewallRules = conn.prepareStatement(sqlDeleteFirewallRules);
|
||||
ResultSet rsNetworkIds = pstmtSelectNetworkIds.executeQuery();) {
|
||||
//Get all VPC tiers
|
||||
pstmt = conn.prepareStatement("SELECT id, vpc_id, uuid FROM `cloud`.`networks` where vpc_id is not null and removed is null");
|
||||
rs = pstmt.executeQuery();
|
||||
while (rs.next()) {
|
||||
Long networkId = rs.getLong(1);
|
||||
while (rsNetworkIds.next()) {
|
||||
Long networkId = rsNetworkIds.getLong(1);
|
||||
s_logger.debug("Updating network ACLs for network: " + networkId);
|
||||
Long vpcId = rs.getLong(2);
|
||||
String tierUuid = rs.getString(3);
|
||||
pstmt =
|
||||
conn.prepareStatement("SELECT id, uuid, start_port, end_port, state, protocol, icmp_code, icmp_type, created, traffic_type FROM `cloud`.`firewall_rules` where network_id = ? and purpose = 'NetworkACL'");
|
||||
pstmt.setLong(1, networkId);
|
||||
rsAcls = pstmt.executeQuery();
|
||||
Long vpcId = rsNetworkIds.getLong(2);
|
||||
String tierUuid = rsNetworkIds.getString(3);
|
||||
pstmtSelectFirewallRules.setLong(1, networkId);
|
||||
boolean hasAcls = false;
|
||||
Long aclId = null;
|
||||
int number = 1;
|
||||
while (rsAcls.next()) {
|
||||
if (!hasAcls) {
|
||||
hasAcls = true;
|
||||
aclId = nextAclId++;
|
||||
//create ACL for the tier
|
||||
s_logger.debug("Creating network ACL for tier: " + tierUuid);
|
||||
pstmt = conn.prepareStatement("INSERT INTO `cloud`.`network_acl` (id, uuid, vpc_id, description, name) values (?, UUID(), ? , ?, ?)");
|
||||
pstmt.setLong(1, aclId);
|
||||
pstmt.setLong(2, vpcId);
|
||||
pstmt.setString(3, "ACL for tier " + tierUuid);
|
||||
pstmt.setString(4, "tier_" + tierUuid);
|
||||
pstmt.executeUpdate();
|
||||
}
|
||||
|
||||
Long fwRuleId = rsAcls.getLong(1);
|
||||
String cidr = null;
|
||||
//get cidr from firewall_rules_cidrs
|
||||
pstmt = conn.prepareStatement("SELECT id, source_cidr FROM `cloud`.`firewall_rules_cidrs` where firewall_rule_id = ?");
|
||||
pstmt.setLong(1, fwRuleId);
|
||||
rsCidr = pstmt.executeQuery();
|
||||
while (rsCidr.next()) {
|
||||
Long cidrId = rsCidr.getLong(1);
|
||||
String sourceCidr = rsCidr.getString(2);
|
||||
if (cidr == null) {
|
||||
cidr = sourceCidr;
|
||||
} else {
|
||||
cidr += "," + sourceCidr;
|
||||
try (ResultSet rsAcls = pstmtSelectFirewallRules.executeQuery();) {
|
||||
while (rsAcls.next()) {
|
||||
if (!hasAcls) {
|
||||
hasAcls = true;
|
||||
aclId = nextAclId++;
|
||||
//create ACL for the tier
|
||||
s_logger.debug("Creating network ACL for tier: " + tierUuid);
|
||||
pstmtInsertNetworkAcl.setLong(1, aclId);
|
||||
pstmtInsertNetworkAcl.setLong(2, vpcId);
|
||||
pstmtInsertNetworkAcl.setString(3, "ACL for tier " + tierUuid);
|
||||
pstmtInsertNetworkAcl.setString(4, "tier_" + tierUuid);
|
||||
pstmtInsertNetworkAcl.executeUpdate();
|
||||
}
|
||||
//Delete cidr entry
|
||||
pstmtDelete = conn.prepareStatement("DELETE FROM `cloud`.`firewall_rules_cidrs` where id = ?");
|
||||
pstmtDelete.setLong(1, cidrId);
|
||||
pstmtDelete.executeUpdate();
|
||||
}
|
||||
|
||||
String aclItemUuid = rsAcls.getString(2);
|
||||
//Move acl to network_acl_item table
|
||||
s_logger.debug("Moving firewall rule: " + aclItemUuid);
|
||||
pstmt =
|
||||
conn.prepareStatement("INSERT INTO `cloud`.`network_acl_item` (uuid, acl_id, start_port, end_port, state, protocol, icmp_code, icmp_type, created, traffic_type, cidr, number, action) values (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ? )");
|
||||
//uuid
|
||||
pstmt.setString(1, aclItemUuid);
|
||||
//aclId
|
||||
pstmt.setLong(2, aclId);
|
||||
//Start port
|
||||
Integer startPort = rsAcls.getInt(3);
|
||||
if (rsAcls.wasNull()) {
|
||||
pstmt.setNull(3, Types.INTEGER);
|
||||
} else {
|
||||
pstmt.setLong(3, startPort);
|
||||
}
|
||||
//End port
|
||||
Integer endPort = rsAcls.getInt(4);
|
||||
if (rsAcls.wasNull()) {
|
||||
pstmt.setNull(4, Types.INTEGER);
|
||||
} else {
|
||||
pstmt.setLong(4, endPort);
|
||||
}
|
||||
//State
|
||||
String state = rsAcls.getString(5);
|
||||
pstmt.setString(5, state);
|
||||
//protocol
|
||||
String protocol = rsAcls.getString(6);
|
||||
pstmt.setString(6, protocol);
|
||||
//icmp_code
|
||||
Integer icmpCode = rsAcls.getInt(7);
|
||||
if (rsAcls.wasNull()) {
|
||||
pstmt.setNull(7, Types.INTEGER);
|
||||
} else {
|
||||
pstmt.setLong(7, icmpCode);
|
||||
}
|
||||
Long fwRuleId = rsAcls.getLong(1);
|
||||
String cidr = null;
|
||||
//get cidr from firewall_rules_cidrs
|
||||
pstmtSelectFirewallCidrs.setLong(1, fwRuleId);
|
||||
try (ResultSet rsCidr = pstmtSelectFirewallCidrs.executeQuery();) {
|
||||
while (rsCidr.next()) {
|
||||
Long cidrId = rsCidr.getLong(1);
|
||||
String sourceCidr = rsCidr.getString(2);
|
||||
if (cidr == null) {
|
||||
cidr = sourceCidr;
|
||||
} else {
|
||||
cidr += "," + sourceCidr;
|
||||
}
|
||||
//Delete cidr entry
|
||||
pstmtDeleteFirewallCidr.setLong(1, cidrId);
|
||||
pstmtDeleteFirewallCidr.executeUpdate();
|
||||
}
|
||||
}
|
||||
String aclItemUuid = rsAcls.getString(2);
|
||||
//Move acl to network_acl_item table
|
||||
s_logger.debug("Moving firewall rule: " + aclItemUuid);
|
||||
//uuid
|
||||
pstmtInsertNetworkAclItem.setString(1, aclItemUuid);
|
||||
//aclId
|
||||
pstmtInsertNetworkAclItem.setLong(2, aclId);
|
||||
//Start port
|
||||
Integer startPort = rsAcls.getInt(3);
|
||||
if (rsAcls.wasNull()) {
|
||||
pstmtInsertNetworkAclItem.setNull(3, Types.INTEGER);
|
||||
} else {
|
||||
pstmtInsertNetworkAclItem.setLong(3, startPort);
|
||||
}
|
||||
//End port
|
||||
Integer endPort = rsAcls.getInt(4);
|
||||
if (rsAcls.wasNull()) {
|
||||
pstmtInsertNetworkAclItem.setNull(4, Types.INTEGER);
|
||||
} else {
|
||||
pstmtInsertNetworkAclItem.setLong(4, endPort);
|
||||
}
|
||||
//State
|
||||
String state = rsAcls.getString(5);
|
||||
pstmtInsertNetworkAclItem.setString(5, state);
|
||||
//protocol
|
||||
String protocol = rsAcls.getString(6);
|
||||
pstmtInsertNetworkAclItem.setString(6, protocol);
|
||||
//icmp_code
|
||||
Integer icmpCode = rsAcls.getInt(7);
|
||||
if (rsAcls.wasNull()) {
|
||||
pstmtInsertNetworkAclItem.setNull(7, Types.INTEGER);
|
||||
} else {
|
||||
pstmtInsertNetworkAclItem.setLong(7, icmpCode);
|
||||
}
|
||||
|
||||
//icmp_type
|
||||
Integer icmpType = rsAcls.getInt(8);
|
||||
if (rsAcls.wasNull()) {
|
||||
pstmt.setNull(8, Types.INTEGER);
|
||||
} else {
|
||||
pstmt.setLong(8, icmpType);
|
||||
//icmp_type
|
||||
Integer icmpType = rsAcls.getInt(8);
|
||||
if (rsAcls.wasNull()) {
|
||||
pstmtInsertNetworkAclItem.setNull(8, Types.INTEGER);
|
||||
} else {
|
||||
pstmtInsertNetworkAclItem.setLong(8, icmpType);
|
||||
}
|
||||
|
||||
//created
|
||||
Date created = rsAcls.getDate(9);
|
||||
pstmtInsertNetworkAclItem.setDate(9, created);
|
||||
//traffic type
|
||||
String trafficType = rsAcls.getString(10);
|
||||
pstmtInsertNetworkAclItem.setString(10, trafficType);
|
||||
|
||||
//cidr
|
||||
pstmtInsertNetworkAclItem.setString(11, cidr);
|
||||
//number
|
||||
pstmtInsertNetworkAclItem.setInt(12, number++);
|
||||
//action
|
||||
pstmtInsertNetworkAclItem.setString(13, "Allow");
|
||||
pstmtInsertNetworkAclItem.executeUpdate();
|
||||
|
||||
//Delete firewall rule
|
||||
pstmtDeleteFirewallRules.setLong(1, fwRuleId);
|
||||
pstmtDeleteFirewallRules.executeUpdate();
|
||||
}
|
||||
|
||||
//created
|
||||
Date created = rsAcls.getDate(9);
|
||||
pstmt.setDate(9, created);
|
||||
//traffic type
|
||||
String trafficType = rsAcls.getString(10);
|
||||
pstmt.setString(10, trafficType);
|
||||
|
||||
//cidr
|
||||
pstmt.setString(11, cidr);
|
||||
//number
|
||||
pstmt.setInt(12, number++);
|
||||
//action
|
||||
pstmt.setString(13, "Allow");
|
||||
pstmt.executeUpdate();
|
||||
|
||||
//Delete firewall rule
|
||||
pstmtDelete = conn.prepareStatement("DELETE FROM `cloud`.`firewall_rules` where id = ?");
|
||||
pstmtDelete.setLong(1, fwRuleId);
|
||||
pstmtDelete.executeUpdate();
|
||||
}
|
||||
if (!hasAcls) {
|
||||
//no network ACls for this network.
|
||||
|
|
@ -1216,30 +1171,13 @@ public class Upgrade410to420 implements DbUpgrade {
|
|||
aclId = NetworkACL.DEFAULT_DENY;
|
||||
}
|
||||
//Assign acl to network
|
||||
pstmt = conn.prepareStatement("UPDATE `cloud`.`networks` set network_acl_id=? where id=?");
|
||||
pstmt.setLong(1, aclId);
|
||||
pstmt.setLong(2, networkId);
|
||||
pstmt.executeUpdate();
|
||||
pstmtUpdate.setLong(1, aclId);
|
||||
pstmtUpdate.setLong(2, networkId);
|
||||
pstmtUpdate.executeUpdate();
|
||||
}
|
||||
s_logger.debug("Done updating network ACLs ");
|
||||
} catch (SQLException e) {
|
||||
throw new CloudRuntimeException("Unable to move network acls from firewall rules table to network_acl_item table", e);
|
||||
} finally {
|
||||
try {
|
||||
if (rs != null) {
|
||||
rs.close();
|
||||
}
|
||||
if (rsAcls != null) {
|
||||
rsAcls.close();
|
||||
}
|
||||
if (rsCidr != null) {
|
||||
rsCidr.close();
|
||||
}
|
||||
if (pstmt != null) {
|
||||
pstmt.close();
|
||||
}
|
||||
} catch (SQLException e) {
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -1457,12 +1395,13 @@ public class Upgrade410to420 implements DbUpgrade {
|
|||
// Corrects upgrade for deployment with F5 and SRX devices (pre 3.0) to network offering &
|
||||
// network service provider paradigm
|
||||
private void correctExternalNetworkDevicesSetup(Connection conn) {
|
||||
PreparedStatement zoneSearchStmt = null, pNetworkStmt = null, f5DevicesStmt = null, srxDevicesStmt = null;
|
||||
ResultSet zoneResults = null, pNetworksResults = null, f5DevicesResult = null, srxDevicesResult = null;
|
||||
PreparedStatement pNetworkStmt = null, f5DevicesStmt = null, srxDevicesStmt = null;
|
||||
ResultSet pNetworksResults = null, f5DevicesResult = null, srxDevicesResult = null;
|
||||
|
||||
try {
|
||||
zoneSearchStmt = conn.prepareStatement("SELECT id, networktype FROM `cloud`.`data_center`");
|
||||
zoneResults = zoneSearchStmt.executeQuery();
|
||||
try (
|
||||
PreparedStatement zoneSearchStmt = conn.prepareStatement("SELECT id, networktype FROM `cloud`.`data_center`");
|
||||
ResultSet zoneResults = zoneSearchStmt.executeQuery();
|
||||
){
|
||||
while (zoneResults.next()) {
|
||||
long zoneId = zoneResults.getLong(1);
|
||||
String networkType = zoneResults.getString(2);
|
||||
|
|
@ -1499,12 +1438,13 @@ public class Upgrade410to420 implements DbUpgrade {
|
|||
}
|
||||
}
|
||||
|
||||
PreparedStatement fetchSRXNspStmt =
|
||||
boolean hasSrxNsp = false;
|
||||
try (PreparedStatement fetchSRXNspStmt =
|
||||
conn.prepareStatement("SELECT id from `cloud`.`physical_network_service_providers` where physical_network_id=" + physicalNetworkId +
|
||||
" and provider_name = 'JuniperSRX'");
|
||||
ResultSet rsSRXNSP = fetchSRXNspStmt.executeQuery();
|
||||
boolean hasSrxNsp = rsSRXNSP.next();
|
||||
fetchSRXNspStmt.close();
|
||||
ResultSet rsSRXNSP = fetchSRXNspStmt.executeQuery();) {
|
||||
hasSrxNsp = rsSRXNSP.next();
|
||||
}
|
||||
|
||||
// if there is no 'JuniperSRX' physical network service provider added into physical network then
|
||||
// add 'JuniperSRX' as network service provider and add the entry in 'external_firewall_devices'
|
||||
|
|
@ -1527,24 +1467,8 @@ public class Upgrade410to420 implements DbUpgrade {
|
|||
// not the network service provider has been provisioned in to physical network, mark all guest network
|
||||
// to be using network offering 'Isolated with external providers'
|
||||
fixZoneUsingExternalDevices(conn);
|
||||
|
||||
if (zoneResults != null) {
|
||||
try {
|
||||
zoneResults.close();
|
||||
} catch (SQLException e) {
|
||||
}
|
||||
}
|
||||
|
||||
if (zoneSearchStmt != null) {
|
||||
try {
|
||||
zoneSearchStmt.close();
|
||||
} catch (SQLException e) {
|
||||
}
|
||||
}
|
||||
} catch (SQLException e) {
|
||||
throw new CloudRuntimeException("Exception while adding PhysicalNetworks", e);
|
||||
} finally {
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -1823,39 +1747,37 @@ public class Upgrade410to420 implements DbUpgrade {
|
|||
|
||||
// migrate secondary storages NFS from host tables to image_store table
|
||||
private void migrateSecondaryStorageToImageStore(Connection conn) {
|
||||
PreparedStatement storeInsert = null;
|
||||
PreparedStatement storeDetailInsert = null;
|
||||
PreparedStatement nfsQuery = null;
|
||||
PreparedStatement pstmt = null;
|
||||
ResultSet rs = null;
|
||||
ResultSet storeInfo = null;
|
||||
String sqlSelectS3Count = "select count(*) from `cloud`.`s3`";
|
||||
String sqlSelectSwiftCount = "select count(*) from `cloud`.`swift`";
|
||||
String sqlInsertStoreDetail = "INSERT INTO `cloud`.`image_store_details` (store_id, name, value) values(?, ?, ?)";
|
||||
String sqlUpdateHostAsRemoved = "UPDATE `cloud`.`host` SET removed = now() WHERE type = 'SecondaryStorage' and removed is null";
|
||||
|
||||
s_logger.debug("Migrating secondary storage to image store");
|
||||
boolean hasS3orSwift = false;
|
||||
try {
|
||||
try (
|
||||
PreparedStatement pstmtSelectS3Count = conn.prepareStatement(sqlSelectS3Count);
|
||||
PreparedStatement pstmtSelectSwiftCount = conn.prepareStatement(sqlSelectSwiftCount);
|
||||
PreparedStatement storeDetailInsert = conn.prepareStatement(sqlInsertStoreDetail);
|
||||
PreparedStatement storeInsert =
|
||||
conn.prepareStatement("INSERT INTO `cloud`.`image_store` (id, uuid, name, image_provider_name, protocol, url, data_center_id, scope, role, parent, total_size, created) values(?, ?, ?, 'NFS', 'nfs', ?, ?, 'ZONE', ?, ?, ?, ?)");
|
||||
PreparedStatement nfsQuery =
|
||||
conn.prepareStatement("select id, uuid, url, data_center_id, parent, total_size, created from `cloud`.`host` where type = 'SecondaryStorage' and removed is null");
|
||||
PreparedStatement pstmtUpdateHostAsRemoved = conn.prepareStatement(sqlUpdateHostAsRemoved);
|
||||
ResultSet rsSelectS3Count = pstmtSelectS3Count.executeQuery();
|
||||
ResultSet rsSelectSwiftCount = pstmtSelectSwiftCount.executeQuery();
|
||||
ResultSet rsNfs = nfsQuery.executeQuery();
|
||||
) {
|
||||
s_logger.debug("Checking if we need to migrate NFS secondary storage to image store or staging store");
|
||||
int numRows = 0;
|
||||
pstmt = conn.prepareStatement("select count(*) from `cloud`.`s3`");
|
||||
rs = pstmt.executeQuery();
|
||||
if (rs.next()) {
|
||||
numRows = rs.getInt(1);
|
||||
if (rsSelectS3Count.next()) {
|
||||
numRows = rsSelectS3Count.getInt(1);
|
||||
}
|
||||
// check if there is swift storage
|
||||
if (rsSelectSwiftCount.next()) {
|
||||
numRows += rsSelectSwiftCount.getInt(1);
|
||||
}
|
||||
rs.close();
|
||||
pstmt.close();
|
||||
if (numRows > 0) {
|
||||
hasS3orSwift = true;
|
||||
} else {
|
||||
// check if there is swift storage
|
||||
pstmt = conn.prepareStatement("select count(*) from `cloud`.`swift`");
|
||||
rs = pstmt.executeQuery();
|
||||
if (rs.next()) {
|
||||
numRows = rs.getInt(1);
|
||||
}
|
||||
rs.close();
|
||||
pstmt.close();
|
||||
if (numRows > 0) {
|
||||
hasS3orSwift = true;
|
||||
}
|
||||
}
|
||||
|
||||
String store_role = "Image";
|
||||
|
|
@ -1865,23 +1787,15 @@ public class Upgrade410to420 implements DbUpgrade {
|
|||
|
||||
s_logger.debug("Migrating NFS secondary storage to " + store_role + " store");
|
||||
|
||||
storeDetailInsert = conn.prepareStatement("INSERT INTO `cloud`.`image_store_details` (store_id, name, value) values(?, ?, ?)");
|
||||
|
||||
// migrate NFS secondary storage, for nfs, keep previous host_id as the store_id
|
||||
storeInsert =
|
||||
conn.prepareStatement("INSERT INTO `cloud`.`image_store` (id, uuid, name, image_provider_name, protocol, url, data_center_id, scope, role, parent, total_size, created) values(?, ?, ?, 'NFS', 'nfs', ?, ?, 'ZONE', ?, ?, ?, ?)");
|
||||
nfsQuery =
|
||||
conn.prepareStatement("select id, uuid, url, data_center_id, parent, total_size, created from `cloud`.`host` where type = 'SecondaryStorage' and removed is null");
|
||||
rs = nfsQuery.executeQuery();
|
||||
|
||||
while (rs.next()) {
|
||||
Long nfs_id = rs.getLong("id");
|
||||
String nfs_uuid = rs.getString("uuid");
|
||||
String nfs_url = rs.getString("url");
|
||||
String nfs_parent = rs.getString("parent");
|
||||
int nfs_dcid = rs.getInt("data_center_id");
|
||||
Long nfs_totalsize = rs.getObject("total_size") != null ? rs.getLong("total_size") : null;
|
||||
Date nfs_created = rs.getDate("created");
|
||||
while (rsNfs.next()) {
|
||||
Long nfs_id = rsNfs.getLong("id");
|
||||
String nfs_uuid = rsNfs.getString("uuid");
|
||||
String nfs_url = rsNfs.getString("url");
|
||||
String nfs_parent = rsNfs.getString("parent");
|
||||
int nfs_dcid = rsNfs.getInt("data_center_id");
|
||||
Long nfs_totalsize = rsNfs.getObject("total_size") != null ? rsNfs.getLong("total_size") : null;
|
||||
Date nfs_created = rsNfs.getDate("created");
|
||||
|
||||
// insert entry in image_store table and image_store_details
|
||||
// table and store host_id and store_id mapping
|
||||
|
|
@ -1902,36 +1816,11 @@ public class Upgrade410to420 implements DbUpgrade {
|
|||
}
|
||||
|
||||
s_logger.debug("Marking NFS secondary storage in host table as removed");
|
||||
pstmt = conn.prepareStatement("UPDATE `cloud`.`host` SET removed = now() WHERE type = 'SecondaryStorage' and removed is null");
|
||||
pstmt.executeUpdate();
|
||||
pstmt.close();
|
||||
pstmtUpdateHostAsRemoved.executeUpdate();
|
||||
} catch (SQLException e) {
|
||||
String msg = "Unable to migrate secondary storages." + e.getMessage();
|
||||
s_logger.error(msg);
|
||||
throw new CloudRuntimeException(msg, e);
|
||||
} finally {
|
||||
try {
|
||||
if (rs != null) {
|
||||
rs.close();
|
||||
}
|
||||
if (storeInfo != null) {
|
||||
storeInfo.close();
|
||||
}
|
||||
|
||||
if (storeInsert != null) {
|
||||
storeInsert.close();
|
||||
}
|
||||
if (storeDetailInsert != null) {
|
||||
storeDetailInsert.close();
|
||||
}
|
||||
if (nfsQuery != null) {
|
||||
nfsQuery.close();
|
||||
}
|
||||
if (pstmt != null) {
|
||||
pstmt.close();
|
||||
}
|
||||
} catch (SQLException e) {
|
||||
}
|
||||
}
|
||||
s_logger.debug("Completed migrating secondary storage to image store");
|
||||
}
|
||||
|
|
@ -2008,26 +1897,21 @@ public class Upgrade410to420 implements DbUpgrade {
|
|||
|
||||
// migrate secondary storages S3 from s3 tables to image_store table
|
||||
private void migrateS3ToImageStore(Connection conn) {
|
||||
PreparedStatement storeInsert = null;
|
||||
PreparedStatement storeDetailInsert = null;
|
||||
PreparedStatement storeQuery = null;
|
||||
PreparedStatement s3Query = null;
|
||||
ResultSet rs = null;
|
||||
ResultSet storeInfo = null;
|
||||
Long storeId = null;
|
||||
Map<Long, Long> s3_store_id_map = new HashMap<Long, Long>();
|
||||
|
||||
s_logger.debug("Migrating S3 to image store");
|
||||
try {
|
||||
storeQuery = conn.prepareStatement("select id from `cloud`.`image_store` where uuid = ?");
|
||||
storeDetailInsert = conn.prepareStatement("INSERT INTO `cloud`.`image_store_details` (store_id, name, value) values(?, ?, ?)");
|
||||
try (
|
||||
PreparedStatement storeQuery = conn.prepareStatement("select id from `cloud`.`image_store` where uuid = ?");
|
||||
PreparedStatement storeDetailInsert = conn.prepareStatement("INSERT INTO `cloud`.`image_store_details` (store_id, name, value) values(?, ?, ?)");
|
||||
|
||||
// migrate S3 to image_store
|
||||
storeInsert = conn.prepareStatement("INSERT INTO `cloud`.`image_store` (uuid, name, image_provider_name, protocol, scope, role, created) " +
|
||||
"values(?, ?, 'S3', ?, 'REGION', 'Image', ?)");
|
||||
s3Query = conn.prepareStatement("select id, uuid, access_key, secret_key, end_point, bucket, https, connection_timeout, " +
|
||||
"max_error_retry, socket_timeout, created from `cloud`.`s3`");
|
||||
rs = s3Query.executeQuery();
|
||||
// migrate S3 to image_store
|
||||
PreparedStatement storeInsert = conn.prepareStatement("INSERT INTO `cloud`.`image_store` (uuid, name, image_provider_name, protocol, scope, role, created) " +
|
||||
"values(?, ?, 'S3', ?, 'REGION', 'Image', ?)");
|
||||
PreparedStatement s3Query = conn.prepareStatement("select id, uuid, access_key, secret_key, end_point, bucket, https, connection_timeout, " +
|
||||
"max_error_retry, socket_timeout, created from `cloud`.`s3`");
|
||||
ResultSet rs = s3Query.executeQuery();
|
||||
) {
|
||||
|
||||
while (rs.next()) {
|
||||
Long s3_id = rs.getLong("id");
|
||||
|
|
@ -2052,9 +1936,10 @@ public class Upgrade410to420 implements DbUpgrade {
|
|||
storeInsert.executeUpdate();
|
||||
|
||||
storeQuery.setString(1, s3_uuid);
|
||||
storeInfo = storeQuery.executeQuery();
|
||||
if (storeInfo.next()) {
|
||||
storeId = storeInfo.getLong("id");
|
||||
try (ResultSet storeInfo = storeQuery.executeQuery();) {
|
||||
if (storeInfo.next()) {
|
||||
storeId = storeInfo.getLong("id");
|
||||
}
|
||||
}
|
||||
|
||||
Map<String, String> detailMap = new HashMap<String, String>();
|
||||
|
|
@ -2088,29 +1973,6 @@ public class Upgrade410to420 implements DbUpgrade {
|
|||
String msg = "Unable to migrate S3 secondary storages." + e.getMessage();
|
||||
s_logger.error(msg);
|
||||
throw new CloudRuntimeException(msg, e);
|
||||
} finally {
|
||||
try {
|
||||
if (rs != null) {
|
||||
rs.close();
|
||||
}
|
||||
if (storeInfo != null) {
|
||||
storeInfo.close();
|
||||
}
|
||||
|
||||
if (storeInsert != null) {
|
||||
storeInsert.close();
|
||||
}
|
||||
if (storeDetailInsert != null) {
|
||||
storeDetailInsert.close();
|
||||
}
|
||||
if (storeQuery != null) {
|
||||
storeQuery.close();
|
||||
}
|
||||
if (s3Query != null) {
|
||||
s3Query.close();
|
||||
}
|
||||
} catch (SQLException e) {
|
||||
}
|
||||
}
|
||||
|
||||
s_logger.debug("Migrating template_s3_ref to template_store_ref");
|
||||
|
|
@ -2223,26 +2085,20 @@ public class Upgrade410to420 implements DbUpgrade {
|
|||
|
||||
// migrate secondary storages Swift from swift tables to image_store table
|
||||
private void migrateSwiftToImageStore(Connection conn) {
|
||||
PreparedStatement storeInsert = null;
|
||||
PreparedStatement storeDetailInsert = null;
|
||||
PreparedStatement storeQuery = null;
|
||||
PreparedStatement swiftQuery = null;
|
||||
ResultSet rs = null;
|
||||
ResultSet storeInfo = null;
|
||||
Long storeId = null;
|
||||
Map<Long, Long> swift_store_id_map = new HashMap<Long, Long>();
|
||||
|
||||
s_logger.debug("Migrating Swift to image store");
|
||||
try {
|
||||
storeQuery = conn.prepareStatement("select id from `cloud`.`image_store` where uuid = ?");
|
||||
storeDetailInsert = conn.prepareStatement("INSERT INTO `cloud`.`image_store_details` (store_id, name, value) values(?, ?, ?)");
|
||||
try (
|
||||
PreparedStatement storeQuery = conn.prepareStatement("select id from `cloud`.`image_store` where uuid = ?");
|
||||
PreparedStatement storeDetailInsert = conn.prepareStatement("INSERT INTO `cloud`.`image_store_details` (store_id, name, value) values(?, ?, ?)");
|
||||
|
||||
// migrate SWIFT secondary storage
|
||||
storeInsert =
|
||||
// migrate SWIFT secondary storage
|
||||
PreparedStatement storeInsert =
|
||||
conn.prepareStatement("INSERT INTO `cloud`.`image_store` (uuid, name, image_provider_name, protocol, url, scope, role, created) values(?, ?, 'Swift', 'http', ?, 'REGION', 'Image', ?)");
|
||||
swiftQuery = conn.prepareStatement("select id, uuid, url, account, username, swift.key, created from `cloud`.`swift`");
|
||||
rs = swiftQuery.executeQuery();
|
||||
|
||||
PreparedStatement swiftQuery = conn.prepareStatement("select id, uuid, url, account, username, swift.key, created from `cloud`.`swift`");
|
||||
ResultSet rs = swiftQuery.executeQuery();
|
||||
) {
|
||||
while (rs.next()) {
|
||||
Long swift_id = rs.getLong("id");
|
||||
String swift_uuid = rs.getString("uuid");
|
||||
|
|
@ -2261,9 +2117,10 @@ public class Upgrade410to420 implements DbUpgrade {
|
|||
storeInsert.executeUpdate();
|
||||
|
||||
storeQuery.setString(1, swift_uuid);
|
||||
storeInfo = storeQuery.executeQuery();
|
||||
if (storeInfo.next()) {
|
||||
storeId = storeInfo.getLong("id");
|
||||
try (ResultSet storeInfo = storeQuery.executeQuery();) {
|
||||
if (storeInfo.next()) {
|
||||
storeId = storeInfo.getLong("id");
|
||||
}
|
||||
}
|
||||
|
||||
Map<String, String> detailMap = new HashMap<String, String>();
|
||||
|
|
@ -2286,29 +2143,6 @@ public class Upgrade410to420 implements DbUpgrade {
|
|||
String msg = "Unable to migrate swift secondary storages." + e.getMessage();
|
||||
s_logger.error(msg);
|
||||
throw new CloudRuntimeException(msg, e);
|
||||
} finally {
|
||||
try {
|
||||
if (rs != null) {
|
||||
rs.close();
|
||||
}
|
||||
if (storeInfo != null) {
|
||||
storeInfo.close();
|
||||
}
|
||||
|
||||
if (storeInsert != null) {
|
||||
storeInsert.close();
|
||||
}
|
||||
if (storeDetailInsert != null) {
|
||||
storeDetailInsert.close();
|
||||
}
|
||||
if (storeQuery != null) {
|
||||
storeQuery.close();
|
||||
}
|
||||
if (swiftQuery != null) {
|
||||
swiftQuery.close();
|
||||
}
|
||||
} catch (SQLException e) {
|
||||
}
|
||||
}
|
||||
|
||||
s_logger.debug("Migrating template_swift_ref to template_store_ref");
|
||||
|
|
@ -2322,16 +2156,13 @@ public class Upgrade410to420 implements DbUpgrade {
|
|||
|
||||
// migrate template_s3_ref to template_store_ref
|
||||
private void migrateTemplateSwiftRef(Connection conn, Map<Long, Long> swiftStoreMap) {
|
||||
PreparedStatement tmplStoreInsert = null;
|
||||
PreparedStatement s3Query = null;
|
||||
ResultSet rs = null;
|
||||
s_logger.debug("Updating template_store_ref table from template_swift_ref table");
|
||||
try {
|
||||
tmplStoreInsert =
|
||||
try (
|
||||
PreparedStatement tmplStoreInsert =
|
||||
conn.prepareStatement("INSERT INTO `cloud`.`template_store_ref` (store_id, template_id, created, download_pct, size, physical_size, download_state, local_path, install_path, update_count, ref_cnt, store_role, state) values(?, ?, ?, 100, ?, ?, 'DOWNLOADED', '?', '?', 0, 0, 'Image', 'Ready')");
|
||||
s3Query = conn.prepareStatement("select swift_id, template_id, created, path, size, physical_size from `cloud`.`template_swift_ref`");
|
||||
rs = s3Query.executeQuery();
|
||||
|
||||
PreparedStatement s3Query = conn.prepareStatement("select swift_id, template_id, created, path, size, physical_size from `cloud`.`template_swift_ref`");
|
||||
ResultSet rs = s3Query.executeQuery();
|
||||
) {
|
||||
while (rs.next()) {
|
||||
Long swift_id = rs.getLong("swift_id");
|
||||
Long tmpl_id = rs.getLong("template_id");
|
||||
|
|
@ -2361,19 +2192,6 @@ public class Upgrade410to420 implements DbUpgrade {
|
|||
String msg = "Unable to migrate template_swift_ref." + e.getMessage();
|
||||
s_logger.error(msg);
|
||||
throw new CloudRuntimeException(msg, e);
|
||||
} finally {
|
||||
try {
|
||||
if (rs != null) {
|
||||
rs.close();
|
||||
}
|
||||
if (tmplStoreInsert != null) {
|
||||
tmplStoreInsert.close();
|
||||
}
|
||||
if (s3Query != null) {
|
||||
s3Query.close();
|
||||
}
|
||||
} catch (SQLException e) {
|
||||
}
|
||||
}
|
||||
s_logger.debug("Completed migrating template_swift_ref table.");
|
||||
}
|
||||
|
|
@ -2636,10 +2454,10 @@ public class Upgrade410to420 implements DbUpgrade {
|
|||
|
||||
private void upgradeResourceCount(Connection conn) {
|
||||
s_logger.debug("upgradeResourceCount start");
|
||||
ResultSet rsAccount = null;
|
||||
try( PreparedStatement sel_dom_pstmt = conn.prepareStatement("select id, domain_id FROM `cloud`.`account` where removed is NULL ");)
|
||||
{
|
||||
rsAccount = sel_dom_pstmt.executeQuery();
|
||||
try(
|
||||
PreparedStatement sel_dom_pstmt = conn.prepareStatement("select id, domain_id FROM `cloud`.`account` where removed is NULL ");
|
||||
ResultSet rsAccount = sel_dom_pstmt.executeQuery();
|
||||
) {
|
||||
while (rsAccount.next()) {
|
||||
long account_id = rsAccount.getLong(1);
|
||||
long domain_id = rsAccount.getLong(2);
|
||||
|
|
@ -2767,13 +2585,6 @@ public class Upgrade410to420 implements DbUpgrade {
|
|||
s_logger.debug("upgradeResourceCount finish");
|
||||
} catch (SQLException e) {
|
||||
throw new CloudRuntimeException("Unable to upgrade resource count (cpu,memory,primary_storage,secondary_storage) ", e);
|
||||
} finally {
|
||||
try {
|
||||
if (rsAccount != null) {
|
||||
rsAccount.close();
|
||||
}
|
||||
} catch (SQLException e) {
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue