Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -179,6 +179,10 @@ public class TemplateResponse extends BaseResponse implements ControlledViewEnti
@Param(description = "the list of resource tags associated with tempate", responseObject = ResourceTagResponse.class)
private Set<ResourceTagResponse> tags;

@SerializedName(ApiConstants.BITS)
@Param(description="the processor bit size", since = "4.10")
private int bits;

@SerializedName(ApiConstants.SSHKEY_ENABLED)
@Param(description = "true if template is sshkey enabled, false otherwise")
private Boolean sshKeyEnabled;
Expand Down Expand Up @@ -361,4 +365,9 @@ public void setDynamicallyScalable(boolean isDynamicallyScalable) {
public String getZoneId() {
return zoneId;
}
public void setBits(int bits) {
this.bits = bits;
}


}
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,8 @@

package com.cloud.agent.resource.virtualnetwork;

import org.joda.time.Duration;

public class VRScripts {
public final static String CONFIG_PERSIST_LOCATION = "/var/cache/cloud/";
public final static String IP_ASSOCIATION_CONFIG = "ip_associations.json";
Expand All @@ -40,7 +42,8 @@ public class VRScripts {
public static final String LOAD_BALANCER_CONFIG = "load_balancer.json";

public final static String CONFIG_CACHE_LOCATION = "/var/cache/cloud/";
public final static int DEFAULT_EXECUTEINVR_TIMEOUT = 120; //Seconds
public final static Duration VR_SCRIPT_EXEC_TIMEOUT = Duration.standardMinutes(10);
public final static Duration CONNECTION_TIMEOUT = Duration.standardMinutes(1);

// New scripts for use with chef
public static final String UPDATE_CONFIG = "update_config.py";
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -19,13 +19,14 @@

package com.cloud.agent.resource.virtualnetwork;

import org.joda.time.Duration;

import com.cloud.agent.api.routing.NetworkElementCommand;
import com.cloud.utils.ExecutionResult;

public interface VirtualRouterDeployer {
ExecutionResult executeInVR(String routerIp, String script, String args);
/* timeout in seconds */
ExecutionResult executeInVR(String routerIp, String script, String args, int timeout);
ExecutionResult executeInVR(String routerIp, String script, String args, Duration timeout);
ExecutionResult createFileInVR(String routerIp, String path, String filename, String content);
ExecutionResult prepareCommand(NetworkElementCommand cmd);
ExecutionResult cleanupCommand(NetworkElementCommand cmd);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -22,6 +22,7 @@
import java.io.IOException;
import java.net.InetSocketAddress;
import java.nio.channels.SocketChannel;
import org.joda.time.Duration;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
Expand Down Expand Up @@ -73,7 +74,7 @@ public class VirtualRoutingResource {
private int _sleep;
private int _retry;
private int _port;
private int _eachTimeout;
private Duration _eachTimeout;

private String _cfgVersion = "1.0";

Expand Down Expand Up @@ -153,10 +154,10 @@ private Answer executeQueryCommand(NetworkElementCommand cmd) {
}

private ExecutionResult applyConfigToVR(String routerAccessIp, ConfigItem c) {
return applyConfigToVR(routerAccessIp, c, VRScripts.DEFAULT_EXECUTEINVR_TIMEOUT);
return applyConfigToVR(routerAccessIp, c, VRScripts.VR_SCRIPT_EXEC_TIMEOUT);
}

private ExecutionResult applyConfigToVR(String routerAccessIp, ConfigItem c, int timeout) {
private ExecutionResult applyConfigToVR(String routerAccessIp, ConfigItem c, Duration timeout) {
if (c instanceof FileConfigItem) {
FileConfigItem configItem = (FileConfigItem)c;
return _vrDeployer.createFileInVR(routerAccessIp, configItem.getFilePath(), configItem.getFileName(), configItem.getFileContents());
Expand Down Expand Up @@ -271,7 +272,7 @@ public boolean configure(final String name, final Map<String, Object> params) th
_port = NumbersUtil.parseInt(value, 3922);

value = (String)params.get("router.aggregation.command.each.timeout");
_eachTimeout = NumbersUtil.parseInt(value, 3);
_eachTimeout = Duration.standardSeconds(NumbersUtil.parseInt(value, 10));

if (_vrDeployer == null) {
throw new ConfigurationException("Unable to find the resource for VirtualRouterDeployer!");
Expand Down Expand Up @@ -374,9 +375,9 @@ private Answer execute(AggregationControlCommand cmd) {
FileConfigItem fileConfigItem = new FileConfigItem(VRScripts.CONFIG_CACHE_LOCATION, cfgFileName, sb.toString());
ScriptConfigItem scriptConfigItem = new ScriptConfigItem(VRScripts.VR_CFG, "-c " + VRScripts.CONFIG_CACHE_LOCATION + cfgFileName);
// 120s is the minimal timeout
int timeout = answerCounts * _eachTimeout;
if (timeout < 120) {
timeout = 120;
Duration timeout = _eachTimeout.withDurationAdded(_eachTimeout.getStandardSeconds(), answerCounts);
if (timeout.isShorterThan(VRScripts.VR_SCRIPT_EXEC_TIMEOUT)) {
timeout = VRScripts.VR_SCRIPT_EXEC_TIMEOUT;
}

ExecutionResult result = applyConfigToVR(cmd.getRouterAccessIp(), fileConfigItem);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -31,6 +31,7 @@

import javax.naming.ConfigurationException;

import org.joda.time.Duration;
import org.junit.Before;
import org.junit.Ignore;
import org.junit.Test;
Expand Down Expand Up @@ -97,11 +98,11 @@ public class VirtualRoutingResourceTest implements VirtualRouterDeployer {

@Override
public ExecutionResult executeInVR(final String routerIp, final String script, final String args) {
return executeInVR(routerIp, script, args, 60);
return executeInVR(routerIp, script, args, Duration.standardSeconds(60L));
}

@Override
public ExecutionResult executeInVR(final String routerIp, final String script, final String args, final int timeout) {
public ExecutionResult executeInVR(final String routerIp, final String script, final String args, final Duration timeout) {
assertEquals(routerIp, ROUTERIP);
verifyCommand(_currentCmd, script, args);
return new ExecutionResult(true, null);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -267,7 +267,9 @@ public boolean deleteSnapshot(Long snapshotId) {
SnapshotDataStoreVO snapshotOnPrimary = snapshotStoreDao.findBySnapshot(snapshotId, DataStoreRole.Primary);
if (snapshotOnPrimary != null) {
SnapshotInfo snapshotOnPrimaryInfo = snapshotDataFactory.getSnapshot(snapshotId, DataStoreRole.Primary);
if (((PrimaryDataStoreImpl)snapshotOnPrimaryInfo.getDataStore()).getPoolType() == StoragePoolType.RBD) {
long volumeId = snapshotOnPrimary.getVolumeId();
VolumeVO volumeVO = volumeDao.findById(volumeId);
if (((PrimaryDataStoreImpl)snapshotOnPrimaryInfo.getDataStore()).getPoolType() == StoragePoolType.RBD && volumeVO != null) {
snapshotSvr.deleteSnapshot(snapshotOnPrimaryInfo);
}
snapshotOnPrimary.setState(State.Destroyed);
Expand Down
3 changes: 2 additions & 1 deletion packaging/systemd/cloudstack-usage.service
Original file line number Diff line number Diff line change
Expand Up @@ -27,10 +27,11 @@ Environment=JAVA_HOME=/usr/lib/jvm/jre
Environment=JAVA_HEAP_INITIAL=256m
Environment=JAVA_HEAP_MAX=2048m
Environment=JAVA_CLASS=com.cloud.usage.UsageServer
Environment=JAVA_PID=$$
ExecStart=/bin/sh -ec '\
export UCP=`ls /usr/share/cloudstack-usage/cloud-usage-*.jar /usr/share/cloudstack-usage/lib/*.jar | tr "\\n" ":"`; \
export CLASSPATH="$UCP:/etc/cloudstack/usage:/usr/share/java/mysql-connector-java.jar"; \
${JAVA_HOME}/bin/java -Xms${JAVA_HEAP_INITIAL} -Xmx${JAVA_HEAP_MAX} -cp "$CLASSPATH" $JAVA_CLASS'
${JAVA_HOME}/bin/java -Dpid=${JAVA_PID} -Xms${JAVA_HEAP_INITIAL} -Xmx${JAVA_HEAP_MAX} -cp "$CLASSPATH" $JAVA_CLASS'
Restart=always
RestartSec=10s

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -32,6 +32,7 @@
import java.security.UnrecoverableKeyException;
import java.security.cert.CertificateException;
import java.security.cert.X509Certificate;
import org.joda.time.Duration;
import java.util.ArrayList;
import java.util.Collections;
import java.util.HashMap;
Expand Down Expand Up @@ -622,11 +623,11 @@ private UnPlugNicAnswer execute(final UnPlugNicCommand cmd) {

@Override
public ExecutionResult executeInVR(final String routerIP, final String script, final String args) {
return executeInVR(routerIP, script, args, 120);
return executeInVR(routerIP, script, args, Duration.standardSeconds(120L));
}

@Override
public ExecutionResult executeInVR(final String routerIP, final String script, final String args, final int timeout) {
public ExecutionResult executeInVR(final String routerIP, final String script, final String args, final Duration timeout) {
Pair<Boolean, String> result;

//TODO: Password should be masked, cannot output to log directly
Expand All @@ -635,8 +636,8 @@ public ExecutionResult executeInVR(final String routerIP, final String script, f
}

try {
result = SshHelper.sshExecute(routerIP, DEFAULT_DOMR_SSHPORT, "root", getSystemVMKeyFile(), null, "/opt/cloud/bin/" + script + " " + args,
60000, 60000, timeout * 1000);
result = SshHelper.sshExecute(routerIP, DEFAULT_DOMR_SSHPORT, "root", getSystemVMKeyFile(), null, "/opt/cloud/bin/" + script + " " + args, VRScripts.CONNECTION_TIMEOUT,
VRScripts.CONNECTION_TIMEOUT, timeout);
} catch (final Exception e) {
final String msg = "Command failed due to " + e ;
s_logger.error(msg);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -25,6 +25,7 @@
import java.net.InetAddress;
import java.net.URI;
import java.net.URISyntaxException;
import org.joda.time.Duration;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Calendar;
Expand Down Expand Up @@ -189,7 +190,8 @@ public class LibvirtComputingResource extends ServerResourceBase implements Serv

private long _hvVersion;
private long _kernelVersion;
private int _timeout;
private Duration _timeout;
private static final int NUMMEMSTATS =2;

private KVMHAMonitor _monitor;
public static final String SSHKEYSPATH = "/root/.ssh";
Expand Down Expand Up @@ -276,12 +278,12 @@ public class LibvirtComputingResource extends ServerResourceBase implements Serv

@Override
public ExecutionResult executeInVR(final String routerIp, final String script, final String args) {
return executeInVR(routerIp, script, args, _timeout / 1000);
return executeInVR(routerIp, script, args, _timeout);
}

@Override
public ExecutionResult executeInVR(final String routerIp, final String script, final String args, final int timeout) {
final Script command = new Script(_routerProxyPath, timeout * 1000, s_logger);
public ExecutionResult executeInVR(final String routerIp, final String script, final String args, final Duration timeout) {
final Script command = new Script(_routerProxyPath, timeout, s_logger);
final AllLinesParser parser = new AllLinesParser();
command.add(script);
command.add(routerIp);
Expand Down Expand Up @@ -383,7 +385,7 @@ public String getUpdateHostPasswdPath() {
return _updateHostPasswdPath;
}

public int getTimeout() {
public Duration getTimeout() {
return _timeout;
}

Expand Down Expand Up @@ -774,7 +776,7 @@ public boolean configure(final String name, final Map<String, Object> params) th
}

value = (String)params.get("scripts.timeout");
_timeout = NumbersUtil.parseInt(value, 30 * 60) * 1000;
_timeout = Duration.standardSeconds(NumbersUtil.parseInt(value, 30 * 60));

value = (String)params.get("stop.script.timeout");
_stopTimeout = NumbersUtil.parseInt(value, 120) * 1000;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -29,7 +29,7 @@
import com.cloud.resource.ResourceWrapper;
import com.cloud.utils.script.Script;

@ResourceWrapper(handles = OvsCreateTunnelCommand.class)
@ResourceWrapper(handles = OvsCreateTunnelCommand.class)
public final class LibvirtOvsCreateTunnelCommandWrapper extends CommandWrapper<OvsCreateTunnelCommand, Answer, LibvirtComputingResource> {

private static final Logger s_logger = Logger.getLogger(LibvirtOvsCreateTunnelCommandWrapper.class);
Expand All @@ -40,13 +40,10 @@ public Answer execute(final OvsCreateTunnelCommand command, final LibvirtComputi
try {
if (!libvirtComputingResource.findOrCreateTunnelNetwork(bridge)) {
s_logger.debug("Error during bridge setup");
return new OvsCreateTunnelAnswer(command, false,
"Cannot create network", bridge);
return new OvsCreateTunnelAnswer(command, false, "Cannot create network", bridge);
}

libvirtComputingResource.configureTunnelNetwork(command.getNetworkId(), command.getFrom(),
command.getNetworkName());

libvirtComputingResource.configureTunnelNetwork(command.getNetworkId(), command.getFrom(), command.getNetworkName());
final Script scriptCommand = new Script(libvirtComputingResource.getOvsTunnelPath(), libvirtComputingResource.getTimeout(), s_logger);
scriptCommand.add("create_tunnel");
scriptCommand.add("--bridge", bridge);
Expand All @@ -57,8 +54,7 @@ public Answer execute(final OvsCreateTunnelCommand command, final LibvirtComputi

final String result = scriptCommand.execute();
if (result != null) {
return new OvsCreateTunnelAnswer(command, true, result, null,
bridge);
return new OvsCreateTunnelAnswer(command, true, result, null, bridge);
} else {
return new OvsCreateTunnelAnswer(command, false, result, bridge);
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -22,6 +22,7 @@
import java.util.List;

import org.apache.log4j.Logger;
import org.joda.time.Duration;
import org.libvirt.Connect;
import org.libvirt.LibvirtException;

Expand All @@ -45,8 +46,8 @@ public Answer execute(final PvlanSetupCommand command, final LibvirtComputingRes
final String op = command.getOp();
final String dhcpName = command.getDhcpName();
final String dhcpMac = command.getDhcpMac();
final String dhcpIp = command.getDhcpIp();
final String vmMac = command.getVmMac();
final String dhcpIp = command.getDhcpIp();
boolean add = true;

String opr = "-A";
Expand All @@ -58,7 +59,7 @@ public Answer execute(final PvlanSetupCommand command, final LibvirtComputingRes
String result = null;
try {
final String guestBridgeName = libvirtComputingResource.getGuestBridgeName();
final int timeout = libvirtComputingResource.getTimeout();
final Duration timeout = libvirtComputingResource.getTimeout();

if (command.getType() == PvlanSetupCommand.Type.DHCP) {
final String ovsPvlanDhcpHostPath = libvirtComputingResource.getOvsPvlanDhcpHostPath();
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -53,6 +53,7 @@
import org.apache.cloudstack.utils.linux.MemStat;
import org.apache.cloudstack.utils.qemu.QemuImg.PhysicalDiskFormat;
import org.apache.commons.lang.SystemUtils;
import org.joda.time.Duration;
import org.junit.Assert;
import org.junit.Assume;
import org.junit.Test;
Expand Down Expand Up @@ -1623,7 +1624,7 @@ public void testModifySshKeysCommand() {
when(libvirtUtilitiesHelper.retrieveSshPubKeyPath()).thenReturn("/path/pub/keys");
when(libvirtUtilitiesHelper.retrieveSshPrvKeyPath()).thenReturn("/path/pvt/keys");

when(libvirtComputingResource.getTimeout()).thenReturn(0);
when(libvirtComputingResource.getTimeout()).thenReturn(Duration.ZERO);

final LibvirtRequestWrapper wrapper = LibvirtRequestWrapper.getInstance();
assertNotNull(wrapper);
Expand Down Expand Up @@ -2179,7 +2180,7 @@ public void testOvsVpcPhysicalTopologyConfigCommand() {
final OvsVpcPhysicalTopologyConfigCommand command = new OvsVpcPhysicalTopologyConfigCommand(hosts, tiers, vms, cidr);

when(libvirtComputingResource.getOvsTunnelPath()).thenReturn("/path");
when(libvirtComputingResource.getTimeout()).thenReturn(0);
when(libvirtComputingResource.getTimeout()).thenReturn(Duration.ZERO);


final LibvirtRequestWrapper wrapper = LibvirtRequestWrapper.getInstance();
Expand Down Expand Up @@ -2223,7 +2224,7 @@ public void testOvsVpcRoutingPolicyConfigCommand() {
final OvsVpcRoutingPolicyConfigCommand command = new OvsVpcRoutingPolicyConfigCommand(id, cidr, acls, tiers);

when(libvirtComputingResource.getOvsTunnelPath()).thenReturn("/path");
when(libvirtComputingResource.getTimeout()).thenReturn(0);
when(libvirtComputingResource.getTimeout()).thenReturn(Duration.ZERO);


final LibvirtRequestWrapper wrapper = LibvirtRequestWrapper.getInstance();
Expand Down Expand Up @@ -2699,6 +2700,7 @@ public void testOvsCreateTunnelCommand() {
when(libvirtComputingResource.findOrCreateTunnelNetwork(bridge)).thenReturn(true);
when(libvirtComputingResource.configureTunnelNetwork(command.getNetworkId(), command.getFrom(),
command.getNetworkName())).thenReturn(true);
when(libvirtComputingResource.getTimeout()).thenReturn(Duration.ZERO);

final LibvirtRequestWrapper wrapper = LibvirtRequestWrapper.getInstance();
assertNotNull(wrapper);
Expand Down Expand Up @@ -4273,8 +4275,7 @@ public void testPvlanSetupCommandDhcpAdd() {
final String guestBridgeName = "br0";
when(libvirtComputingResource.getGuestBridgeName()).thenReturn(guestBridgeName);

final int timeout = 0;
when(libvirtComputingResource.getTimeout()).thenReturn(timeout);
when(libvirtComputingResource.getTimeout()).thenReturn(Duration.ZERO);
final String ovsPvlanDhcpHostPath = "/pvlan";
when(libvirtComputingResource.getOvsPvlanDhcpHostPath()).thenReturn(ovsPvlanDhcpHostPath);
when(libvirtComputingResource.getLibvirtUtilitiesHelper()).thenReturn(libvirtUtilitiesHelper);
Expand Down Expand Up @@ -4315,8 +4316,7 @@ public void testPvlanSetupCommandVm() {

final String guestBridgeName = "br0";
when(libvirtComputingResource.getGuestBridgeName()).thenReturn(guestBridgeName);
final int timeout = 0;
when(libvirtComputingResource.getTimeout()).thenReturn(timeout);
when(libvirtComputingResource.getTimeout()).thenReturn(Duration.ZERO);

final String ovsPvlanVmPath = "/pvlan";
when(libvirtComputingResource.getOvsPvlanVmPath()).thenReturn(ovsPvlanVmPath);
Expand Down Expand Up @@ -4345,8 +4345,7 @@ public void testPvlanSetupCommandDhcpException() {
final String guestBridgeName = "br0";
when(libvirtComputingResource.getGuestBridgeName()).thenReturn(guestBridgeName);

final int timeout = 0;
when(libvirtComputingResource.getTimeout()).thenReturn(timeout);
when(libvirtComputingResource.getTimeout()).thenReturn(Duration.ZERO);
final String ovsPvlanDhcpHostPath = "/pvlan";
when(libvirtComputingResource.getOvsPvlanDhcpHostPath()).thenReturn(ovsPvlanDhcpHostPath);
when(libvirtComputingResource.getLibvirtUtilitiesHelper()).thenReturn(libvirtUtilitiesHelper);
Expand Down Expand Up @@ -4387,8 +4386,7 @@ public void testPvlanSetupCommandDhcpDelete() {
final String guestBridgeName = "br0";
when(libvirtComputingResource.getGuestBridgeName()).thenReturn(guestBridgeName);

final int timeout = 0;
when(libvirtComputingResource.getTimeout()).thenReturn(timeout);
when(libvirtComputingResource.getTimeout()).thenReturn(Duration.ZERO);
final String ovsPvlanDhcpHostPath = "/pvlan";
when(libvirtComputingResource.getOvsPvlanDhcpHostPath()).thenReturn(ovsPvlanDhcpHostPath);
when(libvirtComputingResource.getLibvirtUtilitiesHelper()).thenReturn(libvirtUtilitiesHelper);
Expand Down
Loading