Refactor and improvements

This commit is contained in:
nvazquez 2018-05-17 23:49:42 -03:00
parent 9a692752c4
commit 5f00a3e00e
36 changed files with 94 additions and 153 deletions

View File

@ -56,11 +56,6 @@
<artifactId>cloud-framework-ca</artifactId>
<version>${project.version}</version>
</dependency>
<dependency>
<groupId>org.apache.cloudstack</groupId>
<artifactId>cloud-framework-backup</artifactId>
<version>${project.version}</version>
</dependency>
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-lang3</artifactId>

View File

@ -33,6 +33,8 @@ public class ApiConstants {
public static final String LIST_LB_VMIPS = "lbvmips";
public static final String AVAILABLE = "available";
public static final String BACKUP_ID = "backupid";
public static final String BACKUP_EXTERNAL_POLICY_ID = "externalid";
public static final String BACKUP_POLICY_ID = "backuppolicyid";
public static final String BITS = "bits";
public static final String BOOTABLE = "bootable";
public static final String BIND_DN = "binddn";

View File

@ -21,8 +21,8 @@ import org.apache.cloudstack.api.response.BackupPolicyResponse;
import org.apache.cloudstack.api.response.BackupResponse;
import org.apache.cloudstack.api.response.ListResponse;
import org.apache.cloudstack.context.CallContext;
import org.apache.cloudstack.framework.backup.Backup;
import org.apache.cloudstack.framework.backup.BackupPolicy;
import org.apache.cloudstack.backup.Backup;
import org.apache.cloudstack.backup.BackupPolicy;
import java.util.ArrayList;
import java.util.List;
@ -37,7 +37,7 @@ public abstract class BaseBackupListCmd extends BaseListCmd {
continue;
}
final BackupPolicyResponse backupPolicyResponse = new BackupPolicyResponse();
if (!policy.isImported()) {
if (policy.isImported()) {
backupPolicyResponse.setId(policy.getUuid());
}
backupPolicyResponse.setName(policy.getName());

View File

@ -118,7 +118,7 @@ import org.apache.cloudstack.api.response.VpcResponse;
import org.apache.cloudstack.api.response.VpnUsersResponse;
import org.apache.cloudstack.api.response.ZoneResponse;
import org.apache.cloudstack.config.Configuration;
import org.apache.cloudstack.framework.backup.Backup;
import org.apache.cloudstack.backup.Backup;
import org.apache.cloudstack.network.lb.ApplicationLoadBalancerRule;
import org.apache.cloudstack.region.PortableIp;
import org.apache.cloudstack.region.PortableIpRange;

View File

@ -29,6 +29,7 @@ import org.apache.cloudstack.api.ApiErrorCode;
import org.apache.cloudstack.api.BaseCmd;
import org.apache.cloudstack.api.Parameter;
import org.apache.cloudstack.api.ServerApiException;
import org.apache.cloudstack.api.response.BackupPolicyResponse;
import org.apache.cloudstack.api.response.SuccessResponse;
import org.apache.cloudstack.backup.BackupManager;
import org.apache.cloudstack.context.CallContext;
@ -50,17 +51,18 @@ public class DeleteBackupPolicyCmd extends BaseCmd {
//////////////// API parameters /////////////////////
////////////////////////////////////////////////////
@Parameter(name = ApiConstants.ID,
type = CommandType.STRING,
@Parameter(name = ApiConstants.BACKUP_POLICY_ID,
type = CommandType.UUID,
entityType = BackupPolicyResponse.class,
required = true,
description = "The backup policy internal ID")
private String id;
private Long id;
/////////////////////////////////////////////////////
/////////////////// Accessors ///////////////////////
/////////////////////////////////////////////////////
public String getId() {
public Long getId() {
return id;
}

View File

@ -29,7 +29,7 @@ import org.apache.cloudstack.api.response.BackupPolicyResponse;
import org.apache.cloudstack.api.response.ZoneResponse;
import org.apache.cloudstack.backup.BackupManager;
import org.apache.cloudstack.context.CallContext;
import org.apache.cloudstack.framework.backup.BackupPolicy;
import org.apache.cloudstack.backup.BackupPolicy;
import com.cloud.exception.ConcurrentOperationException;
import com.cloud.exception.InsufficientCapacityException;
@ -39,12 +39,12 @@ import com.cloud.exception.ResourceAllocationException;
import com.cloud.exception.ResourceUnavailableException;
import com.cloud.utils.exception.CloudRuntimeException;
@APICommand(name = CreateBackupPolicyCmd.APINAME,
description = "Creates a backup policy by mapping it to an existing policy on the provider",
@APICommand(name = ImportBackupPolicyCmd.APINAME,
description = "Imports a backup policy from the backup provider",
responseObject = BackupPolicyResponse.class, since = "4.12.0",
authorized = {RoleType.Admin})
public class CreateBackupPolicyCmd extends BaseCmd {
public static final String APINAME = "createBackupPolicy";
public class ImportBackupPolicyCmd extends BaseCmd {
public static final String APINAME = "importBackupPolicy";
@Inject
BackupManager backupManager;
@ -57,11 +57,11 @@ public class CreateBackupPolicyCmd extends BaseCmd {
description = "the name of the backup policy")
private String policyName;
@Parameter(name = ApiConstants.POLICY_ID,
@Parameter(name = ApiConstants.BACKUP_EXTERNAL_POLICY_ID,
type = CommandType.STRING,
required = true,
description = "The backup policy ID (on backup provider side)")
private String policyId;
private String policyExternalId;
@Parameter(name = ApiConstants.ZONE_ID, type = BaseCmd.CommandType.UUID, entityType = ZoneResponse.class,
description = "The zone ID")
@ -75,8 +75,8 @@ public class CreateBackupPolicyCmd extends BaseCmd {
return policyName;
}
public String getPolicyId() {
return policyId;
public String getPolicyExternalId() {
return policyExternalId;
}
public Long getZoneId() {
@ -110,7 +110,7 @@ public class CreateBackupPolicyCmd extends BaseCmd {
@Override
public void execute() throws ResourceUnavailableException, InsufficientCapacityException, ServerApiException, ConcurrentOperationException, ResourceAllocationException, NetworkRuleConflictException {
try {
BackupPolicy policy = backupManager.addBackupPolicy(policyId, policyName, zoneId);
BackupPolicy policy = backupManager.addBackupPolicy(policyExternalId, policyName, zoneId);
if (policy != null) {
setupResponse(policy);
} else {

View File

@ -30,7 +30,7 @@ import org.apache.cloudstack.api.Parameter;
import org.apache.cloudstack.api.response.BackupProviderResponse;
import org.apache.cloudstack.api.response.ListResponse;
import org.apache.cloudstack.backup.BackupManager;
import org.apache.cloudstack.framework.backup.BackupProvider;
import org.apache.cloudstack.backup.BackupProvider;
import com.cloud.user.Account;
@ -48,7 +48,7 @@ public class ListBackupProvidersCmd extends BaseListCmd {
//////////////// API parameters /////////////////////
/////////////////////////////////////////////////////
@Parameter(name = ApiConstants.NAME, type = CommandType.STRING, description = "List CA service provider by name")
@Parameter(name = ApiConstants.NAME, type = CommandType.STRING, description = "List Backup and Recovery provider by name")
private String name;
/////////////////////////////////////////////////////

View File

@ -24,6 +24,7 @@ import org.apache.cloudstack.api.ApiErrorCode;
import org.apache.cloudstack.api.BaseCmd;
import org.apache.cloudstack.api.Parameter;
import org.apache.cloudstack.api.ServerApiException;
import org.apache.cloudstack.api.response.BackupPolicyResponse;
import org.apache.cloudstack.api.response.SuccessResponse;
import org.apache.cloudstack.api.response.UserVmResponse;
import org.apache.cloudstack.api.response.ZoneResponse;
@ -53,14 +54,15 @@ public class AssignBackupPolicyCmd extends BaseCmd {
type = CommandType.UUID,
entityType = UserVmResponse.class,
required = true,
description = "id of the VM to be moved")
description = "id of the VM to be assigned to the backup policy")
private Long virtualMachineId;
@Parameter(name = ApiConstants.POLICY_ID,
type = CommandType.STRING,
@Parameter(name = ApiConstants.BACKUP_POLICY_ID,
type = CommandType.UUID,
entityType = BackupPolicyResponse.class,
required = true,
description = "id of the backup policy")
private String policyId;
private Long policyId;
@Parameter(name = ApiConstants.ZONE_ID, type = CommandType.UUID, entityType = ZoneResponse.class,
description = "the zone ID", required = true)
@ -74,7 +76,7 @@ public class AssignBackupPolicyCmd extends BaseCmd {
return virtualMachineId;
}
public String getPolicyId() {
public Long getPolicyId() {
return policyId;
}
@ -100,9 +102,9 @@ public class AssignBackupPolicyCmd extends BaseCmd {
public void execute() throws ResourceUnavailableException, InsufficientCapacityException, ServerApiException, ConcurrentOperationException, ResourceAllocationException, NetworkRuleConflictException {
try {
Long virtualMachineId = getVirtualMachineId();
String policyUuid = getPolicyId();
Long policyId = getPolicyId();
Long zoneId = getZoneId();
boolean result = backupManager.assignVMToBackupPolicy(policyUuid, virtualMachineId, zoneId);
boolean result = backupManager.assignVMToBackupPolicy(policyId, virtualMachineId, zoneId);
if (result) {
SuccessResponse response = new SuccessResponse(getCommandName());
response.setResponseName(getCommandName());

View File

@ -30,7 +30,7 @@ import org.apache.cloudstack.api.ServerApiException;
import org.apache.cloudstack.api.response.BackupPolicyResponse;
import org.apache.cloudstack.api.response.ZoneResponse;
import org.apache.cloudstack.backup.BackupManager;
import org.apache.cloudstack.framework.backup.BackupPolicy;
import org.apache.cloudstack.backup.BackupPolicy;
import com.cloud.exception.ConcurrentOperationException;
import com.cloud.exception.InvalidParameterValueException;
@ -56,7 +56,7 @@ public class ListBackupPoliciesCmd extends BaseBackupListCmd {
private Long zoneId;
@Parameter(name = ApiConstants.EXTERNAL, type = CommandType.BOOLEAN,
description = "True if list external backup policies")
description = "True if list external backup policies (provider policies)")
private Boolean external;
/////////////////////////////////////////////////////

View File

@ -33,7 +33,7 @@ import org.apache.cloudstack.api.response.BackupResponse;
import org.apache.cloudstack.api.response.UserVmResponse;
import org.apache.cloudstack.backup.BackupManager;
import org.apache.cloudstack.context.CallContext;
import org.apache.cloudstack.framework.backup.Backup;
import org.apache.cloudstack.backup.Backup;
import javax.inject.Inject;
import java.util.List;

View File

@ -29,6 +29,7 @@ import org.apache.cloudstack.api.ApiErrorCode;
import org.apache.cloudstack.api.BaseCmd;
import org.apache.cloudstack.api.Parameter;
import org.apache.cloudstack.api.ServerApiException;
import org.apache.cloudstack.api.response.BackupResponse;
import org.apache.cloudstack.api.response.SuccessResponse;
import org.apache.cloudstack.api.response.UserVmResponse;
import org.apache.cloudstack.api.response.ZoneResponse;
@ -58,10 +59,11 @@ public class RestoreBackupCmd extends BaseCmd {
private Long virtualMachineId;
@Parameter(name = ApiConstants.BACKUP_ID,
type = CommandType.STRING,
type = CommandType.UUID,
entityType = BackupResponse.class,
required = true,
description = "id of the backup")
private String backupId;
private Long backupId;
@Parameter(name = ApiConstants.ZONE_ID, type = BaseCmd.CommandType.UUID, entityType = ZoneResponse.class,
description = "The zone ID")
@ -75,7 +77,7 @@ public class RestoreBackupCmd extends BaseCmd {
return virtualMachineId;
}
public String getBackupId() {
public Long getBackupId() {
return backupId;
}

View File

@ -29,6 +29,7 @@ import org.apache.cloudstack.api.ApiErrorCode;
import org.apache.cloudstack.api.BaseCmd;
import org.apache.cloudstack.api.Parameter;
import org.apache.cloudstack.api.ServerApiException;
import org.apache.cloudstack.api.response.BackupResponse;
import org.apache.cloudstack.api.response.SuccessResponse;
import org.apache.cloudstack.api.response.UserVmResponse;
import org.apache.cloudstack.api.response.VolumeResponse;
@ -67,10 +68,11 @@ public class RestoreBackupVolumeCmd extends BaseCmd {
private Long virtualMachineId;
@Parameter(name = ApiConstants.BACKUP_ID,
type = CommandType.STRING,
type = CommandType.UUID,
entityType = BackupResponse.class,
required = true,
description = "id of the backup")
private String backupId;
private Long backupId;
@Parameter(name = ApiConstants.ZONE_ID, type = BaseCmd.CommandType.UUID, entityType = ZoneResponse.class,
description = "The zone ID")
@ -88,7 +90,7 @@ public class RestoreBackupVolumeCmd extends BaseCmd {
return virtualMachineId;
}
public String getBackupId() {
public Long getBackupId() {
return backupId;
}

View File

@ -19,7 +19,7 @@ package org.apache.cloudstack.api.response;
import org.apache.cloudstack.api.ApiConstants;
import org.apache.cloudstack.api.BaseResponse;
import org.apache.cloudstack.api.EntityReference;
import org.apache.cloudstack.framework.backup.BackupPolicy;
import org.apache.cloudstack.backup.BackupPolicy;
import com.cloud.serializer.Param;
import com.google.gson.annotations.SerializedName;

View File

@ -20,7 +20,7 @@ package org.apache.cloudstack.api.response;
import org.apache.cloudstack.api.ApiConstants;
import org.apache.cloudstack.api.BaseResponse;
import org.apache.cloudstack.api.EntityReference;
import org.apache.cloudstack.framework.backup.BackupProvider;
import org.apache.cloudstack.backup.BackupProvider;
import com.cloud.serializer.Param;
import com.google.gson.annotations.SerializedName;

View File

@ -5,7 +5,7 @@ import com.google.gson.annotations.SerializedName;
import org.apache.cloudstack.api.ApiConstants;
import org.apache.cloudstack.api.BaseResponse;
import org.apache.cloudstack.api.EntityReference;
import org.apache.cloudstack.framework.backup.Backup;
import org.apache.cloudstack.backup.Backup;
import java.util.List;

View File

@ -15,19 +15,20 @@
//specific language governing permissions and limitations
//under the License.
package org.apache.cloudstack.framework.backup;
package org.apache.cloudstack.backup;
import org.apache.cloudstack.api.Identity;
import org.apache.cloudstack.api.InternalIdentity;
import java.util.Date;
import java.util.List;
public interface Backup {
public interface Backup extends InternalIdentity, Identity {
enum Status {
BackingUp, BackedUp, Failed, Queued, Restoring
}
Long getId();
String getUuid();
Long getAccountId();
Long getUserId();
String getName();

View File

@ -20,9 +20,6 @@ package org.apache.cloudstack.backup;
import java.util.List;
import org.apache.cloudstack.api.response.BackupPolicyResponse;
import org.apache.cloudstack.framework.backup.Backup;
import org.apache.cloudstack.framework.backup.BackupPolicy;
import org.apache.cloudstack.framework.backup.BackupService;
import org.apache.cloudstack.framework.config.ConfigKey;
import org.apache.cloudstack.framework.config.Configurable;
@ -52,12 +49,12 @@ public interface BackupManager extends BackupService, Configurable, PluggableSer
/**
* Add a new Backup and Recovery policy
*/
BackupPolicy addBackupPolicy(String policyId, String policyName, Long zoneId);
BackupPolicy addBackupPolicy(String policyExternalId, String policyName, Long zoneId);
/**
* Assign VM to existing backup policy
*/
boolean assignVMToBackupPolicy(String policyUuid, Long virtualMachineId, Long zoneId);
boolean assignVMToBackupPolicy(Long policyId, Long virtualMachineId, Long zoneId);
/**
* List existing backups for a VM
@ -74,13 +71,13 @@ public interface BackupManager extends BackupService, Configurable, PluggableSer
/**
* Restore a full backed up VM
*/
boolean restoreBackup(Long vmId, String backupId, Long zoneId);
boolean restoreBackup(Long vmId, Long backupId, Long zoneId);
//TODO
boolean restoreBackupVolume(Long volumeId, Long vmId, String backupId, Long zoneId);
boolean restoreBackupVolume(Long volumeId, Long vmId, Long backupId, Long zoneId);
/**
* Deletes a backup policy
*/
boolean deleteBackupPolicy(String policyId);
boolean deleteBackupPolicy(Long policyId);
}

View File

@ -14,12 +14,13 @@
//KIND, either express or implied. See the License for the
//specific language governing permissions and limitations
//under the License.
package org.apache.cloudstack.framework.backup;
package org.apache.cloudstack.backup;
public interface BackupPolicy {
import org.apache.cloudstack.api.Identity;
import org.apache.cloudstack.api.InternalIdentity;
public interface BackupPolicy extends InternalIdentity, Identity {
long getId();
String getUuid();
String getPolicyUuid();
String getName();
boolean isImported();

View File

@ -14,7 +14,7 @@
//KIND, either express or implied. See the License for the
//specific language governing permissions and limitations
//under the License.
package org.apache.cloudstack.framework.backup;
package org.apache.cloudstack.backup;
import java.util.List;

View File

@ -14,7 +14,7 @@
//KIND, either express or implied. See the License for the
//specific language governing permissions and limitations
//under the License.
package org.apache.cloudstack.framework.backup;
package org.apache.cloudstack.backup;
import java.util.List;

View File

@ -473,11 +473,6 @@
<artifactId>cloud-plugin-integrations-prometheus-exporter</artifactId>
<version>${project.version}</version>
</dependency>
<dependency>
<groupId>org.apache.cloudstack</groupId>
<artifactId>cloud-framework-backup</artifactId>
<version>${project.version}</version>
</dependency>
<dependency>
<groupId>org.apache.cloudstack</groupId>
<artifactId>cloud-plugin-backup-dummy</artifactId>

View File

@ -26,7 +26,7 @@
<bean class="org.apache.cloudstack.spring.lifecycle.registry.RegistryLifecycle">
<property name="registry" ref="backupProvidersRegistry" />
<property name="typeClass" value="org.apache.cloudstack.framework.backup.BackupProvider" />
<property name="typeClass" value="org.apache.cloudstack.backup.BackupProvider" />
</bean>
</beans>

View File

@ -19,8 +19,6 @@
package org.apache.cloudstack.backup;
import org.apache.cloudstack.framework.backup.BackupPolicy;
import java.util.UUID;
public class BackupPolicyTO implements BackupPolicy {

View File

@ -17,8 +17,6 @@
package org.apache.cloudstack.backup;
import org.apache.cloudstack.framework.backup.BackupPolicy;
import java.util.UUID;
import javax.persistence.Column;

View File

@ -17,7 +17,6 @@
package org.apache.cloudstack.backup;
import org.apache.cloudstack.framework.backup.Backup;
import org.apache.commons.collections.CollectionUtils;
import org.apache.commons.lang.StringUtils;
@ -80,7 +79,7 @@ public class BackupVO implements Backup {
private List<Long> volumeIds;
@Override
public Long getId() {
public long getId() {
return id;
}

View File

@ -20,7 +20,7 @@ package org.apache.cloudstack.backup.dao;
import com.cloud.utils.db.GenericDao;
import org.apache.cloudstack.api.response.BackupResponse;
import org.apache.cloudstack.backup.BackupVO;
import org.apache.cloudstack.framework.backup.Backup;
import org.apache.cloudstack.backup.Backup;
import java.util.List;

View File

@ -30,7 +30,7 @@ import com.cloud.vm.VMInstanceVO;
import com.cloud.vm.dao.VMInstanceDao;
import org.apache.cloudstack.api.response.BackupResponse;
import org.apache.cloudstack.backup.BackupVO;
import org.apache.cloudstack.framework.backup.Backup;
import org.apache.cloudstack.backup.Backup;
import org.apache.commons.collections.CollectionUtils;
import javax.annotation.PostConstruct;

View File

@ -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.
-->
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<artifactId>cloud-framework-backup</artifactId>
<name>Apache CloudStack Framework - Backup and Recovery</name>
<parent>
<artifactId>cloudstack-framework</artifactId>
<groupId>org.apache.cloudstack</groupId>
<version>4.12.0.0-SNAPSHOT</version>
<relativePath>../pom.xml</relativePath>
</parent>
<dependencies>
</dependencies>
</project>

View File

@ -58,6 +58,5 @@
<module>security</module>
<module>agent-lb</module>
<module>direct-download</module>
<module>backup</module>
</modules>
</project>

View File

@ -26,11 +26,4 @@
<version>4.12.0.0-SNAPSHOT</version>
<relativePath>../../pom.xml</relativePath>
</parent>
<dependencies>
<dependency>
<groupId>org.apache.cloudstack</groupId>
<artifactId>cloud-framework-backup</artifactId>
<version>${project.version}</version>
</dependency>
</dependencies>
</project>

View File

@ -16,9 +16,6 @@
// under the License.
package org.apache.cloudstack.backup;
import org.apache.cloudstack.framework.backup.BackupPolicy;
import org.apache.cloudstack.framework.backup.BackupProvider;
import com.cloud.utils.component.AdapterBase;
import org.apache.log4j.Logger;

View File

@ -26,11 +26,4 @@
<version>4.12.0.0-SNAPSHOT</version>
<relativePath>../../pom.xml</relativePath>
</parent>
<dependencies>
<dependency>
<groupId>org.apache.cloudstack</groupId>
<artifactId>cloud-framework-backup</artifactId>
<version>${project.version}</version>
</dependency>
</dependencies>
</project>

View File

@ -23,9 +23,6 @@ import java.security.NoSuchAlgorithmException;
import java.util.List;
import org.apache.cloudstack.backup.veeam.VeeamClient;
import org.apache.cloudstack.framework.backup.BackupPolicy;
import org.apache.cloudstack.framework.backup.BackupProvider;
import org.apache.cloudstack.framework.backup.BackupService;
import org.apache.cloudstack.framework.config.ConfigKey;
import org.apache.cloudstack.framework.config.Configurable;
import org.apache.log4j.Logger;

View File

@ -66,7 +66,7 @@ import org.apache.cloudstack.backup.dao.BackupDao;
import org.apache.cloudstack.context.CallContext;
import org.apache.cloudstack.engine.orchestration.service.NetworkOrchestrationService;
import org.apache.cloudstack.engine.orchestration.service.VolumeOrchestrationService;
import org.apache.cloudstack.framework.backup.Backup;
import org.apache.cloudstack.backup.Backup;
import org.apache.cloudstack.framework.config.dao.ConfigurationDao;
import org.apache.cloudstack.framework.jobs.AsyncJob;
import org.apache.cloudstack.framework.jobs.AsyncJobManager;

View File

@ -297,7 +297,7 @@ import org.apache.cloudstack.engine.subsystem.api.storage.DataStoreCapabilities;
import org.apache.cloudstack.engine.subsystem.api.storage.DataStoreManager;
import org.apache.cloudstack.engine.subsystem.api.storage.SnapshotDataFactory;
import org.apache.cloudstack.engine.subsystem.api.storage.SnapshotInfo;
import org.apache.cloudstack.framework.backup.Backup;
import org.apache.cloudstack.backup.Backup;
import org.apache.cloudstack.framework.jobs.AsyncJob;
import org.apache.cloudstack.framework.jobs.AsyncJobManager;
import org.apache.cloudstack.network.lb.ApplicationLoadBalancerRule;

View File

@ -28,7 +28,7 @@ import com.cloud.vm.VMInstanceVO;
import com.cloud.vm.dao.VMInstanceDao;
import org.apache.cloudstack.api.command.admin.backup.DeleteBackupPolicyCmd;
import org.apache.cloudstack.api.command.user.backup.AssignBackupPolicyCmd;
import org.apache.cloudstack.api.command.admin.backup.CreateBackupPolicyCmd;
import org.apache.cloudstack.api.command.admin.backup.ImportBackupPolicyCmd;
import org.apache.cloudstack.api.command.user.backup.ListBackupPoliciesCmd;
import org.apache.cloudstack.api.command.admin.backup.ListBackupProvidersCmd;
import org.apache.cloudstack.api.command.user.backup.ListBackupsCmd;
@ -38,10 +38,6 @@ import org.apache.cloudstack.api.response.BackupPolicyResponse;
import org.apache.cloudstack.backup.dao.BackupDao;
import org.apache.cloudstack.backup.dao.BackupPolicyDao;
import org.apache.cloudstack.backup.dao.BackupPolicyVMMapDao;
import org.apache.cloudstack.framework.backup.Backup;
import org.apache.cloudstack.framework.backup.BackupPolicy;
import org.apache.cloudstack.framework.backup.BackupProvider;
import org.apache.cloudstack.framework.backup.BackupService;
import org.apache.cloudstack.framework.config.ConfigKey;
import org.apache.commons.lang.BooleanUtils;
import org.apache.log4j.Logger;
@ -74,34 +70,34 @@ public class BackupManagerImpl extends ManagerBase implements BackupManager {
private List<BackupProvider> backupProviders;
@Override
public BackupPolicy addBackupPolicy(String policyId, String policyName, Long zoneId) {
public BackupPolicy addBackupPolicy(String policyExternalId, String policyName, Long zoneId) {
BackupProvider provider = getBackupProvider(zoneId);
if (!provider.isBackupPolicy(policyId)) {
throw new CloudRuntimeException("Policy " + policyId + " does not exist on provider " + provider.getName());
if (!provider.isBackupPolicy(policyExternalId)) {
throw new CloudRuntimeException("Policy " + policyExternalId + " does not exist on provider " + provider.getName());
}
BackupPolicyVO policy = new BackupPolicyVO(policyName, policyId);
BackupPolicyVO policy = new BackupPolicyVO(policyName, policyExternalId);
BackupPolicyVO vo = backupPolicyDao.persist(policy);
if (vo == null) {
throw new CloudRuntimeException("Unable to create backup policy: " + policyId + ", name: " + policyName);
throw new CloudRuntimeException("Unable to create backup policy: " + policyExternalId + ", name: " + policyName);
}
LOG.debug("Successfully created backup policy " + policyName + " mapped to backup provider policy " + policyId);
LOG.debug("Successfully created backup policy " + policyName + " mapped to backup provider policy " + policyExternalId);
return vo;
}
@Override
public boolean assignVMToBackupPolicy(String policyUuid, Long virtualMachineId, Long zoneId) {
public boolean assignVMToBackupPolicy(Long policyId, Long virtualMachineId, Long zoneId) {
VMInstanceVO vmInstanceVO = vmInstanceDao.findById(virtualMachineId);
if (vmInstanceVO == null) {
throw new CloudRuntimeException("VM " + virtualMachineId + " does not exist");
}
BackupPolicyVO policy = backupPolicyDao.findByUuid(policyUuid);
BackupPolicyVO policy = backupPolicyDao.findById(policyId);
if (policy == null) {
throw new CloudRuntimeException("Policy " + policyUuid + " does not exist");
throw new CloudRuntimeException("Policy " + policy + " does not exist");
}
String vmUuid = vmInstanceVO.getUuid();
BackupProvider backupProvider = getBackupProvider(zoneId);
boolean result = backupProvider.assignVMToBackupPolicy(vmUuid, policyUuid);
boolean result = backupProvider.assignVMToBackupPolicy(vmUuid, policy.getUuid());
if (result) {
BackupPolicyVMMapVO map = backupPolicyVMMapDao.findByVMId(virtualMachineId);
if (map != null) {
@ -111,7 +107,7 @@ public class BackupManagerImpl extends ManagerBase implements BackupManager {
backupPolicyVMMapDao.persist(map);
LOG.debug("Successfully assigned VM " + virtualMachineId + " to backup policy " + policy.getName());
} else {
LOG.debug("Could not assign VM " + virtualMachineId + " to backup policy " + policyUuid);
LOG.debug("Could not assign VM " + virtualMachineId + " to backup policy " + policyId);
}
return result;
}
@ -131,24 +127,28 @@ public class BackupManagerImpl extends ManagerBase implements BackupManager {
}
@Override
public boolean restoreBackup(Long vmId, String backupId, Long zoneId) {
public boolean restoreBackup(Long vmId, Long backupId, Long zoneId) {
BackupProvider backupProvider = getBackupProvider(zoneId);
VMInstanceVO vm = vmInstanceDao.findById(vmId);
if (vm == null) {
throw new CloudRuntimeException("VM " + vmId + " does not exist");
}
return backupProvider.restoreVMFromBackup(vm.getUuid(), backupId);
BackupVO backup = backupDao.findById(backupId);
if (backup == null) {
throw new CloudRuntimeException("Backup " + backupId + " does not exist");
}
return backupProvider.restoreVMFromBackup(vm.getUuid(), backup.getUuid());
}
@Override
public boolean restoreBackupVolume(Long volumeId, Long vmId, String backupId, Long zoneId) {
public boolean restoreBackupVolume(Long volumeId, Long vmId, Long backupId, Long zoneId) {
//TODO
return false;
}
@Override
public boolean deleteBackupPolicy(String policyId) {
BackupPolicyVO policy = backupPolicyDao.findByUuid(policyId);
public boolean deleteBackupPolicy(Long policyId) {
BackupPolicyVO policy = backupPolicyDao.findById(policyId);
if (policy == null) {
throw new CloudRuntimeException("Could not find a backup policy with id: " + policyId);
}
@ -189,7 +189,7 @@ public class BackupManagerImpl extends ManagerBase implements BackupManager {
final List<Class<?>> cmdList = new ArrayList<Class<?>>();
cmdList.add(ListBackupProvidersCmd.class);
cmdList.add(ListBackupPoliciesCmd.class);
cmdList.add(CreateBackupPolicyCmd.class);
cmdList.add(ImportBackupPolicyCmd.class);
cmdList.add(AssignBackupPolicyCmd.class);
cmdList.add(DeleteBackupPolicyCmd.class);
cmdList.add(ListBackupsCmd.class);