Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 2 additions & 1 deletion src/KeyVault/KeyVault/Az.KeyVault.psd1
Original file line number Diff line number Diff line change
Expand Up @@ -131,7 +131,8 @@ CmdletsToExport = 'Add-AzKeyVaultCertificate', 'Update-AzKeyVaultCertificate',
'Undo-AzKeyVaultManagedStorageAccountRemoval',
'Add-AzKeyVaultNetworkRule', 'Update-AzKeyVaultNetworkRuleSet',
'Remove-AzKeyVaultNetworkRule', 'Export-AzKeyVaultSecurityDomain',
'Import-AzKeyVaultSecurityDomain'
'Import-AzKeyVaultSecurityDomain',
'Get-AzKeyVaultSetting', 'Update-AzKeyVaultSetting'

# Variables to export from this module
# VariablesToExport = @()
Expand Down
82 changes: 82 additions & 0 deletions src/KeyVault/KeyVault/Commands/Setting/GetAzKeyVaultSetting.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,82 @@
using Microsoft.Azure.Commands.KeyVault.Models;
using Microsoft.Azure.Commands.ResourceManager.Common.ArgumentCompleters;
using Microsoft.Azure.Management.Internal.Resources.Utilities.Models;

using System;
using System.Collections.Generic;
using System.Management.Automation;
using System.Text;

namespace Microsoft.Azure.Commands.KeyVault.Commands.Setting
{
[Cmdlet("Get", ResourceManager.Common.AzureRMConstants.AzurePrefix + "KeyVaultSetting", DefaultParameterSetName = GetSettingViaFlattenParameters)]
[OutputType(typeof(PSKeyVaultSetting))]
public class GetAzKeyVaultSetting: KeyVaultCmdletBase
{
#region Parameter Set Names
private const string GetSettingViaFlattenParameters = " GetSettingViaFlattenParameters";
private const string GetSettingViaHsmObject = " GetSettingViaHsmObject";
private const string GetSettingViaHsmId = " GetSettingViaHsmId";
#endregion

#region Input Parameter Definitions

[Parameter(Mandatory = true,
Position = 0,
ParameterSetName = GetSettingViaFlattenParameters,
HelpMessage = "Name of the HSM.")]
[ResourceNameCompleter("Microsoft.KeyVault/managedHSMs", "FakeResourceGroupName")]
[ValidateNotNullOrEmpty]
public string HsmName;

[Parameter(Mandatory = true,
Position = 0,
ParameterSetName = GetSettingViaHsmObject,
ValueFromPipeline = true,
HelpMessage = "Hsm Object.")]
[ValidateNotNullOrEmpty]
public PSManagedHsm HsmObject;

[Parameter(Mandatory = true,
Position = 0,
ParameterSetName = GetSettingViaHsmId,
HelpMessage = "Hsm Resource Id.")]
[ValidateNotNullOrEmpty]
public string HsmId;

[Parameter(Mandatory = false,
Position = 1,
HelpMessage = "Name of the setting.")]
public string Name;

#endregion

public override void ExecuteCmdlet()
{
NormalizeParameterSets();

if (string.IsNullOrEmpty(Name))
{
WriteObject(this.Track2DataClient.GetManagedHsmSettings(HsmName), true);
}
else
{
WriteObject(this.Track2DataClient.GetManagedHsmSetting(HsmName, Name));
}
}

private void NormalizeParameterSets()
{
switch (ParameterSetName)
{
case GetSettingViaHsmId:
var parsedResourceId = new ResourceIdentifier(HsmId);
HsmName = parsedResourceId.ResourceName;
break;
case GetSettingViaHsmObject:
HsmName = HsmObject.VaultName;
break;
}
}
}
}
116 changes: 116 additions & 0 deletions src/KeyVault/KeyVault/Commands/Setting/UpdateAzKeyVaultSetting.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,116 @@
using Microsoft.Azure.Commands.KeyVault.Models;
using Microsoft.Azure.Commands.ResourceManager.Common.ArgumentCompleters;
using Microsoft.Azure.Management.Internal.Resources.Utilities.Models;
using Microsoft.WindowsAzure.Commands.Utilities.Common;

using System;
using System.Collections.Generic;
using System.Management.Automation;
using System.Text;

namespace Microsoft.Azure.Commands.KeyVault.Commands.Setting
{
[Cmdlet(VerbsData.Update, ResourceManager.Common.AzureRMConstants.AzurePrefix + "KeyVaultSetting")]
[OutputType(typeof(PSKeyVaultSetting))]
public class UpdateAzKeyVaultSetting : KeyVaultCmdletBase
{
#region Parameter Set Names

private const string UpdateSettingViaFlattenValuesParameterSet = " UpdateSettingViaFlattenValues";
private const string UpdateSettingViaHsmObjectParameterSet = "UpdateSettingViaHsmObject";
private const string UpdateSettingViaHsmIdParameterSet = "UpdateSettingViaHsmId";
private const string UpdateSettingViaInputObjectParameterSet = "UpdateSettingViaInputObject";

#endregion

#region Input Parameter Definitions

/// <summary>
/// Hsm name
/// </summary>
[Parameter(Mandatory = true,
Position = 0,
ParameterSetName = UpdateSettingViaFlattenValuesParameterSet,
HelpMessage = "Name of the HSM.")]
[ResourceNameCompleter("Microsoft.KeyVault/managedHSMs", "FakeResourceGroupName")]
[ValidateNotNullOrEmpty]
public string HsmName { get; set; }

[Parameter(Mandatory = true,
Position = 0,
ParameterSetName = UpdateSettingViaHsmObjectParameterSet,
ValueFromPipeline = true,
HelpMessage = "Hsm Object.")]
[ValidateNotNullOrEmpty]
public PSManagedHsm HsmObject;

[Parameter(Mandatory = true,
Position = 0,
ParameterSetName = UpdateSettingViaHsmIdParameterSet,
HelpMessage = "Hsm Resource Id.")]
[ValidateNotNullOrEmpty]
public string HsmId;

/// <summary>
/// Name of the setting
/// </summary>
[Parameter(Mandatory = true,
Position = 1,
ParameterSetName = UpdateSettingViaFlattenValuesParameterSet,
HelpMessage = "Name of the setting.")]
[Parameter(Mandatory = true,
Position = 1,
ParameterSetName = UpdateSettingViaHsmObjectParameterSet)]
[Parameter(Mandatory = true,
Position = 1,
ParameterSetName = UpdateSettingViaHsmIdParameterSet)]
public string Name { get; set; }

/// <summary>
/// Resource group name
/// </summary>
[Parameter(Mandatory = true, Position = 2, ParameterSetName = UpdateSettingViaFlattenValuesParameterSet,
HelpMessage = "Value of the setting.")]
[Parameter(Mandatory = true, Position = 2, ParameterSetName = UpdateSettingViaHsmObjectParameterSet)]
[Parameter(Mandatory = true, Position = 2, ParameterSetName = UpdateSettingViaHsmIdParameterSet)]
[Parameter(Mandatory = false, Position = 2, ParameterSetName = UpdateSettingViaInputObjectParameterSet)]
public string Value { get; set; }

[Parameter(Mandatory = true,
Position = 0,
ParameterSetName = UpdateSettingViaInputObjectParameterSet,
ValueFromPipelineByPropertyName = true,
HelpMessage = "The location of the deleted vault.")]
[ValidateNotNullOrEmpty()]
public PSKeyVaultSetting InputObject { get; set; }

#endregion

public override void ExecuteCmdlet()
{
NormalizeParameterSets();
WriteObject(Track2DataClient.UpdateManagedHsmSetting(InputObject));
}
private void NormalizeParameterSets()
{
switch (ParameterSetName)
{
case UpdateSettingViaHsmIdParameterSet:
var parsedResourceId = new ResourceIdentifier(HsmId);
HsmName = parsedResourceId.ResourceName;
break;
case UpdateSettingViaHsmObjectParameterSet:
HsmName = HsmObject.VaultName;
break;
}
if (!ParameterSetName.Equals(UpdateSettingViaInputObjectParameterSet))
{
InputObject = Track2DataClient.GetManagedHsmSetting(HsmName, Name);
}
if (this.IsParameterBound(c => c.Value))
{
InputObject.Value = this.Value;
}
}
}
}
4 changes: 2 additions & 2 deletions src/KeyVault/KeyVault/KeyVault.csproj
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
<Project Sdk="Microsoft.NET.Sdk">
<Project Sdk="Microsoft.NET.Sdk">

<PropertyGroup>
<PsModuleName>KeyVault</PsModuleName>
Expand All @@ -12,7 +12,7 @@
</PropertyGroup>

<ItemGroup>
<PackageReference Include="Azure.Security.KeyVault.Administration" Version="4.0.0" />
<PackageReference Include="Azure.Security.KeyVault.Administration" Version="4.3.0" />
<PackageReference Include="Azure.Security.KeyVault.Keys" Version="4.3.0" />
<PackageReference Include="Azure.Security.KeyVault.Certificates" Version="4.3.0" />
<PackageReference Include="Portable.BouncyCastle" Version="1.8.8" />
Expand Down
9 changes: 9 additions & 0 deletions src/KeyVault/KeyVault/Models/IKeyVaultDataServiceClient.cs
Original file line number Diff line number Diff line change
Expand Up @@ -261,5 +261,14 @@ public interface IKeyVaultDataServiceClient
void RemoveHsmRoleAssignment(string hsmName, string scope, string roleAssignmentName);
void RemoveHsmRoleDefinition(string hsmName, string scope, string name);
#endregion

#region
IEnumerable<PSKeyVaultSetting> GetManagedHsmSettings(string managedHsm);

PSKeyVaultSetting GetManagedHsmSetting(string managedHsm, string settingName);

PSKeyVaultSetting UpdateManagedHsmSetting(PSKeyVaultSetting psSettingParams);

#endregion
}
}
18 changes: 18 additions & 0 deletions src/KeyVault/KeyVault/Models/KeyVaultDataServiceClient.cs
Original file line number Diff line number Diff line change
Expand Up @@ -2238,5 +2238,23 @@ public PSKeyRotationPolicy SetManagedHsmKeyRotationPolicy(PSKeyRotationPolicy ke
#endregion

#endregion

#region Setting
public IEnumerable<PSKeyVaultSetting> GetManagedHsmSettings(string managedHsm)
{
throw new NotImplementedException();
}

public PSKeyVaultSetting GetManagedHsmSetting(string managedHsm, string settingName)
{
throw new NotImplementedException();
}

public PSKeyVaultSetting UpdateManagedHsmSetting(PSKeyVaultSetting psSettingParams)
{
throw new NotImplementedException();
}

#endregion
}
}
48 changes: 48 additions & 0 deletions src/KeyVault/KeyVault/Models/PSKeyVaultSetting.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,48 @@
using Azure.Security.KeyVault.Administration;

using System;
using System.Collections.Generic;
using System.Text;

namespace Microsoft.Azure.Commands.KeyVault.Models
{
public class PSKeyVaultSetting
{
/// <summary>
/// The account setting to be updated.
/// </summary>
public string HsmName;

/// <summary>
/// The account setting to be updated.
/// </summary>
public string Name;

/// <summary>
/// Gets the type specifier of the value.
/// </summary>
public string SettingType;

/// <summary>
/// Gets the value of the account setting.
/// </summary>
public string Value;

public PSKeyVaultSetting() { }


public PSKeyVaultSetting(KeyVaultSetting keyVaultSetting, string hsmName = null)
{
if (null != keyVaultSetting)
{
Name = keyVaultSetting.Name;
SettingType = keyVaultSetting.SettingType?.ToString();
Value = keyVaultSetting.Value.ToString();
}
HsmName = hsmName;
}

public override string ToString() => $"{Name}={Value} ({SettingType ?? string.Empty})";

}
}
Loading