From 9729c980bbd89507a61dc192fe1db380ce137548 Mon Sep 17 00:00:00 2001 From: benPearce1 Date: Fri, 15 May 2026 11:41:50 +1000 Subject: [PATCH 1/2] fix: added azure default worker pool to deployment-target view command --- pkg/cmd/target/shared/view.go | 13 +++++++++ pkg/cmd/target/view/view.go | 54 +++++++++++++++++++++++++++++++---- 2 files changed, 62 insertions(+), 5 deletions(-) diff --git a/pkg/cmd/target/shared/view.go b/pkg/cmd/target/shared/view.go index f1bbe3ca..76573fa0 100644 --- a/pkg/cmd/target/shared/view.go +++ b/pkg/cmd/target/shared/view.go @@ -2,6 +2,7 @@ package shared import ( "fmt" + "github.com/OctopusDeploy/cli/pkg/cmd" "github.com/OctopusDeploy/cli/pkg/machinescommon" "github.com/OctopusDeploy/cli/pkg/output" @@ -142,6 +143,18 @@ func GetEnvironmentMap(opts *ViewOptions) (map[string]string, error) { return environmentMap, nil } +func GetWorkerPoolMap(opts *ViewOptions) (map[string]string, error) { + workerPoolMap := make(map[string]string) + allWorkerPools, err := opts.Client.WorkerPools.GetAll() + if err != nil { + return nil, err + } + for _, wp := range allWorkerPools { + workerPoolMap[wp.ID] = wp.Name + } + return workerPoolMap, nil +} + func GetTenantMap(opts *ViewOptions) (map[string]string, error) { tenantMap := make(map[string]string) allEnvs, err := opts.Client.Tenants.GetAll() diff --git a/pkg/cmd/target/view/view.go b/pkg/cmd/target/view/view.go index fa270f95..8baeb705 100644 --- a/pkg/cmd/target/view/view.go +++ b/pkg/cmd/target/view/view.go @@ -46,10 +46,13 @@ func ViewRun(opts *shared.ViewOptions) error { return output.PrintResource(target, opts.Command, output.Mappers[*machines.DeploymentTarget]{ Json: func(t *machines.DeploymentTarget) any { + if target.Endpoint.GetCommunicationStyle() == "AzureWebApp" { + return getAzureDeploymentTargetAsJson(opts, t) + } return getDeploymentTargetAsJson(opts, t) }, Table: output.TableDefinition[*machines.DeploymentTarget]{ - Header: []string{"NAME", "TYPE", "HEALTH", "ENVIRONMENTS", "ROLES", "TENANTS", "TENANT TAGS", "ENDPOINT DETAILS"}, + Header: []string{"NAME", "TYPE", "HEALTH", "ENVIRONMENTS", "ROLES", "TENANTS", "TENANT TAGS", "ENDPOINT DETAILS", "DEFAULT WORKER POOL"}, Row: func(t *machines.DeploymentTarget) []string { return getDeploymentTargetAsTableRow(opts, t) }, @@ -74,6 +77,11 @@ type DeploymentTargetAsJson struct { WebUrl string `json:"WebUrl"` } +type AzureDeploymentTargetAsJson struct { + DeploymentTargetAsJson + DefaultWorkerPool string `json:"DefaultWorkerPool"` +} + func getDeploymentTargetAsJson(opts *shared.ViewOptions, target *machines.DeploymentTarget) DeploymentTargetAsJson { environmentMap, _ := shared.GetEnvironmentMap(opts) tenantMap, _ := shared.GetTenantMap(opts) @@ -81,7 +89,7 @@ func getDeploymentTargetAsJson(opts *shared.ViewOptions, target *machines.Deploy environments := resolveValues(target.EnvironmentIDs, environmentMap) tenants := resolveValues(target.TenantIDs, tenantMap) - endpointDetails := getEndpointDetails(target) + endpointDetails := getEndpointDetails(target, opts) return DeploymentTargetAsJson{ Id: target.GetID(), @@ -98,6 +106,17 @@ func getDeploymentTargetAsJson(opts *shared.ViewOptions, target *machines.Deploy } } +func getAzureDeploymentTargetAsJson(opts *shared.ViewOptions, target *machines.DeploymentTarget) AzureDeploymentTargetAsJson { + deploymentTargetAsJson := getDeploymentTargetAsJson(opts, target) + workerPool := resolveDefaultWorkerPool(target, opts) + var azureTargetAsJson = AzureDeploymentTargetAsJson{ + DeploymentTargetAsJson: deploymentTargetAsJson, + DefaultWorkerPool: workerPool, + } + return azureTargetAsJson + +} + func getDeploymentTargetAsTableRow(opts *shared.ViewOptions, target *machines.DeploymentTarget) []string { environmentMap, _ := shared.GetEnvironmentMap(opts) environments := resolveValues(target.EnvironmentIDs, environmentMap) @@ -120,7 +139,7 @@ func getDeploymentTargetAsTableRow(opts *shared.ViewOptions, target *machines.De } // Handle endpoint details - endpointDetails := getEndpointDetails(target) + endpointDetails := getEndpointDetails(target, opts) var endpointDetailsStr strings.Builder first := true for key, value := range endpointDetails { @@ -135,6 +154,8 @@ func getDeploymentTargetAsTableRow(opts *shared.ViewOptions, target *machines.De endpointDetailsString = "-" } + workerPool := resolveDefaultWorkerPool(target, opts) + return []string{ output.Bold(target.Name), targetType, @@ -144,6 +165,7 @@ func getDeploymentTargetAsTableRow(opts *shared.ViewOptions, target *machines.De tenants, tenantTags, endpointDetailsString, + workerPool, } } @@ -203,7 +225,7 @@ func getDeploymentTargetAsBasic(opts *shared.ViewOptions, target *machines.Deplo result.WriteString(fmt.Sprintf("Type: %s\n", output.Cyan(targetType))) // Add endpoint-specific details - endpointDetails := getEndpointDetails(target) + endpointDetails := getEndpointDetails(target, opts) for key, value := range endpointDetails { result.WriteString(fmt.Sprintf("%s: %s\n", key, value)) } @@ -232,6 +254,15 @@ func getDeploymentTargetAsBasic(opts *shared.ViewOptions, target *machines.Deplo result.WriteString("Tenant Tags: None\n") } + // default worker pool + if target.Endpoint.GetCommunicationStyle() == "AzureWebApp" { + workerPool := resolveDefaultWorkerPool(target, opts) + if workerPool == "" { + workerPool = "None" + } + result.WriteString(fmt.Sprintf("Default Worker Pool: %s\n", workerPool)) + } + // Web URL url := util.GenerateWebURL(opts.Host, target.SpaceID, fmt.Sprintf("infrastructure/machines/%s/settings", target.GetID())) result.WriteString(fmt.Sprintf("\nView this deployment target in Octopus Deploy: %s\n", output.Blue(url))) @@ -256,7 +287,7 @@ func resolveValues(keys []string, lookup map[string]string) []string { return values } -func getEndpointDetails(target *machines.DeploymentTarget) map[string]string { +func getEndpointDetails(target *machines.DeploymentTarget, opts *shared.ViewOptions) map[string]string { details := make(map[string]string) switch target.Endpoint.GetCommunicationStyle() { @@ -299,3 +330,16 @@ func getEndpointDetails(target *machines.DeploymentTarget) map[string]string { return details } + +func resolveDefaultWorkerPool(target *machines.DeploymentTarget, opts *shared.ViewOptions) string { + if endpoint, ok := target.Endpoint.(*machines.AzureWebAppEndpoint); ok { + if endpoint.DefaultWorkerPoolID != "" { + workerPoolMap, _ := shared.GetWorkerPoolMap(opts) + return resolveValues([]string{endpoint.DefaultWorkerPoolID}, workerPoolMap)[0] + } else { + return "" + } + } + + return "N/A" +} From bb5d7c5eac28ff27f74f98ccc8adcf608e10485e Mon Sep 17 00:00:00 2001 From: benPearce1 Date: Fri, 15 May 2026 11:54:03 +1000 Subject: [PATCH 2/2] fix: added default worker pool to deployment-target azure-web-app view command --- pkg/cmd/target/shared/view.go | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/pkg/cmd/target/shared/view.go b/pkg/cmd/target/shared/view.go index 76573fa0..80adb7c2 100644 --- a/pkg/cmd/target/shared/view.go +++ b/pkg/cmd/target/shared/view.go @@ -88,6 +88,15 @@ func ViewRun(opts *ViewOptions, contributeEndpoint ContributeEndpointCallback, d data = append(data, output.NewDataRow("Tenant Tags", "None")) } + if endpoint, ok := target.Endpoint.(*machines.AzureWebAppEndpoint); ok { + workerPoolName := "None" + if endpoint.DefaultWorkerPoolID != "" { + workerPoolMap, _ := GetWorkerPoolMap(opts) + workerPoolName = resolveValues([]string{endpoint.DefaultWorkerPoolID}, workerPoolMap)[0] + } + data = append(data, output.NewDataRow("Default Worker Pool", workerPoolName)) + } + t := output.NewTable(opts.Out) for _, row := range data { t.AddRow(row.Name, row.Value)