mirror of https://github.com/apache/cloudstack.git
server: fix userdatadetails parsing (#245)
Fixes #231 Signed-off-by: Abhishek Kumar <abhishek.mrt22@gmail.com>
This commit is contained in:
parent
14e96552ba
commit
1cf60d30b5
|
|
@ -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;
|
||||
|
|
@ -58,6 +56,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;
|
||||
|
|
@ -116,6 +115,7 @@ import com.cloud.user.AccountVO;
|
|||
import com.cloud.user.DomainManager;
|
||||
import com.cloud.user.User;
|
||||
import com.cloud.user.dao.AccountDao;
|
||||
import com.cloud.utils.Pair;
|
||||
import com.cloud.utils.StringUtils;
|
||||
import com.cloud.utils.component.AdapterBase;
|
||||
import com.cloud.utils.component.ManagerBase;
|
||||
|
|
@ -134,6 +134,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;
|
||||
|
|
@ -2524,10 +2525,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())});
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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());
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -26,14 +26,6 @@ import java.util.Map;
|
|||
|
||||
import javax.inject.Inject;
|
||||
|
||||
import com.cloud.configuration.ConfigurationManager;
|
||||
import com.cloud.domain.Domain;
|
||||
import com.cloud.domain.dao.DomainDao;
|
||||
import com.cloud.hypervisor.Hypervisor;
|
||||
import com.cloud.network.dao.NetworkDetailVO;
|
||||
import com.cloud.network.dao.NetworkDetailsDao;
|
||||
import com.cloud.offerings.dao.NetworkOfferingDetailsDao;
|
||||
import com.cloud.vm.VmDetailConstants;
|
||||
import org.apache.cloudstack.api.ApiConstants;
|
||||
import org.apache.cloudstack.engine.orchestration.service.NetworkOrchestrationService;
|
||||
import org.apache.cloudstack.framework.config.dao.ConfigurationDao;
|
||||
|
|
@ -73,13 +65,17 @@ import com.cloud.agent.api.to.PortForwardingRuleTO;
|
|||
import com.cloud.agent.api.to.StaticNatRuleTO;
|
||||
import com.cloud.agent.manager.Commands;
|
||||
import com.cloud.configuration.Config;
|
||||
import com.cloud.configuration.ConfigurationManager;
|
||||
import com.cloud.dc.DataCenter;
|
||||
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;
|
||||
import com.cloud.network.IpAddress;
|
||||
import com.cloud.network.Network;
|
||||
import com.cloud.network.Network.Provider;
|
||||
|
|
@ -94,9 +90,11 @@ import com.cloud.network.VpnUser;
|
|||
import com.cloud.network.VpnUserVO;
|
||||
import com.cloud.network.dao.FirewallRulesDao;
|
||||
import com.cloud.network.dao.IPAddressDao;
|
||||
import com.cloud.network.dao.NetworkDao;
|
||||
import com.cloud.network.dao.NetworkVO;
|
||||
import com.cloud.network.dao.IPAddressVO;
|
||||
import com.cloud.network.dao.NetworkDao;
|
||||
import com.cloud.network.dao.NetworkDetailVO;
|
||||
import com.cloud.network.dao.NetworkDetailsDao;
|
||||
import com.cloud.network.dao.NetworkVO;
|
||||
import com.cloud.network.dao.Site2SiteCustomerGatewayDao;
|
||||
import com.cloud.network.dao.Site2SiteCustomerGatewayVO;
|
||||
import com.cloud.network.dao.Site2SiteVpnGatewayDao;
|
||||
|
|
@ -120,6 +118,7 @@ import com.cloud.network.vpc.dao.VpcDao;
|
|||
import com.cloud.offering.NetworkOffering;
|
||||
import com.cloud.offerings.NetworkOfferingVO;
|
||||
import com.cloud.offerings.dao.NetworkOfferingDao;
|
||||
import com.cloud.offerings.dao.NetworkOfferingDetailsDao;
|
||||
import com.cloud.service.dao.ServiceOfferingDao;
|
||||
import com.cloud.user.Account;
|
||||
import com.cloud.uservm.UserVm;
|
||||
|
|
@ -136,6 +135,7 @@ import com.cloud.vm.UserVmVO;
|
|||
import com.cloud.vm.VirtualMachine;
|
||||
import com.cloud.vm.VirtualMachineManager;
|
||||
import com.cloud.vm.VirtualMachineProfile;
|
||||
import com.cloud.vm.VmDetailConstants;
|
||||
import com.cloud.vm.dao.DomainRouterDao;
|
||||
import com.cloud.vm.dao.NicDao;
|
||||
import com.cloud.vm.dao.NicIpAliasDao;
|
||||
|
|
@ -1135,10 +1135,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());
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -313,4 +313,11 @@ public class StringUtils {
|
|||
public static String toCSVList(final List<String> csvList) {
|
||||
return 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());
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -258,4 +258,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());
|
||||
}
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in New Issue