Bug 1850467 - [v2v] [api] VM import RHV to CNV invalid target network type should not crash the controller
Summary: [v2v] [api] VM import RHV to CNV invalid target network type should not cras...
Keywords:
Status: CLOSED ERRATA
Alias: None
Product: Container Native Virtualization (CNV)
Classification: Red Hat
Component: V2V
Version: 2.4.0
Hardware: Unspecified
OS: Unspecified
medium
medium
Target Milestone: ---
: 2.4.0
Assignee: Jakub Dzon
QA Contact: Amos Mastbaum
URL:
Whiteboard: [v2v]
Depends On:
Blocks:
TreeView+ depends on / blocked
 
Reported: 2020-06-24 11:35 UTC by Amos Mastbaum
Modified: 2020-07-28 19:10 UTC (History)
6 users (show)

Fixed In Version: v2.4.0-17
Doc Type: If docs needed, set a value
Doc Text:
Clone Of:
Environment:
Last Closed: 2020-07-28 19:10:39 UTC
Target Upstream Version: [v2v] RHV to CNV VM import: using invalid target network type should not crash the controller
Embargoed:


Attachments (Terms of Use)


Links
System ID Private Priority Status Summary Last Updated
Github kubevirt vm-import-operator pull 303 0 None closed Using pod network type as default when type is missing in the resource mapping 2020-07-05 05:45:11 UTC
Red Hat Product Errata RHSA-2020:3194 0 None None None 2020-07-28 19:10:50 UTC

Description Amos Mastbaum 2020-06-24 11:35:25 UTC
Created attachment 1698572 [details]
vmimport & resouremapping objects

Description of problem:

Using an invalid Network Mapping Target Type will crash the controller 

Version-Release number of selected component (if applicable):


How reproducible:
Always


Steps to Reproduce:
1. Create a vmimport using Network Binding with wrong target network type
2.
3.

Actual results:
The Import Controller crashes



Expected results:
The vmimport should not pass validation

Additional info:

1. vmimport & resourcemapping attached
2. controller log:

tester@puma55 amastbau]$ kubectl logs -n kubevirt-hyperconverged deploy/vm-import-controller -f
{"level":"info","ts":1592998029.416759,"logger":"cmd","msg":"Go Version: go1.12.17"}
{"level":"info","ts":1592998029.4172306,"logger":"cmd","msg":"Go OS/Arch: linux/amd64"}
{"level":"info","ts":1592998029.4173112,"logger":"cmd","msg":"Version of operator-sdk: v0.15.2"}
{"level":"info","ts":1592998029.418811,"logger":"leader","msg":"Trying to become the leader."}
{"level":"info","ts":1592998032.1241577,"logger":"leader","msg":"Found existing lock with my name. I was likely restarted."}
{"level":"info","ts":1592998032.1242495,"logger":"leader","msg":"Continuing as the leader."}
{"level":"info","ts":1592998034.797448,"logger":"controller-runtime.metrics","msg":"metrics server is starting to listen","addr":"0.0.0.0:8383"}
{"level":"info","ts":1592998034.7983565,"logger":"cmd","msg":"Registering Components."}
{"level":"info","ts":1592998043.0485554,"logger":"cmd","msg":"Could not create metrics Service","error":"failed to create or get service for metrics: &{{{%!w(string=) %!w(string=)} {%!w(string=) %!w(string=) %!w(string=) %!w(*int64=<nil>)} %!w(string=Failure) %!w(string=services \"vm-import-operator-metrics\" is forbidden: cannot set blockOwnerDeletion if an ownerReference refers to a resource you can't set finalizers on: , <nil>) %!w(v1.StatusReason=Forbidden) %!w(*v1.StatusDetails=&{vm-import-operator-metrics  services  [] 0}) %!w(int32=403)}}"}
{"level":"info","ts":1592998045.7049277,"logger":"cmd","msg":"Starting the Cmd."}
{"level":"info","ts":1592998045.7056153,"logger":"controller-runtime.manager","msg":"starting metrics server","path":"/metrics"}
{"level":"info","ts":1592998045.7056608,"logger":"controller-runtime.controller","msg":"Starting EventSource","controller":"virtualmachineimport-controller","source":"kind source: /, Kind="}
{"level":"info","ts":1592998045.8064594,"logger":"controller-runtime.controller","msg":"Starting EventSource","controller":"virtualmachineimport-controller","source":"kind source: /, Kind="}
{"level":"info","ts":1592998045.9077852,"logger":"controller-runtime.controller","msg":"Starting EventSource","controller":"virtualmachineimport-controller","source":"kind source: /, Kind="}
{"level":"info","ts":1592998046.0084708,"logger":"controller-runtime.controller","msg":"Starting Controller","controller":"virtualmachineimport-controller"}
{"level":"info","ts":1592998046.008649,"logger":"controller-runtime.controller","msg":"Starting workers","controller":"virtualmachineimport-controller","worker count":1}
{"level":"info","ts":1592998046.0087934,"logger":"controller_virtualmachineimport","msg":"Reconciling VirtualMachineImport","Request.Namespace":"amastbaum-rhv2cnv","Request.Name":"example-vmimport"}
{"level":"info","ts":1592998049.2315438,"logger":"validation","msg":"Validation information for amastbaum-rhv2cnv/example-vmimport: {vm.cpu_shares VM specifies CPU shares that should be available to it}"}
{"level":"info","ts":1592998049.23161,"logger":"validation","msg":"Validation information for amastbaum-rhv2cnv/example-vmimport: {vm.display.type VM uses spice display}"}
{"level":"info","ts":1592998049.2316308,"logger":"validation","msg":"Validation information for amastbaum-rhv2cnv/example-vmimport: {vm.high_availability.priority VM uses high availability priority: 1}"}
{"level":"info","ts":1592998049.2316406,"logger":"validation","msg":"Validation information for amastbaum-rhv2cnv/example-vmimport: {vm.memory_policy.ballooning VM enables memory ballooning}"}
{"level":"info","ts":1592998049.2316487,"logger":"validation","msg":"Validation information for amastbaum-rhv2cnv/example-vmimport: {vm.memory_policy.guaranteed VM specifies guaranteed memory: 536870912}"}
{"level":"info","ts":1592998049.2316816,"logger":"validation","msg":"Validation information for amastbaum-rhv2cnv/example-vmimport: {vm.migration VM has migration options specified}"}
{"level":"info","ts":1592998049.2316906,"logger":"validation","msg":"Validation information for amastbaum-rhv2cnv/example-vmimport: {vm.migration_downtime VM has migration downtime specified: -1}"}
{"level":"info","ts":1592998049.2317011,"logger":"validation","msg":"Validation information for amastbaum-rhv2cnv/example-vmimport: {vm.storage_error_resume_behaviour VM has storage error resume behaviour set: auto_resume}"}
{"level":"info","ts":1592998049.23171,"logger":"validation","msg":"Validation information for amastbaum-rhv2cnv/example-vmimport: {vm.graphic_consoles.protocol VM has non-VNC graphics console configured: spice}"}
{"level":"info","ts":1592998049.2317183,"logger":"validation","msg":"Validation information for amastbaum-rhv2cnv/example-vmimport: {vm.quota VM has quota with ID 767e9696-3e2c-49d6-815b-c5fa0eba20ab assigned}"}
{"level":"info","ts":1592998049.2317271,"logger":"validation","msg":"Validation information for amastbaum-rhv2cnv/example-vmimport: {nic.on_boot interface d4343a0b-8f3c-416c-841d-2087dcacca05 is not enabled on boot.}"}
{"level":"info","ts":1592998049.231769,"logger":"validation","msg":"Validation information for amastbaum-rhv2cnv/example-vmimport: {disk_attachment.disk.propagate_errors disk 206ffcea-705c-4037-99bb-508f2fc0c3b7 has propagate_errors configured: false}"}
{"level":"info","ts":1592998049.2444866,"logger":"controller_virtualmachineimport","msg":"Storing source VM status","Request.Namespace":"amastbaum-rhv2cnv","Request.Name":"example-vmimport","status":"down"}
{"level":"info","ts":1592998050.3612309,"logger":"controller_virtualmachineimport","msg":"No matching template was found for the virtual machine. Using empty VM definition","Request.Namespace":"amastbaum-rhv2cnv","Request.Name":"example-vmimport"}
{"level":"info","ts":1592998050.3973565,"logger":"controller_virtualmachineimport","msg":"Creating a new VM","Request.Namespace":"amastbaum-rhv2cnv","Request.Name":"example-vmimport","VM.Namespace":"amastbaum-rhv2cnv","VM.Name":"amastbau-testvm-testing123"}
{"level":"info","ts":1592998050.6674256,"logger":"controller-runtime.controller","msg":"Starting EventSource","controller":"virtualmachineimport-controller","source":"kind source: /, Kind="}
{"level":"info","ts":1592998051.207026,"logger":"controller_virtualmachineimport","msg":"Reconciling VirtualMachineImport","Request.Namespace":"amastbaum-rhv2cnv","Request.Name":"example-vmimport-2disks"}
{"level":"info","ts":1592998051.2072327,"logger":"controller_virtualmachineimport","msg":"Not running reconcile","Request.Namespace":"amastbaum-rhv2cnv","Request.Name":"example-vmimport-2disks"}
{"level":"info","ts":1592998051.207266,"logger":"controller_virtualmachineimport","msg":"Reconciling VirtualMachineImport","Request.Namespace":"default","Request.Name":"example-cirros"}
{"level":"info","ts":1592998051.2073877,"logger":"controller_virtualmachineimport","msg":"Not running reconcile","Request.Namespace":"default","Request.Name":"example-cirros"}
{"level":"info","ts":1592998051.207419,"logger":"controller_virtualmachineimport","msg":"Reconciling VirtualMachineImport","Request.Namespace":"amastbaum-rhv2cnv","Request.Name":"example-vmimport-2nics-xxx"}
{"level":"info","ts":1592998051.207787,"logger":"controller_virtualmachineimport","msg":"No need to fetch virtual machine - skipping","Request.Namespace":"amastbaum-rhv2cnv","Request.Name":"example-vmimport-2nics-xxx"}
{"level":"info","ts":1592998051.2079484,"logger":"controller_virtualmachineimport","msg":"VirtualMachineImport has already been validated positively. Skipping re-validation","Request.Namespace":"amastbaum-rhv2cnv","Request.Name":"example-vmimport-2nics-xxx"}
{"level":"info","ts":1592998052.1894908,"logger":"controller_virtualmachineimport","msg":"No matching template was found for the virtual machine. Using empty VM definition","Request.Namespace":"amastbaum-rhv2cnv","Request.Name":"example-vmimport-2nics-xxx"}
E0624 11:27:32.238622       1 runtime.go:78] Observed a panic: "invalid memory address or nil pointer dereference" (runtime error: invalid memory address or nil pointer dereference)
goroutine 1622 [running]:
k8s.io/apimachinery/pkg/util/runtime.logPanic(0x1e81e80, 0x384cff0)
	/src/vm-import-operator/vendor/k8s.io/apimachinery/pkg/util/runtime/runtime.go:74 +0xa3
k8s.io/apimachinery/pkg/util/runtime.HandleCrash(0x0, 0x0, 0x0)
	/src/vm-import-operator/vendor/k8s.io/apimachinery/pkg/util/runtime/runtime.go:48 +0x82
panic(0x1e81e80, 0x384cff0)
	/usr/local/go/src/runtime/panic.go:522 +0x1b5
github.com/kubevirt/vm-import-operator/pkg/providers/ovirt/mapper.(*OvirtMapper).mapNetworkType(...)
	/src/vm-import-operator/pkg/providers/ovirt/mapper/mapper.go:372
github.com/kubevirt/vm-import-operator/pkg/providers/ovirt/mapper.(*OvirtMapper).getNetworkForNic(0xc0014ee6c0, 0xc002dc05b0, 0x0, 0x0, 0x0, 0x0, 0x0)
	/src/vm-import-operator/pkg/providers/ovirt/mapper/mapper.go:360 +0x1f3
github.com/kubevirt/vm-import-operator/pkg/providers/ovirt/mapper.(*OvirtMapper).mapNetworks(0xc0014ee6c0, 0xc00379fe20, 0xc0014534d0, 0xc0014ebd60)
	/src/vm-import-operator/pkg/providers/ovirt/mapper/mapper.go:331 +0xba
github.com/kubevirt/vm-import-operator/pkg/providers/ovirt/mapper.(*OvirtMapper).MapVM(0xc0014ee6c0, 0xc001a2fb10, 0xc003d7aa80, 0x0, 0x0, 0x0)
	/src/vm-import-operator/pkg/providers/ovirt/mapper/mapper.go:172 +0x477
github.com/kubevirt/vm-import-operator/pkg/controller/virtualmachineimport.(*ReconcileVirtualMachineImport).createVM(0xc000893500, 0x2475480, 0xc002d5a000, 0xc000387ba0, 0x243aec0, 0xc0014ee6c0, 0x0, 0x2405180, 0xc000387ba0, 0x0)
	/src/vm-import-operator/pkg/controller/virtualmachineimport/virtualmachineimport_controller.go:429 +0x284
github.com/kubevirt/vm-import-operator/pkg/controller/virtualmachineimport.(*ReconcileVirtualMachineImport).Reconcile(0xc000893500, 0xc000b29560, 0x11, 0xc000b29540, 0x1a, 0x3868e00, 0x0, 0x0, 0x0)
	/src/vm-import-operator/pkg/controller/virtualmachineimport/virtualmachineimport_controller.go:250 +0x724
sigs.k8s.io/controller-runtime/pkg/internal/controller.(*Controller).reconcileHandler(0xc0001d0480, 0x1f06ce0, 0xc000565e00, 0x1f06c00)
	/src/vm-import-operator/vendor/sigs.k8s.io/controller-runtime/pkg/internal/controller/controller.go:256 +0x146
sigs.k8s.io/controller-runtime/pkg/internal/controller.(*Controller).processNextWorkItem(0xc0001d0480, 0xc000556c00)
	/src/vm-import-operator/vendor/sigs.k8s.io/controller-runtime/pkg/internal/controller/controller.go:232 +0xb5
sigs.k8s.io/controller-runtime/pkg/internal/controller.(*Controller).worker(0xc0001d0480)
	/src/vm-import-operator/vendor/sigs.k8s.io/controller-runtime/pkg/internal/controller/controller.go:211 +0x2b
k8s.io/apimachinery/pkg/util/wait.JitterUntil.func1(0xc0008200d0)
	/src/vm-import-operator/vendor/k8s.io/apimachinery/pkg/util/wait/wait.go:152 +0x54
k8s.io/apimachinery/pkg/util/wait.JitterUntil(0xc0008200d0, 0x3b9aca00, 0x0, 0x1, 0xc00009a420)
	/src/vm-import-operator/vendor/k8s.io/apimachinery/pkg/util/wait/wait.go:153 +0xf8
k8s.io/apimachinery/pkg/util/wait.Until(0xc0008200d0, 0x3b9aca00, 0xc00009a420)
	/src/vm-import-operator/vendor/k8s.io/apimachinery/pkg/util/wait/wait.go:88 +0x4d
created by sigs.k8s.io/controller-runtime/pkg/internal/controller.(*Controller).Start.func1
	/src/vm-import-operator/vendor/sigs.k8s.io/controller-runtime/pkg/internal/controller/controller.go:193 +0x326
panic: runtime error: invalid memory address or nil pointer dereference [recovered]
	panic: runtime error: invalid memory address or nil pointer dereference
[signal SIGSEGV: segmentation violation code=0x1 addr=0x8 pc=0x1a812d3]

goroutine 1622 [running]:
k8s.io/apimachinery/pkg/util/runtime.HandleCrash(0x0, 0x0, 0x0)
	/src/vm-import-operator/vendor/k8s.io/apimachinery/pkg/util/runtime/runtime.go:55 +0x105
panic(0x1e81e80, 0x384cff0)
	/usr/local/go/src/runtime/panic.go:522 +0x1b5
github.com/kubevirt/vm-import-operator/pkg/providers/ovirt/mapper.(*OvirtMapper).mapNetworkType(...)
	/src/vm-import-operator/pkg/providers/ovirt/mapper/mapper.go:372
github.com/kubevirt/vm-import-operator/pkg/providers/ovirt/mapper.(*OvirtMapper).getNetworkForNic(0xc0014ee6c0, 0xc002dc05b0, 0x0, 0x0, 0x0, 0x0, 0x0)
	/src/vm-import-operator/pkg/providers/ovirt/mapper/mapper.go:360 +0x1f3
github.com/kubevirt/vm-import-operator/pkg/providers/ovirt/mapper.(*OvirtMapper).mapNetworks(0xc0014ee6c0, 0xc00379fe20, 0xc0014534d0, 0xc0014ebd60)
	/src/vm-import-operator/pkg/providers/ovirt/mapper/mapper.go:331 +0xba
github.com/kubevirt/vm-import-operator/pkg/providers/ovirt/mapper.(*OvirtMapper).MapVM(0xc0014ee6c0, 0xc001a2fb10, 0xc003d7aa80, 0x0, 0x0, 0x0)
	/src/vm-import-operator/pkg/providers/ovirt/mapper/mapper.go:172 +0x477
github.com/kubevirt/vm-import-operator/pkg/controller/virtualmachineimport.(*ReconcileVirtualMachineImport).createVM(0xc000893500, 0x2475480, 0xc002d5a000, 0xc000387ba0, 0x243aec0, 0xc0014ee6c0, 0x0, 0x2405180, 0xc000387ba0, 0x0)
	/src/vm-import-operator/pkg/controller/virtualmachineimport/virtualmachineimport_controller.go:429 +0x284
github.com/kubevirt/vm-import-operator/pkg/controller/virtualmachineimport.(*ReconcileVirtualMachineImport).Reconcile(0xc000893500, 0xc000b29560, 0x11, 0xc000b29540, 0x1a, 0x3868e00, 0x0, 0x0, 0x0)
	/src/vm-import-operator/pkg/controller/virtualmachineimport/virtualmachineimport_controller.go:250 +0x724
sigs.k8s.io/controller-runtime/pkg/internal/controller.(*Controller).reconcileHandler(0xc0001d0480, 0x1f06ce0, 0xc000565e00, 0x1f06c00)
	/src/vm-import-operator/vendor/sigs.k8s.io/controller-runtime/pkg/internal/controller/controller.go:256 +0x146
sigs.k8s.io/controller-runtime/pkg/internal/controller.(*Controller).processNextWorkItem(0xc0001d0480, 0xc000556c00)
	/src/vm-import-operator/vendor/sigs.k8s.io/controller-runtime/pkg/internal/controller/controller.go:232 +0xb5
sigs.k8s.io/controller-runtime/pkg/internal/controller.(*Controller).worker(0xc0001d0480)
	/src/vm-import-operator/vendor/sigs.k8s.io/controller-runtime/pkg/internal/controller/controller.go:211 +0x2b
k8s.io/apimachinery/pkg/util/wait.JitterUntil.func1(0xc0008200d0)
	/src/vm-import-operator/vendor/k8s.io/apimachinery/pkg/util/wait/wait.go:152 +0x54
k8s.io/apimachinery/pkg/util/wait.JitterUntil(0xc0008200d0, 0x3b9aca00, 0x0, 0x1, 0xc00009a420)
	/src/vm-import-operator/vendor/k8s.io/apimachinery/pkg/util/wait/wait.go:153 +0xf8
k8s.io/apimachinery/pkg/util/wait.Until(0xc0008200d0, 0x3b9aca00, 0xc00009a420)
	/src/vm-import-operator/vendor/k8s.io/apimachinery/pkg/util/wait/wait.go:88 +0x4d
created by sigs.k8s.io/controller-runtime/pkg/internal/controller.(*Controller).Start.func1
	/src/vm-import-operator/vendor/sigs.k8s.io/controller-runtime/pkg/internal/controller/controller.go:193 +0x326

Comment 2 Amos Mastbaum 2020-06-30 06:40:36 UTC
thank you @Nelly. done.

Comment 5 errata-xmlrpc 2020-07-28 19:10:39 UTC
Since the problem described in this bug report should be
resolved in a recent advisory, it has been closed with a
resolution of ERRATA.

For information on the advisory, and where to find the updated
files, follow the link below.

If the solution does not work for you, open a new bug report.

https://access.redhat.com/errata/RHSA-2020:3194


Note You need to log in before you can comment on or make changes to this bug.