mirror of
https://github.com/apache/cloudstack.git
synced 2025-10-26 08:42:29 +01:00
Fix NPE while checking for user data provider (#10255)
This commit is contained in:
parent
c1bc57b844
commit
238d0c5e30
@ -935,8 +935,12 @@ public class NetworkModelImpl extends ManagerBase implements NetworkModel, Confi
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public UserDataServiceProvider getUserDataUpdateProvider(Network network) {
|
public UserDataServiceProvider getUserDataUpdateProvider(Network network) {
|
||||||
String userDataProvider = _ntwkSrvcDao.getProviderForServiceInNetwork(network.getId(), Service.UserData);
|
if (network == null) {
|
||||||
|
s_logger.warn("No network details, can't fetch user data provider");
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
String userDataProvider = _ntwkSrvcDao.getProviderForServiceInNetwork(network.getId(), Service.UserData);
|
||||||
if (userDataProvider == null) {
|
if (userDataProvider == null) {
|
||||||
s_logger.debug("Network " + network + " doesn't support service " + Service.UserData.getName());
|
s_logger.debug("Network " + network + " doesn't support service " + Service.UserData.getName());
|
||||||
return null;
|
return null;
|
||||||
|
|||||||
@ -320,8 +320,12 @@ public class ConfigDriveNetworkElement extends AdapterBase implements NetworkEle
|
|||||||
try {
|
try {
|
||||||
final Network network = _networkMgr.getNetwork(nic.getNetworkId());
|
final Network network = _networkMgr.getNetwork(nic.getNetworkId());
|
||||||
final UserDataServiceProvider userDataUpdateProvider = _networkModel.getUserDataUpdateProvider(network);
|
final UserDataServiceProvider userDataUpdateProvider = _networkModel.getUserDataUpdateProvider(network);
|
||||||
|
if (userDataUpdateProvider == null) {
|
||||||
|
LOG.warn("Failed to get user data provider");
|
||||||
|
return false;
|
||||||
|
}
|
||||||
final Provider provider = userDataUpdateProvider.getProvider();
|
final Provider provider = userDataUpdateProvider.getProvider();
|
||||||
if (provider.equals(Provider.ConfigDrive)) {
|
if (Provider.ConfigDrive.equals(provider)) {
|
||||||
try {
|
try {
|
||||||
return deleteConfigDriveIso(vm);
|
return deleteConfigDriveIso(vm);
|
||||||
} catch (ResourceUnavailableException e) {
|
} catch (ResourceUnavailableException e) {
|
||||||
@ -336,7 +340,12 @@ public class ConfigDriveNetworkElement extends AdapterBase implements NetworkEle
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean prepareMigration(NicProfile nic, Network network, VirtualMachineProfile vm, DeployDestination dest, ReservationContext context) {
|
public boolean prepareMigration(NicProfile nic, Network network, VirtualMachineProfile vm, DeployDestination dest, ReservationContext context) {
|
||||||
if (_networkModel.getUserDataUpdateProvider(network).getProvider().equals(Provider.ConfigDrive)) {
|
final UserDataServiceProvider userDataUpdateProvider = _networkModel.getUserDataUpdateProvider(network);
|
||||||
|
if (userDataUpdateProvider == null) {
|
||||||
|
LOG.warn("Failed to prepare for migration, can't get user data provider");
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
if (Provider.ConfigDrive.equals(userDataUpdateProvider.getProvider())) {
|
||||||
LOG.trace(String.format("[prepareMigration] for vm: %s", vm.getInstanceName()));
|
LOG.trace(String.format("[prepareMigration] for vm: %s", vm.getInstanceName()));
|
||||||
try {
|
try {
|
||||||
if (isConfigDriveIsoOnHostCache(vm.getId())) {
|
if (isConfigDriveIsoOnHostCache(vm.getId())) {
|
||||||
@ -384,7 +393,11 @@ public class ConfigDriveNetworkElement extends AdapterBase implements NetworkEle
|
|||||||
}
|
}
|
||||||
|
|
||||||
private void recreateConfigDriveIso(NicProfile nic, Network network, VirtualMachineProfile vm, DeployDestination dest) throws ResourceUnavailableException {
|
private void recreateConfigDriveIso(NicProfile nic, Network network, VirtualMachineProfile vm, DeployDestination dest) throws ResourceUnavailableException {
|
||||||
if (nic.isDefaultNic() && _networkModel.getUserDataUpdateProvider(network).getProvider().equals(Provider.ConfigDrive)) {
|
final UserDataServiceProvider userDataUpdateProvider = _networkModel.getUserDataUpdateProvider(network);
|
||||||
|
if (userDataUpdateProvider == null) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
if (nic.isDefaultNic() && Provider.ConfigDrive.equals(userDataUpdateProvider.getProvider())) {
|
||||||
DiskTO diskToUse = null;
|
DiskTO diskToUse = null;
|
||||||
for (DiskTO disk : vm.getDisks()) {
|
for (DiskTO disk : vm.getDisks()) {
|
||||||
if (disk.getType() == Volume.Type.ISO && disk.getPath() != null && disk.getPath().contains("configdrive")) {
|
if (disk.getType() == Volume.Type.ISO && disk.getPath() != null && disk.getPath().contains("configdrive")) {
|
||||||
|
|||||||
@ -767,7 +767,12 @@ NetworkMigrationResponder, AggregatedCommandExecutor, RedundantResource, DnsServ
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean saveHypervisorHostname(NicProfile nicProfile, Network network, VirtualMachineProfile vm, DeployDestination dest) throws ResourceUnavailableException {
|
public boolean saveHypervisorHostname(NicProfile nicProfile, Network network, VirtualMachineProfile vm, DeployDestination dest) throws ResourceUnavailableException {
|
||||||
if (_networkModel.getUserDataUpdateProvider(network).getProvider().equals(Provider.VirtualRouter) && vm.getVirtualMachine().getType() == VirtualMachine.Type.User) {
|
final UserDataServiceProvider userDataUpdateProvider = _networkModel.getUserDataUpdateProvider(network);
|
||||||
|
if (userDataUpdateProvider == null) {
|
||||||
|
s_logger.warn("Failed to update hypervisor host details, can't get user data provider");
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
if (Provider.VirtualRouter.equals(userDataUpdateProvider.getProvider()) && vm.getVirtualMachine().getType() == VirtualMachine.Type.User) {
|
||||||
VirtualMachine uvm = vm.getVirtualMachine();
|
VirtualMachine uvm = vm.getVirtualMachine();
|
||||||
UserVmVO destVm = _userVmDao.findById(uvm.getId());
|
UserVmVO destVm = _userVmDao.findById(uvm.getId());
|
||||||
VirtualMachineProfile profile = null;
|
VirtualMachineProfile profile = null;
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user