public static async Task ConfigAiHubProject()

in src/common/details/ai_python_generative_sdk/AiSdkConsoleGui_PickOrCreate_AiHubProject.cs [35:121]


        public static async Task<AiHubProjectInfo> ConfigAiHubProject(
            ICommandValues values,
            AiHubProjectInfo project,
            bool createdProject,
            bool allowSkipSearch,
            string subscription,
            string resourceId,
            string groupName,
            string openAiEndpoint,
            string openAiKey,
            string searchEndpoint,
            string searchKey)
        {
            var createdOrPickedSearch = false;
            if (!createdProject)
            {
                openAiEndpoint = string.Empty;
                openAiKey = string.Empty;
                searchEndpoint = string.Empty;
                searchKey = string.Empty;
                createdOrPickedSearch = false;

                (var hubName, var openai, var search) = await VerifyResourceConnections(values, subscription, project.Group, project.Name);

                var alreadyPickedDeployments = values.GetOrDefault("service.openai.deployments.picked", "false") == "true";
                if (alreadyPickedDeployments)
                {
                    openAiEndpoint = values["service.openai.endpoint"];
                    openAiKey = values["service.openai.key"];
                }
                else if (!string.IsNullOrEmpty(openai?.Name))
                {
                    var (chatDeployment, embeddingsDeployment, evaluationDeployment, keys) = await AzCliConsoleGui.PickOrCreateAndConfigCognitiveServicesOpenAiKindResourceDeployments(values, "AZURE OPENAI RESOURCE", true, subscription, openai.Value);
                    openAiEndpoint = openai.Value.Endpoint;
                    openAiKey = keys.Key1;
                }
                else
                {
                    var openAiResource = await AzCliConsoleGui.PickOrCreateAndConfigCognitiveServicesOpenAiKindResource(values, true, subscription);
                    openAiEndpoint = openAiResource.Endpoint;
                    openAiKey = openAiResource.Key;
                }

                if (!string.IsNullOrEmpty(search?.Name))
                {
                    var keys = await AzCliConsoleGui.LoadSearchResourceKeys(subscription, search.Value);
                    ConfigSetHelpers.ConfigSearchResource(search.Value.Endpoint, keys.Key1);
                    searchEndpoint = search.Value.Endpoint;
                    searchKey = keys.Key1;
                }
                else
                {
                    var pickedOrCreated = await AzCliConsoleGui.PickOrCreateAndConfigCogSearchResource(allowSkipSearch, subscription, null, null, project.Name, "aiproj");
                    createdOrPickedSearch = pickedOrCreated != null;
                    if (createdOrPickedSearch)
                    {
                        searchEndpoint = pickedOrCreated.Value.Endpoint;
                        searchKey = pickedOrCreated.Value.Key;
                    }
                }
            }

            Program.Telemetry.Wrap(
                () => GetOrCreateAiHubProjectConnections(values, createdProject || createdOrPickedSearch, subscription, project.Group, project.Name, openAiEndpoint, openAiKey, searchEndpoint, searchKey),
                (outcome, ex, duration) => new InitTelemetryEvent(InitStage.Connections)
                {
                    Outcome = outcome,
                    // TODO set selected?
                    RunId = values.GetOrDefault("telemetry.init.run_id", null),
                    RunType = values.GetOrDefault("telemetry.init.run_type", null),
                    DurationInMs = duration.TotalMilliseconds,
                    Error = ex?.Message
                });

            Program.Telemetry.Wrap(
                () => CreateAiHubProjectConfigJsonFile(subscription, project.Group, project.Name),
                (outcome, ex, duration) => new InitTelemetryEvent(InitStage.Save)
                {
                    Outcome = outcome,
                    RunId = values.GetOrDefault("telemetry.init.run_id", null),
                    RunType = values.GetOrDefault("telemetry.init.run_type", null),
                    DurationInMs = duration.TotalMilliseconds,
                    Error = ex?.Message
                });

            return project;
        }