Repository :
http://git.fedorahosted.org/cgit/copr.git
On branch : master
---------------------------------------------------------------
commit 84fac622202468aea8edb3c024d1a472c05ccc1b
Author: Valentin Gologuzov <vgologuz(a)redhat.com>
Date: Mon Feb 16 14:50:05 2015 +0100
[copr] backend: script fixes, dropped create_repo cli script
---------------------------------------------------------------
backend/conf/copr-be.conf.example | 2 -
backend/conf/copr-be.local.conf | 2 -
backend/run/copr_create_repo.py | 50 --------------------
backend/run/copr_prune_results.py | 10 +++-
backend/run/copr_sign_unsigned.py | 16 ++++++-
backend/tests/test_run_copr_create_repo.py | 68 ----------------------------
6 files changed, 21 insertions(+), 127 deletions(-)
diff --git a/backend/conf/copr-be.conf.example b/backend/conf/copr-be.conf.example
index edfe14d..70e78ac 100644
--- a/backend/conf/copr-be.conf.example
+++ b/backend/conf/copr-be.conf.example
@@ -89,8 +89,6 @@ worker_logdir=/var/log/copr/workers/
# minimum age for builds to be pruned
prune_days=14
-# path to executable script to clean old build
-prune_script=/usr/share/copr/copr_prune_old_builds.sh
# Spawn builder in advance, before we get task?
# It save time, but consume resources even when
diff --git a/backend/conf/copr-be.local.conf b/backend/conf/copr-be.local.conf
index 4fc5f47..0eeb2bf 100644
--- a/backend/conf/copr-be.local.conf
+++ b/backend/conf/copr-be.local.conf
@@ -90,8 +90,6 @@ verbose=true
# minimum age for builds to be pruned
prune_days=14
-# path to executable script to clean old build
-prune_script=./copr_prune_old_builds.sh
[builder]
# default is 1800
diff --git a/backend/run/copr_create_repo.py b/backend/run/copr_create_repo.py
deleted file mode 100644
index f0d3a45..0000000
--- a/backend/run/copr_create_repo.py
+++ /dev/null
@@ -1,50 +0,0 @@
-from __future__ import print_function
-
-import sys
-
-from backend.createrepo import createrepo
-from backend.helpers import SortedOptParser
-
-
-def main(args):
-
- parser = SortedOptParser(
- "mockremote -u user_name -p copr_project repo_dir")
-
- parser.add_option("-u", "--user", dest="user",
- help="copr project owner username")
-
- parser.add_option("-p", "--project", dest="project",
- help="copr project name")
-
- parser.add_option("-f", "--front_url",
dest="front_url",
- help="copr frontend url")
-
- opts, args = parser.parse_args(args)
-
- if not opts.user:
- print("No user was specified, exiting", file=sys.stderr)
- sys.exit(1)
-
- if not opts.project:
- print("No project was specified, exiting", file=sys.stderr)
- sys.exit(1)
-
- if not opts.front_url:
- print("No front url was specified, exiting", file=sys.stderr)
- sys.exit(1)
-
- if not args:
- print("No directory with repo was specified, exiting",
file=sys.stderr)
- sys.exit(1)
-
- createrepo(path=args[0], front_url=opts.front_url,
- username=opts.user, projectname=opts.project)
-
-
-if __name__ == "__main__":
- """
- Provides cli interface for conditional execution of createrepo_c
- depending on user setting `auto_createrepo`
- """
- main(sys.argv[1:])
diff --git a/backend/run/copr_prune_results.py b/backend/run/copr_prune_results.py
index bc79816..70bc20c 100644
--- a/backend/run/copr_prune_results.py
+++ b/backend/run/copr_prune_results.py
@@ -1,14 +1,19 @@
+#!/usr/bin/python
+
from __future__ import print_function
from __future__ import unicode_literals
from __future__ import division
from __future__ import absolute_import
import os
+import sys
import logging
from subprocess import Popen, PIPE
from copr.client.exceptions import CoprException, CoprRequestException
+sys.path.append("/usr/share/copr/")
+
from backend.helpers import BackendConfigReader, get_auto_createrepo_status
from backend.createrepo import createrepo_unsafe
@@ -16,7 +21,7 @@ log = logging.getLogger(__name__)
log.addHandler(logging.NullHandler())
DEF_DAYS = 14
-DEF_PRUNE_SCRIPT = "/usr/share/copr/copr_prune_old_builds.sh"
+DEF_PRUNE_SCRIPT = "/usr/bin/copr_prune_old_builds.sh"
def list_subdir(path):
@@ -39,9 +44,8 @@ def prune_project(opts, path, username, projectname):
# run prune project sh
days = getattr(opts, "prune_days", DEF_DAYS)
- prune_script = getattr(opts, "prune_script", DEF_PRUNE_SCRIPT)
- cmd = map(str, [prune_script, path, days])
+ cmd = map(str, [DEF_PRUNE_SCRIPT, path, days])
handle = Popen(cmd, stdout=PIPE, stderr=PIPE)
stdout, stderr = handle.communicate()
diff --git a/backend/run/copr_sign_unsigned.py b/backend/run/copr_sign_unsigned.py
index fc690eb..7845beb 100755
--- a/backend/run/copr_sign_unsigned.py
+++ b/backend/run/copr_sign_unsigned.py
@@ -115,14 +115,26 @@ def check_pubkey(pubkey_path, user, project, opts):
def main():
- shutil.rmtree("/tmp/users_failed.txt", ignore_errors=True)
- shutil.rmtree("/tmp/users_done.txt", ignore_errors=True)
+ # shutil.rmtree("/tmp/users_failed.txt", ignore_errors=True)
+ # shutil.rmtree("/tmp/users_done.txt", ignore_errors=True)
+ users_done_old = set()
+ try:
+ with open("/tmp/users_done.txt") as handle:
+ for line in handle:
+ users_done_old.add(line.strip())
+ except Exception as err:
+ log.exception(err)
+ log.debug("error during read old users done")
opts = BackendConfigReader().read()
log.info("Starting pubkey fill, destdir: {}".format(opts.destdir))
log.debug("list dir: {}".format(os.listdir(opts.destdir)))
for user_name in os.listdir(opts.destdir):
+ if user_name in users_done_old:
+ log.info("skipping user: {}".format(user_name))
+ continue
+
failed = False
log.info("Started processing user dir: {}".format(user_name))
user_dir = os.path.join(opts.destdir, user_name)
diff --git a/backend/tests/test_run_copr_create_repo.py
b/backend/tests/test_run_copr_create_repo.py
deleted file mode 100644
index 506dacd..0000000
--- a/backend/tests/test_run_copr_create_repo.py
+++ /dev/null
@@ -1,68 +0,0 @@
-import sys
-
-import pytest
-import six
-
-if six.PY3:
- from unittest import mock
- from unittest.mock import MagicMock
-else:
- import mock
- from mock import MagicMock
-
-
-sys.path.insert(0, "../run")
-
-from copr_create_repo import main as createrepo_main
-
-
-(a)mock.patch("copr_create_repo.createrepo")
-class TestArgParser(object):
-
- def test_arg_parser_good_input(self, mc_createrepo, capsys):
- args = ['-u', 'foo', '-p', 'bar', '-f',
'http://example.com/api/', '/tmp']
-
- mc_createrepo.return_value = 0, "", ""
- createrepo_main(args)
- assert mc_createrepo.call_args == mock.call(username='foo',
projectname='bar',
-
front_url='http://example.com/api/';, path='/tmp')
-
- def test_arg_parser_missing_path(self, mc_main, capsys):
- args = ['-u', 'foo', '-p', 'bar', '-f',
'http://example.com/api/']
-
- with pytest.raises(SystemExit) as err:
- createrepo_main(args)
-
- assert err.value.code == 1
- stdout, stderr = capsys.readouterr()
- assert "No directory" in stderr
-
- def test_arg_parser_missing_user(self, mc_main, capsys):
- args = ['-p', 'bar', '-f',
'http://example.com/api/', '/tmp']
-
- with pytest.raises(SystemExit) as err:
- createrepo_main(args)
-
- assert err.value.code == 1
- stdout, stderr = capsys.readouterr()
- assert "No user" in stderr
-
- def test_arg_parser_missing_project(self, mc_main, capsys):
- args = ['-u', 'foo', '-f',
'http://example.com/api/', '/tmp']
-
- with pytest.raises(SystemExit) as err:
- createrepo_main(args)
-
- assert err.value.code == 1
- stdout, stderr = capsys.readouterr()
- assert "No project" in stderr
-
- def test_arg_parser_missing_front(self, mc_main, capsys):
- args = ['-u', 'foo', '-p', 'bar',
'/tmp']
-
- with pytest.raises(SystemExit) as err:
- createrepo_main(args)
-
- assert err.value.code == 1
- stdout, stderr = capsys.readouterr()
- assert "No front url" in stderr