From f5e665cd634aaadb6316c3954e18b99c0212665f Mon Sep 17 00:00:00 2001 From: Rohit Yadav Date: Fri, 7 May 2021 00:03:16 +0530 Subject: [PATCH 1/3] server: NPE may cause management server to not start (#5001) This NPE may happen when a VM is marked removed in the DB but not its nics on a shared network. This can usually happen due to a failed expunged VM or when an admin manually marks a VM as removed in DB but does not cleanup the nics/network resources. Signed-off-by: Rohit Yadav --- server/src/main/java/com/cloud/vm/UserVmManagerImpl.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/server/src/main/java/com/cloud/vm/UserVmManagerImpl.java b/server/src/main/java/com/cloud/vm/UserVmManagerImpl.java index 04de128ac2b..b4ef74f92f5 100644 --- a/server/src/main/java/com/cloud/vm/UserVmManagerImpl.java +++ b/server/src/main/java/com/cloud/vm/UserVmManagerImpl.java @@ -2232,7 +2232,7 @@ public class UserVmManagerImpl extends ManagerBase implements UserVmManager, Vir VMInstanceVO vmInstance = _vmInstanceDao.findById(vmId); // only load running vms. For stopped vms get loaded on starting - if (vmInstance.getState() == State.Running) { + if (vmInstance != null && vmInstance.getState() == State.Running) { VmAndCountDetails vmAndCount = new VmAndCountDetails(vmId, VmIpFetchTrialMax.value()); vmIdCountMap.put(nicId, vmAndCount); } From 1eea9c59394ce1f8d78b07b8a8e9c2bc9fe6ef18 Mon Sep 17 00:00:00 2001 From: Abhishek Kumar Date: Fri, 7 May 2021 16:28:16 +0530 Subject: [PATCH 2/3] ui: add tooltips for actions in tab (#4842) Adds tooltips for buttons in tabs Signed-off-by: Abhishek Kumar --- ui/src/components/view/DetailSettings.vue | 30 ++--- ui/src/components/view/InfoCard.vue | 66 +++++------ ui/src/components/view/ListView.vue | 37 +++--- ui/src/components/view/SearchView.vue | 4 +- ui/src/components/view/SettingsTab.vue | 29 ++--- ui/src/components/view/TooltipButton.vue | 100 +++++++++++++++++ ui/src/views/compute/InstanceTab.vue | 105 ++++++++---------- .../views/compute/backup/BackupSchedule.vue | 24 ++-- ui/src/views/iam/RolePermissionTab.vue | 25 ++--- ui/src/views/iam/RuleDelete.vue | 24 ++-- ui/src/views/iam/SSLCertificateTab.vue | 37 +++--- ui/src/views/image/IsoZones.vue | 14 ++- ui/src/views/image/TemplateZones.vue | 34 +++--- .../views/infra/network/DedicatedVLANTab.vue | 6 +- .../infra/network/IpRangesTabManagement.vue | 20 ++-- .../views/infra/network/IpRangesTabPublic.vue | 52 +++++---- .../infra/network/IpRangesTabStorage.vue | 19 ++-- .../network/providers/ProviderListView.vue | 12 +- .../views/infra/zone/IpAddressRangeForm.vue | 7 +- .../ZoneWizardPhysicalNetworkSetupStep.vue | 19 ++-- ui/src/views/network/AclListRulesTab.vue | 10 +- ui/src/views/network/EgressRulesTab.vue | 6 +- ui/src/views/network/FirewallRules.vue | 12 +- ui/src/views/network/GuestIpRanges.vue | 30 +++-- .../network/IngressEgressRuleConfigure.vue | 13 ++- .../views/network/InternalLBAssignedVmTab.vue | 8 +- ui/src/views/network/IpAddressesTab.vue | 8 +- ui/src/views/network/LoadBalancing.vue | 14 ++- ui/src/views/network/PortForwarding.vue | 12 +- ui/src/views/network/StaticRoutesTab.vue | 8 +- ui/src/views/project/AccountsTab.vue | 65 +++++------ ui/src/views/project/InvitationsTemplate.vue | 40 +++---- .../project/iam/ProjectRolePermissionTab.vue | 23 ++-- ui/src/views/project/iam/ProjectRoleTab.vue | 78 ++++++------- ui/src/views/storage/FormSchedule.vue | 12 +- ui/src/views/storage/ScheduledSnapshots.vue | 24 ++-- ui/src/views/storage/TakeSnapshot.vue | 12 +- 37 files changed, 561 insertions(+), 478 deletions(-) create mode 100644 ui/src/components/view/TooltipButton.vue diff --git a/ui/src/components/view/DetailSettings.vue b/ui/src/components/view/DetailSettings.vue index a657dd06890..9bb72fffca4 100644 --- a/ui/src/components/view/DetailSettings.vue +++ b/ui/src/components/view/DetailSettings.vue @@ -52,18 +52,8 @@ :dataSource="detailOptions[newKey]" :placeholder="$t('label.value')" @change="e => onAddInputChange(e, 'newValue')" /> - - - - - - - - + +

{{ $t(error) }}

@@ -90,14 +80,10 @@ slot="actions" v-if="!disableSettings && 'updateTemplate' in $store.getters.apis && 'updateVirtualMachine' in $store.getters.apis && isAdminOrOwner() && allowEditOfDetail(item.name)"> - - - - - - - + + @@ -113,7 +99,7 @@ :cancelText="$t('label.no')" placement="left" > - + @@ -123,8 +109,10 @@ + + diff --git a/ui/src/views/compute/InstanceTab.vue b/ui/src/views/compute/InstanceTab.vue index 8ad259b290a..1a169d756c7 100644 --- a/ui/src/views/compute/InstanceTab.vue +++ b/ui/src/views/compute/InstanceTab.vue @@ -67,61 +67,47 @@ - - - - - - - - - - - - - - - - - - - - + + + + + + + + @@ -251,9 +237,10 @@ :okText="$t('label.yes')" :cancelText="$t('label.no')" > - {{ ip.ipaddress }} @@ -274,6 +261,7 @@ import DetailsTab from '@/components/view/DetailsTab' import DetailSettings from '@/components/view/DetailSettings' import NicsTable from '@/views/network/NicsTable' import ListResourceTable from '@/components/view/ListResourceTable' +import TooltipButton from '@/components/view/TooltipButton' export default { name: 'InstanceTab', @@ -283,7 +271,8 @@ export default { DetailSettings, NicsTable, Status, - ListResourceTable + ListResourceTable, + TooltipButton }, mixins: [mixinDevice], props: { diff --git a/ui/src/views/compute/backup/BackupSchedule.vue b/ui/src/views/compute/backup/BackupSchedule.vue index daf31cc31dc..0c31e86c26c 100644 --- a/ui/src/views/compute/backup/BackupSchedule.vue +++ b/ui/src/views/compute/backup/BackupSchedule.vue @@ -58,18 +58,14 @@ @@ -78,9 +74,13 @@