update without decrypt doesn't work

This commit is contained in:
Daan Hoogland 2018-06-08 12:55:05 +02:00
parent 5fcadbcc62
commit 384bce1a97
2 changed files with 61 additions and 13 deletions

View File

@ -91,15 +91,3 @@ INSERT IGNORE INTO `cloud`.`guest_os_hypervisor` (uuid,hypervisor_type, hypervis
-- XCP-NG 7.4
INSERT IGNORE INTO `cloud`.`hypervisor_capabilities`(uuid, hypervisor_type, hypervisor_version, max_guests_limit, max_data_volumes_limit, storage_motion_supported) values (UUID(), 'XenServer', 'XCP-ng 7.4.0', 500, 13, 1);
INSERT IGNORE INTO `cloud`.`guest_os_hypervisor` (uuid,hypervisor_type, hypervisor_version, guest_os_name, guest_os_id, created, is_user_defined) SELECT UUID(),'Xenserver', 'XCP-ng 7.4.0', guest_os_name, guest_os_id, utc_timestamp(), 0 FROM `cloud`.`guest_os_hypervisor` WHERE hypervisor_type='Xenserver' AND hypervisor_version='7.4.0';
UPDATE `cloud`.`configuration` SET `category`='Advanced' WHERE `name`='ldap.basedn';
UPDATE `cloud`.`configuration` SET `category`='Advanced' WHERE `name`='ldap.bind.principal';
UPDATE `cloud`.`configuration` SET `category`='Advanced' WHERE `name`='ldap.email.attribute';
UPDATE `cloud`.`configuration` SET `category`='Advanced' WHERE `name`='ldap.firstname.attribute';
UPDATE `cloud`.`configuration` SET `category`='Advanced' WHERE `name`='ldap.group.object';
UPDATE `cloud`.`configuration` SET `category`='Advanced' WHERE `name`='ldap.group.user.uniquemember';
UPDATE `cloud`.`configuration` SET `category`='Advanced' WHERE `name`='ldap.lastname.attribute';
UPDATE `cloud`.`configuration` SET `category`='Advanced' WHERE `name`='ldap.search.group.principle';
UPDATE `cloud`.`configuration` SET `category`='Advanced' WHERE `name`='ldap.truststore';
UPDATE `cloud`.`configuration` SET `category`='Advanced' WHERE `name`='ldap.user.object';
UPDATE `cloud`.`configuration` SET `category`='Advanced' WHERE `name`='ldap.username.attribute';

View File

@ -19,7 +19,7 @@
package com.cloud.upgrade.dao;
import java.io.InputStream;
import java.io.*;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
@ -29,6 +29,7 @@ import java.util.HashSet;
import java.util.Map;
import java.util.Set;
import com.cloud.utils.crypt.*;
import org.apache.log4j.Logger;
import com.cloud.hypervisor.Hypervisor;
@ -66,6 +67,65 @@ public class Upgrade41100to41110 implements DbUpgrade {
@Override
public void performDataMigration(Connection conn) {
updateSystemVmTemplates(conn);
markUnnecessarySecureConfigsAsUnsecure(conn);
}
private void markUnnecessarySecureConfigsAsUnsecure(Connection conn) {
String[] unsecureItems = new String[] {
"ldap.basedn",
"ldap.bind.principal",
"ldap.email.attribute",
"ldap.firstname.attribute",
"ldap.group.object",
"ldap.group.user.uniquemember",
"ldap.lastname.attribute",
"ldap.search.group.principle",
"ldap.truststore",
"ldap.user.object",
"ldap.username.attribute"
};
for (String name : unsecureItems) {
uncrypt(conn, name);
}
}
/**
* if encrypted, decrypt the ldap hostname and port and then update as they are not encrypted now.
*/
private void uncrypt(Connection conn, String name)
{
String value = null;
try (
PreparedStatement prepSelStmt = conn.prepareStatement("SELECT conf.category,conf.value FROM `cloud`.`configuration` conf WHERE conf.name= ?");
) {
prepSelStmt.setString(1,name);
try (
ResultSet resultSet = prepSelStmt.executeQuery();
) {
if (resultSet.next()) {
if ("Secure".equals(resultSet.getString(1))) {
value = DBEncryptionUtil.decrypt(resultSet.getString(2));
try (
PreparedStatement prepUpdStmt= conn.prepareStatement("UPDATE `cloud`.`configuration` set category = 'Advanced', value = ? where name is ?" );
) {
prepUpdStmt.setString(1, value);
prepUpdStmt.setString(2, name);
prepUpdStmt.execute();
} catch (SQLException e) {
if (LOG.isInfoEnabled()) {
LOG.info("failed to update configuration item '"+name+"' with value '"+value+"'");
if (LOG.isDebugEnabled()) {
LOG.debug("");
}
}
}
}
}
}
} catch (SQLException e) {
throw new CloudRuntimeException("failed to update configuration item '"+name+"' with value '"+value+"'", e);
}
}
@SuppressWarnings("serial")