Skip to content

Commit f4987bf

Browse files
committed
Merge release branch 4.18 to 4.19
* 4.18: Storage plugin support to check if volume on datastore requires access for migration (#8655) CKS: fix /opt/bin/deploy-cloudstack-secret in CKS control nodes (#8697)
2 parents b4404fb + f731fe8 commit f4987bf

File tree

6 files changed

+30
-6
lines changed

6 files changed

+30
-6
lines changed

engine/api/src/main/java/org/apache/cloudstack/engine/subsystem/api/storage/PrimaryDataStoreDriver.java

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -44,6 +44,10 @@ enum QualityOfServiceState { MIGRATION, NO_MIGRATION }
4444

4545
void revokeAccess(DataObject dataObject, Host host, DataStore dataStore);
4646

47+
default boolean requiresAccessForMigration(DataObject dataObject) {
48+
return false;
49+
}
50+
4751
/**
4852
* intended for managed storage (cloud.storage_pool.managed = true)
4953
* if not managed, return volume.getSize()

engine/api/src/main/java/org/apache/cloudstack/engine/subsystem/api/storage/VolumeService.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -57,6 +57,8 @@ public VolumeInfo getVolume() {
5757

5858
void revokeAccess(DataObject dataObject, Host host, DataStore dataStore);
5959

60+
boolean requiresAccessForMigration(DataObject dataObject, DataStore dataStore);
61+
6062
/**
6163
* Creates the volume based on the given criteria
6264
*

engine/orchestration/src/main/java/org/apache/cloudstack/engine/orchestration/VolumeOrchestrator.java

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1228,8 +1228,8 @@ public void release(long vmId, long hostId) {
12281228
DataStore dataStore = dataStoreMgr.getDataStore(volumeForVm.getPoolId(), DataStoreRole.Primary);
12291229
PrimaryDataStore primaryDataStore = (PrimaryDataStore)dataStore;
12301230

1231-
// This might impact other managed storages, grant access for PowerFlex storage pool only
1232-
if (primaryDataStore.isManaged() && primaryDataStore.getPoolType() == Storage.StoragePoolType.PowerFlex) {
1231+
// This might impact other managed storages, enable requires access for migration in relevant datastore driver (currently enabled for PowerFlex storage pool only)
1232+
if (primaryDataStore.isManaged() && volService.requiresAccessForMigration(volumeInfo, dataStore)) {
12331233
volService.revokeAccess(volumeInfo, host, dataStore);
12341234
}
12351235
}
@@ -1507,8 +1507,8 @@ public void prepareForMigration(VirtualMachineProfile vm, DeployDestination dest
15071507
disk.setDetails(getDetails(volumeInfo, dataStore));
15081508

15091509
PrimaryDataStore primaryDataStore = (PrimaryDataStore)dataStore;
1510-
// This might impact other managed storages, grant access for PowerFlex storage pool only
1511-
if (primaryDataStore.isManaged() && primaryDataStore.getPoolType() == Storage.StoragePoolType.PowerFlex) {
1510+
// This might impact other managed storages, enable requires access for migration in relevant datastore driver (currently enabled for PowerFlex storage pool only)
1511+
if (primaryDataStore.isManaged() && volService.requiresAccessForMigration(volumeInfo, dataStore)) {
15121512
volService.grantAccess(volFactory.getVolume(vol.getId()), dest.getHost(), dataStore);
15131513
}
15141514

engine/storage/volume/src/main/java/org/apache/cloudstack/storage/volume/VolumeServiceImpl.java

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -264,6 +264,19 @@ public void revokeAccess(DataObject dataObject, Host host, DataStore dataStore)
264264
}
265265
}
266266

267+
@Override
268+
public boolean requiresAccessForMigration(DataObject dataObject, DataStore dataStore) {
269+
DataStoreDriver dataStoreDriver = dataStore != null ? dataStore.getDriver() : null;
270+
if (dataStoreDriver == null) {
271+
return false;
272+
}
273+
274+
if (dataStoreDriver instanceof PrimaryDataStoreDriver) {
275+
return ((PrimaryDataStoreDriver)dataStoreDriver).requiresAccessForMigration(dataObject);
276+
}
277+
return false;
278+
}
279+
267280
@Override
268281
public AsyncCallFuture<VolumeApiResult> createVolumeAsync(VolumeInfo volume, DataStore dataStore) {
269282
AsyncCallFuture<VolumeApiResult> future = new AsyncCallFuture<VolumeApiResult>();

plugins/integrations/kubernetes-service/src/main/resources/script/deploy-cloudstack-secret

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -21,14 +21,14 @@ function usage() {
2121
Usage: ./deploy-cloudstack-secret [OPTIONS]...
2222
To deploy the keys needed for the cloudstack kubernetes provider.
2323
Arguments:
24-
-u, --url string ID of the cluster
24+
-u, --url string URL of the CloudStack API
2525
-k, --key string API Key
2626
-s, --secret string Secret Key
2727
-p, --project string Project ID
2828
Other arguments:
2929
-h, --help Display this help message and exit
3030
Examples:
31-
./deploy-cloudstack-secret -u http://localhost:8080 -k abcd -s efgh
31+
./deploy-cloudstack-secret -u http://10.10.10.10:8080/client/api -k abcd -s efgh
3232
USAGE
3333
exit 0
3434
}

plugins/storage/volume/scaleio/src/main/java/org/apache/cloudstack/storage/datastore/driver/ScaleIOPrimaryDataStoreDriver.java

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -303,6 +303,11 @@ public String getConnectedSdc(long poolId, long hostId) {
303303
return null;
304304
}
305305

306+
@Override
307+
public boolean requiresAccessForMigration(DataObject dataObject) {
308+
return true;
309+
}
310+
306311
@Override
307312
public long getUsedBytes(StoragePool storagePool) {
308313
long usedSpaceBytes = 0;

0 commit comments

Comments
 (0)