From 16b1af56aea2bd879c7893b5f63ff0c6d2abfefc Mon Sep 17 00:00:00 2001 From: alexweininger Date: Tue, 30 Apr 2024 10:53:37 -0700 Subject: [PATCH] Fix listing functions on sovereign clouds --- src/FunctionAppResolver.ts | 34 ++++++++++++++++++++++------------ 1 file changed, 22 insertions(+), 12 deletions(-) diff --git a/src/FunctionAppResolver.ts b/src/FunctionAppResolver.ts index aafe1cf97..b002bb6fb 100644 --- a/src/FunctionAppResolver.ts +++ b/src/FunctionAppResolver.ts @@ -48,19 +48,29 @@ export class FunctionAppResolver implements AppResourceResolver { } async function getSites20231201(context: IActionContext, subContext: ISubscriptionContext): Promise<(Site & { properties?: { functionAppConfig: FunctionAppConfig } })[]> { - const headers = createHttpHeaders({ - 'Content-Type': 'application/json', - }); + try { + const headers = createHttpHeaders({ + 'Content-Type': 'application/json', + }); + + const armEndpoint = ensureEndingSlash(subContext.environment.resourceManagerEndpointUrl); + + // we need the new api-version to get the functionAppConfig + const options: AzExtRequestPrepareOptions = { + url: `${armEndpoint}subscriptions/${subContext.subscriptionId}/providers/Microsoft.Web/sites?api-version=2023-12-01`, + method: 'GET', + headers + }; - // we need the new api-version to get the functionAppConfig - const options: AzExtRequestPrepareOptions = { - url: `https://management.azure.com/subscriptions/${subContext.subscriptionId}/providers/Microsoft.Web/sites?api-version=2023-12-01`, - method: 'GET', - headers - }; + const client = await createGenericClient(context, subContext); + const result = await client.sendRequest(createPipelineRequest(options)) as AzExtPipelineResponse; - const client = await createGenericClient(context, subContext); - const result = await client.sendRequest(createPipelineRequest(options)) as AzExtPipelineResponse; - return (result.parsedBody as { value: unknown }).value as (Site & { properties?: { functionAppConfig: FunctionAppConfig } })[]; + return (result.parsedBody as { value: unknown }).value as (Site & { properties?: { functionAppConfig: FunctionAppConfig } })[] ?? []; + } catch (_error) { + return []; + } } +function ensureEndingSlash(url: string): string { + return url.endsWith('/') ? url : `${url}/`; +}