@@ -1938,13 +1938,13 @@ public void testGetPoolForAllocatedOrUploadedVolumeForAttach_Success() {
1938
1938
when (volumeToAttach .getDiskOfferingId ()).thenReturn (1L );
1939
1939
when (volumeOrchestrationService .findStoragePool (any (DiskProfile .class ), eq (zone ), eq (pod ), eq (1L ), eq (2L ), eq (vm ), eq (Collections .emptySet ())))
1940
1940
.thenReturn (pool );
1941
- StoragePool result = volumeApiServiceImpl .getPoolForAllocatedOrUploadedVolumeForAttach (volumeToAttach , vm );
1941
+ StoragePool result = volumeApiServiceImpl .getSuitablePoolForAllocatedOrUploadedVolumeForAttach (volumeToAttach , vm );
1942
1942
Assert .assertNotNull (result );
1943
1943
Assert .assertEquals (pool , result );
1944
1944
}
1945
1945
1946
- @ Test ( expected = CloudRuntimeException . class )
1947
- public void testGetPoolForAllocatedOrUploadedVolumeForAttach_NoPoolFound_ThrowsException () {
1946
+ @ Test
1947
+ public void testGetPoolForAllocatedOrUploadedVolumeForAttach_NoSuitablePoolFound_ReturnsNull () {
1948
1948
VolumeInfo volumeToAttach = Mockito .mock (VolumeInfo .class );
1949
1949
UserVmVO vm = Mockito .mock (UserVmVO .class );
1950
1950
DataCenterVO zone = mockZone ();
@@ -1959,11 +1959,11 @@ public void testGetPoolForAllocatedOrUploadedVolumeForAttach_NoPoolFound_ThrowsE
1959
1959
when (volumeToAttach .getDiskOfferingId ()).thenReturn (1L );
1960
1960
when (volumeOrchestrationService .findStoragePool (any (DiskProfile .class ), eq (zone ), eq (pod ), eq (1L ), eq (2L ), eq (vm ), eq (Collections .emptySet ())))
1961
1961
.thenReturn (null );
1962
- volumeApiServiceImpl .getPoolForAllocatedOrUploadedVolumeForAttach (volumeToAttach , vm );
1962
+ Assert . assertNull ( volumeApiServiceImpl .getSuitablePoolForAllocatedOrUploadedVolumeForAttach (volumeToAttach , vm ) );
1963
1963
}
1964
1964
1965
1965
@ Test
1966
- public void testGetPoolForAllocatedOrUploadedVolumeForAttach_NoCluster () {
1966
+ public void testGetSuitablePoolForAllocatedOrUploadedVolumeForAttach_NoCluster () {
1967
1967
VolumeInfo volumeToAttach = Mockito .mock (VolumeInfo .class );
1968
1968
UserVmVO vm = Mockito .mock (UserVmVO .class );
1969
1969
DataCenterVO zone = mockZone ();
@@ -1977,7 +1977,7 @@ public void testGetPoolForAllocatedOrUploadedVolumeForAttach_NoCluster() {
1977
1977
when (volumeToAttach .getDiskOfferingId ()).thenReturn (1L );
1978
1978
when (volumeOrchestrationService .findStoragePool (any (DiskProfile .class ), eq (zone ), eq (pod ), eq (null ), eq (2L ), eq (vm ), eq (Collections .emptySet ())))
1979
1979
.thenReturn (pool );
1980
- StoragePool result = volumeApiServiceImpl .getPoolForAllocatedOrUploadedVolumeForAttach (volumeToAttach , vm );
1980
+ StoragePool result = volumeApiServiceImpl .getSuitablePoolForAllocatedOrUploadedVolumeForAttach (volumeToAttach , vm );
1981
1981
Assert .assertNotNull (result );
1982
1982
Assert .assertEquals (pool , result );
1983
1983
}
@@ -2023,7 +2023,7 @@ public void testCreateVolumeOnPrimaryForAttachIfNeeded_UsesGetPoolForAttach() {
2023
2023
UserVmVO vm = Mockito .mock (UserVmVO .class );
2024
2024
StoragePool destPrimaryStorage = Mockito .mock (StoragePool .class );
2025
2025
Mockito .doReturn (destPrimaryStorage ).when (volumeApiServiceImpl )
2026
- .getPoolForAllocatedOrUploadedVolumeForAttach (volumeToAttach , vm );
2026
+ .getSuitablePoolForAllocatedOrUploadedVolumeForAttach (volumeToAttach , vm );
2027
2027
VolumeInfo newVolumeOnPrimaryStorage = Mockito .mock (VolumeInfo .class );
2028
2028
try {
2029
2029
Mockito .when (volumeOrchestrationService .createVolumeOnPrimaryStorage (
@@ -2034,7 +2034,7 @@ public void testCreateVolumeOnPrimaryForAttachIfNeeded_UsesGetPoolForAttach() {
2034
2034
}
2035
2035
VolumeInfo result = volumeApiServiceImpl .createVolumeOnPrimaryForAttachIfNeeded (volumeToAttach , vm , null );
2036
2036
Assert .assertSame (newVolumeOnPrimaryStorage , result );
2037
- verify (volumeApiServiceImpl ).getPoolForAllocatedOrUploadedVolumeForAttach (volumeToAttach , vm );
2037
+ verify (volumeApiServiceImpl ).getSuitablePoolForAllocatedOrUploadedVolumeForAttach (volumeToAttach , vm );
2038
2038
}
2039
2039
2040
2040
@ Test (expected = InvalidParameterValueException .class )
@@ -2045,7 +2045,7 @@ public void testCreateVolumeOnPrimaryForAttachIfNeeded_UnsupportedPoolType_Throw
2045
2045
StoragePool destPrimaryStorage = Mockito .mock (StoragePool .class );
2046
2046
when (destPrimaryStorage .getPoolType ()).thenReturn (Storage .StoragePoolType .PowerFlex );
2047
2047
Mockito .doReturn (destPrimaryStorage ).when (volumeApiServiceImpl )
2048
- .getPoolForAllocatedOrUploadedVolumeForAttach (volumeToAttach , vm );
2048
+ .getSuitablePoolForAllocatedOrUploadedVolumeForAttach (volumeToAttach , vm );
2049
2049
volumeApiServiceImpl .createVolumeOnPrimaryForAttachIfNeeded (volumeToAttach , vm , null );
2050
2050
}
2051
2051
@@ -2057,7 +2057,7 @@ public void testCreateVolumeOnSecondaryForAttachIfNeeded_CreateVolumeFails_Throw
2057
2057
StoragePool destPrimaryStorage = Mockito .mock (StoragePool .class );
2058
2058
Mockito .when (destPrimaryStorage .getPoolType ()).thenReturn (Storage .StoragePoolType .NetworkFilesystem );
2059
2059
Mockito .doReturn (destPrimaryStorage ).when (volumeApiServiceImpl )
2060
- .getPoolForAllocatedOrUploadedVolumeForAttach (volumeToAttach , vm );
2060
+ .getSuitablePoolForAllocatedOrUploadedVolumeForAttach (volumeToAttach , vm );
2061
2061
try {
2062
2062
Mockito .when (volumeOrchestrationService .createVolumeOnPrimaryStorage (vm , volumeToAttach , vm .getHypervisorType (), destPrimaryStorage ))
2063
2063
.thenThrow (new NoTransitionException ("Mocked exception" ));
@@ -2069,4 +2069,35 @@ public void testCreateVolumeOnSecondaryForAttachIfNeeded_CreateVolumeFails_Throw
2069
2069
);
2070
2070
Assert .assertTrue (exception .getMessage ().contains ("Failed to create volume on primary storage" ));
2071
2071
}
2072
+
2073
+ @ Test
2074
+ public void testCreateVolumeOnSecondaryForAttachIfNeeded_NoSuitablePool_ThrowsException () {
2075
+ VolumeInfo volumeToAttach = Mockito .mock (VolumeInfo .class );
2076
+ Mockito .when (volumeToAttach .getState ()).thenReturn (Volume .State .Uploaded );
2077
+ UserVmVO vm = Mockito .mock (UserVmVO .class );
2078
+ Mockito .doReturn (null ).when (volumeApiServiceImpl )
2079
+ .getSuitablePoolForAllocatedOrUploadedVolumeForAttach (volumeToAttach , vm );
2080
+ CloudRuntimeException exception = Assert .assertThrows (CloudRuntimeException .class , () ->
2081
+ volumeApiServiceImpl .createVolumeOnPrimaryForAttachIfNeeded (volumeToAttach , vm , null )
2082
+ );
2083
+ Assert .assertTrue (exception .getMessage ().startsWith ("Failed to find a primary storage for volume" ));
2084
+ }
2085
+
2086
+ @ Test
2087
+ public void testCreateVolumeOnSecondaryForAttachIfNeeded_NoSuitablePool_ReturnSameVolumeInfo () {
2088
+ VolumeInfo volumeToAttach = Mockito .mock (VolumeInfo .class );
2089
+ Mockito .when (volumeToAttach .getState ()).thenReturn (Volume .State .Allocated );
2090
+ UserVmVO vm = Mockito .mock (UserVmVO .class );
2091
+ Mockito .when (vm .getState ()).thenReturn (State .Stopped );
2092
+ Mockito .doReturn (null ).when (volumeApiServiceImpl )
2093
+ .getSuitablePoolForAllocatedOrUploadedVolumeForAttach (volumeToAttach , vm );
2094
+ VolumeInfo result = volumeApiServiceImpl .createVolumeOnPrimaryForAttachIfNeeded (volumeToAttach , vm , null );
2095
+ Assert .assertSame (volumeToAttach , result );
2096
+ try {
2097
+ Mockito .verify (volumeOrchestrationService , Mockito .never ()).createVolumeOnPrimaryStorage (Mockito .any (),
2098
+ Mockito .any (), Mockito .any (), Mockito .any ());
2099
+ } catch (NoTransitionException e ) {
2100
+ Assert .fail ();
2101
+ }
2102
+ }
2072
2103
}
0 commit comments