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 05a81e4 Fixed error propagation, improved monitoring
05a81e4 is described below
commit 05a81e4d1fff719616ab1e9b5126661865839f3e
Author: Dmitriy Pavlov <[email protected]>
AuthorDate: Thu Feb 14 19:27:41 2019 +0300
Fixed error propagation, improved monitoring
---
.../ignite/ci/jira/ignited/JiraTicketSync.java | 16 +++++++++++--
.../ignite/ci/jira/pure/IJiraIntegration.java | 6 ++---
.../java/org/apache/ignite/ci/jira/pure/Jira.java | 26 ++++------------------
.../ignite/ci/tcbot/conf/IJiraServerConfig.java | 20 +++++++++++++++++
.../apache/ignite/ci/web/rest/TriggerBuilds.java | 17 ++++++++------
5 files changed, 51 insertions(+), 34 deletions(-)
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 dca8033..b269176 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
@@ -30,9 +30,12 @@ import org.apache.ignite.ci.jira.pure.Fields;
import org.apache.ignite.ci.jira.pure.IJiraIntegration;
import org.apache.ignite.ci.jira.pure.IJiraIntegrationProvider;
import org.apache.ignite.ci.jira.pure.Ticket;
+import org.apache.ignite.ci.tcbot.conf.IJiraServerConfig;
import org.apache.ignite.ci.teamcity.ignited.ITeamcityIgnited;
import org.apache.ignite.internal.util.typedef.F;
import org.jetbrains.annotations.NotNull;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
import static org.apache.ignite.ci.util.UrlUtil.escape;
@@ -40,6 +43,9 @@ import static org.apache.ignite.ci.util.UrlUtil.escape;
* Sync serving requests for all JIRA servers.
*/
public class JiraTicketSync {
+ /** Logger. */
+ private static final Logger logger =
LoggerFactory.getLogger(JiraTicketSync.class);
+
/** Scheduler. */
@Inject private IScheduler scheduler;
@@ -94,18 +100,23 @@ public class JiraTicketSync {
.map(Field::getName)
.collect(Collectors.joining(","));
- String projectCode = jira.config().projectCodeForVisa();
+ IJiraServerConfig cfg = jira.config();
+ String projectCode = cfg.projectCodeForVisa();
String baseUrl = "search?jql=" + escape("project=" + projectCode + "
order by updated DESC")
+ "&" +
"fields=" + reqFields +
"&maxResults=100";
+
String url = baseUrl;
+
+ logger.info("Requesting JIRA tickets using URL " + url + ("\n" +
cfg.restApiUrl() + url));
Tickets tickets = jira.getTicketsPage(url);
Collection<Ticket> page = tickets.issuesNotNull();
if (F.isEmpty(page))
- return "Something went wrong - no tickets found. Check jira
availability.";
+ return "Something went wrong - no tickets found. Check jira
availability: " +
+ "[project=" + projectCode + ", url=" + url + "]";
int ticketsSaved = jiraDao.saveChunk(srvIdMaskHigh, page, projectCode);
@@ -115,6 +126,7 @@ public class JiraTicketSync {
while (tickets.nextStart() > 0) {
url = baseUrl + "&startAt=" + tickets.nextStart();
+ logger.info("Requesting JIRA tickets using URL " + url + ("\n"
+ cfg.restApiUrl() + url));
tickets = jira.getTicketsPage(url);
page = tickets.issuesNotNull();
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 1af7fdc..891997a 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
@@ -59,8 +59,8 @@ public interface IJiraIntegration {
*/
public String generateCommentUrl(String ticketFullName, int commentId);
- String restApiUrl();
-
-
+ /**
+ *
+ */
public IJiraServerConfig config();
}
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 33f9d8d..fab758a 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
@@ -61,9 +61,9 @@ class Jira implements IJiraIntegration {
String errMsg = "Exception happened during receiving JIRA tickets
" +
"[url=" + url + ", errMsg=" + e.getMessage() + ']';
- logger.error(errMsg);
+ logger.error(errMsg, e);
- return new Tickets();
+ throw new IllegalStateException(errMsg, e);
}
}
@@ -92,36 +92,18 @@ class Jira implements IJiraIntegration {
/** {@inheritDoc} */
@AutoProfiling
@Override public String postJiraComment(String ticket, String comment)
throws IOException {
- String jiraApiUrl = restApiUrl();
+ String jiraApiUrl = config().restApiUrl();
String url = jiraApiUrl + "issue/" + ticket + "/comment";
return
HttpUtil.sendPostAsStringToJira(config().decodedHttpAuthToken(), url,
"{\"body\": \"" + comment + "\"}");
}
- /** {@inheritDoc} */
- @Override @NotNull public String restApiUrl() {
- String jiraUrl = config().getUrl();
-
- if (isNullOrEmpty(jiraUrl))
- throw new IllegalStateException("JIRA API URL is not configured
for this server.");
-
- StringBuilder apiUrl = new StringBuilder();
-
- apiUrl.append(jiraUrl);
- if (!jiraUrl.endsWith("/"))
- apiUrl.append("/");
-
- apiUrl.append("rest/api/2/");
-
- return apiUrl.toString();
- }
-
/**
* @param url Url, relative, should not contain any start slashes.
* @return Response as gson string.
*/
public String sendGetToJira(String url) throws IOException {
- return HttpUtil.sendGetToJira(config().decodedHttpAuthToken(),
restApiUrl() + url);
+ return HttpUtil.sendGetToJira(config().decodedHttpAuthToken(),
config().restApiUrl() + url);
}
}
diff --git
a/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/tcbot/conf/IJiraServerConfig.java
b/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/tcbot/conf/IJiraServerConfig.java
index a48b0f8..06933cf 100644
---
a/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/tcbot/conf/IJiraServerConfig.java
+++
b/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/tcbot/conf/IJiraServerConfig.java
@@ -19,6 +19,8 @@ package org.apache.ignite.ci.tcbot.conf;
import com.google.common.base.Strings;
import org.jetbrains.annotations.Nullable;
+import static com.google.common.base.Strings.isNullOrEmpty;
+
/**
* Abstract JIRA server config.
*/
@@ -52,4 +54,22 @@ public interface IJiraServerConfig {
return !Strings.isNullOrEmpty(decodedHttpAuthToken());
}
+
+ public default String restApiUrl() {
+ String jiraUrl = getUrl();
+
+ if (isNullOrEmpty(jiraUrl))
+ throw new IllegalStateException("JIRA API URL is not configured
for this server.");
+
+ StringBuilder apiUrl = new StringBuilder();
+
+ apiUrl.append(jiraUrl);
+ if (!jiraUrl.endsWith("/"))
+ apiUrl.append("/");
+
+ apiUrl.append("rest/api/2/");
+
+ return apiUrl.toString();
+ }
+
}
diff --git
a/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/web/rest/TriggerBuilds.java
b/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/web/rest/TriggerBuilds.java
index 037cead..bd953d7 100644
---
a/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/web/rest/TriggerBuilds.java
+++
b/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/web/rest/TriggerBuilds.java
@@ -36,6 +36,8 @@ import org.apache.ignite.ci.github.pure.IGitHubConnection;
import org.apache.ignite.ci.github.pure.IGitHubConnectionProvider;
import org.apache.ignite.ci.jira.pure.IJiraIntegration;
import org.apache.ignite.ci.jira.pure.IJiraIntegrationProvider;
+import org.apache.ignite.ci.tcbot.conf.IJiraServerConfig;
+import org.apache.ignite.ci.tcbot.conf.ITcBotConfig;
import org.apache.ignite.ci.teamcity.ignited.ITeamcityIgnitedProvider;
import org.apache.ignite.ci.user.ICredentialsProv;
import org.apache.ignite.ci.tcbot.visa.TcBotTriggerAndSignOffService;
@@ -111,24 +113,25 @@ public class TriggerBuilds {
@GET
@Path("integrationUrls")
- public Set<ServerIntegrationLinks> getIntegrationUrls(@NotNull
@QueryParam("serverIds") String srvIds) {
+ public Set<ServerIntegrationLinks> getIntegrationUrls(@NotNull
@QueryParam("serverIds") String srvCodes) {
ICredentialsProv prov = ICredentialsProv.get(req);
Injector injector = CtxListener.getInjector(ctx);
+ ITcBotConfig cfg = injector.getInstance(ITcBotConfig.class);
ITeamcityIgnitedProvider tcIgnProv =
injector.getInstance(ITeamcityIgnitedProvider.class);
- String[] srvIds0 = srvIds.split(",");
+ String[] srvCodesArr = srvCodes.split(",");
- return Arrays.stream(srvIds0).map(srvId -> {
- if (!tcIgnProv.hasAccess(srvId, prov))
+ return Arrays.stream(srvCodesArr).map(srvCode -> {
+ if (!tcIgnProv.hasAccess(srvCode, prov))
return null;
- IJiraIntegration jira =
injector.getInstance(IJiraIntegrationProvider.class).server(srvId);
+ IGitHubConnection gh =
injector.getInstance(IGitHubConnectionProvider.class).server(srvCode);
- IGitHubConnection gh =
injector.getInstance(IGitHubConnectionProvider.class).server(srvId);
+ IJiraServerConfig jiraCfg = cfg.getJiraConfig(srvCode);
- return new ServerIntegrationLinks(srvId, gh.gitApiUrl(),
jira.restApiUrl());
+ return new ServerIntegrationLinks(srvCode, gh.gitApiUrl(),
jiraCfg.restApiUrl());
}).filter(Objects::nonNull).collect(Collectors.toSet());
}
}