Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

New resource azurerm_virtual_machine_configuration_policy_assignment #11334

Merged
merged 34 commits into from
Apr 24, 2021
Merged
Show file tree
Hide file tree
Changes from 33 commits
Commits
Show all changes
34 commits
Select commit Hold shift + click to select a range
9d99a4b
implement guest configuration
ArcturusZhang Jan 6, 2021
f9436e5
some refinement
ArcturusZhang Jan 14, 2021
694a882
rename some functions
ArcturusZhang Feb 1, 2021
6116acf
some update
ArcturusZhang Feb 4, 2021
5bda0b5
fix tests and add doc
ArcturusZhang Feb 22, 2021
9124602
remove some properties that do not work currently
ArcturusZhang Feb 26, 2021
bf0c46c
tweaking test cases
ArcturusZhang Feb 26, 2021
7bce831
introduce resource id generation
ArcturusZhang Feb 26, 2021
e63a027
rename the resource and some refactor
ArcturusZhang Feb 26, 2021
9e631e7
refine the doc
ArcturusZhang Feb 26, 2021
2e7ab5a
revert temp changes
ArcturusZhang Feb 26, 2021
cacc509
terrafmt
ArcturusZhang Feb 26, 2021
e011de4
fix depscheck
ArcturusZhang Feb 26, 2021
17f416a
refine requireness, test cases and document
ArcturusZhang Mar 4, 2021
89852ac
gofmt
ArcturusZhang Mar 4, 2021
1bdd65b
Merge remote-tracking branch 'origin/master' into guest-configuration
ArcturusZhang Mar 4, 2021
ccb70a6
refresh the vendor again
ArcturusZhang Mar 4, 2021
08e9431
rename the resource to virtual_machine_configuration_policy_assignment
ArcturusZhang Mar 4, 2021
e7263af
add required RP
ArcturusZhang Mar 4, 2021
ffacb66
fix depscheck
ArcturusZhang Mar 4, 2021
15c0753
resolve comments
ArcturusZhang Mar 5, 2021
91cdfec
Merge remote-tracking branch 'origin/master' into guest-configuration
ArcturusZhang Mar 5, 2021
615a7d7
gofmt
ArcturusZhang Mar 5, 2021
c1621d5
remove useless files
ArcturusZhang Mar 5, 2021
252b8bf
renaming the test cases
ArcturusZhang Mar 5, 2021
7dea5f0
fix requiresImport test
ArcturusZhang Mar 5, 2021
c7151cd
replace with the private build of sdk
ArcturusZhang Mar 25, 2021
5b884ee
Merge remote-tracking branch 'origin/master' into guest-configuration
ArcturusZhang Apr 15, 2021
7b94f84
refresh vendor
ArcturusZhang Apr 15, 2021
df17fe6
fix for the new sdk
ArcturusZhang Apr 15, 2021
1081910
revert some refactor changes to avoid CI failures
ArcturusZhang Apr 15, 2021
86bbd4a
Merge remote-tracking branch 'origin/master' into guest-configuration
ArcturusZhang Apr 20, 2021
b2f2ef9
refresh vendor again
ArcturusZhang Apr 20, 2021
8c0ee67
resolve comments
ArcturusZhang Apr 22, 2021
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
1 change: 1 addition & 0 deletions azurerm/internal/resourceproviders/required.go
Original file line number Diff line number Diff line change
Expand Up @@ -40,6 +40,7 @@ func Required() map[string]struct{} {
"Microsoft.EventHub": {},
"Microsoft.HDInsight": {},
"Microsoft.HealthcareApis": {},
"Microsoft.GuestConfiguration": {},
"Microsoft.KeyVault": {},
"Microsoft.Kusto": {},
"microsoft.insights": {},
Expand Down
22 changes: 14 additions & 8 deletions azurerm/internal/services/policy/client/client.go
Original file line number Diff line number Diff line change
@@ -1,16 +1,18 @@
package client

import (
"github.com/Azure/azure-sdk-for-go/services/guestconfiguration/mgmt/2020-06-25/guestconfiguration"
"github.com/Azure/azure-sdk-for-go/services/preview/policyinsights/mgmt/2019-10-01-preview/policyinsights"
"github.com/Azure/azure-sdk-for-go/services/resources/mgmt/2019-09-01/policy"
"github.com/terraform-providers/terraform-provider-azurerm/azurerm/internal/common"
)

type Client struct {
AssignmentsClient *policy.AssignmentsClient
DefinitionsClient *policy.DefinitionsClient
SetDefinitionsClient *policy.SetDefinitionsClient
RemediationsClient *policyinsights.RemediationsClient
AssignmentsClient *policy.AssignmentsClient
DefinitionsClient *policy.DefinitionsClient
SetDefinitionsClient *policy.SetDefinitionsClient
RemediationsClient *policyinsights.RemediationsClient
GuestConfigurationAssignmentsClient *guestconfiguration.AssignmentsClient
}

func NewClient(o *common.ClientOptions) *Client {
Expand All @@ -26,10 +28,14 @@ func NewClient(o *common.ClientOptions) *Client {
remediationsClient := policyinsights.NewRemediationsClientWithBaseURI(o.ResourceManagerEndpoint)
o.ConfigureClient(&remediationsClient.Client, o.ResourceManagerAuthorizer)

guestConfigurationAssignmentsClient := guestconfiguration.NewAssignmentsClientWithBaseURI(o.ResourceManagerEndpoint, o.SubscriptionId)
o.ConfigureClient(&guestConfigurationAssignmentsClient.Client, o.ResourceManagerAuthorizer)

return &Client{
AssignmentsClient: &assignmentsClient,
DefinitionsClient: &definitionsClient,
SetDefinitionsClient: &setDefinitionsClient,
RemediationsClient: &remediationsClient,
AssignmentsClient: &assignmentsClient,
DefinitionsClient: &definitionsClient,
SetDefinitionsClient: &setDefinitionsClient,
RemediationsClient: &remediationsClient,
GuestConfigurationAssignmentsClient: &guestConfigurationAssignmentsClient,
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,131 @@
package parse

// NOTE: this file is generated via 'go:generate' - manual changes will be overwritten

import (
"fmt"
"strings"

"github.com/terraform-providers/terraform-provider-azurerm/azurerm/helpers/azure"
)

type VirtualMachineConfigurationPolicyAssignmentId struct {
SubscriptionId string
ResourceGroup string
VirtualMachineName string
GuestConfigurationAssignmentName string
}

func NewVirtualMachineConfigurationPolicyAssignmentID(subscriptionId, resourceGroup, virtualMachineName, guestConfigurationAssignmentName string) VirtualMachineConfigurationPolicyAssignmentId {
return VirtualMachineConfigurationPolicyAssignmentId{
SubscriptionId: subscriptionId,
ResourceGroup: resourceGroup,
VirtualMachineName: virtualMachineName,
GuestConfigurationAssignmentName: guestConfigurationAssignmentName,
}
}

func (id VirtualMachineConfigurationPolicyAssignmentId) String() string {
segments := []string{
fmt.Sprintf("Guest Configuration Assignment Name %q", id.GuestConfigurationAssignmentName),
fmt.Sprintf("Virtual Machine Name %q", id.VirtualMachineName),
fmt.Sprintf("Resource Group %q", id.ResourceGroup),
}
segmentsStr := strings.Join(segments, " / ")
return fmt.Sprintf("%s: (%s)", "Virtual Machine Configuration Policy Assignment", segmentsStr)
}

func (id VirtualMachineConfigurationPolicyAssignmentId) ID() string {
fmtString := "/subscriptions/%s/resourceGroups/%s/providers/Microsoft.Compute/virtualMachines/%s/providers/Microsoft.GuestConfiguration/guestConfigurationAssignments/%s"
return fmt.Sprintf(fmtString, id.SubscriptionId, id.ResourceGroup, id.VirtualMachineName, id.GuestConfigurationAssignmentName)
}

// VirtualMachineConfigurationPolicyAssignmentID parses a VirtualMachineConfigurationPolicyAssignment ID into an VirtualMachineConfigurationPolicyAssignmentId struct
func VirtualMachineConfigurationPolicyAssignmentID(input string) (*VirtualMachineConfigurationPolicyAssignmentId, error) {
id, err := azure.ParseAzureResourceID(input)
if err != nil {
return nil, err
}

resourceId := VirtualMachineConfigurationPolicyAssignmentId{
SubscriptionId: id.SubscriptionID,
ResourceGroup: id.ResourceGroup,
}

if resourceId.SubscriptionId == "" {
return nil, fmt.Errorf("ID was missing the 'subscriptions' element")
}

if resourceId.ResourceGroup == "" {
return nil, fmt.Errorf("ID was missing the 'resourceGroups' element")
}

if resourceId.VirtualMachineName, err = id.PopSegment("virtualMachines"); err != nil {
return nil, err
}
if resourceId.GuestConfigurationAssignmentName, err = id.PopSegment("guestConfigurationAssignments"); err != nil {
return nil, err
}

if err := id.ValidateNoEmptySegments(input); err != nil {
return nil, err
}

return &resourceId, nil
}

// VirtualMachineConfigurationPolicyAssignmentIDInsensitively parses an VirtualMachineConfigurationPolicyAssignment ID into an VirtualMachineConfigurationPolicyAssignmentId struct, insensitively
// This should only be used to parse an ID for rewriting, the VirtualMachineConfigurationPolicyAssignmentID
// method should be used instead for validation etc.
//
// Whilst this may seem strange, this enables Terraform have consistent casing
// which works around issues in Core, whilst handling broken API responses.
func VirtualMachineConfigurationPolicyAssignmentIDInsensitively(input string) (*VirtualMachineConfigurationPolicyAssignmentId, error) {
id, err := azure.ParseAzureResourceID(input)
if err != nil {
return nil, err
}

resourceId := VirtualMachineConfigurationPolicyAssignmentId{
SubscriptionId: id.SubscriptionID,
ResourceGroup: id.ResourceGroup,
}

if resourceId.SubscriptionId == "" {
return nil, fmt.Errorf("ID was missing the 'subscriptions' element")
}

if resourceId.ResourceGroup == "" {
return nil, fmt.Errorf("ID was missing the 'resourceGroups' element")
}

// find the correct casing for the 'virtualMachines' segment
virtualMachinesKey := "virtualMachines"
for key := range id.Path {
if strings.EqualFold(key, virtualMachinesKey) {
virtualMachinesKey = key
break
}
}
if resourceId.VirtualMachineName, err = id.PopSegment(virtualMachinesKey); err != nil {
return nil, err
}

// find the correct casing for the 'guestConfigurationAssignments' segment
guestConfigurationAssignmentsKey := "guestConfigurationAssignments"
for key := range id.Path {
if strings.EqualFold(key, guestConfigurationAssignmentsKey) {
guestConfigurationAssignmentsKey = key
break
}
}
if resourceId.GuestConfigurationAssignmentName, err = id.PopSegment(guestConfigurationAssignmentsKey); err != nil {
return nil, err
}

if err := id.ValidateNoEmptySegments(input); err != nil {
return nil, err
}

return &resourceId, nil
}
Loading