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 17:14:39 UTC
[ignite-teamcity-bot] branch ignite-10930 updated: IGNITE-10930:
PR-less contributions: loaded JIRA tickets from the DB
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
The following commit(s) were added to refs/heads/ignite-10930 by this push:
new 8dbba4d IGNITE-10930: PR-less contributions: loaded JIRA tickets from the DB
8dbba4d is described below
commit 8dbba4d7d7b8bfe983a0ac2856aa6028d1a5eb6c
Author: Dmitriy Pavlov <dp...@apache.org>
AuthorDate: Mon Jan 14 20:14:36 2019 +0300
IGNITE-10930: PR-less contributions: loaded JIRA tickets from the DB
---
.../main/java/org/apache/ignite/ci/TcHelper.java | 23 +------
.../org/apache/ignite/ci/di/IgniteTcBotModule.java | 13 ++--
.../ignite/ci/jira/ignited/IJiraIgnited.java | 26 +++++++
.../apache/ignite/ci/jira/ignited/JiraIgnited.java | 60 ++++++++++++++++
.../ignite/ci/jira/ignited/JiraIgnitedModule.java | 2 +
.../ignite/ci/jira/ignited/JiraTicketSync.java | 32 ++++-----
.../ignite/ci/jira/pure/IJiraIntegration.java | 38 ++++++----
.../java/org/apache/ignite/ci/jira/pure/Jira.java | 20 ++----
.../tcbot/visa/TcBotTriggerAndSignOffService.java | 80 ++++++++++++++++------
.../ci/teamcity/ignited/TeamcityIgnitedImpl.java | 37 ----------
.../java/org/apache/ignite/ci/web/model/Visa.java | 6 +-
11 files changed, 205 insertions(+), 132 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 459a669..a1e275d 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
@@ -17,36 +17,15 @@
package org.apache.ignite.ci;
-import com.fasterxml.jackson.databind.ObjectMapper;
-import com.google.gson.Gson;
-import java.util.List;
import java.util.Objects;
import java.util.concurrent.atomic.AtomicBoolean;
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.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;
-import org.apache.ignite.ci.teamcity.ignited.ITeamcityIgnited;
-import org.apache.ignite.ci.teamcity.ignited.ITeamcityIgnitedProvider;
-import org.apache.ignite.ci.teamcity.ignited.buildtype.BuildTypeRefCompacted;
-import org.apache.ignite.ci.teamcity.ignited.fatbuild.FatBuildCompacted;
+import org.apache.ignite.ci.tcbot.issue.IssueDetector;
import org.apache.ignite.ci.teamcity.restcached.ITcServerProvider;
import org.apache.ignite.ci.user.ICredentialsProv;
import org.apache.ignite.ci.user.UserAndSessionsStorage;
-import org.apache.ignite.ci.web.model.JiraCommentResponse;
-import org.apache.ignite.ci.web.model.Visa;
-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.hist.FailureSummary;
import org.jetbrains.annotations.Nullable;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-import static org.apache.ignite.ci.util.XmlUtil.xmlEscapeText;
/**
* TC Bot implementation. To be migrated to smaller injected classes
diff --git a/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/di/IgniteTcBotModule.java b/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/di/IgniteTcBotModule.java
index e58d398..e45db99 100644
--- a/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/di/IgniteTcBotModule.java
+++ b/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/di/IgniteTcBotModule.java
@@ -21,6 +21,10 @@ import com.google.inject.AbstractModule;
import com.google.inject.Injector;
import com.google.inject.internal.SingletonScope;
import com.google.inject.matcher.Matchers;
+import java.util.concurrent.Future;
+import java.util.concurrent.TimeUnit;
+import java.util.concurrent.TimeoutException;
+import javax.inject.Provider;
import org.apache.ignite.Ignite;
import org.apache.ignite.ci.ITcHelper;
import org.apache.ignite.ci.TcHelper;
@@ -28,7 +32,7 @@ import org.apache.ignite.ci.db.Ignite1Init;
import org.apache.ignite.ci.di.cache.GuavaCachedModule;
import org.apache.ignite.ci.di.scheduler.SchedulerModule;
import org.apache.ignite.ci.github.ignited.GitHubIgnitedModule;
-import org.apache.ignite.ci.jira.pure.JiraIntegrationModule;
+import org.apache.ignite.ci.jira.ignited.JiraIgnitedModule;
import org.apache.ignite.ci.observer.BuildObserver;
import org.apache.ignite.ci.observer.ObserverTask;
import org.apache.ignite.ci.tcbot.TcBotBusinessServicesModule;
@@ -40,11 +44,6 @@ import org.apache.ignite.ci.web.TcUpdatePool;
import org.apache.ignite.ci.web.model.hist.VisasHistoryStorage;
import org.apache.ignite.ci.web.rest.exception.ServiceStartingException;
-import javax.inject.Provider;
-import java.util.concurrent.Future;
-import java.util.concurrent.TimeUnit;
-import java.util.concurrent.TimeoutException;
-
/**
*
*/
@@ -81,7 +80,7 @@ public class IgniteTcBotModule extends AbstractModule {
bind(BackgroundUpdater.class).in(new SingletonScope());
install(new TeamcityIgnitedModule());
- install(new JiraIntegrationModule());
+ install(new JiraIgnitedModule());
install(new GitHubIgnitedModule());
install(new SchedulerModule());
install(new TcBotBusinessServicesModule());
diff --git a/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/jira/ignited/IJiraIgnited.java b/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/jira/ignited/IJiraIgnited.java
index 50933aa..17b80a8 100644
--- a/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/jira/ignited/IJiraIgnited.java
+++ b/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/jira/ignited/IJiraIgnited.java
@@ -16,8 +16,34 @@
*/
package org.apache.ignite.ci.jira.ignited;
+import java.util.Set;
+import org.apache.ignite.ci.jira.Ticket;
+import org.jetbrains.annotations.NotNull;
+
/**
*
*/
public interface IJiraIgnited {
+ @NotNull public String ticketPrefix();
+
+ @NotNull public String projectName();
+
+
+ /**
+ * @return Jira tickets.
+ */
+ public Set<Ticket> getTickets();
+
+ /**
+ * @param ticketFullName Ticket full name (e.g IGNITE-8331)
+ * @return URL which is used as link to Jira comment with specified id.
+ */
+ public String generateCommentUrl(String ticketFullName, int commentId);
+
+ /**
+ * @param id Ticket full ID (e.g IGNITE-8331)
+ * @return URL which is used as link to Jira ticket with specified name.
+ */
+ String generateTicketUrl(String id);
+
}
diff --git a/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/jira/ignited/JiraIgnited.java b/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/jira/ignited/JiraIgnited.java
index 47f4e43..a1bb0b1 100644
--- a/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/jira/ignited/JiraIgnited.java
+++ b/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/jira/ignited/JiraIgnited.java
@@ -16,7 +16,14 @@
*/
package org.apache.ignite.ci.jira.ignited;
+import com.google.common.collect.Sets;
+import java.util.Collection;
+import java.util.Set;
+import javax.inject.Inject;
+import org.apache.ignite.ci.jira.Ticket;
import org.apache.ignite.ci.jira.pure.IJiraIntegration;
+import org.apache.ignite.ci.teamcity.ignited.ITeamcityIgnited;
+import org.jetbrains.annotations.NotNull;
/**
*
@@ -25,7 +32,60 @@ class JiraIgnited implements IJiraIgnited {
/** Pure HTTP Jira connection. */
private IJiraIntegration jira;
+ /** Jira ticket DAO. */
+ @Inject private JiraTicketDao jiraTicketDao;
+
+ /** Jira ticket Sync. */
+ @Inject private JiraTicketSync jiraTicketSync;
+
+ /** Server id. */
+ private String srvId;
+
+ /** Server id mask high. */
+ private int srvIdMaskHigh;
+
public void init(IJiraIntegration jira) {
this.jira = jira;
+
+ srvId = jira.getServiceId();
+
+ srvIdMaskHigh = ITeamcityIgnited.serverIdToInt(srvId);
+
+ jiraTicketDao.init();
+ }
+
+ /** {@inheritDoc} */
+ @Override public String ticketPrefix() {
+ return jira.ticketPrefix();
+ }
+
+ /** {@inheritDoc} */
+ @NotNull @Override public String projectName() {
+ return jira.projectName();
+ }
+
+ @Override public Set<Ticket> getTickets() {
+ jiraTicketSync.ensureActualizeJiraTickets(taskName("actualizeJiraTickets"), srvId);
+
+ return jiraTicketDao.getTickets(srvIdMaskHigh);
+ }
+
+ /**
+ * @param taskName Task name.
+ * @return Task name concatenated with server name.
+ */
+ @NotNull
+ private String taskName(String taskName) {
+ return ITeamcityIgnited.class.getSimpleName() + "." + taskName + "." + srvId;
+ }
+
+ /** {@inheritDoc} */
+ @Override public String generateCommentUrl(String ticketFullName, int commentId) {
+ return jira.generateCommentUrl(ticketFullName, commentId);
+ }
+
+ /** {@inheritDoc} */
+ @Override public String generateTicketUrl(String id) {
+ return jira.generateTicketUrl(id);
}
}
diff --git a/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/jira/ignited/JiraIgnitedModule.java b/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/jira/ignited/JiraIgnitedModule.java
index ea354aa..ef237d4 100644
--- a/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/jira/ignited/JiraIgnitedModule.java
+++ b/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/jira/ignited/JiraIgnitedModule.java
@@ -25,6 +25,8 @@ import org.apache.ignite.ci.jira.pure.JiraIntegrationModule;
public class JiraIgnitedModule extends AbstractModule {
/** {@inheritDoc} */
@Override protected void configure() {
+ bind(IJiraIgnitedProvider.class).to(JiraIgnitedProvider.class);
+
install(new JiraIntegrationModule());
}
}
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 ca78d63..b69db1d 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
@@ -26,8 +26,7 @@ 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;
-import org.apache.ignite.ci.user.ICredentialsProv;
+import org.apache.ignite.ci.teamcity.ignited.ITeamcityIgnited;
import org.apache.ignite.internal.util.typedef.F;
/**
@@ -45,25 +44,24 @@ public class JiraTicketSync {
/**
* @param taskName Task name.
- * @param srvIdMaskHigh Server id mask high.
- * @param creds Credentials.
- * @param conn Connection.
+ * @param srvId Server ID
*/
- public void ensureActualizeJiraTickets(String taskName, int srvIdMaskHigh, ICredentialsProv creds, ITeamcityConn conn) {
- scheduler.sheduleNamed(taskName, () -> actualizeJiraTickets(srvIdMaskHigh, conn, creds), 15, TimeUnit.MINUTES);
+ public void ensureActualizeJiraTickets(String taskName, String srvId) {
+ scheduler.sheduleNamed(taskName, () -> actualizeJiraTickets(srvId), 15, TimeUnit.MINUTES);
}
/**
- * @param srvIdMaskHigh Server id mask high.
- * @param conn Connection.
- * @param creds Credentials.
+ * @param srvId Server internal identification.
*/
@MonitoredTask(name = "Actualize Jira", nameExtArgsIndexes = {0})
- protected String actualizeJiraTickets(int srvIdMaskHigh, ITeamcityConn conn, ICredentialsProv creds) {
- String srvId = conn.serverId();
+ protected String actualizeJiraTickets(String srvId) {
+ int srvIdMaskHigh = ITeamcityIgnited.serverIdToInt(srvId);
IJiraIntegration jira = jiraIntegrationProvider.server(srvId);
- String url = "search?jql=project%20=%20IGNITE%20order%20by%20updated%20DESC&fields=status&maxResults=100";
- Tickets tickets = jira.getTickets(srvId, creds, url);
+
+ String projectName = jira.projectName();
+ String baseUrl = "search?jql=project=" + projectName + "%20order%20by%20updated%20DESC&fields=status&maxResults=100";
+ String url = baseUrl;
+ Tickets tickets = jira.getTicketsPage(srvId, url);
Collection<Ticket> page = tickets.issuesNotNull();
if (F.isEmpty(page))
@@ -74,16 +72,16 @@ public class JiraTicketSync {
int ticketsSaved = page.size();
while (tickets.nextStart() > 0) {
- url = "search?jql=project%20=%20IGNITE%20order%20by%20updated%20DESC&fields=status&maxResults=100&startAt=" +
- tickets.nextStart();
+ url = baseUrl + "&startAt=" + tickets.nextStart();
- tickets = jira.getTickets(srvId, creds, url);
+ tickets = jira.getTicketsPage(srvId, url);
page = tickets.issuesNotNull();
if (F.isEmpty(page))
break;
+ //todo find not updated chunk and exit
jiraDao.saveChunk(srvIdMaskHigh, page, jira.ticketPrefix());
ticketsSaved += page.size();
diff --git a/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/jira/pure/IJiraIntegration.java b/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/jira/pure/IJiraIntegration.java
index b068366..95ab3ca 100644
--- a/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/jira/pure/IJiraIntegration.java
+++ b/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/jira/pure/IJiraIntegration.java
@@ -19,16 +19,33 @@ package org.apache.ignite.ci.jira.pure;
import java.io.IOException;
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;
/**
* Reperesents methods to provide interaction with Jira servers.
*/
public interface IJiraIntegration {
- /** Message to show user when JIRA ticket was successfully commented by the Bot. */
- public static String JIRA_COMMENTED = "JIRA commented.";
+
+ /** @return JIRA ticket prefix. */
+ @NotNull public String ticketPrefix();
+
+ /**
+ *
+ */
+ @NotNull public default String projectName() {
+ return ticketPrefix().replaceAll("-", "");
+ }
+
+ /**
+ * @return Internal identified service ID.
+ */
+ public void init(String srvId);
+
+ /**
+ * @return Internal identified service ID.
+ */
+ public String getServiceId();
+
/**
* @param ticket JIRA ticket full name. E.g 'IGNITE-5555'.
@@ -37,27 +54,20 @@ public interface IJiraIntegration {
* @throws IOException If failed to comment JIRA ticket.
* @throws IllegalStateException If can't find URL to the JIRA.
*/
- public String sendJiraComment(String ticket, String comment) throws IOException;
+ public String postJiraComment(String ticket, String comment) throws IOException;
/**
* Produce wrapper for collection of Jira tickets for given server.
*
* @param srvId Server id.
- * @param prov Prov.
- * @param url Ticket id.
+ * @param url Tickets loading URL and parameters.
* @return Jira tickets.
*/
- public Tickets getTickets(@Deprecated String srvId, ICredentialsProv prov, String url);
+ public Tickets getTicketsPage(@Deprecated String srvId, String url);
/** */
public String jiraUrl();
- /** @return JIRA ticket prefix. */
- @NotNull public String ticketPrefix();
-
- /** */
- public void init(String srvId);
-
/**
* @param ticketFullName Ticket full name (e.g IGNITE-8331)
* @return URL which is used as link to Jira ticket with specified name.
diff --git a/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/jira/pure/Jira.java b/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/jira/pure/Jira.java
index d0866dd..e5a006e 100644
--- a/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/jira/pure/Jira.java
+++ b/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/jira/pure/Jira.java
@@ -23,16 +23,10 @@ import com.google.gson.Gson;
import java.io.File;
import java.io.IOException;
import java.util.Properties;
-import javax.inject.Inject;
import org.apache.ignite.ci.HelperConfig;
-import org.apache.ignite.ci.IAnalyticsEnabledTeamcity;
-import org.apache.ignite.ci.ITcHelper;
import org.apache.ignite.ci.di.AutoProfiling;
import org.apache.ignite.ci.jira.Tickets;
-import org.apache.ignite.ci.tcbot.visa.TcBotTriggerAndSignOffService;
-import org.apache.ignite.ci.user.ICredentialsProv;
import org.apache.ignite.ci.util.HttpUtil;
-import org.apache.ignite.ci.web.model.Visa;
import org.jetbrains.annotations.NotNull;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -57,9 +51,11 @@ class Jira implements IJiraIntegration {
/** URL for JIRA integration. */
private String jiraApiUrl;
+ private String srvId;
/** {@inheritDoc} */
@Override public void init(String srvId) {
+ this.srvId = srvId;
final File workDir = HelperConfig.resolveWorkDir();
final String cfgName = HelperConfig.prepareConfigName(srvId);
@@ -90,12 +86,7 @@ class Jira implements IJiraIntegration {
}
/** {@inheritDoc} */
- @Override public Tickets getTickets(String srvId, ICredentialsProv prov, String url) {
- return getJiraTickets(srvId, prov, url);
- }
-
- /** {@inheritDoc} */
- public Tickets getJiraTickets(String srvId, ICredentialsProv prov, String url) {
+ @Override public Tickets getTicketsPage(String srvId, String url) {
try {
return new Gson().fromJson(sendGetToJira(url), Tickets.class);
}
@@ -136,7 +127,7 @@ class Jira implements IJiraIntegration {
/** {@inheritDoc} */
@AutoProfiling
- @Override public String sendJiraComment(String ticket, String comment) throws IOException {
+ @Override public String postJiraComment(String ticket, String comment) throws IOException {
if (isNullOrEmpty(jiraApiUrl))
throw new IllegalStateException("JIRA API URL is not configured for this server.");
@@ -156,4 +147,7 @@ class Jira implements IJiraIntegration {
return HttpUtil.sendGetToJira(jiraBasicAuthTok, jiraApiUrl + url);
}
+ public String getServiceId() {
+ return srvId;
+ }
}
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 a36944b..ea4461f 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
@@ -23,12 +23,14 @@ import com.google.inject.Provider;
import java.text.DateFormat;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
+import java.util.Collection;
import java.util.Collections;
import java.util.Date;
import java.util.LinkedHashSet;
import java.util.List;
import java.util.Objects;
import java.util.Set;
+import java.util.SortedSet;
import java.util.stream.Collectors;
import java.util.stream.Stream;
import javax.annotation.Nonnull;
@@ -37,13 +39,15 @@ import javax.ws.rs.QueryParam;
import org.apache.ignite.ci.HelperConfig;
import org.apache.ignite.ci.ITcHelper;
import org.apache.ignite.ci.ITeamcity;
-import org.apache.ignite.ci.TcHelper;
import org.apache.ignite.ci.github.GitHubBranch;
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.jira.Ticket;
import org.apache.ignite.ci.jira.Tickets;
+import org.apache.ignite.ci.jira.ignited.IJiraIgnited;
+import org.apache.ignite.ci.jira.ignited.IJiraIgnitedProvider;
import org.apache.ignite.ci.jira.pure.IJiraIntegration;
import org.apache.ignite.ci.jira.pure.IJiraIntegrationProvider;
import org.apache.ignite.ci.observer.BuildObserver;
@@ -82,7 +86,9 @@ import static org.apache.ignite.ci.util.XmlUtil.xmlEscapeText;
import static org.apache.ignite.ci.web.rest.parms.FullQueryParams.DEFAULT_TRACKED_BRANCH_NAME;
/**
- * Provides method for TC Bot Visa obtaining
+ * Provides method for TC Bot Visa obtaining.
+ * Contains features for adding comment to the ticket based on latest state.
+ *
*/
public class TcBotTriggerAndSignOffService {
/** Logger. */
@@ -104,8 +110,11 @@ public class TcBotTriggerAndSignOffService {
/** TC ignited provider. */
@Inject ITeamcityIgnitedProvider tcIgnitedProv;
- /** */
- @Inject IJiraIntegrationProvider jiraIntegrationProvider;
+ /** Direct connection to JIRA provider */
+ @Inject IJiraIgnitedProvider jiraIgnProv;
+
+ /** Direct connection to JIRA provider */
+ @Inject IJiraIntegrationProvider jiraPureProvider;
/** */
@Inject private VisasHistoryStorage visasHistStorage;
@@ -135,7 +144,7 @@ public class TcBotTriggerAndSignOffService {
ITeamcityIgnited ignited = tcIgnitedProv.server(srvId, prov);
- IJiraIntegration jiraIntegration = jiraIntegrationProvider.server(srvId);
+ IJiraIntegration jiraIntegration = jiraPureProvider.server(srvId);
for (VisaRequest visaRequest : visasHistStorage.getVisas()) {
VisaStatus visaStatus = new VisaStatus();
@@ -191,12 +200,46 @@ public class TcBotTriggerAndSignOffService {
public Set<MuteInfo> getMutes(String srvId, String projectId, ICredentialsProv creds) {
ITeamcityIgnited ignited = tcIgnitedProv.server(srvId, creds);
- Set<MuteInfo> infos = ignited.getMutes(projectId, creds);
+ Set<MuteInfo> mutes = ignited.getMutes(projectId, creds);
+
+ IJiraIgnited jiraIgn = jiraIgnProv.server(srvId);
+
+ insertTicketStatus(mutes, jiraIgn.getTickets());
- for (MuteInfo info : infos)
+ for (MuteInfo info : mutes)
info.assignment.muteDate = THREAD_FORMATTER.get().format(new Date(info.assignment.timestamp()));
- return infos;
+ return mutes;
+ }
+
+ /**
+ * Insert ticket status for all mutes, if they have ticket in description.
+ *
+ * @param mutes Mutes.
+ * @param tickets Tickets.
+ */
+ private void insertTicketStatus(Set<MuteInfo> mutes, Collection<Ticket> tickets) {
+ for (MuteInfo mute : mutes) {
+ if (F.isEmpty(mute.assignment.text))
+ continue;
+
+ String browseUrl = "https://issues.apache.org/jira/browse/";
+ int pos = mute.assignment.text.indexOf(browseUrl);
+
+ if (pos == -1)
+ continue;
+
+ for (Ticket ticket : tickets) {
+ String muteTicket = mute.assignment.text.substring(pos +
+ browseUrl.length());
+
+ if (ticket.key.equals(muteTicket)) {
+ mute.ticketStatus = ticket.status();
+
+ break;
+ }
+ }
+ }
}
/**
@@ -261,7 +304,7 @@ public class TcBotTriggerAndSignOffService {
String parentSuiteId,
Build... builds
) {
- IJiraIntegration jiraIntegration = jiraIntegrationProvider.server(srvId);
+ IJiraIntegration jiraIntegration = jiraPureProvider.server(srvId);
String prefix = jiraIntegration.ticketPrefix();
@@ -315,7 +358,7 @@ public class TcBotTriggerAndSignOffService {
ICredentialsProv prov) {
String jiraRes = "";
- IJiraIntegration jiraIntegration = jiraIntegrationProvider.server(srvId);
+ IJiraIntegration jiraIntegration = jiraPureProvider.server(srvId);
String prefix = jiraIntegration.ticketPrefix();
@@ -369,7 +412,7 @@ public class TcBotTriggerAndSignOffService {
*/
public List<ContributionToCheck> getContributionsToCheck(String srvId,
ICredentialsProv credsProv) {
- IJiraIntegration jiraIntegration = jiraIntegrationProvider.server(srvId);
+ IJiraIgnited jiraIntegration = jiraIgnProv.server(srvId);
List<PullRequest> requests = gitHubConnIgnitedProvider.server(srvId).getPullRequests();
if (requests == null)
@@ -377,12 +420,9 @@ public class TcBotTriggerAndSignOffService {
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);
+ String prj = jiraIntegration.projectName();
+ Set<Ticket> tickets = jiraIntegration.getTickets();
+ System.out.println("srvId=" + srvId + " tickets " + tickets);
//todo JIRA ignited
@@ -621,7 +661,7 @@ public class TcBotTriggerAndSignOffService {
) {
ITeamcityIgnited tcIgnited = tcIgnitedProv.server(srvId, prov);
- IJiraIntegration jira = jiraIntegrationProvider.server(srvId);
+ IJiraIntegration jira = jiraPureProvider.server(srvId);
List<Integer> builds = tcIgnited.getLastNBuildsFromHistory(buildTypeId, branchForTc, 1);
@@ -656,7 +696,7 @@ public class TcBotTriggerAndSignOffService {
})
.sum();
- res = objMapper.readValue(jira.sendJiraComment(ticket, comment), JiraCommentResponse.class);
+ res = objMapper.readValue(jira.postJiraComment(ticket, comment), JiraCommentResponse.class);
}
catch (Exception e) {
String errMsg = "Exception happened during commenting JIRA ticket " +
@@ -667,7 +707,7 @@ public class TcBotTriggerAndSignOffService {
return new Visa("JIRA wasn't commented - " + errMsg);
}
- return new Visa(IJiraIntegration.JIRA_COMMENTED, res, blockers);
+ return new Visa(Visa.JIRA_COMMENTED, res, blockers);
}
diff --git a/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/teamcity/ignited/TeamcityIgnitedImpl.java b/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/teamcity/ignited/TeamcityIgnitedImpl.java
index 65930eb..f857aae 100644
--- a/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/teamcity/ignited/TeamcityIgnitedImpl.java
+++ b/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/teamcity/ignited/TeamcityIgnitedImpl.java
@@ -114,12 +114,6 @@ public class TeamcityIgnitedImpl implements ITeamcityIgnited {
/** Mute Sync. */
@Inject private MuteSync muteSync;
- /** Jira ticket DAO. */
- @Inject private JiraTicketDao jiraTicketDao;
-
- /** Jira ticket Sync. */
- @Inject private JiraTicketSync jiraTicketSync;
-
/** Changes DAO. */
@Inject private ChangeDao changesDao;
@@ -158,7 +152,6 @@ public class TeamcityIgnitedImpl implements ITeamcityIgnited {
changesDao.init();
runHistCompactedDao.init();
muteDao.init();
- jiraTicketDao.init();
}
/**
@@ -344,44 +337,14 @@ public class TeamcityIgnitedImpl implements ITeamcityIgnited {
/** {@inheritDoc} */
@Override public Set<MuteInfo> getMutes(String projectId, ICredentialsProv creds) {
muteSync.ensureActualizeMutes(taskName("actualizeMutes"), projectId, srvIdMaskHigh, conn);
- jiraTicketSync.ensureActualizeJiraTickets(taskName("actualizeJiraTickets"), srvIdMaskHigh, creds, conn);
SortedSet<MuteInfo> mutes = muteDao.getMutes(srvIdMaskHigh);
- Collection<Ticket> tickets = jiraTicketDao.getTickets(srvIdMaskHigh);
- insertTicketStatus(mutes, tickets);
return mutes;
}
- /**
- * Insert ticket status for all mutes, if they have ticket in description.
- *
- * @param mutes Mutes.
- * @param tickets Tickets.
- */
- private void insertTicketStatus(SortedSet<MuteInfo> mutes, Collection<Ticket> tickets) {
- for (MuteInfo mute : mutes) {
- if (F.isEmpty(mute.assignment.text))
- continue;
-
- int pos = mute.assignment.text.indexOf("https://issues.apache.org/jira/browse/");
-
- if (pos == -1)
- continue;
- for (Ticket ticket : tickets) {
- String muteTicket = mute.assignment.text.substring(pos +
- "https://issues.apache.org/jira/browse/".length());
-
- if (ticket.key.equals(muteTicket)) {
- mute.ticketStatus = ticket.status();
-
- break;
- }
- }
- }
- }
/** {@inheritDoc} */
@AutoProfiling
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 2175d2a..201db9b 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,6 @@
package org.apache.ignite.ci.web.model;
-import org.apache.ignite.ci.jira.pure.IJiraIntegration;
import org.jetbrains.annotations.Nullable;
/**
@@ -29,6 +28,9 @@ public class Visa {
/** Determines Visa with no results and info. */
public static final String EMPTY_VISA_STATUS = "emptyVisa";
+ /** Message to show user when JIRA ticket was successfully commented by the Bot. */
+ public static final String JIRA_COMMENTED = "JIRA commented.";
+
/** */
public final String status;
@@ -71,7 +73,7 @@ public class Visa {
/** */
public boolean isSuccess() {
- return IJiraIntegration.JIRA_COMMENTED.equals(status)
+ return JIRA_COMMENTED.equals(status)
&& jiraCommentRes != null;
}