mirror of
https://github.com/apache/cloudstack.git
synced 2025-10-26 08:42:29 +01:00
Remove old DeleteTemplateCommand, DeleteVolumeCommand,
DeleteSnapshotBackupCommand, replaced by DeleteCommand.
This commit is contained in:
parent
04b5f53392
commit
cc0de88088
@ -1,32 +0,0 @@
|
||||
// Licensed to the Apache Software Foundation (ASF) under one
|
||||
// or more contributor license agreements. See the NOTICE file
|
||||
// distributed with this work for additional information
|
||||
// regarding copyright ownership. The ASF licenses this file
|
||||
// to you under the Apache License, Version 2.0 (the
|
||||
// "License"); you may not use this file except in compliance
|
||||
// with the License. You may obtain a copy of the License at
|
||||
//
|
||||
// http://www.apache.org/licenses/LICENSE-2.0
|
||||
//
|
||||
// Unless required by applicable law or agreed to in writing,
|
||||
// software distributed under the License is distributed on an
|
||||
// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
|
||||
// KIND, either express or implied. See the License for the
|
||||
// specific language governing permissions and limitations
|
||||
// under the License.
|
||||
package com.cloud.agent.api;
|
||||
|
||||
|
||||
public class DeleteSnapshotBackupAnswer extends Answer {
|
||||
|
||||
protected DeleteSnapshotBackupAnswer() {
|
||||
|
||||
}
|
||||
|
||||
public DeleteSnapshotBackupAnswer(DeleteSnapshotBackupCommand cmd, boolean success, String details) {
|
||||
super(cmd, success, details);
|
||||
}
|
||||
|
||||
|
||||
|
||||
}
|
||||
@ -1,85 +0,0 @@
|
||||
// Licensed to the Apache Software Foundation (ASF) under one
|
||||
// or more contributor license agreements. See the NOTICE file
|
||||
// distributed with this work for additional information
|
||||
// regarding copyright ownership. The ASF licenses this file
|
||||
// to you under the Apache License, Version 2.0 (the
|
||||
// "License"); you may not use this file except in compliance
|
||||
// with the License. You may obtain a copy of the License at
|
||||
//
|
||||
// http://www.apache.org/licenses/LICENSE-2.0
|
||||
//
|
||||
// Unless required by applicable law or agreed to in writing,
|
||||
// software distributed under the License is distributed on an
|
||||
// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
|
||||
// KIND, either express or implied. See the License for the
|
||||
// specific language governing permissions and limitations
|
||||
// under the License.
|
||||
package com.cloud.agent.api;
|
||||
|
||||
import com.cloud.agent.api.LogLevel.Log4jLevel;
|
||||
import com.cloud.agent.api.to.DataStoreTO;
|
||||
import com.cloud.agent.api.to.S3TO;
|
||||
import com.cloud.agent.api.to.SwiftTO;
|
||||
import com.cloud.storage.StoragePool;
|
||||
|
||||
/**
|
||||
* This command encapsulates a primitive operation which enables coalescing the backed up VHD snapshots on the secondary server
|
||||
* This currently assumes that the secondary storage are mounted on the XenServer.
|
||||
*/
|
||||
public class DeleteSnapshotBackupCommand extends SnapshotCommand {
|
||||
@LogLevel(Log4jLevel.Off)
|
||||
private DataStoreTO store;
|
||||
private Boolean all;
|
||||
|
||||
public Boolean isAll() {
|
||||
return all;
|
||||
}
|
||||
|
||||
public void setAll(Boolean all) {
|
||||
this.all = all;
|
||||
}
|
||||
|
||||
public DataStoreTO getDataStore(){
|
||||
return store;
|
||||
}
|
||||
|
||||
protected DeleteSnapshotBackupCommand() {
|
||||
}
|
||||
|
||||
/**
|
||||
* Given 2 VHD files on the secondary storage which are linked in a parent chain as follows:
|
||||
* backupUUID = parent(childUUID)
|
||||
* It gets another VHD
|
||||
* previousBackupVHD = parent(backupUUID)
|
||||
*
|
||||
* And
|
||||
* 1) it coalesces backupUuid into its parent.
|
||||
* 2) It deletes the VHD file corresponding to backupUuid
|
||||
* 3) It sets the parent VHD of childUUID to that of previousBackupUuid
|
||||
*
|
||||
* It takes care of the cases when
|
||||
* 1) childUUID is null. - Step 3 is not done.
|
||||
* 2) previousBackupUUID is null
|
||||
* - Merge childUUID into its parent backupUUID
|
||||
* - Set the UUID of the resultant VHD to childUUID
|
||||
* - Essentially we are deleting the oldest VHD file and setting the current oldest VHD to childUUID
|
||||
*
|
||||
* @param volumeName The name of the volume whose snapshot was taken (something like i-3-SV-ROOT)
|
||||
* @param secondaryStoragePoolURL This is what shows up in the UI when you click on Secondary storage.
|
||||
* In the code, it is present as: In the vmops.host_details table, there is a field mount.parent. This is the value of that field
|
||||
* If you have better ideas on how to get it, you are welcome.
|
||||
* @param backupUUID The VHD which has to be deleted
|
||||
* @param childUUID The child VHD file of the backup whose parent is reset to its grandparent.
|
||||
*/
|
||||
public DeleteSnapshotBackupCommand(DataStoreTO store,
|
||||
String secondaryStoragePoolURL,
|
||||
Long dcId,
|
||||
Long accountId,
|
||||
Long volumeId,
|
||||
String backupUUID, Boolean all)
|
||||
{
|
||||
super(null, secondaryStoragePoolURL, backupUUID, null, dcId, accountId, volumeId);
|
||||
this.store = store;
|
||||
setAll(all);
|
||||
}
|
||||
}
|
||||
@ -1,62 +0,0 @@
|
||||
// Licensed to the Apache Software Foundation (ASF) under one
|
||||
// or more contributor license agreements. See the NOTICE file
|
||||
// distributed with this work for additional information
|
||||
// regarding copyright ownership. The ASF licenses this file
|
||||
// to you under the Apache License, Version 2.0 (the
|
||||
// "License"); you may not use this file except in compliance
|
||||
// with the License. You may obtain a copy of the License at
|
||||
//
|
||||
// http://www.apache.org/licenses/LICENSE-2.0
|
||||
//
|
||||
// Unless required by applicable law or agreed to in writing,
|
||||
// software distributed under the License is distributed on an
|
||||
// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
|
||||
// KIND, either express or implied. See the License for the
|
||||
// specific language governing permissions and limitations
|
||||
// under the License.
|
||||
package com.cloud.agent.api.storage;
|
||||
|
||||
import com.cloud.agent.api.to.DataStoreTO;
|
||||
|
||||
|
||||
public class DeleteTemplateCommand extends ssCommand {
|
||||
private DataStoreTO store;
|
||||
private String templatePath;
|
||||
private Long templateId;
|
||||
private Long accountId;
|
||||
|
||||
|
||||
public DeleteTemplateCommand() {
|
||||
}
|
||||
|
||||
|
||||
public DeleteTemplateCommand(DataStoreTO store, String templatePath, Long templateId, Long accountId) {
|
||||
this.templatePath = templatePath;
|
||||
this.templateId = templateId;
|
||||
this.accountId = accountId;
|
||||
this.store = store;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean executeInSequence() {
|
||||
return true;
|
||||
}
|
||||
|
||||
public String getTemplatePath() {
|
||||
return templatePath;
|
||||
}
|
||||
|
||||
public Long getTemplateId() {
|
||||
return templateId;
|
||||
}
|
||||
|
||||
public Long getAccountId() {
|
||||
return accountId;
|
||||
}
|
||||
|
||||
public DataStoreTO getDataStore() {
|
||||
return store;
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
@ -1,54 +0,0 @@
|
||||
// Licensed to the Apache Software Foundation (ASF) under one
|
||||
// or more contributor license agreements. See the NOTICE file
|
||||
// distributed with this work for additional information
|
||||
// regarding copyright ownership. The ASF licenses this file
|
||||
// to you under the Apache License, Version 2.0 (the
|
||||
// "License"); you may not use this file except in compliance
|
||||
// with the License. You may obtain a copy of the License at
|
||||
//
|
||||
// http://www.apache.org/licenses/LICENSE-2.0
|
||||
//
|
||||
// Unless required by applicable law or agreed to in writing,
|
||||
// software distributed under the License is distributed on an
|
||||
// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
|
||||
// KIND, either express or implied. See the License for the
|
||||
// specific language governing permissions and limitations
|
||||
// under the License.
|
||||
package com.cloud.agent.api.storage;
|
||||
|
||||
import com.cloud.agent.api.to.DataStoreTO;
|
||||
|
||||
public class DeleteVolumeCommand extends ssCommand {
|
||||
private DataStoreTO store;
|
||||
private String volumePath;
|
||||
private Long volumeId;
|
||||
|
||||
public DeleteVolumeCommand() {
|
||||
}
|
||||
|
||||
public DeleteVolumeCommand(DataStoreTO store, Long volumeId, String volumePath) {
|
||||
this.store = store;
|
||||
this.volumeId = volumeId;
|
||||
this.volumePath = volumePath;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean executeInSequence() {
|
||||
return true;
|
||||
}
|
||||
|
||||
public String getVolumePath() {
|
||||
return volumePath;
|
||||
}
|
||||
|
||||
public DataStoreTO getDataStore() {
|
||||
return store;
|
||||
}
|
||||
|
||||
public Long getVolumeId() {
|
||||
return volumeId;
|
||||
}
|
||||
|
||||
|
||||
|
||||
}
|
||||
@ -85,6 +85,10 @@ public class TemplateObjectTO implements DataTO {
|
||||
return id;
|
||||
}
|
||||
|
||||
public void setId(long id){
|
||||
this.id = id;
|
||||
}
|
||||
|
||||
public ImageFormat getFormat() {
|
||||
return format;
|
||||
}
|
||||
@ -113,9 +117,6 @@ public class TemplateObjectTO implements DataTO {
|
||||
this.displayText = desc;
|
||||
}
|
||||
|
||||
public DataStoreTO getImageDataStore() {
|
||||
return this.imageDataStore;
|
||||
}
|
||||
|
||||
@Override
|
||||
public DataObjectType getObjectType() {
|
||||
@ -124,7 +125,11 @@ public class TemplateObjectTO implements DataTO {
|
||||
|
||||
@Override
|
||||
public DataStoreTO getDataStore() {
|
||||
return (DataStoreTO) this.imageDataStore;
|
||||
return this.imageDataStore;
|
||||
}
|
||||
|
||||
public void setDataStore(DataStoreTO store){
|
||||
this.imageDataStore = store;
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
@ -79,6 +79,11 @@ public class VolumeObjectTO implements DataTO {
|
||||
return this.dataStore;
|
||||
}
|
||||
|
||||
|
||||
public void setDataStore(DataStoreTO store){
|
||||
this.dataStore = store;
|
||||
}
|
||||
|
||||
public void setDataStore(PrimaryDataStoreTO dataStore) {
|
||||
this.dataStore = dataStore;
|
||||
}
|
||||
|
||||
@ -51,6 +51,7 @@ import org.apache.cloudstack.framework.async.AsyncCallbackDispatcher;
|
||||
import org.apache.cloudstack.framework.async.AsyncCompletionCallback;
|
||||
import org.apache.cloudstack.framework.async.AsyncRpcConext;
|
||||
import org.apache.cloudstack.storage.command.CommandResult;
|
||||
import org.apache.cloudstack.storage.command.DeleteCommand;
|
||||
import org.apache.cloudstack.storage.datastore.DataObjectManager;
|
||||
import org.apache.cloudstack.storage.datastore.ObjectInDataStoreManager;
|
||||
import org.apache.cloudstack.storage.datastore.db.TemplateDataStoreDao;
|
||||
@ -58,11 +59,11 @@ import org.apache.cloudstack.storage.datastore.db.TemplateDataStoreVO;
|
||||
import org.apache.cloudstack.storage.datastore.db.VolumeDataStoreDao;
|
||||
import org.apache.cloudstack.storage.image.manager.ImageDataManager;
|
||||
import org.apache.cloudstack.storage.image.store.TemplateObject;
|
||||
import org.apache.cloudstack.storage.to.TemplateObjectTO;
|
||||
import org.apache.log4j.Logger;
|
||||
import org.springframework.stereotype.Component;
|
||||
|
||||
import com.cloud.agent.api.Answer;
|
||||
import com.cloud.agent.api.storage.DeleteTemplateCommand;
|
||||
import com.cloud.agent.api.storage.ListTemplateAnswer;
|
||||
import com.cloud.agent.api.storage.ListTemplateCommand;
|
||||
import com.cloud.alert.AlertManager;
|
||||
@ -445,11 +446,14 @@ public class TemplateServiceImpl implements TemplateService {
|
||||
for (String uniqueName : templateInfos.keySet()) {
|
||||
TemplateProp tInfo = templateInfos.get(uniqueName);
|
||||
if (_tmpltMgr.templateIsDeleteable(tInfo.getId())) {
|
||||
// TODO: we cannot directly call deleteTemplateSync here to
|
||||
// we cannot directly call deleteTemplateSync here to
|
||||
// reuse delete logic since in this case, our db does not have
|
||||
// this template at all.
|
||||
DeleteTemplateCommand dtCommand = new DeleteTemplateCommand(store.getTO(), tInfo.getInstallPath(),
|
||||
null, null);
|
||||
TemplateObjectTO tmplTO = new TemplateObjectTO();
|
||||
tmplTO.setDataStore(store.getTO());
|
||||
tmplTO.setPath(tInfo.getInstallPath());
|
||||
tmplTO.setId(tInfo.getId());
|
||||
DeleteCommand dtCommand = new DeleteCommand(tmplTO);
|
||||
EndPoint ep = _epSelector.select(store);
|
||||
Answer answer = ep.sendMessage(dtCommand);
|
||||
if (answer == null || !answer.getResult()) {
|
||||
|
||||
@ -137,7 +137,7 @@ public class DirectAgentTest extends CloudStackTestNGBase {
|
||||
|
||||
TemplateObjectTO template = Mockito.mock(TemplateObjectTO.class);
|
||||
Mockito.when(template.getPath()).thenReturn(getTemplateUrl());
|
||||
Mockito.when(template.getImageDataStore()).thenReturn(imageStore);
|
||||
Mockito.when(template.getDataStore()).thenReturn(imageStore);
|
||||
|
||||
// Mockito.when(image.getTemplate()).thenReturn(template);
|
||||
// CopyTemplateToPrimaryStorageCmd cmd = new
|
||||
|
||||
@ -44,18 +44,20 @@ import org.apache.cloudstack.framework.async.AsyncCallbackDispatcher;
|
||||
import org.apache.cloudstack.framework.async.AsyncCompletionCallback;
|
||||
import org.apache.cloudstack.framework.async.AsyncRpcConext;
|
||||
import org.apache.cloudstack.storage.command.CommandResult;
|
||||
import org.apache.cloudstack.storage.command.DeleteCommand;
|
||||
import org.apache.cloudstack.storage.datastore.DataObjectManager;
|
||||
import org.apache.cloudstack.storage.datastore.ObjectInDataStoreManager;
|
||||
import org.apache.cloudstack.storage.datastore.PrimaryDataStore;
|
||||
import org.apache.cloudstack.storage.datastore.PrimaryDataStoreProviderManager;
|
||||
import org.apache.cloudstack.storage.datastore.db.VolumeDataStoreDao;
|
||||
import org.apache.cloudstack.storage.datastore.db.VolumeDataStoreVO;
|
||||
import org.apache.cloudstack.storage.to.TemplateObjectTO;
|
||||
import org.apache.cloudstack.storage.to.VolumeObjectTO;
|
||||
import org.apache.log4j.Logger;
|
||||
import org.springframework.stereotype.Component;
|
||||
|
||||
import com.cloud.agent.AgentManager;
|
||||
import com.cloud.agent.api.Answer;
|
||||
import com.cloud.agent.api.storage.DeleteVolumeCommand;
|
||||
import com.cloud.agent.api.storage.ListVolumeAnswer;
|
||||
import com.cloud.agent.api.storage.ListVolumeCommand;
|
||||
import com.cloud.agent.api.to.VirtualMachineTO;
|
||||
@ -80,7 +82,6 @@ import com.cloud.user.AccountManager;
|
||||
import com.cloud.user.ResourceLimitService;
|
||||
import com.cloud.utils.NumbersUtil;
|
||||
import com.cloud.utils.db.DB;
|
||||
import com.cloud.utils.exception.CloudRuntimeException;
|
||||
import com.cloud.vm.dao.VMInstanceDao;
|
||||
|
||||
@Component
|
||||
@ -1127,15 +1128,27 @@ public class VolumeServiceImpl implements VolumeService {
|
||||
}
|
||||
|
||||
// Delete volumes which are not present on DB.
|
||||
/*
|
||||
* for (Long uniqueName : volumeInfos.keySet()) { TemplateProp vInfo =
|
||||
* volumeInfos.get(uniqueName);
|
||||
* expungeVolumeAsync(volFactory.getVolume(vInfo.getId(), store));
|
||||
*
|
||||
* String description = "Deleted volume " + vInfo.getTemplateName() +
|
||||
* " on image store " + storeId; s_logger.info(description); }
|
||||
*/
|
||||
for (Long uniqueName : volumeInfos.keySet()) {
|
||||
TemplateProp tInfo = volumeInfos.get(uniqueName);
|
||||
|
||||
//we cannot directly call expungeVolumeAsync here to
|
||||
// reuse delete logic since in this case, our db does not have
|
||||
// this template at all.
|
||||
VolumeObjectTO tmplTO = new VolumeObjectTO();
|
||||
tmplTO.setDataStore(store.getTO());
|
||||
tmplTO.setPath(tInfo.getInstallPath());
|
||||
tmplTO.setId(tInfo.getId());
|
||||
DeleteCommand dtCommand = new DeleteCommand(tmplTO);
|
||||
EndPoint ep = _epSelector.select(store);
|
||||
Answer answer = ep.sendMessage(dtCommand);
|
||||
if (answer == null || !answer.getResult()) {
|
||||
s_logger.info("Failed to deleted volume at store: " + store.getName());
|
||||
|
||||
} else {
|
||||
String description = "Deleted volume " + tInfo.getTemplateName() + " on secondary storage " + storeId;
|
||||
s_logger.info(description);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private Map<Long, TemplateProp> listVolume(DataStore store) {
|
||||
|
||||
@ -91,9 +91,6 @@ import com.cloud.agent.api.CreatePrivateTemplateFromVolumeCommand;
|
||||
import com.cloud.agent.api.CreateStoragePoolCommand;
|
||||
import com.cloud.agent.api.CreateVolumeFromSnapshotAnswer;
|
||||
import com.cloud.agent.api.CreateVolumeFromSnapshotCommand;
|
||||
import com.cloud.agent.api.DeleteSnapshotBackupAnswer;
|
||||
import com.cloud.agent.api.DeleteSnapshotBackupCommand;
|
||||
import com.cloud.agent.api.DeleteSnapshotsDirCommand;
|
||||
import com.cloud.agent.api.DeleteStoragePoolCommand;
|
||||
import com.cloud.agent.api.FenceAnswer;
|
||||
import com.cloud.agent.api.FenceCommand;
|
||||
|
||||
@ -16,6 +16,7 @@
|
||||
// under the License.
|
||||
package com.cloud.agent.manager;
|
||||
|
||||
import org.apache.cloudstack.storage.command.DeleteCommand;
|
||||
import org.apache.cloudstack.storage.command.DownloadCommand;
|
||||
import org.apache.cloudstack.storage.command.DownloadProgressCommand;
|
||||
|
||||
@ -29,7 +30,6 @@ import com.cloud.agent.api.CreatePrivateTemplateFromSnapshotCommand;
|
||||
import com.cloud.agent.api.CreatePrivateTemplateFromVolumeCommand;
|
||||
import com.cloud.agent.api.CreateStoragePoolCommand;
|
||||
import com.cloud.agent.api.CreateVolumeFromSnapshotCommand;
|
||||
import com.cloud.agent.api.DeleteSnapshotBackupCommand;
|
||||
import com.cloud.agent.api.DeleteStoragePoolCommand;
|
||||
import com.cloud.agent.api.GetStorageStatsAnswer;
|
||||
import com.cloud.agent.api.GetStorageStatsCommand;
|
||||
@ -42,7 +42,6 @@ import com.cloud.agent.api.storage.CopyVolumeAnswer;
|
||||
import com.cloud.agent.api.storage.CopyVolumeCommand;
|
||||
import com.cloud.agent.api.storage.CreateAnswer;
|
||||
import com.cloud.agent.api.storage.CreateCommand;
|
||||
import com.cloud.agent.api.storage.DeleteTemplateCommand;
|
||||
import com.cloud.agent.api.storage.DestroyCommand;
|
||||
import com.cloud.agent.api.storage.ListTemplateCommand;
|
||||
import com.cloud.agent.api.storage.ListVolumeCommand;
|
||||
@ -73,9 +72,10 @@ public interface MockStorageManager extends Manager {
|
||||
public GetStorageStatsAnswer GetStorageStats(GetStorageStatsCommand cmd);
|
||||
public Answer ManageSnapshot(ManageSnapshotCommand cmd);
|
||||
public Answer BackupSnapshot(BackupSnapshotCommand cmd, SimulatorInfo info);
|
||||
public Answer DeleteSnapshotBackup(DeleteSnapshotBackupCommand cmd);
|
||||
//public Answer DeleteSnapshotBackup(DeleteSnapshotBackupCommand cmd);
|
||||
public Answer CreateVolumeFromSnapshot(CreateVolumeFromSnapshotCommand cmd);
|
||||
public Answer DeleteTemplate(DeleteTemplateCommand cmd);
|
||||
//public Answer DeleteTemplate(DeleteTemplateCommand cmd);
|
||||
public Answer Delete(DeleteCommand cmd);
|
||||
public Answer SecStorageVMSetup(SecStorageVMSetupCommand cmd);
|
||||
|
||||
public void preinstallTemplates(String url, long zoneId);
|
||||
|
||||
@ -28,7 +28,6 @@ import com.cloud.agent.api.CreatePrivateTemplateFromVolumeCommand;
|
||||
import com.cloud.agent.api.CreateStoragePoolCommand;
|
||||
import com.cloud.agent.api.CreateVolumeFromSnapshotAnswer;
|
||||
import com.cloud.agent.api.CreateVolumeFromSnapshotCommand;
|
||||
import com.cloud.agent.api.DeleteSnapshotBackupCommand;
|
||||
import com.cloud.agent.api.DeleteStoragePoolCommand;
|
||||
import com.cloud.agent.api.GetStorageStatsAnswer;
|
||||
import com.cloud.agent.api.GetStorageStatsCommand;
|
||||
@ -45,7 +44,6 @@ import com.cloud.agent.api.storage.CopyVolumeCommand;
|
||||
import com.cloud.agent.api.storage.CreateAnswer;
|
||||
import com.cloud.agent.api.storage.CreateCommand;
|
||||
import com.cloud.agent.api.storage.CreatePrivateTemplateAnswer;
|
||||
import com.cloud.agent.api.storage.DeleteTemplateCommand;
|
||||
import com.cloud.agent.api.storage.DestroyCommand;
|
||||
import com.cloud.agent.api.storage.DownloadAnswer;
|
||||
import com.cloud.agent.api.storage.ListTemplateAnswer;
|
||||
@ -54,7 +52,9 @@ import com.cloud.agent.api.storage.ListVolumeAnswer;
|
||||
import com.cloud.agent.api.storage.ListVolumeCommand;
|
||||
import com.cloud.agent.api.storage.PrimaryStorageDownloadAnswer;
|
||||
import com.cloud.agent.api.storage.PrimaryStorageDownloadCommand;
|
||||
import com.cloud.agent.api.to.DataObjectType;
|
||||
import com.cloud.agent.api.to.DataStoreTO;
|
||||
import com.cloud.agent.api.to.DataTO;
|
||||
import com.cloud.agent.api.to.StorageFilerTO;
|
||||
import com.cloud.agent.api.to.VolumeTO;
|
||||
import com.cloud.simulator.MockHost;
|
||||
@ -80,6 +80,7 @@ import com.cloud.utils.exception.CloudRuntimeException;
|
||||
import com.cloud.vm.DiskProfile;
|
||||
import com.cloud.vm.VirtualMachine.State;
|
||||
|
||||
import org.apache.cloudstack.storage.command.DeleteCommand;
|
||||
import org.apache.cloudstack.storage.command.DownloadCommand;
|
||||
import org.apache.cloudstack.storage.command.DownloadProgressCommand;
|
||||
import org.apache.log4j.Logger;
|
||||
@ -782,28 +783,6 @@ public class MockStorageManagerImpl extends ManagerBase implements MockStorageMa
|
||||
return new BackupSnapshotAnswer(cmd, true, null, newsnapshot.getName(), true);
|
||||
}
|
||||
|
||||
@Override
|
||||
public Answer DeleteSnapshotBackup(DeleteSnapshotBackupCommand cmd) {
|
||||
Transaction txn = Transaction.open(Transaction.SIMULATOR_DB);
|
||||
try {
|
||||
txn.start();
|
||||
MockVolumeVO backSnapshot = _mockVolumeDao.findByName(cmd.getSnapshotUuid());
|
||||
if (backSnapshot == null) {
|
||||
return new Answer(cmd, false, "can't find the backupsnapshot: " + cmd.getSnapshotUuid());
|
||||
}
|
||||
_mockVolumeDao.remove(backSnapshot.getId());
|
||||
txn.commit();
|
||||
} catch (Exception ex) {
|
||||
txn.rollback();
|
||||
throw new CloudRuntimeException("Error when deleting snapshot");
|
||||
} finally {
|
||||
txn.close();
|
||||
txn = Transaction.open(Transaction.CLOUD_DB);
|
||||
txn.close();
|
||||
}
|
||||
return new Answer(cmd);
|
||||
}
|
||||
|
||||
@Override
|
||||
public CreateVolumeFromSnapshotAnswer CreateVolumeFromSnapshot(CreateVolumeFromSnapshotCommand cmd) {
|
||||
Transaction txn = Transaction.open(Transaction.SIMULATOR_DB);
|
||||
@ -858,20 +837,21 @@ public class MockStorageManagerImpl extends ManagerBase implements MockStorageMa
|
||||
return new CreateVolumeFromSnapshotAnswer(cmd, true, null, volume.getPath());
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public Answer DeleteTemplate(DeleteTemplateCommand cmd) {
|
||||
public Answer Delete(DeleteCommand cmd) {
|
||||
Transaction txn = Transaction.open(Transaction.SIMULATOR_DB);
|
||||
try {
|
||||
txn.start();
|
||||
MockVolumeVO template = _mockVolumeDao.findByStoragePathAndType(cmd.getTemplatePath());
|
||||
MockVolumeVO template = _mockVolumeDao.findByStoragePathAndType(cmd.getData().getPath());
|
||||
if (template == null) {
|
||||
return new Answer(cmd, false, "can't find template:" + cmd.getTemplatePath());
|
||||
return new Answer(cmd, false, "can't find object to delete:" + cmd.getData().getPath());
|
||||
}
|
||||
_mockVolumeDao.remove(template.getId());
|
||||
txn.commit();
|
||||
} catch (Exception ex) {
|
||||
txn.rollback();
|
||||
throw new CloudRuntimeException("Error when deleting template");
|
||||
throw new CloudRuntimeException("Error when deleting object");
|
||||
} finally {
|
||||
txn.close();
|
||||
txn = Transaction.open(Transaction.CLOUD_DB);
|
||||
@ -880,6 +860,9 @@ public class MockStorageManagerImpl extends ManagerBase implements MockStorageMa
|
||||
return new Answer(cmd);
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
@Override
|
||||
public Answer SecStorageVMSetup(SecStorageVMSetupCommand cmd) {
|
||||
return new Answer(cmd);
|
||||
|
||||
@ -26,6 +26,7 @@ import javax.naming.ConfigurationException;
|
||||
import org.apache.log4j.Logger;
|
||||
import org.springframework.stereotype.Component;
|
||||
|
||||
import org.apache.cloudstack.storage.command.DeleteCommand;
|
||||
import org.apache.cloudstack.storage.command.DownloadCommand;
|
||||
import org.apache.cloudstack.storage.command.DownloadProgressCommand;
|
||||
|
||||
@ -46,7 +47,6 @@ import com.cloud.agent.api.CreatePrivateTemplateFromSnapshotCommand;
|
||||
import com.cloud.agent.api.CreatePrivateTemplateFromVolumeCommand;
|
||||
import com.cloud.agent.api.CreateStoragePoolCommand;
|
||||
import com.cloud.agent.api.CreateVolumeFromSnapshotCommand;
|
||||
import com.cloud.agent.api.DeleteSnapshotBackupCommand;
|
||||
import com.cloud.agent.api.DeleteStoragePoolCommand;
|
||||
import com.cloud.agent.api.GetDomRVersionCmd;
|
||||
import com.cloud.agent.api.GetHostStatsCommand;
|
||||
@ -80,7 +80,6 @@ import com.cloud.agent.api.routing.SetStaticNatRulesCommand;
|
||||
import com.cloud.agent.api.routing.VmDataCommand;
|
||||
import com.cloud.agent.api.storage.CopyVolumeCommand;
|
||||
import com.cloud.agent.api.storage.CreateCommand;
|
||||
import com.cloud.agent.api.storage.DeleteTemplateCommand;
|
||||
import com.cloud.agent.api.storage.DestroyCommand;
|
||||
import com.cloud.agent.api.storage.ListTemplateCommand;
|
||||
import com.cloud.agent.api.storage.ListVolumeCommand;
|
||||
@ -279,12 +278,10 @@ public class SimulatorManagerImpl extends ManagerBase implements SimulatorManage
|
||||
return _mockStorageMgr.ManageSnapshot((ManageSnapshotCommand)cmd);
|
||||
} else if (cmd instanceof BackupSnapshotCommand) {
|
||||
return _mockStorageMgr.BackupSnapshot((BackupSnapshotCommand)cmd, info);
|
||||
} else if (cmd instanceof DeleteSnapshotBackupCommand) {
|
||||
return _mockStorageMgr.DeleteSnapshotBackup((DeleteSnapshotBackupCommand)cmd);
|
||||
} else if (cmd instanceof CreateVolumeFromSnapshotCommand) {
|
||||
return _mockStorageMgr.CreateVolumeFromSnapshot((CreateVolumeFromSnapshotCommand)cmd);
|
||||
} else if (cmd instanceof DeleteTemplateCommand) {
|
||||
return _mockStorageMgr.DeleteTemplate((DeleteTemplateCommand)cmd);
|
||||
} else if (cmd instanceof DeleteCommand) {
|
||||
return _mockStorageMgr.Delete((DeleteCommand)cmd);
|
||||
} else if (cmd instanceof SecStorageVMSetupCommand) {
|
||||
return _mockStorageMgr.SecStorageVMSetup((SecStorageVMSetupCommand)cmd);
|
||||
} else if (cmd instanceof CreatePrivateTemplateFromSnapshotCommand) {
|
||||
|
||||
@ -65,8 +65,10 @@ import org.apache.cloudstack.engine.subsystem.api.storage.ImageStoreProvider;
|
||||
import org.apache.cloudstack.engine.subsystem.api.storage.PrimaryDataStoreInfo;
|
||||
import org.apache.cloudstack.engine.subsystem.api.storage.SnapshotDataFactory;
|
||||
import org.apache.cloudstack.engine.subsystem.api.storage.StoragePoolAllocator;
|
||||
import org.apache.cloudstack.engine.subsystem.api.storage.TemplateInfo;
|
||||
import org.apache.cloudstack.engine.subsystem.api.storage.TemplateService;
|
||||
import org.apache.cloudstack.engine.subsystem.api.storage.VolumeDataFactory;
|
||||
import org.apache.cloudstack.engine.subsystem.api.storage.VolumeInfo;
|
||||
import org.apache.cloudstack.engine.subsystem.api.storage.VolumeService;
|
||||
import org.apache.cloudstack.engine.subsystem.api.storage.VolumeService.VolumeApiResult;
|
||||
import org.apache.cloudstack.engine.subsystem.api.storage.ZoneScope;
|
||||
@ -90,10 +92,7 @@ import com.cloud.agent.AgentManager;
|
||||
import com.cloud.agent.api.Answer;
|
||||
import com.cloud.agent.api.Command;
|
||||
import com.cloud.agent.api.StoragePoolInfo;
|
||||
import com.cloud.agent.api.storage.DeleteTemplateCommand;
|
||||
import com.cloud.agent.api.storage.DeleteVolumeCommand;
|
||||
import com.cloud.agent.manager.Commands;
|
||||
import com.cloud.alert.AlertManager;
|
||||
import com.cloud.api.ApiDBUtils;
|
||||
import com.cloud.api.query.dao.TemplateJoinDao;
|
||||
import com.cloud.api.query.vo.TemplateJoinVO;
|
||||
@ -112,11 +111,8 @@ import com.cloud.dc.DataCenterVO;
|
||||
import com.cloud.dc.HostPodVO;
|
||||
import com.cloud.dc.dao.ClusterDao;
|
||||
import com.cloud.dc.dao.DataCenterDao;
|
||||
import com.cloud.dc.dao.HostPodDao;
|
||||
import com.cloud.deploy.DataCenterDeployment;
|
||||
import com.cloud.deploy.DeploymentPlanner.ExcludeList;
|
||||
import com.cloud.domain.dao.DomainDao;
|
||||
import com.cloud.event.dao.EventDao;
|
||||
import com.cloud.exception.AgentUnavailableException;
|
||||
import com.cloud.exception.ConnectionException;
|
||||
import com.cloud.exception.DiscoveryException;
|
||||
@ -133,39 +129,28 @@ import com.cloud.host.Status;
|
||||
import com.cloud.host.dao.HostDao;
|
||||
import com.cloud.hypervisor.Hypervisor.HypervisorType;
|
||||
import com.cloud.hypervisor.HypervisorGuruManager;
|
||||
import com.cloud.hypervisor.dao.HypervisorCapabilitiesDao;
|
||||
import com.cloud.org.Grouping;
|
||||
import com.cloud.org.Grouping.AllocationState;
|
||||
import com.cloud.resource.ResourceState;
|
||||
import com.cloud.server.ManagementServer;
|
||||
import com.cloud.server.StatsCollector;
|
||||
import com.cloud.service.dao.ServiceOfferingDao;
|
||||
import com.cloud.storage.Storage.ImageFormat;
|
||||
import com.cloud.storage.Storage.StoragePoolType;
|
||||
import com.cloud.storage.Volume.Type;
|
||||
import com.cloud.storage.dao.DiskOfferingDao;
|
||||
import com.cloud.storage.dao.SnapshotDao;
|
||||
import com.cloud.storage.dao.SnapshotPolicyDao;
|
||||
import com.cloud.storage.dao.StoragePoolHostDao;
|
||||
import com.cloud.storage.dao.StoragePoolWorkDao;
|
||||
import com.cloud.storage.dao.VMTemplateDao;
|
||||
import com.cloud.storage.dao.VMTemplatePoolDao;
|
||||
import com.cloud.storage.dao.VMTemplateS3Dao;
|
||||
import com.cloud.storage.dao.VMTemplateSwiftDao;
|
||||
import com.cloud.storage.dao.VMTemplateZoneDao;
|
||||
import com.cloud.storage.dao.VolumeDao;
|
||||
import com.cloud.storage.listener.StoragePoolMonitor;
|
||||
import com.cloud.storage.listener.VolumeStateListener;
|
||||
import com.cloud.storage.s3.S3Manager;
|
||||
import com.cloud.storage.secondary.SecondaryStorageVmManager;
|
||||
import com.cloud.storage.snapshot.SnapshotManager;
|
||||
import com.cloud.tags.dao.ResourceTagDao;
|
||||
import com.cloud.template.TemplateManager;
|
||||
import com.cloud.user.Account;
|
||||
import com.cloud.user.AccountManager;
|
||||
import com.cloud.user.User;
|
||||
import com.cloud.user.UserContext;
|
||||
import com.cloud.user.dao.AccountDao;
|
||||
import com.cloud.user.dao.UserDao;
|
||||
import com.cloud.utils.NumbersUtil;
|
||||
import com.cloud.utils.Pair;
|
||||
@ -184,13 +169,10 @@ import com.cloud.utils.db.SearchCriteria.Op;
|
||||
import com.cloud.utils.db.Transaction;
|
||||
import com.cloud.utils.exception.CloudRuntimeException;
|
||||
import com.cloud.vm.DiskProfile;
|
||||
import com.cloud.vm.UserVmManager;
|
||||
import com.cloud.vm.VMInstanceVO;
|
||||
import com.cloud.vm.VirtualMachine.State;
|
||||
import com.cloud.vm.VirtualMachineProfile;
|
||||
import com.cloud.vm.VirtualMachineProfileImpl;
|
||||
import com.cloud.vm.dao.ConsoleProxyDao;
|
||||
import com.cloud.vm.dao.UserVmDao;
|
||||
import com.cloud.vm.dao.VMInstanceDao;
|
||||
|
||||
@Component
|
||||
@ -200,8 +182,6 @@ public class StorageManagerImpl extends ManagerBase implements StorageManager, C
|
||||
|
||||
protected String _name;
|
||||
@Inject
|
||||
protected UserVmManager _userVmMgr;
|
||||
@Inject
|
||||
protected AgentManager _agentMgr;
|
||||
@Inject
|
||||
protected TemplateManager _tmpltMgr;
|
||||
@ -214,34 +194,16 @@ public class StorageManagerImpl extends ManagerBase implements StorageManager, C
|
||||
@Inject
|
||||
protected HostDao _hostDao;
|
||||
@Inject
|
||||
protected ConsoleProxyDao _consoleProxyDao;
|
||||
@Inject
|
||||
protected SnapshotDao _snapshotDao;
|
||||
@Inject
|
||||
protected SnapshotManager _snapMgr;
|
||||
@Inject
|
||||
protected SnapshotPolicyDao _snapshotPolicyDao;
|
||||
@Inject
|
||||
protected StoragePoolHostDao _storagePoolHostDao;
|
||||
@Inject
|
||||
protected AlertManager _alertMgr;
|
||||
@Inject
|
||||
protected VMTemplatePoolDao _vmTemplatePoolDao = null;
|
||||
@Inject
|
||||
protected VMTemplateZoneDao _vmTemplateZoneDao;
|
||||
@Inject
|
||||
protected VMTemplateSwiftDao _vmTemplateSwiftDao = null;
|
||||
@Inject
|
||||
protected VMTemplateS3Dao _vmTemplateS3Dao;
|
||||
@Inject
|
||||
protected S3Manager _s3Mgr;
|
||||
@Inject
|
||||
protected VMTemplateDao _vmTemplateDao = null;
|
||||
@Inject
|
||||
protected StoragePoolHostDao _poolHostDao = null;
|
||||
@Inject
|
||||
protected UserVmDao _userVmDao;
|
||||
@Inject
|
||||
protected VMInstanceDao _vmInstanceDao;
|
||||
@Inject
|
||||
protected PrimaryDataStoreDao _storagePoolDao = null;
|
||||
@ -262,22 +224,10 @@ public class StorageManagerImpl extends ManagerBase implements StorageManager, C
|
||||
@Inject
|
||||
protected CapacityManager _capacityMgr;
|
||||
@Inject
|
||||
protected DiskOfferingDao _diskOfferingDao;
|
||||
@Inject
|
||||
protected AccountDao _accountDao;
|
||||
@Inject
|
||||
protected EventDao _eventDao = null;
|
||||
@Inject
|
||||
protected DataCenterDao _dcDao = null;
|
||||
@Inject
|
||||
protected HostPodDao _podDao = null;
|
||||
@Inject
|
||||
protected VMTemplateDao _templateDao;
|
||||
@Inject
|
||||
protected ServiceOfferingDao _offeringDao;
|
||||
@Inject
|
||||
protected DomainDao _domainDao;
|
||||
@Inject
|
||||
protected UserDao _userDao;
|
||||
@Inject
|
||||
protected ClusterDao _clusterDao;
|
||||
@ -288,8 +238,6 @@ public class StorageManagerImpl extends ManagerBase implements StorageManager, C
|
||||
@Inject
|
||||
protected VolumeDao _volumeDao;
|
||||
@Inject
|
||||
protected SecondaryStorageVmManager _ssvmMgr;
|
||||
@Inject
|
||||
ConfigurationDao _configDao;
|
||||
@Inject
|
||||
ManagementServer _msServer;
|
||||
@ -306,13 +254,7 @@ public class StorageManagerImpl extends ManagerBase implements StorageManager, C
|
||||
@Inject
|
||||
SnapshotDataFactory snapshotFactory;
|
||||
@Inject
|
||||
protected HypervisorCapabilitiesDao _hypervisorCapabilitiesDao;
|
||||
@Inject
|
||||
ConfigurationServer _configServer;
|
||||
|
||||
@Inject
|
||||
protected ResourceTagDao _resourceTagDao;
|
||||
|
||||
@Inject
|
||||
DataStoreManager _dataStoreMgr;
|
||||
@Inject
|
||||
@ -514,7 +456,7 @@ public class StorageManagerImpl extends ManagerBase implements StorageManager, C
|
||||
* cmd
|
||||
*/
|
||||
}
|
||||
List<StoragePoolHostVO> poolHosts = _poolHostDao.listByHostStatus(poolVO.getId(), Status.Up);
|
||||
List<StoragePoolHostVO> poolHosts = _storagePoolHostDao.listByHostStatus(poolVO.getId(), Status.Up);
|
||||
Collections.shuffle(poolHosts);
|
||||
if (poolHosts != null && poolHosts.size() > 0) {
|
||||
for (StoragePoolHostVO sphvo : poolHosts) {
|
||||
@ -1153,10 +1095,10 @@ public class StorageManagerImpl extends ManagerBase implements StorageManager, C
|
||||
}
|
||||
String installPath = destroyedTemplateStoreVO.getInstallPath();
|
||||
|
||||
TemplateInfo tmpl = tmplFactory.getTemplate(destroyedTemplateStoreVO.getTemplateId(), store);
|
||||
if (installPath != null) {
|
||||
EndPoint ep = _epSelector.select(store);
|
||||
Command cmd = new DeleteTemplateCommand(store.getTO(), destroyedTemplateStoreVO.getInstallPath(),
|
||||
destroyedTemplate.getId(), destroyedTemplate.getAccountId());
|
||||
Command cmd = new DeleteCommand(tmpl.getTO());
|
||||
Answer answer = ep.sendMessage(cmd);
|
||||
|
||||
if (answer == null || !answer.getResult()) {
|
||||
@ -1230,10 +1172,11 @@ public class StorageManagerImpl extends ManagerBase implements StorageManager, C
|
||||
|
||||
String installPath = destroyedStoreVO.getInstallPath();
|
||||
|
||||
VolumeInfo vol = this.volFactory.getVolume(destroyedStoreVO.getVolumeId(), store);
|
||||
|
||||
if (installPath != null) {
|
||||
EndPoint ep = _epSelector.select(store);
|
||||
DeleteVolumeCommand cmd = new DeleteVolumeCommand(store.getTO(), destroyedStoreVO.getVolumeId(),
|
||||
destroyedStoreVO.getInstallPath());
|
||||
DeleteCommand cmd = new DeleteCommand(vol.getTO());
|
||||
Answer answer = ep.sendMessage(cmd);
|
||||
if (answer == null || !answer.getResult()) {
|
||||
s_logger.debug("Failed to delete " + destroyedStoreVO + " due to "
|
||||
|
||||
@ -34,9 +34,11 @@ import org.springframework.stereotype.Component;
|
||||
|
||||
import com.cloud.agent.AgentManager;
|
||||
import com.cloud.agent.api.Answer;
|
||||
import com.cloud.agent.api.storage.DeleteTemplateCommand;
|
||||
import com.cloud.agent.api.to.SwiftTO;
|
||||
import org.apache.cloudstack.api.command.admin.swift.AddSwiftCmd;
|
||||
import org.apache.cloudstack.storage.command.DeleteCommand;
|
||||
import org.apache.cloudstack.storage.to.TemplateObjectTO;
|
||||
|
||||
import com.cloud.configuration.Config;
|
||||
import com.cloud.configuration.dao.ConfigurationDao;
|
||||
import com.cloud.dc.DataCenterVO;
|
||||
@ -144,7 +146,10 @@ public class SwiftManagerImpl extends ManagerBase implements SwiftManager {
|
||||
s_logger.warn(msg);
|
||||
throw new CloudRuntimeException(msg);
|
||||
}
|
||||
Answer answer = _agentMgr.sendToSSVM(null, new DeleteTemplateCommand(swift, null, cmd.getId(), null));
|
||||
TemplateObjectTO tmplTO = new TemplateObjectTO();
|
||||
tmplTO.setDataStore(swift);
|
||||
tmplTO.setId(cmd.getId());
|
||||
Answer answer = _agentMgr.sendToSSVM(null, new DeleteCommand(tmplTO));
|
||||
if (answer == null || !answer.getResult()) {
|
||||
msg = "Failed to delete " + tmpltSwiftRef + " due to " + ((answer == null) ? "answer is null" : answer.getDetails());
|
||||
s_logger.warn(msg);
|
||||
@ -170,7 +175,9 @@ public class SwiftManagerImpl extends ManagerBase implements SwiftManager {
|
||||
s_logger.warn(msg);
|
||||
throw new CloudRuntimeException(msg);
|
||||
}
|
||||
Answer answer = _agentMgr.sendToSSVM(null, new DeleteTemplateCommand(swift, null, cmd.getId(), null));
|
||||
TemplateObjectTO tmplTO = new TemplateObjectTO();
|
||||
tmplTO.setId(cmd.getId());
|
||||
Answer answer = _agentMgr.sendToSSVM(null, new DeleteCommand(tmplTO));
|
||||
if (answer == null || !answer.getResult()) {
|
||||
msg = "Failed to delete " + tmpltSwiftRef + " due to " + ((answer == null) ? "answer is null" : answer.getDetails());
|
||||
s_logger.warn(msg);
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user