Merge remote-tracking branch 'origin/4.18'

This commit is contained in:
Rohit Yadav 2023-04-05 12:04:48 +05:30
commit 0d6674e3b3
5 changed files with 33 additions and 18 deletions

View File

@ -34,8 +34,6 @@ import java.util.TreeSet;
import javax.inject.Inject;
import javax.naming.ConfigurationException;
import com.cloud.domain.Domain;
import com.cloud.vm.VirtualMachineManager;
import org.apache.cloudstack.acl.ControlledEntity.ACLType;
import org.apache.cloudstack.context.CallContext;
import org.apache.cloudstack.engine.orchestration.service.NetworkOrchestrationService;
@ -60,6 +58,7 @@ import com.cloud.dc.VlanVO;
import com.cloud.dc.dao.DataCenterDao;
import com.cloud.dc.dao.PodVlanMapDao;
import com.cloud.dc.dao.VlanDao;
import com.cloud.domain.Domain;
import com.cloud.domain.DomainVO;
import com.cloud.domain.dao.DomainDao;
import com.cloud.exception.InsufficientAddressCapacityException;
@ -142,6 +141,7 @@ import com.cloud.vm.NicVO;
import com.cloud.vm.VMInstanceVO;
import com.cloud.vm.VirtualMachine;
import com.cloud.vm.VirtualMachine.Type;
import com.cloud.vm.VirtualMachineManager;
import com.cloud.vm.dao.NicDao;
import com.cloud.vm.dao.NicSecondaryIpDao;
import com.cloud.vm.dao.VMInstanceDao;
@ -2674,10 +2674,8 @@ public class NetworkModelImpl extends ManagerBase implements NetworkModel, Confi
String[] keyValuePairs = userDataDetails.split(",");
for(String pair : keyValuePairs)
{
String[] entry = pair.split("=");
String key = entry[0].trim();
String value = entry[1].trim();
vmData.add(new String[]{METATDATA_DIR, key, StringUtils.unicodeEscape(value)});
final Pair<String, String> keyValue = StringUtils.getKeyValuePairWithSeparator(pair, "=");
vmData.add(new String[]{METATDATA_DIR, keyValue.first(), StringUtils.unicodeEscape(keyValue.second())});
}
}
}

View File

@ -23,7 +23,6 @@ import java.util.Set;
import javax.inject.Inject;
import com.cloud.host.HostVO;
import org.apache.cloudstack.engine.subsystem.api.storage.DataStore;
import org.apache.cloudstack.engine.subsystem.api.storage.DataStoreManager;
import org.apache.cloudstack.engine.subsystem.api.storage.EndPoint;
@ -49,6 +48,7 @@ import com.cloud.exception.ConcurrentOperationException;
import com.cloud.exception.InsufficientCapacityException;
import com.cloud.exception.ResourceUnavailableException;
import com.cloud.exception.UnsupportedServiceException;
import com.cloud.host.HostVO;
import com.cloud.host.dao.HostDao;
import com.cloud.hypervisor.HypervisorGuruManager;
import com.cloud.network.Network;
@ -69,6 +69,8 @@ import com.cloud.storage.VolumeVO;
import com.cloud.storage.dao.GuestOSCategoryDao;
import com.cloud.storage.dao.GuestOSDao;
import com.cloud.storage.dao.VolumeDao;
import com.cloud.utils.Pair;
import com.cloud.utils.StringUtils;
import com.cloud.utils.component.AdapterBase;
import com.cloud.utils.crypt.DBEncryptionUtil;
import com.cloud.utils.db.EntityManager;
@ -624,8 +626,8 @@ public class ConfigDriveNetworkElement extends AdapterBase implements NetworkEle
String[] keyValuePairs = userDataDetails.split(",");
for(String pair : keyValuePairs)
{
String[] entry = pair.split("=");
customUserdataParamMap.put(entry[0].trim(), entry[1].trim());
final Pair<String, String> keyValue = StringUtils.getKeyValuePairWithSeparator(pair, "=");
customUserdataParamMap.put(keyValue.first(), keyValue.second());
}
}

View File

@ -27,11 +27,6 @@ import java.util.Set;
import javax.inject.Inject;
import com.cloud.agent.api.routing.UpdateNetworkCommand;
import com.cloud.network.dao.VirtualRouterProviderDao;
import com.cloud.network.vpc.VpcVO;
import com.cloud.domain.Domain;
import com.cloud.domain.dao.DomainDao;
import org.apache.cloudstack.api.ApiConstants;
import org.apache.cloudstack.engine.orchestration.service.NetworkOrchestrationService;
import org.apache.cloudstack.framework.config.dao.ConfigurationDao;
@ -60,6 +55,7 @@ import com.cloud.agent.api.routing.SetSourceNatCommand;
import com.cloud.agent.api.routing.SetStaticNatRulesCommand;
import com.cloud.agent.api.routing.SetStaticRouteCommand;
import com.cloud.agent.api.routing.Site2SiteVpnCfgCommand;
import com.cloud.agent.api.routing.UpdateNetworkCommand;
import com.cloud.agent.api.routing.VmDataCommand;
import com.cloud.agent.api.routing.VpnUsersCfgCommand;
import com.cloud.agent.api.to.DhcpTO;
@ -78,6 +74,8 @@ import com.cloud.dc.DataCenter.NetworkType;
import com.cloud.dc.DataCenterVO;
import com.cloud.dc.dao.DataCenterDao;
import com.cloud.dc.dao.VlanDao;
import com.cloud.domain.Domain;
import com.cloud.domain.dao.DomainDao;
import com.cloud.host.Host;
import com.cloud.host.dao.HostDao;
import com.cloud.hypervisor.Hypervisor;
@ -105,6 +103,7 @@ import com.cloud.network.dao.Site2SiteCustomerGatewayDao;
import com.cloud.network.dao.Site2SiteCustomerGatewayVO;
import com.cloud.network.dao.Site2SiteVpnGatewayDao;
import com.cloud.network.dao.Site2SiteVpnGatewayVO;
import com.cloud.network.dao.VirtualRouterProviderDao;
import com.cloud.network.dao.VpnUserDao;
import com.cloud.network.lb.LoadBalancingRule;
import com.cloud.network.lb.LoadBalancingRule.LbDestination;
@ -120,6 +119,7 @@ import com.cloud.network.vpc.PrivateIpAddress;
import com.cloud.network.vpc.StaticRouteProfile;
import com.cloud.network.vpc.Vpc;
import com.cloud.network.vpc.VpcGateway;
import com.cloud.network.vpc.VpcVO;
import com.cloud.network.vpc.dao.VpcDao;
import com.cloud.offering.NetworkOffering;
import com.cloud.offerings.NetworkOfferingVO;
@ -1269,10 +1269,8 @@ public class CommandSetupHelper {
String[] keyValuePairs = userDataDetails.split(",");
for(String pair : keyValuePairs)
{
String[] entry = pair.split("=");
String key = entry[0].trim();
String value = entry[1].trim();
cmd.addVmData("metadata", key, value);
final Pair<String, String> keyValue = StringUtils.getKeyValuePairWithSeparator(pair, "=");
cmd.addVmData("metadata", keyValue.first(), keyValue.second());
}
}
}

View File

@ -275,4 +275,11 @@ public class StringUtils {
public static String toCSVList(final List<String> csvList) {
return org.apache.commons.lang3.StringUtils.defaultString(org.apache.commons.lang3.StringUtils.join(csvList, ","));
}
public static Pair<String, String> getKeyValuePairWithSeparator(String keyValuePair, String separator) {
final int index = keyValuePair.indexOf(separator);
final String key = keyValuePair.substring(0, index);
final String value = keyValuePair.substring(index + 1);
return new Pair<>(key.trim(), value.trim());
}
}

View File

@ -252,4 +252,14 @@ public class StringUtilsTest {
String output = StringUtils.toCSVList(Arrays.asList(input.split(",")));
assertTrue(input.equals(output));
}
@Test
public void testGetKeyValuePairWithSeparator() {
String key = "ssh";
String value = "ABCD==";
String kp = String.format("%s=%s", key, value);
Pair<String, String> output = StringUtils.getKeyValuePairWithSeparator(kp, "=");
assertEquals(key, output.first());
assertEquals(value, output.second());
}
}