| // 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.storage.StoragePool; | |
| /** | |
| * This currently assumes that both primary and secondary storage are mounted on the XenServer. | |
| */ | |
| public class CreateVolumeFromSnapshotCommand extends SnapshotCommand { | |
| protected CreateVolumeFromSnapshotCommand() { | |
| } | |
| /** | |
| * Given the UUID of a backed up snapshot VHD file on the secondary storage, the execute of this command does | |
| * 1) Get the parent chain of this VHD all the way up to the root, say VHDList | |
| * 2) Copy all the files in the VHDlist to some temp location | |
| * 3) Coalesce all the VHDs to one VHD which contains all the data of the volume. This invokes the DeletePreviousBackupCommand for each VHD | |
| * 4) Rename the UUID of this VHD | |
| * 5) Move this VHD to primary storage | |
| * @param primaryStoragePoolNameLabel The primary storage Pool | |
| * @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. | |
| * It may not be the UUID of the base copy of the snapshot, if no data was written since last snapshot. | |
| * @param templatePath The install path of the template VHD on the secondary, if this a root volume | |
| */ | |
| public CreateVolumeFromSnapshotCommand(StoragePool pool, | |
| String secondaryStoragePoolURL, | |
| Long dcId, | |
| Long accountId, | |
| Long volumeId, | |
| String backedUpSnapshotUuid, | |
| String backedUpSnapshotName, | |
| int wait) | |
| { | |
| super(pool, secondaryStoragePoolURL, backedUpSnapshotUuid, backedUpSnapshotName, dcId, accountId, volumeId); | |
| setWait(wait); | |
| } | |
| } |