This is an automated email from the ASF dual-hosted git repository.

dpavlov pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/ignite-teamcity-bot.git


The following commit(s) were added to refs/heads/master by this push:
     new 0b3bbee  IGNITE-11688 : Default tracked branch name is now overridable 
in server config (aliased servers supported) (#116)
0b3bbee is described below

commit 0b3bbeea76ca0b08c8f3ceedf8530c4a5e0b5186
Author: Dmitriy Pavlov <dpav...@apache.org>
AuthorDate: Fri Apr 5 19:13:47 2019 +0300

    IGNITE-11688 : Default tracked branch name is now overridable in server 
config (aliased servers supported) (#116)
---
 .../ci/github/pure/GitHubConnectionImpl.java       |  7 ++-
 .../tcbot/chain/TrackedBranchChainsProcessor.java  |  6 +--
 .../ignite/ci/tcbot/conf/ITcServerConfig.java      |  6 +++
 .../ignite/ci/tcbot/conf/TcServerConfig.java       | 13 +++++
 .../ignite/ci/tcbot/issue/IssueDetector.java       |  4 +-
 .../tcbot/visa/TcBotTriggerAndSignOffService.java  | 62 ++++++++++++++--------
 .../ignite/ci/web/rest/parms/FullQueryParams.java  |  1 -
 7 files changed, 70 insertions(+), 29 deletions(-)

diff --git 
a/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/github/pure/GitHubConnectionImpl.java
 
b/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/github/pure/GitHubConnectionImpl.java
index a7ff550..ddfce1c 100644
--- 
a/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/github/pure/GitHubConnectionImpl.java
+++ 
b/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/github/pure/GitHubConnectionImpl.java
@@ -141,7 +141,10 @@ class GitHubConnectionImpl implements IGitHubConnection {
 
     /** {@inheritDoc} */
     @Override public String gitApiUrl() {
-        return gitApiUrl;
+        if (gitApiUrl == null)
+            return null;
+
+        return gitApiUrl.endsWith("/") ? gitApiUrl : gitApiUrl + "/";
     }
 
     /** {@inheritDoc} */
@@ -150,7 +153,7 @@ class GitHubConnectionImpl implements IGitHubConnection {
         @Nullable AtomicReference<String> outLinkNext) {
         Preconditions.checkState(!isNullOrEmpty(gitApiUrl), "Git API URL is 
not configured for this server.");
 
-        String url = fullUrl != null ? fullUrl : gitApiUrl + 
"pulls?sort=updated&direction=desc";
+        String url = fullUrl != null ? fullUrl : gitApiUrl() + 
"pulls?sort=updated&direction=desc";
 
         HashMap<String, String> rspHeaders = new HashMap<>();
         if (outLinkNext != null) {
diff --git 
a/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/tcbot/chain/TrackedBranchChainsProcessor.java
 
b/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/tcbot/chain/TrackedBranchChainsProcessor.java
index 5648057..a261730 100644
--- 
a/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/tcbot/chain/TrackedBranchChainsProcessor.java
+++ 
b/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/tcbot/chain/TrackedBranchChainsProcessor.java
@@ -27,6 +27,7 @@ import org.apache.ignite.ci.analysis.mode.ProcessLogsMode;
 import org.apache.ignite.ci.conf.BranchTracked;
 import org.apache.ignite.ci.di.AutoProfiling;
 import org.apache.ignite.ci.tcbot.conf.ITcBotConfig;
+import org.apache.ignite.ci.tcbot.conf.TcServerConfig;
 import org.apache.ignite.ci.teamcity.ignited.ITeamcityIgnited;
 import org.apache.ignite.ci.teamcity.ignited.ITeamcityIgnitedProvider;
 import org.apache.ignite.ci.teamcity.ignited.SyncMode;
@@ -35,7 +36,6 @@ import org.apache.ignite.ci.user.ICredentialsProv;
 import org.apache.ignite.ci.web.model.current.ChainAtServerCurrentStatus;
 import org.apache.ignite.ci.web.model.current.TestFailuresSummary;
 import org.apache.ignite.ci.web.model.long_running.FullLRTestsSummary;
-import org.apache.ignite.ci.web.rest.parms.FullQueryParams;
 import org.jetbrains.annotations.NotNull;
 import org.jetbrains.annotations.Nullable;
 
@@ -68,7 +68,7 @@ public class TrackedBranchChainsProcessor {
         final TestFailuresSummary res = new TestFailuresSummary();
         final AtomicInteger runningUpdates = new AtomicInteger();
 
-        final String branchNn = isNullOrEmpty(branch) ? 
FullQueryParams.DEFAULT_TRACKED_BRANCH_NAME : branch;
+        final String branchNn = isNullOrEmpty(branch) ? 
TcServerConfig.DEFAULT_TRACKED_BRANCH_NAME : branch;
         res.setTrackedBranch(branchNn);
 
         final BranchTracked tracked = 
tcBotConfig.getTrackedBranches().getBranchMandatory(branchNn);
@@ -143,7 +143,7 @@ public class TrackedBranchChainsProcessor {
         ICredentialsProv creds) {
         FullLRTestsSummary summary = new FullLRTestsSummary();
 
-        final String branchNn = isNullOrEmpty(branch) ? 
FullQueryParams.DEFAULT_TRACKED_BRANCH_NAME : branch;
+        final String branchNn = isNullOrEmpty(branch) ? 
TcServerConfig.DEFAULT_TRACKED_BRANCH_NAME : branch;
         final BranchTracked tracked = 
tcBotConfig.getTrackedBranches().getBranchMandatory(branchNn);
 
         tracked.chains.stream()
diff --git 
a/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/tcbot/conf/ITcServerConfig.java
 
b/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/tcbot/conf/ITcServerConfig.java
index 8f65ee8..5a415b4 100644
--- 
a/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/tcbot/conf/ITcServerConfig.java
+++ 
b/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/tcbot/conf/ITcServerConfig.java
@@ -35,4 +35,10 @@ public interface ITcServerConfig {
     @NotNull public String host();
 
     @NotNull public String logsDirectory();
+
+    /**
+     * @return
+     */
+    @NotNull public String defaultTrackedBranch();
+
 }
diff --git 
a/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/tcbot/conf/TcServerConfig.java
 
b/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/tcbot/conf/TcServerConfig.java
index 81ceea2..1c42a11 100644
--- 
a/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/tcbot/conf/TcServerConfig.java
+++ 
b/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/tcbot/conf/TcServerConfig.java
@@ -27,6 +27,7 @@ import org.jetbrains.annotations.Nullable;
  * Teamcity connection configuration or reference to another config.
  */
 public class TcServerConfig implements ITcServerConfig {
+    public static final String DEFAULT_TRACKED_BRANCH_NAME = "master";
     private static final String DEFAULT_HOST = "https://ci.ignite.apache.org/";;
 
     /** TC server name. */
@@ -44,6 +45,9 @@ public class TcServerConfig implements ITcServerConfig {
     /** Downloaded build logs relative path. */
     @Nullable private String logsDir;
 
+    /** Default tracked branch. */
+    @Nullable private String defaultTrackedBranch;
+
     public TcServerConfig() {
 
     }
@@ -101,7 +105,16 @@ public class TcServerConfig implements ITcServerConfig {
         return props != null
             ? props.getProperty(HelperConfig.HOST, DEFAULT_HOST)
             : DEFAULT_HOST;
+    }
+
+    /**
+     * @return tracked branch name to be used for this server for PRs check
+     */
+    @Override @NotNull public String defaultTrackedBranch() {
+        if (!Strings.isNullOrEmpty(defaultTrackedBranch))
+            return defaultTrackedBranch;
 
+        return DEFAULT_TRACKED_BRANCH_NAME;
     }
 
     /**
diff --git 
a/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/tcbot/issue/IssueDetector.java
 
b/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/tcbot/issue/IssueDetector.java
index 4828867..48d965c 100644
--- 
a/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/tcbot/issue/IssueDetector.java
+++ 
b/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/tcbot/issue/IssueDetector.java
@@ -47,6 +47,7 @@ import org.apache.ignite.ci.mail.EmailSender;
 import org.apache.ignite.ci.mail.SlackSender;
 import org.apache.ignite.ci.tcbot.chain.TrackedBranchChainsProcessor;
 import org.apache.ignite.ci.tcbot.conf.ITcBotConfig;
+import org.apache.ignite.ci.tcbot.conf.TcServerConfig;
 import org.apache.ignite.ci.tcbot.user.IUserStorage;
 import org.apache.ignite.ci.teamcity.ignited.IRunHistory;
 import org.apache.ignite.ci.teamcity.ignited.IStringCompactor;
@@ -61,7 +62,6 @@ import 
org.apache.ignite.ci.web.model.current.ChainAtServerCurrentStatus;
 import org.apache.ignite.ci.web.model.current.SuiteCurrentStatus;
 import org.apache.ignite.ci.web.model.current.TestFailure;
 import org.apache.ignite.ci.web.model.current.TestFailuresSummary;
-import org.apache.ignite.ci.web.rest.parms.FullQueryParams;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
@@ -159,7 +159,7 @@ public class IssueDetector {
             .forEach(issue -> {
                 List<String> addrs = new ArrayList<>();
 
-                if (slackCh != null && 
FullQueryParams.DEFAULT_TRACKED_BRANCH_NAME.equals(issue.trackedBranchName))
+                if (slackCh != null && 
TcServerConfig.DEFAULT_TRACKED_BRANCH_NAME.equals(issue.trackedBranchName))
                     addrs.add(SLACK + "#" + slackCh);
 
                 for (TcHelperUser next : userForPossibleNotifications) {
diff --git 
a/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/tcbot/visa/TcBotTriggerAndSignOffService.java
 
b/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/tcbot/visa/TcBotTriggerAndSignOffService.java
index 6ca04b3..89c0241 100644
--- 
a/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/tcbot/visa/TcBotTriggerAndSignOffService.java
+++ 
b/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/tcbot/visa/TcBotTriggerAndSignOffService.java
@@ -51,6 +51,7 @@ import org.apache.ignite.ci.tcbot.chain.PrChainsProcessor;
 import org.apache.ignite.ci.tcbot.conf.IGitHubConfig;
 import org.apache.ignite.ci.tcbot.conf.IJiraServerConfig;
 import org.apache.ignite.ci.tcbot.conf.ITcBotConfig;
+import org.apache.ignite.ci.tcbot.conf.ITcServerConfig;
 import org.apache.ignite.ci.tcmodel.mute.MuteInfo;
 import org.apache.ignite.ci.tcmodel.result.Build;
 import org.apache.ignite.ci.teamcity.ignited.BuildRefCompacted;
@@ -81,7 +82,6 @@ import static 
org.apache.ignite.ci.observer.BuildsInfo.CANCELLED_STATUS;
 import static org.apache.ignite.ci.observer.BuildsInfo.FINISHED_STATUS;
 import static org.apache.ignite.ci.observer.BuildsInfo.RUNNING_STATUS;
 import static org.apache.ignite.ci.util.XmlUtil.xmlEscapeText;
-import static 
org.apache.ignite.ci.web.rest.parms.FullQueryParams.DEFAULT_TRACKED_BRANCH_NAME;
 
 /**
  * TC Bot Visa Facade. Provides method for TC Bot Visa obtaining. Contains 
features for adding comment to the ticket
@@ -363,14 +363,14 @@ public class TcBotTriggerAndSignOffService {
     }
 
     /**
-     * @param srvId Server id.
+     * @param srvIdOrAlias Server id.
      * @param credsProv Credentials
      */
-    public List<ContributionToCheck> getContributionsToCheck(String srvId,
+    public List<ContributionToCheck> getContributionsToCheck(String 
srvIdOrAlias,
         ICredentialsProv credsProv) {
-        IJiraIgnited jiraIntegration = jiraIgnProv.server(srvId);
+        IJiraIgnited jiraIntegration = jiraIgnProv.server(srvIdOrAlias);
 
-        IGitHubConnIgnited gitHubConnIgnited = 
gitHubConnIgnitedProvider.server(srvId);
+        IGitHubConnIgnited gitHubConnIgnited = 
gitHubConnIgnitedProvider.server(srvIdOrAlias);
         List<PullRequest> requests = gitHubConnIgnited.getPullRequests();
         if (requests == null)
             return null;
@@ -408,7 +408,7 @@ public class TcBotTriggerAndSignOffService {
             return check;
         }).collect(Collectors.toList());
 
-        ITeamcityIgnited tcIgn = tcIgnitedProv.server(srvId, credsProv);
+        ITeamcityIgnited tcIgn = tcIgnitedProv.server(srvIdOrAlias, credsProv);
 
         paTickets.forEach(ticket -> {
             String branch = ticketMatcher.resolveTcBranchForPrLess(ticket,
@@ -418,7 +418,7 @@ public class TcBotTriggerAndSignOffService {
             if (Strings.isNullOrEmpty(branch))
                 return; // nothing to do if branch was not resolved
 
-            String defBtForMaster = 
findDefaultBranchBuildType(tcIgn.serverId());
+            String defBtForMaster = findDefaultBuildType(srvIdOrAlias);
 
             if (tcIgn.getAllBuildsCompacted(defBtForMaster, branch).isEmpty())
                 return; //Skipping contributions without builds
@@ -533,7 +533,27 @@ public class TcBotTriggerAndSignOffService {
 
         IGitHubConnIgnited ghConn = gitHubConnIgnitedProvider.server(srvId);
 
-        String defBtForMaster = 
findDefaultBranchBuildType(teamcity.serverId());
+        List<String> compositeBuildTypeIds = findApplicableBuildTypes(srvId, 
teamcity);
+
+        for (String btId : compositeBuildTypeIds) {
+            List<BuildRefCompacted> compBuilds = findBuildsForPr(btId, prId, 
ghConn, teamcity);
+
+            statuses.add(compBuilds.isEmpty()
+                ? new ContributionCheckStatus(btId, branchForTcDefault(prId, 
ghConn))
+                : contributionStatus(srvId, btId, compBuilds, teamcity, 
ghConn, prId));
+        }
+
+        return statuses;
+    }
+
+    /**
+     *
+     * @param srvIdOrAlias TC server ID or reference to it.
+     * @param teamcity Teamcity.
+     * @return list of build types which may be taken for
+     */
+    public List<String> findApplicableBuildTypes(String srvIdOrAlias, 
ITeamcityIgnited teamcity) {
+        String defBtForMaster = findDefaultBuildType(srvIdOrAlias);
 
         BuildTypeCompacted buildType = Strings.isNullOrEmpty(defBtForMaster)
             ? null
@@ -557,26 +577,26 @@ public class TcBotTriggerAndSignOffService {
             if (!Strings.isNullOrEmpty(defBtForMaster))
                 compositeBuildTypeIds.add(defBtForMaster);
         }
-
-        for (String btId : compositeBuildTypeIds) {
-            List<BuildRefCompacted> compBuilds = findBuildsForPr(btId, prId, 
ghConn, teamcity);
-
-            statuses.add(compBuilds.isEmpty()
-                ? new ContributionCheckStatus(btId, branchForTcDefault(prId, 
ghConn))
-                : contributionStatus(srvId, btId, compBuilds, teamcity, 
ghConn, prId));
-        }
-
-        return statuses;
+        return compositeBuildTypeIds;
     }
 
-    @NotNull public String findDefaultBranchBuildType(String srvId) {
+    /**
+     * @param srvIdOrAlias Server id. May be weak reference to TC
+     * @return Some build type included into tracked branches with default 
branch.
+     */
+    @NotNull public String findDefaultBuildType(String srvIdOrAlias) {
         StringBuilder buildTypeId = new StringBuilder();
 
+        ITcServerConfig tcCfg = cfg.getTeamcityConfig(srvIdOrAlias);
+        String trBranch = tcCfg.defaultTrackedBranch();
+
+        String realTcId = Strings.isNullOrEmpty(tcCfg.reference()) ? 
srvIdOrAlias : tcCfg.reference();
+
         cfg.getTrackedBranches()
-            .get(DEFAULT_TRACKED_BRANCH_NAME)
+            .get(trBranch)
             .ifPresent(
                 b -> b.getChainsStream()
-                    .filter(c -> Objects.equals(srvId, c.serverId))
+                    .filter(c -> Objects.equals(realTcId, c.serverId))
                     .filter(c -> c.branchForRest.equals(ITeamcity.DEFAULT))
                     .findFirst()
                     .ifPresent(ch -> buildTypeId.append(ch.suiteId)));
diff --git 
a/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/web/rest/parms/FullQueryParams.java
 
b/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/web/rest/parms/FullQueryParams.java
index 323691b..11d0b56 100644
--- 
a/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/web/rest/parms/FullQueryParams.java
+++ 
b/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/web/rest/parms/FullQueryParams.java
@@ -27,7 +27,6 @@ import org.jetbrains.annotations.Nullable;
  * Contains maximum combination of query parameters
  */
 public class FullQueryParams {
-    public static final String DEFAULT_TRACKED_BRANCH_NAME = "master";
 
     //see definitions in Index.html javascript
     public static final String HISTORY = "History";

Reply via email to