/// <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); }
/// <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)); }