Example #1
0
        /// <summary>
        /// Converts a cluster (db) to a DTO
        /// </summary>
        /// <param name="c">the cluster to convert</param>
        /// <returns>The cluster as a DTO</returns>
        public static Auth.DTO.Cluster ConvertToDTO(Cluster c)
        {
            Auth.DTO.Cluster cluster = new Auth.DTO.Cluster();
            cluster.ClusterId = c.ClusterId;
            cluster.Endpoints = c.Endpoints.Select(p => new Auth.DTO.ClusterEndpoint()
            {
                IP = p
            }).ToArray();
            cluster.Name = c.Name;
            List <Auth.DTO.Server> servers = new List <Auth.DTO.Server>();

            foreach (var s in c.Servers.ToList())
            {
                Auth.DTO.Server server = new Auth.DTO.Server();
                server.Id   = s.Id;
                server.IP   = s.IP;
                server.Name = s.Name;

                List <Auth.DTO.Service> services = new List <Auth.DTO.Service>();
                foreach (var ser in s.MicroServices)
                {
                    Auth.DTO.Service service = new Auth.DTO.Service();
                    service.Name    = ser.Name;
                    service.Version = ser.Version;
                    services.Add(service);
                }

                server.Services = services.ToArray();
                servers.Add(server);
            }

            cluster.Servers = servers.ToArray();
            return(cluster);
        }
Example #2
0
        /// <summary>
        /// Create default cluster
        /// </summary>
        /// <param name="cluster">Cluster DTO</param>
        /// <returns>id of new created cluster</returns>
        internal static int CreateDefault(Auth.DTO.Cluster cluster, Guid orgId)
        {
            var dbcluster = DataContext.Instance.Clusters.Where(x => x.ClusterId == cluster.ClusterId).FirstOrDefault();

            if (dbcluster == null)
            {
                dbcluster = new Cluster()
                {
                    Name = cluster.Name,
                    OwnedByOrganisationId = orgId
                };
                DataContext.Instance.Clusters.Add(dbcluster);
                DataContext.Instance.SaveChanges();

                return(dbcluster.ClusterId);
            }
            return(-1);
        }
        /// <summary>
        /// Handles messages regardring cluster
        /// </summary>
        /// <param name="topicparts">topic parts</param>
        /// <param name="wrapper">wrapper</param>
        /// <returns>null</returns>
        public static ReturnMessageWrapper HandleMessage(string[] topicparts, Common.DTO.MessageWrapper wrapper)
        {
            CallContext cc = new CallContext(
                wrapper.OrgContext,
                new Common.DTO.Token()
            {
                Scope = GlobalValues.Scope, Tokenid = wrapper.UserContextToken
            },
                wrapper.IssuedDate);

            if (cc.IsSystemAdministrator)
            {
                var operation = topicparts[1];
                Monosoft.Auth.DTO.Cluster cluster = new Auth.DTO.Cluster();
                if (wrapper.MessageData != null)
                {
                    Auth.DTO.Cluster result = null;
                    switch (operation)
                    {
                    case "create":     // TESTET OK: 30-09-2018
                        cluster = Common.DTO.MessageWrapperHelper <Monosoft.Auth.DTO.Cluster> .GetData(wrapper);

                        result = Cluster.ConvertToDTO(Cluster.Create(cluster, cc.OrganisationId.Value));
                        Common.MessageQueue.EventClient.Instance.RaiseEvent(GlobalValues.RouteClusterCreated, new Common.DTO.EventDTO(result, wrapper.Clientid, wrapper.Messageid));
                        return(ReturnMessageWrapper.CreateResult(true, wrapper, new System.Collections.Generic.List <LocalizedString>()
                        {
                            new LocalizedString()
                            {
                                Lang = "en", Text = "OK"
                            }
                        }, result));

                    case "update":     // TESTET OK: 30-09-2018
                        cluster = Common.DTO.MessageWrapperHelper <Monosoft.Auth.DTO.Cluster> .GetData(wrapper);

                        result = Cluster.ConvertToDTO(Cluster.Update(cluster, cc.OrganisationId.Value));
                        Common.MessageQueue.EventClient.Instance.RaiseEvent(GlobalValues.RouteClusterUpdated, new Common.DTO.EventDTO(result, wrapper.Clientid, wrapper.Messageid));
                        return(ReturnMessageWrapper.CreateResult(true, wrapper, new System.Collections.Generic.List <LocalizedString>()
                        {
                            new LocalizedString()
                            {
                                Lang = "en", Text = "OK"
                            }
                        }, result));

                    case "delete":     // TESTET OK: 30-09-2018
                        var clusterid = Common.DTO.MessageWrapperHelper <Monosoft.Common.DTO.IntIdDTO> .GetData(wrapper);

                        Common.DTO.Success isDeleted = new Common.DTO.Success();
                        isDeleted.Succeeded = Cluster.Delete(clusterid.Id, cc.OrganisationId.Value);
                        Common.MessageQueue.EventClient.Instance.RaiseEvent(GlobalValues.RouteClusterDeleted, new Common.DTO.EventDTO(isDeleted, wrapper.Clientid, wrapper.Messageid));
                        return(ReturnMessageWrapper.CreateResult(true, wrapper, new System.Collections.Generic.List <LocalizedString>()
                        {
                            new LocalizedString()
                            {
                                Lang = "en", Text = "OK"
                            }
                        }, isDeleted));

                    case "getbyorganisation":     // TESTET OK: 30-09-2018
                        var organisationId = Common.DTO.MessageWrapperHelper <Monosoft.Common.DTO.GuidIdDTO> .GetData(wrapper);

                        Auth.DTO.Clusters getresult = new Auth.DTO.Clusters();
                        getresult.Cluster = Cluster.Read(organisationId.Id).Select(p => Cluster.ConvertToDTO(p)).ToArray();
                        Common.MessageQueue.EventClient.Instance.RaiseEvent(GlobalValues.RouteClusterRead, new Common.DTO.EventDTO(getresult, wrapper.Clientid, wrapper.Messageid));
                        return(ReturnMessageWrapper.CreateResult(true, wrapper, new System.Collections.Generic.List <LocalizedString>()
                        {
                            new LocalizedString()
                            {
                                Lang = "en", Text = "OK"
                            }
                        }, result));

                    default:     /*log error event*/
                        Common.MessageQueue.Diagnostics.Instance.LogEvent("Unknow topic for Cluster.", operation + " is unknown", Common.DTO.Severity.Information, wrapper.OrgContext);
                        break;
                    }
                }
            }

            return(ReturnMessageWrapper.CreateResult(true, wrapper, new System.Collections.Generic.List <LocalizedString>()
            {
                new LocalizedString()
                {
                    Lang = "en", Text = "missing credentials"
                }
            }, null));
        }