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); } }
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--; } } }
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); }
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); }
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); }
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; }
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); }
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()}"); } } }
void CollapsDetail(ProjectTagI row) { }