Skip to content

Commit 61246c4

Browse files
committed
Merge pull request #3 from RecoveryServicesOneSDK/pikumar-mab1
Pikumar mab1
2 parents b35042b + 196bfd3 commit 61246c4

File tree

7 files changed

+362
-9
lines changed

7 files changed

+362
-9
lines changed

src/ResourceManager/RecoveryServices/Commands.RecoveryServices/Common/PSRecoveryServicesVaultExtendedInfoClient.cs

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -125,6 +125,27 @@ public ASRVaultCreds GenerateVaultCredential(X509Certificate2 managementCert, AR
125125
return asrVaultCreds;
126126
}
127127

128+
/// <summary>
129+
/// Upload cert to idmgmt
130+
/// </summary>
131+
/// <param name="managementCert">certificate to be uploaded</param>
132+
/// <param name="vault">vault object</param>
133+
/// <returns>Upload Certificate Response</returns>
134+
public UploadCertificateResponse UploadCertificate(X509Certificate2 managementCert, ARSVault vault)
135+
{
136+
var certificateArgs = new CertificateArgs();
137+
certificateArgs.Properties = new Dictionary<string, string>();
138+
certificateArgs.Properties.Add("certificate", Convert.ToBase64String(managementCert.GetRawCertData()));
139+
140+
var response = this.recoveryServicesClient.VaultExtendedInfo.UploadCertificateAsync(
141+
vault.ResouceGroupName,
142+
vault.Name,
143+
certificateArgs, managementCert.FriendlyName,
144+
this.GetRequestHeaders());
145+
response.Wait();
146+
return response.Result;
147+
}
148+
128149
/// <summary>
129150
/// Changes the Vault context
130151
/// </summary>

src/ResourceManager/RecoveryServices/Commands.RecoveryServices/Models/PSContracts.cs

Lines changed: 51 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -358,10 +358,11 @@ public VaultCreds()
358358
/// <param name="resourceName">resource name</param>
359359
/// <param name="managementCert">management cert</param>
360360
/// <param name="acsNamespace">authenticating service namespace</param>
361-
public VaultCreds(string subscriptionId, string resourceName, string managementCert, AcsNamespace acsNamespace)
361+
/// <param name="resourceType">resource type backup vault or ASR vault</param>
362+
public VaultCreds(string subscriptionId, string resourceName, string managementCert, AcsNamespace acsNamespace, string resourceType = null)
362363
{
363364
this.SubscriptionId = subscriptionId;
364-
this.ResourceType = Constants.ASRVaultType;
365+
this.ResourceType = string.IsNullOrEmpty(resourceType) ? Constants.ASRVaultType : resourceType;
365366
this.ResourceName = resourceName;
366367
this.ManagementCert = managementCert;
367368
this.AcsNamespace = acsNamespace;
@@ -504,6 +505,54 @@ public ASRVaultCreds(
504505
#endregion
505506
}
506507

508+
/// <summary>
509+
/// Class to define backup vault credentials
510+
/// </summary>
511+
[DataContract]
512+
public class BackupVaultCreds : VaultCreds
513+
{
514+
/// <summary>
515+
/// Gets or sets the agent links
516+
/// </summary>
517+
[DataMember(Order = 0)]
518+
public string AgentLinks { get; set; }
519+
520+
#region Constructors
521+
522+
/// <summary>
523+
/// Initializes a new instance of the BackupVaultCreds class
524+
/// </summary>
525+
public BackupVaultCreds() { }
526+
527+
/// <summary>
528+
/// Initializes a new instance of the BackupVaultCreds class
529+
/// </summary>
530+
/// <param name="subscriptionId">subscription Id</param>
531+
/// <param name="resourceType">resource type</param>
532+
/// <param name="resourceName">resource name</param>
533+
/// <param name="managementCert">management cert</param>
534+
/// <param name="acsNamespace">acs namespace</param>
535+
public BackupVaultCreds(string subscriptionId, string resourceName, string managementCert, AcsNamespace acsNamespace)
536+
: base(subscriptionId, resourceName, managementCert, acsNamespace, Constants.BackupVaultType) { }
537+
538+
/// <summary>
539+
/// Initializes a new instance of the BackupVaultCreds class
540+
/// </summary>
541+
/// <param name="subscriptionId">subscription Id</param>
542+
/// <param name="resourceType">resource type</param>
543+
/// <param name="resourceName">resource name</param>
544+
/// <param name="managementCert">management cert</param>
545+
/// <param name="acsNamespace">acs namespace</param>
546+
/// <param name="agentLinks">agent links</param>
547+
public BackupVaultCreds(string subscriptionId, string resourceName, string managementCert, AcsNamespace acsNamespace, string agentLinks)
548+
: this(subscriptionId, resourceName, managementCert, acsNamespace)
549+
{
550+
AgentLinks = agentLinks;
551+
}
552+
553+
#endregion
554+
}
555+
507556
/// <summary>
508557
/// Class to define ACS name space
509558
/// </summary>

src/ResourceManager/RecoveryServices/Commands.RecoveryServices/Models/PSObjects.cs

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,11 @@ public class Constants
2626
/// </summary>
2727
public const string ASRVaultType = "HyperVRecoveryManagerVault";
2828

29+
/// <summary>
30+
/// Backup vault type
31+
/// </summary>
32+
public const string BackupVaultType = "Vaults";
33+
2934
/// <summary>
3035
/// Vault Credential version.
3136
/// </summary>

src/ResourceManager/RecoveryServices/Commands.RecoveryServices/Properties/Resources.Designer.cs

Lines changed: 54 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

src/ResourceManager/RecoveryServices/Commands.RecoveryServices/Properties/Resources.resx

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -277,4 +277,22 @@ Please provide a storage account with the same location as that of the vault.</v
277277
<data name="SiteNotFound" xml:space="preserve">
278278
<value>Site {0} is not associated with the Vault {1}</value>
279279
</data>
280+
<data name="BackupVaultSerialized" xml:space="preserve">
281+
<value>RecoveryService - Backup Vault - Successfully serialized the file content</value>
282+
</data>
283+
<data name="ExecutingGetVaultCredCmdlet" xml:space="preserve">
284+
<value>Executing cmdlet with SubscriptionId = {0}, ResourceGroupName = {1}, ResourceName = {2}, TargetLocation = {3}</value>
285+
</data>
286+
<data name="SavingVaultCred" xml:space="preserve">
287+
<value>Saving Vault Credentials to file : {0}</value>
288+
</data>
289+
<data name="UploadedCertToIdmgmt" xml:space="preserve">
290+
<value>RecoveryService - Successfully uploaded the certificate</value>
291+
</data>
292+
<data name="UploadingCertToIdmgmt" xml:space="preserve">
293+
<value>RecoveryService - Going to upload the certificate</value>
294+
</data>
295+
<data name="VaultCredPathException" xml:space="preserve">
296+
<value>The target location provided is not a directory. Please provide a directory.</value>
297+
</data>
280298
</root>

src/ResourceManager/RecoveryServices/Commands.RecoveryServices/Utilities/CertUtils.cs

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -221,5 +221,16 @@ private static CngKey Create2048RsaKey()
221221

222222
return CngKey.Create(CngAlgorithm2.Rsa, null, keyCreationParameters);
223223
}
224+
225+
/// <summary>
226+
/// Returns serialized certificate - Base64 encoded based on the content type
227+
/// </summary>
228+
/// <param name="cert">The certificate provided</param>
229+
/// <param name="contentType">Cert content type</param>
230+
/// <returns>The serialized cert value in string</returns>
231+
public static string SerializeCert(X509Certificate2 cert, X509ContentType contentType)
232+
{
233+
return Convert.ToBase64String(cert.Export(contentType));
234+
}
224235
}
225236
}

0 commit comments

Comments
 (0)