You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ignite.apache.org by dp...@apache.org on 2019/01/14 15:03:33 UTC

[ignite-teamcity-bot] branch ignite-10930 created (now 929be75)

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

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


      at 929be75  IGNITE-10930: PR less contributions detections development started: First of all find out PA tickets

This branch includes the following new commits:

     new 929be75  IGNITE-10930: PR less contributions detections development started: First of all find out PA tickets

The 1 revisions listed above as "new" are entirely new to this
repository and will be described in separate emails.  The revisions
listed as "add" were already present in the repository and have only
been added to this reference.



[ignite-teamcity-bot] 01/01: IGNITE-10930: PR less contributions detections development started: First of all find out PA tickets

Posted by dp...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

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

commit 929be752d4925318158ddc43d022aacb0872cf10
Author: Dmitriy Pavlov <dp...@apache.org>
AuthorDate: Mon Jan 14 18:03:30 2019 +0300

    IGNITE-10930: PR less contributions detections development started: First of all find out PA tickets
---
 .../main/java/org/apache/ignite/ci/TcHelper.java   |  2 +-
 .../java/org/apache/ignite/ci/jira/Fields.java     |  9 +++++++
 .../main/java/org/apache/ignite/ci/jira/Jira.java  |  1 +
 .../ignite/ci/jira/JiraIntegrationModule.java      |  2 ++
 .../ignite/ci/jira/JiraIntegrationProvider.java    |  2 ++
 .../java/org/apache/ignite/ci/jira/Status.java     |  7 +++++
 .../java/org/apache/ignite/ci/jira/Ticket.java     | 17 +++++++++---
 .../java/org/apache/ignite/ci/jira/Tickets.java    |  1 +
 .../ignite/ci/jira/ignited/JiraTicketDao.java      |  8 +++---
 .../ignite/ci/jira/ignited/JiraTicketSync.java     |  8 +++---
 .../ignite/ci/jira/ignited/TicketCompacted.java    |  1 +
 .../ci/jira/{ => pure}/IJiraIntegration.java       |  7 ++---
 .../jira/{ => pure}/IJiraIntegrationProvider.java  |  2 +-
 .../apache/ignite/ci/observer/ObserverTask.java    |  4 +--
 .../ignite/ci/tcbot/chain/PrChainsProcessor.java   |  4 +--
 .../ci/tcbot/visa/ContributionCheckStatus.java     |  7 ++++-
 .../ignite/ci/tcbot/visa/ContributionToCheck.java  |  5 ++--
 .../tcbot/visa/TcBotTriggerAndSignOffService.java  | 31 +++++++++++++++-------
 .../java/org/apache/ignite/ci/web/model/Visa.java  |  2 +-
 .../model/current/ChainAtServerCurrentStatus.java  |  2 +-
 .../ignite/ci/web/rest/visa/TcBotVisaService.java  |  7 +++--
 .../ci/tcbot/chain/MockBasedTcBotModule.java       |  4 +--
 .../ignited/IgnitedTcInMemoryIntegrationTest.java  |  2 +-
 23 files changed, 96 insertions(+), 39 deletions(-)

diff --git a/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/TcHelper.java b/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/TcHelper.java
index cbd550b..5640139 100644
--- a/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/TcHelper.java
+++ b/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/TcHelper.java
@@ -26,7 +26,7 @@ import javax.inject.Inject;
 import org.apache.ignite.ci.jira.Tickets;
 import org.apache.ignite.ci.tcbot.issue.IssueDetector;
 import org.apache.ignite.ci.issue.IssuesStorage;
-import org.apache.ignite.ci.jira.IJiraIntegration;
+import org.apache.ignite.ci.jira.pure.IJiraIntegration;
 import org.apache.ignite.ci.tcbot.chain.PrChainsProcessor;
 import org.apache.ignite.ci.tcmodel.result.Build;
 import org.apache.ignite.ci.teamcity.ignited.IStringCompactor;
diff --git a/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/jira/Fields.java b/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/jira/Fields.java
index f9aa8e9..2f6e271 100644
--- a/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/jira/Fields.java
+++ b/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/jira/Fields.java
@@ -17,10 +17,19 @@
 
 package org.apache.ignite.ci.jira;
 
+import com.google.common.base.MoreObjects;
+
 /**
  *
  */
 public class Fields {
     /** Ticket status. */
     public Status status;
+
+    /** {@inheritDoc} */
+    @Override public String toString() {
+        return MoreObjects.toStringHelper(this)
+            .add("status", status)
+            .toString();
+    }
 }
\ No newline at end of file
diff --git a/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/jira/Jira.java b/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/jira/Jira.java
index b413193..879cbe1 100644
--- a/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/jira/Jira.java
+++ b/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/jira/Jira.java
@@ -23,6 +23,7 @@ import java.util.Properties;
 import javax.inject.Inject;
 import org.apache.ignite.ci.HelperConfig;
 import org.apache.ignite.ci.ITcHelper;
+import org.apache.ignite.ci.jira.pure.IJiraIntegration;
 import org.apache.ignite.ci.user.ICredentialsProv;
 import org.apache.ignite.ci.web.model.Visa;
 import org.jetbrains.annotations.NotNull;
diff --git a/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/jira/JiraIntegrationModule.java b/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/jira/JiraIntegrationModule.java
index a4b6bfc..48a0689 100644
--- a/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/jira/JiraIntegrationModule.java
+++ b/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/jira/JiraIntegrationModule.java
@@ -19,6 +19,8 @@ package org.apache.ignite.ci.jira;
 
 import com.google.inject.AbstractModule;
 import com.google.inject.internal.SingletonScope;
+import org.apache.ignite.ci.jira.pure.IJiraIntegration;
+import org.apache.ignite.ci.jira.pure.IJiraIntegrationProvider;
 
 /**
  *
diff --git a/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/jira/JiraIntegrationProvider.java b/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/jira/JiraIntegrationProvider.java
index 62a6618..0c50d93 100644
--- a/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/jira/JiraIntegrationProvider.java
+++ b/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/jira/JiraIntegrationProvider.java
@@ -24,6 +24,8 @@ import com.google.inject.Provider;
 import java.util.concurrent.ExecutionException;
 import java.util.concurrent.TimeUnit;
 import javax.inject.Inject;
+import org.apache.ignite.ci.jira.pure.IJiraIntegration;
+import org.apache.ignite.ci.jira.pure.IJiraIntegrationProvider;
 import org.apache.ignite.ci.util.ExceptionUtil;
 
 /**
diff --git a/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/jira/Status.java b/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/jira/Status.java
index 62ceeb3..79faa68 100644
--- a/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/jira/Status.java
+++ b/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/jira/Status.java
@@ -17,6 +17,8 @@
 
 package org.apache.ignite.ci.jira;
 
+import com.google.common.base.MoreObjects;
+
 /**
  * Status for Jira ticket.
  */
@@ -30,4 +32,9 @@ public class Status {
     public Status(String name) {
         this.name = name;
     }
+
+    /** {@inheritDoc} */
+    @Override public String toString() {
+        return name;
+    }
 }
\ No newline at end of file
diff --git a/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/jira/Ticket.java b/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/jira/Ticket.java
index 5160471..10221cc 100644
--- a/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/jira/Ticket.java
+++ b/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/jira/Ticket.java
@@ -17,6 +17,8 @@
 
 package org.apache.ignite.ci.jira;
 
+import com.google.common.base.MoreObjects;
+
 /**
  * See example of GSON here
  * https://issues.apache.org/jira/rest/api/2/issue/IGNITE-123
@@ -32,11 +34,11 @@ public class Ticket {
     public Fields fields;
 
     /**
-     * @param ticketTemplate Ticket name template.
+     * @param ticketPrefix Ticket name fixed prefix.
      * @return Ignite id (like 123 in IGNITE-123).
      */
-    public int igniteId(String ticketTemplate) {
-        return Integer.valueOf(key.substring(ticketTemplate.length()));
+    public int igniteId(String ticketPrefix) {
+        return Integer.valueOf(key.substring(ticketPrefix.length()));
     }
 
     /**
@@ -45,4 +47,13 @@ public class Ticket {
     public String status() {
         return fields.status.name;
     }
+
+    /** {@inheritDoc} */
+    @Override public String toString() {
+        return MoreObjects.toStringHelper(this)
+            .add("id", id)
+            .add("key", key)
+            .add("fields", fields)
+            .toString();
+    }
 }
\ No newline at end of file
diff --git a/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/jira/Tickets.java b/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/jira/Tickets.java
index f265b37..930a1bf 100644
--- a/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/jira/Tickets.java
+++ b/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/jira/Tickets.java
@@ -24,6 +24,7 @@ import java.util.Collections;
  * See example of GSON here
  * https://issues.apache.org/jira/rest/api/2/search?jql=project%20=%20IGNITE%20order%20by%20updated%20DESC&fields=status
  */
+@SuppressWarnings("PublicField")
 public class Tickets {
     /** Start at. */
     public int startAt;
diff --git a/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/jira/ignited/JiraTicketDao.java b/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/jira/ignited/JiraTicketDao.java
index ee3bb30..dbc9d32 100644
--- a/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/jira/ignited/JiraTicketDao.java
+++ b/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/jira/ignited/JiraTicketDao.java
@@ -91,10 +91,10 @@ public class JiraTicketDao {
      *
      * @param srvIdMaskHigh Server id mask high.
      * @param chunk Chunk.
-     * @param ticketTemplate Ticket name template.
+     * @param ticketPrefix Ticket name template.
      */
     @AutoProfiling
-    public void saveChunk(int srvIdMaskHigh, Collection<Ticket> chunk, String ticketTemplate) {
+    public void saveChunk(int srvIdMaskHigh, Collection<Ticket> chunk, String ticketPrefix) {
         Preconditions.checkNotNull(jiraCache, "init() was not called");
 
         if (F.isEmpty(chunk))
@@ -103,8 +103,8 @@ public class JiraTicketDao {
         HashMap<Long, TicketCompacted> compactedTickets = new HashMap<>(U.capacity(chunk.size()));
 
         for (Ticket ticket : chunk) {
-            long key = ticketToCacheKey(srvIdMaskHigh, ticket.igniteId(ticketTemplate));
-            TicketCompacted val = new TicketCompacted(ticket, compactor, ticketTemplate);
+            long key = ticketToCacheKey(srvIdMaskHigh, ticket.igniteId(ticketPrefix));
+            TicketCompacted val = new TicketCompacted(ticket, compactor, ticketPrefix);
 
             compactedTickets.put(key, val);
         }
diff --git a/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/jira/ignited/JiraTicketSync.java b/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/jira/ignited/JiraTicketSync.java
index b7fbfd7..ca78d63 100644
--- a/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/jira/ignited/JiraTicketSync.java
+++ b/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/jira/ignited/JiraTicketSync.java
@@ -22,8 +22,8 @@ import java.util.concurrent.TimeUnit;
 import javax.inject.Inject;
 import org.apache.ignite.ci.di.MonitoredTask;
 import org.apache.ignite.ci.di.scheduler.IScheduler;
-import org.apache.ignite.ci.jira.IJiraIntegration;
-import org.apache.ignite.ci.jira.IJiraIntegrationProvider;
+import org.apache.ignite.ci.jira.pure.IJiraIntegration;
+import org.apache.ignite.ci.jira.pure.IJiraIntegrationProvider;
 import org.apache.ignite.ci.jira.Ticket;
 import org.apache.ignite.ci.jira.Tickets;
 import org.apache.ignite.ci.teamcity.pure.ITeamcityConn;
@@ -31,7 +31,7 @@ import org.apache.ignite.ci.user.ICredentialsProv;
 import org.apache.ignite.internal.util.typedef.F;
 
 /**
- * 
+ * Sync serving requests for all JIRA servers.
  */
 public class JiraTicketSync {
     /** Scheduler. */
@@ -59,7 +59,7 @@ public class JiraTicketSync {
      * @param creds Credentials.
      */
     @MonitoredTask(name = "Actualize Jira", nameExtArgsIndexes = {0})
-    private String actualizeJiraTickets(int srvIdMaskHigh, ITeamcityConn conn, ICredentialsProv creds) {
+    protected String actualizeJiraTickets(int srvIdMaskHigh, ITeamcityConn conn, ICredentialsProv creds) {
         String srvId = conn.serverId();
         IJiraIntegration jira = jiraIntegrationProvider.server(srvId);
         String url = "search?jql=project%20=%20IGNITE%20order%20by%20updated%20DESC&fields=status&maxResults=100";
diff --git a/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/jira/ignited/TicketCompacted.java b/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/jira/ignited/TicketCompacted.java
index 094ae6e..6391d31 100644
--- a/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/jira/ignited/TicketCompacted.java
+++ b/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/jira/ignited/TicketCompacted.java
@@ -52,6 +52,7 @@ public class TicketCompacted {
     public Ticket toTicket(IStringCompactor comp) {
         Ticket ticket = new Ticket();
 
+        //todo take prefix from outside
         ticket.id = id;
         ticket.key = "IGNITE-" + igniteId;
         ticket.fields = new Fields();
diff --git a/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/jira/IJiraIntegration.java b/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/jira/pure/IJiraIntegration.java
similarity index 92%
rename from ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/jira/IJiraIntegration.java
rename to ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/jira/pure/IJiraIntegration.java
index c66a736..ef55cc6 100644
--- a/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/jira/IJiraIntegration.java
+++ b/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/jira/pure/IJiraIntegration.java
@@ -15,8 +15,9 @@
  * limitations under the License.
  */
 
-package org.apache.ignite.ci.jira;
+package org.apache.ignite.ci.jira.pure;
 
+import org.apache.ignite.ci.jira.Tickets;
 import org.apache.ignite.ci.web.model.Visa;
 import org.apache.ignite.ci.user.ICredentialsProv;
 import org.jetbrains.annotations.NotNull;
@@ -48,10 +49,10 @@ public interface IJiraIntegration {
      *
      * @param srvId Server id.
      * @param prov Prov.
-     * @param ticketId Ticket id.
+     * @param url Ticket id.
      * @return Jira tickets.
      */
-    public Tickets getTickets(String srvId, ICredentialsProv prov, String ticketId);
+    public Tickets getTickets(@Deprecated String srvId, ICredentialsProv prov, String url);
 
     /** */
     public String jiraUrl();
diff --git a/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/jira/IJiraIntegrationProvider.java b/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/jira/pure/IJiraIntegrationProvider.java
similarity index 95%
rename from ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/jira/IJiraIntegrationProvider.java
rename to ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/jira/pure/IJiraIntegrationProvider.java
index 095379b..984233b 100644
--- a/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/jira/IJiraIntegrationProvider.java
+++ b/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/jira/pure/IJiraIntegrationProvider.java
@@ -15,7 +15,7 @@
  * limitations under the License.
  */
 
-package org.apache.ignite.ci.jira;
+package org.apache.ignite.ci.jira.pure;
 
 /**
  *
diff --git a/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/observer/ObserverTask.java b/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/observer/ObserverTask.java
index f3a5197..cd7cdc9 100644
--- a/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/observer/ObserverTask.java
+++ b/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/observer/ObserverTask.java
@@ -30,8 +30,8 @@ import javax.inject.Inject;
 import org.apache.ignite.ci.ITcHelper;
 import org.apache.ignite.ci.di.AutoProfiling;
 import org.apache.ignite.ci.di.MonitoredTask;
-import org.apache.ignite.ci.jira.IJiraIntegration;
-import org.apache.ignite.ci.jira.IJiraIntegrationProvider;
+import org.apache.ignite.ci.jira.pure.IJiraIntegration;
+import org.apache.ignite.ci.jira.pure.IJiraIntegrationProvider;
 import org.apache.ignite.ci.teamcity.ignited.IStringCompactor;
 import org.apache.ignite.ci.teamcity.ignited.ITeamcityIgnited;
 import org.apache.ignite.ci.teamcity.ignited.ITeamcityIgnitedProvider;
diff --git a/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/tcbot/chain/PrChainsProcessor.java b/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/tcbot/chain/PrChainsProcessor.java
index f981abd..a4f5d69 100644
--- a/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/tcbot/chain/PrChainsProcessor.java
+++ b/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/tcbot/chain/PrChainsProcessor.java
@@ -24,8 +24,8 @@ import org.apache.ignite.ci.IAnalyticsEnabledTeamcity;
 import org.apache.ignite.ci.analysis.MultBuildRunCtx;
 import org.apache.ignite.ci.github.ignited.IGitHubConnIgnited;
 import org.apache.ignite.ci.github.ignited.IGitHubConnIgnitedProvider;
-import org.apache.ignite.ci.jira.IJiraIntegration;
-import org.apache.ignite.ci.jira.IJiraIntegrationProvider;
+import org.apache.ignite.ci.jira.pure.IJiraIntegration;
+import org.apache.ignite.ci.jira.pure.IJiraIntegrationProvider;
 import org.apache.ignite.ci.tcmodel.result.problems.ProblemOccurrence;
 import org.apache.ignite.ci.teamcity.ignited.ITeamcityIgnited;
 import org.apache.ignite.ci.teamcity.ignited.ITeamcityIgnitedProvider;
diff --git a/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/tcbot/visa/ContributionCheckStatus.java b/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/tcbot/visa/ContributionCheckStatus.java
index a710870..ba7e027 100644
--- a/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/tcbot/visa/ContributionCheckStatus.java
+++ b/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/tcbot/visa/ContributionCheckStatus.java
@@ -20,10 +20,14 @@ import java.util.LinkedList;
 import java.util.List;
 
 /**
- * Status of contribution check details returned from server
+ * Status of contribution check details returned from server. UI model for displaying detailed {@link
+ * ContributionToCheck} status.
  */
 @SuppressWarnings("PublicField") public class ContributionCheckStatus {
+    /** Queued builds. */
     public int queuedBuilds;
+
+    /** Running builds. */
     public int runningBuilds;
 
     /** Suite id. */
@@ -41,6 +45,7 @@ import java.util.List;
     /** Observations status: Filled if build observer has something sheduled related to {@link #resolvedBranch} */
     public String observationsStatus;
 
+    /** Web links to queued suites. */
     public List<String> webLinksQueuedSuites = new LinkedList<>();
 
     public ContributionCheckStatus() {
diff --git a/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/tcbot/visa/ContributionToCheck.java b/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/tcbot/visa/ContributionToCheck.java
index 1a2a308..6238b23 100644
--- a/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/tcbot/visa/ContributionToCheck.java
+++ b/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/tcbot/visa/ContributionToCheck.java
@@ -17,10 +17,11 @@
 package org.apache.ignite.ci.tcbot.visa;
 
 /**
- *
+ * Short version of contribution status.
+ * Full version is placed in {@link ContributionCheckStatus}.
  */
 @SuppressWarnings("PublicField") public class ContributionToCheck {
-    /** Pr number. */
+    /** Pr number. Positive value implies PR number, negative value is for JIRA ticket for PR-less contributions. */
     public Integer prNumber;
 
     /** Pr title. */
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 1ed9dfd..2921b29 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
@@ -41,10 +41,9 @@ import org.apache.ignite.ci.github.GitHubUser;
 import org.apache.ignite.ci.github.PullRequest;
 import org.apache.ignite.ci.github.ignited.IGitHubConnIgnited;
 import org.apache.ignite.ci.github.ignited.IGitHubConnIgnitedProvider;
-import org.apache.ignite.ci.github.pure.IGitHubConnection;
-import org.apache.ignite.ci.github.pure.IGitHubConnectionProvider;
-import org.apache.ignite.ci.jira.IJiraIntegration;
-import org.apache.ignite.ci.jira.IJiraIntegrationProvider;
+import org.apache.ignite.ci.jira.Tickets;
+import org.apache.ignite.ci.jira.pure.IJiraIntegration;
+import org.apache.ignite.ci.jira.pure.IJiraIntegrationProvider;
 import org.apache.ignite.ci.observer.BuildObserver;
 import org.apache.ignite.ci.observer.BuildsInfo;
 import org.apache.ignite.ci.tcbot.chain.PrChainsProcessor;
@@ -87,9 +86,6 @@ public class TcBotTriggerAndSignOffService {
     /** Build observer provider. */
     @Inject Provider<BuildObserver> buildObserverProvider;
 
-    /** GitHub (pure) HTTP connection provider. */
-    @Inject IGitHubConnectionProvider gitHubConnProvider;
-
     /** GitHub connection ignited provider. */
     @Inject IGitHubConnIgnitedProvider gitHubConnIgnitedProvider;
 
@@ -367,15 +363,28 @@ public class TcBotTriggerAndSignOffService {
 
     /**
      * @param srvId Server id.
+     * @param credsProv Credentials
      */
-    public List<ContributionToCheck> getContributionsToCheck(String srvId) {
+    public List<ContributionToCheck> getContributionsToCheck(String srvId,
+        ICredentialsProv credsProv) {
         IJiraIntegration jiraIntegration = jiraIntegrationProvider.server(srvId);
 
         List<PullRequest> requests = gitHubConnIgnitedProvider.server(srvId).getPullRequests();
         if (requests == null)
             return null;
 
-        return requests.stream().map(pr -> {
+        ITeamcityIgnited tcIgn = tcIgnitedProv.server(srvId, credsProv);
+
+        String prj = jiraIntegration.ticketPrefix().replaceAll("-", "");
+        String url = "search?jql=project=" +
+            prj +
+            "%20order%20by%20updated%20DESC&fields=status&maxResults=100";
+        Tickets tickets = jiraIntegration.getTickets(srvId, credsProv, url);
+        System.out.println("srvId="+srvId + " tickets " + tickets.issues);
+
+        //todo JIRA ignited
+
+        List<ContributionToCheck> contribsList = requests.stream().map(pr -> {
             ContributionToCheck check = new ContributionToCheck();
             check.prNumber = pr.getNumber();
             check.prTitle = pr.getTitle();
@@ -396,6 +405,10 @@ public class TcBotTriggerAndSignOffService {
 
             return check;
         }).collect(Collectors.toList());
+
+
+
+        return contribsList;
     }
 
     @Nonnull private List<BuildRefCompacted> findBuildsForPr(String suiteId, String prId,
diff --git a/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/web/model/Visa.java b/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/web/model/Visa.java
index 5c694cc..2175d2a 100644
--- a/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/web/model/Visa.java
+++ b/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/web/model/Visa.java
@@ -17,7 +17,7 @@
 
 package org.apache.ignite.ci.web.model;
 
-import org.apache.ignite.ci.jira.IJiraIntegration;
+import org.apache.ignite.ci.jira.pure.IJiraIntegration;
 import org.jetbrains.annotations.Nullable;
 
 /**
diff --git a/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/web/model/current/ChainAtServerCurrentStatus.java b/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/web/model/current/ChainAtServerCurrentStatus.java
index b1d10ff..b75cc30 100644
--- a/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/web/model/current/ChainAtServerCurrentStatus.java
+++ b/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/web/model/current/ChainAtServerCurrentStatus.java
@@ -33,7 +33,7 @@ import org.apache.ignite.ci.analysis.MultBuildRunCtx;
 import org.apache.ignite.ci.github.PullRequest;
 import org.apache.ignite.ci.github.ignited.IGitHubConnIgnited;
 import org.apache.ignite.ci.github.pure.IGitHubConnection;
-import org.apache.ignite.ci.jira.IJiraIntegration;
+import org.apache.ignite.ci.jira.pure.IJiraIntegration;
 import org.apache.ignite.ci.tcbot.visa.TcBotTriggerAndSignOffService;
 import org.apache.ignite.ci.tcmodel.conf.BuildType;
 import org.apache.ignite.ci.analysis.TestInBranch;
diff --git a/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/web/rest/visa/TcBotVisaService.java b/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/web/rest/visa/TcBotVisaService.java
index 3ce734c..241d2f7 100644
--- a/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/web/rest/visa/TcBotVisaService.java
+++ b/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/web/rest/visa/TcBotVisaService.java
@@ -75,15 +75,18 @@ public class TcBotVisaService {
 
     /**
      * @param srvId Server id.
+     * @return Contribution list for PRs and branches can be checked by TC bot.
      */
     @GET
     @Path("contributions")
     public List<ContributionToCheck> contributions(@Nullable @QueryParam("serverId") String srvId) {
-        if (!ICredentialsProv.get(req).hasAccess(srvId))
+        ICredentialsProv credsProv = ICredentialsProv.get(req);
+
+        if (!credsProv.hasAccess(srvId))
             throw ServiceUnauthorizedException.noCreds(srvId);
 
         return CtxListener.getInjector(ctx)
-            .getInstance(TcBotTriggerAndSignOffService.class).getContributionsToCheck(srvId);
+            .getInstance(TcBotTriggerAndSignOffService.class).getContributionsToCheck(srvId, credsProv);
     }
 
     @GET
diff --git a/ignite-tc-helper-web/src/test/java/org/apache/ignite/ci/tcbot/chain/MockBasedTcBotModule.java b/ignite-tc-helper-web/src/test/java/org/apache/ignite/ci/tcbot/chain/MockBasedTcBotModule.java
index 26c9340..4fa11cd 100644
--- a/ignite-tc-helper-web/src/test/java/org/apache/ignite/ci/tcbot/chain/MockBasedTcBotModule.java
+++ b/ignite-tc-helper-web/src/test/java/org/apache/ignite/ci/tcbot/chain/MockBasedTcBotModule.java
@@ -26,8 +26,8 @@ import org.apache.ignite.ci.github.ignited.IGitHubConnIgnited;
 import org.apache.ignite.ci.github.ignited.IGitHubConnIgnitedProvider;
 import org.apache.ignite.ci.github.pure.IGitHubConnection;
 import org.apache.ignite.ci.github.pure.IGitHubConnectionProvider;
-import org.apache.ignite.ci.jira.IJiraIntegration;
-import org.apache.ignite.ci.jira.IJiraIntegrationProvider;
+import org.apache.ignite.ci.jira.pure.IJiraIntegration;
+import org.apache.ignite.ci.jira.pure.IJiraIntegrationProvider;
 import org.apache.ignite.ci.tcbot.conf.ITcBotConfig;
 import org.apache.ignite.ci.tcbot.issue.IIssuesStorage;
 import org.apache.ignite.ci.tcbot.user.IUserStorage;
diff --git a/ignite-tc-helper-web/src/test/java/org/apache/ignite/ci/teamcity/ignited/IgnitedTcInMemoryIntegrationTest.java b/ignite-tc-helper-web/src/test/java/org/apache/ignite/ci/teamcity/ignited/IgnitedTcInMemoryIntegrationTest.java
index 357adb6..e768ceb 100644
--- a/ignite-tc-helper-web/src/test/java/org/apache/ignite/ci/teamcity/ignited/IgnitedTcInMemoryIntegrationTest.java
+++ b/ignite-tc-helper-web/src/test/java/org/apache/ignite/ci/teamcity/ignited/IgnitedTcInMemoryIntegrationTest.java
@@ -46,7 +46,7 @@ import org.apache.ignite.ci.analysis.TestInBranch;
 import org.apache.ignite.ci.db.TcHelperDb;
 import org.apache.ignite.ci.di.scheduler.DirectExecNoWaitScheduler;
 import org.apache.ignite.ci.di.scheduler.IScheduler;
-import org.apache.ignite.ci.jira.IJiraIntegrationProvider;
+import org.apache.ignite.ci.jira.pure.IJiraIntegrationProvider;
 import org.apache.ignite.ci.tcbot.chain.PrChainsProcessorTest;
 import org.apache.ignite.ci.tcmodel.changes.ChangesList;
 import org.apache.ignite.ci.tcmodel.conf.BuildType;