@@ -59,6 +59,9 @@ def test_collect_vms():
59
59
'hosts' : True ,
60
60
'snapshots' : True ,
61
61
}
62
+
63
+ # Test runtime.host not found
64
+
62
65
collector = VmwareCollector (
63
66
'127.0.0.1' ,
64
67
'root' ,
@@ -67,10 +70,38 @@ def test_collect_vms():
67
70
)
68
71
collector .content = _succeed (mock .Mock ())
69
72
70
- collector .__dict__ ['vm_labels' ] = _succeed ({
71
- 'vm-1' : ['vm-1' , 'host-1' , 'dc' , 'cluster-1' ],
72
- 'vm-2' : ['vm-2' , 'host-1' , 'dc' , 'cluster-1' ],
73
- 'vm-3' : ['vm-3' , 'host-1' , 'dc' , 'cluster-1' ],
73
+ collector .__dict__ ['host_labels' ] = _succeed ({'' : []})
74
+
75
+ with mock .patch .object (collector , 'batch_fetch_properties' ) as batch_fetch_properties :
76
+ batch_fetch_properties .return_value = _succeed ({
77
+ 'vm-1' : {
78
+ 'name' : 'vm-1' ,
79
+ 'runtime.host' : vim .ManagedObject ('notfound:1' ),
80
+ 'runtime.powerState' : 'poweredOn' ,
81
+ 'summary.config.numCpu' : 1 ,
82
+ 'summary.config.memorySizeMB' : 1024 ,
83
+ 'runtime.bootTime' : boot_time ,
84
+ 'snapshot' : snapshot ,
85
+ 'guest.disk' : [disk ],
86
+ 'guest.toolsStatus' : 'toolsOk' ,
87
+ 'guest.toolsVersion' : '10336' ,
88
+ 'guest.toolsVersionStatus2' : 'guestToolsUnmanaged' ,
89
+ }
90
+ })
91
+ assert collector .vm_labels .result == {'vm-1' : ['vm-1' ]}
92
+
93
+ # Reset variables
94
+
95
+ collector = VmwareCollector (
96
+ '127.0.0.1' ,
97
+ 'root' ,
98
+ 'password' ,
99
+ collect_only ,
100
+ )
101
+ collector .content = _succeed (mock .Mock ())
102
+
103
+ collector .__dict__ ['host_labels' ] = _succeed ({
104
+ 'host-1' : ['host-1' , 'dc' , 'cluster-1' ],
74
105
})
75
106
76
107
metrics = collector ._create_metric_containers ()
@@ -118,6 +149,11 @@ def test_collect_vms():
118
149
})
119
150
yield collector ._vmware_get_vms (metrics )
120
151
assert _check_properties (batch_fetch_properties .call_args [0 ][1 ])
152
+ assert collector .vm_labels .result == {
153
+ 'vm-1' : ['vm-1' , 'host-1' , 'dc' , 'cluster-1' ],
154
+ 'vm-2' : ['vm-2' ],
155
+ 'vm-3' : ['vm-3' , 'host-1' , 'dc' , 'cluster-1' ],
156
+ }
121
157
122
158
# Assert that vm-3 skipped #69/#70
123
159
assert metrics ['vmware_vm_power_state' ].samples [1 ][1 ] == {
@@ -511,6 +547,23 @@ def test_vmware_get_inventory():
511
547
folder_2 .__dict__ ['name' ] = 'compute-cluster-1'
512
548
folder_2 .__dict__ ['host' ] = [host_2 ]
513
549
550
+ # Folders case
551
+ host_3 = mock .Mock ()
552
+ host_3 ._moId = 'host:3'
553
+ host_3 .name = 'host-3'
554
+ host_3 .summary .config .name = 'host-3.'
555
+
556
+ folder_3 = mock .Mock ()
557
+ folder_3 .host = [host_3 ]
558
+
559
+ folder_4 = vim .Folder ('folder:4' )
560
+ folder_4 .__dict__ ['name' ] = 'folder-4'
561
+ folder_4 .__dict__ ['childEntity' ] = [folder_3 ]
562
+
563
+ folder_5 = vim .Folder ('folder:5' )
564
+ folder_5 .__dict__ ['name' ] = 'folder-5'
565
+ folder_5 .__dict__ ['childEntity' ] = [folder_4 ]
566
+
514
567
# Datastore case 1
515
568
datastore_1 = vim .Datastore ('datastore:1' )
516
569
datastore_1 .__dict__ ['name' ] = 'datastore-1'
@@ -525,7 +578,7 @@ def test_vmware_get_inventory():
525
578
526
579
data_center_1 = mock .Mock ()
527
580
data_center_1 .name = 'dc-1'
528
- data_center_1 .hostFolder .childEntity = [folder_1 , folder_2 ]
581
+ data_center_1 .hostFolder .childEntity = [folder_1 , folder_2 , folder_5 ]
529
582
data_center_1 .datastoreFolder .childEntity = [datastore_1 , datastore_2_folder ]
530
583
531
584
content .rootFolder .childEntity = [data_center_1 ]
@@ -548,6 +601,8 @@ def test_vmware_get_inventory():
548
601
549
602
with contextlib .ExitStack () as stack :
550
603
# We have to disable the LazyObject magic on pyvmomi classes so that we can use them as fakes
604
+ stack .enter_context (mock .patch .object (vim .Folder , 'name' , None ))
605
+ stack .enter_context (mock .patch .object (vim .Folder , 'childEntity' , None ))
551
606
stack .enter_context (mock .patch .object (vim .ClusterComputeResource , 'name' , None ))
552
607
stack .enter_context (mock .patch .object (vim .ClusterComputeResource , 'host' , None ))
553
608
stack .enter_context (mock .patch .object (vim .Datastore , 'name' , None ))
@@ -560,6 +615,7 @@ def test_vmware_get_inventory():
560
615
assert host == {
561
616
'host:1' : ['host-1' , 'dc-1' , '' ],
562
617
'host:2' : ['host-2' , 'dc-1' , 'compute-cluster-1' ],
618
+ 'host:3' : ['host-3' , 'dc-1' , '' ],
563
619
}
564
620
565
621
assert ds == {
0 commit comments