Merge "Use robot_comments in Gerrit"
This commit is contained in:
commit
4f074cb21a
@ -658,6 +658,7 @@ class GerritWebServer(object):
|
||||
change_re = re.compile(r'/a/changes/(.*)\?o=.*')
|
||||
related_re = re.compile(r'/a/changes/(.*)/revisions/(.*)/related')
|
||||
change_search_re = re.compile(r'/a/changes/\?n=500.*&q=(.*)')
|
||||
version_re = re.compile(r'/a/config/server/version')
|
||||
|
||||
def do_POST(self):
|
||||
path = self.path
|
||||
@ -699,6 +700,9 @@ class GerritWebServer(object):
|
||||
m = self.list_checkers_re.match(path)
|
||||
if m:
|
||||
return self.list_checkers()
|
||||
m = self.version_re.match(path)
|
||||
if m:
|
||||
return self.version()
|
||||
self.send_response(500)
|
||||
self.end_headers()
|
||||
|
||||
@ -719,7 +723,7 @@ class GerritWebServer(object):
|
||||
|
||||
message = data['message']
|
||||
action = data.get('labels', {})
|
||||
comments = data.get('comments', {})
|
||||
comments = data.get('robot_comments', data.get('comments', {}))
|
||||
tag = data.get('tag', None)
|
||||
fake_gerrit._test_handle_review(
|
||||
int(change.data['number']), message, action, comments,
|
||||
@ -812,6 +816,10 @@ class GerritWebServer(object):
|
||||
self.send_data(results)
|
||||
self.end_headers()
|
||||
|
||||
def version(self):
|
||||
self.send_data('3.0.0-some-stuff')
|
||||
self.end_headers()
|
||||
|
||||
def send_data(self, data):
|
||||
data = json.dumps(data).encode('utf-8')
|
||||
data = b")]}'\n" + data
|
||||
|
@ -13,31 +13,33 @@
|
||||
# License for the specific language governing permissions and limitations
|
||||
# under the License.
|
||||
|
||||
import copy
|
||||
import datetime
|
||||
import itertools
|
||||
import json
|
||||
import logging
|
||||
import paramiko
|
||||
import pprint
|
||||
import queue
|
||||
import re
|
||||
import re2
|
||||
import requests
|
||||
import select
|
||||
import shlex
|
||||
import threading
|
||||
import time
|
||||
import urllib
|
||||
import paramiko
|
||||
import logging
|
||||
import pprint
|
||||
import shlex
|
||||
import queue
|
||||
import urllib.parse
|
||||
import requests
|
||||
|
||||
from typing import Dict, List
|
||||
from uuid import uuid4
|
||||
|
||||
from zuul import version as zuul_version
|
||||
from zuul.connection import BaseConnection
|
||||
from zuul.driver.gerrit.auth import FormAuth
|
||||
from zuul.driver.gerrit.gerritmodel import GerritChange, GerritTriggerEvent
|
||||
from zuul.lib.logutil import get_annotated_logger
|
||||
from zuul.model import Ref, Tag, Branch, Project
|
||||
from zuul.driver.gerrit.gerritmodel import GerritChange, GerritTriggerEvent
|
||||
from zuul.driver.gerrit.auth import FormAuth
|
||||
from zuul import version as zuul_version
|
||||
|
||||
# HTTP timeout in seconds
|
||||
TIMEOUT = 30
|
||||
@ -454,6 +456,7 @@ class GerritConnection(BaseConnection):
|
||||
self.client = None
|
||||
self.watched_checkers = []
|
||||
self.project_checker_map = {}
|
||||
self.version = (0, 0, 0)
|
||||
|
||||
self.baseurl = self.connection_config.get(
|
||||
'baseurl', 'https://%s' % self.server).rstrip('/')
|
||||
@ -1017,7 +1020,19 @@ class GerritConnection(BaseConnection):
|
||||
if labels:
|
||||
data['labels'] = labels
|
||||
if file_comments:
|
||||
data['comments'] = file_comments
|
||||
if self.version >= (2, 15, 0):
|
||||
file_comments = copy.deepcopy(file_comments)
|
||||
url = item.formatStatusUrl()
|
||||
for comments in itertools.chain(file_comments.values()):
|
||||
for comment in comments:
|
||||
comment['robot_id'] = 'zuul'
|
||||
comment['robot_run_id'] = \
|
||||
item.current_build_set.uuid
|
||||
if url:
|
||||
comment['url'] = url
|
||||
data['robot_comments'] = file_comments
|
||||
else:
|
||||
data['comments'] = file_comments
|
||||
data['tag'] = 'autogenerated:zuul:%s' % (item.pipeline.name)
|
||||
changeid = "%s~%s~%s" % (
|
||||
urllib.parse.quote(str(change.project), safe=''),
|
||||
@ -1293,8 +1308,28 @@ class GerritConnection(BaseConnection):
|
||||
project=project.getSafeAttributes(),
|
||||
sha=sha)
|
||||
|
||||
def _getRemoteVersion(self):
|
||||
version = self.get('config/server/version')
|
||||
base = version.split('-')[0]
|
||||
parts = base.split('.')
|
||||
major = minor = micro = 0
|
||||
if len(parts) > 0:
|
||||
major = int(parts[0])
|
||||
if len(parts) > 1:
|
||||
minor = int(parts[1])
|
||||
if len(parts) > 2:
|
||||
micro = int(parts[2])
|
||||
self.version = (major, minor, micro)
|
||||
self.log.info("Remote version is: %s (parsed as %s)" %
|
||||
(version, self.version))
|
||||
|
||||
def onLoad(self):
|
||||
self.log.debug("Starting Gerrit Connection/Watchers")
|
||||
try:
|
||||
self._getRemoteVersion()
|
||||
except Exception:
|
||||
self.log.exception("Unable to determine remote Gerrit version")
|
||||
|
||||
if self.enable_stream_events:
|
||||
self._start_watcher_thread()
|
||||
self._start_poller_thread()
|
||||
|
Loading…
Reference in New Issue
Block a user