Skip to content

Commit

Permalink
azurerm_kubernetes_fleet_manager - deprecate hub_profile (hashico…
Browse files Browse the repository at this point in the history
…rp#25010)

* `azurerm_kubernetes_fleet_manager` - deprecate `hub_profile`

* update

* update doc examples

* update the deprecate notice

* rename files

* fix golint
  • Loading branch information
ms-henglu authored Mar 6, 2024
1 parent f06c9cd commit 8f9ae16
Show file tree
Hide file tree
Showing 5 changed files with 19 additions and 108 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -8,12 +8,11 @@ import (
"fmt"
"time"

"github.com/hashicorp/go-azure-helpers/lang/pointer"
"github.com/hashicorp/go-azure-helpers/lang/response"
"github.com/hashicorp/go-azure-helpers/resourcemanager/commonschema"
"github.com/hashicorp/go-azure-helpers/resourcemanager/location"
"github.com/hashicorp/go-azure-helpers/resourcemanager/tags"
"github.com/hashicorp/go-azure-sdk/resource-manager/containerservice/2022-09-02-preview/fleets"
"github.com/hashicorp/go-azure-sdk/resource-manager/containerservice/2023-10-15/fleets"
"github.com/hashicorp/terraform-provider-azurerm/internal/sdk"
"github.com/hashicorp/terraform-provider-azurerm/internal/tf/pluginsdk"
)
Expand All @@ -28,11 +27,10 @@ func (r KubernetesFleetManagerResource) ModelObject() interface{} {
}

type KubernetesFleetManagerResourceSchema struct {
HubProfile []KubernetesFleetManagerResourceFleetHubProfileSchema `tfschema:"hub_profile"`
Location string `tfschema:"location"`
Name string `tfschema:"name"`
ResourceGroupName string `tfschema:"resource_group_name"`
Tags map[string]interface{} `tfschema:"tags"`
Location string `tfschema:"location"`
Name string `tfschema:"name"`
ResourceGroupName string `tfschema:"resource_group_name"`
Tags map[string]interface{} `tfschema:"tags"`
}

func (r KubernetesFleetManagerResource) IDValidationFunc() pluginsdk.SchemaValidateFunc {
Expand All @@ -51,6 +49,7 @@ func (r KubernetesFleetManagerResource) Arguments() map[string]*pluginsdk.Schema
},
"resource_group_name": commonschema.ResourceGroupName(),
"hub_profile": {
Deprecated: "The service team has indicated this field is now deprecated and not to be used, as such we are marking it as such and no longer sending it to the API, please see url: https://learn.microsoft.com/en-us/azure/kubernetes-fleet/architectural-overview",
Elem: &pluginsdk.Resource{
Schema: map[string]*pluginsdk.Schema{
"dns_prefix": {
Expand Down Expand Up @@ -82,7 +81,7 @@ func (r KubernetesFleetManagerResource) Create() sdk.ResourceFunc {
return sdk.ResourceFunc{
Timeout: 30 * time.Minute,
Func: func(ctx context.Context, metadata sdk.ResourceMetaData) error {
client := metadata.Client.ContainerService.V20220902Preview.Fleets
client := metadata.Client.ContainerService.V20231015.Fleets

var config KubernetesFleetManagerResourceSchema
if err := metadata.Decode(&config); err != nil {
Expand All @@ -104,9 +103,7 @@ func (r KubernetesFleetManagerResource) Create() sdk.ResourceFunc {
}

var payload fleets.Fleet
if err := r.mapKubernetesFleetManagerResourceSchemaToFleet(config, &payload); err != nil {
return fmt.Errorf("mapping schema model to sdk model: %+v", err)
}
r.mapKubernetesFleetManagerResourceSchemaToFleet(config, &payload)

if err := client.CreateOrUpdateThenPoll(ctx, id, payload, fleets.DefaultCreateOrUpdateOperationOptions()); err != nil {
return fmt.Errorf("creating %s: %+v", id, err)
Expand All @@ -121,7 +118,7 @@ func (r KubernetesFleetManagerResource) Read() sdk.ResourceFunc {
return sdk.ResourceFunc{
Timeout: 5 * time.Minute,
Func: func(ctx context.Context, metadata sdk.ResourceMetaData) error {
client := metadata.Client.ContainerService.V20220902Preview.Fleets
client := metadata.Client.ContainerService.V20231015.Fleets
schema := KubernetesFleetManagerResourceSchema{}

id, err := fleets.ParseFleetID(metadata.ResourceData.Id())
Expand All @@ -140,9 +137,7 @@ func (r KubernetesFleetManagerResource) Read() sdk.ResourceFunc {
if model := resp.Model; model != nil {
schema.Name = id.FleetName
schema.ResourceGroupName = id.ResourceGroupName
if err := r.mapFleetToKubernetesFleetManagerResourceSchema(*model, &schema); err != nil {
return fmt.Errorf("flattening model: %+v", err)
}
r.mapFleetToKubernetesFleetManagerResourceSchema(*model, &schema)
}

return metadata.Encode(&schema)
Expand All @@ -153,7 +148,7 @@ func (r KubernetesFleetManagerResource) Delete() sdk.ResourceFunc {
return sdk.ResourceFunc{
Timeout: 30 * time.Minute,
Func: func(ctx context.Context, metadata sdk.ResourceMetaData) error {
client := metadata.Client.ContainerService.V20220902Preview.Fleets
client := metadata.Client.ContainerService.V20231015.Fleets

id, err := fleets.ParseFleetID(metadata.ResourceData.Id())
if err != nil {
Expand All @@ -172,7 +167,7 @@ func (r KubernetesFleetManagerResource) Update() sdk.ResourceFunc {
return sdk.ResourceFunc{
Timeout: 30 * time.Minute,
Func: func(ctx context.Context, metadata sdk.ResourceMetaData) error {
client := metadata.Client.ContainerService.V20220902Preview.Fleets
client := metadata.Client.ContainerService.V20231015.Fleets

id, err := fleets.ParseFleetID(metadata.ResourceData.Id())
if err != nil {
Expand All @@ -193,9 +188,7 @@ func (r KubernetesFleetManagerResource) Update() sdk.ResourceFunc {
}
payload := *existing.Model

if err := r.mapKubernetesFleetManagerResourceSchemaToFleet(config, &payload); err != nil {
return fmt.Errorf("mapping schema model to sdk model: %+v", err)
}
r.mapKubernetesFleetManagerResourceSchemaToFleet(config, &payload)

if err := client.CreateOrUpdateThenPoll(ctx, *id, payload, fleets.DefaultCreateOrUpdateOperationOptions()); err != nil {
return fmt.Errorf("updating %s: %+v", *id, err)
Expand All @@ -206,93 +199,20 @@ func (r KubernetesFleetManagerResource) Update() sdk.ResourceFunc {
}
}

type KubernetesFleetManagerResourceFleetHubProfileSchema struct {
DnsPrefix string `tfschema:"dns_prefix"`
Fqdn string `tfschema:"fqdn"`
KubernetesVersion string `tfschema:"kubernetes_version"`
}

func (r KubernetesFleetManagerResource) mapKubernetesFleetManagerResourceFleetHubProfileSchemaToFleetHubProfile(input KubernetesFleetManagerResourceFleetHubProfileSchema, output *fleets.FleetHubProfile) error {
output.DnsPrefix = input.DnsPrefix

return nil
}

func (r KubernetesFleetManagerResource) mapFleetHubProfileToKubernetesFleetManagerResourceFleetHubProfileSchema(input fleets.FleetHubProfile, output *KubernetesFleetManagerResourceFleetHubProfileSchema) error {
output.DnsPrefix = input.DnsPrefix
output.Fqdn = pointer.From(input.Fqdn)
output.KubernetesVersion = pointer.From(input.KubernetesVersion)
return nil
}

func (r KubernetesFleetManagerResource) mapKubernetesFleetManagerResourceFleetHubProfileSchemaToFleetProperties(input KubernetesFleetManagerResourceFleetHubProfileSchema, output *fleets.FleetProperties) error {

if output.HubProfile == nil {
output.HubProfile = &fleets.FleetHubProfile{}
}
if err := r.mapKubernetesFleetManagerResourceFleetHubProfileSchemaToFleetHubProfile(input, output.HubProfile); err != nil {
return fmt.Errorf("mapping Schema to SDK Field %q / Model %q: %+v", "FleetHubProfile", "HubProfile", err)
}

return nil
}

func (r KubernetesFleetManagerResource) mapFleetPropertiesToKubernetesFleetManagerResourceFleetHubProfileSchema(input fleets.FleetProperties, output *KubernetesFleetManagerResourceFleetHubProfileSchema) error {

if input.HubProfile == nil {
input.HubProfile = &fleets.FleetHubProfile{}
}
if err := r.mapFleetHubProfileToKubernetesFleetManagerResourceFleetHubProfileSchema(*input.HubProfile, output); err != nil {
return fmt.Errorf("mapping SDK Field %q / Model %q to Schema: %+v", "FleetHubProfile", "HubProfile", err)
}

return nil
}

func (r KubernetesFleetManagerResource) mapKubernetesFleetManagerResourceSchemaToFleet(input KubernetesFleetManagerResourceSchema, output *fleets.Fleet) error {
func (r KubernetesFleetManagerResource) mapKubernetesFleetManagerResourceSchemaToFleet(input KubernetesFleetManagerResourceSchema, output *fleets.Fleet) {
output.Location = location.Normalize(input.Location)
output.Tags = tags.Expand(input.Tags)

if output.Properties == nil {
output.Properties = &fleets.FleetProperties{}
}
if err := r.mapKubernetesFleetManagerResourceSchemaToFleetProperties(input, output.Properties); err != nil {
return fmt.Errorf("mapping Schema to SDK Field %q / Model %q: %+v", "FleetProperties", "Properties", err)
}

return nil
}

func (r KubernetesFleetManagerResource) mapFleetToKubernetesFleetManagerResourceSchema(input fleets.Fleet, output *KubernetesFleetManagerResourceSchema) error {
func (r KubernetesFleetManagerResource) mapFleetToKubernetesFleetManagerResourceSchema(input fleets.Fleet, output *KubernetesFleetManagerResourceSchema) {
output.Location = location.Normalize(input.Location)
output.Tags = tags.Flatten(input.Tags)

if input.Properties == nil {
input.Properties = &fleets.FleetProperties{}
}
if err := r.mapFleetPropertiesToKubernetesFleetManagerResourceSchema(*input.Properties, output); err != nil {
return fmt.Errorf("mapping SDK Field %q / Model %q to Schema: %+v", "FleetProperties", "Properties", err)
}

return nil
}

func (r KubernetesFleetManagerResource) mapKubernetesFleetManagerResourceSchemaToFleetProperties(input KubernetesFleetManagerResourceSchema, output *fleets.FleetProperties) error {
if len(input.HubProfile) > 0 {
if err := r.mapKubernetesFleetManagerResourceFleetHubProfileSchemaToFleetProperties(input.HubProfile[0], output); err != nil {
return err
}
}
return nil
}

func (r KubernetesFleetManagerResource) mapFleetPropertiesToKubernetesFleetManagerResourceSchema(input fleets.FleetProperties, output *KubernetesFleetManagerResourceSchema) error {
tmpHubProfile := &KubernetesFleetManagerResourceFleetHubProfileSchema{}
if err := r.mapFleetPropertiesToKubernetesFleetManagerResourceFleetHubProfileSchema(input, tmpHubProfile); err != nil {
return err
} else {
output.HubProfile = make([]KubernetesFleetManagerResourceFleetHubProfileSchema, 0)
output.HubProfile = append(output.HubProfile, *tmpHubProfile)
}
return nil
}
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@ import (
"fmt"
"testing"

"github.com/hashicorp/go-azure-sdk/resource-manager/containerservice/2022-09-02-preview/fleets"
"github.com/hashicorp/go-azure-sdk/resource-manager/containerservice/2023-10-15/fleets"
"github.com/hashicorp/terraform-provider-azurerm/internal/acceptance"
"github.com/hashicorp/terraform-provider-azurerm/internal/acceptance/check"
"github.com/hashicorp/terraform-provider-azurerm/internal/clients"
Expand Down Expand Up @@ -59,7 +59,7 @@ func TestAccKubernetesFleetManager_complete(t *testing.T) {
check.That(data.ResourceName).ExistsInAzure(r),
),
},
data.ImportStep(),
data.ImportStep("hub_profile.#", "hub_profile.0.%", "hub_profile.0.dns_prefix", "hub_profile.0.fqdn", "hub_profile.0.kubernetes_version"),
})
}

Expand All @@ -81,7 +81,7 @@ func TestAccKubernetesFleetManager_update(t *testing.T) {
check.That(data.ResourceName).ExistsInAzure(r),
),
},
data.ImportStep(),
data.ImportStep("hub_profile.#", "hub_profile.0.%", "hub_profile.0.dns_prefix", "hub_profile.0.fqdn", "hub_profile.0.kubernetes_version"),
{
Config: r.basic(data),
Check: acceptance.ComposeTestCheckFunc(
Expand All @@ -97,7 +97,7 @@ func (r KubernetesFleetManagerTestResource) Exists(ctx context.Context, clients
return nil, err
}

resp, err := clients.ContainerService.V20220902Preview.Fleets.Get(ctx, *id)
resp, err := clients.ContainerService.V20231015.Fleets.Get(ctx, *id)
if err != nil {
return nil, fmt.Errorf("reading %s: %+v", *id, err)
}
Expand Down
2 changes: 0 additions & 2 deletions website/docs/r/kubernetes_fleet_manager.html.markdown
Original file line number Diff line number Diff line change
Expand Up @@ -36,8 +36,6 @@ The following arguments are supported:

* `resource_group_name` - (Required) Specifies the name of the Resource Group within which this Kubernetes Fleet Manager should exist. Changing this forces a new Kubernetes Fleet Manager to be created.

* `hub_profile` - (Optional) A `hub_profile` block as defined below. The FleetHubProfile configures the Fleet's hub. Changing this forces a new Kubernetes Fleet Manager to be created.

* `tags` - (Optional) A mapping of tags which should be assigned to the Kubernetes Fleet Manager.

## Attributes Reference
Expand Down
4 changes: 0 additions & 4 deletions website/docs/r/kubernetes_fleet_update_run.html.markdown
Original file line number Diff line number Diff line change
Expand Up @@ -22,12 +22,8 @@ resource "azurerm_kubernetes_fleet_manager" "example" {
location = azurerm_resource_group.example.location
name = "example"
resource_group_name = azurerm_resource_group.example.name
hub_profile {
dns_prefix = "example-dns-prefix"
}
}
resource "azurerm_kubernetes_cluster" "example" {
name = "example"
location = azurerm_resource_group.example.location
Expand Down
3 changes: 0 additions & 3 deletions website/docs/r/kubernetes_fleet_update_strategy.html.markdown
Original file line number Diff line number Diff line change
Expand Up @@ -22,9 +22,6 @@ resource "azurerm_kubernetes_fleet_manager" "example" {
location = azurerm_resource_group.example.location
name = "example"
resource_group_name = azurerm_resource_group.example.name
hub_profile {
dns_prefix = "example-dns-prefix"
}
}
resource "azurerm_kubernetes_fleet_update_strategy" "example" {
Expand Down

0 comments on commit 8f9ae16

Please sign in to comment.