From 9ee12584b8ae4f6b7f0f3269d3afab9f80f1c0a8 Mon Sep 17 00:00:00 2001 From: Pawel Wieczorek Date: Tue, 7 Jan 2020 15:26:52 +0100 Subject: Add Hound code search configuration generator Configuration is generated from Gerrit-supplied data. Issue-ID: ONAPARC-540 Change-Id: I84d5b87580882926b916ed20dbcd2369be4c77f4 Signed-off-by: Pawel Wieczorek --- bootstrap/codesearch/Vagrantfile | 5 ++++ bootstrap/codesearch/create_config.py | 46 ++++++++++++++++++++++++++++++ bootstrap/codesearch/test-requirements.txt | 2 ++ bootstrap/codesearch/tox.ini | 14 +++++++++ 4 files changed, 67 insertions(+) create mode 100755 bootstrap/codesearch/create_config.py create mode 100644 bootstrap/codesearch/test-requirements.txt create mode 100644 bootstrap/codesearch/tox.ini (limited to 'bootstrap') diff --git a/bootstrap/codesearch/Vagrantfile b/bootstrap/codesearch/Vagrantfile index a94b95cbf..b715ec50c 100644 --- a/bootstrap/codesearch/Vagrantfile +++ b/bootstrap/codesearch/Vagrantfile @@ -2,6 +2,7 @@ # -*- coding: utf-8 -*- host_ip = "192.168.121.1" +synced_folder = "/vagrant" $replace_dns = <<-SCRIPT HOST_IP="$1" @@ -11,6 +12,7 @@ SCRIPT Vagrant.configure("2") do |config| config.vm.box = "generic/ubuntu1804" + config.vm.synced_folder ".", synced_folder, type: "rsync", rsync__exclude: "Vagrantfile" config.vm.provision "replace_dns", type: :shell, run: "always", inline: $replace_dns, args: host_ip config.vm.provision "dependencies", type: :shell, inline: <<-SHELL export DEBIAN_FRONTEND=noninteractive @@ -21,4 +23,7 @@ Vagrant.configure("2") do |config| export GOPATH="${HOME}/go" go get -u github.com/hound-search/hound/cmds/... SHELL + config.vm.provision "generate_config", type: :shell, privileged: false, inline: <<-SHELL + python3 #{synced_folder}/create_config.py + SHELL end diff --git a/bootstrap/codesearch/create_config.py b/bootstrap/codesearch/create_config.py new file mode 100755 index 000000000..4009e51df --- /dev/null +++ b/bootstrap/codesearch/create_config.py @@ -0,0 +1,46 @@ +#!/usr/bin/env python3 +# -*- coding: utf-8 -*- + +"""Create configuration for code search.""" + +import json +import urllib.request +import sys + +ONAP_GERRIT = "https://gerrit.onap.org/r" +API_PROJECTS = "/projects/" + +MAGIC_PREFIX = ")]}'" + + +def get_projects_list(): + """Request list of all available projects from ONAP Gerrit.""" + resp = urllib.request.urlopen(ONAP_GERRIT + API_PROJECTS) + resp_body = resp.read() + + no_magic = resp_body[len(MAGIC_PREFIX):] + decoded = no_magic.decode("utf-8") + projects = json.loads(decoded) + + return projects.keys() + + +def create_repos_list(projects): + """Create a map of all projects to their repositories' URLs.""" + return {p: {"url": "{}/{}.git".format(ONAP_GERRIT, p)} for p in projects} + + +def main(): + """Main entry point for the script.""" + repos = create_repos_list(get_projects_list()) + config = { + "max-concurrent-indexers": 2, + "dbpath": "data", + "health-check-uri": "/healthz", + "repos": repos + } + print(json.dumps(config, sort_keys=True, indent=4, separators=(',', ': '))) + + +if __name__ == '__main__': + sys.exit(main()) diff --git a/bootstrap/codesearch/test-requirements.txt b/bootstrap/codesearch/test-requirements.txt new file mode 100644 index 000000000..897e59f51 --- /dev/null +++ b/bootstrap/codesearch/test-requirements.txt @@ -0,0 +1,2 @@ +flake8 +pylint diff --git a/bootstrap/codesearch/tox.ini b/bootstrap/codesearch/tox.ini new file mode 100644 index 000000000..3d0305b65 --- /dev/null +++ b/bootstrap/codesearch/tox.ini @@ -0,0 +1,14 @@ +[tox] +envlist = pep8, pylint +skipsdist = true +modules = create_config + +[testenv] +basepython = python3 +deps = -r{toxinidir}/test-requirements.txt + +[testenv:pep8] +commands = flake8 --max-line-length 100 + +[testenv:pylint] +commands = pylint -f parseable {[tox]modules} -- cgit 1.2.3-korg