diff --git a/docs/source/conf.py b/docs/source/conf.py
index 0fbff8e2..16550bf2 100644
--- a/docs/source/conf.py
+++ b/docs/source/conf.py
@@ -54,9 +54,9 @@ copyright = u'2017, Mike McLean, Mike B, Dennis Gilmore, Mathieu Bridon, Ian McL
# built documents.
#
# The short X.Y version.
-version = '1.20'
+version = '1.21'
# The full version, including alpha/beta/rc tags.
-release = '1.20.1'
+release = '1.21.0'
# The language for content autogenerated by Sphinx. Refer to documentation
# for a list of supported languages.
diff --git a/docs/source/migrations/migrations.rst b/docs/source/migrations/migrations.rst
index 9af81f05..c6076df4 100644
--- a/docs/source/migrations/migrations.rst
+++ b/docs/source/migrations/migrations.rst
@@ -5,6 +5,7 @@ Migrations
.. toctree::
:maxdepth: 1
+ migrating_to_1.21
migrating_to_1.20
migrating_to_1.19
migrating_to_1.18
diff --git a/docs/source/release_notes/release_notes.rst b/docs/source/release_notes/release_notes.rst
index b4850997..d7bf613c 100644
--- a/docs/source/release_notes/release_notes.rst
+++ b/docs/source/release_notes/release_notes.rst
@@ -5,6 +5,7 @@ Release Notes
.. toctree::
:maxdepth: 1
+ release_notes_1.21
release_notes_1.20.1
release_notes_1.20
release_notes_1.19.1
diff --git a/docs/source/release_notes/release_notes_1.21.rst b/docs/source/release_notes/release_notes_1.21.rst
new file mode 100644
index 00000000..71fc1720
--- /dev/null
+++ b/docs/source/release_notes/release_notes_1.21.rst
@@ -0,0 +1,263 @@
+Koji 1.21.0 Release notes
+=========================
+
+Announcement: We're going to drop python 2 support for hub and web in koji 1.22.
+Please, prepare yourself for deploying python 3 versions of these. Both are
+already supported and this is the next step in retiring python 2 codebase.
+
+All changes can be found at `pagure `_.
+Most important changes are listed here.
+
+Migrating from Koji 1.20
+------------------------
+
+For details on migrating see :doc:`../migrations/migrating_to_1.21`
+
+Security Fixes
+--------------
+None
+
+Client Changes
+--------------
+**Add --no-delete option to clone-tag**
+
+| PR: https://pagure.io/koji/pull-request/1385
+
+``clone-tag`` command was enhanced to produce 'copy' operation without deleting
+what is in the target tag. See PR for detailed semantics, as it could be
+confusing a bit.
+
+**display merge mode for external repos**
+
+| PR: https://pagure.io/koji/pull-request/2097
+
+Merge modes are now listed in taginfo command (and also in web ui)
+
+**koji download-build resuming downloads**
+
+| PR: https://pagure.io/koji/pull-request/2080
+
+``download-build`` could often break for bigger builds. Resuming truncated
+download after relaunch is now default behaviour.
+
+**add-host work even if host already tried to log in**
+
+| PR: https://pagure.io/koji/pull-request/2042
+
+Previously, if builder contacted before its user was created in db, it was hard
+to fix it. Now, it could be forced via cli's ``--force``.
+
+**Allow to skip SRPM rebuild for scratch builds**
+
+| PR: https://pagure.io/koji/pull-request/2083
+
+Rebuilding SRPMs doesn't make much sense in most of scratch builds. There is an
+option ``--no-rebuild-srpm`` which can be used to skip this step. Note, that it
+doesn't work for regular builds, which needs to adhere to policy set by
+rel-engs.
+
+**Deprecating list-tag-history and tagHistory**
+
+| PR: https://pagure.io/koji/pull-request/938
+
+These commands are superseded by ``list-history`` resp. ``queryHistory`` and
+will be removed in near future.
+
+**Add detail about known koji signatures to buildinfo**
+
+| PR: https://pagure.io/koji/pull-request/2016
+
+If koji knows about any signatures, they are now also printed.
+
+**deprecation of krb_login**
+
+| PR: https://pagure.io/koji/pull-request/1992
+
+gssapi_login should be now used wherever possible
+
+Library Changes
+---------------
+
+**Remove deprecated functions**
+
+| PR: https://pagure.io/koji/pull-request/1984
+| PR: https://pagure.io/koji/pull-request/2001
+
+md5/sha1 constructors and cgi.escape functions were removed.
+
+API Changes
+-----------
+
+**editTagExternalRepo is able to set merge_mode**
+
+| PR: https://pagure.io/koji/pull-request/2051
+
+Removing and re-adding external repo is no more needed if user just needs to
+change merge strategy.
+
+**Remove debugFunction API**
+
+| PR: https://pagure.io/koji/pull-request/1863
+
+Removed deprecated call
+
+Builder Changes
+---------------
+
+**make xz options configurable**
+
+| PR: https://pagure.io/koji/pull-request/2028
+
+xz compression for images now can be configured on builder level. It can be
+tuned accordingly to CPU/memory ratio available.
+
+**Delete oldest failed buildroot when there is no space**
+
+| PR: https://pagure.io/koji/pull-request/2082
+
+If there is no space on builder, we try to delete buildroots from oldest to
+newest. It could be harder to debug some failed builds, as those data can be
+already deleted, on the other hand, builders will not refuse to work due to lack
+of space.
+
+System Changes
+--------------
+
+**new policy for dist-repo**
+
+| PR: https://pagure.io/koji/pull-request/2081
+
+Previously only users with ``dist-repo`` permission were allowed to run it. Now,
+there could be a policy defined, mostly based on tag or user names.
+
+**Add 'target' policy**
+
+| PR: https://pagure.io/koji/pull-request/1058
+
+We used it before, but with generic tests like ``match``. Now we have proper
+``target`` policy test.
+
+**always set utf8 pg client encoding**
+
+| PR: https://pagure.io/koji/pull-request/2105
+
+We're now forcing utf8 client encoding for database connection.
+
+**Limit final query by prechecking buildroot ids**
+
+| PR: https://pagure.io/koji/pull-request/2074
+
+Significant performance improvement for ``query_buildroots``.
+
+**use real time for events**
+
+| PR: https://pagure.io/koji/pull-request/2068
+
+Events now should be created with real-world time, not with the beginning of
+transaction. It could have led to non-clear history in some cases, it should be
+better now.
+
+**log --force usage by admins**
+
+| PR: https://pagure.io/koji/pull-request/2019
+
+Using ``--force`` to override policies is now logged.
+
+**Add smtp authentication support**
+
+| PR: https://pagure.io/koji/pull-request/692
+
+SMTP authentication is now available in kojid and koji-gc.
+
+Plugins
+-------
+
+**Sidetag plugin is now part of koji**
+
+| PR: https://pagure.io/koji/pull-request/1956
+| PR: https://pagure.io/koji/pull-request/2006
+| PR: https://pagure.io/koji/pull-request/2004
+
+We've integrated sidetag plugin to koji, so we can add more integrated
+functionality to it.
+
+**allow debuginfo for sidetag repos**
+
+| PR: https://pagure.io/koji/pull-request/1990
+
+sidetag repos can now contain debuginfo packages (``--debuginfo`` option for
+``add-sidetag`` command).
+
+**New call editSideTag**
+
+| PR: https://pagure.io/koji/pull-request/2054
+
+New API call allowing users of sidetags to modify certain values (debuginfo,
+package lists).
+
+**Emit user in PackageListChange messages**
+
+| PR: https://pagure.io/koji/pull-request/1059
+
+protonmsg now sends also user name and id.
+
+**limit size of extra field in proton msgs**
+
+| PR: https://pagure.io/koji/pull-request/2047
+
+``extra`` field can be omitted from proton message if it exceeds configured
+threshold. Some content generators can create very big ``extra`` data which
+needn't to be sent via message bus and can be queried on demand via API.
+
+Utilities Changes
+-----------------
+
+Garbage Collector
+.................
+
+**file locking for koji-gc**
+
+| PR: https://pagure.io/koji/pull-request/1333
+
+As GC can run for long periods of time, ensuring, that there is only one
+instance running is worthwile. ``--lock-file`` and ``--exit-on-lock``
+
+Kojira
+......
+
+**kojira monitors external repos changes**
+
+| PR: https://pagure.io/koji/pull-request/516
+
+External repositories are now monitored and kojira will trigger ``newRepo``
+tasks when their content changed.
+
+**reverse score ordering for tags**
+
+| PR: https://pagure.io/koji/pull-request/2022
+
+Fixed bug which regenerated repositories in least-important-first order.
+
+Documentation Changes
+---------------------
+
+Lot of documentation was added in last release in API and also in docs pages.
+
+**Documentation**
+
+| PR: https://pagure.io/koji/pull-request/2057
+| PR: https://pagure.io/koji/pull-request/2129
+| PR: https://pagure.io/koji/pull-request/2128
+| PR: https://pagure.io/koji/pull-request/2078
+| PR: https://pagure.io/koji/pull-request/2079
+| PR: https://pagure.io/koji/pull-request/2034
+| PR: https://pagure.io/koji/pull-request/1975
+
+**API**
+
+| PR: https://pagure.io/koji/pull-request/1987
+| PR: https://pagure.io/koji/pull-request/2000
+
+**CLI**
+
+| PR: https://pagure.io/koji/pull-request/2071
diff --git a/koji.spec b/koji.spec
index 9718a5f8..07418dab 100644
--- a/koji.spec
+++ b/koji.spec
@@ -81,7 +81,7 @@
%define release %{baserelease}
%endif
Name: koji
-Version: 1.20.1
+Version: 1.21.0
Release: %{release}%{?dist}
License: LGPLv2 and GPLv2+
# the included arch lib from yum's rpmUtils is GPLv2+
@@ -724,6 +724,87 @@ fi
%endif
%changelog
+* Tue Apr 14 2020 Tomas Kopecek - 1.21-1
+- PR#2057: update docs on httpd configuration
+- PR#1385: Add --no-delete option to clone-tag
+- PR#2054: editSideTag API call
+- PR#2081: new policy for dist-repo
+- PR#2129: hub: document deleteExternalRepo arguments
+- PR#2128: hub: document getExternalRepo arguments
+- PR#2127: fix sanity check in merge_scratch
+- PR#2125: Set default keytab for kojira
+- PR#2071: Better help for build/latest-build
+- PR#516: kojira monitors external repos changes
+- PR#2121: kojira: be tolerant of old with_src configuration option
+- PR#2105: always set utf8 pg client encoding
+- PR#2106: kojira: Allow using Kerberos without krbV
+- PR#2088: fix missing /lib/ in hub-plugins path
+- PR#2097: display merge mode for external repos
+- PR#2098: move admin force usage to assert_policy
+- PR#1990: allow debuginfo for sidetag repos
+- PR#2082: delete oldest failed buildroot, when there is no space
+- PR#2115: Correct json.dumps usage
+- PR#2113: don't break on invalid task
+- PR#2058: merge_scratch: Compare SCM URLs only if built from an SCM
+- PR#2074: Limit final query by prechecking buildroot ids
+- PR#2022: reverse score ordering for tags
+- PR#2056: fix table name
+- PR#2002: try to better guess mock's error log
+- PR#2080: koji download-build - consider resume downloads by default
+- PR#2042: add-host work even if host already tried to log in
+- PR#2051: hub: editTagExternalRepo is able to set merge_mode
+- PR#2040: koji.ClientSession: fix erroneous conversion to latin-1
+- PR#2089: propagate event to get_tag_extra
+- PR#2047: limit size of extra field in proton msgs
+- PR#2019: log --force usage by admins
+- PR#2083: allow to skip SRPM rebuild for scratch builds
+- PR#2068: use real time for events
+- PR#2078: Adapt older win-build docs
+- PR#2075: Don't use datetime timestamp() as it's not in Python 2
+- PR#2028: make xz options configurable
+- PR#2079: prune old docs about interaction with Fedora's koji
+- PR#2030: raise error on non-existing tag
+- PR#1749: rpm: remove references to EOL fedora versions
+- PR#1194: client: use default CA store during SSL auth if serverca is unset
+- PR#2073: trivial flake8 warning fix
+- PR#2048: use only gssapi_login in CLI
+- PR#2016: Add detail about known koji signatures to buildinfo
+- PR#2027: raise GenericError instead of TypeError in filterResults
+- PR#2009: CG: add and update buildinfo.extra.typeinfo if it doesn't exist
+- PR#2049: extending flake8 rules
+- PR#1891: Disable notifications from clone-tag by default
+- PR#2006: add missing koji-sidetag-cleanup script
+- PR#2025: Include livemedia builds in accepted wrapperRPM methods
+- PR#2045: insert path before import kojihub
+- PR#2034: update docs to current jenkins setup
+- PR#1987: Add doc string for virtual methods
+- PR#1916: replace xmlrpc_client exception with requests
+- PR#751: xmlrpcplus: use parent Marshaller's implementations where possible
+- PR#2004: obsolete external sidetag plugin
+- PR#1992: deprecation of krb_login
+- PR#2001: remove usage of deprecated cgi.escape function
+- PR#1333: file locking for koji-gc
+- PR#692: Add smtp authentication support
+- PR#1956: Merge sidetag plugin
+- PR#478: Add _taskLabel entry for indirectionimage
+- PR#2000: hub: improve listBTypes() API documentation
+- PR#1058: Add 'target' policy
+- PR#938: Deprecating list-tag-history and tagHistory
+- PR#1971: remove outdated comment in schema file
+- PR#1986: fix test
+- PR#1984: Remove deprecated md5/sha1 constructors
+- PR#1059: Emit user in PackageListChange messages
+- PR#1945: check permission id in edit_tag
+- PR#1948: check package list existence before blocking
+- PR#1949: don't allow setTaskPriority on closed task
+- PR#1950: print warn to stderr instead of stdout
+- PR#1951: add strict to getChangelogEntries
+- PR#1975: update runs_here.rst: correcting usage of koji at CERN
+- PR#1934: remove unused option --with-src in kojira
+- PR#1911: hub: [newRepo] raise error when tag doesn't exist
+- PR#1886: cli: make list-signed accepting integer params
+- PR#1863: hub: remove debugFunction API
+
* Thu Mar 5 2020 Tomas Kopecek - 1.20.1-1
- PR#1995: hub: improve search() API documentation
- PR#1993: Always use stream=True when iterating over a request
diff --git a/setup.py b/setup.py
index 58f3de18..23047fd3 100644
--- a/setup.py
+++ b/setup.py
@@ -36,7 +36,7 @@ def get_install_requires():
setup(
name="koji",
- version="1.20.1",
+ version="1.21.0",
description=("Koji is a system for building and tracking RPMS. The base"
" package contains shared libraries and the command-line"
" interface."),