@@ -931,6 +931,48 @@ def test_update_provider_tree_with_rc_occupied(self, mock_nfc, mock_nr,
931
931
932
932
self .driver .update_provider_tree (self .ptree , mock .sentinel .nodename )
933
933
934
+ expected = {
935
+ 'CUSTOM_IRON_NFV' : {
936
+ 'total' : 1 ,
937
+ 'reserved' : 1 ,
938
+ 'min_unit' : 1 ,
939
+ 'max_unit' : 1 ,
940
+ 'step_size' : 1 ,
941
+ 'allocation_ratio' : 1.0 ,
942
+ },
943
+ }
944
+ mock_nfc .assert_called_once_with (mock .sentinel .nodename )
945
+ mock_nr .assert_called_once_with (mock_nfc .return_value )
946
+ mock_res_used .assert_called_once_with (mock_nfc .return_value )
947
+ mock_res_unavail .assert_called_once_with (mock_nfc .return_value )
948
+ result = self .ptree .data (mock .sentinel .nodename ).inventory
949
+ self .assertEqual (expected , result )
950
+
951
+ @mock .patch .object (ironic_driver .IronicDriver ,
952
+ '_node_resources_used' , return_value = True )
953
+ @mock .patch .object (ironic_driver .IronicDriver ,
954
+ '_node_resources_unavailable' , return_value = False )
955
+ @mock .patch .object (ironic_driver .IronicDriver , '_node_resource' )
956
+ @mock .patch .object (ironic_driver .IronicDriver , '_node_from_cache' )
957
+ def test_update_provider_tree_with_rc_occupied_workaround (self ,
958
+ mock_nfc , mock_nr , mock_res_unavail , mock_res_used ):
959
+ """Ensure that when a node is used, we report the inventory matching
960
+ the consumed resources.
961
+ """
962
+ self .flags (skip_reserve_in_use_ironic_nodes = True ,
963
+ group = "workarounds" )
964
+ mock_nr .return_value = {
965
+ 'vcpus' : 24 ,
966
+ 'vcpus_used' : 24 ,
967
+ 'memory_mb' : 1024 ,
968
+ 'memory_mb_used' : 1024 ,
969
+ 'local_gb' : 100 ,
970
+ 'local_gb_used' : 100 ,
971
+ 'resource_class' : 'iron-nfv' ,
972
+ }
973
+
974
+ self .driver .update_provider_tree (self .ptree , mock .sentinel .nodename )
975
+
934
976
expected = {
935
977
'CUSTOM_IRON_NFV' : {
936
978
'total' : 1 ,
@@ -944,7 +986,7 @@ def test_update_provider_tree_with_rc_occupied(self, mock_nfc, mock_nr,
944
986
mock_nfc .assert_called_once_with (mock .sentinel .nodename )
945
987
mock_nr .assert_called_once_with (mock_nfc .return_value )
946
988
mock_res_used .assert_called_once_with (mock_nfc .return_value )
947
- self . assertFalse ( mock_res_unavail . called )
989
+ mock_res_unavail . assert_called_once_with ( mock_nfc . return_value )
948
990
result = self .ptree .data (mock .sentinel .nodename ).inventory
949
991
self .assertEqual (expected , result )
950
992
@@ -1015,7 +1057,7 @@ def test_update_provider_tree_no_traits(self, mock_nfc, mock_nr,
1015
1057
mock_nfc .assert_called_once_with (mock .sentinel .nodename )
1016
1058
mock_nr .assert_called_once_with (mock_nfc .return_value )
1017
1059
mock_res_used .assert_called_once_with (mock_nfc .return_value )
1018
- self . assertFalse ( mock_res_unavail . called )
1060
+ mock_res_unavail . assert_called_once_with ( mock_nfc . return_value )
1019
1061
result = self .ptree .data (mock .sentinel .nodename ).traits
1020
1062
self .assertEqual (set (), result )
1021
1063
@@ -1047,7 +1089,7 @@ def test_update_provider_tree_with_traits(self, mock_nfc, mock_nr,
1047
1089
mock_nfc .assert_called_once_with (mock .sentinel .nodename )
1048
1090
mock_nr .assert_called_once_with (mock_nfc .return_value )
1049
1091
mock_res_used .assert_called_once_with (mock_nfc .return_value )
1050
- self . assertFalse ( mock_res_unavail . called )
1092
+ mock_res_unavail . assert_called_once_with ( mock_nfc . return_value )
1051
1093
result = self .ptree .data (mock .sentinel .nodename ).traits
1052
1094
self .assertEqual (set (traits ), result )
1053
1095
0 commit comments