Example #1
0
 public bool SendNotification(string farmTaskName, string recipient, string message)
 {
     lock (syncLocker) {
         ProjectTagI tag = FindTask(farmTaskName);
         if (tag == null)
         {
             Log.Message($"Can`t find task for sending message {farmTaskName}");
             return(false);
         }
         var server = FindServer(tag.farm, tag.server);
         if (server == null)
         {
             Log.Message($"Can`t find task for sending message {farmTaskName}");
             return(false);
         }
         var integrator = GetIntegrator(server.Farm);
         if (integrator == null)
         {
             Log.Error("Can`t send message. Integrator not found.");
             return(false);
         }
         string project = tag.name;
         bool   result  = integrator.SendNotification(project, recipient, message);
         if (result)
         {
             Log.Message($"Message sent to: server = {server} project = {project} recipient = {recipient}");
         }
         else
         {
             Log.Message("Can`t send message. Integrator returns error.");
         }
         return(result);
     }
 }
Example #2
0
        void SinchronizeProjectTagsTable()
        {
            object update = new object();

            foreach (ProjectI sourceRow in projectTable)
            {
                if (sourceRow.tags.Tags.Length == 0)
                {
                    TagKey fullName = new TagKey(sourceRow.farm, sourceRow.name, string.Empty);
                    UpdateTag(fullName, sourceRow).Update = update;
                }
                else
                {
                    foreach (string tag in sourceRow.tags.Tags)
                    {
                        TagKey fullName = new TagKey(sourceRow.farm, sourceRow.name, tag);
                        UpdateTag(fullName, sourceRow).Update = update;
                    }
                }
            }
            for (int i = 0; i < projectTagTable.Count; i++)
            {
                ProjectTagI row = projectTagTable[i];
                if (row.Update != update)
                {
                    projectTagsDict.Remove(new TagKey(row.farm, row.name, row.tag));
                    projectTagTable.RemoveAt(i);
                    i--;
                }
            }
        }
Example #3
0
        ActivityStatus CalcActivityStatus(ProjectTagI tag)
        {
            string activity = tag.activity;

            if (activity == "Sleeping")
            {
                return(ActivityStatus.Sleeping);
            }
            if (activity.StartsWith("Pending"))
            {
                return(ActivityStatus.Pending);
            }
            if (activity.StartsWith("Preparing"))
            {
                return(ActivityStatus.Preparing);
            }
            if (activity.StartsWith("Building"))
            {
                return(ActivityStatus.Building);
            }
            if (activity.StartsWith("Checking"))
            {
                return(ActivityStatus.Checking);
            }
            return(ActivityStatus.Unknown);
        }
Example #4
0
        FarmExtendedStatus CalcExtendedTaskStatus(string task)
        {
            var         farmStatus = new FarmExtendedStatus();
            ProjectTagI tag        = FindTask(task);

            if (tag == null)
            {
                return(farmStatus);
            }
            var server = FindServer(tag.farm, tag.server);

            farmStatus.HyperName = server.HyperName;
            farmStatus.HyperHost = server.Host;
            return(farmStatus);
        }
Example #5
0
        FarmStatus CalcTaskStatus(string task)
        {
            var farmStatus = new FarmStatus()
            {
                ActivityStatus = ActivityStatus.Unknown,
                BuildStatus    = IntegrationStatus.Unknown,
            };
            ProjectTagI tag = FindTask(task);

            if (tag == null)
            {
                return(farmStatus);
            }
            farmStatus.BuildStatus     = tag.buildstatus;
            farmStatus.ActivityStatus  = CalcActivityStatus(tag);
            farmStatus.ActivityMessage = tag.activity;
            return(farmStatus);
        }
Example #6
0
 static void CopyProjectRowInfo(ProjectTagI row, ProjectI sourceRow)
 {
     row.server               = sourceRow.server;
     row.activity             = sourceRow.activity;
     row.queuename            = sourceRow.queuename;
     row.weburl               = sourceRow.weburl;
     row.buildstage           = sourceRow.buildstage;
     row.buildstatus          = sourceRow.buildstatus;
     row.status               = sourceRow.status;
     row.lastbuilddate        = sourceRow.lastbuilddate;
     row.lastbuildlabel       = sourceRow.lastbuildlabel;
     row.nextbuildtime        = sourceRow.nextbuildtime;
     row.details              = sourceRow.details;
     row.icon                 = sourceRow.icon;
     row.types                = sourceRow.types;
     row.forcer               = sourceRow.forcer;
     row.currentProjectChilds = sourceRow.currentProjectChilds;
     row.projectChilds        = sourceRow.projectChilds;
 }
Example #7
0
        ProjectTagI UpdateTag(TagKey fullName, ProjectI sourceRow)
        {
            ProjectTagI row;

            if (projectTagsDict.TryGetValue(fullName, out row))
            {
                CopyProjectRowInfo(row, sourceRow);
            }
            else
            {
                row      = new ProjectTagI();
                row.farm = sourceRow.farm;
                row.name = sourceRow.name;
                row.tag  = fullName.Tag;
                CopyProjectRowInfo(row, sourceRow);
                projectTagTable.Add(row);
                projectTagsDict.Add(fullName, row);
            }
            return(row);
        }
Example #8
0
        void ForceBuildTag(string task)
        {
            ProjectTagI tag = FindTask(task);

            if (tag == null)
            {
                return;
            }
            ProjectTagI[]          selectedRows = { tag };
            List <FarmProjectList> farmLists    = GetFarmLists(new[] { tag });
            int           messageProjectsCount  = 0;
            StringBuilder sb = new StringBuilder();

            foreach (FarmProjectList list in farmLists)
            {
                foreach (string project in list.Projects)
                {
                    if (messageProjectsCount > 20)
                    {
                        sb.Append("...");
                        break;
                    }
                    sb.Append($"{list.Name}\\{project}\n");
                    messageProjectsCount++;
                }
                if (messageProjectsCount > 20)
                {
                    break;
                }
            }
            if (CheckForceBuild(selectedRows, sb.ToString()))
            {
                List <string> stoppedList = new List <string>();
                foreach (FarmProjectList list in farmLists)
                {
                    foreach (DXCCTrayIntegrator integrator in integratorList)
                    {
                        if (list.Name == integrator.Name)
                        {
                            if (list.Projects.Count > 0)
                            {
                                stoppedList.AddRange(integrator.ForceBuild(list.Projects.ToArray()));
                            }
                        }
                    }
                }
                if (stoppedList.Count > 0)
                {
                    StringBuilder sb2 = new StringBuilder();
                    messageProjectsCount = 0;
                    foreach (string project in stoppedList)
                    {
                        if (messageProjectsCount > 20)
                        {
                            sb2.Append("...");
                            break;
                        }
                        sb2.Append(project);
                        messageProjectsCount++;
                    }
                    Log.Error($"These projects was not forced, cause they are stopped:\n\n{sb2.ToString()}");
                }
            }
        }
Example #9
0
 void CollapsDetail(ProjectTagI row)
 {
 }