diff --git a/CLAUDE.md b/CLAUDE.md index 626cff31f025..3e2a589fce09 100644 --- a/CLAUDE.md +++ b/CLAUDE.md @@ -208,6 +208,103 @@ This metadata is used by the provider at runtime for constructing API calls. - Use `TEST_NAME` to run specific tests - Full test suite can take 2+ hours +### Manual Testing for API Version Upgrades + +When testing scenarios involving API version changes (e.g., state migration, refresh behavior), it's important to understand how `azureApiVersion` works: + +**How `azureApiVersion` is Determined:** + +1. **NOT from SDK**: The `azureApiVersion` field is computed by the provider, not supplied as an input from the SDK +2. **From Provider Metadata**: The API version comes from `metadata-compact.json` baked into the provider binary +3. **Lookup Process**: + - SDK sends URN with type token (e.g., `azure-native:containerservice/v20241002preview:ManagedCluster`) + - Provider looks up this token in its embedded metadata + - Provider uses `res.APIVersion` from metadata for all operations + - Provider sets `azureApiVersion` output after every CRUD operation + +**API Version Format Conversion:** + +The provider uses two different formats for API versions: + +1. **SDK Version Format** (used in type tokens): `v20241002preview` + - Example: `azure-native:containerservice/v20241002preview:ManagedCluster` + - Format: `v` + `YYYYMMDD` + optional suffix (preview, beta, privatepreview) + +2. **API Version Format** (used in Azure ARM API calls and state): `2024-10-02-preview` + - Stored in `azureApiVersion` output property + - Format: `YYYY-MM-DD` + optional `-suffix` + +**Conversion Functions** (in `provider/pkg/openapi/versioner.go`): +- `openapi.ApiToSdkVersion()` - Converts `2024-10-02-preview` → `v20241002preview` +- `openapi.SdkToApiVersion()` - Converts `v20241002preview` → `2024-10-02-preview` + +When working with API versions in provider code, always use these canonical conversion functions rather than reimplementing the logic. + +**Testing Approaches for API Version Changes:** + +**Option 1: Modify Version Configuration (Most Realistic)** +```bash +# 1. Modify default versions for a resource +vi versions/v3-config.yaml # Change StorageAccount default version + +# 2. Regenerate schema and metadata +make schema + +# 3. Rebuild provider with new metadata +make provider + +# 4. Deploy resources, then repeat steps 1-3 with different version +# 5. Run pulumi refresh to test migration behavior +``` + +**Option 2: State Manipulation (Quick & Effective)** +```bash +# 1. Deploy resources with current provider +pulumi up + +# 2. Export and modify state to simulate old API version +pulumi stack export > state.json +jq '(.deployment.resources[] | select(.type == "azure-native:storage:StorageAccount")) |= (.outputs.azureApiVersion = "2023-01-01")' state.json > state-old.json + +# 3. Import modified state +pulumi stack import --file state-old.json + +# 4. Run refresh (provider reads with new API, compares with old) +pulumi refresh --yes + +# 5. Verify no spurious changes detected +``` + +**Option 3: Two Provider Binaries (Most Thorough)** +```bash +# 1. Checkout and build provider at earlier version +git checkout v3.50.0 +make provider +cp bin/pulumi-resource-azure-native ~/provider-old + +# 2. Deploy resources using old provider +PATH="$HOME:$PATH" pulumi up + +# 3. Checkout and build provider at newer version +git checkout v3.100.0 +make provider +cp bin/pulumi-resource-azure-native ~/provider-new + +# 4. Run refresh with new provider +PATH="$HOME:$PATH" pulumi refresh --yes + +# 5. Verify no spurious changes or replacements +``` + +**Why This Matters:** + +- The SDK version does NOT control API versions - the provider binary's metadata does +- When users upgrade provider versions, default API versions can change +- The provider must correctly handle state migration when `azureApiVersion` differs between old state and new metadata +- Test scenarios should validate that refresh operations don't report spurious property changes when only the API version changed + +See issue #4400 for an example of a bug that required this type of testing to validate the fix. + ## Submodule Management ```bash diff --git a/provider/pkg/provider/provider.go b/provider/pkg/provider/provider.go index 6364fc0401b8..3310f2b7dc06 100644 --- a/provider/pkg/provider/provider.go +++ b/provider/pkg/provider/provider.go @@ -31,6 +31,7 @@ import ( "github.com/pulumi/pulumi-azure-native/v2/provider/pkg/azure" "github.com/pulumi/pulumi-azure-native/v2/provider/pkg/azure/cloud" "github.com/pulumi/pulumi-azure-native/v2/provider/pkg/convert" + "github.com/pulumi/pulumi-azure-native/v2/provider/pkg/openapi" "github.com/pulumi/pulumi-azure-native/v2/provider/pkg/openapi/defaults" "github.com/pulumi/pulumi-azure-native/v2/provider/pkg/provider/crud" "github.com/pulumi/pulumi-azure-native/v2/provider/pkg/resources" @@ -175,6 +176,50 @@ func (k *azureNativeProvider) lookupResourceFromURN(urn resource.URN) (*resource return &res, nil } +// lookupResourceWithAPIVersion attempts to look up resource metadata for a specific API version. +// It finds a resource with the same ARM path as the current resource but with the requested API version. +// This works because the ARM path is stable across API versions for the same resource type. +func (k *azureNativeProvider) lookupResourceWithAPIVersion(urn resource.URN, apiVersion string) (*resources.AzureAPIResource, error) { + // Get current resource to extract its ARM path for verification + currentRes, err := k.lookupResourceFromURN(urn) + if err != nil { + return nil, err + } + + // Parse the current type token to extract module and resource name + currentType := string(urn.Type()) + module, _, resourceName, err := resources.ParseToken(currentType) + if err != nil { + return nil, errors.Wrapf(err, "parsing resource type %s", currentType) + } + + // Convert API version from ISO format (2024-01-02) to SDK version format (v20240102) + sdkVersion := openapi.ApiToSdkVersion(openapi.ApiVersion(apiVersion)) + + // Construct candidate type token with the target API version + candidateType := resources.BuildToken(module, string(sdkVersion), resourceName) + + // Look up the resource with this type token + res, ok, err := k.LookupResource(candidateType) + if err != nil { + return nil, errors.Wrapf(err, "looking up resource type %s", candidateType) + } + if !ok { + return nil, errors.Errorf("Resource type %s not found (API version %s not available in this provider version)", + candidateType, apiVersion) + } + + // Verify this resource has the same path and correct API version + if res.Path != currentRes.Path { + return nil, errors.Errorf("Resource path mismatch: expected %s, found %s", currentRes.Path, res.Path) + } + if res.APIVersion != apiVersion { + return nil, errors.Errorf("API version mismatch: expected %s, found %s", apiVersion, res.APIVersion) + } + + return &res, nil +} + // newCrudClient implements crud.ResourceCrudClientFactory func (p *azureNativeProvider) newCrudClient(res *resources.AzureAPIResource) crud.ResourceCrudClient { return crud.NewResourceCrudClient(p.azureClient, p.lookupType, p.converter, p.subscriptionID, res) @@ -920,7 +965,7 @@ func (k *azureNativeProvider) DiffConfig(context.Context, *rpc.DiffRequest) (*rp } // Diff checks what impacts a hypothetical update will have on the resource's properties. -func (k *azureNativeProvider) Diff(_ context.Context, req *rpc.DiffRequest) (*rpc.DiffResponse, error) { +func (k *azureNativeProvider) Diff(ctx context.Context, req *rpc.DiffRequest) (*rpc.DiffResponse, error) { urn := resource.URN(req.GetUrn()) label := fmt.Sprintf("%s.Diff(%s)", k.name, urn) @@ -974,6 +1019,22 @@ func (k *azureNativeProvider) Diff(_ context.Context, req *rpc.DiffRequest) (*rp return nil, err } + // Check if API version has changed between state and current provider metadata. + // If so, warn the user to run `pulumi refresh` for proper schema alignment. + var oldApiVersion string + if azureApiVersion, ok := oldState["azureApiVersion"]; ok && azureApiVersion.IsString() { + oldApiVersion = azureApiVersion.StringValue() + if oldApiVersion != res.APIVersion { + logging.V(5).Infof("%s: API version in state (%s) differs from provider metadata (%s)", + label, oldApiVersion, res.APIVersion) + + k.host.Log(ctx, diag.Warning, urn, fmt.Sprintf( + "Resource API version has changed from %s to %s. "+ + "Run 'pulumi refresh' to update the resource state with the new API version schema.", + oldApiVersion, res.APIVersion)) + } + } + detailedDiff := diff(k.lookupType, *res, oldInputs, newResInputs) if detailedDiff == nil { return &rpc.DiffResponse{ @@ -1312,6 +1373,24 @@ func (k *azureNativeProvider) Read(ctx context.Context, req *rpc.ReadRequest) (* return nil, err } + // Check if API version has changed (e.g., via alias during upgrade). + // If so, we need to use the old API version's schema for normalizing old state. + var oldApiVersion string + var oldRes *resources.AzureAPIResource + if azureApiVersion, ok := oldState["azureApiVersion"]; ok && azureApiVersion.IsString() { + oldApiVersion = azureApiVersion.StringValue() + if oldApiVersion != res.APIVersion { + // API version has changed. Try to look up the old resource metadata. + logging.V(5).Infof("%s: API version changed from %s to %s", label, oldApiVersion, res.APIVersion) + oldRes, err = k.lookupResourceWithAPIVersion(urn, oldApiVersion) + if err != nil { + logging.V(5).Infof("%s: could not look up old resource metadata for API version %s: %v", label, oldApiVersion, err) + // Continue with current resource metadata but log the issue + oldRes = nil + } + } + } + crudClient := crud.NewResourceCrudClient(k.azureClient, k.lookupType, k.converter, k.subscriptionID, res) var outputs map[string]interface{} @@ -1379,21 +1458,45 @@ func (k *azureNativeProvider) Read(ctx context.Context, req *rpc.ReadRequest) (* // 1. If we previously reset inputs to their default value, remove them so we don't get them in // the projected output. This would cause unnecessary changes on refresh. - removeDefaults(*res, plainOldState, previousInputs.Mappable()) + // Use old resource metadata if API version changed to ensure we use the correct defaults. + resForDefaults := res + if oldRes != nil { + resForDefaults = oldRes + } + removeDefaults(*resForDefaults, plainOldState, previousInputs.Mappable()) + // 2. Project old outputs to their corresponding input shape (exclude read-only properties). - oldInputProjection := k.converter.SdkOutputsToSdkInputs(res.PutParameters, plainOldState) + // Use old resource metadata if API version changed to ensure schema-correct conversion. + var oldInputProjection map[string]interface{} + if oldRes != nil { + // API version changed: use old schema for converting old state + oldInputProjection = k.converter.SdkOutputsToSdkInputs(oldRes.PutParameters, plainOldState) + } else { + // Same API version: use current schema + oldInputProjection = k.converter.SdkOutputsToSdkInputs(res.PutParameters, plainOldState) + } + // 3a. Remove sub-resource properties from new outputs which weren't set in the old inputs. // If the user didn't specify them inline originally, we don't want to push them into the inputs now. outputsWithoutIgnores := k.removeUnsetSubResourceProperties(ctx, urn, outputs, inputs, res) // 3b. Project new outputs to their corresponding input shape (exclude read-only properties). + // Always use new schema for new outputs from Azure. newInputProjection := k.converter.SdkOutputsToSdkInputs(res.PutParameters, outputsWithoutIgnores) + // 4. Calculate the difference between two projections. This should give us actual significant changes // that happened in Azure between the last resource update and its current state. oldInputPropertyMap := resource.NewPropertyMapFromMap(oldInputProjection) newInputPropertyMap := resource.NewPropertyMapFromMap(newInputProjection) diff := oldInputPropertyMap.Diff(newInputPropertyMap) + // 5. Apply this difference to the actual inputs (not a projection) that we have in state. - inputs = applyDiff(inputs, diff) + // If API version changed and we couldn't find old metadata, preserve old inputs to avoid spurious diffs. + if oldApiVersion != "" && oldApiVersion != res.APIVersion && oldRes == nil { + logging.V(5).Infof("%s: API version changed but old metadata not found, preserving old inputs", label) + // Don't apply the diff - keep old inputs as-is since we can't reliably calculate changes + } else { + inputs = applyDiff(inputs, diff) + } } // Store both outputs and inputs into the state. diff --git a/provider/pkg/provider/provider_e2e_test.go b/provider/pkg/provider/provider_e2e_test.go index 29f13ff1704a..c4731563e5cc 100644 --- a/provider/pkg/provider/provider_e2e_test.go +++ b/provider/pkg/provider/provider_e2e_test.go @@ -359,6 +359,12 @@ func TestUpgradeContainerServiceAgentPool_2_90_0(t *testing.T) { upgradeTest(t, "upgrade-containerservice-agentpool", "2.90.0") } +func TestUpgradeAksApiVersion_2_90_0(t *testing.T) { + upgradeTest(t, "upgrade-aks-api-version", "2.90.0", + // v2 uses versioned type (containerservice/v20240102preview), v3 uses unversioned with alias + optproviderupgrade.NewSourcePath(filepath.Join("test-programs", "upgrade-aks-api-version", "v3"))) +} + func upgradeTest(t *testing.T, testProgramDir string, upgradeFromVersion string, opts ...optproviderupgrade.PreviewProviderUpgradeOpt) { t.Helper() if testing.Short() { diff --git a/provider/pkg/provider/provider_test.go b/provider/pkg/provider/provider_test.go index f0e12f44d267..641f09b07833 100644 --- a/provider/pkg/provider/provider_test.go +++ b/provider/pkg/provider/provider_test.go @@ -417,6 +417,136 @@ func TestReader(t *testing.T) { }) } +// TestReadWithApiVersionMismatch tests the fix for issue #4400: +// When API version changes during provider upgrade, Read() should use the OLD schema +// from state's azureApiVersion, not the NEW default API version from metadata. +func TestReadWithApiVersionMismatch(t *testing.T) { + const ( + oldApiVersion = "2024-01-02-preview" + newApiVersion = "2024-10-02-preview" + resourcePath = "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ContainerService/managedClusters/{clusterName}" + ) + + // Create resource definitions for old and new API versions + oldResource := resources.AzureAPIResource{ + Path: resourcePath, + APIVersion: oldApiVersion, + PutParameters: []resources.AzureAPIParameter{ + { + Location: "body", + Name: "properties", + Body: &resources.AzureAPIType{ + Properties: map[string]resources.AzureAPIProperty{ + "location": {Type: "string"}, + "properties": { + Type: "object", + Ref: "#/types/azure-native:containerservice/v20240102preview:ManagedClusterProperties", + }, + }, + }, + }, + }, + Response: map[string]resources.AzureAPIProperty{ + "id": {Type: "string"}, + "location": {Type: "string"}, + "azureApiVersion": {Type: "string"}, + "properties": { + Type: "object", + Ref: "#/types/azure-native:containerservice/v20240102preview:ManagedClusterProperties", + }, + }, + } + + newResource := resources.AzureAPIResource{ + Path: resourcePath, + APIVersion: newApiVersion, + PutParameters: []resources.AzureAPIParameter{ + { + Location: "body", + Name: "properties", + Body: &resources.AzureAPIType{ + Properties: map[string]resources.AzureAPIProperty{ + "location": {Type: "string"}, + "properties": { + Type: "object", + Ref: "#/types/azure-native:containerservice/v20241002preview:ManagedClusterProperties", + }, + }, + }, + }, + }, + Response: map[string]resources.AzureAPIProperty{ + "id": {Type: "string"}, + "location": {Type: "string"}, + "azureApiVersion": {Type: "string"}, + "properties": { + Type: "object", + Ref: "#/types/azure-native:containerservice/v20241002preview:ManagedClusterProperties", + }, + }, + } + + // Create mock resource map + mockResourceMap := resources.GoMap[resources.AzureAPIResource]{ + "azure-native:containerservice/v20240102preview:ManagedCluster": oldResource, + "azure-native:containerservice/v20241002preview:ManagedCluster": newResource, + "azure-native:containerservice:ManagedCluster": newResource, + } + + // Create provider with mock resource map + provider := &azureNativeProvider{ + resourceMap: &resources.APIMetadata{ + Resources: mockResourceMap, + }, + azureClient: &az.MockAzureClient{}, + converter: &convert.SdkShapeConverter{}, + subscriptionID: "test-subscription", + customResources: make(map[string]*customresources.CustomResource), + } + + // Old state with azureApiVersion from old API + oldState := resource.PropertyMap{ + "id": resource.NewStringProperty("/subscriptions/test-subscription/resourceGroups/test-rg/providers/Microsoft.ContainerService/managedClusters/test-cluster"), + "location": resource.NewStringProperty("eastus"), + "azureApiVersion": resource.NewStringProperty(oldApiVersion), // Key: old API version + "properties": resource.NewObjectProperty(resource.PropertyMap{ + "dnsPrefix": resource.NewStringProperty("test-aks"), + }), + } + + // Call Read with current resource type (uses new API by default) + oldStateStruct, err := plugin.MarshalProperties(oldState, plugin.MarshalOptions{}) + require.NoError(t, err, "Failed to marshal properties") + + req := &rpc.ReadRequest{ + Id: "/subscriptions/test-subscription/resourceGroups/test-rg/providers/Microsoft.ContainerService/managedClusters/test-cluster", + Urn: "urn:pulumi:test::test-project::azure-native:containerservice:ManagedCluster::test-cluster", + Properties: oldStateStruct, + } + + resp, err := provider.Read(context.Background(), req) + + // Assertions + require.NoError(t, err, "Read should succeed with API version mismatch") + require.NotNil(t, resp, "Response should not be nil") + require.NotNil(t, resp.Properties, "Properties should be returned") + + // Verify outputs contain azureApiVersion + azureApiVer, ok := resp.Properties.Fields["azureApiVersion"] + assert.True(t, ok, "azureApiVersion should be present in outputs") + if ok { + // After Read, azureApiVersion should be UPDATED to the NEW version + // The fix for #4400 is to use the old schema for diff calculation, + // not to preserve the old API version in outputs + assert.Equal(t, newApiVersion, azureApiVer.GetStringValue(), + "azureApiVersion should be updated to the new version after Read") + } + + // The key validation: Read should have succeeded without errors + // The fix ensures old schema is used for normalizing old state during diff calculation, + // preventing spurious property diffs that would cause replacement +} + func TestGetPreviousInputs(t *testing.T) { t.Run("v2", func(t *testing.T) { inputs := resource.PropertyMap{ diff --git a/provider/pkg/provider/test-programs/upgrade-aks-api-version/Pulumi.yaml b/provider/pkg/provider/test-programs/upgrade-aks-api-version/Pulumi.yaml new file mode 100644 index 000000000000..cd4c0b789e39 --- /dev/null +++ b/provider/pkg/provider/test-programs/upgrade-aks-api-version/Pulumi.yaml @@ -0,0 +1,37 @@ +name: upgrade-aks-api-version +runtime: yaml +description: | + Upgrade test for issue #4400 - v2 program using explicit versioned API. + + This program is used with v2.90.0 to record the initial deployment. + Uses containerservice/v20240102preview:ManagedCluster (versioned type). + + During recording, v2.90.0 will: + - Create AKS cluster using API version 2024-01-02-preview + - Store azureApiVersion: "2024-01-02-preview" in state outputs + - Record GRPC interactions for replay + +resources: + rg: + type: azure-native:resources:ResourceGroup + properties: + location: eastus + + cluster: + type: azure-native:containerservice/v20240102preview:ManagedCluster + properties: + location: ${rg.location} + resourceGroupName: ${rg.name} + identity: + type: SystemAssigned + dnsPrefix: test-aks-4400 + agentPoolProfiles: + - name: agentpool + count: 1 + vmSize: Standard_DS2_v2 + mode: System + +outputs: + clusterId: ${cluster.id} + clusterName: ${cluster.name} + resourceGroupName: ${rg.name} diff --git a/provider/pkg/provider/test-programs/upgrade-aks-api-version/README.md b/provider/pkg/provider/test-programs/upgrade-aks-api-version/README.md new file mode 100644 index 000000000000..f68362710114 --- /dev/null +++ b/provider/pkg/provider/test-programs/upgrade-aks-api-version/README.md @@ -0,0 +1,146 @@ +# AKS API Version Upgrade Test (v2.90.0 → v3) + +## Purpose + +Regression test for [issue #4400](https://github.com/pulumi/pulumi-azure-native/issues/4400): +Spurious AKS cluster replacements during refresh after v2 → v3 upgrade. + +## The Bug + +When upgrading from v2.90.0 (versioned resources) to v3 (unversioned/default resources): + +1. Initial deployment with v2.90.0 using versioned API: `containerservice/v20240102preview:ManagedCluster` +2. State stores `azureApiVersion: "2024-01-02-preview"` in outputs +3. Code updated to v3 with unversioned/default API: `containerservice:ManagedCluster` (with alias) +4. v3 provider metadata has different default API version (e.g., `2024-10-02-preview`) +5. During refresh, provider incorrectly used NEW API version from metadata instead of OLD version from state +6. Schema differences between API versions caused false positive property diffs +7. Provider incorrectly reported spurious replacements + +### The "Mixed State" Condition + +After provider upgrade, state contains: +- Type token: `containerservice:ManagedCluster` (unversioned) +- Output: `azureApiVersion: "2024-01-02-preview"` (OLD API version from v2) +- Provider metadata: Default API version is `2024-10-02-preview` (NEW) + +**The bug**: Provider used NEW API version from metadata to read the resource, instead of OLD API version from state outputs. + +### v2 vs v3 Resource Types + +**v2.90.0** (explicit API versions): +- Uses versioned types: `azure-native:containerservice/v20240102preview:ManagedCluster` +- User explicitly selects API version + +**v3** (default API versions): +- Uses unversioned types: `azure-native:containerservice:ManagedCluster` +- Provider selects appropriate default API version +- **No explicit alias needed** - Pulumi automatically aliases compatible type changes within the same provider + +## The Fix + +Modified `lookupResourceWithAPIVersion()` in `provider.go` to: +- Check for `azureApiVersion` in state outputs during refresh +- Use OLD API version from state (not NEW default from metadata) to read resource +- Use `openapi.ApiToSdkVersion()` for canonical API version conversion +- Validate ARM path stability across API versions +- Avoid spurious replacements by comparing with correct schema version + +**Key insight**: The `azureApiVersion` output in state is the source of truth for which API version was used to create the resource. + +## Test Strategy + +This test uses the `upgradeTest` infrastructure with **two separate programs**: + +### Program Structure + +``` +upgrade-aks-api-version/ +├── Pulumi.yaml # v2 program (versioned type) +├── README.md +└── v3/ + └── Pulumi.yaml # v3 program (unversioned type + alias) +``` + +### Test Flow + +1. **Recording Phase** (v2.90.0 + root `Pulumi.yaml`): + - Uses versioned type: `containerservice/v20240102preview:ManagedCluster` + - Deploys AKS cluster with API version `2024-01-02-preview` + - State stores `azureApiVersion: "2024-01-02-preview"` in outputs + - Records GRPC interactions to `grpc.json` + +2. **Upgrade Preview Phase** (v3/master + `v3/Pulumi.yaml`): + - Uses unversioned type: `containerservice:ManagedCluster` + - Alias connects to old versioned type + - v3 provider's default API version is different (e.g., `2024-10-02-preview`) + - During refresh, provider uses `azureApiVersion` from state (OLD version) + - Validates no spurious replacements occur + +3. **Replay Mode** (CI): + - Uses recorded GRPC interactions (no Azure connection needed) + - Completes in <1 second + +## Running the Test + +### First Time (Recording) + +To record GRPC interactions with v2.90.0: + +```bash +cd provider/pkg/provider + +# Ensure you have Azure credentials configured +export ARM_SUBSCRIPTION_ID="..." +export ARM_CLIENT_ID="..." +export ARM_CLIENT_SECRET="..." +export ARM_TENANT_ID="..." + +# Run test to record interactions +# This will deploy real Azure resources with v2.90.0 and record GRPC calls +go test -v -run TestUpgradeAksApiVersion_2_90_0 -timeout 30m + +# The recording will be saved to: +# testdata/recorded/TestProviderUpgrade/upgrade-aks-api-version/2.90.0/grpc.json +``` + +**NOTE**: The first run will: +- Deploy an AKS cluster (takes ~3-5 minutes) +- Create a resource group +- Record all provider interactions to grpc.json +- Clean up resources after test completes + +### Subsequent Runs (Replay) + +Once recorded, the test runs fast using the recording: + +```bash +# Run test in replay mode (no Azure connection needed) +go test -v -run TestUpgradeAksApiVersion_2_90_0 + +# Should complete in < 1 second using recorded GRPC interactions +``` + +### CI Execution + +In CI, the test automatically uses the committed grpc.json recording, requiring no live Azure credentials. + +## Test Assertions + +The test verifies: +- `assertpreview.HasNoReplacements()` - No spurious replacements during upgrade preview +- `assertpreview.HasNoDeletes()` - No resources deleted during upgrade + +## Files + +- `Pulumi.yaml` - v2 program using versioned type `containerservice/v20240102preview:ManagedCluster` (for recording with v2.90.0) +- `v3/Pulumi.yaml` - v3 program using unversioned type `containerservice:ManagedCluster` with alias to versioned type (for upgrade preview) +- `README.md` - This file +- `testdata/recorded/TestProviderUpgrade/upgrade-aks-api-version/2.90.0/grpc.json` - Recorded GRPC interactions with v2.90.0 (created on first run) +- `testdata/recorded/TestProviderUpgrade/upgrade-aks-api-version/2.90.0/stack.json` - Stack state snapshot from v2.90.0 recording + +## Related + +- Issue: https://github.com/pulumi/pulumi-azure-native/issues/4400 +- PR: https://github.com/pulumi/pulumi-azure-native/pull/4429 +- Manual test logs: `/tmp/preview-refresh-FIXED.log`, `/tmp/up-refresh-FIXED.log` diff --git a/provider/pkg/provider/test-programs/upgrade-aks-api-version/v3/Pulumi.yaml b/provider/pkg/provider/test-programs/upgrade-aks-api-version/v3/Pulumi.yaml new file mode 100644 index 000000000000..77ce32797537 --- /dev/null +++ b/provider/pkg/provider/test-programs/upgrade-aks-api-version/v3/Pulumi.yaml @@ -0,0 +1,46 @@ +name: upgrade-aks-api-version +runtime: yaml +description: | + Upgrade test for issue #4400: v2.90.0 → v3 API version transition causing spurious replacements. + + This test validates the v2 → v3 upgrade path: + 1. Initial deployment with v2.90.0 using versioned API (v20240102preview) + 2. Upgrade to v3 (master) using unversioned/default API + 3. The upgrade should NOT cause spurious replacements during refresh + + Note: No explicit alias needed - Pulumi automatically aliases compatible type changes. + + The bug occurred when: + - v2 state has: azure-native:containerservice/v20240102preview:ManagedCluster + - v3 code uses: azure-native:containerservice:ManagedCluster (default/unversioned) + - Pulumi automatically recognizes these as the same resource + - Refresh incorrectly used NEW API version instead of OLD version from state + - Schema differences between API versions caused false positive diffs + + The fix ensures that during refresh, the provider reads resources using the + OLD API version from state, not the NEW API version from provider metadata. + +resources: + rg: + type: azure-native:resources:ResourceGroup + properties: + location: eastus + + cluster: + type: azure-native:containerservice:ManagedCluster + properties: + location: ${rg.location} + resourceGroupName: ${rg.name} + identity: + type: SystemAssigned + dnsPrefix: test-aks-4400 + agentPoolProfiles: + - name: agentpool + count: 1 + vmSize: Standard_DS2_v2 + mode: System + +outputs: + clusterId: ${cluster.id} + clusterName: ${cluster.name} + resourceGroupName: ${rg.name} diff --git a/provider/pkg/provider/testdata/recorded/TestProviderUpgrade/upgrade-aks-api-version/2.90.0/grpc.json b/provider/pkg/provider/testdata/recorded/TestProviderUpgrade/upgrade-aks-api-version/2.90.0/grpc.json new file mode 100644 index 000000000000..eeec6fcbeed3 --- /dev/null +++ b/provider/pkg/provider/testdata/recorded/TestProviderUpgrade/upgrade-aks-api-version/2.90.0/grpc.json @@ -0,0 +1,52 @@ +{"method":"/pulumirpc.LanguageRuntime/GetPluginInfo","request":{}} +{"method":"/pulumirpc.LanguageRuntime/GetPluginInfo","request":{},"response":{"version":"v1.25.0"}} +{"method":"/pulumirpc.LanguageRuntime/GetRequiredPackages","request":{"info":{"entryPoint":".","options":{},"programDirectory":"/private/var/folders/d4/bznc6qv135qc7ngyh8ld56lm0000gn/T/TestUpgradeAksApiVersion_2_90_01296652605/007/upgrade-aks-api-version","rootDirectory":"/private/var/folders/d4/bznc6qv135qc7ngyh8ld56lm0000gn/T/TestUpgradeAksApiVersion_2_90_01296652605/007/upgrade-aks-api-version"}}} +{"method":"/pulumirpc.LanguageRuntime/GetRequiredPackages","request":{"info":{"entryPoint":".","options":{},"programDirectory":"/private/var/folders/d4/bznc6qv135qc7ngyh8ld56lm0000gn/T/TestUpgradeAksApiVersion_2_90_01296652605/007/upgrade-aks-api-version","rootDirectory":"/private/var/folders/d4/bznc6qv135qc7ngyh8ld56lm0000gn/T/TestUpgradeAksApiVersion_2_90_01296652605/007/upgrade-aks-api-version"}},"response":{"packages":[{"kind":"resource","name":"azure-native"}]}} +{"method":"/pulumirpc.LanguageRuntime/Run","request":{"config":{"azure-native:location":"westus2"},"info":{"entryPoint":".","options":{},"programDirectory":"/private/var/folders/d4/bznc6qv135qc7ngyh8ld56lm0000gn/T/TestUpgradeAksApiVersion_2_90_01296652605/007/upgrade-aks-api-version","rootDirectory":"/private/var/folders/d4/bznc6qv135qc7ngyh8ld56lm0000gn/T/TestUpgradeAksApiVersion_2_90_01296652605/007/upgrade-aks-api-version"},"loaderTarget":"127.0.0.1:49515","monitorAddress":"127.0.0.1:49514","organization":"organization","parallel":48,"program":".","project":"upgrade-aks-api-version","pwd":"/private/var/folders/d4/bznc6qv135qc7ngyh8ld56lm0000gn/T/TestUpgradeAksApiVersion_2_90_01296652605/007/upgrade-aks-api-version","stack":"test"}} +{"method":"/pulumirpc.ResourceMonitor/SupportsFeature","request":{"id":"resourceReferences"}} +{"method":"/pulumirpc.ResourceMonitor/SupportsFeature","request":{"id":"resourceReferences"},"response":{"hasSupport":true}} +{"method":"/pulumirpc.ResourceMonitor/SupportsFeature","request":{"id":"outputValues"}} +{"method":"/pulumirpc.ResourceMonitor/SupportsFeature","request":{"id":"outputValues"},"response":{"hasSupport":true}} +{"method":"/pulumirpc.ResourceMonitor/SupportsFeature","request":{"id":"deletedWith"}} +{"method":"/pulumirpc.ResourceMonitor/SupportsFeature","request":{"id":"deletedWith"},"response":{"hasSupport":true}} +{"method":"/pulumirpc.ResourceMonitor/SupportsFeature","request":{"id":"aliasSpecs"}} +{"method":"/pulumirpc.ResourceMonitor/SupportsFeature","request":{"id":"aliasSpecs"},"response":{"hasSupport":true}} +{"method":"/pulumirpc.ResourceMonitor/SupportsFeature","request":{"id":"transforms"}} +{"method":"/pulumirpc.ResourceMonitor/SupportsFeature","request":{"id":"transforms"},"response":{"hasSupport":true}} +{"method":"/pulumirpc.ResourceMonitor/SupportsFeature","request":{"id":"invokeTransforms"}} +{"method":"/pulumirpc.ResourceMonitor/SupportsFeature","request":{"id":"invokeTransforms"},"response":{"hasSupport":true}} +{"method":"/pulumirpc.ResourceMonitor/SupportsFeature","request":{"id":"parameterization"}} +{"method":"/pulumirpc.ResourceMonitor/SupportsFeature","request":{"id":"parameterization"},"response":{"hasSupport":true}} +{"method":"/pulumirpc.ResourceMonitor/SupportsFeature","request":{"id":"resourceHooks"}} +{"method":"/pulumirpc.ResourceMonitor/SupportsFeature","request":{"id":"resourceHooks"},"response":{"hasSupport":true}} +{"method":"/pulumirpc.ResourceMonitor/RegisterResource","request":{"acceptResources":true,"acceptSecrets":true,"customTimeouts":{},"name":"upgrade-aks-api-version-test","object":{},"sourcePosition":{"line":317,"uri":"file:///home/runner/work/pulumi-yaml/pulumi-yaml/pkg/server/server.go"},"stackTrace":{"frames":[{"pc":{"line":317,"uri":"file:///home/runner/work/pulumi-yaml/pulumi-yaml/pkg/server/server.go"}},{"pc":{"line":557,"uri":"file:///home/runner/go/pkg/mod/github.com/pulumi/pulumi/sdk/v3@v3.206.0/proto/go/language_grpc.pb.go"}},{"pc":{"line":1405,"uri":"file:///home/runner/go/pkg/mod/google.golang.org/grpc@v1.72.1/server.go"}},{"pc":{"line":1815,"uri":"file:///home/runner/go/pkg/mod/google.golang.org/grpc@v1.72.1/server.go"}},{"pc":{"line":1035,"uri":"file:///home/runner/go/pkg/mod/google.golang.org/grpc@v1.72.1/server.go"}},{"pc":{"line":1223,"uri":"file:///opt/hostedtoolcache/go/1.24.9/x64/src/runtime/asm_arm64.s"}}]},"supportsResultReporting":true,"type":"pulumi:pulumi:Stack"}} +{"method":"/pulumirpc.ResourceMonitor/RegisterResource","request":{"acceptResources":true,"acceptSecrets":true,"customTimeouts":{},"name":"upgrade-aks-api-version-test","object":{},"sourcePosition":{"line":317,"uri":"file:///home/runner/work/pulumi-yaml/pulumi-yaml/pkg/server/server.go"},"stackTrace":{"frames":[{"pc":{"line":317,"uri":"file:///home/runner/work/pulumi-yaml/pulumi-yaml/pkg/server/server.go"}},{"pc":{"line":557,"uri":"file:///home/runner/go/pkg/mod/github.com/pulumi/pulumi/sdk/v3@v3.206.0/proto/go/language_grpc.pb.go"}},{"pc":{"line":1405,"uri":"file:///home/runner/go/pkg/mod/google.golang.org/grpc@v1.72.1/server.go"}},{"pc":{"line":1815,"uri":"file:///home/runner/go/pkg/mod/google.golang.org/grpc@v1.72.1/server.go"}},{"pc":{"line":1035,"uri":"file:///home/runner/go/pkg/mod/google.golang.org/grpc@v1.72.1/server.go"}},{"pc":{"line":1223,"uri":"file:///opt/hostedtoolcache/go/1.24.9/x64/src/runtime/asm_arm64.s"}}]},"supportsResultReporting":true,"type":"pulumi:pulumi:Stack"},"response":{"object":{},"urn":"urn:pulumi:test::upgrade-aks-api-version::pulumi:pulumi:Stack::upgrade-aks-api-version-test"}} +{"method":"/pulumirpc.ResourceMonitor/RegisterResource","request":{"acceptResources":true,"acceptSecrets":true,"aliases":[{"spec":{"noParent":false,"type":"azure-native:resources/v20151101:ResourceGroup"}},{"spec":{"noParent":false,"type":"azure-native:resources/v20160201:ResourceGroup"}},{"spec":{"noParent":false,"type":"azure-native:resources/v20160701:ResourceGroup"}},{"spec":{"noParent":false,"type":"azure-native:resources/v20160901:ResourceGroup"}},{"spec":{"noParent":false,"type":"azure-native:resources/v20170510:ResourceGroup"}},{"spec":{"noParent":false,"type":"azure-native:resources/v20180201:ResourceGroup"}},{"spec":{"noParent":false,"type":"azure-native:resources/v20180501:ResourceGroup"}},{"spec":{"noParent":false,"type":"azure-native:resources/v20190301:ResourceGroup"}},{"spec":{"noParent":false,"type":"azure-native:resources/v20190501:ResourceGroup"}},{"spec":{"noParent":false,"type":"azure-native:resources/v20190510:ResourceGroup"}},{"spec":{"noParent":false,"type":"azure-native:resources/v20190701:ResourceGroup"}},{"spec":{"noParent":false,"type":"azure-native:resources/v20190801:ResourceGroup"}},{"spec":{"noParent":false,"type":"azure-native:resources/v20191001:ResourceGroup"}},{"spec":{"noParent":false,"type":"azure-native:resources/v20200601:ResourceGroup"}},{"spec":{"noParent":false,"type":"azure-native:resources/v20200801:ResourceGroup"}},{"spec":{"noParent":false,"type":"azure-native:resources/v20201001:ResourceGroup"}},{"spec":{"noParent":false,"type":"azure-native:resources/v20210101:ResourceGroup"}},{"spec":{"noParent":false,"type":"azure-native:resources/v20210401:ResourceGroup"}},{"spec":{"noParent":false,"type":"azure-native:resources/v20220901:ResourceGroup"}},{"spec":{"noParent":false,"type":"azure-native:resources/v20230701:ResourceGroup"}},{"spec":{"noParent":false,"type":"azure-native:resources/v20240301:ResourceGroup"}},{"spec":{"noParent":false,"type":"azure-native:resources/v20240701:ResourceGroup"}},{"spec":{"noParent":false,"type":"azure-native:resources/v20241101:ResourceGroup"}}],"custom":true,"customTimeouts":{},"name":"rg","object":{"location":"eastus"},"parent":"urn:pulumi:test::upgrade-aks-api-version::pulumi:pulumi:Stack::upgrade-aks-api-version-test","propertyDependencies":{"location":{}},"sourcePosition":{"line":1391,"uri":"file:///home/runner/work/pulumi-yaml/pulumi-yaml/pkg/pulumiyaml/run.go"},"stackTrace":{"frames":[{"pc":{"line":1391,"uri":"file:///home/runner/work/pulumi-yaml/pulumi-yaml/pkg/pulumiyaml/run.go"}},{"pc":{"line":957,"uri":"file:///home/runner/work/pulumi-yaml/pulumi-yaml/pkg/pulumiyaml/run.go"}},{"pc":{"line":1171,"uri":"file:///home/runner/work/pulumi-yaml/pulumi-yaml/pkg/pulumiyaml/run.go"}},{"pc":{"line":1036,"uri":"file:///home/runner/work/pulumi-yaml/pulumi-yaml/pkg/pulumiyaml/run.go"}},{"pc":{"line":499,"uri":"file:///home/runner/work/pulumi-yaml/pulumi-yaml/pkg/pulumiyaml/run.go"}},{"pc":{"line":319,"uri":"file:///home/runner/work/pulumi-yaml/pulumi-yaml/pkg/server/server.go"}},{"pc":{"line":141,"uri":"file:///home/runner/go/pkg/mod/github.com/pulumi/pulumi/sdk/v3@v3.206.0/go/pulumi/run.go"}},{"pc":{"line":317,"uri":"file:///home/runner/work/pulumi-yaml/pulumi-yaml/pkg/server/server.go"}},{"pc":{"line":557,"uri":"file:///home/runner/go/pkg/mod/github.com/pulumi/pulumi/sdk/v3@v3.206.0/proto/go/language_grpc.pb.go"}},{"pc":{"line":1405,"uri":"file:///home/runner/go/pkg/mod/google.golang.org/grpc@v1.72.1/server.go"}},{"pc":{"line":1815,"uri":"file:///home/runner/go/pkg/mod/google.golang.org/grpc@v1.72.1/server.go"}},{"pc":{"line":1035,"uri":"file:///home/runner/go/pkg/mod/google.golang.org/grpc@v1.72.1/server.go"}},{"pc":{"line":1223,"uri":"file:///opt/hostedtoolcache/go/1.24.9/x64/src/runtime/asm_arm64.s"}}]},"supportsResultReporting":true,"type":"azure-native:resources:ResourceGroup"}} +{"method":"/pulumirpc.ResourceProvider/Handshake","request":{"configureWithUrn":true,"engineAddress":"127.0.0.1:49510","invokeWithPreview":true,"supportsRefreshBeforeUpdate":true,"supportsViews":true}} +{"method":"/pulumirpc.ResourceProvider/Handshake","request":{"configureWithUrn":true,"engineAddress":"127.0.0.1:49510","invokeWithPreview":true,"supportsRefreshBeforeUpdate":true,"supportsViews":true}} +{"method":"/pulumirpc.ResourceProvider/Attach","request":{"address":"127.0.0.1:49510"}} +{"method":"/pulumirpc.ResourceProvider/Attach","request":{"address":"127.0.0.1:49510"},"response":{}} +{"method":"/pulumirpc.ResourceProvider/GetPluginInfo","request":{}} +{"method":"/pulumirpc.ResourceProvider/GetPluginInfo","request":{},"response":{"version":"2.90.0"}} +{"method":"/pulumirpc.ResourceProvider/CheckConfig","request":{"name":"default","news":{"location":"westus2"},"olds":{},"type":"pulumi:providers:azure-native","urn":"urn:pulumi:test::upgrade-aks-api-version::pulumi:providers:azure-native::default"}} +{"method":"/pulumirpc.ResourceProvider/CheckConfig","request":{"name":"default","news":{"location":"westus2"},"olds":{},"type":"pulumi:providers:azure-native","urn":"urn:pulumi:test::upgrade-aks-api-version::pulumi:providers:azure-native::default"},"response":{"inputs":{"location":"westus2"}}} +{"method":"/pulumirpc.ResourceProvider/Configure","request":{"acceptResources":true,"acceptSecrets":true,"args":{"location":"westus2"},"id":"588e60bb-8096-4dca-a2a2-7150234b2aa5","name":"default","sendsOldInputs":true,"sendsOldInputsToDelete":true,"type":"pulumi:providers:azure-native","urn":"urn:pulumi:test::upgrade-aks-api-version::pulumi:providers:azure-native::default","variables":{"azure-native:config:location":"westus2"}}} +{"method":"/pulumirpc.ResourceProvider/Configure","request":{"acceptResources":true,"acceptSecrets":true,"args":{"location":"westus2"},"id":"588e60bb-8096-4dca-a2a2-7150234b2aa5","name":"default","sendsOldInputs":true,"sendsOldInputsToDelete":true,"type":"pulumi:providers:azure-native","urn":"urn:pulumi:test::upgrade-aks-api-version::pulumi:providers:azure-native::default","variables":{"azure-native:config:location":"westus2"}},"response":{"supportsAutonamingConfiguration":true,"supportsPreview":true}} +{"method":"/pulumirpc.ResourceProvider/Check","request":{"name":"rg","news":{"location":"eastus"},"olds":{},"randomSeed":"cyF3wVzoaKPn1cVgUcAbfQUBwLRsFuFFiskzGDIzJQI=","type":"azure-native:resources:ResourceGroup","urn":"urn:pulumi:test::upgrade-aks-api-version::azure-native:resources:ResourceGroup::rg"}} +{"method":"/pulumirpc.ResourceProvider/Check","request":{"name":"rg","news":{"location":"eastus"},"olds":{},"randomSeed":"cyF3wVzoaKPn1cVgUcAbfQUBwLRsFuFFiskzGDIzJQI=","type":"azure-native:resources:ResourceGroup","urn":"urn:pulumi:test::upgrade-aks-api-version::azure-native:resources:ResourceGroup::rg"},"response":{"inputs":{"__createBeforeDelete":true,"location":"eastus","resourceGroupName":"rga912bcdf"}}} +{"method":"/pulumirpc.ResourceProvider/Create","request":{"name":"rg","properties":{"__createBeforeDelete":true,"location":"eastus","resourceGroupName":"rga912bcdf"},"resourceStatusAddress":"127.0.0.1:49513","resourceStatusToken":"50ba6f6d-67fa-4c2e-8cbf-285991424cd5","type":"azure-native:resources:ResourceGroup","urn":"urn:pulumi:test::upgrade-aks-api-version::azure-native:resources:ResourceGroup::rg"}} +{"method":"/pulumirpc.ResourceProvider/Create","request":{"name":"rg","properties":{"__createBeforeDelete":true,"location":"eastus","resourceGroupName":"rga912bcdf"},"resourceStatusAddress":"127.0.0.1:49513","resourceStatusToken":"50ba6f6d-67fa-4c2e-8cbf-285991424cd5","type":"azure-native:resources:ResourceGroup","urn":"urn:pulumi:test::upgrade-aks-api-version::azure-native:resources:ResourceGroup::rg"},"response":{"id":"/subscriptions/0282681f-7a9e-424b-80b2-96babd57a8a1/resourceGroups/rga912bcdf","properties":{"__inputs":{"4dabf18193072939515e22adb298388d":"1b47061264138c4ac30d75fd1eb44270","value":{"__createBeforeDelete":true,"location":"REDACTED BY PROVIDERTEST","resourceGroupName":"REDACTED BY PROVIDERTEST"}},"azureApiVersion":"2022-09-01","id":"/subscriptions/0282681f-7a9e-424b-80b2-96babd57a8a1/resourceGroups/rga912bcdf","location":"eastus","name":"rga912bcdf","properties":{"provisioningState":"Succeeded"},"type":"Microsoft.Resources/resourceGroups"}}} +{"method":"/pulumirpc.ResourceMonitor/RegisterResource","request":{"acceptResources":true,"acceptSecrets":true,"aliases":[{"spec":{"noParent":false,"type":"azure-native:resources/v20151101:ResourceGroup"}},{"spec":{"noParent":false,"type":"azure-native:resources/v20160201:ResourceGroup"}},{"spec":{"noParent":false,"type":"azure-native:resources/v20160701:ResourceGroup"}},{"spec":{"noParent":false,"type":"azure-native:resources/v20160901:ResourceGroup"}},{"spec":{"noParent":false,"type":"azure-native:resources/v20170510:ResourceGroup"}},{"spec":{"noParent":false,"type":"azure-native:resources/v20180201:ResourceGroup"}},{"spec":{"noParent":false,"type":"azure-native:resources/v20180501:ResourceGroup"}},{"spec":{"noParent":false,"type":"azure-native:resources/v20190301:ResourceGroup"}},{"spec":{"noParent":false,"type":"azure-native:resources/v20190501:ResourceGroup"}},{"spec":{"noParent":false,"type":"azure-native:resources/v20190510:ResourceGroup"}},{"spec":{"noParent":false,"type":"azure-native:resources/v20190701:ResourceGroup"}},{"spec":{"noParent":false,"type":"azure-native:resources/v20190801:ResourceGroup"}},{"spec":{"noParent":false,"type":"azure-native:resources/v20191001:ResourceGroup"}},{"spec":{"noParent":false,"type":"azure-native:resources/v20200601:ResourceGroup"}},{"spec":{"noParent":false,"type":"azure-native:resources/v20200801:ResourceGroup"}},{"spec":{"noParent":false,"type":"azure-native:resources/v20201001:ResourceGroup"}},{"spec":{"noParent":false,"type":"azure-native:resources/v20210101:ResourceGroup"}},{"spec":{"noParent":false,"type":"azure-native:resources/v20210401:ResourceGroup"}},{"spec":{"noParent":false,"type":"azure-native:resources/v20220901:ResourceGroup"}},{"spec":{"noParent":false,"type":"azure-native:resources/v20230701:ResourceGroup"}},{"spec":{"noParent":false,"type":"azure-native:resources/v20240301:ResourceGroup"}},{"spec":{"noParent":false,"type":"azure-native:resources/v20240701:ResourceGroup"}},{"spec":{"noParent":false,"type":"azure-native:resources/v20241101:ResourceGroup"}}],"custom":true,"customTimeouts":{},"name":"rg","object":{"location":"eastus"},"parent":"urn:pulumi:test::upgrade-aks-api-version::pulumi:pulumi:Stack::upgrade-aks-api-version-test","propertyDependencies":{"location":{}},"sourcePosition":{"line":1391,"uri":"file:///home/runner/work/pulumi-yaml/pulumi-yaml/pkg/pulumiyaml/run.go"},"stackTrace":{"frames":[{"pc":{"line":1391,"uri":"file:///home/runner/work/pulumi-yaml/pulumi-yaml/pkg/pulumiyaml/run.go"}},{"pc":{"line":957,"uri":"file:///home/runner/work/pulumi-yaml/pulumi-yaml/pkg/pulumiyaml/run.go"}},{"pc":{"line":1171,"uri":"file:///home/runner/work/pulumi-yaml/pulumi-yaml/pkg/pulumiyaml/run.go"}},{"pc":{"line":1036,"uri":"file:///home/runner/work/pulumi-yaml/pulumi-yaml/pkg/pulumiyaml/run.go"}},{"pc":{"line":499,"uri":"file:///home/runner/work/pulumi-yaml/pulumi-yaml/pkg/pulumiyaml/run.go"}},{"pc":{"line":319,"uri":"file:///home/runner/work/pulumi-yaml/pulumi-yaml/pkg/server/server.go"}},{"pc":{"line":141,"uri":"file:///home/runner/go/pkg/mod/github.com/pulumi/pulumi/sdk/v3@v3.206.0/go/pulumi/run.go"}},{"pc":{"line":317,"uri":"file:///home/runner/work/pulumi-yaml/pulumi-yaml/pkg/server/server.go"}},{"pc":{"line":557,"uri":"file:///home/runner/go/pkg/mod/github.com/pulumi/pulumi/sdk/v3@v3.206.0/proto/go/language_grpc.pb.go"}},{"pc":{"line":1405,"uri":"file:///home/runner/go/pkg/mod/google.golang.org/grpc@v1.72.1/server.go"}},{"pc":{"line":1815,"uri":"file:///home/runner/go/pkg/mod/google.golang.org/grpc@v1.72.1/server.go"}},{"pc":{"line":1035,"uri":"file:///home/runner/go/pkg/mod/google.golang.org/grpc@v1.72.1/server.go"}},{"pc":{"line":1223,"uri":"file:///opt/hostedtoolcache/go/1.24.9/x64/src/runtime/asm_arm64.s"}}]},"supportsResultReporting":true,"type":"azure-native:resources:ResourceGroup"},"response":{"id":"/subscriptions/0282681f-7a9e-424b-80b2-96babd57a8a1/resourceGroups/rga912bcdf","object":{"__inputs":{"4dabf18193072939515e22adb298388d":"1b47061264138c4ac30d75fd1eb44270","value":{"__createBeforeDelete":true,"location":"REDACTED BY PROVIDERTEST","resourceGroupName":"REDACTED BY PROVIDERTEST"}},"azureApiVersion":"2022-09-01","id":"/subscriptions/0282681f-7a9e-424b-80b2-96babd57a8a1/resourceGroups/rga912bcdf","location":"eastus","name":"rga912bcdf","properties":{"provisioningState":"Succeeded"},"type":"Microsoft.Resources/resourceGroups"},"urn":"urn:pulumi:test::upgrade-aks-api-version::azure-native:resources:ResourceGroup::rg"}} +{"method":"/pulumirpc.ResourceMonitor/RegisterResource","request":{"acceptResources":true,"acceptSecrets":true,"aliases":[{"spec":{"noParent":false,"type":"azure-native:containerservice/v20170831:ManagedCluster"}},{"spec":{"noParent":false,"type":"azure-native:containerservice/v20180331:ManagedCluster"}},{"spec":{"noParent":false,"type":"azure-native:containerservice/v20180801preview:ManagedCluster"}},{"spec":{"noParent":false,"type":"azure-native:containerservice/v20190201:ManagedCluster"}},{"spec":{"noParent":false,"type":"azure-native:containerservice/v20190401:ManagedCluster"}},{"spec":{"noParent":false,"type":"azure-native:containerservice/v20190601:ManagedCluster"}},{"spec":{"noParent":false,"type":"azure-native:containerservice/v20190801:ManagedCluster"}},{"spec":{"noParent":false,"type":"azure-native:containerservice/v20191001:ManagedCluster"}},{"spec":{"noParent":false,"type":"azure-native:containerservice/v20191101:ManagedCluster"}},{"spec":{"noParent":false,"type":"azure-native:containerservice/v20200101:ManagedCluster"}},{"spec":{"noParent":false,"type":"azure-native:containerservice/v20200201:ManagedCluster"}},{"spec":{"noParent":false,"type":"azure-native:containerservice/v20200301:ManagedCluster"}},{"spec":{"noParent":false,"type":"azure-native:containerservice/v20200401:ManagedCluster"}},{"spec":{"noParent":false,"type":"azure-native:containerservice/v20200601:ManagedCluster"}},{"spec":{"noParent":false,"type":"azure-native:containerservice/v20200701:ManagedCluster"}},{"spec":{"noParent":false,"type":"azure-native:containerservice/v20200901:ManagedCluster"}},{"spec":{"noParent":false,"type":"azure-native:containerservice/v20201101:ManagedCluster"}},{"spec":{"noParent":false,"type":"azure-native:containerservice/v20201201:ManagedCluster"}},{"spec":{"noParent":false,"type":"azure-native:containerservice/v20210201:ManagedCluster"}},{"spec":{"noParent":false,"type":"azure-native:containerservice/v20210301:ManagedCluster"}},{"spec":{"noParent":false,"type":"azure-native:containerservice/v20210501:ManagedCluster"}},{"spec":{"noParent":false,"type":"azure-native:containerservice/v20210701:ManagedCluster"}},{"spec":{"noParent":false,"type":"azure-native:containerservice/v20210801:ManagedCluster"}},{"spec":{"noParent":false,"type":"azure-native:containerservice/v20210901:ManagedCluster"}},{"spec":{"noParent":false,"type":"azure-native:containerservice/v20211001:ManagedCluster"}},{"spec":{"noParent":false,"type":"azure-native:containerservice/v20211101preview:ManagedCluster"}},{"spec":{"noParent":false,"type":"azure-native:containerservice/v20220101:ManagedCluster"}},{"spec":{"noParent":false,"type":"azure-native:containerservice/v20220102preview:ManagedCluster"}},{"spec":{"noParent":false,"type":"azure-native:containerservice/v20220201:ManagedCluster"}},{"spec":{"noParent":false,"type":"azure-native:containerservice/v20220202preview:ManagedCluster"}},{"spec":{"noParent":false,"type":"azure-native:containerservice/v20220301:ManagedCluster"}},{"spec":{"noParent":false,"type":"azure-native:containerservice/v20220302preview:ManagedCluster"}},{"spec":{"noParent":false,"type":"azure-native:containerservice/v20220401:ManagedCluster"}},{"spec":{"noParent":false,"type":"azure-native:containerservice/v20220402preview:ManagedCluster"}},{"spec":{"noParent":false,"type":"azure-native:containerservice/v20220502preview:ManagedCluster"}},{"spec":{"noParent":false,"type":"azure-native:containerservice/v20220601:ManagedCluster"}},{"spec":{"noParent":false,"type":"azure-native:containerservice/v20220602preview:ManagedCluster"}},{"spec":{"noParent":false,"type":"azure-native:containerservice/v20220701:ManagedCluster"}},{"spec":{"noParent":false,"type":"azure-native:containerservice/v20220702preview:ManagedCluster"}},{"spec":{"noParent":false,"type":"azure-native:containerservice/v20220802preview:ManagedCluster"}},{"spec":{"noParent":false,"type":"azure-native:containerservice/v20220803preview:ManagedCluster"}},{"spec":{"noParent":false,"type":"azure-native:containerservice/v20220901:ManagedCluster"}},{"spec":{"noParent":false,"type":"azure-native:containerservice/v20220902preview:ManagedCluster"}},{"spec":{"noParent":false,"type":"azure-native:containerservice/v20221002preview:ManagedCluster"}},{"spec":{"noParent":false,"type":"azure-native:containerservice/v20221101:ManagedCluster"}},{"spec":{"noParent":false,"type":"azure-native:containerservice/v20221102preview:ManagedCluster"}},{"spec":{"noParent":false,"type":"azure-native:containerservice/v20230101:ManagedCluster"}},{"spec":{"noParent":false,"type":"azure-native:containerservice/v20230102preview:ManagedCluster"}},{"spec":{"noParent":false,"type":"azure-native:containerservice/v20230201:ManagedCluster"}},{"spec":{"noParent":false,"type":"azure-native:containerservice/v20230202preview:ManagedCluster"}},{"spec":{"noParent":false,"type":"azure-native:containerservice/v20230301:ManagedCluster"}},{"spec":{"noParent":false,"type":"azure-native:containerservice/v20230302preview:ManagedCluster"}},{"spec":{"noParent":false,"type":"azure-native:containerservice/v20230401:ManagedCluster"}},{"spec":{"noParent":false,"type":"azure-native:containerservice/v20230402preview:ManagedCluster"}},{"spec":{"noParent":false,"type":"azure-native:containerservice/v20230501:ManagedCluster"}},{"spec":{"noParent":false,"type":"azure-native:containerservice/v20230502preview:ManagedCluster"}},{"spec":{"noParent":false,"type":"azure-native:containerservice/v20230601:ManagedCluster"}},{"spec":{"noParent":false,"type":"azure-native:containerservice/v20230602preview:ManagedCluster"}},{"spec":{"noParent":false,"type":"azure-native:containerservice/v20230701:ManagedCluster"}},{"spec":{"noParent":false,"type":"azure-native:containerservice/v20230702preview:ManagedCluster"}},{"spec":{"noParent":false,"type":"azure-native:containerservice/v20230801:ManagedCluster"}},{"spec":{"noParent":false,"type":"azure-native:containerservice/v20230802preview:ManagedCluster"}},{"spec":{"noParent":false,"type":"azure-native:containerservice/v20230901:ManagedCluster"}},{"spec":{"noParent":false,"type":"azure-native:containerservice/v20230902preview:ManagedCluster"}},{"spec":{"noParent":false,"type":"azure-native:containerservice/v20231001:ManagedCluster"}},{"spec":{"noParent":false,"type":"azure-native:containerservice/v20231002preview:ManagedCluster"}},{"spec":{"noParent":false,"type":"azure-native:containerservice/v20231101:ManagedCluster"}},{"spec":{"noParent":false,"type":"azure-native:containerservice/v20231102preview:ManagedCluster"}},{"spec":{"noParent":false,"type":"azure-native:containerservice/v20240101:ManagedCluster"}},{"spec":{"noParent":false,"type":"azure-native:containerservice/v20240201:ManagedCluster"}},{"spec":{"noParent":false,"type":"azure-native:containerservice/v20240202preview:ManagedCluster"}},{"spec":{"noParent":false,"type":"azure-native:containerservice/v20240302preview:ManagedCluster"}},{"spec":{"noParent":false,"type":"azure-native:containerservice/v20240402preview:ManagedCluster"}},{"spec":{"noParent":false,"type":"azure-native:containerservice/v20240501:ManagedCluster"}},{"spec":{"noParent":false,"type":"azure-native:containerservice/v20240502preview:ManagedCluster"}},{"spec":{"noParent":false,"type":"azure-native:containerservice/v20240602preview:ManagedCluster"}},{"spec":{"noParent":false,"type":"azure-native:containerservice/v20240701:ManagedCluster"}},{"spec":{"noParent":false,"type":"azure-native:containerservice/v20240702preview:ManagedCluster"}},{"spec":{"noParent":false,"type":"azure-native:containerservice/v20240801:ManagedCluster"}},{"spec":{"noParent":false,"type":"azure-native:containerservice/v20240901:ManagedCluster"}},{"spec":{"noParent":false,"type":"azure-native:containerservice/v20240902preview:ManagedCluster"}},{"spec":{"noParent":false,"type":"azure-native:containerservice/v20241001:ManagedCluster"}},{"spec":{"noParent":false,"type":"azure-native:containerservice/v20241002preview:ManagedCluster"}},{"spec":{"noParent":false,"type":"azure-native:containerservice/v20250101:ManagedCluster"}},{"spec":{"noParent":false,"type":"azure-native:containerservice:ManagedCluster"}}],"custom":true,"customTimeouts":{},"dependencies":["urn:pulumi:test::upgrade-aks-api-version::azure-native:resources:ResourceGroup::rg"],"name":"cluster","object":{"agentPoolProfiles":[{"count":1,"mode":"System","name":"agentpool","vmSize":"Standard_DS2_v2"}],"dnsPrefix":"test-aks-4400","identity":{"type":"SystemAssigned"},"location":"eastus","resourceGroupName":"rga912bcdf"},"parent":"urn:pulumi:test::upgrade-aks-api-version::pulumi:pulumi:Stack::upgrade-aks-api-version-test","propertyDependencies":{"agentPoolProfiles":{},"dnsPrefix":{},"identity":{},"location":{"urns":["urn:pulumi:test::upgrade-aks-api-version::azure-native:resources:ResourceGroup::rg"]},"resourceGroupName":{"urns":["urn:pulumi:test::upgrade-aks-api-version::azure-native:resources:ResourceGroup::rg"]}},"sourcePosition":{"line":1391,"uri":"file:///home/runner/work/pulumi-yaml/pulumi-yaml/pkg/pulumiyaml/run.go"},"stackTrace":{"frames":[{"pc":{"line":1391,"uri":"file:///home/runner/work/pulumi-yaml/pulumi-yaml/pkg/pulumiyaml/run.go"}},{"pc":{"line":957,"uri":"file:///home/runner/work/pulumi-yaml/pulumi-yaml/pkg/pulumiyaml/run.go"}},{"pc":{"line":1171,"uri":"file:///home/runner/work/pulumi-yaml/pulumi-yaml/pkg/pulumiyaml/run.go"}},{"pc":{"line":1036,"uri":"file:///home/runner/work/pulumi-yaml/pulumi-yaml/pkg/pulumiyaml/run.go"}},{"pc":{"line":499,"uri":"file:///home/runner/work/pulumi-yaml/pulumi-yaml/pkg/pulumiyaml/run.go"}},{"pc":{"line":319,"uri":"file:///home/runner/work/pulumi-yaml/pulumi-yaml/pkg/server/server.go"}},{"pc":{"line":141,"uri":"file:///home/runner/go/pkg/mod/github.com/pulumi/pulumi/sdk/v3@v3.206.0/go/pulumi/run.go"}},{"pc":{"line":317,"uri":"file:///home/runner/work/pulumi-yaml/pulumi-yaml/pkg/server/server.go"}},{"pc":{"line":557,"uri":"file:///home/runner/go/pkg/mod/github.com/pulumi/pulumi/sdk/v3@v3.206.0/proto/go/language_grpc.pb.go"}},{"pc":{"line":1405,"uri":"file:///home/runner/go/pkg/mod/google.golang.org/grpc@v1.72.1/server.go"}},{"pc":{"line":1815,"uri":"file:///home/runner/go/pkg/mod/google.golang.org/grpc@v1.72.1/server.go"}},{"pc":{"line":1035,"uri":"file:///home/runner/go/pkg/mod/google.golang.org/grpc@v1.72.1/server.go"}},{"pc":{"line":1223,"uri":"file:///opt/hostedtoolcache/go/1.24.9/x64/src/runtime/asm_arm64.s"}}]},"supportsResultReporting":true,"type":"azure-native:containerservice/v20240102preview:ManagedCluster"}} +{"method":"/pulumirpc.ResourceProvider/Check","request":{"name":"cluster","news":{"agentPoolProfiles":[{"count":1,"mode":"System","name":"agentpool","vmSize":"Standard_DS2_v2"}],"dnsPrefix":"test-aks-4400","identity":{"type":"SystemAssigned"},"location":"eastus","resourceGroupName":"rga912bcdf"},"olds":{},"randomSeed":"Xo5KSbbwb3cSiXoMjehTFVlSFwG7/3LNAj1IPCPHo9c=","type":"azure-native:containerservice/v20240102preview:ManagedCluster","urn":"urn:pulumi:test::upgrade-aks-api-version::azure-native:containerservice/v20240102preview:ManagedCluster::cluster"}} +{"method":"/pulumirpc.ResourceProvider/Check","request":{"name":"cluster","news":{"agentPoolProfiles":[{"count":1,"mode":"System","name":"agentpool","vmSize":"Standard_DS2_v2"}],"dnsPrefix":"test-aks-4400","identity":{"type":"SystemAssigned"},"location":"eastus","resourceGroupName":"rga912bcdf"},"olds":{},"randomSeed":"Xo5KSbbwb3cSiXoMjehTFVlSFwG7/3LNAj1IPCPHo9c=","type":"azure-native:containerservice/v20240102preview:ManagedCluster","urn":"urn:pulumi:test::upgrade-aks-api-version::azure-native:containerservice/v20240102preview:ManagedCluster::cluster"},"response":{"inputs":{"__createBeforeDelete":true,"agentPoolProfiles":[{"count":1,"mode":"System","name":"agentpool","vmSize":"Standard_DS2_v2"}],"dnsPrefix":"test-aks-4400","identity":{"type":"SystemAssigned"},"location":"eastus","resourceGroupName":"rga912bcdf","resourceName":"cluster9a479123"}}} +{"method":"/pulumirpc.ResourceProvider/Create","request":{"name":"cluster","properties":{"__createBeforeDelete":true,"agentPoolProfiles":[{"count":1,"mode":"System","name":"agentpool","vmSize":"Standard_DS2_v2"}],"dnsPrefix":"test-aks-4400","identity":{"type":"SystemAssigned"},"location":"eastus","resourceGroupName":"rga912bcdf","resourceName":"cluster9a479123"},"resourceStatusAddress":"127.0.0.1:49513","resourceStatusToken":"d11dc10c-3dee-4188-b6fc-9cb51dbca614","type":"azure-native:containerservice/v20240102preview:ManagedCluster","urn":"urn:pulumi:test::upgrade-aks-api-version::azure-native:containerservice/v20240102preview:ManagedCluster::cluster"}} +{"method":"/pulumirpc.ResourceProvider/Create","request":{"name":"cluster","properties":{"__createBeforeDelete":true,"agentPoolProfiles":[{"count":1,"mode":"System","name":"agentpool","vmSize":"Standard_DS2_v2"}],"dnsPrefix":"test-aks-4400","identity":{"type":"SystemAssigned"},"location":"eastus","resourceGroupName":"rga912bcdf","resourceName":"cluster9a479123"},"resourceStatusAddress":"127.0.0.1:49513","resourceStatusToken":"d11dc10c-3dee-4188-b6fc-9cb51dbca614","type":"azure-native:containerservice/v20240102preview:ManagedCluster","urn":"urn:pulumi:test::upgrade-aks-api-version::azure-native:containerservice/v20240102preview:ManagedCluster::cluster"},"response":{"id":"/subscriptions/0282681f-7a9e-424b-80b2-96babd57a8a1/resourcegroups/rga912bcdf/providers/Microsoft.ContainerService/managedClusters/cluster9a479123","properties":{"__inputs":{"4dabf18193072939515e22adb298388d":"1b47061264138c4ac30d75fd1eb44270","value":{"__createBeforeDelete":true,"agentPoolProfiles":[{"count":1,"mode":"REDACTED BY PROVIDERTEST","name":"REDACTED BY PROVIDERTEST","vmSize":"REDACTED BY PROVIDERTEST"}],"dnsPrefix":"REDACTED BY PROVIDERTEST","identity":{"type":"REDACTED BY PROVIDERTEST"},"location":"REDACTED BY PROVIDERTEST","resourceGroupName":"REDACTED BY PROVIDERTEST","resourceName":"REDACTED BY PROVIDERTEST"}},"agentPoolProfiles":[{"count":1,"currentOrchestratorVersion":"1.32.9","enableFIPS":false,"enableNodePublicIP":false,"kubeletDiskType":"OS","maxPods":250,"mode":"System","name":"agentpool","nodeImageVersion":"AKSUbuntu-2204gen2containerd-202511.07.0","orchestratorVersion":"1.32","osDiskSizeGB":128,"osDiskType":"Managed","osSKU":"Ubuntu","osType":"Linux","powerState":{"code":"Running"},"provisioningState":"Succeeded","scaleDownMode":"Delete","securityProfile":{"enableSecureBoot":false,"enableVTPM":false,"sshAccess":"LocalUser"},"type":"VirtualMachineScaleSets","upgradeSettings":{"maxSurge":"10%"},"vmSize":"Standard_DS2_v2"}],"autoUpgradeProfile":{"nodeOSUpgradeChannel":"NodeImage"},"azureApiVersion":"2024-01-02-preview","azurePortalFQDN":"test-aks-4400-m5rz0g46.portal.hcp.eastus.azmk8s.io","bootstrapProfile":{"artifactSource":"Direct"},"currentKubernetesVersion":"1.32.9","dnsPrefix":"test-aks-4400","enableRBAC":true,"fqdn":"test-aks-4400-m5rz0g46.hcp.eastus.azmk8s.io","id":"/subscriptions/0282681f-7a9e-424b-80b2-96babd57a8a1/resourcegroups/rga912bcdf/providers/Microsoft.ContainerService/managedClusters/cluster9a479123","identity":{"principalId":"747656b7-3b21-464b-a383-d0479cafeb03","tenantId":"706143bc-e1d4-4593-aee2-c9dc60ab9be7","type":"SystemAssigned"},"identityProfile":{"kubeletidentity":{"clientId":"2480209c-d5dc-4173-9ad3-201bdc88581c","objectId":"64d323ce-aef8-4d31-bf4c-7260af004d61","resourceId":"/subscriptions/0282681f-7a9e-424b-80b2-96babd57a8a1/resourcegroups/MC_rga912bcdf_cluster9a479123_eastus/providers/Microsoft.ManagedIdentity/userAssignedIdentities/cluster9a479123-agentpool"}},"kubernetesVersion":"1.32","location":"eastus","maxAgentPools":100,"metricsProfile":{"costAnalysis":{"enabled":false}},"name":"cluster9a479123","networkProfile":{"dnsServiceIP":"10.0.0.10","ipFamilies":["IPv4"],"loadBalancerProfile":{"backendPoolType":"nodeIPConfiguration","effectiveOutboundIPs":[{"id":"/subscriptions/0282681f-7a9e-424b-80b2-96babd57a8a1/resourceGroups/MC_rga912bcdf_cluster9a479123_eastus/providers/Microsoft.Network/publicIPAddresses/085f1ba8-7b7e-4438-a68f-59f5e6e081fc"}],"managedOutboundIPs":{"count":1}},"loadBalancerSku":"standard","networkDataplane":"azure","networkPlugin":"azure","networkPluginMode":"overlay","networkPolicy":"none","outboundType":"loadBalancer","podCidr":"10.244.0.0/16","podCidrs":["10.244.0.0/16"],"serviceCidr":"10.0.0.0/16","serviceCidrs":["10.0.0.0/16"]},"nodeProvisioningProfile":{"mode":"Manual"},"nodeResourceGroup":"MC_rga912bcdf_cluster9a479123_eastus","oidcIssuerProfile":{"enabled":false},"powerState":{"code":"Running"},"provisioningState":"Succeeded","resourceUID":"6920a6a3bbb7e2000128a92f","securityProfile":{},"servicePrincipalProfile":{"clientId":"msi"},"sku":{"name":"Base","tier":"Free"},"storageProfile":{"diskCSIDriver":{"enabled":true,"version":"v1"},"fileCSIDriver":{"enabled":true},"snapshotController":{"enabled":true}},"supportPlan":"KubernetesOfficial","type":"Microsoft.ContainerService/ManagedClusters","workloadAutoScalerProfile":{}}}} +{"method":"/pulumirpc.ResourceMonitor/RegisterResource","request":{"acceptResources":true,"acceptSecrets":true,"aliases":[{"spec":{"noParent":false,"type":"azure-native:containerservice/v20170831:ManagedCluster"}},{"spec":{"noParent":false,"type":"azure-native:containerservice/v20180331:ManagedCluster"}},{"spec":{"noParent":false,"type":"azure-native:containerservice/v20180801preview:ManagedCluster"}},{"spec":{"noParent":false,"type":"azure-native:containerservice/v20190201:ManagedCluster"}},{"spec":{"noParent":false,"type":"azure-native:containerservice/v20190401:ManagedCluster"}},{"spec":{"noParent":false,"type":"azure-native:containerservice/v20190601:ManagedCluster"}},{"spec":{"noParent":false,"type":"azure-native:containerservice/v20190801:ManagedCluster"}},{"spec":{"noParent":false,"type":"azure-native:containerservice/v20191001:ManagedCluster"}},{"spec":{"noParent":false,"type":"azure-native:containerservice/v20191101:ManagedCluster"}},{"spec":{"noParent":false,"type":"azure-native:containerservice/v20200101:ManagedCluster"}},{"spec":{"noParent":false,"type":"azure-native:containerservice/v20200201:ManagedCluster"}},{"spec":{"noParent":false,"type":"azure-native:containerservice/v20200301:ManagedCluster"}},{"spec":{"noParent":false,"type":"azure-native:containerservice/v20200401:ManagedCluster"}},{"spec":{"noParent":false,"type":"azure-native:containerservice/v20200601:ManagedCluster"}},{"spec":{"noParent":false,"type":"azure-native:containerservice/v20200701:ManagedCluster"}},{"spec":{"noParent":false,"type":"azure-native:containerservice/v20200901:ManagedCluster"}},{"spec":{"noParent":false,"type":"azure-native:containerservice/v20201101:ManagedCluster"}},{"spec":{"noParent":false,"type":"azure-native:containerservice/v20201201:ManagedCluster"}},{"spec":{"noParent":false,"type":"azure-native:containerservice/v20210201:ManagedCluster"}},{"spec":{"noParent":false,"type":"azure-native:containerservice/v20210301:ManagedCluster"}},{"spec":{"noParent":false,"type":"azure-native:containerservice/v20210501:ManagedCluster"}},{"spec":{"noParent":false,"type":"azure-native:containerservice/v20210701:ManagedCluster"}},{"spec":{"noParent":false,"type":"azure-native:containerservice/v20210801:ManagedCluster"}},{"spec":{"noParent":false,"type":"azure-native:containerservice/v20210901:ManagedCluster"}},{"spec":{"noParent":false,"type":"azure-native:containerservice/v20211001:ManagedCluster"}},{"spec":{"noParent":false,"type":"azure-native:containerservice/v20211101preview:ManagedCluster"}},{"spec":{"noParent":false,"type":"azure-native:containerservice/v20220101:ManagedCluster"}},{"spec":{"noParent":false,"type":"azure-native:containerservice/v20220102preview:ManagedCluster"}},{"spec":{"noParent":false,"type":"azure-native:containerservice/v20220201:ManagedCluster"}},{"spec":{"noParent":false,"type":"azure-native:containerservice/v20220202preview:ManagedCluster"}},{"spec":{"noParent":false,"type":"azure-native:containerservice/v20220301:ManagedCluster"}},{"spec":{"noParent":false,"type":"azure-native:containerservice/v20220302preview:ManagedCluster"}},{"spec":{"noParent":false,"type":"azure-native:containerservice/v20220401:ManagedCluster"}},{"spec":{"noParent":false,"type":"azure-native:containerservice/v20220402preview:ManagedCluster"}},{"spec":{"noParent":false,"type":"azure-native:containerservice/v20220502preview:ManagedCluster"}},{"spec":{"noParent":false,"type":"azure-native:containerservice/v20220601:ManagedCluster"}},{"spec":{"noParent":false,"type":"azure-native:containerservice/v20220602preview:ManagedCluster"}},{"spec":{"noParent":false,"type":"azure-native:containerservice/v20220701:ManagedCluster"}},{"spec":{"noParent":false,"type":"azure-native:containerservice/v20220702preview:ManagedCluster"}},{"spec":{"noParent":false,"type":"azure-native:containerservice/v20220802preview:ManagedCluster"}},{"spec":{"noParent":false,"type":"azure-native:containerservice/v20220803preview:ManagedCluster"}},{"spec":{"noParent":false,"type":"azure-native:containerservice/v20220901:ManagedCluster"}},{"spec":{"noParent":false,"type":"azure-native:containerservice/v20220902preview:ManagedCluster"}},{"spec":{"noParent":false,"type":"azure-native:containerservice/v20221002preview:ManagedCluster"}},{"spec":{"noParent":false,"type":"azure-native:containerservice/v20221101:ManagedCluster"}},{"spec":{"noParent":false,"type":"azure-native:containerservice/v20221102preview:ManagedCluster"}},{"spec":{"noParent":false,"type":"azure-native:containerservice/v20230101:ManagedCluster"}},{"spec":{"noParent":false,"type":"azure-native:containerservice/v20230102preview:ManagedCluster"}},{"spec":{"noParent":false,"type":"azure-native:containerservice/v20230201:ManagedCluster"}},{"spec":{"noParent":false,"type":"azure-native:containerservice/v20230202preview:ManagedCluster"}},{"spec":{"noParent":false,"type":"azure-native:containerservice/v20230301:ManagedCluster"}},{"spec":{"noParent":false,"type":"azure-native:containerservice/v20230302preview:ManagedCluster"}},{"spec":{"noParent":false,"type":"azure-native:containerservice/v20230401:ManagedCluster"}},{"spec":{"noParent":false,"type":"azure-native:containerservice/v20230402preview:ManagedCluster"}},{"spec":{"noParent":false,"type":"azure-native:containerservice/v20230501:ManagedCluster"}},{"spec":{"noParent":false,"type":"azure-native:containerservice/v20230502preview:ManagedCluster"}},{"spec":{"noParent":false,"type":"azure-native:containerservice/v20230601:ManagedCluster"}},{"spec":{"noParent":false,"type":"azure-native:containerservice/v20230602preview:ManagedCluster"}},{"spec":{"noParent":false,"type":"azure-native:containerservice/v20230701:ManagedCluster"}},{"spec":{"noParent":false,"type":"azure-native:containerservice/v20230702preview:ManagedCluster"}},{"spec":{"noParent":false,"type":"azure-native:containerservice/v20230801:ManagedCluster"}},{"spec":{"noParent":false,"type":"azure-native:containerservice/v20230802preview:ManagedCluster"}},{"spec":{"noParent":false,"type":"azure-native:containerservice/v20230901:ManagedCluster"}},{"spec":{"noParent":false,"type":"azure-native:containerservice/v20230902preview:ManagedCluster"}},{"spec":{"noParent":false,"type":"azure-native:containerservice/v20231001:ManagedCluster"}},{"spec":{"noParent":false,"type":"azure-native:containerservice/v20231002preview:ManagedCluster"}},{"spec":{"noParent":false,"type":"azure-native:containerservice/v20231101:ManagedCluster"}},{"spec":{"noParent":false,"type":"azure-native:containerservice/v20231102preview:ManagedCluster"}},{"spec":{"noParent":false,"type":"azure-native:containerservice/v20240101:ManagedCluster"}},{"spec":{"noParent":false,"type":"azure-native:containerservice/v20240201:ManagedCluster"}},{"spec":{"noParent":false,"type":"azure-native:containerservice/v20240202preview:ManagedCluster"}},{"spec":{"noParent":false,"type":"azure-native:containerservice/v20240302preview:ManagedCluster"}},{"spec":{"noParent":false,"type":"azure-native:containerservice/v20240402preview:ManagedCluster"}},{"spec":{"noParent":false,"type":"azure-native:containerservice/v20240501:ManagedCluster"}},{"spec":{"noParent":false,"type":"azure-native:containerservice/v20240502preview:ManagedCluster"}},{"spec":{"noParent":false,"type":"azure-native:containerservice/v20240602preview:ManagedCluster"}},{"spec":{"noParent":false,"type":"azure-native:containerservice/v20240701:ManagedCluster"}},{"spec":{"noParent":false,"type":"azure-native:containerservice/v20240702preview:ManagedCluster"}},{"spec":{"noParent":false,"type":"azure-native:containerservice/v20240801:ManagedCluster"}},{"spec":{"noParent":false,"type":"azure-native:containerservice/v20240901:ManagedCluster"}},{"spec":{"noParent":false,"type":"azure-native:containerservice/v20240902preview:ManagedCluster"}},{"spec":{"noParent":false,"type":"azure-native:containerservice/v20241001:ManagedCluster"}},{"spec":{"noParent":false,"type":"azure-native:containerservice/v20241002preview:ManagedCluster"}},{"spec":{"noParent":false,"type":"azure-native:containerservice/v20250101:ManagedCluster"}},{"spec":{"noParent":false,"type":"azure-native:containerservice:ManagedCluster"}}],"custom":true,"customTimeouts":{},"dependencies":["urn:pulumi:test::upgrade-aks-api-version::azure-native:resources:ResourceGroup::rg"],"name":"cluster","object":{"agentPoolProfiles":[{"count":1,"mode":"System","name":"agentpool","vmSize":"Standard_DS2_v2"}],"dnsPrefix":"test-aks-4400","identity":{"type":"SystemAssigned"},"location":"eastus","resourceGroupName":"rga912bcdf"},"parent":"urn:pulumi:test::upgrade-aks-api-version::pulumi:pulumi:Stack::upgrade-aks-api-version-test","propertyDependencies":{"agentPoolProfiles":{},"dnsPrefix":{},"identity":{},"location":{"urns":["urn:pulumi:test::upgrade-aks-api-version::azure-native:resources:ResourceGroup::rg"]},"resourceGroupName":{"urns":["urn:pulumi:test::upgrade-aks-api-version::azure-native:resources:ResourceGroup::rg"]}},"sourcePosition":{"line":1391,"uri":"file:///home/runner/work/pulumi-yaml/pulumi-yaml/pkg/pulumiyaml/run.go"},"stackTrace":{"frames":[{"pc":{"line":1391,"uri":"file:///home/runner/work/pulumi-yaml/pulumi-yaml/pkg/pulumiyaml/run.go"}},{"pc":{"line":957,"uri":"file:///home/runner/work/pulumi-yaml/pulumi-yaml/pkg/pulumiyaml/run.go"}},{"pc":{"line":1171,"uri":"file:///home/runner/work/pulumi-yaml/pulumi-yaml/pkg/pulumiyaml/run.go"}},{"pc":{"line":1036,"uri":"file:///home/runner/work/pulumi-yaml/pulumi-yaml/pkg/pulumiyaml/run.go"}},{"pc":{"line":499,"uri":"file:///home/runner/work/pulumi-yaml/pulumi-yaml/pkg/pulumiyaml/run.go"}},{"pc":{"line":319,"uri":"file:///home/runner/work/pulumi-yaml/pulumi-yaml/pkg/server/server.go"}},{"pc":{"line":141,"uri":"file:///home/runner/go/pkg/mod/github.com/pulumi/pulumi/sdk/v3@v3.206.0/go/pulumi/run.go"}},{"pc":{"line":317,"uri":"file:///home/runner/work/pulumi-yaml/pulumi-yaml/pkg/server/server.go"}},{"pc":{"line":557,"uri":"file:///home/runner/go/pkg/mod/github.com/pulumi/pulumi/sdk/v3@v3.206.0/proto/go/language_grpc.pb.go"}},{"pc":{"line":1405,"uri":"file:///home/runner/go/pkg/mod/google.golang.org/grpc@v1.72.1/server.go"}},{"pc":{"line":1815,"uri":"file:///home/runner/go/pkg/mod/google.golang.org/grpc@v1.72.1/server.go"}},{"pc":{"line":1035,"uri":"file:///home/runner/go/pkg/mod/google.golang.org/grpc@v1.72.1/server.go"}},{"pc":{"line":1223,"uri":"file:///opt/hostedtoolcache/go/1.24.9/x64/src/runtime/asm_arm64.s"}}]},"supportsResultReporting":true,"type":"azure-native:containerservice/v20240102preview:ManagedCluster"},"response":{"id":"/subscriptions/0282681f-7a9e-424b-80b2-96babd57a8a1/resourcegroups/rga912bcdf/providers/Microsoft.ContainerService/managedClusters/cluster9a479123","object":{"__inputs":{"4dabf18193072939515e22adb298388d":"1b47061264138c4ac30d75fd1eb44270","value":{"__createBeforeDelete":true,"agentPoolProfiles":[{"count":1,"mode":"REDACTED BY PROVIDERTEST","name":"REDACTED BY PROVIDERTEST","vmSize":"REDACTED BY PROVIDERTEST"}],"dnsPrefix":"REDACTED BY PROVIDERTEST","identity":{"type":"REDACTED BY PROVIDERTEST"},"location":"REDACTED BY PROVIDERTEST","resourceGroupName":"REDACTED BY PROVIDERTEST","resourceName":"REDACTED BY PROVIDERTEST"}},"agentPoolProfiles":[{"count":1,"currentOrchestratorVersion":"1.32.9","enableFIPS":false,"enableNodePublicIP":false,"kubeletDiskType":"OS","maxPods":250,"mode":"System","name":"agentpool","nodeImageVersion":"AKSUbuntu-2204gen2containerd-202511.07.0","orchestratorVersion":"1.32","osDiskSizeGB":128,"osDiskType":"Managed","osSKU":"Ubuntu","osType":"Linux","powerState":{"code":"Running"},"provisioningState":"Succeeded","scaleDownMode":"Delete","securityProfile":{"enableSecureBoot":false,"enableVTPM":false,"sshAccess":"LocalUser"},"type":"VirtualMachineScaleSets","upgradeSettings":{"maxSurge":"10%"},"vmSize":"Standard_DS2_v2"}],"autoUpgradeProfile":{"nodeOSUpgradeChannel":"NodeImage"},"azureApiVersion":"2024-01-02-preview","azurePortalFQDN":"test-aks-4400-m5rz0g46.portal.hcp.eastus.azmk8s.io","bootstrapProfile":{"artifactSource":"Direct"},"currentKubernetesVersion":"1.32.9","dnsPrefix":"test-aks-4400","enableRBAC":true,"fqdn":"test-aks-4400-m5rz0g46.hcp.eastus.azmk8s.io","id":"/subscriptions/0282681f-7a9e-424b-80b2-96babd57a8a1/resourcegroups/rga912bcdf/providers/Microsoft.ContainerService/managedClusters/cluster9a479123","identity":{"principalId":"747656b7-3b21-464b-a383-d0479cafeb03","tenantId":"706143bc-e1d4-4593-aee2-c9dc60ab9be7","type":"SystemAssigned"},"identityProfile":{"kubeletidentity":{"clientId":"2480209c-d5dc-4173-9ad3-201bdc88581c","objectId":"64d323ce-aef8-4d31-bf4c-7260af004d61","resourceId":"/subscriptions/0282681f-7a9e-424b-80b2-96babd57a8a1/resourcegroups/MC_rga912bcdf_cluster9a479123_eastus/providers/Microsoft.ManagedIdentity/userAssignedIdentities/cluster9a479123-agentpool"}},"kubernetesVersion":"1.32","location":"eastus","maxAgentPools":100,"metricsProfile":{"costAnalysis":{"enabled":false}},"name":"cluster9a479123","networkProfile":{"dnsServiceIP":"10.0.0.10","ipFamilies":["IPv4"],"loadBalancerProfile":{"backendPoolType":"nodeIPConfiguration","effectiveOutboundIPs":[{"id":"/subscriptions/0282681f-7a9e-424b-80b2-96babd57a8a1/resourceGroups/MC_rga912bcdf_cluster9a479123_eastus/providers/Microsoft.Network/publicIPAddresses/085f1ba8-7b7e-4438-a68f-59f5e6e081fc"}],"managedOutboundIPs":{"count":1}},"loadBalancerSku":"standard","networkDataplane":"azure","networkPlugin":"azure","networkPluginMode":"overlay","networkPolicy":"none","outboundType":"loadBalancer","podCidr":"10.244.0.0/16","podCidrs":["10.244.0.0/16"],"serviceCidr":"10.0.0.0/16","serviceCidrs":["10.0.0.0/16"]},"nodeProvisioningProfile":{"mode":"Manual"},"nodeResourceGroup":"MC_rga912bcdf_cluster9a479123_eastus","oidcIssuerProfile":{"enabled":false},"powerState":{"code":"Running"},"provisioningState":"Succeeded","resourceUID":"6920a6a3bbb7e2000128a92f","securityProfile":{},"servicePrincipalProfile":{"clientId":"msi"},"sku":{"name":"Base","tier":"Free"},"storageProfile":{"diskCSIDriver":{"enabled":true,"version":"v1"},"fileCSIDriver":{"enabled":true},"snapshotController":{"enabled":true}},"supportPlan":"KubernetesOfficial","type":"Microsoft.ContainerService/ManagedClusters","workloadAutoScalerProfile":{}},"urn":"urn:pulumi:test::upgrade-aks-api-version::azure-native:containerservice/v20240102preview:ManagedCluster::cluster"}} +{"method":"/pulumirpc.ResourceMonitor/RegisterResourceOutputs","request":{"outputs":{"clusterId":"/subscriptions/0282681f-7a9e-424b-80b2-96babd57a8a1/resourcegroups/rga912bcdf/providers/Microsoft.ContainerService/managedClusters/cluster9a479123","clusterName":"cluster9a479123","resourceGroupName":"rga912bcdf"},"urn":"urn:pulumi:test::upgrade-aks-api-version::pulumi:pulumi:Stack::upgrade-aks-api-version-test"}} +{"method":"/pulumirpc.ResourceMonitor/RegisterResourceOutputs","request":{"outputs":{"clusterId":"/subscriptions/0282681f-7a9e-424b-80b2-96babd57a8a1/resourcegroups/rga912bcdf/providers/Microsoft.ContainerService/managedClusters/cluster9a479123","clusterName":"cluster9a479123","resourceGroupName":"rga912bcdf"},"urn":"urn:pulumi:test::upgrade-aks-api-version::pulumi:pulumi:Stack::upgrade-aks-api-version-test"},"response":{}} +{"method":"/pulumirpc.LanguageRuntime/Run","request":{"config":{"azure-native:location":"westus2"},"info":{"entryPoint":".","options":{},"programDirectory":"/private/var/folders/d4/bznc6qv135qc7ngyh8ld56lm0000gn/T/TestUpgradeAksApiVersion_2_90_01296652605/007/upgrade-aks-api-version","rootDirectory":"/private/var/folders/d4/bznc6qv135qc7ngyh8ld56lm0000gn/T/TestUpgradeAksApiVersion_2_90_01296652605/007/upgrade-aks-api-version"},"loaderTarget":"127.0.0.1:49515","monitorAddress":"127.0.0.1:49514","organization":"organization","parallel":48,"program":".","project":"upgrade-aks-api-version","pwd":"/private/var/folders/d4/bznc6qv135qc7ngyh8ld56lm0000gn/T/TestUpgradeAksApiVersion_2_90_01296652605/007/upgrade-aks-api-version","stack":"test"},"response":{}} +{"method":"/grpc.health.v1.Health/Check","request":{}} +{"method":"/grpc.health.v1.Health/Check","request":{},"response":{"status":"SERVING"}} +{"method":"/grpc.health.v1.Health/Check","request":{}} +{"method":"/grpc.health.v1.Health/Check","request":{},"response":{"status":"SERVING"}} \ No newline at end of file diff --git a/provider/pkg/provider/testdata/recorded/TestProviderUpgrade/upgrade-aks-api-version/2.90.0/stack.json b/provider/pkg/provider/testdata/recorded/TestProviderUpgrade/upgrade-aks-api-version/2.90.0/stack.json new file mode 100644 index 000000000000..188e885f80df --- /dev/null +++ b/provider/pkg/provider/testdata/recorded/TestProviderUpgrade/upgrade-aks-api-version/2.90.0/stack.json @@ -0,0 +1,363 @@ +{ + "version": 3, + "deployment": { + "manifest": { + "time": "2025-11-21T09:54:44.508077-08:00", + "magic": "c05f62896055775fe69728249e428229a114b6e34ccfe5223a121a721148b89b", + "version": "v3.207.0" + }, + "secrets_providers": { + "type": "passphrase", + "state": { + "salt": "v1:+RQnA5wMG7I=:v1:K9qUgJp+ts3gyRLH:NL89NxwTIzfdG1WSTDdRft8LBceRpA==" + } + }, + "resources": [ + { + "urn": "urn:pulumi:test::upgrade-aks-api-version::pulumi:pulumi:Stack::upgrade-aks-api-version-test", + "custom": false, + "type": "pulumi:pulumi:Stack", + "outputs": { + "clusterId": "/subscriptions/0282681f-7a9e-424b-80b2-96babd57a8a1/resourcegroups/rga912bcdf/providers/Microsoft.ContainerService/managedClusters/cluster9a479123", + "clusterName": "cluster9a479123", + "resourceGroupName": "rga912bcdf" + }, + "created": "2025-11-21T17:51:19.14528Z", + "modified": "2025-11-21T17:51:19.14528Z", + "sourcePosition": "project:///../../../../../../../../../home/runner/work/pulumi-yaml/pulumi-yaml/pkg/server/server.go#317", + "stackTrace": [ + { + "sourcePosition": "project:///../../../../../../../../../home/runner/work/pulumi-yaml/pulumi-yaml/pkg/server/server.go#317" + }, + { + "sourcePosition": "project:///../../../../../../../../../home/runner/go/pkg/mod/github.com/pulumi/pulumi/sdk/v3@v3.206.0/proto/go/language_grpc.pb.go#557" + }, + { + "sourcePosition": "project:///../../../../../../../../../home/runner/go/pkg/mod/google.golang.org/grpc@v1.72.1/server.go#1405" + }, + { + "sourcePosition": "project:///../../../../../../../../../home/runner/go/pkg/mod/google.golang.org/grpc@v1.72.1/server.go#1815" + }, + { + "sourcePosition": "project:///../../../../../../../../../home/runner/go/pkg/mod/google.golang.org/grpc@v1.72.1/server.go#1035" + }, + { + "sourcePosition": "project:///../../../../../../../../../opt/hostedtoolcache/go/1.24.9/x64/src/runtime/asm_arm64.s#1223" + } + ] + }, + { + "urn": "urn:pulumi:test::upgrade-aks-api-version::pulumi:providers:azure-native::default", + "custom": true, + "id": "588e60bb-8096-4dca-a2a2-7150234b2aa5", + "type": "pulumi:providers:azure-native", + "inputs": { + "location": "westus2" + }, + "outputs": { + "location": "westus2" + }, + "created": "2025-11-21T17:51:20.743489Z", + "modified": "2025-11-21T17:51:20.743489Z" + }, + { + "urn": "urn:pulumi:test::upgrade-aks-api-version::azure-native:resources:ResourceGroup::rg", + "custom": true, + "id": "/subscriptions/0282681f-7a9e-424b-80b2-96babd57a8a1/resourceGroups/rga912bcdf", + "type": "azure-native:resources:ResourceGroup", + "inputs": { + "__createBeforeDelete": true, + "location": "eastus", + "resourceGroupName": "rga912bcdf" + }, + "outputs": { + "__inputs": { + "4dabf18193072939515e22adb298388d": "1b47061264138c4ac30d75fd1eb44270", + "plaintext": "{\"__createBeforeDelete\":true,\"location\":\"REDACTED BY PROVIDERTEST\",\"resourceGroupName\":\"REDACTED BY PROVIDERTEST\"}" + }, + "azureApiVersion": "2022-09-01", + "id": "/subscriptions/0282681f-7a9e-424b-80b2-96babd57a8a1/resourceGroups/rga912bcdf", + "location": "eastus", + "name": "rga912bcdf", + "properties": { + "provisioningState": "Succeeded" + }, + "type": "Microsoft.Resources/resourceGroups" + }, + "parent": "urn:pulumi:test::upgrade-aks-api-version::pulumi:pulumi:Stack::upgrade-aks-api-version-test", + "provider": "urn:pulumi:test::upgrade-aks-api-version::pulumi:providers:azure-native::default::588e60bb-8096-4dca-a2a2-7150234b2aa5", + "propertyDependencies": { + "location": [] + }, + "created": "2025-11-21T17:51:25.294096Z", + "modified": "2025-11-21T17:51:25.294096Z", + "sourcePosition": "project:///../../../../../../../../../home/runner/work/pulumi-yaml/pulumi-yaml/pkg/pulumiyaml/run.go#1391", + "stackTrace": [ + { + "sourcePosition": "project:///../../../../../../../../../home/runner/work/pulumi-yaml/pulumi-yaml/pkg/pulumiyaml/run.go#1391" + }, + { + "sourcePosition": "project:///../../../../../../../../../home/runner/work/pulumi-yaml/pulumi-yaml/pkg/pulumiyaml/run.go#957" + }, + { + "sourcePosition": "project:///../../../../../../../../../home/runner/work/pulumi-yaml/pulumi-yaml/pkg/pulumiyaml/run.go#1171" + }, + { + "sourcePosition": "project:///../../../../../../../../../home/runner/work/pulumi-yaml/pulumi-yaml/pkg/pulumiyaml/run.go#1036" + }, + { + "sourcePosition": "project:///../../../../../../../../../home/runner/work/pulumi-yaml/pulumi-yaml/pkg/pulumiyaml/run.go#499" + }, + { + "sourcePosition": "project:///../../../../../../../../../home/runner/work/pulumi-yaml/pulumi-yaml/pkg/server/server.go#319" + }, + { + "sourcePosition": "project:///../../../../../../../../../home/runner/go/pkg/mod/github.com/pulumi/pulumi/sdk/v3@v3.206.0/go/pulumi/run.go#141" + }, + { + "sourcePosition": "project:///../../../../../../../../../home/runner/work/pulumi-yaml/pulumi-yaml/pkg/server/server.go#317" + }, + { + "sourcePosition": "project:///../../../../../../../../../home/runner/go/pkg/mod/github.com/pulumi/pulumi/sdk/v3@v3.206.0/proto/go/language_grpc.pb.go#557" + }, + { + "sourcePosition": "project:///../../../../../../../../../home/runner/go/pkg/mod/google.golang.org/grpc@v1.72.1/server.go#1405" + }, + { + "sourcePosition": "project:///../../../../../../../../../home/runner/go/pkg/mod/google.golang.org/grpc@v1.72.1/server.go#1815" + }, + { + "sourcePosition": "project:///../../../../../../../../../home/runner/go/pkg/mod/google.golang.org/grpc@v1.72.1/server.go#1035" + }, + { + "sourcePosition": "project:///../../../../../../../../../opt/hostedtoolcache/go/1.24.9/x64/src/runtime/asm_arm64.s#1223" + } + ] + }, + { + "urn": "urn:pulumi:test::upgrade-aks-api-version::azure-native:containerservice/v20240102preview:ManagedCluster::cluster", + "custom": true, + "id": "/subscriptions/0282681f-7a9e-424b-80b2-96babd57a8a1/resourcegroups/rga912bcdf/providers/Microsoft.ContainerService/managedClusters/cluster9a479123", + "type": "azure-native:containerservice/v20240102preview:ManagedCluster", + "inputs": { + "__createBeforeDelete": true, + "agentPoolProfiles": [ + { + "count": 1, + "mode": "System", + "name": "agentpool", + "vmSize": "Standard_DS2_v2" + } + ], + "dnsPrefix": "test-aks-4400", + "identity": { + "type": "SystemAssigned" + }, + "location": "eastus", + "resourceGroupName": "rga912bcdf", + "resourceName": "cluster9a479123" + }, + "outputs": { + "__inputs": { + "4dabf18193072939515e22adb298388d": "1b47061264138c4ac30d75fd1eb44270", + "plaintext": "{\"__createBeforeDelete\":true,\"agentPoolProfiles\":[{\"count\":1,\"mode\":\"REDACTED BY PROVIDERTEST\",\"name\":\"REDACTED BY PROVIDERTEST\",\"vmSize\":\"REDACTED BY PROVIDERTEST\"}],\"dnsPrefix\":\"REDACTED BY PROVIDERTEST\",\"identity\":{\"type\":\"REDACTED BY PROVIDERTEST\"},\"location\":\"REDACTED BY PROVIDERTEST\",\"resourceGroupName\":\"REDACTED BY PROVIDERTEST\",\"resourceName\":\"REDACTED BY PROVIDERTEST\"}" + }, + "agentPoolProfiles": [ + { + "count": 1, + "currentOrchestratorVersion": "1.32.9", + "enableFIPS": false, + "enableNodePublicIP": false, + "kubeletDiskType": "OS", + "maxPods": 250, + "mode": "System", + "name": "agentpool", + "nodeImageVersion": "AKSUbuntu-2204gen2containerd-202511.07.0", + "orchestratorVersion": "1.32", + "osDiskSizeGB": 128, + "osDiskType": "Managed", + "osSKU": "Ubuntu", + "osType": "Linux", + "powerState": { + "code": "Running" + }, + "provisioningState": "Succeeded", + "scaleDownMode": "Delete", + "securityProfile": { + "enableSecureBoot": false, + "enableVTPM": false, + "sshAccess": "LocalUser" + }, + "type": "VirtualMachineScaleSets", + "upgradeSettings": { + "maxSurge": "10%" + }, + "vmSize": "Standard_DS2_v2" + } + ], + "autoUpgradeProfile": { + "nodeOSUpgradeChannel": "NodeImage" + }, + "azureApiVersion": "2024-01-02-preview", + "azurePortalFQDN": "test-aks-4400-m5rz0g46.portal.hcp.eastus.azmk8s.io", + "bootstrapProfile": { + "artifactSource": "Direct" + }, + "currentKubernetesVersion": "1.32.9", + "dnsPrefix": "test-aks-4400", + "enableRBAC": true, + "fqdn": "test-aks-4400-m5rz0g46.hcp.eastus.azmk8s.io", + "id": "/subscriptions/0282681f-7a9e-424b-80b2-96babd57a8a1/resourcegroups/rga912bcdf/providers/Microsoft.ContainerService/managedClusters/cluster9a479123", + "identity": { + "principalId": "747656b7-3b21-464b-a383-d0479cafeb03", + "tenantId": "706143bc-e1d4-4593-aee2-c9dc60ab9be7", + "type": "SystemAssigned" + }, + "identityProfile": { + "kubeletidentity": { + "clientId": "2480209c-d5dc-4173-9ad3-201bdc88581c", + "objectId": "64d323ce-aef8-4d31-bf4c-7260af004d61", + "resourceId": "/subscriptions/0282681f-7a9e-424b-80b2-96babd57a8a1/resourcegroups/MC_rga912bcdf_cluster9a479123_eastus/providers/Microsoft.ManagedIdentity/userAssignedIdentities/cluster9a479123-agentpool" + } + }, + "kubernetesVersion": "1.32", + "location": "eastus", + "maxAgentPools": 100, + "metricsProfile": { + "costAnalysis": { + "enabled": false + } + }, + "name": "cluster9a479123", + "networkProfile": { + "dnsServiceIP": "10.0.0.10", + "ipFamilies": [ + "IPv4" + ], + "loadBalancerProfile": { + "backendPoolType": "nodeIPConfiguration", + "effectiveOutboundIPs": [ + { + "id": "/subscriptions/0282681f-7a9e-424b-80b2-96babd57a8a1/resourceGroups/MC_rga912bcdf_cluster9a479123_eastus/providers/Microsoft.Network/publicIPAddresses/085f1ba8-7b7e-4438-a68f-59f5e6e081fc" + } + ], + "managedOutboundIPs": { + "count": 1 + } + }, + "loadBalancerSku": "standard", + "networkDataplane": "azure", + "networkPlugin": "azure", + "networkPluginMode": "overlay", + "networkPolicy": "none", + "outboundType": "loadBalancer", + "podCidr": "10.244.0.0/16", + "podCidrs": [ + "10.244.0.0/16" + ], + "serviceCidr": "10.0.0.0/16", + "serviceCidrs": [ + "10.0.0.0/16" + ] + }, + "nodeProvisioningProfile": { + "mode": "Manual" + }, + "nodeResourceGroup": "MC_rga912bcdf_cluster9a479123_eastus", + "oidcIssuerProfile": { + "enabled": false + }, + "powerState": { + "code": "Running" + }, + "provisioningState": "Succeeded", + "resourceUID": "6920a6a3bbb7e2000128a92f", + "securityProfile": {}, + "servicePrincipalProfile": { + "clientId": "msi" + }, + "sku": { + "name": "Base", + "tier": "Free" + }, + "storageProfile": { + "diskCSIDriver": { + "enabled": true, + "version": "v1" + }, + "fileCSIDriver": { + "enabled": true + }, + "snapshotController": { + "enabled": true + } + }, + "supportPlan": "KubernetesOfficial", + "type": "Microsoft.ContainerService/ManagedClusters", + "workloadAutoScalerProfile": {} + }, + "parent": "urn:pulumi:test::upgrade-aks-api-version::pulumi:pulumi:Stack::upgrade-aks-api-version-test", + "dependencies": [ + "urn:pulumi:test::upgrade-aks-api-version::azure-native:resources:ResourceGroup::rg" + ], + "provider": "urn:pulumi:test::upgrade-aks-api-version::pulumi:providers:azure-native::default::588e60bb-8096-4dca-a2a2-7150234b2aa5", + "propertyDependencies": { + "agentPoolProfiles": [], + "dnsPrefix": [], + "identity": [], + "location": [ + "urn:pulumi:test::upgrade-aks-api-version::azure-native:resources:ResourceGroup::rg" + ], + "resourceGroupName": [ + "urn:pulumi:test::upgrade-aks-api-version::azure-native:resources:ResourceGroup::rg" + ] + }, + "created": "2025-11-21T17:54:44.438188Z", + "modified": "2025-11-21T17:54:44.438188Z", + "sourcePosition": "project:///../../../../../../../../../home/runner/work/pulumi-yaml/pulumi-yaml/pkg/pulumiyaml/run.go#1391", + "stackTrace": [ + { + "sourcePosition": "project:///../../../../../../../../../home/runner/work/pulumi-yaml/pulumi-yaml/pkg/pulumiyaml/run.go#1391" + }, + { + "sourcePosition": "project:///../../../../../../../../../home/runner/work/pulumi-yaml/pulumi-yaml/pkg/pulumiyaml/run.go#957" + }, + { + "sourcePosition": "project:///../../../../../../../../../home/runner/work/pulumi-yaml/pulumi-yaml/pkg/pulumiyaml/run.go#1171" + }, + { + "sourcePosition": "project:///../../../../../../../../../home/runner/work/pulumi-yaml/pulumi-yaml/pkg/pulumiyaml/run.go#1036" + }, + { + "sourcePosition": "project:///../../../../../../../../../home/runner/work/pulumi-yaml/pulumi-yaml/pkg/pulumiyaml/run.go#499" + }, + { + "sourcePosition": "project:///../../../../../../../../../home/runner/work/pulumi-yaml/pulumi-yaml/pkg/server/server.go#319" + }, + { + "sourcePosition": "project:///../../../../../../../../../home/runner/go/pkg/mod/github.com/pulumi/pulumi/sdk/v3@v3.206.0/go/pulumi/run.go#141" + }, + { + "sourcePosition": "project:///../../../../../../../../../home/runner/work/pulumi-yaml/pulumi-yaml/pkg/server/server.go#317" + }, + { + "sourcePosition": "project:///../../../../../../../../../home/runner/go/pkg/mod/github.com/pulumi/pulumi/sdk/v3@v3.206.0/proto/go/language_grpc.pb.go#557" + }, + { + "sourcePosition": "project:///../../../../../../../../../home/runner/go/pkg/mod/google.golang.org/grpc@v1.72.1/server.go#1405" + }, + { + "sourcePosition": "project:///../../../../../../../../../home/runner/go/pkg/mod/google.golang.org/grpc@v1.72.1/server.go#1815" + }, + { + "sourcePosition": "project:///../../../../../../../../../home/runner/go/pkg/mod/google.golang.org/grpc@v1.72.1/server.go#1035" + }, + { + "sourcePosition": "project:///../../../../../../../../../opt/hostedtoolcache/go/1.24.9/x64/src/runtime/asm_arm64.s#1223" + } + ] + } + ], + "metadata": {} + } +} \ No newline at end of file