Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Fix NPE while checking for user data provider #10255

Merged
merged 2 commits into from
Feb 4, 2025
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
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 @@

@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;

Check warning on line 940 in server/src/main/java/com/cloud/network/NetworkModelImpl.java

View check run for this annotation

Codecov / codecov/patch

server/src/main/java/com/cloud/network/NetworkModelImpl.java#L939-L940

Added lines #L939 - L940 were not covered by tests
}

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 @@
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;

Check warning on line 325 in server/src/main/java/com/cloud/network/element/ConfigDriveNetworkElement.java

View check run for this annotation

Codecov / codecov/patch

server/src/main/java/com/cloud/network/element/ConfigDriveNetworkElement.java#L324-L325

Added lines #L324 - L325 were not covered by tests
}
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 @@

@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);

Check warning on line 343 in server/src/main/java/com/cloud/network/element/ConfigDriveNetworkElement.java

View check run for this annotation

Codecov / codecov/patch

server/src/main/java/com/cloud/network/element/ConfigDriveNetworkElement.java#L343

Added line #L343 was not covered by tests
if (userDataUpdateProvider == null) {
LOG.warn("Failed to prepare for migration, can't get user data provider");
return false;

Check warning on line 346 in server/src/main/java/com/cloud/network/element/ConfigDriveNetworkElement.java

View check run for this annotation

Codecov / codecov/patch

server/src/main/java/com/cloud/network/element/ConfigDriveNetworkElement.java#L345-L346

Added lines #L345 - L346 were not covered by tests
}
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 @@
}

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);

Check warning on line 396 in server/src/main/java/com/cloud/network/element/ConfigDriveNetworkElement.java

View check run for this annotation

Codecov / codecov/patch

server/src/main/java/com/cloud/network/element/ConfigDriveNetworkElement.java#L396

Added line #L396 was not covered by tests
if (userDataUpdateProvider == null) {
return;

Check warning on line 398 in server/src/main/java/com/cloud/network/element/ConfigDriveNetworkElement.java

View check run for this annotation

Codecov / codecov/patch

server/src/main/java/com/cloud/network/element/ConfigDriveNetworkElement.java#L398

Added line #L398 was not covered by tests
}
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 @@

@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);

Check warning on line 770 in server/src/main/java/com/cloud/network/element/VirtualRouterElement.java

View check run for this annotation

Codecov / codecov/patch

server/src/main/java/com/cloud/network/element/VirtualRouterElement.java#L770

Added line #L770 was not covered by tests
if (userDataUpdateProvider == null) {
s_logger.warn("Failed to update hypervisor host details, can't get user data provider");
return false;

Check warning on line 773 in server/src/main/java/com/cloud/network/element/VirtualRouterElement.java

View check run for this annotation

Codecov / codecov/patch

server/src/main/java/com/cloud/network/element/VirtualRouterElement.java#L772-L773

Added lines #L772 - L773 were not covered by tests
}
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
Loading