Skip to content

Commit e385fcb

Browse files
author
dragonfly91
committed
Converted Get-Container cmdlet to be Provider Specifc
1 parent d863ec7 commit e385fcb

File tree

5 files changed

+72
-34
lines changed

5 files changed

+72
-34
lines changed

src/ResourceManager/RecoveryServices.Backup/Cmdlets/Container/GetAzureRmRecoveryServicesContainer.cs

Lines changed: 21 additions & 33 deletions
Original file line numberDiff line numberDiff line change
@@ -50,42 +50,30 @@ public class GetAzureRmRecoveryServicesContainer : RecoveryServicesBackupVaultCm
5050
public override void ExecuteCmdlet()
5151
{
5252
ExecutionBlock(() =>
53-
{
54-
base.ExecuteCmdlet();
55-
56-
ProtectionContainerListQueryParams queryParams = new ProtectionContainerListQueryParams();
57-
58-
// 1. Filter by Name
59-
queryParams.FriendlyName = Name;
60-
61-
// 2. Filter by ContainerType
62-
queryParams.ProviderType = HydraHelpers.GetHydraProviderType(ContainerType);
53+
{
54+
base.ExecuteCmdlet();
6355

64-
// 3. Filter by Status
65-
queryParams.RegistrationStatus = Status.ToString();
56+
PsBackupProviderManager providerManager = new PsBackupProviderManager(new Dictionary<System.Enum, object>()
57+
{
58+
{ContainerParams.Vault, Vault},
59+
{ContainerParams.ContainerType, ContainerType},
60+
{ContainerParams.Name, Name},
61+
{ContainerParams.ResourceGroupName, ResourceGroupName},
62+
{ContainerParams.Status, Status},
63+
}, HydraAdapter);
6664

67-
var listResponse = HydraAdapter.ListContainers(Vault.ResouceGroupName, Vault.Name, queryParams);
65+
IPsBackupProvider psBackupProvider = providerManager.GetProviderInstance(ContainerType);
66+
var containerModels = psBackupProvider.ListProtectionContainers();
6867

69-
List<AzureRmRecoveryServicesContainerBase> containerModels = ConversionHelpers.GetContainerModelList(listResponse);
70-
71-
// NOTE: Should move this to provider?
72-
// 4. Filter by RG Name
73-
if (ContainerType == Models.ContainerType.AzureVM &&
74-
!string.IsNullOrEmpty(ResourceGroupName))
75-
{
76-
containerModels = containerModels.Where(containerModel =>
77-
(containerModel as AzureRmRecoveryServicesIaasVmContainer).ResourceGroupName == ResourceGroupName).ToList();
78-
}
79-
80-
if (containerModels.Count == 1)
81-
{
82-
WriteObject(containerModels.First());
83-
}
84-
else
85-
{
86-
WriteObject(containerModels);
87-
}
88-
});
68+
if (containerModels.Count == 1)
69+
{
70+
WriteObject(containerModels.First());
71+
}
72+
else
73+
{
74+
WriteObject(containerModels);
75+
}
76+
});
8977
}
9078
}
9179
}

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

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -63,6 +63,10 @@
6363
<Project>{3819d8a7-c62c-4c47-8ddd-0332d9ce1252}</Project>
6464
<Name>Commands.ResourceManager.Common</Name>
6565
</ProjectReference>
66+
<ProjectReference Include="..\..\RecoveryServices\Commands.RecoveryServices\Commands.RecoveryServices.csproj">
67+
<Project>{604260dc-b392-4cf4-81ec-34b14591e2d2}</Project>
68+
<Name>Commands.RecoveryServices</Name>
69+
</ProjectReference>
6670
<ProjectReference Include="..\Commands.RecoveryServices.Backup.Helpers\Commands.RecoveryServices.Backup.Helpers.csproj">
6771
<Project>{0e1d3f36-e6c8-4764-8c7d-6f9ee537490c}</Project>
6872
<Name>Commands.RecoveryServices.Backup.Helpers</Name>

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

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@
1212
// limitations under the License.
1313
// ----------------------------------------------------------------------------------
1414

15+
using Microsoft.Azure.Commands.RecoveryServices.Backup.Cmdlets.Models;
1516
using Microsoft.Azure.Management.RecoveryServices.Backup.Models;
1617
using System;
1718
using System.Collections.Generic;
@@ -44,5 +45,7 @@ public interface IPsBackupProvider
4445
ProtectionPolicyResponse GetPolicy();
4546

4647
void DeletePolicy();
48+
49+
List<AzureRmRecoveryServicesContainerBase> ListProtectionContainers();
4750
}
4851
}

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

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -76,5 +76,10 @@ public void DeletePolicy()
7676
{
7777
throw new NotImplementedException();
7878
}
79+
80+
public List<Models.AzureRmRecoveryServicesContainerBase> ListProtectionContainers()
81+
{
82+
throw new NotImplementedException();
83+
}
7984
}
8085
}

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

Lines changed: 39 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,14 +18,20 @@
1818
using System.Text;
1919
using System.Threading.Tasks;
2020
using Microsoft.Azure.Management.RecoveryServices.Backup.Models;
21+
using Microsoft.Azure.Commands.RecoveryServices.Backup.Helpers;
22+
using Microsoft.Azure.Commands.RecoveryServices.Backup.Cmdlets.Models;
2123

2224
namespace Microsoft.Azure.Commands.RecoveryServices.Backup.Cmdlets.ProviderModel
2325
{
2426
public class IaasVmPsBackupProvider : IPsBackupProvider
2527
{
28+
ProviderData ProviderData { get; set; }
29+
HydraAdapter.HydraAdapter HydraAdapter { get; set; }
30+
2631
public void Initialize(ProviderData providerData, HydraAdapter.HydraAdapter hydraAdapter)
2732
{
28-
throw new NotImplementedException();
33+
this.ProviderData = providerData;
34+
this.HydraAdapter = hydraAdapter;
2935
}
3036

3137
public BaseRecoveryServicesJobResponse EnableProtection()
@@ -77,5 +83,37 @@ public void DeletePolicy()
7783
{
7884
throw new NotImplementedException();
7985
}
86+
87+
public List<AzureRmRecoveryServicesContainerBase> ListProtectionContainers()
88+
{
89+
string name = (string)this.ProviderData.ProviderParameters[ContainerParams.Name];
90+
ContainerRegistrationStatus status = (ContainerRegistrationStatus)this.ProviderData.ProviderParameters[ContainerParams.Status];
91+
ARSVault vault = (ARSVault)this.ProviderData.ProviderParameters[ContainerParams.Vault];
92+
string resourceGroupName = (string)this.ProviderData.ProviderParameters[ContainerParams.ResourceGroupName];
93+
94+
ProtectionContainerListQueryParams queryParams = new ProtectionContainerListQueryParams();
95+
96+
// 1. Filter by Name
97+
queryParams.FriendlyName = name;
98+
99+
// 2. Filter by ContainerType
100+
queryParams.ProviderType = ProviderType.AzureIaasVM.ToString();
101+
102+
// 3. Filter by Status
103+
queryParams.RegistrationStatus = status.ToString();
104+
105+
var listResponse = HydraAdapter.ListContainers(vault.ResouceGroupName, vault.Name, queryParams);
106+
107+
List<AzureRmRecoveryServicesContainerBase> containerModels = ConversionHelpers.GetContainerModelList(listResponse);
108+
109+
// 4. Filter by RG Name
110+
if (!string.IsNullOrEmpty(resourceGroupName))
111+
{
112+
containerModels = containerModels.Where(containerModel =>
113+
(containerModel as AzureRmRecoveryServicesIaasVmContainer).ResourceGroupName == resourceGroupName).ToList();
114+
}
115+
116+
return containerModels;
117+
}
80118
}
81119
}

0 commit comments

Comments
 (0)