public static void GetOrCreateAiHubProjectConnections()

in src/common/details/ai_python_generative_sdk/AiSdkConsoleGui_PickOrCreate_AiHubProject.cs [254:344]


        public static void GetOrCreateAiHubProjectConnections(ICommandValues values, bool create, string subscription, string groupName, string projectName, string openAiEndpoint, string openAiKey, string searchEndpoint, string searchKey)
        {
            var checkForExistingOpenAiConnection = true;
            var createOpenAiConnection = !string.IsNullOrEmpty(openAiEndpoint) && !string.IsNullOrEmpty(openAiKey) && !checkForExistingOpenAiConnection;

            var checkForExistingSearchConnection = !create;
            var createSearchConnection = !string.IsNullOrEmpty(searchEndpoint) && !string.IsNullOrEmpty(searchKey) && !checkForExistingSearchConnection;

            var connectionsOk = createOpenAiConnection || createSearchConnection || checkForExistingOpenAiConnection || checkForExistingSearchConnection;
            if (connectionsOk) ConsoleHelpers.WriteLineWithHighlight($"\n`AZURE AI PROJECT CONNECTIONS`\n");

            var connectionCount = 0;

            if (createOpenAiConnection || checkForExistingOpenAiConnection)
            {
                if (connectionCount > 0) Console.WriteLine();

                var connectionName = "Default_AzureOpenAI";
                Console.WriteLine($"Connection: {connectionName}");

                Console.Write(createOpenAiConnection ? "*** CREATING ***" : "*** CHECKING ***");

                var connectionType = "azure_open_ai";
                var connectionJson = createOpenAiConnection
                    ? PythonSDKWrapper.CreateConnection(values, subscription, groupName, projectName, connectionName, connectionType, null, openAiEndpoint, openAiKey)
                    : GetConnection(values, subscription, groupName, projectName, connectionName);

                var message = createSearchConnection ? "\r*** CREATED ***  " : null;
                if (checkForExistingOpenAiConnection)
                {
                    var parsed = !string.IsNullOrEmpty(connectionJson) ? JsonDocument.Parse(connectionJson) : null;
                    var connection = parsed?.GetPropertyElementOrNull("connection");
                    var target = connection?.GetPropertyStringOrNull("target");

                    var endpointOk = !string.IsNullOrEmpty(openAiEndpoint);
                    var targetOk = !string.IsNullOrEmpty(target);
                    var targetMatch = targetOk && endpointOk &&
                        (target == openAiEndpoint ||
                         target.Replace(".openai.azure.com/", ".cognitiveservices.azure.com/") == openAiEndpoint);

                    message = !targetOk ?
                        $"\r*** WARNING: {connectionName} no connection found ***  "
                        : !endpointOk
                        ? $"\r*** FOUND: {connectionName} found ***  "
                        : !targetMatch
                            ? $"\r*** WARNING: {connectionName} found but target is {target} ***  "
                            : $"\r*** MATCHED: {connectionName} ***  ";
                }

                Console.WriteLine(message);
                connectionCount++;
            }

            if (createSearchConnection || checkForExistingSearchConnection)
            {
                if (connectionCount > 0) Console.WriteLine();

                var connectionName = "AzureAISearch";
                Console.WriteLine($"Connection: {connectionName}");

                Console.Write(createSearchConnection ? "*** CREATING ***" : "*** CHECKING ***");

                var connectionType = "cognitive_search";
                var connectionJson = createSearchConnection
                    ? PythonSDKWrapper.CreateConnection(values, subscription, groupName, projectName, connectionName, connectionType, null, searchEndpoint, searchKey)
                    : GetConnection(values, subscription, groupName, projectName, connectionName);

                var message = createSearchConnection ? "\r*** CREATED ***  " : null;
                if (checkForExistingSearchConnection)
                {
                    var parsed = !string.IsNullOrEmpty(connectionJson) ? JsonDocument.Parse(connectionJson) : null;
                    var connection = parsed?.GetPropertyElementOrNull("connection");
                    var target = connection?.GetPropertyStringOrNull("target");

                    var targetOk = !string.IsNullOrEmpty(target);
                    var endpointOk = !string.IsNullOrEmpty(searchEndpoint);
                    var targetMatch = targetOk && endpointOk && target == searchEndpoint;

                    message = !targetOk
                        ? $"\r*** WARNING: {connectionName} no connection found ***  "
                        : !endpointOk
                            ? $"\r*** FOUND: {connectionName} found ***  "
                            : !targetMatch
                                ? $"\r*** WARNING: {connectionName} found but target is {target} ***  "
                                : $"\r*** MATCHED: {connectionName} ***  ";
                }

                Console.WriteLine(message);
                connectionCount++;
            }
        }