Skip to content

Commit 024ee92

Browse files
author
dragonfly91
committed
Trigger Backup cmdlet
1 parent e45b4b5 commit 024ee92

File tree

6 files changed

+74
-1
lines changed

6 files changed

+74
-1
lines changed

src/ResourceManager/RecoveryServices.Backup/CmdletParameterHelpMessages.cs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -69,6 +69,7 @@ internal static class Item
6969
public const string ProtectionStatus = "Protection status of Item";
7070
public const string Status = "Status of the data source";
7171
public const string Container = "Container where the item resides";
72+
public const string ExpiryDate = "Retention period for the recovery points created by this backup operaiton";
7273
}
7374
}
7475
}
Lines changed: 54 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,54 @@
1+
// ----------------------------------------------------------------------------------
2+
//
3+
// Copyright Microsoft Corporation
4+
// Licensed under the Apache License, Version 2.0 (the "License");
5+
// you may not use this file except in compliance with the License.
6+
// You may obtain a copy of the License at
7+
// http://www.apache.org/licenses/LICENSE-2.0
8+
// Unless required by applicable law or agreed to in writing, software
9+
// distributed under the License is distributed on an "AS IS" BASIS,
10+
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
11+
// See the License for the specific language governing permissions and
12+
// limitations under the License.
13+
// ----------------------------------------------------------------------------------
14+
15+
using Microsoft.Azure.Commands.RecoveryServices.Backup.Cmdlets.Models;
16+
using Microsoft.Azure.Commands.RecoveryServices.Backup.Cmdlets.ProviderModel;
17+
using System;
18+
using System.Collections.Generic;
19+
using System.Linq;
20+
using System.Management.Automation;
21+
using System.Text;
22+
using System.Threading.Tasks;
23+
24+
namespace Microsoft.Azure.Commands.RecoveryServices.Backup.Cmdlets
25+
{
26+
/// <summary>
27+
/// Backup Item
28+
/// </summary>
29+
[Cmdlet(VerbsData.Backup, "AzureRmRecoveryServicesItem"), OutputType(typeof(AzureRmRecoveryServicesJobBase))]
30+
public class BackupAzureRmRecoveryServicesItem : RecoveryServicesBackupCmdletBase
31+
{
32+
[Parameter(Mandatory = true, HelpMessage = ParamHelpMsg.Item.ProtectedItem, ValueFromPipeline = true)]
33+
[ValidateNotNullOrEmpty]
34+
public AzureRmRecoveryServicesItemBase Item { get; set; }
35+
36+
[Parameter(Mandatory = true, HelpMessage = ParamHelpMsg.Item.ExpiryDate, ValueFromPipeline = false)]
37+
[ValidateNotNullOrEmpty]
38+
public DateTime ExpiryDate { get; set; }
39+
40+
public override void ExecuteCmdlet()
41+
{
42+
base.ExecuteCmdlet();
43+
44+
PsBackupProviderManager providerManager = new PsBackupProviderManager(new Dictionary<System.Enum, object>()
45+
{
46+
{ItemParams.Item, Item},
47+
{ItemParams.ExpiryDate, ExpiryDate},
48+
}, HydraAdapter);
49+
50+
IPsBackupProvider psBackupProvider = providerManager.GetProviderInstance(Item.WorkloadType, Item.BackupManagementType);
51+
var jobResponse = psBackupProvider.TriggerBackup();
52+
}
53+
}
54+
}

src/ResourceManager/RecoveryServices.Backup/Commands.RecoveryServices.Backup.Cmdlets.csproj

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -73,6 +73,7 @@
7373
</ItemGroup>
7474
<ItemGroup>
7575
<Compile Include="Cmdlets\Container\GetAzureRmRecoveryServicesContainer.cs" />
76+
<Compile Include="Cmdlets\Item\BackupAzureRmRecoveryServicesItem.cs" />
7677
<Compile Include="Cmdlets\Item\EnableAzureRmRecoveryServicesProtection.cs" />
7778
<Compile Include="Cmdlets\Item\GetAzureRmRecoveryServicesItem.cs" />
7879
<Compile Include="Cmdlets\Jobs\GetAzureRmRecoveryServicesJob.cs" />

src/ResourceManager/RecoveryServices.Backup/Commands.RecoveryServices.Backup.HydraAdapter/BMSAPIs/ProtectableItemAPI.cs

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -38,5 +38,17 @@ public ProtectableObjectListResponse ListProtectableItem(
3838
BmsAdapter.GetCustomRequestHeaders(),
3939
BmsAdapter.CmdletCancellationToken).Result;
4040
}
41+
42+
public BaseRecoveryServicesJobResponse TriggerBackup(string containerName, string itemName)
43+
{
44+
return BmsAdapter.Client.Backup.TriggerBackupAsync(
45+
BmsAdapter.GetResourceGroupName(),
46+
BmsAdapter.GetResourceName(),
47+
BmsAdapter.GetCustomRequestHeaders(),
48+
HydraAdapter.AzureFabricName,
49+
containerName,
50+
itemName,
51+
BmsAdapter.CmdletCancellationToken).Result;
52+
}
4153
}
4254
}

src/ResourceManager/RecoveryServices.Backup/Commands.RecoveryServices.Backup.Models/CmdletParamEnums.cs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -69,5 +69,6 @@ public enum ItemParams
6969
Container,
7070
ProtectionStatus,
7171
Status,
72+
ExpiryDate,
7273
}
7374
}

src/ResourceManager/RecoveryServices.Backup/Commands.RecoveryServices.Backup.Providers/Providers/IaasVmPsBackupProvider.cs

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -124,7 +124,11 @@ public BaseRecoveryServicesJobResponse DisableProtection()
124124

125125
public BaseRecoveryServicesJobResponse TriggerBackup()
126126
{
127-
throw new NotImplementedException();
127+
AzureRmRecoveryServicesItemBase item = (AzureRmRecoveryServicesItemBase)ProviderData.ProviderParameters[ItemParams.Item];
128+
DateTime expiryDate = (DateTime)ProviderData.ProviderParameters[ItemParams.ExpiryDate];
129+
AzureRmRecoveryServicesIaasVmItem iaasVmItem = item as AzureRmRecoveryServicesIaasVmItem;
130+
131+
return HydraAdapter.TriggerBackup(item.ContainerName, iaasVmItem.Name);
128132
}
129133

130134
public BaseRecoveryServicesJobResponse TriggerRestore()

0 commit comments

Comments
 (0)