Exemple #1
0
        public async Task HandleCreateCentralManagementServerRequest(CreateCentralManagementServerParams createCmsParams, RequestContext <ListRegisteredServersResult> requestContext)
        {
            Logger.Write(TraceEventType.Verbose, "HandleCreateCentralManagementServerRequest");
            try
            {
                CmsTask = Task.Run(async() =>
                {
                    try
                    {
                        //Validate params and connect
                        ServerConnection conn = await ValidateAndCreateConnection(createCmsParams.ConnectParams);

                        // Get Current Reg Servers on CMS
                        RegisteredServersStore store       = new RegisteredServersStore(conn);
                        ServerGroup parentGroup            = store.DatabaseEngineServerGroup;
                        ListRegisteredServersResult result = GetChildrenfromParentGroup(parentGroup);
                        if (result != null)
                        {
                            await requestContext.SendResult(result);
                            return;
                        }
                    }
                    catch (Exception ex)
                    {
                        // Exception related to connection/creation will only be caught here. Note that the outer catch will not catch them
                        await requestContext.SendError(ex);
                    }
                });
            }
            catch (Exception e)
            {
                // Exception related to run task will be captured here
                await requestContext.SendError(e);
            }
        }
Exemple #2
0
        private ListRegisteredServersResult GetChildrenfromParentGroup(ServerGroup parentGroup)
        {
            var servers = parentGroup.RegisteredServers;
            var groups  = parentGroup.ServerGroups;

            // Convert to appropriate variables and return
            var serverResults = new List <RegisteredServerResult>();

            foreach (var s in servers)
            {
                serverResults.Add(new RegisteredServerResult
                {
                    Name              = s.Name,
                    ServerName        = string.IsNullOrEmpty(s.ServerName) ? s.Name : s.ServerName,
                    Description       = s.Description,
                    ConnectionDetails = ConnectionServiceInstance.ParseConnectionString(s.ConnectionString),
                    RelativePath      = s.KeyChain.Urn.SafeToString()
                });
            }

            var groupsResults = new List <RegisteredServerGroup>();

            foreach (var s in groups)
            {
                groupsResults.Add(new RegisteredServerGroup
                {
                    Name         = s.Name,
                    Description  = s.Description,
                    RelativePath = s.KeyChain.Urn.SafeToString()
                });
            }
            ListRegisteredServersResult result = new ListRegisteredServersResult()
            {
                RegisteredServersList = serverResults, RegisteredServerGroups = groupsResults
            };

            return(result);
        }
Exemple #3
0
        public async Task HandleListRegisteredServersRequest(ListRegisteredServersParams listServerParams, RequestContext <ListRegisteredServersResult> requestContext)
        {
            Logger.Write(TraceEventType.Verbose, "HandleListRegisteredServersRequest");
            try
            {
                CmsTask = Task.Run(async() =>
                {
                    try
                    {
                        //Validate and create connection
                        ServerConnection serverConn = ValidateAndCreateConnection(listServerParams.ParentOwnerUri);

                        if (serverConn != null)
                        {
                            // Get registered Servers
                            RegisteredServersStore store = new RegisteredServersStore(serverConn);
                            ServerGroup parentGroup      = NavigateToServerGroup(store, listServerParams.RelativePath);

                            ListRegisteredServersResult result = GetChildrenfromParentGroup(parentGroup);
                            await requestContext.SendResult(result);
                        }
                        else
                        {
                            await requestContext.SendResult(null);
                        }
                    }
                    catch (Exception e)
                    {
                        await requestContext.SendError(e);
                    }
                });
            }
            catch (Exception e)
            {
                await requestContext.SendError(e);
            }
        }