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

azurerm_kubernetes_fleet_manager - Add support for hub_profile property #28365

Open
wants to merge 1 commit into
base: main
Choose a base branch
from

Conversation

hqhqhqhqhqhqhqhqhqhqhq
Copy link
Contributor

@hqhqhqhqhqhqhqhqhqhqhq hqhqhqhqhqhqhqhqhqhqhq commented Dec 22, 2024

Community Note

  • Please vote on this PR by adding a 👍 reaction to the original PR to help the community and maintainers prioritize for review
  • Please do not leave comments along the lines of "+1", "me too" or "any updates", they generate extra noise for PR followers and do not help prioritize for review

Description

azurerm_kubernetes_fleet_manager - Add support for hub_profile property
The current api version 2024-04-01 now supports the hub_profile property.
This resource is originally auto generated by pandora, but the generated code for api version 2024-04-01 does not work and needs to be implemented manually.

PR Checklist

  • I have followed the guidelines in our Contributing Documentation.
  • I have checked to ensure there aren't other open Pull Requests for the same update/change.
  • I have checked if my changes close any open issues. If so please include appropriate closing keywords below.
  • I have updated/added Documentation as required written in a helpful and kind way to assist users that may be unfamiliar with the resource / data source.
  • I have used a meaningful PR title to help maintainers and other users understand this change and help prevent duplicate work.
    For example: “resource_name_here - description of change e.g. adding property new_property_name_here

Changes to existing Resource / Data Source

  • I have added an explanation of what my changes do and why I'd like you to include them (This may be covered by linking to an issue above, but may benefit from additional explanation).
  • I have written new tests for my resource or datasource changes & updated any relevent documentation.
  • I have successfully run tests with my changes locally. If not, please provide details on testing challenges that prevented you running the tests.
  • (For changes that include a state migration only). I have manually tested the migration path between relevant versions of the provider.

Testing

  • My submission includes Test coverage as described in the Contribution Guide and the tests pass. (if this is not possible for any reason, please include details of why you did or could not add test coverage)
image

Change Log

Below please provide what should go into the changelog (if anything) conforming to the Changelog Format documented here.

  • azurerm_kubernetes_fleet_manager - Add support for hub_profile property

This is a (please select all that apply):

  • Bug Fix
  • New Feature (ie adding a service, resource, or data source)
  • Enhancement
  • Breaking Change

Related Issue(s)

Note

If this PR changes meaningfully during the course of review please update the title and description as required.

})
}

func TestAccKubernetesFleetManager_update(t *testing.T) {
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Please keep this test case to verify if the tags can be updated. You can create a update function to provide the config with updated tags.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Added
image

@hqhqhqhqhqhqhqhqhqhqhq hqhqhqhqhqhqhqhqhqhqhq marked this pull request as ready for review January 7, 2025 02:05
@hqhqhqhqhqhqhqhqhqhqhq hqhqhqhqhqhqhqhqhqhqhq requested a review from a team as a code owner January 7, 2025 02:05
Comment on lines 110 to 116
var model KubernetesFleetManagerModel
if err := metadata.Decode(&model); err != nil {
return fmt.Errorf("decoding: %+v", err)
}

client := metadata.Client.ContainerService.V20231015.Fleets
subscriptionId := metadata.Client.Account.SubscriptionId
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Please be mindful of the ordering of calls here, boilerplate code should follow the same pattern and ordering as the rest of the provider.

Suggested change
var model KubernetesFleetManagerModel
if err := metadata.Decode(&model); err != nil {
return fmt.Errorf("decoding: %+v", err)
}
client := metadata.Client.ContainerService.V20231015.Fleets
subscriptionId := metadata.Client.Account.SubscriptionId
client := metadata.Client.ContainerService.V20231015.Fleets
subscriptionId := metadata.Client.Account.SubscriptionId
var model KubernetesFleetManagerModel
if err := metadata.Decode(&model); err != nil {
return fmt.Errorf("decoding: %+v", err)
}

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

updated

if !response.WasNotFound(existing.HttpResponse) {
return metadata.ResourceRequiresImport(r.ResourceType(), id)
}

var payload fleets.Fleet
r.mapKubernetesFleetManagerResourceSchemaToFleet(config, &payload)
fleetResource := &fleets.Fleet{
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This is usually called params or payload

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

updated

output.Tags = tags.Flatten(input.Tags)
func flattenFleetHubProfileModel(input *fleets.FleetHubProfile) []FleetHubProfileModel {
if input == nil {
return nil
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

We should return an empty hub profile model here

Suggested change
return nil
return []FleetHubProfileModel

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

updated

Copy link

This PR is being labeled as "stale" because it has not been updated for 30 or more days.

If this PR is still valid, please remove the "stale" label. If this PR is blocked, please add it to the "Blocked" milestone.

If you need some help completing this PR, please leave a comment letting us know. Thank you!

@hqhqhqhqhqhqhqhqhqhqhq
Copy link
Contributor Author

@stephybun Hi, thanks for review, updated the fix. Ready for rereview.

@github-actions github-actions bot removed the stale label Feb 24, 2025
Copy link
Member

@stephybun stephybun left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thanks @hqhqhqhqhqhqhqhqhqhqhq could you resolve the merge conflict and the comment I left in-line? Once that's done this should be good to go.

Comment on lines 168 to 177
properties := resp.Model
if resp.Model == nil {
return fmt.Errorf("retrieving %s: `model` was nil", *id)
}
if resp.Model.Properties == nil {
return fmt.Errorf("retrieving %s: `properties` was nil", *id)
}

if metadata.ResourceData.HasChange("tags") {
properties.Tags = pointer.To(model.Tags)
}

if err := client.CreateOrUpdateThenPoll(ctx, *id, *properties, fleets.DefaultCreateOrUpdateOperationOptions()); err != nil {
return fmt.Errorf("updating %s: %+v", *id, err)
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

We're not patching anything into properties so there's no need to nil check this.

Suggested change
properties := resp.Model
if resp.Model == nil {
return fmt.Errorf("retrieving %s: `model` was nil", *id)
}
if resp.Model.Properties == nil {
return fmt.Errorf("retrieving %s: `properties` was nil", *id)
}
if metadata.ResourceData.HasChange("tags") {
properties.Tags = pointer.To(model.Tags)
}
if err := client.CreateOrUpdateThenPoll(ctx, *id, *properties, fleets.DefaultCreateOrUpdateOperationOptions()); err != nil {
return fmt.Errorf("updating %s: %+v", *id, err)
if resp.Model == nil {
return fmt.Errorf("retrieving %s: `model` was nil", *id)
}
payload := resp.Model
if metadata.ResourceData.HasChange("tags") {
payload.Tags = pointer.To(model.Tags)
}
if err := client.CreateOrUpdateThenPoll(ctx, *id, *payload, fleets.DefaultCreateOrUpdateOperationOptions()); err != nil {
return fmt.Errorf("updating %s: %+v", *id, err)

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Done!
Thanks

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Sry... did a rebase and made the labels bit weird....
And can't see where I can update those, maybe I don't have permission, can you help check if you can fix the labels?

Update kubernetes_fleet_manager_resource.go

Update kubernetes_fleet_manager_resource.go

Update kubernetes_fleet_manager_resource_test.go

Update kubernetes_fleet_manager.html.markdown

Update kubernetes_fleet_manager.html.markdown

update

update
@hqhqhqhqhqhqhqhqhqhqhq hqhqhqhqhqhqhqhqhqhqhq force-pushed the feat/fleet-manager-support-hub-profile branch from e026d97 to da5a458 Compare February 26, 2025 23:53
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment