in src/common/details/ai_python_generative_sdk/AiSdkConsoleGui_PickOrCreateAiHubResource.cs [36:111]
private static async Task<(AiHubResourceInfo, bool)> PickOrCreateAiHubResource(bool allowCreate, ICommandValues values, string subscription)
{
ConsoleHelpers.WriteLineWithHighlight($"\n`AZURE AI RESOURCE`");
Console.Write("\rName: *** Loading choices ***");
var json = PythonSDKWrapper.ListResources(values, subscription);
if (Program.Debug) Console.WriteLine(json);
var parsed = !string.IsNullOrEmpty(json) ? JsonDocument.Parse(json) : default;
var items = parsed?.GetPropertyArrayOrEmpty("resources") ?? Array.Empty<JsonElement>();
var choices = new List<string>();
foreach (var item in items)
{
var name = item.GetPropertyStringOrNull("name");
var location = item.GetPropertyStringOrNull("location");
var displayName = item.GetPropertyStringOrNull("display_name");
choices.Add(string.IsNullOrEmpty(displayName)
? $"{name} ({location})"
: $"{displayName} ({location})");
}
if (allowCreate)
{
choices.Insert(0, "(Create w/ integrated Open AI + AI Services)");
choices.Insert(1, "(Create w/ standalone Open AI resource)");
}
if (choices.Count == 0)
{
throw new ApplicationException($"CANCELED: No resources found");
}
Console.Write("\rName: ");
var picked = ListBoxPicker.PickIndexOf(choices.ToArray());
if (picked < 0)
{
throw new OperationCanceledException($"CANCELED: No resource selected");
}
Console.WriteLine($"\rName: {choices[picked]}");
var resource = allowCreate
? (picked >= 2 ? items.ToArray()[picked - 2] : default(JsonElement?))
: items.ToArray()[picked];
var byoServices = allowCreate && picked == 1;
if (byoServices)
{
var regionFilter = values.GetOrEmpty("init.service.resource.region.name");
var groupFilter = values.GetOrEmpty("init.service.resource.group.name");
var resourceFilter = values.GetOrEmpty("init.service.cognitiveservices.resource.name");
var kind = values.GetOrDefault("init.service.cognitiveservices.resource.kind", "OpenAI;AIServices");
var sku = values.GetOrDefault("init.service.cognitiveservices.resource.sku", Program.CognitiveServiceResourceSku);
var yes = values.GetOrDefault("init.service.cognitiveservices.terms.agree", false);
var openAiResource = await AzCliConsoleGui.PickOrCreateAndConfigCognitiveServicesOpenAiKindResource(values, true, subscription, regionFilter, groupFilter, resourceFilter, kind, sku, yes);
values.Reset("service.openai.deployments.picked", "true");
ResourceGroupNameToken.Data().Set(values, openAiResource.Group);
values.Reset("service.resource.region.name", openAiResource.RegionLocation);
values.Reset("service.openai.endpoint", openAiResource.Endpoint);
values.Reset("service.openai.key", openAiResource.Key);
values.Reset("service.openai.resource.id", openAiResource.Id);
values.Reset("service.openai.resource.kind", openAiResource.Kind);
}
var createNewHub = allowCreate && (picked == 0 || picked == 1);
if (createNewHub)
{
resource = await TryCreateAiHubResourceInteractive(values, subscription);
}
return (FinishPickOrCreateAiHubResource(values, resource), createNewHub);
}