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