@@ -539,16 +539,19 @@ def test_get_filtered_hosts_with_ignore_hosts_and_force_same_nodes(self):
539
539
@mock .patch ('nova.objects.ServiceList.get_by_binary' )
540
540
@mock .patch ('nova.objects.ComputeNodeList.get_all' )
541
541
@mock .patch ('nova.objects.InstanceList.get_uuids_by_host' )
542
- def test_get_all_host_states (self , mock_get_by_host , mock_get_all ,
543
- mock_get_by_binary , mock_log ):
542
+ def test_get_host_states (self , mock_get_by_host , mock_get_all ,
543
+ mock_get_by_binary , mock_log ):
544
544
mock_get_by_host .return_value = []
545
545
mock_get_all .return_value = fakes .COMPUTE_NODES
546
546
mock_get_by_binary .return_value = fakes .SERVICES
547
547
context = 'fake_context'
548
+ compute_nodes , services = self .host_manager ._get_computes_for_cells (
549
+ context , self .host_manager .cells )
548
550
549
- # get_all_host_states returns a generator, so make a map from it
551
+ # _get_host_states returns a generator, so make a map from it
550
552
host_states_map = {(state .host , state .nodename ): state for state in
551
- self .host_manager .get_all_host_states (context )}
553
+ self .host_manager ._get_host_states (
554
+ context , compute_nodes , services )}
552
555
self .assertEqual (4 , len (host_states_map ))
553
556
554
557
calls = [
@@ -598,17 +601,22 @@ def test_get_all_host_states(self, mock_get_by_host, mock_get_all,
598
601
@mock .patch .object (host_manager .HostState , '_update_from_compute_node' )
599
602
@mock .patch .object (objects .ComputeNodeList , 'get_all' )
600
603
@mock .patch .object (objects .ServiceList , 'get_by_binary' )
601
- def test_get_all_host_states_with_no_aggs (self , svc_get_by_binary ,
602
- cn_get_all , update_from_cn ,
603
- mock_get_by_host ):
604
+ def test_get_host_states_with_no_aggs (self , svc_get_by_binary ,
605
+ cn_get_all , update_from_cn ,
606
+ mock_get_by_host ):
604
607
svc_get_by_binary .return_value = [objects .Service (host = 'fake' )]
605
608
cn_get_all .return_value = [
606
609
objects .ComputeNode (host = 'fake' , hypervisor_hostname = 'fake' )]
607
610
mock_get_by_host .return_value = []
608
611
self .host_manager .host_aggregates_map = collections .defaultdict (set )
609
612
610
- hosts = self .host_manager .get_all_host_states ('fake-context' )
611
- # get_all_host_states returns a generator, so make a map from it
613
+ context = nova_context .get_admin_context ()
614
+ compute_nodes , services = self .host_manager ._get_computes_for_cells (
615
+ context , self .host_manager .cells )
616
+
617
+ hosts = self .host_manager ._get_host_states (
618
+ context , compute_nodes , services )
619
+ # _get_host_states returns a generator, so make a map from it
612
620
host_states_map = {(state .host , state .nodename ): state for state in
613
621
hosts }
614
622
host_state = host_states_map [('fake' , 'fake' )]
@@ -618,10 +626,10 @@ def test_get_all_host_states_with_no_aggs(self, svc_get_by_binary,
618
626
@mock .patch .object (host_manager .HostState , '_update_from_compute_node' )
619
627
@mock .patch .object (objects .ComputeNodeList , 'get_all' )
620
628
@mock .patch .object (objects .ServiceList , 'get_by_binary' )
621
- def test_get_all_host_states_with_matching_aggs (self , svc_get_by_binary ,
622
- cn_get_all ,
623
- update_from_cn ,
624
- mock_get_by_host ):
629
+ def test_get_host_states_with_matching_aggs (self , svc_get_by_binary ,
630
+ cn_get_all ,
631
+ update_from_cn ,
632
+ mock_get_by_host ):
625
633
svc_get_by_binary .return_value = [objects .Service (host = 'fake' )]
626
634
cn_get_all .return_value = [
627
635
objects .ComputeNode (host = 'fake' , hypervisor_hostname = 'fake' )]
@@ -631,8 +639,13 @@ def test_get_all_host_states_with_matching_aggs(self, svc_get_by_binary,
631
639
set , {'fake' : set ([1 ])})
632
640
self .host_manager .aggs_by_id = {1 : fake_agg }
633
641
634
- hosts = self .host_manager .get_all_host_states ('fake-context' )
635
- # get_all_host_states returns a generator, so make a map from it
642
+ context = nova_context .get_admin_context ()
643
+ compute_nodes , services = self .host_manager ._get_computes_for_cells (
644
+ context , self .host_manager .cells )
645
+
646
+ hosts = self .host_manager ._get_host_states (
647
+ context , compute_nodes , services )
648
+ # _get_host_states returns a generator, so make a map from it
636
649
host_states_map = {(state .host , state .nodename ): state for state in
637
650
hosts }
638
651
host_state = host_states_map [('fake' , 'fake' )]
@@ -642,11 +655,10 @@ def test_get_all_host_states_with_matching_aggs(self, svc_get_by_binary,
642
655
@mock .patch .object (host_manager .HostState , '_update_from_compute_node' )
643
656
@mock .patch .object (objects .ComputeNodeList , 'get_all' )
644
657
@mock .patch .object (objects .ServiceList , 'get_by_binary' )
645
- def test_get_all_host_states_with_not_matching_aggs (self ,
646
- svc_get_by_binary ,
647
- cn_get_all ,
648
- update_from_cn ,
649
- mock_get_by_host ):
658
+ def test_get_host_states_with_not_matching_aggs (self , svc_get_by_binary ,
659
+ cn_get_all ,
660
+ update_from_cn ,
661
+ mock_get_by_host ):
650
662
svc_get_by_binary .return_value = [objects .Service (host = 'fake' ),
651
663
objects .Service (host = 'other' )]
652
664
cn_get_all .return_value = [
@@ -658,8 +670,13 @@ def test_get_all_host_states_with_not_matching_aggs(self,
658
670
set , {'other' : set ([1 ])})
659
671
self .host_manager .aggs_by_id = {1 : fake_agg }
660
672
661
- hosts = self .host_manager .get_all_host_states ('fake-context' )
662
- # get_all_host_states returns a generator, so make a map from it
673
+ context = nova_context .get_admin_context ()
674
+ compute_nodes , services = self .host_manager ._get_computes_for_cells (
675
+ context , self .host_manager .cells )
676
+
677
+ hosts = self .host_manager ._get_host_states (
678
+ context , compute_nodes , services )
679
+ # _get_host_states returns a generator, so make a map from it
663
680
host_states_map = {(state .host , state .nodename ): state for state in
664
681
hosts }
665
682
host_state = host_states_map [('fake' , 'fake' )]
@@ -670,11 +687,10 @@ def test_get_all_host_states_with_not_matching_aggs(self,
670
687
@mock .patch .object (host_manager .HostState , '_update_from_compute_node' )
671
688
@mock .patch .object (objects .ComputeNodeList , 'get_all' )
672
689
@mock .patch .object (objects .ServiceList , 'get_by_binary' )
673
- def test_get_all_host_states_corrupt_aggregates_info (self ,
674
- svc_get_by_binary ,
675
- cn_get_all ,
676
- update_from_cn ,
677
- mock_get_by_host ):
690
+ def test_get_host_states_corrupt_aggregates_info (self , svc_get_by_binary ,
691
+ cn_get_all ,
692
+ update_from_cn ,
693
+ mock_get_by_host ):
678
694
"""Regression test for bug 1605804
679
695
680
696
A host can be in multiple host-aggregates at the same time. When a
@@ -700,16 +716,14 @@ def test_get_all_host_states_corrupt_aggregates_info(self,
700
716
aggregate .hosts = [host_a ]
701
717
self .host_manager .delete_aggregate (aggregate )
702
718
703
- self .host_manager .get_all_host_states ('fake-context' )
719
+ context = nova_context .get_admin_context ()
720
+ compute_nodes , services = self .host_manager ._get_computes_for_cells (
721
+ context , self .host_manager .cells )
722
+
723
+ self .host_manager ._get_host_states (context , compute_nodes , services )
704
724
705
- @mock .patch ('nova.objects.ServiceList.get_by_binary' )
706
- @mock .patch ('nova.objects.ComputeNodeList.get_all' )
707
725
@mock .patch ('nova.objects.InstanceList.get_by_host' )
708
- def test_get_all_host_states_updated (self , mock_get_by_host ,
709
- mock_get_all_comp ,
710
- mock_get_svc_by_binary ):
711
- mock_get_all_comp .return_value = fakes .COMPUTE_NODES
712
- mock_get_svc_by_binary .return_value = fakes .SERVICES
726
+ def test_host_state_update (self , mock_get_by_host ):
713
727
context = 'fake_context'
714
728
hm = self .host_manager
715
729
inst1 = objects .Instance (uuid = uuids .instance )
@@ -725,14 +739,8 @@ def test_get_all_host_states_updated(self, mock_get_by_host,
725
739
self .assertTrue (host_state .instances )
726
740
self .assertEqual (host_state .instances [uuids .instance ], inst1 )
727
741
728
- @mock .patch ('nova.objects.ServiceList.get_by_binary' )
729
- @mock .patch ('nova.objects.ComputeNodeList.get_all' )
730
742
@mock .patch ('nova.objects.InstanceList.get_uuids_by_host' )
731
- def test_get_all_host_states_not_updated (self , mock_get_by_host ,
732
- mock_get_all_comp ,
733
- mock_get_svc_by_binary ):
734
- mock_get_all_comp .return_value = fakes .COMPUTE_NODES
735
- mock_get_svc_by_binary .return_value = fakes .SERVICES
743
+ def test_host_state_not_updated (self , mock_get_by_host ):
736
744
context = 'fake_context'
737
745
hm = self .host_manager
738
746
inst1 = objects .Instance (uuid = uuids .instance )
@@ -1155,24 +1163,28 @@ def setUp(self, mock_init_agg, mock_init_inst):
1155
1163
@mock .patch ('nova.objects.ServiceList.get_by_binary' )
1156
1164
@mock .patch ('nova.objects.ComputeNodeList.get_all' )
1157
1165
@mock .patch ('nova.objects.InstanceList.get_uuids_by_host' )
1158
- def test_get_all_host_states (self , mock_get_by_host , mock_get_all ,
1159
- mock_get_by_binary ):
1166
+ def test_get_host_states (self , mock_get_by_host , mock_get_all ,
1167
+ mock_get_by_binary ):
1160
1168
mock_get_by_host .return_value = []
1161
1169
mock_get_all .return_value = fakes .COMPUTE_NODES
1162
1170
mock_get_by_binary .return_value = fakes .SERVICES
1163
1171
context = 'fake_context'
1164
1172
1165
- # get_all_host_states returns a generator, so make a map from it
1173
+ compute_nodes , services = self .host_manager ._get_computes_for_cells (
1174
+ context , self .host_manager .cells )
1175
+
1176
+ # _get_host_states returns a generator, so make a map from it
1166
1177
host_states_map = {(state .host , state .nodename ): state for state in
1167
- self .host_manager .get_all_host_states (context )}
1178
+ self .host_manager ._get_host_states (
1179
+ context , compute_nodes , services )}
1168
1180
self .assertEqual (len (host_states_map ), 4 )
1169
1181
1170
1182
@mock .patch ('nova.objects.ServiceList.get_by_binary' )
1171
1183
@mock .patch ('nova.objects.ComputeNodeList.get_all' )
1172
1184
@mock .patch ('nova.objects.InstanceList.get_uuids_by_host' )
1173
- def test_get_all_host_states_after_delete_one (self , mock_get_by_host ,
1174
- mock_get_all ,
1175
- mock_get_by_binary ):
1185
+ def test_get_host_states_after_delete_one (self , mock_get_by_host ,
1186
+ mock_get_all ,
1187
+ mock_get_by_binary ):
1176
1188
getter = (lambda n : n .hypervisor_hostname
1177
1189
if 'hypervisor_hostname' in n else None )
1178
1190
running_nodes = [n for n in fakes .COMPUTE_NODES
@@ -1184,38 +1196,50 @@ def test_get_all_host_states_after_delete_one(self, mock_get_by_host,
1184
1196
context = 'fake_context'
1185
1197
1186
1198
# first call: all nodes
1187
- hosts = self .host_manager .get_all_host_states (context )
1188
- # get_all_host_states returns a generator, so make a map from it
1199
+ compute_nodes , services = self .host_manager ._get_computes_for_cells (
1200
+ context , self .host_manager .cells )
1201
+ hosts = self .host_manager ._get_host_states (
1202
+ context , compute_nodes , services )
1203
+ # _get_host_states returns a generator, so make a map from it
1189
1204
host_states_map = {(state .host , state .nodename ): state for state in
1190
1205
hosts }
1191
1206
self .assertEqual (len (host_states_map ), 4 )
1192
1207
1193
1208
# second call: just running nodes
1194
- hosts = self .host_manager .get_all_host_states (context )
1209
+ compute_nodes , services = self .host_manager ._get_computes_for_cells (
1210
+ context , self .host_manager .cells )
1211
+ hosts = self .host_manager ._get_host_states (
1212
+ context , compute_nodes , services )
1195
1213
host_states_map = {(state .host , state .nodename ): state for state in
1196
1214
hosts }
1197
1215
self .assertEqual (len (host_states_map ), 3 )
1198
1216
1199
1217
@mock .patch ('nova.objects.ServiceList.get_by_binary' )
1200
1218
@mock .patch ('nova.objects.ComputeNodeList.get_all' )
1201
1219
@mock .patch ('nova.objects.InstanceList.get_uuids_by_host' )
1202
- def test_get_all_host_states_after_delete_all (self , mock_get_by_host ,
1203
- mock_get_all ,
1204
- mock_get_by_binary ):
1220
+ def test_get_host_states_after_delete_all (self , mock_get_by_host ,
1221
+ mock_get_all ,
1222
+ mock_get_by_binary ):
1205
1223
mock_get_by_host .return_value = []
1206
1224
mock_get_all .side_effect = [fakes .COMPUTE_NODES , []]
1207
1225
mock_get_by_binary .side_effect = [fakes .SERVICES , fakes .SERVICES ]
1208
1226
context = 'fake_context'
1209
1227
1210
1228
# first call: all nodes
1211
- hosts = self .host_manager .get_all_host_states (context )
1212
- # get_all_host_states returns a generator, so make a map from it
1229
+ compute_nodes , services = self .host_manager ._get_computes_for_cells (
1230
+ context , self .host_manager .cells )
1231
+ hosts = self .host_manager ._get_host_states (
1232
+ context , compute_nodes , services )
1233
+ # _get_host_states returns a generator, so make a map from it
1213
1234
host_states_map = {(state .host , state .nodename ): state for state in
1214
1235
hosts }
1215
1236
self .assertEqual (len (host_states_map ), 4 )
1216
1237
1217
1238
# second call: no nodes
1218
- hosts = self .host_manager .get_all_host_states (context )
1239
+ compute_nodes , services = self .host_manager ._get_computes_for_cells (
1240
+ context , self .host_manager .cells )
1241
+ hosts = self .host_manager ._get_host_states (
1242
+ context , compute_nodes , services )
1219
1243
host_states_map = {(state .host , state .nodename ): state for state in
1220
1244
hosts }
1221
1245
self .assertEqual (len (host_states_map ), 0 )
@@ -1255,7 +1279,7 @@ class HostStateTestCase(test.NoDBTestCase):
1255
1279
"""Test case for HostState class."""
1256
1280
1257
1281
# update_from_compute_node() and consume_from_request() are tested
1258
- # in HostManagerTestCase.test_get_all_host_states ()
1282
+ # in HostManagerTestCase.test_get_host_states ()
1259
1283
1260
1284
@mock .patch ('nova.utils.synchronized' ,
1261
1285
side_effect = lambda a : lambda f : lambda * args : f (* args ))
0 commit comments