mirror of https://github.com/apache/cloudstack.git
Fixing bugs from Coverity related to Dereferenced Null after check and as return value.
Signed-off-by: Daan Hoogland <daan@onecht.net>
This commit is contained in:
parent
c781e3b668
commit
2774b62d64
|
|
@ -167,7 +167,8 @@ public class AgentShell implements IAgentShell, Daemon {
|
|||
|
||||
void loadProperties() throws ConfigurationException {
|
||||
final File file = PropertiesUtil.findConfigFile("agent.properties");
|
||||
if (file == null) {
|
||||
|
||||
if (null == file) {
|
||||
throw new ConfigurationException("Unable to find agent.properties.");
|
||||
}
|
||||
|
||||
|
|
@ -303,12 +304,17 @@ public class AgentShell implements IAgentShell, Daemon {
|
|||
// For KVM agent, do it specially here
|
||||
|
||||
File file = new File("/etc/cloudstack/agent/log4j-cloud.xml");
|
||||
if (!file.exists()) {
|
||||
if(!file.exists()) {
|
||||
file = PropertiesUtil.findConfigFile("log4j-cloud.xml");
|
||||
}
|
||||
DOMConfigurator.configureAndWatch(file.getAbsolutePath());
|
||||
|
||||
s_logger.info("Agent started");
|
||||
if (null != file) {
|
||||
DOMConfigurator.configureAndWatch(file.getAbsolutePath());
|
||||
|
||||
s_logger.info("Agent started");
|
||||
} else {
|
||||
s_logger.error("Could not start the Agent because the absolut path of the \"log4j-cloud.xml\" file cannot be determined.");
|
||||
}
|
||||
|
||||
final Class<?> c = this.getClass();
|
||||
_version = c.getPackage().getImplementationVersion();
|
||||
|
|
|
|||
|
|
@ -29,14 +29,11 @@ import net.juniper.contrail.api.ApiConnector;
|
|||
import net.juniper.contrail.api.types.ServiceInstance;
|
||||
import net.juniper.contrail.api.types.VirtualNetwork;
|
||||
|
||||
import org.apache.log4j.Logger;
|
||||
|
||||
import com.google.gson.Gson;
|
||||
|
||||
import org.apache.cloudstack.context.CallContext;
|
||||
import org.apache.cloudstack.network.contrail.api.response.ServiceInstanceResponse;
|
||||
import org.apache.cloudstack.network.contrail.model.ServiceInstanceModel;
|
||||
import org.apache.cloudstack.network.contrail.model.VirtualMachineModel;
|
||||
import org.apache.log4j.Logger;
|
||||
|
||||
import com.cloud.api.ApiDBUtils;
|
||||
import com.cloud.dc.DataCenter;
|
||||
|
|
@ -61,6 +58,7 @@ import com.cloud.vm.UserVmVO;
|
|||
import com.cloud.vm.VirtualMachineManager;
|
||||
import com.cloud.vm.VirtualMachineName;
|
||||
import com.cloud.vm.dao.UserVmDao;
|
||||
import com.google.gson.Gson;
|
||||
|
||||
@Local(value = {ServiceManager.class})
|
||||
public class ServiceManagerImpl implements ServiceManager {
|
||||
|
|
@ -98,7 +96,7 @@ public class ServiceManagerImpl implements ServiceManager {
|
|||
*/
|
||||
@ActionEvent(eventType = EventTypes.EVENT_VM_CREATE, eventDescription = "createServiceInstance", create = true)
|
||||
private ServiceVirtualMachine createServiceVM(DataCenter zone, Account owner, VirtualMachineTemplate template, ServiceOffering serviceOffering, String name,
|
||||
ServiceInstance siObj, Network left, Network right) {
|
||||
ServiceInstance siObj, Network left, Network right) {
|
||||
long id = _vmDao.getNextInSequence(Long.class, "id");
|
||||
|
||||
DataCenterDeployment plan = new DataCenterDeployment(zone.getId());
|
||||
|
|
@ -111,8 +109,8 @@ public class ServiceManagerImpl implements ServiceManager {
|
|||
|
||||
String instanceName = VirtualMachineName.getVmName(id, owner.getId(), "SRV");
|
||||
ServiceVirtualMachine svm =
|
||||
new ServiceVirtualMachine(id, instanceName, name, template.getId(), serviceOffering.getId(), template.getHypervisorType(), template.getGuestOSId(),
|
||||
zone.getId(), owner.getDomainId(), owner.getAccountId(), false);
|
||||
new ServiceVirtualMachine(id, instanceName, name, template.getId(), serviceOffering.getId(), template.getHypervisorType(), template.getGuestOSId(),
|
||||
zone.getId(), owner.getDomainId(), owner.getAccountId(), false);
|
||||
|
||||
// database synchronization code must be able to distinguish service instance VMs.
|
||||
Map<String, String> kvmap = new HashMap<String, String>();
|
||||
|
|
@ -132,7 +130,7 @@ public class ServiceManagerImpl implements ServiceManager {
|
|||
|
||||
@Override
|
||||
public ServiceVirtualMachine createServiceInstance(DataCenter zone, Account owner, VirtualMachineTemplate template, ServiceOffering serviceOffering, String name,
|
||||
Network left, Network right) {
|
||||
Network left, Network right) {
|
||||
s_logger.debug("createServiceInstance by " + owner.getAccountName());
|
||||
// TODO: permission model.
|
||||
// service instances need to be able to access the public network.
|
||||
|
|
@ -227,10 +225,12 @@ public class ServiceManagerImpl implements ServiceManager {
|
|||
@Override
|
||||
public ServiceInstanceResponse createServiceInstanceResponse(long instanceId) {
|
||||
s_logger.debug("ServiceInstance response for id: " + instanceId);
|
||||
|
||||
UserVmVO vm = _vmDao.findById(instanceId);
|
||||
ServiceInstanceResponse response = new ServiceInstanceResponse();
|
||||
response.setId(vm.getUuid());
|
||||
Account owner = _accountService.getAccount(vm.getAccountId());
|
||||
|
||||
if (owner.getType() == Account.ACCOUNT_TYPE_PROJECT) {
|
||||
Project project = ApiDBUtils.findProjectByProjectAccountIdIncludingRemoved(owner.getAccountId());
|
||||
response.setProjectId(project.getUuid());
|
||||
|
|
|
|||
|
|
@ -27,12 +27,8 @@ import net.juniper.contrail.api.types.Project;
|
|||
import net.juniper.contrail.api.types.ServiceInstance;
|
||||
import net.juniper.contrail.api.types.VirtualMachine;
|
||||
|
||||
import org.apache.log4j.Logger;
|
||||
|
||||
import com.google.gson.Gson;
|
||||
import com.google.gson.reflect.TypeToken;
|
||||
|
||||
import org.apache.cloudstack.network.contrail.management.ContrailManager;
|
||||
import org.apache.log4j.Logger;
|
||||
|
||||
import com.cloud.exception.InternalErrorException;
|
||||
import com.cloud.network.dao.NetworkDao;
|
||||
|
|
@ -42,11 +38,13 @@ import com.cloud.utils.exception.CloudRuntimeException;
|
|||
import com.cloud.vm.NicVO;
|
||||
import com.cloud.vm.VMInstanceVO;
|
||||
import com.cloud.vm.dao.NicDao;
|
||||
import com.google.gson.Gson;
|
||||
import com.google.gson.reflect.TypeToken;
|
||||
|
||||
public class VirtualMachineModel extends ModelObjectBase {
|
||||
private static final Logger s_logger = Logger.getLogger(VirtualMachineModel.class);
|
||||
|
||||
private String _uuid;
|
||||
private final String _uuid;
|
||||
private long _instanceId;
|
||||
|
||||
/*
|
||||
|
|
@ -113,8 +111,12 @@ public class VirtualMachineModel extends ModelObjectBase {
|
|||
throw new CloudRuntimeException("Unable to read service-instance object", ex);
|
||||
}
|
||||
if (siObj == null) {
|
||||
//If the ServiceInstance object is null, do not call build. It will break in many places. Instead, call update passing the controller as parameter.
|
||||
//It will then create a new ServiceInstance is that's null.
|
||||
siModel = new ServiceInstanceModel(serviceUuid);
|
||||
siModel.build(controller, siObj);
|
||||
siModel.update(controller);
|
||||
|
||||
siObj = siModel.getServiceInstance();
|
||||
}
|
||||
}
|
||||
_serviceModel = siModel;
|
||||
|
|
@ -197,21 +199,21 @@ public class VirtualMachineModel extends ModelObjectBase {
|
|||
|
||||
boolean isActiveInstance(VMInstanceVO instance) {
|
||||
switch (instance.getState()) {
|
||||
case Migrating:
|
||||
case Starting:
|
||||
case Running:
|
||||
case Shutdowned:
|
||||
case Stopped:
|
||||
case Stopping:
|
||||
return true;
|
||||
case Migrating:
|
||||
case Starting:
|
||||
case Running:
|
||||
case Shutdowned:
|
||||
case Stopped:
|
||||
case Stopping:
|
||||
return true;
|
||||
|
||||
case Destroyed:
|
||||
case Error:
|
||||
case Expunging:
|
||||
return false;
|
||||
case Destroyed:
|
||||
case Error:
|
||||
case Expunging:
|
||||
return false;
|
||||
|
||||
default:
|
||||
s_logger.warn("Unknown VMInstance state " + instance.getState().getDescription());
|
||||
default:
|
||||
s_logger.warn("Unknown VMInstance state " + instance.getState().getDescription());
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
|
@ -255,17 +257,17 @@ public class VirtualMachineModel extends ModelObjectBase {
|
|||
String tag;
|
||||
|
||||
switch (nic.getDeviceId()) {
|
||||
case 0:
|
||||
tag = "management";
|
||||
break;
|
||||
case 1:
|
||||
tag = "left";
|
||||
break;
|
||||
case 2:
|
||||
tag = "right";
|
||||
break;
|
||||
default:
|
||||
tag = null;
|
||||
case 0:
|
||||
tag = "management";
|
||||
break;
|
||||
case 1:
|
||||
tag = "left";
|
||||
break;
|
||||
case 2:
|
||||
tag = "right";
|
||||
break;
|
||||
default:
|
||||
tag = null;
|
||||
}
|
||||
|
||||
VMInterfaceModel vmiModel = getVMInterface(nic.getUuid());
|
||||
|
|
|
|||
|
|
@ -25,10 +25,6 @@ import java.util.UUID;
|
|||
|
||||
import javax.inject.Inject;
|
||||
|
||||
import org.apache.commons.lang.StringUtils;
|
||||
import org.apache.log4j.Logger;
|
||||
import org.bouncycastle.util.encoders.Base64;
|
||||
|
||||
import org.apache.cloudstack.api.APICommand;
|
||||
import org.apache.cloudstack.api.ApiConstants;
|
||||
import org.apache.cloudstack.api.ApiErrorCode;
|
||||
|
|
@ -41,6 +37,9 @@ import org.apache.cloudstack.api.response.ListResponse;
|
|||
import org.apache.cloudstack.ldap.LdapManager;
|
||||
import org.apache.cloudstack.ldap.LdapUser;
|
||||
import org.apache.cloudstack.ldap.NoLdapUserMatchingQueryException;
|
||||
import org.apache.commons.lang.StringUtils;
|
||||
import org.apache.log4j.Logger;
|
||||
import org.bouncycastle.util.encoders.Base64;
|
||||
|
||||
import com.cloud.domain.Domain;
|
||||
import com.cloud.exception.ConcurrentOperationException;
|
||||
|
|
@ -60,29 +59,29 @@ public class LdapImportUsersCmd extends BaseListCmd {
|
|||
private static final String s_name = "ldapuserresponse";
|
||||
|
||||
@Parameter(name = ApiConstants.TIMEZONE,
|
||||
type = CommandType.STRING,
|
||||
description = "Specifies a timezone for this command. For more information on the timezone parameter, see Time Zone Format.")
|
||||
type = CommandType.STRING,
|
||||
description = "Specifies a timezone for this command. For more information on the timezone parameter, see Time Zone Format.")
|
||||
private String timezone;
|
||||
|
||||
@Parameter(name = ApiConstants.ACCOUNT_TYPE,
|
||||
type = CommandType.SHORT,
|
||||
required = true,
|
||||
description = "Type of the account. Specify 0 for user, 1 for root admin, and 2 for domain admin")
|
||||
type = CommandType.SHORT,
|
||||
required = true,
|
||||
description = "Type of the account. Specify 0 for user, 1 for root admin, and 2 for domain admin")
|
||||
private Short accountType;
|
||||
|
||||
@Parameter(name = ApiConstants.ACCOUNT_DETAILS, type = CommandType.MAP, description = "details for account used to store specific parameters")
|
||||
private Map<String, String> details;
|
||||
|
||||
@Parameter(name = ApiConstants.DOMAIN_ID,
|
||||
type = CommandType.UUID,
|
||||
entityType = DomainResponse.class,
|
||||
description = "Specifies the domain to which the ldap users are to be "
|
||||
+ "imported. If no domain is specified, a domain will created using group parameter. If the group is also not specified, a domain name based on the OU information will be "
|
||||
+ "created. If no OU hierarchy exists, will be defaulted to ROOT domain")
|
||||
type = CommandType.UUID,
|
||||
entityType = DomainResponse.class,
|
||||
description = "Specifies the domain to which the ldap users are to be "
|
||||
+ "imported. If no domain is specified, a domain will created using group parameter. If the group is also not specified, a domain name based on the OU information will be "
|
||||
+ "created. If no OU hierarchy exists, will be defaulted to ROOT domain")
|
||||
private Long domainId;
|
||||
|
||||
@Parameter(name = ApiConstants.GROUP, type = CommandType.STRING, description = "Specifies the group name from which the ldap users are to be imported. "
|
||||
+ "If no group is specified, all the users will be imported.")
|
||||
+ "If no group is specified, all the users will be imported.")
|
||||
private String groupName;
|
||||
|
||||
private Domain _domain;
|
||||
|
|
@ -103,11 +102,12 @@ public class LdapImportUsersCmd extends BaseListCmd {
|
|||
|
||||
@Override
|
||||
public void execute() throws ResourceUnavailableException, InsufficientCapacityException, ServerApiException, ConcurrentOperationException,
|
||||
ResourceAllocationException, NetworkRuleConflictException {
|
||||
ResourceAllocationException, NetworkRuleConflictException {
|
||||
|
||||
List<LdapUser> users;
|
||||
try {
|
||||
if (StringUtils.isNotBlank(groupName)) {
|
||||
|
||||
users = _ldapManager.getUsersInGroup(groupName);
|
||||
} else {
|
||||
users = _ldapManager.getUsers();
|
||||
|
|
@ -122,7 +122,7 @@ public class LdapImportUsersCmd extends BaseListCmd {
|
|||
Domain domain = getDomain(user);
|
||||
try {
|
||||
_accountService.createUserAccount(user.getUsername(), generatePassword(), user.getFirstname(), user.getLastname(), user.getEmail(), timezone,
|
||||
user.getUsername(), accountType, domain.getId(), domain.getNetworkDomain(), details, UUID.randomUUID().toString(), UUID.randomUUID().toString());
|
||||
user.getUsername(), accountType, domain.getId(), domain.getNetworkDomain(), details, UUID.randomUUID().toString(), UUID.randomUUID().toString());
|
||||
addedUsers.add(user);
|
||||
} catch (InvalidParameterValueException ex) {
|
||||
s_logger.error("Failed to create user with username: " + user.getUsername() + " ::: " + ex.getMessage());
|
||||
|
|
@ -194,7 +194,8 @@ public class LdapImportUsersCmd extends BaseListCmd {
|
|||
final SecureRandom randomGen = SecureRandom.getInstance("SHA1PRNG");
|
||||
final byte bytes[] = new byte[20];
|
||||
randomGen.nextBytes(bytes);
|
||||
return Base64.encode(bytes).toString();
|
||||
String encodedPassword = new String(Base64.encode(bytes));
|
||||
return encodedPassword;
|
||||
} catch (final NoSuchAlgorithmException e) {
|
||||
throw new ServerApiException(ApiErrorCode.INTERNAL_ERROR, "Failed to generate random password");
|
||||
}
|
||||
|
|
|
|||
|
|
@ -42,15 +42,14 @@ import javax.crypto.SecretKey;
|
|||
import javax.inject.Inject;
|
||||
import javax.naming.ConfigurationException;
|
||||
|
||||
import org.apache.commons.codec.binary.Base64;
|
||||
import org.apache.commons.io.FileUtils;
|
||||
import org.apache.log4j.Logger;
|
||||
|
||||
import org.apache.cloudstack.framework.config.ConfigDepot;
|
||||
import org.apache.cloudstack.framework.config.ConfigDepotAdmin;
|
||||
import org.apache.cloudstack.framework.config.ConfigKey;
|
||||
import org.apache.cloudstack.framework.config.dao.ConfigurationDao;
|
||||
import org.apache.cloudstack.framework.config.impl.ConfigurationVO;
|
||||
import org.apache.commons.codec.binary.Base64;
|
||||
import org.apache.commons.io.FileUtils;
|
||||
import org.apache.log4j.Logger;
|
||||
|
||||
import com.cloud.cluster.ClusterManager;
|
||||
import com.cloud.configuration.Config;
|
||||
|
|
@ -158,7 +157,6 @@ public class ConfigurationServerImpl extends ManagerBase implements Configuratio
|
|||
|
||||
@Override
|
||||
public boolean configure(String name, Map<String, Object> params) throws ConfigurationException {
|
||||
|
||||
try {
|
||||
persistDefaultValues();
|
||||
_configDepotAdmin.populateConfigurations();
|
||||
|
|
@ -285,7 +283,7 @@ public class ConfigurationServerImpl extends ManagerBase implements Configuratio
|
|||
long startIPLong = NetUtils.ip2Long(startIp);
|
||||
long endIPLong = NetUtils.ip2Long(endIp);
|
||||
config.savePublicIPRange(TransactionLegacy.currentTxn(), startIPLong, endIPLong, vlan.getDataCenterId(), vlan.getId(), vlan.getNetworkId(),
|
||||
vlan.getPhysicalNetworkId());
|
||||
vlan.getPhysicalNetworkId());
|
||||
}
|
||||
});
|
||||
|
||||
|
|
@ -372,16 +370,16 @@ public class ConfigurationServerImpl extends ManagerBase implements Configuratio
|
|||
if (resouce == null)
|
||||
continue;
|
||||
if (resouce.equalsIgnoreCase("com.cloud.hypervisor.xen.resource.XenServer56Resource") ||
|
||||
resouce.equalsIgnoreCase("com.cloud.hypervisor.xen.resource.XenServer56FP1Resource") ||
|
||||
resouce.equalsIgnoreCase("com.cloud.hypervisor.xen.resource.XenServer56SP2Resource") ||
|
||||
resouce.equalsIgnoreCase("com.cloud.hypervisor.xen.resource.XenServer600Resource") ||
|
||||
resouce.equalsIgnoreCase("com.cloud.hypervisor.xen.resource.XenServer602Resource")) {
|
||||
resouce.equalsIgnoreCase("com.cloud.hypervisor.xen.resource.XenServer56FP1Resource") ||
|
||||
resouce.equalsIgnoreCase("com.cloud.hypervisor.xen.resource.XenServer56SP2Resource") ||
|
||||
resouce.equalsIgnoreCase("com.cloud.hypervisor.xen.resource.XenServer600Resource") ||
|
||||
resouce.equalsIgnoreCase("com.cloud.hypervisor.xen.resource.XenServer602Resource")) {
|
||||
pvdriverversion = "xenserver56";
|
||||
break;
|
||||
}
|
||||
}
|
||||
_configDao.getValueAndInitIfNotExist(Config.XenPVdriverVersion.key(), Config.XenPVdriverVersion.getCategory(), pvdriverversion,
|
||||
Config.XenPVdriverVersion.getDescription());
|
||||
Config.XenPVdriverVersion.getDescription());
|
||||
sql = "select id from vm_template where hypervisor_type='XenServer' and format!='ISO' and removed is null";
|
||||
pstmt = txn.prepareAutoCloseStatement(sql);
|
||||
rs2 = pstmt.executeQuery();
|
||||
|
|
@ -421,7 +419,7 @@ public class ConfigurationServerImpl extends ManagerBase implements Configuratio
|
|||
_identityDao.initializeDefaultUuid("user_ip_address");
|
||||
_identityDao.initializeDefaultUuid("counter");
|
||||
}
|
||||
*/
|
||||
*/
|
||||
|
||||
private String getMountParent() {
|
||||
return getEnvironmentProperty("mount.parent");
|
||||
|
|
@ -457,8 +455,8 @@ public class ConfigurationServerImpl extends ManagerBase implements Configuratio
|
|||
}
|
||||
// insert system user
|
||||
insertSql =
|
||||
"INSERT INTO `cloud`.`user` (id, uuid, username, password, account_id, firstname, lastname, created, user.default)"
|
||||
+ " VALUES (1, UUID(), 'system', RAND(), 1, 'system', 'cloud', now(), 1)";
|
||||
"INSERT INTO `cloud`.`user` (id, uuid, username, password, account_id, firstname, lastname, created, user.default)"
|
||||
+ " VALUES (1, UUID(), 'system', RAND(), 1, 'system', 'cloud', now(), 1)";
|
||||
txn = TransactionLegacy.currentTxn();
|
||||
try {
|
||||
PreparedStatement stmt = txn.prepareAutoCloseStatement(insertSql);
|
||||
|
|
@ -475,7 +473,7 @@ public class ConfigurationServerImpl extends ManagerBase implements Configuratio
|
|||
|
||||
// create an account for the admin user first
|
||||
insertSql =
|
||||
"INSERT INTO `cloud`.`account` (id, uuid, account_name, type, domain_id, account.default) VALUES (" + id + ", UUID(), '" + username + "', '1', '1', 1)";
|
||||
"INSERT INTO `cloud`.`account` (id, uuid, account_name, type, domain_id, account.default) VALUES (" + id + ", UUID(), '" + username + "', '1', '1', 1)";
|
||||
txn = TransactionLegacy.currentTxn();
|
||||
try {
|
||||
PreparedStatement stmt = txn.prepareAutoCloseStatement(insertSql);
|
||||
|
|
@ -485,7 +483,7 @@ public class ConfigurationServerImpl extends ManagerBase implements Configuratio
|
|||
|
||||
// now insert the user
|
||||
insertSql =
|
||||
"INSERT INTO `cloud`.`user` (id, uuid, username, password, account_id, firstname, lastname, created, state, user.default) " + "VALUES (" + id +
|
||||
"INSERT INTO `cloud`.`user` (id, uuid, username, password, account_id, firstname, lastname, created, state, user.default) " + "VALUES (" + id +
|
||||
", UUID(), '" + username + "', RAND(), 2, '" + firstname + "','" + lastname + "',now(), 'disabled', 1)";
|
||||
|
||||
txn = TransactionLegacy.currentTxn();
|
||||
|
|
@ -513,11 +511,11 @@ public class ConfigurationServerImpl extends ManagerBase implements Configuratio
|
|||
// save default security group
|
||||
if (tableName.equals("security_group")) {
|
||||
insertSql =
|
||||
"INSERT INTO " + tableName + " (uuid, name, description, account_id, domain_id) " + "VALUES (UUID(), 'default', 'Default Security Group', 2, 1)";
|
||||
"INSERT INTO " + tableName + " (uuid, name, description, account_id, domain_id) " + "VALUES (UUID(), 'default', 'Default Security Group', 2, 1)";
|
||||
} else {
|
||||
insertSql =
|
||||
"INSERT INTO " + tableName + " (name, description, account_id, domain_id, account_name) " +
|
||||
"VALUES ('default', 'Default Security Group', 2, 1, 'admin')";
|
||||
"INSERT INTO " + tableName + " (name, description, account_id, domain_id, account_name) " +
|
||||
"VALUES ('default', 'Default Security Group', 2, 1, 'admin')";
|
||||
}
|
||||
|
||||
txn = TransactionLegacy.currentTxn();
|
||||
|
|
@ -597,27 +595,34 @@ public class ConfigurationServerImpl extends ManagerBase implements Configuratio
|
|||
}
|
||||
|
||||
String dbString = _configDao.getValue("ssl.keystore");
|
||||
|
||||
File confFile = PropertiesUtil.findConfigFile("db.properties");
|
||||
/* This line may throw a NPE, but that's due to fail to find db.properities, meant some bugs in the other places */
|
||||
String confPath = confFile.getParent();
|
||||
String keystorePath = confPath + "/cloudmanagementserver.keystore";
|
||||
File keystoreFile = new File(keystorePath);
|
||||
String confPath = null;
|
||||
String keystorePath = null;
|
||||
File keystoreFile = null;
|
||||
|
||||
if (null != confFile) {
|
||||
confPath = confFile.getParent();
|
||||
keystorePath = confPath + "/cloud.keystore";
|
||||
keystoreFile = new File(keystorePath);
|
||||
}
|
||||
|
||||
boolean dbExisted = (dbString != null && !dbString.isEmpty());
|
||||
|
||||
s_logger.info("SSL keystore located at " + keystorePath);
|
||||
try {
|
||||
if (!dbExisted) {
|
||||
if (!dbExisted && null != confFile) {
|
||||
if (!keystoreFile.exists()) {
|
||||
generateDefaultKeystore(keystorePath);
|
||||
s_logger.info("Generated SSL keystore.");
|
||||
}
|
||||
String base64Keystore = getBase64Keystore(keystorePath);
|
||||
ConfigurationVO configVO =
|
||||
new ConfigurationVO("Hidden", "DEFAULT", "management-server", "ssl.keystore", DBEncryptionUtil.encrypt(base64Keystore),
|
||||
"SSL Keystore for the management servers");
|
||||
new ConfigurationVO("Hidden", "DEFAULT", "management-server", "ssl.keystore", DBEncryptionUtil.encrypt(base64Keystore),
|
||||
"SSL Keystore for the management servers");
|
||||
_configDao.persist(configVO);
|
||||
s_logger.info("Stored SSL keystore to database.");
|
||||
} else if (keystoreFile.exists()) { // and dbExisted
|
||||
} else if (null != keystoreFile && keystoreFile.exists()) { // and dbExisted
|
||||
// Check if they are the same one, otherwise override with local keystore
|
||||
String base64Keystore = getBase64Keystore(keystorePath);
|
||||
if (base64Keystore.compareTo(dbString) != 0) {
|
||||
|
|
@ -634,7 +639,11 @@ public class ConfigurationServerImpl extends ManagerBase implements Configuratio
|
|||
fo.close();
|
||||
Script script = new Script(true, "cp", 5000, null);
|
||||
script.add(tmpKeystorePath);
|
||||
script.add(keystorePath);
|
||||
|
||||
//There is a chance, although small, that the keystorePath is null. In that case, do not add it to the script.
|
||||
if (null != keystorePath) {
|
||||
script.add(keystorePath);
|
||||
}
|
||||
String result = script.execute();
|
||||
if (result != null) {
|
||||
throw new IOException();
|
||||
|
|
@ -666,9 +675,9 @@ public class ConfigurationServerImpl extends ManagerBase implements Configuratio
|
|||
try {
|
||||
String rpassword = PasswordGenerator.generatePresharedKey(8);
|
||||
String wSql =
|
||||
"INSERT INTO `cloud`.`configuration` (category, instance, component, name, value, description) " +
|
||||
"VALUES ('Secure','DEFAULT', 'management-server','system.vm.password', '" + DBEncryptionUtil.encrypt(rpassword) +
|
||||
"','randmon password generated each management server starts for system vm')";
|
||||
"INSERT INTO `cloud`.`configuration` (category, instance, component, name, value, description) " +
|
||||
"VALUES ('Secure','DEFAULT', 'management-server','system.vm.password', '" + DBEncryptionUtil.encrypt(rpassword) +
|
||||
"','randmon password generated each management server starts for system vm')";
|
||||
PreparedStatement stmt = txn.prepareAutoCloseStatement(wSql);
|
||||
stmt.executeUpdate(wSql);
|
||||
s_logger.info("Updated systemvm password in database");
|
||||
|
|
@ -743,13 +752,13 @@ public class ConfigurationServerImpl extends ManagerBase implements Configuratio
|
|||
String publicKey = new String(arr2).trim();
|
||||
|
||||
String insertSql1 =
|
||||
"INSERT INTO `cloud`.`configuration` (category, instance, component, name, value, description) " +
|
||||
"VALUES ('Hidden','DEFAULT', 'management-server','ssh.privatekey', '" + DBEncryptionUtil.encrypt(privateKey) +
|
||||
"','Private key for the entire CloudStack')";
|
||||
"INSERT INTO `cloud`.`configuration` (category, instance, component, name, value, description) " +
|
||||
"VALUES ('Hidden','DEFAULT', 'management-server','ssh.privatekey', '" + DBEncryptionUtil.encrypt(privateKey) +
|
||||
"','Private key for the entire CloudStack')";
|
||||
String insertSql2 =
|
||||
"INSERT INTO `cloud`.`configuration` (category, instance, component, name, value, description) " +
|
||||
"VALUES ('Hidden','DEFAULT', 'management-server','ssh.publickey', '" + DBEncryptionUtil.encrypt(publicKey) +
|
||||
"','Public key for the entire CloudStack')";
|
||||
"INSERT INTO `cloud`.`configuration` (category, instance, component, name, value, description) " +
|
||||
"VALUES ('Hidden','DEFAULT', 'management-server','ssh.publickey', '" + DBEncryptionUtil.encrypt(publicKey) +
|
||||
"','Public key for the entire CloudStack')";
|
||||
|
||||
TransactionLegacy txn = TransactionLegacy.currentTxn();
|
||||
try {
|
||||
|
|
@ -882,9 +891,9 @@ public class ConfigurationServerImpl extends ManagerBase implements Configuratio
|
|||
String password = PasswordGenerator.generateRandomPassword(12);
|
||||
|
||||
String insertSql1 =
|
||||
"INSERT INTO `cloud`.`configuration` (category, instance, component, name, value, description) " +
|
||||
"VALUES ('Hidden','DEFAULT', 'management-server','secstorage.copy.password', '" + DBEncryptionUtil.encrypt(password) +
|
||||
"','Password used to authenticate zone-to-zone template copy requests')";
|
||||
"INSERT INTO `cloud`.`configuration` (category, instance, component, name, value, description) " +
|
||||
"VALUES ('Hidden','DEFAULT', 'management-server','secstorage.copy.password', '" + DBEncryptionUtil.encrypt(password) +
|
||||
"','Password used to authenticate zone-to-zone template copy requests')";
|
||||
|
||||
TransactionLegacy txn = TransactionLegacy.currentTxn();
|
||||
try {
|
||||
|
|
@ -915,7 +924,7 @@ public class ConfigurationServerImpl extends ManagerBase implements Configuratio
|
|||
|
||||
@DB
|
||||
protected HostPodVO createPod(long userId, String podName, final long zoneId, String gateway, String cidr, final String startIp, String endIp)
|
||||
throws InternalErrorException {
|
||||
throws InternalErrorException {
|
||||
String[] cidrPair = cidr.split("\\/");
|
||||
String cidrAddress = cidrPair[0];
|
||||
int cidrSize = Integer.parseInt(cidrPair[1]);
|
||||
|
|
@ -974,7 +983,7 @@ public class ConfigurationServerImpl extends ManagerBase implements Configuratio
|
|||
}
|
||||
|
||||
private DiskOfferingVO createdefaultDiskOffering(Long domainId, String name, String description, int numGibibytes, String tags, boolean isCustomized,
|
||||
boolean isSystemUse) {
|
||||
boolean isSystemUse) {
|
||||
long diskSize = numGibibytes;
|
||||
diskSize = diskSize * 1024 * 1024 * 1024;
|
||||
tags = cleanupTags(tags);
|
||||
|
|
@ -987,10 +996,10 @@ public class ConfigurationServerImpl extends ManagerBase implements Configuratio
|
|||
}
|
||||
|
||||
private ServiceOfferingVO createServiceOffering(long userId, String name, int cpu, int ramSize, int speed, String displayText, boolean localStorageRequired,
|
||||
boolean offerHA, String tags) {
|
||||
boolean offerHA, String tags) {
|
||||
tags = cleanupTags(tags);
|
||||
ServiceOfferingVO offering =
|
||||
new ServiceOfferingVO(name, cpu, ramSize, speed, null, null, offerHA, displayText, localStorageRequired, false, tags, false, null, false);
|
||||
new ServiceOfferingVO(name, cpu, ramSize, speed, null, null, offerHA, displayText, localStorageRequired, false, tags, false, null, false);
|
||||
offering.setUniqueName("Cloud.Com-" + name);
|
||||
offering = _serviceOfferingDao.persistSystemServiceOffering(offering);
|
||||
return offering;
|
||||
|
|
@ -1065,87 +1074,87 @@ public class ConfigurationServerImpl extends ManagerBase implements Configuratio
|
|||
public void doInTransactionWithoutResult(TransactionStatus status) {
|
||||
// Offering #1
|
||||
NetworkOfferingVO defaultSharedSGNetworkOffering =
|
||||
new NetworkOfferingVO(NetworkOffering.DefaultSharedNetworkOfferingWithSGService, "Offering for Shared Security group enabled networks",
|
||||
TrafficType.Guest, false, true, null, null, true, Availability.Optional, null, Network.GuestType.Shared, true, true, false, false, false);
|
||||
new NetworkOfferingVO(NetworkOffering.DefaultSharedNetworkOfferingWithSGService, "Offering for Shared Security group enabled networks",
|
||||
TrafficType.Guest, false, true, null, null, true, Availability.Optional, null, Network.GuestType.Shared, true, true, false, false, false);
|
||||
|
||||
defaultSharedSGNetworkOffering.setState(NetworkOffering.State.Enabled);
|
||||
defaultSharedSGNetworkOffering = _networkOfferingDao.persistDefaultNetworkOffering(defaultSharedSGNetworkOffering);
|
||||
|
||||
for (Service service : defaultSharedSGNetworkOfferingProviders.keySet()) {
|
||||
NetworkOfferingServiceMapVO offService =
|
||||
new NetworkOfferingServiceMapVO(defaultSharedSGNetworkOffering.getId(), service, defaultSharedSGNetworkOfferingProviders.get(service));
|
||||
new NetworkOfferingServiceMapVO(defaultSharedSGNetworkOffering.getId(), service, defaultSharedSGNetworkOfferingProviders.get(service));
|
||||
_ntwkOfferingServiceMapDao.persist(offService);
|
||||
s_logger.trace("Added service for the network offering: " + offService);
|
||||
}
|
||||
|
||||
// Offering #2
|
||||
NetworkOfferingVO defaultSharedNetworkOffering =
|
||||
new NetworkOfferingVO(NetworkOffering.DefaultSharedNetworkOffering, "Offering for Shared networks", TrafficType.Guest, false, true, null, null, true,
|
||||
Availability.Optional, null, Network.GuestType.Shared, true, true, false, false, false);
|
||||
new NetworkOfferingVO(NetworkOffering.DefaultSharedNetworkOffering, "Offering for Shared networks", TrafficType.Guest, false, true, null, null, true,
|
||||
Availability.Optional, null, Network.GuestType.Shared, true, true, false, false, false);
|
||||
|
||||
defaultSharedNetworkOffering.setState(NetworkOffering.State.Enabled);
|
||||
defaultSharedNetworkOffering = _networkOfferingDao.persistDefaultNetworkOffering(defaultSharedNetworkOffering);
|
||||
|
||||
for (Service service : defaultSharedNetworkOfferingProviders.keySet()) {
|
||||
NetworkOfferingServiceMapVO offService =
|
||||
new NetworkOfferingServiceMapVO(defaultSharedNetworkOffering.getId(), service, defaultSharedNetworkOfferingProviders.get(service));
|
||||
new NetworkOfferingServiceMapVO(defaultSharedNetworkOffering.getId(), service, defaultSharedNetworkOfferingProviders.get(service));
|
||||
_ntwkOfferingServiceMapDao.persist(offService);
|
||||
s_logger.trace("Added service for the network offering: " + offService);
|
||||
}
|
||||
|
||||
// Offering #3
|
||||
NetworkOfferingVO defaultIsolatedSourceNatEnabledNetworkOffering =
|
||||
new NetworkOfferingVO(NetworkOffering.DefaultIsolatedNetworkOfferingWithSourceNatService,
|
||||
"Offering for Isolated networks with Source Nat service enabled", TrafficType.Guest, false, false, null, null, true, Availability.Required, null,
|
||||
Network.GuestType.Isolated, true, false, false, false, true);
|
||||
new NetworkOfferingVO(NetworkOffering.DefaultIsolatedNetworkOfferingWithSourceNatService,
|
||||
"Offering for Isolated networks with Source Nat service enabled", TrafficType.Guest, false, false, null, null, true, Availability.Required, null,
|
||||
Network.GuestType.Isolated, true, false, false, false, true);
|
||||
|
||||
defaultIsolatedSourceNatEnabledNetworkOffering.setState(NetworkOffering.State.Enabled);
|
||||
defaultIsolatedSourceNatEnabledNetworkOffering = _networkOfferingDao.persistDefaultNetworkOffering(defaultIsolatedSourceNatEnabledNetworkOffering);
|
||||
|
||||
for (Service service : defaultIsolatedSourceNatEnabledNetworkOfferingProviders.keySet()) {
|
||||
NetworkOfferingServiceMapVO offService =
|
||||
new NetworkOfferingServiceMapVO(defaultIsolatedSourceNatEnabledNetworkOffering.getId(), service,
|
||||
defaultIsolatedSourceNatEnabledNetworkOfferingProviders.get(service));
|
||||
new NetworkOfferingServiceMapVO(defaultIsolatedSourceNatEnabledNetworkOffering.getId(), service,
|
||||
defaultIsolatedSourceNatEnabledNetworkOfferingProviders.get(service));
|
||||
_ntwkOfferingServiceMapDao.persist(offService);
|
||||
s_logger.trace("Added service for the network offering: " + offService);
|
||||
}
|
||||
|
||||
// Offering #4
|
||||
NetworkOfferingVO defaultIsolatedEnabledNetworkOffering =
|
||||
new NetworkOfferingVO(NetworkOffering.DefaultIsolatedNetworkOffering, "Offering for Isolated networks with no Source Nat service", TrafficType.Guest,
|
||||
false, true, null, null, true, Availability.Optional, null, Network.GuestType.Isolated, true, true, false, false, false);
|
||||
new NetworkOfferingVO(NetworkOffering.DefaultIsolatedNetworkOffering, "Offering for Isolated networks with no Source Nat service", TrafficType.Guest,
|
||||
false, true, null, null, true, Availability.Optional, null, Network.GuestType.Isolated, true, true, false, false, false);
|
||||
|
||||
defaultIsolatedEnabledNetworkOffering.setState(NetworkOffering.State.Enabled);
|
||||
defaultIsolatedEnabledNetworkOffering = _networkOfferingDao.persistDefaultNetworkOffering(defaultIsolatedEnabledNetworkOffering);
|
||||
|
||||
for (Service service : defaultIsolatedNetworkOfferingProviders.keySet()) {
|
||||
NetworkOfferingServiceMapVO offService =
|
||||
new NetworkOfferingServiceMapVO(defaultIsolatedEnabledNetworkOffering.getId(), service, defaultIsolatedNetworkOfferingProviders.get(service));
|
||||
new NetworkOfferingServiceMapVO(defaultIsolatedEnabledNetworkOffering.getId(), service, defaultIsolatedNetworkOfferingProviders.get(service));
|
||||
_ntwkOfferingServiceMapDao.persist(offService);
|
||||
s_logger.trace("Added service for the network offering: " + offService);
|
||||
}
|
||||
|
||||
// Offering #5
|
||||
NetworkOfferingVO defaultNetscalerNetworkOffering =
|
||||
new NetworkOfferingVO(NetworkOffering.DefaultSharedEIPandELBNetworkOffering,
|
||||
"Offering for Shared networks with Elastic IP and Elastic LB capabilities", TrafficType.Guest, false, true, null, null, true,
|
||||
Availability.Optional, null, Network.GuestType.Shared, true, false, false, false, true, true, true, false, false, true, true, false, false);
|
||||
new NetworkOfferingVO(NetworkOffering.DefaultSharedEIPandELBNetworkOffering,
|
||||
"Offering for Shared networks with Elastic IP and Elastic LB capabilities", TrafficType.Guest, false, true, null, null, true,
|
||||
Availability.Optional, null, Network.GuestType.Shared, true, false, false, false, true, true, true, false, false, true, true, false, false);
|
||||
|
||||
defaultNetscalerNetworkOffering.setState(NetworkOffering.State.Enabled);
|
||||
defaultNetscalerNetworkOffering = _networkOfferingDao.persistDefaultNetworkOffering(defaultNetscalerNetworkOffering);
|
||||
|
||||
for (Service service : netscalerServiceProviders.keySet()) {
|
||||
NetworkOfferingServiceMapVO offService =
|
||||
new NetworkOfferingServiceMapVO(defaultNetscalerNetworkOffering.getId(), service, netscalerServiceProviders.get(service));
|
||||
new NetworkOfferingServiceMapVO(defaultNetscalerNetworkOffering.getId(), service, netscalerServiceProviders.get(service));
|
||||
_ntwkOfferingServiceMapDao.persist(offService);
|
||||
s_logger.trace("Added service for the network offering: " + offService);
|
||||
}
|
||||
|
||||
// Offering #6
|
||||
NetworkOfferingVO defaultNetworkOfferingForVpcNetworks =
|
||||
new NetworkOfferingVO(NetworkOffering.DefaultIsolatedNetworkOfferingForVpcNetworks,
|
||||
"Offering for Isolated Vpc networks with Source Nat service enabled", TrafficType.Guest, false, false, null, null, true, Availability.Optional,
|
||||
null, Network.GuestType.Isolated, false, false, false, false, true);
|
||||
new NetworkOfferingVO(NetworkOffering.DefaultIsolatedNetworkOfferingForVpcNetworks,
|
||||
"Offering for Isolated Vpc networks with Source Nat service enabled", TrafficType.Guest, false, false, null, null, true, Availability.Optional,
|
||||
null, Network.GuestType.Isolated, false, false, false, false, true);
|
||||
|
||||
defaultNetworkOfferingForVpcNetworks.setState(NetworkOffering.State.Enabled);
|
||||
defaultNetworkOfferingForVpcNetworks = _networkOfferingDao.persistDefaultNetworkOffering(defaultNetworkOfferingForVpcNetworks);
|
||||
|
|
@ -1164,16 +1173,16 @@ public class ConfigurationServerImpl extends ManagerBase implements Configuratio
|
|||
|
||||
for (Service service : defaultVpcNetworkOfferingProviders.keySet()) {
|
||||
NetworkOfferingServiceMapVO offService =
|
||||
new NetworkOfferingServiceMapVO(defaultNetworkOfferingForVpcNetworks.getId(), service, defaultVpcNetworkOfferingProviders.get(service));
|
||||
new NetworkOfferingServiceMapVO(defaultNetworkOfferingForVpcNetworks.getId(), service, defaultVpcNetworkOfferingProviders.get(service));
|
||||
_ntwkOfferingServiceMapDao.persist(offService);
|
||||
s_logger.trace("Added service for the network offering: " + offService);
|
||||
}
|
||||
|
||||
// Offering #7
|
||||
NetworkOfferingVO defaultNetworkOfferingForVpcNetworksNoLB =
|
||||
new NetworkOfferingVO(NetworkOffering.DefaultIsolatedNetworkOfferingForVpcNetworksNoLB,
|
||||
"Offering for Isolated Vpc networks with Source Nat service enabled and LB service Disabled", TrafficType.Guest, false, false, null, null, true,
|
||||
Availability.Optional, null, Network.GuestType.Isolated, false, false, false, false, false);
|
||||
new NetworkOfferingVO(NetworkOffering.DefaultIsolatedNetworkOfferingForVpcNetworksNoLB,
|
||||
"Offering for Isolated Vpc networks with Source Nat service enabled and LB service Disabled", TrafficType.Guest, false, false, null, null, true,
|
||||
Availability.Optional, null, Network.GuestType.Isolated, false, false, false, false, false);
|
||||
|
||||
defaultNetworkOfferingForVpcNetworksNoLB.setState(NetworkOffering.State.Enabled);
|
||||
defaultNetworkOfferingForVpcNetworksNoLB = _networkOfferingDao.persistDefaultNetworkOffering(defaultNetworkOfferingForVpcNetworksNoLB);
|
||||
|
|
@ -1191,16 +1200,16 @@ public class ConfigurationServerImpl extends ManagerBase implements Configuratio
|
|||
|
||||
for (Service service : defaultVpcNetworkOfferingProvidersNoLB.keySet()) {
|
||||
NetworkOfferingServiceMapVO offService =
|
||||
new NetworkOfferingServiceMapVO(defaultNetworkOfferingForVpcNetworksNoLB.getId(), service, defaultVpcNetworkOfferingProvidersNoLB.get(service));
|
||||
new NetworkOfferingServiceMapVO(defaultNetworkOfferingForVpcNetworksNoLB.getId(), service, defaultVpcNetworkOfferingProvidersNoLB.get(service));
|
||||
_ntwkOfferingServiceMapDao.persist(offService);
|
||||
s_logger.trace("Added service for the network offering: " + offService);
|
||||
}
|
||||
|
||||
//offering #8 - network offering with internal lb service
|
||||
NetworkOfferingVO internalLbOff =
|
||||
new NetworkOfferingVO(NetworkOffering.DefaultIsolatedNetworkOfferingForVpcNetworksWithInternalLB,
|
||||
"Offering for Isolated Vpc networks with Internal LB support", TrafficType.Guest, false, false, null, null, true, Availability.Optional, null,
|
||||
Network.GuestType.Isolated, false, false, false, true, false);
|
||||
new NetworkOfferingVO(NetworkOffering.DefaultIsolatedNetworkOfferingForVpcNetworksWithInternalLB,
|
||||
"Offering for Isolated Vpc networks with Internal LB support", TrafficType.Guest, false, false, null, null, true, Availability.Optional, null,
|
||||
Network.GuestType.Isolated, false, false, false, true, false);
|
||||
|
||||
internalLbOff.setState(NetworkOffering.State.Enabled);
|
||||
internalLbOff = _networkOfferingDao.persistDefaultNetworkOffering(internalLbOff);
|
||||
|
|
@ -1275,8 +1284,8 @@ public class ConfigurationServerImpl extends ManagerBase implements Configuratio
|
|||
|
||||
if (broadcastDomainType != null) {
|
||||
NetworkVO network =
|
||||
new NetworkVO(id, trafficType, mode, broadcastDomainType, networkOfferingId, domainId, accountId, related, null, null, networkDomain,
|
||||
Network.GuestType.Shared, zoneId, null, null, specifyIpRanges, null);
|
||||
new NetworkVO(id, trafficType, mode, broadcastDomainType, networkOfferingId, domainId, accountId, related, null, null, networkDomain,
|
||||
Network.GuestType.Shared, zoneId, null, null, specifyIpRanges, null);
|
||||
network.setGuruName(guruNames.get(network.getTrafficType()));
|
||||
network.setDns1(zone.getDns1());
|
||||
network.setDns2(zone.getDns2());
|
||||
|
|
|
|||
|
|
@ -150,7 +150,7 @@ public class Link {
|
|||
pkgBuf.clear();
|
||||
engResult = sslEngine.wrap(buffers, pkgBuf);
|
||||
if (engResult.getHandshakeStatus() != HandshakeStatus.FINISHED && engResult.getHandshakeStatus() != HandshakeStatus.NOT_HANDSHAKING &&
|
||||
engResult.getStatus() != SSLEngineResult.Status.OK) {
|
||||
engResult.getStatus() != SSLEngineResult.Status.OK) {
|
||||
throw new IOException("SSL: SSLEngine return bad result! " + engResult);
|
||||
}
|
||||
|
||||
|
|
@ -276,7 +276,7 @@ public class Link {
|
|||
appBuf = ByteBuffer.allocate(sslSession.getApplicationBufferSize() + 40);
|
||||
engResult = _sslEngine.unwrap(_readBuffer, appBuf);
|
||||
if (engResult.getHandshakeStatus() != HandshakeStatus.FINISHED && engResult.getHandshakeStatus() != HandshakeStatus.NOT_HANDSHAKING &&
|
||||
engResult.getStatus() != SSLEngineResult.Status.OK) {
|
||||
engResult.getStatus() != SSLEngineResult.Status.OK) {
|
||||
throw new IOException("SSL: SSLEngine return bad result! " + engResult);
|
||||
}
|
||||
if (remaining == _readBuffer.remaining()) {
|
||||
|
|
@ -404,10 +404,9 @@ public class Link {
|
|||
KeyStore ks = KeyStore.getInstance("JKS");
|
||||
TrustManager[] tms;
|
||||
|
||||
if (!isClient) {
|
||||
File confFile = PropertiesUtil.findConfigFile("db.properties");
|
||||
if (null != confFile && !isClient) {
|
||||
char[] passphrase = "vmops.com".toCharArray();
|
||||
File confFile = PropertiesUtil.findConfigFile("db.properties");
|
||||
/* This line may throw a NPE, but that's due to fail to find db.properities, meant some bugs in the other places */
|
||||
String confPath = confFile.getParent();
|
||||
String keystorePath = confPath + "/cloud.keystore";
|
||||
if (new File(keystorePath).exists()) {
|
||||
|
|
|
|||
Loading…
Reference in New Issue