mirror of https://github.com/apache/cloudstack.git
Merge 9a2ba84d42 into cd5bb09d0d
This commit is contained in:
commit
0290f4de4b
|
|
@ -400,7 +400,9 @@ public class DefaultEndPointSelector implements EndPointSelector {
|
||||||
}
|
}
|
||||||
if (object instanceof TemplateInfo) {
|
if (object instanceof TemplateInfo) {
|
||||||
TemplateInfo tmplInfo = (TemplateInfo)object;
|
TemplateInfo tmplInfo = (TemplateInfo)object;
|
||||||
if (store.getScope().getScopeType() == ScopeType.ZONE && store.getScope().getScopeId() == null && tmplInfo.getTemplateType() == TemplateType.SYSTEM) {
|
if (tmplInfo.getTemplateType() == TemplateType.SYSTEM &&
|
||||||
|
(store.getScope().getScopeType() == ScopeType.REGION ||
|
||||||
|
(store.getScope().getScopeType() == ScopeType.ZONE && store.getScope().getScopeId() == null))) {
|
||||||
return LocalHostEndpoint.getEndpoint(); // for bootstrap system vm template downloading to region image store
|
return LocalHostEndpoint.getEndpoint(); // for bootstrap system vm template downloading to region image store
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -1249,6 +1249,10 @@ public class SecondaryStorageManagerImpl extends ManagerBase implements Secondar
|
||||||
protected void addSecondaryStorageServerAddressToBuffer(StringBuilder buffer, List<DataStore> dataStores, String vmName) {
|
protected void addSecondaryStorageServerAddressToBuffer(StringBuilder buffer, List<DataStore> dataStores, String vmName) {
|
||||||
List<String> addresses = new ArrayList<>();
|
List<String> addresses = new ArrayList<>();
|
||||||
for (DataStore dataStore: dataStores) {
|
for (DataStore dataStore: dataStores) {
|
||||||
|
// S3 and other object stores may not have a URL, so better to skip them
|
||||||
|
if (dataStore == null || dataStore.getTO() == null || dataStore.getTO().getUrl() == null) {
|
||||||
|
continue;
|
||||||
|
}
|
||||||
String url = dataStore.getTO().getUrl();
|
String url = dataStore.getTO().getUrl();
|
||||||
String[] urlArray = url.split("/");
|
String[] urlArray = url.split("/");
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -117,6 +117,45 @@ public class SecondaryStorageManagerImplTest {
|
||||||
runAddSecondaryStorageServerAddressToBufferTest(addresses, StringUtils.join(List.of(randomIp1, randomIp2), ","));
|
runAddSecondaryStorageServerAddressToBufferTest(addresses, StringUtils.join(List.of(randomIp1, randomIp2), ","));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void testAddSecondaryStorageServerAddressToBufferWithNullEntries() {
|
||||||
|
String randomIp1 = InetAddresses.fromInteger(secureRandom.nextInt()).getHostAddress();
|
||||||
|
String randomIp2 = InetAddresses.fromInteger(secureRandom.nextInt()).getHostAddress();
|
||||||
|
|
||||||
|
List<DataStore> dataStores = new ArrayList<>();
|
||||||
|
|
||||||
|
DataStore validStore1 = Mockito.mock(DataStore.class);
|
||||||
|
DataStoreTO validStoreTO1 = Mockito.mock(DataStoreTO.class);
|
||||||
|
when(validStoreTO1.getUrl()).thenReturn(String.format("http://%s", randomIp1));
|
||||||
|
when(validStore1.getTO()).thenReturn(validStoreTO1);
|
||||||
|
dataStores.add(validStore1);
|
||||||
|
|
||||||
|
dataStores.add(null);
|
||||||
|
|
||||||
|
DataStore nullToStore = Mockito.mock(DataStore.class);
|
||||||
|
when(nullToStore.getTO()).thenReturn(null);
|
||||||
|
dataStores.add(nullToStore);
|
||||||
|
|
||||||
|
DataStore nullUrlStore = Mockito.mock(DataStore.class);
|
||||||
|
DataStoreTO nullUrlStoreTO = Mockito.mock(DataStoreTO.class);
|
||||||
|
when(nullUrlStoreTO.getUrl()).thenReturn(null);
|
||||||
|
when(nullUrlStore.getTO()).thenReturn(nullUrlStoreTO);
|
||||||
|
dataStores.add(nullUrlStore);
|
||||||
|
|
||||||
|
DataStore validStore2 = Mockito.mock(DataStore.class);
|
||||||
|
DataStoreTO validStoreTO2 = Mockito.mock(DataStoreTO.class);
|
||||||
|
when(validStoreTO2.getUrl()).thenReturn(String.format("http://%s", randomIp2));
|
||||||
|
when(validStore2.getTO()).thenReturn(validStoreTO2);
|
||||||
|
dataStores.add(validStore2);
|
||||||
|
|
||||||
|
StringBuilder builder = new StringBuilder();
|
||||||
|
secondaryStorageManager.addSecondaryStorageServerAddressToBuffer(builder, dataStores, "VM");
|
||||||
|
String result = builder.toString();
|
||||||
|
result = result.contains("=") ? result.split("=")[1] : null;
|
||||||
|
|
||||||
|
assertEquals(StringUtils.join(List.of(randomIp1, randomIp2), ","), result);
|
||||||
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void testCreateSecondaryStorageVm_New() {
|
public void testCreateSecondaryStorageVm_New() {
|
||||||
long dataCenterId = 1L;
|
long dataCenterId = 1L;
|
||||||
|
|
|
||||||
|
|
@ -114,6 +114,8 @@ public final class S3Utils {
|
||||||
LOGGER.debug(format("Setting the end point for S3 client with access key %1$s to %2$s.", clientOptions.getAccessKey(), clientOptions.getEndPoint()));
|
LOGGER.debug(format("Setting the end point for S3 client with access key %1$s to %2$s.", clientOptions.getAccessKey(), clientOptions.getEndPoint()));
|
||||||
|
|
||||||
client.setEndpoint(clientOptions.getEndPoint());
|
client.setEndpoint(clientOptions.getEndPoint());
|
||||||
|
// Enable path-style access for S3-compatible storage
|
||||||
|
client.setS3ClientOptions(com.amazonaws.services.s3.S3ClientOptions.builder().setPathStyleAccess(true).build());
|
||||||
}
|
}
|
||||||
|
|
||||||
TRANSFERMANAGER_ACCESSKEY_MAP.put(clientOptions.getAccessKey(), new TransferManager(client));
|
TRANSFERMANAGER_ACCESSKEY_MAP.put(clientOptions.getAccessKey(), new TransferManager(client));
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue