Skip to content

Commit

Permalink
Fix NPE while checking for user data provider (#10255)
Browse files Browse the repository at this point in the history
  • Loading branch information
sureshanaparti authored Feb 4, 2025
1 parent c1bc57b commit 238d0c5
Show file tree
Hide file tree
Showing 3 changed files with 27 additions and 5 deletions.
6 changes: 5 additions & 1 deletion server/src/main/java/com/cloud/network/NetworkModelImpl.java
Original file line number Diff line number Diff line change
Expand Up @@ -935,8 +935,12 @@ public Nic getDefaultNic(long vmId) {

@Override
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) {
s_logger.debug("Network " + network + " doesn't support service " + Service.UserData.getName());
return null;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -320,8 +320,12 @@ public boolean postStateTransitionEvent(StateMachine2.Transition<VirtualMachine.
try {
final Network network = _networkMgr.getNetwork(nic.getNetworkId());
final UserDataServiceProvider userDataUpdateProvider = _networkModel.getUserDataUpdateProvider(network);
if (userDataUpdateProvider == null) {
LOG.warn("Failed to get user data provider");
return false;
}
final Provider provider = userDataUpdateProvider.getProvider();
if (provider.equals(Provider.ConfigDrive)) {
if (Provider.ConfigDrive.equals(provider)) {
try {
return deleteConfigDriveIso(vm);
} catch (ResourceUnavailableException e) {
Expand All @@ -336,7 +340,12 @@ public boolean postStateTransitionEvent(StateMachine2.Transition<VirtualMachine.

@Override
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()));
try {
if (isConfigDriveIsoOnHostCache(vm.getId())) {
Expand Down Expand Up @@ -384,7 +393,11 @@ public void commitMigration(NicProfile nic, Network network, VirtualMachineProfi
}

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;
for (DiskTO disk : vm.getDisks()) {
if (disk.getType() == Volume.Type.ISO && disk.getPath() != null && disk.getPath().contains("configdrive")) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -767,7 +767,12 @@ public boolean saveSSHKey(final Network network, final NicProfile nic, final Vir

@Override
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();
UserVmVO destVm = _userVmDao.findById(uvm.getId());
VirtualMachineProfile profile = null;
Expand Down

0 comments on commit 238d0c5

Please sign in to comment.