CHANGES
=======

* wip

1.22.1
------

* PR#2427: add migration note regarding dropped krb configuration options
* add migration note regarding dropped krb configuration options
* PR#2395: cli: don't check size for signed rpms
* cli: don't check size for signed rpms
* PR#2412: kojid: explicit binary writing mode
* kojid: explicit binary writing mode
* PR#2410: document setting rpm macros for build tags
* document setting rpm macros for build tags
* PR#2409: editTag: make compat perm\_id option an alias for perm
* fix unit test
* for editTag2, perm option is preferred over perm\_id alias
* editTag: make compat perm\_id option an alias for perm
* PR#2404: release bump and changelog
* and changelog entry for this PR too
* release bump and changelog
* PR#2393: release notes - 1.22
* drop a few trivial entries
* drop docs-only items from release notes and move "miscellaneous" changes elsewhere
* more relnotes updates
* fix ref
* more recent changes
* add PR#2340
* more break lines
* misc relnotes updates
* some migrations notes changes
* fix kojira ref
* fix broken links
* release notes - 1.22
* PR#2397: kojira: remove unused delete\_batch\_size
* add delete\_batch\_size into legacy\_opts
* kojira: remove unused delete\_batch\_size
* PR#2401: kojira: drop reference to krb\_login
* kojira: drop reference to krb\_login
* PR#2280: Use requests\_gssapi instead of requests\_kerberos
* Use requests\_gssapi instead of requests\_kerberos
* PR#2244: remove deprecated krbV support
* remove remaining options
* backward compat wrapper for krb\_login
* remove deprecated krbV support
* PR#2340: kojira: threaded repo deletion
* kojira: estimate better expire\_ts
* kojira: threaded repo deletion
* PR#2337: align option naming with mock
* align option naming with mock
* PR#2363: sphinx formatting fixes for hub policy doc
* doc: preformatted text for hub policy names
* doc: section title formatting for hub policy example
* PR#2377: hub: document listBType return value when query matches no entries
* hub: document listBType return value when query matches no entries
* PR#2123: Pass buildroot to preSCMCheckout and postSCMCheckout where applicable
* Pass buildroot to preSCMCheckout and postSCMCheckout where applicable
* PR#2257:  BuildSRPMFromSCMTask: Support auto-selecting a matching specfile name
* builder: py2 fixes
* BuildSRPMFromSCMTask: Support auto-selecting a matching specfile name
* PR#2387: cli: list-tags: fall back to old behavior on ParameterError
* whitespace to make flake8 happy
* cli: list-tags: fall back to old behavior on ParameterError
* PR#2353: turn off dnf\_warning in mock.cfg
* turn off dnf\_warning in mock.cfg
* PR#2385: doc: exporting repositories
* rewrite
* fix typos and minor grammar problems
* doc: dist-repo and exporting repos
* PR#2372: TaskManager: clean both result and results dirs
* TaskManager: clean both result and results dirs
* PR#2376: kojid: use mergerepo\_c for all merge modes
* depress Exception when checking mergerepo\_c version
* flake8: W605 invalid escape sequence '\d'
* do not break things when mergerepo\_c version is not detectable
* safe convertion from tuple to str for error msg
* make sure we fall back to mergerepos on python2
* fix required version
* kojid: use mergerepo\_c for all merge modes
* PR#2359: hub: importImage doesn't honor volume
* fix tests
* hub: importImage doesn't honor volume
* PR#2364: cli clone-tag - get srctag info with event
* cli clone-tag - get srctag info with event
* PR#2347: cli: fix image-build-indirection --wait
* cli: fix image-build-indirection --wait
* PR#2366: upgrade-sql: fix backward compatibility
* upgrade-sql: fix backward compatibility
* PR#2369: hub: make sure checksum\_type is int for DB
* hub: make sure checksum\_type is int for DB
* PR#2306: Provide task-based data to volume policy
* also consider task data in apply\_volume\_policy()
* policy\_get\_build\_tags: use target data if available
* fix handling of indirectionimage in policy\_data\_from\_task\_args()
* use policy\_data\_from\_task in complete\*Build calls
* split off "policy data from task" logic
* PR#2346: cli: --wait for download-task
* cli: --wait for download-task
* PR#2342: fix simple\_error\_message encoding
* fix simple\_error\_message encoding
* PR#2358: web: remove "GssapiLocalName off" setting
* web: remove "GssapiLocalName off" setting
* PR#2354: fix error message
* fix error message
* PR#2351: hub: remove "GssapiLocalName off" setting
* hub: remove "GssapiLocalName off" setting
* PR#2350: doc: improve hub selinux instructions
* doc: improve hub selinux instructions
* PR#2352: doc: update test suite dependency list for py3
* doc: update test suite dependency list for py3
* PR#2348: fix option order
* fix option order
* PR#2339: kojira: drop kojira.sysconfig
* kojira: drop kojira.sysconfig
* PR#2320: hub: allow glob matching for listTags
* hub: allow glob matching for listTags
* PR#2344: runroot: basic docs
* runroot: basic docs
* PR#2345: builder: document plugin callbacks
* builder: document plugin callbacks
* PR#2327: koji-gc: fix py3 compare behaviour for dicts
* koji-gc: check retagged builds correctly
* koji-gc: fix py3 compare behaviour for dicts
* PR#2338: hub: fix typo
* hub: fix typo
* PR#2334: hub: fix index so it gets used by planner
* hub: fix index so it gets used by planner
* PR#2137: more debug info for un/tracked tasks in kojira
* more debug info for un/tracked tasks in kojira
* PR#2161: doc: update documentation for SSLCACertificateFile
* doc: update documentation for SSLCACertificateFile
* PR#2162: hub: remove "GssapiSSLonly Off" option
* hub: remove "GssapiSSLonly Off" option
* PR#2287: doc: rewrite PostgreSQL authorization instructions
* doc: rewrite PostgreSQL authorization instructions
* PR#2290: vm: clone mac address via xml
* vm: clone mac address via xml
* PR#2317: md5: try the best to use sha256 instead of md5 and ignore FIPS in other parts
* fix flake8 for kojihub.py
* fix param name for uploadFile
* replace md5 with sha256
* a wrapper ignoring FIPS for hashlib.md5
* web: use sha1 for token generation instead of md5(disabled by FIPS)
* PR#2263: improve race condition for getNextRelease / images
* improve race condition for getNextRelease / images
* PR#2085: hide local --debug options
* hide local --debug options
* PR#2301: avoid redundant clauses and joins in query\_buildroots()
* avoid redundant clauses and joins
* PR#2237: db: use timestamps with timezone
* db: use timestamps with timezone
* PR#2329: docs: align "Hub" text in diagram
* docs: align "Hub" text in diagram
* PR#2330: clean\_old option was duplicated on clean\_empty
* clean\_old option was duplicated on clean\_empty
* PR#2331: hub: document listChannels arguments
* hub: document listChannels arguments
* PR#2318: make mock depsolver policy configurable
* make mock depsolver policy configurable
* PR#1932: per-tag settings for mock's sign plugin
* flake8 fix
* update docs
* fix option names
* per-tag settings for mock's sign plugin
* PR#2328: koji-gc: fix flake8
* koji-gc: fix flake8
* PR#2218: Drop py2 support for hub/web
* simplify py3 tests
* dropping six from hub/web
* drop py2 hub and web from spec
* PR#2316: kojira: replace deprecated Thread.isAlive()
* kojira: replace deprecated Thread.isAlive()
* PR#2309: hub: simplify recipients condition in build\_notification()
* hub: simplify recipients condition in build\_notification()
* PR#2326: sidetag: parenthesis typo
* sidetag: parenthesis typo
* PR#2322: Side tags: allow admin ops and misc fixes
* Allow admins to operate on all sidetags
* Actually return results from is\_sidetag()/\_owner()
* PR#2323: kojira: Fix logic detecting directories
* Fix logic detecting directories
* PR#2276: document merge modes
* extend docs
* document merge modes
* PR#2310: hub: fix "opt-outs" comment in get\_notification\_recipients()
* hub: fix "opt-outs" comment in get\_notification\_recipients()
* PR#2256: Don't break on deleted tag
* Don't break on renamed tag
* PR#2154: kojira: swap first\_seen with latest mtime for repo
* kojira: swap first\_seen with latest mtime for repo
* PR#2275: hub: default policy allow packagelist changes with 'tag' permission
* hub: default policy allow packagelist changes with 'tag' permission
* PR#2255: cli: output extra['rpm.macro.\*'] to mock-config
* cli: output extra['rpm.macro.\*'] to mock-config
* PR#2253: koji-gc: set smtp\_host to localhost by default
* koji-gc: set smtp\_host to localhost by default
* PR#2308: hub: return empty list in get\_notification\_recipients()
* hub: return empty list in get\_notification\_recipients()
* PR#2293: disable notifications by default in [un]tagBuildBypass calls
* disable notifications by default in [un]tagBuildBypass calls
* PR#2303: hub: query\_buildroots fix query behaviour
* hub: query\_buildroots fix query behaviour
* PR#2299: hub: query\_buildroots have to return ASAP
* hub: query\_buildroots have to return ASAP
* PR#2166: mock's boostrap + image support
* warning for disabled buildroot\_image
* fix option name
* use global option to enable bootstrap-image
* extend to allow also boostrap-image
* builder: add bootstrap-chroot support for mock
* PR#2295: Koji 1.21.1 release notes
* grammar fix
* Koji 1.21.1 release notes
* PR#2278: koji-gc: fix cc/bcc e-mail handling
* koji-gc: fix cc/bcc e-mail handling
* PR#2212: kojid: remove bootstrap dir
* kojid: remove bootstrap dir
* PR#2254:  openRemoteFile retries and checks downloaded content
* fix flake8 issues
* fix checking signed files
* use downloadFile for localPath and openRemoteFile
* lib: check consistency of rpm from openRemoteFile
* lib: retry openRemoteFile and check size
* PR#2225: hub: log tracebacks for multicalls
* hub: log tracebacks for multicalls
* PR#2279: koji-gc: fix query order
* koji-gc: fix history order
* PR#2064: Support tag specific environment variables
* Support tag specific environment variables
* PR#2153: koji-gc: various typos in maven path
* koji-gc: various typos in maven path
* PR#2193: www: repoinfo page
* www: repoinfo page
* PR#2268: don't decode signature headers
* clarify reason for decoding in comment
* don't decode signature headers
* PR#2214: cli: drop unneeded activate\_session
* fix flake8
* cli: drop unneeded activate\_session
* PR#2266: Correctly identify "hostname doesn't match" errors
* Correctly identify "hostname doesn't match" errors
* PR#2228: cli: flush stdout during watch-logs
* cli: flush stdout during watch-logs
* PR#2264: replace deprecated function with logging
* replace deprecated function with logging
* PR#2262: Pass bootloader append option to livemedia builds
* Pass bootloader append option to livemedia builds
* PR#2195: koji-gc: allow specifying CC and BCC address for email notifications
* fix indentation
* hide bcc addresses
* Add CC/BCC for email notifications
* PR#2141: kojiweb: update for mod\_auth\_gssapi configuration
* kojiweb: update for mod\_auth\_gssapi configuration
* PR#2238: hub: deprecate host.getTask call
* hub: deprecate host.getTask call
* PR#2224: cli: fix variable name
* cli: fix variable name
* PR#2245: cli: extend docs for --before/--after options
* cli: extend docs for --before/--after options
* PR#2246: deprecated warning for cli option --ca as well
* warning for both cli and config file option
* deprecated warning for cli option --ca as well
* PR#2248: doc: links to copr builds
* doc: links to copr builds
* PR#2223: cli: fix un/lock-tag permission handling
* cli: fix un/lock-tag permission handling
* PR#2241: hub: API docs
* hub: API docs
* PR#2242: hub: additional API docs
* hub: additional API docs
* PR#2199: koji-gc: add systemd unit files
* koji-gc: add systemd unit files
* PR#2157: kojira: use cached getTag for external repos
* kojira: use cached getTag for external repos
* PR#2226: cli: deprecate --ca
* update comments
* cli: deprecate --ca
* PR#2197: Use %autosetup (fixes #2196)
* Use %autosetup
* PR#2235: doc: update postgresql-setup command for el8 and Fedora
* doc: update postgresql-setup command for el8 and Fedora
* PR#2236: fix additional flake8 problems
* fix additional flake8 problems
* PR#2233: fix flake8 errors
* fix flake8 errors
* PR#2151: koji-gc: support request\_kerberos
* replace krb\_login with gssapi\_login
* koji-gc: support request\_kerberos
* PR#2211: koji-gc: test existence of trashcan tag
* koji-gc: test existence of trashcan tag
* PR#2132: listSideTags returns also user info
* listSideTags returns also user info
* PR#2187: koji-sweep-db: use "Type=oneshot" for systemd
* koji-sweep-db: use "Type=oneshot" for systemd
* PR#2213: Correct docstring about deleting inheritance rules
* Correct docstring about deleting inheritance rules
* PR#2209: koji-utils: only requires /usr/bin/python2 on rhel<=7
* koji-utils: only requires /usr/bin/python2 on rhel<=7
* PR#2205: doc: fix koji-sweep-db filename typo
* doc: fix koji-sweep-db filename typo
* PR#2206: doc: indent SQL query for user ID discovery
* doc: indent SQL query for user ID discovery
* PR#2207: cli: improve grant-permission --new --help message
* cli: improve grant-permission --new --help message
* PR#2203: hub: admin can't force tag now
* don't traceback on missing user
* hub: admin can't force tag now
* PR#2194: remove obsoleted note
* docs: remove obsoleted recommendation to restart kojira
* PR#2158: hub: document addExternalRepoToTag arguments
* hub: document addExternalRepoToTag arguments
* PR#2172: hub: document createUser arguments
* hub: document createUser arguments
* PR#2180: cli: fix "list-history --help" text for "--cg"
* cli: fix "list-history --help" text for "--cg"
* PR#2044: Unify error messages in CLI
* fix tests
* replace print + return 1 with error()
* fix flake8
* PR#2024: queue log file for kojira
* kojira: queue\_file docs
* kojira: queue status file
* PR#2136: replace logging.warn with warning
* replace logging.warn with warning
* PR#2038: Don't use listTagged(tag, \*) for untag-build
* fix chain iteration
* Don't use listTagged(tag, \*) for untag-build
* PR#2103: fix list-signed --tag memory issues
* fix list-signed --tag memory issues
* PR#2150: translate exceptions to GenericError
* translate exceptions to GenericError
* PR#2176: hub: document editUser method
* hub: document editUser method
* PR#2175: kojira: remove duplicate Kerberos configuration boilerplate
* doc: use newer configuration boilerplate for kojira
* kojira: remove duplicate Kerberos configuration boilerplate
* PR#2177: doc: "koji build" requires a target
* doc: "koji build" requires a target
* PR#2178: docs: Fix sidetag enablement typo
* docs: Fix sidetag enablement typo
* PR#2174: hub: document removeExternalRepoFromTag arguments
* hub: document removeExternalRepoFromTag arguments
* hub: document getTagExternalRepos
* fix docs
* missing file from 1.21 docs
* hub: document getTagExternalRepos
* PR#2146: Release notes 1.21
* Release notes 1.21
* PR#2168: turn off checking external repos by default
* adjust grammar
* turn off checking external repos by default
* PR#2147: hub: assert\_policy - use hasPerm instead of assertPerm
* hub: assert\_policy - use hasPerm instead of assertPerm
* Fix automatic trailing-space removal
* PR#2057: update docs on httpd configuration
* Make the docs more in line with our example configs
* update docs on httpd configuration
* PR#1385: Add --no-delete option to clone-tag
* clone-tag: avoid marking and then unmarking for deletion
* clone-tag: force extra builds last if not removing them
* comments
* fix tests
* fix ordering for retagged builds
* overtag existing builds
* clone-tag --no-delete mode
* PR#2054: editSideTag API call
* rebase fixes
* fixes
* edit rpm macros
* simplify checks
* add is\_sidetag policy test
* revert main hub changes
* introduce is\_sidetag\_owner policy
* remove un/block part
* editSideTag API call
* PR#2081: new policy for dist-repo
* drop "keys" field
* fix typo
* new policy for dist-repo
* PR#2129: hub: document deleteExternalRepo arguments
* hub: document deleteExternalRepo arguments
* PR#2128: hub: document getExternalRepo arguments
* hub: document getExternalRepo arguments
* PR#2127: fix sanity check in merge\_scratch
* fix sanity check in merge\_scratch
* PR#2125: Set default keytab for kojira
* Set default keytab for kojira
* PR#2071: Better help for build/latest-build
* more grammar changes
* fix test
* fix grammar
* Better help for build/latest-build
* PR#516: kojira monitors external repos changes
* remove incomprehensible check
* kojira monitors external repos changes
* PR#2121: kojira: be tolerant of old with\_src configuration option
* kojira: be tolerant of old with\_src configuration option
* PR#2105: always set utf8 pg client encoding
* always set utf8 pg client encoding
* PR#2106: kojira: Allow using Kerberos without krbV
* kojira: Allow using Kerberos without krbV
* PR#2088: fix missing /lib/ in hub-plugins path
* fix missing /lib/ in hub-plugins path
* PR#2097: display merge mode for external repos
* display merge mode for external repos
* PR#2098: move admin force usage to assert\_policy
* add refusal reason to log
* move admin force usage to assert\_policy
* PR#1990: allow debuginfo for sidetag repos
* fix typo
* allow debuginfo for sidetag repos
* PR#2082: delete oldest failed buildroot, when there is no space
* remove unneeded condition
* delete main part of data
* add real delete
* delete oldest failed buildroot, when there is no space
* PR#2115: Correct json.dumps usage
* fix tests
* better logging in protonmsg
* use correct json dump
* PR#2113: don't break on invalid task
* don't break on invalid task
* PR#2058: merge\_scratch: Compare SCM URLs only if built from an SCM
* add param parsing also to base task
* use library functions
* Compare SCM URLs only if build from an SCM
* PR#2074: Limit final query by prechecking buildroot ids
* use same set operators
* move inner join before outer joins
* Limit final query by prechecking buildroot ids
* PR#2022: reverse score ordering for tags
* reverse score ordering for tags
* PR#2056: fix table name
* fix table name
* PR#2002: try to better guess mock's error log
* try to better guess mock's error log
* PR#2080:  koji download-build - consider resume downloads by default
* download\_archive / download\_rpm methods for CLI
* Range: header: use old school fmt % operator
* issues/1880: send Range: header to accelerate duplicate/partial downloads
* PsR#2042: add-host work even if host already tried to log in
* fix tests
* check krb\_principal before it is rewritten
* query on krb only if it is requested
* fix test
* fix get\_user params
* add-host work even if host already tried to log in
* hR#2051: hub: editTagExternalRepo is able to set merge\_mode
* unittests: for edit-external-repo cmd and editTagExternalRepo API
* cli: extend edit-external-repo to support change of priority and merge mode
* hub: editTagExternalRepo is able to set merge\_mode
* PR#2040: koji.ClientSession: fix erroneous conversion to latin-1
* koji.ClientSession: fix erroneous conversion to latin-1
* PR#2089: propagate event to get\_tag\_extra
* propagate event to get\_tag\_extra
* PR#2047: limit size of extra field in proton msgs
* use buildinfo copy
* limit size of extra field in proton msgs
* PR#2019: log --force usage by admins
* fix logging package name
* log --force usage by admins
* PR#2083: allow to skip SRPM rebuild for scratch builds
* allow to skip SRPM rebuild for scratch builds
* PR#2068: use real time for events
* use real time for events
* PR#2078: Adapt older win-build docs
* include example spec
* Adapt older win-build docs
* PR#2075: Don't use datetime timestamp() as it's not in Python 2
* Don't use datetime timestamp() as it's not in Python 2
* PR#2028: make xz options configurable
* make xz options configurable
* PR#2079: prune old docs about interaction with Fedora's koji
* prune old docs about interaction with Fedora's koji
* PR#2030: raise error on non-existing tag
* raise error on non-existing tag
* PR#1749: rpm: remove references to EOL fedora versions
* rpm: remove references to EOL fedora versions
* PR#1194: client: use default CA store during SSL auth if serverca is unset
* client: use default CA store during client auth if serverca is unset
* PR#2073: trivial flake8 warning fix
* trivial flake8 warning fix
* PR#2048: use only gssapi\_login in CLI
* use only gssapi\_login in CLI
* PR#2016: Add detail about known koji signatures to buildinfo
* Add detail about known koji signatures to buildinfo
* PR#2027: raise GenericError instead of TypeError in filterResults
* raise GenericError on non-existing API call
* raise GenericError instead of TypeError in filterResults
* PR#2009: CG: add and update buildinfo.extra.typeinfo if it doesn't exist
* CG: add and update buildinfo.extra.typeinfo if it doesn't exist
* PR#2032: 1.20.1 release notes
* update for last fix
* fix typo
* 1.20.1 release notes
* PR#2060: build\_references: fix the type of event\_id used by max
* build\_references: fix the type of event\_id used by max
* PR#2049: extending flake8 rules
* flake8: apply rules for koji-sidetag-cleanup
* still use BaseException for logging purpose
* use Exception instead of BaseException for bare expection
* flake8: ignore F812 rule for PY2
* flake8: update contribution guide for flake8
* add test-requirements.txt to install testing related modules by pip
* flake8: apply all rules after rebasing
* flake8: apply W rules (prefering W503)
* flake8: apply E501 with max-line-length=99
* flake8: apply all rest E7 rules
* flake8: apply E71x rule
* flake8: apply E70x rule
* flake8: apply E502 rule
* flake8: apply E4 rules and ignore E402 in sidetag\_hub plugin
* flake8: apply E3 rules
* flake8: apply E2 rules except E266
* flake8: apply E1 rules
* flake8: apply E265 for util/koji-\*
* flake8: apply F rules for koji-shadow
* refine import style
* flake8: util/koji-\* were ignored
* flake8: follow E265 rule
* flake8: follow all F rules
* PR#1891: Disable notifications from clone-tag by default
* Disable notifications from clone-tag by default
* allow python to find its own version of nose rather than looking for a binary which may not exist
* PR#2006: add missing koji-sidetag-cleanup script
* add missing koji-sidetag-cleanup script
* PR#2025: Include livemedia builds in accepted wrapperRPM methods
* Include livemedia builds in accepted wrapperRPM methods
* PR#2045: insert path before import kojihub
* PR#2034: update docs to current jenkins setup
* update docs to current jenkins setup
* PR#1987: Add doc string for virtual methods
* move \_apidoc cache to session
* Add doc string for virtual methods
* PR#1916: replace xmlrpc\_client exception with requests
* replace xmlrpc\_client exception with requests
* PR#751: xmlrpcplus: use parent Marshaller's implementations where possible
* xmlrpcplus: use parent Marshaller's nil implementation
* xmlrpcplus: use parent's int marshalling if possible
* PR#2004: obsolete external sidetag plugin
* obsolete external sidetag plugin
* PR#1992: deprecation of krb\_login
* deprecation of krb\_login
* PR#2020: move needed functions
* move needed functions
* PR#1958: fix potentially undeclared variable error
* fix potentially undeclared variable error
* announce utf-8 coding
* insert path before import kojihub
* PR#2001: remove usage of deprecated cgi.escape function
* remove usage of deprecated cgi.escape function
* PR#1333: file locking for koji-gc
* more detailed help message
* default value for --lock-file option
* add file-locking to koji-gc
* PR#692: Add smtp authentication support
* Add smtp authentication support to koji-gc
* Add smtp authentication support
* PR#1956: Merge sidetag plugin
* remove unused imports
* fix basetag argument
* PR#1465: unittest fix: tests/test\_cli/test\_list\_tagged.py
* unittest fix: tests/test\_cli/test\_list\_tagged.py
* PR#478: Add \_taskLabel entry for indirectionimage
* Add \_taskLabel entry for indirectionimage
* PR#2000: hub: improve listBTypes() API documentation
* hub: improve listBTypes() API documentation
* PR#1993: Always use stream=True when iterating over a request
* Always use stream=True when iterating over a request
* PR#1058: Add 'target' policy
* Add 'target' policy
* PR#1960: user proper type for buildroot state comparison
* user proper type for buildroot state comparison
* PR#1962: improve sql speed in build\_references
* improve sql speed in build\_references
* PR#938: Deprecating list-tag-history and tagHistory
* Deprecating list-tag-history and tagHistory
* PR#1488: Display params also for malformed tasks in webui
* fix rebase
* Display params also for malformed tasks in webui
* PR#1967: don't use full listTags in list-groups call
* don't user full listTags in list-groups call
* PR#1982: ensure that all keys in distrepo are lowered
* ensure that all keys in distrepo are lowered
* PR#1995: hub: improve search() API documentation
* hub: improve search() API documentation
* PR#1971: remove outdated comment in schema file
* outdated comment
* PR#1986: fix test
* fix test
* PR#1946: fix usage message for add-pkg
* fix usage message for add-pkg
* PR#1935: docs for kojira and koji-gc
* docs for kojira and koji-gc
* R#1944: analyze/vacuum all affected tables
* analyze/vacuum all affected tables
* PR#1984: Remove deprecated md5/sha1 constructors
* Remove deprecated md5/sha1 constructors
* PR#1059: Emit user in PackageListChange messages
* Emit user in PackageListChange messages
* PR#1929: fix flags display for list-tag-inheritance
* fix flags display for list-tag-inheritance
* PR#1945: check permission id in edit\_tag
* check permission id in edit\_tag
* PR#1948: check package list existence before blocking
* check package list existence before blocking
* PR#1949: don't allow setTaskPriority on closed task
* don't allow setTaskPriority on closed task
* PR#1950: print warn to stderr instead of stdout
* print warn to stderr instead of stdout
* PR#1951: add strict to getChangelogEntries
* add strict to getChangelogEntries
* PR#1947: fix help message for list-groups
* fix help message for list-groups
* PR#1919: expect, that hub is returning GM time
* expect, that hub is returning GM time
* PR#1920: display some taskinfo for deleted buildtags
* display some taskinfo for deleted buildtags
* PR#1975: update runs\_here.rst: correcting usage of koji at CERN
* update runs\_here.rst: correcting usage of koji at CERN
* PR#1934: remove unused option --with-src in kojira
* remove unused option --with-src in kojira
* PR#1923: web: fix typo - the param[0] is tag, not target
* web: fix typo - the param[0] is tag, not target
* PR#1911: hub: [newRepo] raise error when tag doesn't exist
* hub: [newRepo] raise error when tag doesn't exist
* PR#1886: cli: make list-signed accepting integer params
* cli: [list-signed] check rpm/build existance earlier
* cli: make list-signed accepting integer params
* PR#1863: hub: remove debugFunction API
* hub: remove debugFunction API
* PR#1908: koji 1.20 release
* prune less important changes
* partial edits
* a little cleanup
* missing closing markup
* fix whitespace
* koji 1.20 release
* PR#1909: a follow-up fix for koji-gc
* koji-gc: fix nvr refs
* PR#1921: fix test for PR1918
* fix test for PR1918
* PR#1893: raise GenericError on existing build reservation
* raise GenericError on existing build reservation
* PR#1917: Update typeinfo metadata documentation
* Update typeinfo metadata documentation
* PR#1918: cli: add "--new" option in "grant-permission" help summary
* cli: add "--new" option in "grant-permission" help summary
* PR#1912: hub: [distRepo] fix input tag arg for getBuildConfig call
* hub: [distRepo] fix input tag arg for getBuildConfig call
* PR#1832: docstrings for API
* docstrings for API
* PR#1889: fix nvr/dict params
* fix nvr/dict params
* PR#1743: basic zchunk support for dist-repo
* basic zchunk support for dist-repo
* PR#1869: limit distRepo tasks per tag
* use getBuildConfig
* limit distRepo tasks per tag
* PR#1873:  koji-gc: untagging/moving to trashcan is very slow
* use more multicalls in koji-gc
* listTags needn't permissions every time
* PR#1829: Add a sanity check on remotely opened RPMs
* added koji exceptions
* refactor
* Add a sanity check on remotely opened RPMs
* PR#1892: kojid: use binary msg for python3 in \*Notification tasks
* kojid: use binary msg for python3 in \*Notification tasks
* PR#1854: do not use with statement with requests.get
* do not use with statement with requests.get
* PR#1875: document noarch rpmdiff behaviour
* document noarch rpmdiff behaviour
* PR#1872: hub: getUser: default krb\_princs value is changed to True
* hub: getUser: default krb\_princs value is changed to True
* PR#1824: additional options to clean database
* additional options to clean database
* PR#1246: split admin\_emails option for kojid
* split admin\_emails option in koji.add\_mail\_logger
* PR#1794: merge duplicate docs
* merge duplicate docs
* PR#763: clean all unused \`import\` and reorder imports
* PR#1626: build can wait for actual repo
* build can wait for actual repo
* PR#1640: Provide for passing credentials to SRPMfromSCM
* Provide for passing credentials to SRPMfromSCM
* PR#1820: [web] human-friendly file sizes in taskinfo page
* [web] human-friendly file sizes in taskinfo page
* fix import of get\_usage\_str in commands.py
* \`make flake8\` targets and .flake8 config
* remove unused imports
* sort imports for other scripts
* fix newline betwwen koji and relative imports
* sort imports in builder
* sort imports in cli
* sort imports in hub
* sort imports in koji
* sort imports in plugins
* sort imports in vm
* sort imports in www
* sort imports in util
* PR#1821: browsable api
* browsable api
* PR#1839: fix closing table tag
* fix closing table tag
* PR#1785: unify return values for permission denied
* fix permission check in CLI
* fix tests
* get\_usage\_str
* unify BNF options
* fix translation strings
* remove asserts
* unify return values for permission denied
* PR#1428: Add koji-gc/kojira/koji-shadow to setup.py
* Add koji-gc/kojira/koji-shadow to setup.py
* PR#1868: extend docstrings for CGInit/RefundBuild
* extend docstrings for CGInit/RefundBuild
* PR#1853: fix CGRefundBuild to release build properly
* fix CGRefundBuild to release build properly
* PR#1862: gitignore: exclude .vscode folder
* PR#1845: QueryProcessor: fix countOnly for group sql
* add tests for group and countOnly for QueryProcessor
* fix countOnly for group sql
* gitignore: exclude .vscode folder
* PR#1850: fix conflict -r option for kernel version
* fix conflict -r option for kernel version
* PR#1848: list-pkgs: fix opts check
* list-pkgs: fix opts check
* PR#1847: hub: fix BulkInsertProcessor call in CGImport
* hub: fix BulkInsertProcessor call in CGImport
* PR#1841: continue instead of exiting
* continue instead of exiting
* PR#1837: A few fixes for kojikamid
* include CHECKSUM\_TYPES in kojikamid.py, and use it when validating checksums of downloaded files
* kojikamid.py: use urllib from six.moves
* fix argument type in format string
* PR#1823: docs for partitioning buildroot\_listings
* docs for partitioning buildroot\_listings
* PR#1771: koji-sweep-db: Turn on autocommit to eliminate VACUUMing errors
* koji-sweep-db: Turn on autocommit to eliminate VACUUMing errors
* PR#723: improve test and clean targets in Makefiles
* fixes typo in test3
* runtest adjusting
* improve test and clean targets in Makefiles
* PR#1037: use --update for dist-repos if possible
* use --update for dist-repos if possible
* PR#1817: document tag inheritance
* grammar fixes
* document tag inheritance
* PR#1691: human-readable timestamp in koji-gc log
* human-readable timestamp in koji-gc log
* PR#1755: drop buildMap API call
* rewrite list-untagged to use buildReferences
* drop buildMap API call
* PR#1814: some list-pkgs options work only in combinations
* some list-pkgs options work only in combinations
* PR#821: Log kernel version used for buildroot
* Log kernel version used for buildroot
* PR#983: fix downloads w/o content-length
* fix downloads w/o content-length
* PR#284: Show build link(s) on buildContainer task page
* Show build link(s) on buildContainer task page
* PR#1826: fix time type for restartHosts
* fix test
* fix time type for restartHosts
* PR#1790: remove old db constraint
* remove old db constraint
* PR#1775: clarify --ts usage
* clarify --ts usage
* PR#1542: Replace urllib.request with requests library
* move from urrlib.request.urlopen to requests.get
* drop compatrequests variant
* Implement openRemoteFile with requests or compatrequests
* PR#1380: no notifications in case of deleted tag
* no notifications in case of deleted tag
* PR#1787: raise error when config search paths is empty
* raise error when config search paths is empty
* PR#1828: cli: refine output of list-signed
* cli: refine output of list-signed
* PR#1781: Remove title option for livemedia-creator
* Remove title option for livemedia-creator
* PR#1714: use BulkInsertProcessor for hub mass inserts
* fix typo and extend unit test to cover where it occurred
* support batch operation in BulkInsertProcessor
* rename set\_record to add\_record
* use BulkInsertProcessor for hub mass inserts
* PR#1797: hub: build for policy check should be build\_id in host.tagBuild
* policy test: ImportedTest - accept dict as build
* PR#1807: util: rename "dict" arg
* util: rename "dict" arg
* PR#1149: hub: new addArchiveType RPC
* hub: new addArchiveType RPC
* PR#1798: rm old test code
* rm old test code
* PR#1795: fix typos for GenericError
* fix typos for GenericError
* PR#1799: hub: document cg\_import parameters
* hub: document cg\_import parameters
* PR#1804: docs: MaxRequestsPerChild -> MaxConnectionsPerChild
* docs: MaxRequestsPerChild -> MaxConnectionsPerChild
* PR#1806: docs: explain "compile/builder1" user principal
* docs: explain "compile/builder1" user principal
* PR#1800: rpm: remove %defattr
* rpm: remove %defattr
* PR#1805: docs: recommend 2048 bit keys
* docs: recommend 2048 bit keys
* PR#1801: docs: fix indent for reloading postgres settings
* docs: fix indent for reloading postgres settings
* PR#1802: docs: simplify admin bootstrapping intro
* docs: simplify admin bootstrapping intro
* PR#1803: docs: fix rST syntax for DB listening section
* fix indenting
* docs: fix rST syntax for DB listening section
* PR#1551: cluster health info page
* cluster health info page
* PR#1525: include profile name in parsed config options
* include profile name in prased config options
* PR#1773: make rpm import optional in koji/\_\_init\_\_.py
* make rpm import optional in koji/\_\_init\_\_.py
* PR#1767: check ConfigParser object rather than config path list
* check ConfigParser object rather than config path list
* PR#1782: 1.19.1 release
* 1.19.1 release
* PR#1745: allow comma delimiter for allowed\_methods
* allow comma/space delimiter for allowed\_methods
* PR#1769: koji-gc: Fix up usage of default configuration file
* koji-gc: Fix up usage of default configuration file
* PR#1724: don't expect all buildReferences fields (koji-gc)
* don't expect all buildReferences fields (koji-gc)
* PR#1726: fix typo in --ignore-tags
* fix typo in --ignore-tags
* PR#1732: add \_remote.repositories to ignored maven files
* add \_remote.repositories to ignored maven files
* PR#1738: --disabled alias for --not-enabled in list-hosts
* --disabled alias for --not-enabled in list-hosts
* PR#1716: split docs to subdirectories
* split docs to subdirectories
* PR#1742: check existence of maven symlink
* check existence of maven symlink
* PR#1761: remove accuracy from koji-sweep-db timer
* remove accuracy from koji-sweep-db timer
* PR#1751: hub: Fix issue with listing users and old versions of Postgres
* hub: Fix issue with listing users and old versions of Postgres
* PR#1760: fix typo in table column name
* fix typo in table column name
* PR#1753: Fix hub reporting of bogus ownership data
* hub: Fix permissions in readPackageList()
* PR#1695: clean python compiled binaries for non \*.py code
* clean python compiled binaries for non \*.py code
* PR#1733: allow tag or target permissions as appropriate (on master)
* make tests work
* check for tag or target permission in addition to admin for relevant CLI calls
* PR#1739: More default values in example kojihub.conf
* More default values in example kojihub.conf
* PR#1736: 1.19 release
* Updated changelog
* Updated migration doc
* 1.19 release
* PR#1720: backward-compatible db conversion
* backward-compatible db conversion
* require python-qpid-proton on RHEL7
* PR#1713: cli: fix typo in edit-user cmd
* cli: fix typo in edit-user cmd
* PR#1662: CGUninitBuild for cancelling CG reservations
* CGUninitBuild for cancelling CG reservations
* PR#1681: add all used permissions to db
* add all used permissions to db
* PR#1702: fix log message to show package name
* fix log message to show package name
* PR#1682: mostly only mock exit code 10 ends in build.log
* mostly only mock exit code 10 ends in build.log
* PR#1694: doc: change user creating sql for kerberos auth
* doc: change user creating sql for kerberos auth
* PR#1706: fix test for RHEL6
* fix test for RHEL6
* PR#1701: fix user operations typos
* fix unitest import for el6
* cli: fix edit-user command for multiple kerberos support
* fix editUser api for multiple kerberos support
* hub: [get\_group\_members] return field is not named as alias
* fix typos in auth.py
* hub: [getUser] support dict userInfo
* PR#1296: extract read\_config\_files util for config parsing
* strict per item in config\_files
* fix test\_runroot\_builder tests
* use RawConfigParser for kojid
* extract read\_config\_files util for config parsing
* PR#1670: verifyChecksum fails for non-output files
* verifyChecksum fails for non-output files
* PR#1492: bundle db maintenance script to hub
* clean build\_reservations table
* Add vaccum to sessions cleanup
* remove typo
* improve docs
* remove Install section
* bundle db maintenance script to hub
* PR#1160: hub: new listCGs RPC
* hub: new listCGs RPC
* PR#1120: Show inheritance flags in list-tag-inheritance output
* move flags to front
* display flags in list-tag-inheritance
* Split out inheritance flags formatting
* PR#1683: in f30+ python-devel defaults to python3
* in f30+ python-devel defaults to python3
* PR#1685: Tag permission can be used for un/tagBuildBypass
* Updated docs for tag permission
* Tag permission can be used for un/tagBuildBypass
* PR#902: Added editUser api call
* Added editUser api call
* PR#1684: use preferred arch if there is more options
* use preferred arch if there is more options
* PR#1700: README: fix bullet indentation
* README: fix bullet indentation
* PR#1159: enforce unique content generator names in database
* enforce unique content generator names in database
* PR#1699: remove references to PythonOption
* web: remove reference to PythonOption
* hub: remove reference to PythonOption
* PR#923: Remove Groups CLI Call
* Added CLI counterpart to groupListRemove
* PR#1696: fix typo in createUser
* fix typo in createUser
* PR#1419: checking kerberos prinicipal instead of username in GSSAPI authentication
* PR#1648: support multiple realms by kerberos auth
* fix unittests
* fix error msg and regex sytax
* hub: fix condition mistake in get\_user
* add an option to set server realm for all clients
* hub: remove asList in queryOpts of list\_user\_krb\_principals
* hub: backward compatible for cli moshimoshi command
* cli: fix moshimoshi for krbLogin
* fix table name typo
* hub: add AllowedKrbRealms option and (add|remove)UserKrbPrincipal API
* change users and krb\_principal operations
* update schema with new table - user\_krb\_principals
* doc: GssapiLocalName should be off
* backwards compatibility for ProxyDNs change
* adding some notes in documents
* fix typo
* in proxyuser case, do use username rather than principal
* keep on using REMOTE\_USER
* use GSS\_NAME instead of REMOTE\_USER for GSSAPI auth
* PR#1657: Use bytes for debug string
* Use bytes for debug string
* PR#1068: hub: [getRPMFile] add strict behavior
* hub: [getRPMFile] add strict behavior
* PR#1631: check options for list-signed
* check options for list-signed
* PR#1688: clarify fixed/affected versions in cve announcement
* clarify fixed/affected versions
* PR#1687: Docs updates for CVE-2019-17109
* bump version to match most recent release
* bump docs version
* release notes for 1.18.1
* CVE-2019-17109 announcement text
* PR#1686: Fix for CVE-2019-17109
* whitespace: adjust indentations
* hub plugins: use joinpath instead of os.path.join
* hub: use joinpath instead of os.path.join
* tests for joinpath
* joinpath function
* PR#1680: drop unused host.repoAddRPM call
* drop unused host.repoAddRPM call
* PR#1666: Fix typo preventing vm builds
* Fix typo preventing vm builds
* PR#1677: docs for build.extra.source
* docs for build.extra.source
* PR#1675: Subselect gives better performance
* Subselect gives better performance
* PR#1642: Handle sys.exc\_clear in Python 3
* Handle sys.exc\_clear in Python 3
* PR#1157: cli: [make-task] raise readable error when no args
* cli: [make-task] raise readable error when no args
* PR#1678: swapped values in message
* PR#1676: Made difference between Builds and Tags sections more clear
* Made difference between Builds and Tags sections more clear
* swapped values in message
* PR#1173: hub: [groupListRemove] raise Error when no group for tag
* fix sql order in test
* fix unavailable id column
* hub: [groupListRemove] raise Error when no group for tag
* PR#1197: [lib] ensuredir: normalize directory and don't throw error when dir exists
* update docstr and do not swallow other errno
* [lib] ensuredir: normalize directory and don't throw error when dir exists
* PR#1244: hub: add missing package list check
* hub: add missing package list check
* PR#1523: builder: log insufficent disk space location
* builder: log insufficent disk space location
* PR#1616: docs/schema-upgrade-1.18-1.19.sql/schema.sql: additional CoreOS artifact types
* docs/schema.sql: update for changes in schema-upgrade-1.18-1.19.sql
* docs/schema-upgrade-1.18-1.19.sql: additional CoreOS artifact types
* PR#1643: fix schema.sql introduced by moving owner from tag\_packages to another table
* fix schema.sql introduced by moving owner from tag\_packages to another table
* PR#1589: query builds per chunks in prune-signed-builds
* query builds per chunks in prune-signed-builds
* PR#1653: Allow ClientSession objects to get cleaned up by the garbage collector
* Allow ClientSession objects to get cleaned up by the garbage collector
* PR#1473: move tag/package owners to separate table
* move tag/package owners to separate table
* PR#1430: koji-gc: Added basic email template
* Added basic email template
* PR#1633: Fix lookup\_name usage + tests
* Fix lookup\_name usage + tests
* PR#1627: Don't allow archive imports that don't match build type
* raise an error when adding an archive of the wrong type
* correct error text
* PR#1618: write binary data to ks file
* write binary data to ks file
* PR#1623: Extend help message to clarify clone-tag usage
* fix tests for clone tag
* Extend help message to clarify clone-tag usage
* PR#1621: rework update of reserved builds
* pass correct buildinfo to callbacks
* rework update of reserved builds
* PR#1508: fix btype lookup in list\_archive\_files()
* fix unit test
* fix btype lookup in list\_archive\_files()
* PR#1223: Unit test download\_file
* update jenkins setup
* Unit tests download\_file with errors status code
* PR#1613: Allow builder to attempt krb if gssapi is available
* fix krbV error handling
* Allow builder to attempt krb if gssapi is available
* PR#1612: use right top limit
* use right top limit
* PR#1595: enable dnf\_warning in mock config
* enable dnf\_warning in mock config
* PR#1458: remove deprecated koji.util.relpath
* remove deprecated koji.util.relpath
* PR#1511: remove deprecated BuildRoot.uploadDir()
* remove deprecated BuildRoot.uploadDir()
* PR#1512: remove deprecated koji\_cli.lib\_unique\_path
* remove deprecated koji\_cli.lib\_unique\_path
* PR#1490: deprecate sha1/md5\_constructor from koji.util
* deprecate sha1/md5\_constructor from koji.util
* PR#1588: 1.18 release
* fix release date
* include a few more PRs in release notes
* another changelog update
* update changelog again
* update changelog
* typo
* update version for PyPi
* migration note about permissions
* cleanup
* more relnotes updates
* initial release notes
* bump version, add changelog
* migration doc
* add new indexes in schema upgrade
* PR#1606: pull owner from correct place
* pull owner from correct place
* PR#1602: copy updated policy for reserved cg builds
* copy updated policy for reserved cg builds
* PR#1601: fix recycling build due to cg
* fix recycling build due to cg
* PR#1597: Backward-compatible fix for CG import
* Backward-compatible fix for CG import
* PR#1591: secrets import is missing 'else' variant
* secrets import is missing 'else' variant
* PR#1555: use \_writeInheritanceData in \_create\_tag
* use \_writeInheritanceData in \_create\_tag
* PR#1580: cli: verify user in block-notification command
* cli: verify user in block-notification command
* PR#1578: cli:fix typo in mock-config
* cli:fix typo in mock-config
* PR#1464: API for reserving NVRs for content generators
* only check epoch against reservation if it is given
* default epoch to None in cg\_init\_build()
* error if reservation token given without build\_id
* clear reservation when cg build completes
* move cg\_id to build table
* better error messages
* docs for CG reservation API
* CLI shows reservation
* fix tests for CLI
* extended getBuild to return reservations
* delete tokens on cancelBuild
* restrict to cg\_id
* remove debug
* move token from metadata to api option
* migration for build\_reservations
* use token for reservation
* remove debug print
* leave recycle\_build untouched
* move init\_build out of CG\_Importer
* reverse wrong strict logic
* raise an error on repeated call cgInitBuild for same nvr
* API for reserving NVRs for content generators
* PR#898: Add support for tag/target macros for Mageia
* adjust tag macro namespace
* some macro values should not be overridable
* Add support for tag/target macros for Mageia
* PR#1544: use RawConfigParser for kojid
* use RawConfigParser for kojid
* PR#863: cli: change --force to real bool arg for add-tag-inheritance
* cli: change --force to real bool arg for add-tag-inheritance
* PR#1253: cli: add option for custom cert location
* cli: add option for custom cert location
* PR#1353: Create db index for listTagged
* few more useful indices on tag\_packages
* Create db index for listTagged
* PR#1375: docs: add architecture diagram
* docs: add architecture diagram
* PR#892: cli: also load plugins from ~/.koji/plugins
* shorten help text
* fix whitespace
* adjust cli plugin config description
* cli: also load plugins from ~/.koji/plugins
* PR#1516: kojibuilder: Pass mergerepo\_c --all for bare mode as well
* kojibuilder: Pass mergerepo\_c --all for bare mode as well
* PR#1524: set module\_hotfixes=1 in yum.conf via tag config
* reflect module\_hotfixes also in CLI
* set module\_hotfixes=1 in yum.conf via tag config
* PR#1417: notification's optouts
* unused variables
* fix test names
* use list for db instead of set
* API/CLI/tests for notification blocks
* notification optout tests
* apply opt-outs in get\_notification\_recipients
* update migration for notification optouts
* new table for notification blocks
* PR#1515: add debug message to new multicall to match original
* add debug message to new multicall to match original
* PR#1480: Add raw-gz and compressed QCOW2 archive types
* change moved to 1.18, so adjust schema upgrade scripts
* Add raw-gz and compressed QCOW2 archive types
* PR#1260: use LANG=C for running all tests
* use LANG=C for running tests comparing human-readable output
* PR#1447: handle deleted tags in kojira
* avoid duplicate ManagedRepo instance
* fix a logging error
* fix getTag invocation
* provide value for repo in untracked case
* handle deleted tags in kojira
* PR#1513: Allow hub policy to match version and release
* Allow hub policy to match version and release
* PR#1462: rebuildSRPM task
* remove unneeded chown
* rename source\_srpm to srpm
* use getBuildConfig with event\_id to check for rebuild\_srpm setting
* rebuildSRPM task
* PR#1498: Pass bytes to md5\_constructor
* encode to bytes only under py3
* Pass bytes to md5\_constructor
* PR#1502: Don't pass block list in bare merge mode
* Don't pass block list in bare merge mode
* PR#1489: pass bytes to sha1 constructor
* pass bytes to sha1 constructor
* PR#1499: remove merge option from edit-external-repo
* remove merge option from edit-external-repo
* PR#1427: Fix typo in getArchiveTypes docstring
* Drop new line
* Fix typo in getArchiveTypes dosctring
* PR#957: New multicall interface
* fix typo
* update multicall docs
* use multicall in a few more places in the cli
* update docstring
* support batch option in MultiCallSession
* expand unit test a little
* provide multicall attribute for backwards compat
* stub unit test
* cleanup
* store args/kwargs in VirtualCall instances
* strict option for MultiCallSession class
* get a MultiCallSession by calling session.multicall
* add a context manager
* Use VirtualCall helper
* first stab at a new multicall approach
* PR#1280: put fix\_pyver before printing command help
* put fix\_pyver before printing command help
* PR#1415: New 'buildtype' test for policies
* New 'buildtype' test for policies
* PR#1258: retain old search pattern in web ui
* search form on one line
* combine search and searchresults templates
* retain form values in search page
* retain search type
* retain old search pattern in web ui
* PR#1479: use better index for sessions
* use better index for sessions
* PR#1279: let hub decide, what headers are supported
* let hub decide, what headers are supported
* PR#1454: introduce host-admin permission + docs
* clean up doc
* add 'target' permission
* add "tag" permission
* introduce 'host' permission + docs
* PR#1303: fix history display for parallel host\_channels updates
* fix history display for parallel host\_channels updates
* PR#1278: createrepo\_c is used by default now
* createrepo\_c is used by default now
* PR#1449: show load/capacity in list-channels
* fix test
* more readable layout
* fix test
* show load/capacity in list-channels
* PR#1476: Allow taginfo cli to use tag IDs; fixed Inheritance printing bug
* Allow taginfo cli to use tag IDs; fixed bug where Inheritance always used the last tag when querying for multiple tags. Tries string before ID in taginfo
* PR#1445: turn back on test skipped due to coverage bug
* turn back on test skipped due to coverage bug
* PR#1452: fix parentheses for tuple in \_writeInheritanceData
* fix parentheses for tuple
* PR#1456: deprecate BuildRoot.uploadDir method
* deprecate BuildRoot.uploadDir method
* PR#1461: check existence of tag\_id in getInheritanceData
* check existence of tag\_id in getInheritanceData
* PR#1471: list-hosts shouldn't error on empty list
* list-hosts shouldn't error on empty list
* PR#1273: Allow generating separate src repo for build repos
* don't add noarch rpms to src-only repos
* Allow generating separate src repo for build repos
* PR#1255: always check existence of tag in setInheritanceData
* check parents in \_writeInheritanceData
* always check existence of tag in setInheritanceData
* PR#1256: add strict option to getTaskChildren
* fix tests for updated query
* use correct QueryProcessor methods; add strict opt to executeOne
* add strict option to getTaskChildren
* Move some Task methods to QueryProcessor
* PR#1257: fail runroot task on non-existing tag
* fail runroot task on non-existing tag
* PR#1272: check architecture names for mistakes
* validate archs in addHost
* fix test for parse\_arches
* use same arch parsing for cli and hub
* check architecture names for mistakes
* PR#1322: Reduce duplicate "fixEncoding" code
* fix docstring
* fix str-type testing in fix\_encoding
* drop duplicate logic
* refactor fixEncodingRecurse
* PR#1327: volume option for dist-repo
* ensuredir for repo volume symlinks
* handle symlinks in pruneLocalRepos
* only call get\_info() if we're going to need it
* fix unit test
* handle other volumes in pruneLocalRepos
* kojira: handle repos on other volumes
* also write repo.json for normal repos
* write repo.json in dist\_repo\_init
* fix unit test
* add --volume option to dist-repo command
* add a comment about volumes in distRepoMove
* honor volume option in dist\_repo\_init
* pathinfo.distrepo volume option
* PR#1442: delete\_build: handle results of lazy build\_references call
* additional unit test
* fix unit test
* delete\_build: handle results of lazy build\_references call
* PR#1425: add --show-channels listing to list-hosts
* fix channel separator
* fix alignment
* add --show-channels listing to list-hosts
* PR#1432: py2.6 compatibility fix
* typo in comment
* py2.6 compatibility fix
* PR#1434: hub: fix check\_fields and duplicated parent\_id in \_writeInheritanceData
* check duplicated parent\_id in changes
* hub: fix check\_fields in \_writeInheritanceData
* PR#1439: user correct column in sql (getTask)
* user correct column in sql (getTask)
* PR#1437: fix table name in build\_references query
* fix table name in build\_references query
* PR#1414: Fix jenkins config for new python mock
* Fix jenkins config for new python mock
* PR#1411: handle bare merge mode
* fix mode name
* handle bare merge mode
* PR#1410: build\_srpm: Wait until after running the sources command to check for alt\_sources\_dir
* build\_srpm: Wait until after running the sources command to check for alt\_sources\_dir
* PR#1383: display task durations in webui
* remove unneeded import
* use time.time() for current timestamp
* display task durations in webui
* PR#1358: rollback errors in multiCall
* document multicall
* rollback errors in multiCall
* PR#1413: Makefile: print correct urls for test coverage
* runtests: tempdir prefix
* fix reported url in make test/test3
* PR#1409: Fix SQL after introduction of host\_config
* Fix SQL after introduction of host\_config
* PR#1324: createEmptyBuild errors for non-existent user
* fix test for numeric user\_id
* convert username to user\_id
* createEmptyBuild errors for non-existent user
* PR#1406: fix mapping iteration in getFullInheritance
* fix mapping iteration in getFullInheritance
* PR#1398: kojid: Download only 'origin'
* kojid: Download only 'repomd.xml'
* PR#1365: Check CLI arguments for enable/disable host
* Check CLI arguments for enable/disable host
* PR#1390: CLI list-channels sorted output
* CLI list-channels sorted output
* PR#1389: block\_pkglist compatibility fix
* block\_pkglist compatibility fix
* PR#1376: use context manager for open in CLI
* fix test for opening mock file
* use context manager for open in CLI
* PR#1392: Replace references to latest-pkg with latest-build
* Replace references to latest-pkg with latest-build
* PR#1386: scale task\_avail\_delay based on bin rank
* fix unit test
* tweak rank calculation
* scale task\_avail\_delay based on bin rank
* PR#1363: Use createrepo\_update even for first repo run
* Use createrepo\_update even for first repo run
* PR#1368: update test requirements in jenkins
* update test requirements in jenkins
* PR#1374: honor mock.package\_manager tag setting in mock-config cli
* fix unit test
* honor mock.package\_manager tag setting in mock-config cli
* PR#1387: remove unused variable
* remove unused variable
* PR#1143: hub: document CG access method arguments
* clarify create option
* hub: document revoke\_cg\_access arguments
* hub: document grant\_cg\_access arguments
* PR#1169: docs: use systemctl enable --now for postgres and kojid
* docs: use systemctl enable --now for kojid
* docs: use systemctl enable --now for postgres
* PR#1155: hub: document addHost and editHost arguments
* docstring updates
* hub: document editHost arguments
* hub: document addHost arguments
* PR#1242: kojid.conf documentation
* alphabetical options
* more updates to kojid.conf docs
* blank line to make sphinx happy
* a few edits
* kojid.conf documentation
* PR#1340: Update server doc for newer TLS and event worker
* Update server doc for newer TLS and event worker
* PR#1359: docs: remove "TBD" sections
* docs: remove "TBD" sections
* PR#1360: docs: remove mod\_python references
* docs: remove mod\_python references
* PR#1361: docs: kojirepod -> kojira
* docs: kojirepod -> kojira
* PR#1370: add vhdx archivetype
* adjust schema upgrade script
* add vhdx archivetype
* PR#1331: provide lower level versions of build\_target functions
* provide lower level versions of build\_target functions
* PR#1348: rm old references to Mozilla
* rm old references to Mozilla
* PR#1297: Support tilde in search
* Support tilde in search
* PR#1356: kojira: fix iteration over repos in py3
* kojira: fix iteration over repos in py3
* PR#1342: Remove python2.4 OptionParse fix
* Remove python2.4 OptionParse fix
* PR#1347: Fix hub startup handling
* disable mod\_wsgi reloading
* avoid multiple server\_setup calls when multiple threads in use
* PR#1346: Rely on ozif\_enabled switch in BaseImageTask
* Rely on ozif\_enabled switch in BaseImageTask
* PR#1344: add .tgz to list of tar's possible extensions
* add .tgz to list of tar's possible extensions
* PR#1086: hub: unittest for get\_external\_repos
* hub: unittest for get\_external\_repos
* PR#1170: docs: koji package provides schema.sql file
* docs: koji package provides schema.sql file
* PR#1281: remove urlescape from package name
* remove urlescape from package name
* PR#1304: hub: document setInheritanceData arguments
* hub: document setInheritanceData arguments
* PR#1277: Remove 'keepalive' option
* Remove 'keepalive' option
* PR#1330: fix docs typos
* fix docs typos
* PR#1339: fix typo in usage of six's import of MIMEText
* fix typo in usage of six's import of MIMEText
* PR#1337: minor gc optimizations
* build\_references: honor limit more thoroughly
* build\_references: use IN check for finding buildroot refs
* only check if build was a component of completed builds
* koji-gc: lazy buildref check, and check for component refs
* lazy opt for build\_references
* PR#1254: doc: Include AnyStor mention to 'koji runs here' doc
* Include AnyStor mention to 'koji runs here' doc
* PR#1325: run py3 tests in CI by default
* run py3 tests in CI by default
* PR#1326: README: link to Pungi project instead of mash
* README: link to Pungi project instead of mash
* PR#1329: Update plugin doc (confusing sentence)
* Update plugin doc (confusing sentence)
* PR#1275: bump release to 1.17.0
* update release date
* update changelog
* update for recent prs
* update changelog
* Release notes for 1.17.0
* migration doc for 1.17
* fix date
* also bump version in docs
* bump release to 1.17.0
* PR#1320: also remove nonprintable changelog chars in py3
* also remove nonprintable changelog chars in py3
* PR#1293: fix dict encoding in py3
* honor remove\_nonprintable in fixEncodingRecurse under py3
* skip fixEncoding for py3
* fix typo
* convert xmlrpc.Binary to string before fixEncoding
* expect string keys in fixEncodingRecurse
* PR#1309: Fix binary output in cli in py3
* drop unused import in unit test
* fix unit test for runroot cli plugin
* drop unused import in runroot plugin
* drop unused write\_to\_stdout function
* simpler function for dumping bytes to stdout
* PR#1317: fix deps for utils/vm subpackages on py3
* fix deps for utils/vm subpackages on py3
* PR#1315: fix checksum validation in CG\_Importer
* fix checksum validation in CG\_Importer
* PR#1313: Fix encoding issues with base64 data
* extend unit test a bit
* unit test for decode\_bytes
* fix file open mode
* fix imports
* use base64.b64decode
* use base64encode most places
* new base64 helper functions
* PR#1307: python3-koji-hub requires python3-psycopg2
* PR#1290: downloadTaskOutput fix for py3
* preserve downloadTaskOutput return type
* downloadTaskOutput fix for py3
* PR#1300: require correct mod\_wsgi
* require correct mod\_wsgi
* PR#1301: use greetings list from lib
* python3-koji-hub requires python3-psycopg2
* use greetings list from lib
* PR#1284: replace urrlib.quote with six.moves
* replace urrlib.quote with six.moves
* PR#1286: correctly escape license in web ui
* correctly escape license in web ui
* PR#1292: define \_sortByKeyFuncNoneGreatest as staticmethod
* define \_sortByKeyFuncNoneGreatest as staticmethod
* PR#1227: Added volume id as argument to livemedia and livecd tasks
* error if volume id is too long
* fix references to logger instance
* Added warnings and failures for too long volid
* Updated tests for volume id option
* Added volume id as argument to livemedia task
* PR#1070: consolidate access to rpm headers
* kojivmd, too
* consolidate access to rpm headers
* PR#1274: cve-2018-1002161
* pull in 1.16.1 release notes for completeness
* 1.16.2 release notes
* update cve index
* CVE-2018-1002161 FAQ
* CVE-2018-1002161 announcement text
* fix unit tests for listHosts
* fix unit test for list\_archives
* fix typeInfo handling in list\_archives
* fix arches handling in listHosts
* use QueryProcessor in get\_archive\_type
* PR#1271: decode Popen.communicate result under py3
* fix unittest for py3
* decode Popen.communicate result under py3
* PR#1269: require librepo on python3
* require librepo on python3
* PR#1222: Include CLI plugins in setup.py
* update setup.py to 1.17
* Include CLI plugins in setup.py
* PR#1265: py3 tests + related fixes
* remove old commented line
* add PYTHONPATH for web tests
* fix py3 tests compatibility
* enable py3 testing for everything
* wrapper function for writing to stdout
* remove sys.exc\_clear() in web ui
* py3 checks file path, so it needs to be non-mocked string
* Fix unit tests
* PR#1220: Fix non-ascii strings in xmlrpc
* only adjust the request encoding on py3
* Fix non-ascii strings in xmlrpc
* PR#1229: document reason strings in policies
* document reason strings in policies
* PR#1263: python 3 can't index dict.keys()
* python 3 can't index dict.keys()
* PR#1235: fix weak deps handling in rpminfo web page
* fix weak deps handling in rpminfo web page
* PR#1251: fix race-condition with librepo temp directories
* fix race-condition with librepo temp directories
* PR#1245: organize python 2/3 cases in spec file
* keep config in koji-web package
* manually trigger extra byte compilation
* handle byte-compiling for fedora
* remove qpid requires
* vm and utils subpackages for py3 too
* more readable sed expression
* builder-plugins can include pycache now
* force python3 if that's all we're building
* add KOJI\_MINIMAL flag to plugins Makefile
* stop blocking py3 builder plugins in Makefile
* builder-plugins not py2 only anymore
* no koji-utils for py3 yet
* reverse distro check order and correctly handle null case
* refactor the py2/py3 macro flags
* PR#1231: remove unused directory
* remove unused directory
* PR#1248: use six move for email.MIMEText
* use six move for email.MIMEText
* PR#1150: using ConfigParser.read\_file for PY3
* fix invokings and unittests
* drop parser option in favor of raw option
* docstring for read\_config\_files
* using ConfigParser.read\_file for PY3
* PR#1249: more detailed help for block-group-pkg
* adjust grammar
* more detailed help for block-group-pkg
* PR#1117: python3 kojid
* note origin of koji.arch and chmod -x the lib
* fix unit test for localPath test
* drop dnf from yum handler
* spec change for default py3 kojid
* fix xmlrpc encoding error
* distrepo via dnf
* use librepo instead of yum where possible
* fix runroot test
* fixes
* bundle rpmUtils.arch
* reorder imports
* fix rpm headers access
* use files in context managers
* fix librepo workdir
* rpm builds
* simplify .keys() usage
* replace obsoleted libs
* remove testing hashlib
* remove unused variables
* PR#891: Web UI python3 changes
* properly obsolete koji-web
* macro for py3-only systems
* update provides/requires
* use C.UTF-8 lang as default
* spec changes for python[23]-koji-web
* Web UI python3 changes
* PR#921: Py3 hub
* spec changes for py3 hub
* fix new test
* fix import
* fix bytes/str in rpm header
* fix test
* fix code inspects
* marshaller update
* rename masked rpm variable
* db ordering fixes
* convert py2 sorting to py3
* fix encoding
* encode xmlrpc responses correctly
* fix file handling
* six.moves xmlrpc\_client, parse\_qs
* PR#1182: hub: document get\_channel arguments
* hub: document get\_channel arguments
* PR#1014: cli: preserve build order in clone-tag
* delete all other builds when latest\_only and dsttag exists
* rename var, tweak logic, and add comments for clarity
* preserve group order
* [clone-tag] preserve build order and fix group cloning
* PR#1218: docs: drop HTML tags from howto doc
* docs: drop HTML tags from howto doc
* PR#1211: Fix wrong error message
* Fix wrong error message
* PR#1184: rest of python3 support for koji lib
* misc changes for build and test
* using explicit coverage2/3 in Makefile
* sorted set in Error msgs of tasks.find\_arch
* fix some unittests
* fix zip for python3
* urllib fix for python3
* PR#1062: fix pyOpenSSL dependency for py26 in setup.py
* fix pyOpenSSL dependency for py26 in setup.py
* PR#1019: Use python2/3 instead of python in Makefile/spec
* set default python
* use macro to support RHEL8 build
* Use python2/3 instead of python in Makefile/spec
* PR#1190: hub: document all edit\_tag arguments
* hub: document all edit\_tag arguments
* PR#1201: re-add urlparse import in kojikamid
* re-add import removed by 921258749a2be5686de2cd3d2804c627c51d2b12
* PR#1203: Fix \`is\_conn\_error()\` for Python 3.3+ change to \`socket.error\`
* Fix \`is\_conn\_error()\` for Python 3.3+ change to \`socket.error\`
* PR#967: use correct fileinfo checksum field
* fix undefined var
* cleanup
* add a unit test
* check\_sigmd5 for kojivmd
* use correct fileinfo checksum field
* PR#1187: Add ctx option to ClientSession.krb\_login()
* Don't force the Kerberos cache to be stored as a file when using the ccache kwarg on krb\_login
* Add a \`ctx\` kwarg to ClientSession.krb\_login
* PR#1175: kojira: avoid race condition that causes "unknown task" errors
* make recent\_tasks lifetime configurable
* don't iterate over the dict we are changing
* kojira: avoid race condition that causes "unknown task" errors
* PR#964: few sort speedups
* few sort speedups
* PR#852: drop encode\_int helper
* drop encode\_int helper
* PR#1043: remove old messagebus plugin
* remove old messagebus plugin
* PR#1176: kojid: implement task\_avail\_delay check
* more tests and another fix
* partial unit test with minor fix
* cleanup
* initialize TaskManager.skipped\_tasks
* allow setting task\_avail\_delay in kojid.conf
* add a timeout for skipping a task based on bin capacity
* PR#1180: Update source when recycling build
* fix unit test
* also set extra and volume\_id in recycle\_build
* Update source when recycling build
* PR#1178: cli: document parse\_arches method parameters
* cli: document parse\_arches method parameters
* PR#920: use relative symlinks for hub imports
* move move\_and\_symlink to koji.util
* use relative symlinks for hub imports
* PR#981: cli: add a param in watch\_tasks to override KeyboardInterrupt output
* whitespace
* move inner function out of except clause
* move quiet option into ki\_handler
* cli: add a param in watch\_tasks to override KeyboardInterrupt output
* PR#1042: don't fail on missing field in base policy tests
* don't fail on missing field in base policy tests
* PR#1172: make timeout of authentication configurable
* set default value for timeout and auth\_timeout in read\_config
* make timeout of authentication configurable
* PR#1168: remove shebang in context module
* move tests to test\_lib/test\_context.py
* remove shebang in context module
* PR#1045: cli: [free-task] raise error when no task-id specified
* adjust grammar in error message
* cli: [free-task] raise error when no task-id specified
* PR#1056: Print warning to stderr
* use stderr for warning
* PR#1057: raise error for non-existing task in list\_task\_output
* raise error for non-existing task in list\_task\_output
* PR#1061: hub: [getRPMDeps] add strict behavior
* hub: [getRPMDeps] add strict behavior
* PR#1065: fix wrong message
* fix wrong message
* PR#1081: hub: [getPackageID] add strict behavior
* hub: [getPackageID] add strict behavior
* PR#1099: hub: [hasPerm] add strict behavior
* hub: [hasPerm] add strict behavior
* PR#732: koji.next.md: drop RHEL 5 requirements
* koji.next.md: drop RHEL 5 requirements
* PR#1156: hub: unlimited NameWidth for kojifiles Apache location
* hub: unlimited NameWidth for kojifiles Apache location
* PR#1154: docs: update cheetah template user guide link
* docs: update cheetah template user guide link
* PR#1148: docs: use "postgresql-setup initdb" to initialize database
* docs: use "postgresql-setup initdb" to initialize database
* PR#1141: hub: document edit\_tag argument types
* hub: document edit\_tag argument types
* PR#1138: cli: fix "at least" typo in help text
* cli: fix "at least" typo in help text
* PR#1137: docs: unify "dnf" and "yum" instructions in server howto
* docs: unify "dnf" and "yum" instructions in server howto
* PR#1125: Ignore non-existing option when activate a session
* Ignore non-existing option when activate a session
* PR#1111: Don't retry if certificate is not readable
* fix comment indentation for flake8
* Don't retry if certificate is not readable
* PR#928: check tag existence in list-tagged cmd and listTagged\* APIs
* fix timezone in test\_list\_tagged
* cli: support multiple arches in list-tagged
* unit test for cli list-tagged command
* check tag existence in list-tagged cmd and listTagged\* APIs
* PR#1127: only pass new incl\_blocked call opt if it is explicitly needed
* only pass new incl\_blocked call opt if it is explicitly needed
* PR#1124: tooltip for search field
* tooltip for search field
* PR#1115: Do not require split\_debuginfo
* Do not require split\_debuginfo
* PR#1123: fix wrong old value in postBuildStateChange callback
* fix wrong old value in postBuildStateChange callback
* PR#1097: hub: [getTaskInfo] add strict behavior
* hub: [getTaskInfo] add strict behavior
* PR#1098: cli: [download-task] readable error when no task found
* cli: [download-task] readable error when no task found
* PR#1096: cli: fix typos in \*-notification error msg
* cli: fix typos in \*-notification error msg
* PR#1072: Include WadersOS mention to 'koji runs here' doc
* Include WadersOS mention to 'koji runs here' doc
* PR#1094: hub: [postBuildStateChange] passing the newest build info
* hub: [postBuildStateChange] passing the newest build info
* PR#1066: Simple mode for mergerepos
* Modify SQL update scripts
* create pkgorigins
* merge mode is part of tag connection rather than inherent to repo
* cli adjustments
* simple mode for mergerepos
* let merge repos deal with it
* support merge\_mode field
* merge\_mode field for external repos
* PR#1091: more informative error for invalid scm schemes
* more informative error for invalid scm schemes
* PR#1003: update jenkins configuration
* update jenkins configuration
* PR#947: exclude py compiled files under util/
* exclude py compiled files under util/
* PR#965: check rpm headers support directly
* fix test
* check rpm headers support directly
* PR#978: get\_next\_release should check also running builds
* get\_next\_release should check also running builds
* PR#1041: fix utf-8 output in CLI
* fix utf-8 output in CLI
* PR#1036: Add more test patterns for rpmdiff unit test
* Add more test patterns for rpmdiff unit test
* PR#1023: Expand user directory from config
* Expand user directory from config
* PR#1002: prioritize unittest2
* prioritize unittest2
* PR#1000: Fix target handling in make\_task
* Fix target handling in make\_task
* PR#997: Fix rpmdiff's ignoring of size
* simplify ignore logic in rpmdiff function
* Correctly ignore all values in rpmdiff
* copy data from static variable instead of use it directly to prevent caching
* PR#1012: Fix isinstance with lists
* Fix isinstance with lists
* PR#1030: Create symlinks for builds imported onto non-default volumes
* more checks in unit test
* actually add unit test
* create parent dir for symlink if needed
* ensure volume symlinks in import pathways
* add ensure\_volume\_symlink() function
* PR#1021: Raise error for non-200 codes in download\_file
* Raise error for non-200 codes in download\_file
* PR#1005: Add unit tests for check volume id substitution list
* Fix code review
* Change to one test with variants
* Add unit tests for check volume id substitution list
* PR#1027: [kojihub] add strict parameter in getBuildNotification
* [kojihub] add strict parameter in getBuildNotification
* PR#1016: raise Error when user not found in getBuildNotifications
* raise Error when user not found in getBuildNotifications
* PR#1008: decode\_args(): make a copy of the opts dict, rather than modifying it in-place
* decode\_args(): make a copy of the opts dict, rather than modifying it in-place
* PR#989: additional info on builders in channelinfo page
* additional info on builders in channelinfo page
* PR#685: Rest of automated conversion from py3 changes
* fix tuple expansion in args
* python-modernize -f lib2to3.fixes.fix\_numliterals
* python-modernize -f lib2to3.fixes.fix\_except
* fix sort(l) vs l.sort() typo
* fix double import typo
* workaround unnecessary list conversions
* fix unicode type checks
* fix incorrect divisions
* python-modernize -f libmodernize.fixes.fix\_classic\_division
* fix rest of int/long
* python-modernize -f libmodernize.fixes.fix\_int\_long\_tuple
* python-modernize -f libmodernize.fixes.fix\_map
* python-modernize -f libmodernize.fixes.fix\_imports\_six
* python-modernize -f lib2to3.fixes.fix\_methodattrs
* python-modernize -f lib2to3.fixes.fix\_funcattrs
* python-modernize -f libmodernize.fixes.fix\_file
* python-modernize -f libmodernize.fixes.fix\_basestring
* python-modernize -f libmodernize.fixes.fix\_import
* python-modernize -f libmodernize.fixes.fix\_dict\_six
* python-modernize -f libmodernize.fixes.fix\_xrange\_six
* PR#962: put source target scratch into policy\_data in make\_task
* minor adjustments for readability
* drop redundant warning
* put source target scratch into policy\_data in make\_task
* PR#980: cli: rename \_unique\_path to unique\_path, and deprecate the old one
* cli: rename \_unique\_path to unique\_path, and deprecate the old one
* PR#900: enable batch multiCall in clone-tag
* rebase bad reference change
* give user option to use avoid using batches
* clean up docstring for multiCall()
* drop unecessary warning
* add warning for batch usage in clone-tag
* set default batch to None and use generator instead of list
* cli: unittest for multiCall
* cli: enable batch for clone-tag
* cli: add batch option in multiCall
* PR#973: Check empty arches before spawning dist-repo
* Check empty arches before spawning dist-repo
* PR#959: fix wrong tagNotification in tagBuildBypass API
* fix wrong tagNotification in tagBuildBypass API
* PR#969: Enable python3 on RHEL8 build
* Enable python3 on RHEL8 build
* PR#970: Add RISC-V (riscv64) to distrepo task
* Add RISC-V (riscv64) to distrepo task
* PR#897: Fix use\_host\_resolv with new mock version (2017 Nov 22+)
* Add missing config\_opts['rpmbuild\_networking'] to mock test data
* Fix use\_host\_resolv with new mock version (2017 Nov 22+)
* PR#868: allow force for pkglist\_add
* fix unittest ref
* use unittest2 only if available
* allow force for pkglist\_add
* PR#845: propagate exception correctly
* remove unused variable
* propagate exception correctly
* PR#831: Use unittest2 for rhel6 compatibility
* avoid skipIf in import-comps unit test
* more unit test fixes
* Use unittest2 for rhel6 compatibility
* PR#873: Allow listing of blocked data in readTagGroups
* CLI update for readTagGroups blocked
* Allow listing of blocked data in readTagGroups
* PR#940: Add --enabled --ready filters for list-channels
* fix test
* display more info
* Add --enabled --ready filters for list-channels
* PR#952: cli: [clone-tag] preserve build order
* cli: [clone-tag] preserve build order
* PR#919: remove deprecated BuildRoot.scrub()
* remove deprecated BuildRoot.scrub()
* PR#948: cli: don't show license for external RPM in rpminfo
* cli: fix KeyError for external RPM in rpminfo command
* PR#879: cli: change bad reference in clone-tag
* cli: change bad reference in clone-tag
* PR#946: force using python2 to run script
* force using python2 to run script
* PR#925: Allow longer Build Target names
* Allow longer Build Target names
* PR#930: fix changelog date
* fix changelog date
* PR#918: Koji 1.16.0 release
* release note updates
* migration doc
* formatting tweak
* fix typos
* update notification docs
* more release notes
* first stab at 1.16 release notes
* bump release to 1.16 and add changelog
* Update setup.py to 1.16 release
* PR#884: Add option to configure DB port
* Keep None as the default DBPort
* Add option to configure DB port
* PR#914: dist repo updates
* put dist repo rpms under Packages/
* fix unit tests
* no need for subtask to return its upload dir
* link dist repo on task page
* update docstrings
* drop unused params
* fix help string
* upload a repo manifest
* also upload subrepo metadata
* limit rpm keys to check
* refactor uploaded file data
* partial refactor
* streamline subrepo logic a bit
* record dist subrepo in kojipkgs
* handle uploaded debug\_pkglist
* fix debuginfo check and logfile name
* actually do the debuginfo split
* update unit test for new options
* trying to use kojipkgs data instead of fs lookups
* trying to separate pkglist calculation from output generation
* standardize pathinfo usage in createDistRepoTask
* drop unused var
* cli: dist-repo --split-debuginfo option
* attempt to handle empty tag more gracefully
* simplify do\_createrepo a bit
* disconnect createdistrepo and createrepo task handlers
* dist-repo --with-src option
* avoid including noarch in src repos
* short option -a/--arch for dist-repo command
* avoid passing a set as a callback param
* add some comments
* make postRepoInit data consistent with preRepoInit data for dist repos
* only expire older repos of matching type
* unit test for repo\_expire\_older()
* hub: use UpdateProcessor in repo\_expire\_older()
* misc cleanup
* PR#843: make py2 files parseable with py3
* make py2 files parseable with py3
* PR#841: kojid: make install timeout of imagefactory conf configurable
* whitespace/lint cleanup
* change default value of oz\_install\_timeout to 0
* add explanation in image\_build.rst
* kojid: make install timeout of imagefactory conf configurable
* PR#777: add debug timestamp log for logs
* make timestamp logs configurable
* split timestamp log tu multiple files
* add debug timestamp log for logs
* PR#904: replace long with int
* replace long with int
* PR#911: readTaggedRPMS: passing table 'tag\_listing' in eventCondition
* readTaggedRPMS: passing table 'tag\_listing' in eventCondition
* PR#691: option for notifications in untagBuildBypass
* update docstring
* don't notify on fail in un/tagBuildBypass
* option for notifications in un/tagBuildBypass
* PR#869: also forget requests session in \_forget()
* also forget requests session in \_forget()
* PR#874: Update URL for Open Science Grid Koji instance
* Changed Open Science Grid instance URL to use http since their CA isn't commonly trusted
* Update URL for Open Science Grid Koji instance
* PR#883: Doc: add repos-dist to koji filesystem skeleton
* Doc: add repos-dist to koji filesystem skeleton
* PR#894: tests for download\_logs
* tests for download\_logs
* PR#909: Docs for CVE-2018-1002150
* Docs for CVE-2018-1002150
* PR#778: add history to edit\_host
* fix unit tests
* fix fields in set\_host\_enabled
* support querying history by host and channel
* schema fixes
* tests for host\_channels
* host\_channels history
* Fix for host\_config
* host history tests
* update version in comment
* add index
* JOIN fixes for host\_config
* update schema.sql for host\_config
* add history to edit\_host
* PR#774: Cache rpmdiff results and don't spawn special process
* account for ignored self-provides in rpmdiff hash
* erase ignored fields
* remove duplicate ignore
* use 'ignore' in hash computation
* make rpmdiff.py lib only
* fix tests for rpmdiff
* TEST: add sanity check to rpmdiff main
* check for empty header
* typo
* move rpmdiff to koji lib
* cache rpmdiff results
* don't spawn process for rpmdiff
* PR#908: Fix typo in deleted mount check
* fix unit test deleted mounts data
* Fix typo in deleted mount check
* PR#770: print debug and error messages to stderr
* print debug and error messages to stderr
* PR#688: CLI commands for notifications
* remove unused vars
* added test
* CLI commands for notifications
* PR#901: Add more path info to volume documentation
* also document the symlinks
* document volume path construction
* PR#678: fix grplist\_block
* fix grplist\_block
* PR#734: hub: add strict behavior in \`get\_archive\_file()\` and \`list\_archive\_files()\`
* tweak docstring
* do not raise error when archive is empty
* more spicified errors
* better fomatted docstr
* use double quotes instead of escaping
* simplify strict logic in \`get\_archive\_file\`
* hub: unittest for \`list\_archive\_files()\`
* hub: add strict behaviors for \`get\_archive\_file\` and \`list\_archive\_files\`
* hub: throw GenericError in \`get\_archive\_file()\`
* PR#726: pass full buildinfo obtained by get\_build to postBuildStateChange callbacks
* ut: fix test\_import\_build
* pass full buildinfo obtained by get\_build to postBuildStateChange callbacks
* PR#823: Add --old-chroot option to runroot command
* Allow t use new/old-chroot in runroot
* PR#881: add txkoji to related projects
* add txkoji to related projects
* Fix CVE-2018-1002150 - distRepoMove missing access check
* fix host id lookup for anonymous sessions
* fix access check in host.distRepoMove
* PR#822: Don't show license for external rpms
* Don't show license for external rpms
* PR#779: drop cascade in schema-clear
* drop unsupported schema-clear.sql
* PR#860: mavenBuild uses wrong session
* mavenBuild uses wrong session
* PR#858: restart-hosts fails if provided arguments
* restart-hosts fails if provided arguments
* PR#853: Show the krb principal name in debug log
* Show the krb principal name in debug log
* PR#711: Drop explicit python-krbV dependency for modern platforms
* simplify check for krbV module
* only explicitly require python-krbV on older platforms
* Avoid failing at import time if krbV module is missing
* PR#768: json serialize additional types in protonmsg
* protonmsg: unit test for unencodable data
* Don't raise error on unserializable data
* json serialize additional types in protonmsg
* PR#849: kojira: sanity check in pruneLocalRepos
* kojira: sanity check in pruneLocalRepos
* PR#848: use subprocess.Popen instead of subprocess.check\_output
* do not shell=True
* unittest for scm.get\_source
* fix subprocess.check\_output for py2.6
* PR#819: Drop pre-2.6 compat function koji.util.\_relpath
* Drop pre-2.6 compat function koji.util.\_relpath
* PR#828: fix runroot output on py3
* fix runroot output on py3
* PR#765: search build by source
* update listBuilds docstring
* extend listBuilds for search by source
* PR#817: Update the volume ID substitutions list and application
* add link to issue
* Update the volume ID substitutions list and application
* PR#744: Replace cmp= with key= for python3 support
* avoid using backslash and fix typo issue
* Use function.cmp\_to\_key to wrap cmp function only in Python3
* add unit test for taskinfo() in koji-web
* Replace cmp with key in sorted() for python3 support
* add unit test for \_write\_maven\_repo\_metadata() function in kojihub
* replace cmp keyword parameter with key in sorted() for python3 support
* PR#748: hub: make list\_archives to accept strict argument
* hub: make list\_archives to accept strict argument
* PR#769: handle None in place of string in buildNotification
* handle None in place of string in buildNotification
* PR#824: Add internal\_dev\_setup option to runroot config
* update unit tests
* handle internal\_dev\_setup opt earlier
* stabilize mock config ordering
* test internal\_dev\_setup option for getMockConfig
* basic unit test for genMockConfig
* fix unit test
* add internal\_dev\_setup option to runroot plugin
* internal\_dev\_setup option for BuildRoot class
* make internal\_dev\_setup an option in getMockConfig
* PR#804: hub: fix KeyError in \`get\_notification\_recipients\`
* hub: fix KeyError in \`get\_notification\_recipients\`
* PR#802: omit the last dot of cname when krb\_canon\_host=True
* omit the last dot of cname when krb\_canon\_host=True
* PR#820: compressed xml archive type
* give the archivetype a unique name
* compressed xml archive type
* PR#743: Fix key access mechanism in \_build\_image
* fix typo, tailing white space, unused parameter
* add unit tests for spin-\* commands
* correct dict key check mechanism
* PR#800: Don't allow combination of --mine and task-ids
* Don't allow combination of --mine and task-ids
* PR#812: Fix AttributeError during archive import
* Fix AttributeError during archive import
* PR#796: Fix comparison with Enum value
* Fix comparison with Enum value
* PR#695: blacklist tags for kojira
* fix unit test
* blacklist tags for kojira
* PR#773: create/edit notification checks for duplicity
* tests for notifications
* create/edit notification checks for duplicity
* PR#799: Fix values for non-existent options
* make default user value consistent
* Fix values for non-existent options
* PR#805: fix duplicated args "parent" in waittest task
* fix duplicated args - parent in waittest task
* PR#806: honour runroot --quiet for old-style call
* honour runroot --quiet for old-style call
* PR#767: update docs for listRPMFile
* update docs for listRPMFile
* PR#797: Move kojira's regen loop into dedicated thread
* unit test for checkNeeded
* unit test for setTagScore
* unit test for regenLoop
* a little more logging
* separate loggers for currency/regen threads
* fix typo
* add missing sleeptime option to list
* fix task limit check
* move regens into thread
* some kojira unit tests
* simplify some exception handling
* update tag scores each pass
* adjust debug output to make it less noisy
* cleanup docstring
* unused method
* log message
* more needed\_tags cleanup
* misc fixes
* sanity check expire age
* scoring
* use new code
* partial refactor of kojira code
* PR#794: Work around race in add\_external\_rpm
* unit test for Savepoint
* unit test for add\_external\_rpm
* use a savepoint
* recheck for duplicate external rpm on insertion errors
* PR#753: check python-requests-kerberos version before gssapi login
* update test\_gssapi
* adjust error text
* remove duplicate logging
* update test\_krbv.py for requests\_kerberos.\_\_version\_\_ checking
* update test\_gssapi.py for requests\_kerberos.\_\_version\_\_ checking
* replace version comparison with regexp matching
* do not import \`HTTPKerberosAuth\`
* check python-requests-kerberos version before gssapi login
* PR#783: don't join users table if countOnly
* don't join users table if countOnly
* PR#775: drop pycurl dependency
* drop pycurl dependency
* PR#733: ut: [cli] fix unexcepted order problem in test\_taskinfo
* fix unexcepted order problem in test\_taskinfo
* PR#730: add unit test for cli commands, coverage(40%)
* add unit tests for cli commands, coverage(46%)
* improve coverage rate in existing test cases
* add unit test for cli commands, coverage(40%)
* PR#787: builder: make temp dir to be configured
* rename parameter/default value - tmpdir to chroot\_tmpdir
* builder: make temp dir be configured
* PR#498: remove old ssl library
* drop old ssl support + compatrequests
* PR#755: remove simplejson imports
* remove simplejson imports
* PR#731: koji.next.md: Content Generators are available
* koji.next.md: Content Generators are available
* PR#754: drop rhel5 cases from spec
* drop rhel5 cases from spec
* PR#761: proper comments of unused spec macros
* proper comments of unused spec macros
* PR#762: remove unused import in koji-shadow
* remove unused import in koji-shadow
* PR#764: incorrect py3 syntax
* incorrect py3 syntax
* PR#757: Force coverage3 read correct rc file
* add coverage exclude check
* add exclude\_lines in .coveragerc/.coveragerc3
* force coverage3 read .coveragerc3 as rcfile to generate report and html
* PR#632: drop migrateImage call
* drop migrateImage call
* PR#759: cli: fix issues in dist-repo command
* add unit test for koji\_cli.commands.handle\_dist\_repo
* fix issues found in handle\_dist\_repo()
* PR#746: Release 1.15.0
* adjust changelog date
* blank schema upgrade script
* cleanup
* system notes
* builder notes
* web ui notes
* partial release notes for 1.15
* bump release, update changelog
* PR#602: don't use /tmp in chroot
* fix buildroot tmpdir refs in ApplianceTask
* avoid double slash in path
* don't use /tmp in chroot
* PR#674: store git commit hash to build.source
* don't fail if child task doesn't provide source
* adjust how we store the extra source data
* just use original url for non-git sources
* avoid splitting SCM class in kojikamid
* store source also for CVS/SVN
* fix race condition and missing values
* store git commit hash to build.source
* PR#492: Setuptools support
* update to 1.15 version
* use rpm-py-installer
* Documentation update for PyPi
* Makefile targets for PyPi
* update setup.py for 1.14
* Setuptools support
* PR#740: Check for login earlier
* Check for login earlier
* PR#708: Implement support for keytab in gssapi codepaths
* fix exception syntax
* Fix resetting the environment
* unit tests for gssapi auth
* fix another bare exception
* be a little more paranoid about undoing opts/environ mangling
* avoid bare exception and add some debug logging
* Implement support for keytab in gssapi codepaths
* PR#446: run checks earlier for cg\_import
* avoid unnecessary file opening
* move checks earlier to prep\_outputs
* check all existing btypes
* run checks earlier for cg\_import
* PR#610: show components for all archives
* fix rpm components check
* show archives in archives
* show components for all archives
* PR#578: cli: fix changelog encode for PY3
* fix unit test - \`test\_formatChangelog\`
* rename fixPrint->\_fix\_print and add a docstring
* adjustments to test\_formatChangelog
* cli: fix changelog encode for PY3 relates [issue#577](https://pagure.io/koji/issue/577)
* PR#533: Treat canceled tasks as failed for optional\_archs
* test intermediate calls
* taskWaitResults: more unit tests
* taskWaitResults: fix canfail/canceled case when tasks=None
* add unit test for host.taskWaitResults
* include faultCode in return for canceled, can-fail tasks
* Treat canceled tasks as failed for optional\_archs
* PR#686: Display license info in CLI's rpminfo and Web UI
* Display license info in CLI's rpminfo and Web UI
* PR#718: convenience script to run py2 and py3 tests in parallel
* deal with failed commands
* runtests script
* PR#722: docs: check external repos with taginfo
* docs: check external repos with taginfo
* docs: indent external-repo-server-bootstrap notes
* PR#675: refactory cli unittests, move share code pieces to utilities library
* Add unit tests for koji image\_build command
* Add unit tests for koji commands
* refactory CLI unittests including:  - introduce new CliTestCase class  - implement useful assert functions in CliTestCase
* PR#714: Use task id as key to sort
* Use task id as key to sort
* PR#707: add argument detection to prevent array out of index error
* add argument detection to prevent array out of index error
* PR#717: Fix watch-tasks unit tests
* py3 fixes for watch-tasks unit tests
* test\_watch\_tasks\_with\_keyboardinterrupt()
* another watch-tasks test
* fakeclient: support multiple calls per key
* use fake client for watch\_tasks testing
* cleanup
* partial work
* PR#615: don't send notifications to disabled users or hosts
* return xmlrpc-compatible list instead of set
* fix tests
* use explicit JOIN
* make query more secure
* don't send notifications to disabled users or hosts
* PR#698: set optional\_arches to list
* set optional-arches to list
* PR#703: cli: make return code of watch\_task to always ignore sub-task failure
* avoid reporting incorrect info in is\_success()
* cli: make return code of watch\_task to always ignore sub-task failure
* PR#704: cli: use strict with getTag call when appropriate
* cli: use strict with getTag call when appropriate
* PR#710: use \`hasPerm\` to check permission in save\_failed\_tree
* use \`hasPerm\` to check permission in save\_failed\_tree
* PR#699: Add documentation for storage volumes
* docstrings for a couple volume calls
* update volume doc
* starting with old volume notes from 1.7.0 release discussion
* PR#693: Import koji.plugin explicitly
* Import koji.plugin explicitly
* PR#647: Don't check non-existing file
* Don't check non-existing file
* PR#664: make grab\_session\_options to accept dict directly
* fix dict comprehension on py2.6
* make grab\_session\_options to accept dict directly
* PR#673: functions for parsing task parameters
* clean up tests
* fix unit test
* move tests to correct subdirs
* fix exception syntax in apply\_argspec
* update legacy signatures
* move apply\_argspec to koji.util
* drop unused/incomplete parseParams method for now
* fix defaults handling in apply\_argspec
* cleanup, more testing
* basic unit test
* function to parse task parameters into a dictionary
* more tests
* partial work on apply\_argspec function
* PR#681: use six.StringIO everywhere
* use six.StringIO everywhere
* PR#684: correct format and fix issue #682
* Fixes: #682 https://pagure.io/koji/issue/682 correct wrong mapping in print format
* PR#646: Improve test coverage in koji/util
* - add unit test for koji/util: (coverage 58%->100%) - minor fix: check if input string time is valid
* PR#677: handle DateTime objects in encode\_datetime
* handle DateTime objects in encode\_datetime
* PR#670: Create repo without --deltas if no old package dir is set
* Create repo without --deltas if no old package dir is set
* PR#666: Few cheap python3 compatibilities
* Explicit tuple in list constructor
* python-modernize -f lib2to3.fixes.fix\_numliterals . -w
* python-modernize -f lib2to3.fixes.file . -w
* python-modernize -f lib2to3.fixes.fix\_except . -w
* PR#662: mock koji.commands.\_running\_in\_bg function to run unittest in background
* mock koji.commands.\_running\_in\_bg funtion to run unittest in background
* PR#645: don't fail on CLI plugins without docstrings
* don't fail on CLI plugins without docstrings
* PR#655: fix unreachable code
* fix unreachable code
* PR#656: remove unused calls
* remove unused calls
* PR#652: add unittests for koji commands
* rename testcase class name
* add unittests for koji command line:  - call  - hello / moshimoshi  - maven-chain  - resubmit
* add unittests for koji commands  - assign-task  - wrapper-rpm
* PR#658: consolidate safe\_rmtree, rmtree and shutil.rmtree
* also use rmtree in delete\_build/reset\_build
* safe\_rmtree: more constraints on tests
* safe\_rmtree: fix tests for backward-compatibility
* safe\_rmtree: make return value consistent with past behavior
* drop stale comment and avoid bare except in safe\_rmtree
* update rmtree patch in unit test for recycle\_build
* consolidate safe\_rmtree, rmtree and shutil.rmtree
* PR#660: more runroot tests
* more runroot tests
* PR#633: unify runroot CLI interface
* remove unused import
* clean up runroot unit test
* correct default for --wait
* unify runroot CLI interface
* PR#649: delete build directory if cg\_import fails
* typo fix + tests
* delete build directory if cg\_import fails
* PR#653: Add krb\_canon\_host option
* add krb\_canon\_host example in koji.conf
* add krb\_canon\_host option to various clients
* krb\_canon\_host option to canonicalize hostname via dns
* PR#657: protonmsg: include the arch in the headers of rpm sign messages
* protonmsg: include the arch in the headers of rpm sign messages
* PR#651: protonmsg: don't send rpm.sign messages when the sigkey is empty
* protonmsg: don't send rpm.sign messages when the sigkey is empty
* PR#654: Update links in docs to point to correct pages
* Update links in docs to point to correct pages
* PR#631: cg\_import fails immediately if build directory already exists
* Changed check to correct build import dir
* cg\_import fails immediately if build directory already exists
* PR#601: replace pycurl with requests
* remove python3 typo
* use contextlib wrapper for older python-requests
* replace pycurl with requests
* PR#608: tests for handling user groups
* tests for handling user groups
* PR#637: set timezone to US/Eastern when test\_build\_notification executing
* set timezone to US/Eastern when test\_build\_notification executing
* PR#636: use urlparse.parse\_qs instead of deprecated cgi.parse\_qs
* PR#628: add a unit test for buildNotification task
* unit test for buildNotification task handler
* handle callbacks depth-first in DataWalker
* PR#620: some tests for koji.auth
* some tests for koji.auth
* use urlparse.parse\_qs instead of deprecated cgi.parse\_qs
* PR#625: watch-logs --mine --follow
* unit test
* move \_list\_task to client lib
* watch-logs --mine --follow
* PR#629: fix wrong mock.patch target
* fix wrong mock.patch target
* PR#598: kojira: speed up repo dist check
* kojira: avoid calling session.repoInfo in tryDelete()
* unit test for get\_active\_repos
* return dist field in getActiveRepos
* adjust krbV check in kojira to avoid redundant import
* PR#622: basic volume policy support
* make cg info in policy data more consistent, and honor it in policy\_get\_cgs
* drop unused "prebuild" policy data
* applyVolumePolicy hub call for admins
* correct docstring
* add a default option to check\_volume\_policy
* test\_check\_volume\_policy.py
* make volume policy data more consistent
* in buildtag policy test, use br data even if build not set
* propagate volume in import\_build
* reset volume to default in resetBuild()
* apply volume\_policy in import\_build
* mock volume data in image/maven import tests
* apply volume policy in completeImageBuild
* apply volume policy in completeWinBuild
* apply volume policy in completeMavenBuild
* pull in core volume policy functions from earlier branches
* fix up test\_import\_image\_internal.py
* fix up test\_complete\_maven\_build.py
* fix up test\_complete\_image\_build.py
* importImageInternal: use nextval() and InsertProcessor
* maven/image import tests from first branch
* PR#624: fix formatTime for DateTime
* ignore concrete timezone in tests
* fix formatTime for DateTime
* PR#537: messagebus plugin: deferred sending and test mode
* don't require an explicit test\_mode setting in config
* test mode for messagebus plugin
* messagebus plugin: avoid duplicate context updates
* fix config handling
* defer messagebus sync
* clear message cache after sending
* defer message sending until after commit
* PR#605: update docstring
* update docstring
* PR#611: the split\_cli.py script is no longer needed
* the split\_cli.py script is no longer needed
* PR#617: display suid bit in web ui
* display suid bit in web ui
* PR#619: cleanup unnecessary subdir phony
* remove docs from SUBDIRS
* cleanup unnecessary subdir phony
* PR#606: drop importBuildInPlace call
* drop importBuildInPlace call
* PR#609: move spin-livemedia to build section
* move spin-livemedia to build section
* PR#595: Release 1.14.0
* changelog: update date and include PR#597
* include ref to PR #597
* use\_old\_ssl is also deprecated
* misc corrections to release notes
* reorder release notes entries
* correct docs spelling errors
* update 1.14 migration doc
* release notes for system changes
* release notes for builder changes
* partial release notes
* bump release and add changelog entry in spec
* release notes stub
* PR#597: use\_old\_ssl is deprecated
* use\_old\_ssl is deprecated
* PR#591: Normalize paths for scms
* fix up url checks and extend unit tests for this issue
* Run normpath over SCM url when checking against allowed
* PR#432: override build\_arch\_can\_fail settings
* avoid using "fail\_fast" as a named parameter
* update test
* override build\_arch\_can\_fail settings
* PR#566: allow profiles to request a specific python version
* allow profiles to request a specific python version
* PR#554: deprecate importBuildInPlace hub call
* deprecate importBuildInPlace hub call
* PR#590: support repo\_include\_all tag extra option
* support repo\_include\_all tag extra option
* PR#582: Content generator metadata documentation update
* Content generator metadata documentation update
* PR#579: ignore inodes when running rpmdiff
* ignore inodes when running rpmdiff
* PR#493: modify activate\_session to be easily used without CLI
* avoid mocking isfile in unit test
* unit tests for activate\_session
* don't assume runas option in activate\_session
* modify activate\_session to be easily used without CLI
* PR#589: fix scratch ref for scm callback
* fix scratch ref for scm callback
* Merges #587 https://pagure.io/koji/pull-request/587
* add \`build\_tag\` argument in \`postSCMCheckout\` callback
* PR#583: support rpm LONG\*SIZE header fields
* test case where rpm size header gives None, but no longsize header
* handle LONGFILESIZES rpm header field
* handle all long rpm size headers
* PR#526: Added list builds command to koji CLI
* Removed special maven case, added sorting option, now displays state
* Added better state handling, prefix option, tz handling, sorting to list-builds
* Added more failure handling for list-builds
* Added list builds command to koji CLI
* PR#581: Add a note to get\_build docstring
* Add a note to get\_build docstring
* add xjb and yaml type in archivetypes table to fix [issue#574](https://pagure.io/koji/issue/574)
* PR#571: Support large ints over xmlrpc using i8 tag
* we need xmlrpcplus in py3 too
* correct range for i8 (64 bit signed)
* another unit test
* unit test corner cases. xmlrpcplus coverage 100%
* include some unicode in unit test data
* py3 fixes for xmlrpcplus
* use python six to get xmlrpc\_client in unit tests
* allow\_none is always on for us
* more xmlrpcplus unit tests
* some unit tests for xmlrpcplus
* can't use \_\_dump from parent class
* allow\_none is the default for our dumps
* hub returns datetime objects as strings
* expand a bit on the xmlrpc extensions in the docs
* move custom xmlrpc marshaller to its own file
* docs update for xmlrpc i8 extension
* avoid using encode\_int in some of the client code
* move xmlrpc marshaller into lib and use i8 for large ints
* Patch xmlrpclib for 64-bit integers
* PR#538: protonmsg plugin: test mode
* unit test: get protonmsg coverage back up to 100%, ensure test config is read
* protonmsg plugin: test mode
* PR#547: update version in sphinx config
* unit test to check that version in docs matches version in spec
* update version in sphinx config
* PR#548: set task arch for indirection image builds
* set task arch for indirection image builds
* PR#568: spec: use correct macro - rhel instead redhat for RHEL version
* spec: use correct macro - rhel instead redhat for RHEL version fix [issue#567](https://pagure.io/koji/issue/567)
* PR#558: cli: Fix exit code for building images
* cli: Fix exit code for building images
* PR#559: return result status in save-failed-tree
* return result status in save-failed-tree
* PR#561: rename rpm-python to python\*-rpm for EOL of F24
* rename rpm-python to python\*-rpm for EOL of F24
* PR#562: fix serverca default in kojivmd
* kojivmd: fix typo in serverca path and also fix cert value
* fix serverca default in kojivmd
* expose graceful reload in kojid service config and init script
* PR#544: incorrect parameter for error message
* incorrect parameter for error message
* PR#510: cli: change download-task to regular curl download
* cli: using PROGRESSFUNCTION before libcurl 7.32.0 in download\_file
* cli: do not print extra blank line when noprogress passed
* cli: add noprogress argument for download\_file in download\_build
* fix cli unittest: test\_download\_task.py for py3
* cli: unittest for download\_file
* cli: add c.close() in download\_file and move inner function outside
* unittest for cli:download-task
* cli: remove unnecessary continue in download\_task
* cli: change download-task to regular curl download
* PR#536: fix docs links, plus minor docs cleanup
* minor docs cleanup
* update docs links in service configs
* PR#539: runroot: friendlier parsing of path\_subs config
* runroot: friendlier parsing of path\_subs config
* PR#542: check RPMTAG\_LONGSIZE is RPMTAG\_SIZE is null
* unit test: check get\_header\_fields() with large size
* check RPMTAG\_LONGSIZE is RPMTAG\_SIZE is null
* PR#419: Koji support for custom Lorax templates in LiveMedia tasks
* Change - docstrings for PEP257 compliance
* Refactor - rename method BuildRoot.relpath for clarity
* Refactor - leverage koji.util.relpath()
* New - custom lorax templates for livemedia tasks
* New - kojid.BuildRoot.relpath()
* PR#546: fix test\_krbv\_disabled unit test
* fix test\_krbv\_disabled unit test
* PR#518: Error out if krbV is unavailable and gssapi did not work
* Error out if krbV is unavailable and gssapi did not work
* PR#535: datetime compatibility for plugins
* implement caching in \_fix\_cb\_args
* unit test for encode\_datetime
* add unit test for convert\_datetime decorator
* use datetime compatibility for messagebug and protonmsg plugins
* datetime compatibility option for callbacks
* PR#524: Add support for debugsource
* make is\_debuginfo() one-line
* use if 'x' in s instead of str.find()
* handle debugsource same way as debuginfo packages
* PR#528: allow some missing path sections in runroot config
* unit test: nonsequential path numbers in runroot config
* allow some missing path sections in runroot config
* PR#530: Spelling fixes
* Spelling fixes
* PR#506: Track artifacts coming from koji itself
* hub: rework match\_kojifile() and add a unit test
* check also filename/size
* kojifile component type
* PR#499: runroot: use /builddir/runroot.log instead of /tmp/runroot.log
* runroot: use /builddir/runroot.log instead of /tmp/runroot.log
* PR#509: CLI block-group command
* simplify SQL test comparison
* CLI block-group command
* PR#514: Fix resubmit
* Fix the poll\_interval access in handle\_resubmit
* Fix the call to \_printTaskInfo in handle\_resubmit
* PR#521: update links in README.md
* update links in README.md
* PR#502: download-build: suppress output on quiet and add --noprogress
* download-build: suppress output on quiet and add --noprogress
* PR#511: unit tests for delete\_tag() [Open]
* unit tests for delete\_tag()
* PR#484 fix NoneType TypeError in deleteTag
* fix NoneType TypeError in deleteTag
* PR#490 getUserPerms should throw GenericError when no user found
* explain new behavior in docstring of getUserPerms
* allow getUserPerm accepting None arg
* getUserPerms should throw GenericError when no user found
* PR#497 remove deprecated buildFromCVS call
* remove deprecated buildFromCVS call
* PR#503 Remove deprecated compat\_mode from runroot plugin
* Remove deprecated compat\_mode from runroot plugin
* PR#507 drop unused add\_db\_logger call and db table
* drop unused add\_db\_logger call and db table
* PR#508 drop mod\_python support
* drop mod\_python support
* PR#489 1.13 release
* 1.13 changelog updates
* fix formatting in release note
* link the release notes on the main page
* reorganize the 1.13 release notes a bit
* first stab at release notes
* bump release and add changelog entry
* PR#496 Makefile/spec fixes for building on el6
* BuildRequires: python2-devel -> python-devel
* ignore coverage erase failure in make clean target
* PR#491 epel-compatible macro in spec
* epel-compatible macro in spec
* PR#487 alter specfile for rhel6/7
* alter specfile for rhel6/7
* PR#488 python2.5 doesn't know named components
* python 2.6 doesn't know named components
* PR#400 per-tag configuration of chroot mock behaviour
* per-tag configuration of mocks' --new-chroot
* PR#480 koji\_cli name interferes with new library
* koji\_cli name interferes with new library
* PR#475 fix StringType and itervalues in plugin and cli
* unit tests for cli.load\_plugins
* extend unit tests for PluginTracker
* unit tests for PluginTracker
* unit tests for callback handling
* some unit tests for koji.plugins
* use six.class\_types instead of ClassType, TypeType in cli
* fix StringType and itervalues in plugin and cli
* PR#476 provide a temporary workdir for restart task unit tests
* provide a temporary workdir for restart task unit tests
* PR#477 update .gitignore
* update .gitignore
* PR#465 Don't allow not-null empty arch/userID in listHosts
* add unit tests for listHosts call
* validate channelID and userID inputs for listHosts
* Don't allow not-null empty arch/userID in listHosts
* PR#471 Rework build log display in web ui
* another get\_build\_logs unit test
* unit tests for getBuildLogs
* rework web build log display
* getBuildLogs call for hub
* PR#472 New features for restart-hosts command
* allow restart-hosts to work when deploying this change
* unit tests for timeout option in wait()
* avoid incorrect sleep log message
* units tests for restart related task handlers
* fix timeout logic in wait()
* restart-hosts: new options and a timeout
* restart-hosts: check for existing tasks first
* PR#474 propagate task.assign return value
* propagate task.assign return value
* PR#353 add pre/postSCMCheckout plugin\_callbacks
* add scratch param in preSCMCheckout
* change \`run\_plugin\` to \`run\_callbacks\` and remove the modification for kojikamid.py
* remove callbacks in win builder
* push build\_tag, session, scratch into callbacks
* enable callback plugin for builder
* fix fields in SCM
* use util.dslice instead
* fix reference problem
* remove useless import
* only path taskinfo, scminfo, [srcdir] to plugin
* patch2 for issue 288
* PR#199 CLI plugins
* strip .py from module name
* watch-logs: fix py3 encoding issues
* fix command options that default to global option value
* avoid sorting dictionary fields
* cli makefile: make sure we create dir before installing to it
* include plugin.py in py3 lib
* Fix blank lines (pep8)
* CLI plugin dev docs
* remove CLI plugins config options
* spec update
* Makefile updates
* update cli tests
* refactor activate\_session
* fix entry path
* cleanup after automatic split
* apply split
* touch \_\_init\_\_.py in koji\_cli
* update split\_cli.py for builtins
* script for split
* PR#449 Make sure to fix encoding all RPM Headers
* Make sure to fix encoding all RPM Headers
* PR#442 list-channels CLI command
* list-channels CLI command
* PR#445 log failed plugin
* avoid secondary traceback when hub plugin fails to load
* log failed plugin
* PR#441 document easier bootstrap for groups
* reword a bit
* document easier bootstrap for groups
* PR#438 Fix traceback for missing update
* Fix traceback for missing update
* PR#453 honor --quiet in list-tagged
* honor --quiet in list-tagged
* PR#448 Fix python3 deps
* explicitly require python2 koji lib where py3 not supported
* fix rpm-python dep for python3
* PR#450 epel-compatible python3 macros
* epel-compatible python3 macros
* PR#444 require mod\_auth\_gssapi instead of mod\_auth\_kerb where applicable
* fix docs for mod\_auth\_gssapi
* require mod\_auth\_gssapi instead of mod\_auth\_kerb where applicable
* PR#434 devtools: fakehub and fakeweb
* python3 compatibility
* typo
* fallback to default config if local fakehub/fakeweb config missing
* devtools sample configs
* fakehub devel tool
* cleanup
* fakeweb: handle 404 for koji-static. fix mimetypes
* fakeweb tool for devel
* PR#447 python3 docs update
* adjust docs wording
* python3 docs update
* PR#417 Python3 support for CLI + XMLRPC client
* spec update
* use coverage directly. adjust coverage config for py3 tests
* Work around coverage bug in py3 on Fedora
* fixEncoding tests
* don't warn at load time if krbV module is missing
* no hub plugins changes either
* no hub test changes for now
* coverage for py3 unit tests
* use python3 -m nose
* test\_lib\_py2only dir
* fix some test constants
* avoid test\_compatrequests on py3
* use\_old\_ssl is only supported on python2
* no need to port compatrequests or old ssl code
* test3 Makefile target
* move lib tests into subdir
* fix mocking of open() in utils test case
* use bytes for finding \0 in file data
* header magic is bytes
* \_\_ord -> \_ord
* fix python2 test
* str/bytes in rpm headers
* bytes in rpm headers
* fix adler32 iterations
* update requires for python-six
* correct sort() usage
* remove changes not relevant to cli
* explicit unicode in cli
* read json data in text-mode instead of binary
* cli-related test fixes
* replace urlgrabber with pycurl
* StringIO to six
* return rpm headers as string instead of bytes
* use sorted(archs) to not confuse tests
* Exception.message is deprecated
* propagate exception correctly to outer scope
* don't use krbV under python3
* fix compatrequests
* fix session
* urllib changes
* PythonImportError
* fix relative import
* python-modernize -f libmodernize.fixes.fix\_int\_long\_tuple
* python-modernize -f libmodernize.fixes.fix\_map
* python-modernize -f libmodernize.fixes.fix\_import
* python-modernize -f libmodernize.fixes.fix\_filter
* python-modernize -f libmodernize.fixes.fix\_file
* python-modernize -f libmodernize.fixes.fix\_dict\_six
* python-modernize -f libmodernize.fixes.fix\_classic\_division
* python-modernize -f libmodernize.fixes.fix\_basestring
* python-modernize -f lib2to3.fixes.fix\_tuple\_params
* python-modernize -f lib2to3.fixes.fix\_paren
* python-modernize -f lib2to3.fixes.fix\_numliterals
* python-modernize -f lib2to3.fixes.fix\_methodattrs
* python-modernize -f lib2to3.fixes.fix\_funcattrs
* python-modernize -f lib2to3.fixes.fix\_except
* python-modernize -f libmodernize.fixes.fix\_imports\_six
* fix relative imports
* python-modernize -f libmodernize.fixes.fix\_unicode\_type
* python-modernize -f libmodernize.fixes.fix\_zip
* python-modernize -f libmodernize.fixes.fix\_xrange\_six
* update docs for allowed\_scms
* rename variable in unit test. clarify docstring
* another bad url for assert\_allowed test
* more tests
* clean up docstring
* another test
* another test
* a checkout test
* tests/fixes for assert\_allowed
* scm unit test, partial
* first stab at inverted scm rules
* PR#424 handle task fault results in download-logs
* handle task fault results in download-logs
* PR#431 don't inspect results for failed createImage tasks
* don't inspect results for failed createImage tasks
* PR#430 note about where API docs are found
* note about where API docs are found
* PR#403 fixEncoding for changelogs
* extend FixEncoding unit tests
* remove non-printable characters from getRPMHeaders result
* propagate parameters recursively
* don't remove nonprintable characters by default
* less restrictive filter
* remove non-printable characters in fixEncoding
* PR#402 parse deleted mountpoints
* parse deleted mountpoints
* PR#418 use old tarfile arguments
* use old tarfile arguments
* PR#422 doc: use \`tag-build\` instead of alias cmd \`tag-pkg\`
* also replace tag-pkg ref in HOWTO doc
* doc: remove nowiki tag
* doc: use \`tag-build\` instead of alias cmd \`tag-pkg\`
* PR#404 XZ threads are very bad about memory, so use only two threads
* XZ threads are very bad about memory, so use only two threads
* PR#408 Support proxyuser=username in krbLogin
* Make sslLogin use getUserId
* Make proxyuser consistent between ssl and krb
* PR#411 Replace references to cvs with modern git examples
* Replace references to cvs with modern git examples
* PR#381 use /etc/ in the spec file
* use /etc/ in the spec file
* PR#380 Make raw-xz faster by using xz threads
* Make raw-xz faster by using xz threads (patch #2)
* ImageBuild: make raw-xz faster by using xz threads
* PR#397 missing argument
* rpm files not in (file, volume) layout
* typo
* missing argument
* PR#399 Added hostinfo command to cli
* Added hostinfo command to cli
* PR#401 add default\_md to docs (ssl.cnf)
* add default\_md to docs (ssl.cnf)
* PR#394 link to kojiji (Koji Java Interface)
* link to kojiji (Koji Java Interface)
* PR#388 Increase 50 character limit of tag names
* Increase 50 character limit of tag names
* PR#352 Optional JSON output for 'koji call'
* Optional JSON output for 'koji call'
* PR#393 remove minor version from User-Agent header
* remove release from User-Agent header
* PR#372 update jenkins config
* update jenkins config
* PR#375 raise error on non-existing profile
* raise error on non-existing profile
* PR#382 update the 1.11 to 1.12 upgrade schema for BDR
* update the 1.11 to 1.12 upgrade schema for BDR
* PR#384 Pull in some get\_header\_fields enhancements from Kobo
* more tests
* apply get\_header\_field enhancements from kobo and update unit test
* PR#378 Couple of small fixes to the koji documentation
* Couple of small fixes to the koji documentation
* PR#385 allow kojid to start when not using ssl cert auth
* allow kojid to start when not using ssl cert auth
* PR#361 1.12.0 release
* update changelog
* update changelog
* fix path to sql script in migration doc
* use short version for Sphinx version field
* more tweaks
* link for 1.12 migration doc
* migration doc tweaks
* bump version; add changelog entry
* initial 1.12 migration doc
* schema upgrade script
* PR#373 backward-compatible try/except
* backward-compatible try/except
* PR#365 handle buildroots with state=None
* handle buildroots with state=None
* PR#367 play nice with older hubs and new volume options
* typo
* for volume compat fixes
* only pass volume opt to downloadTaskOutput if needed
* missed one listTaskOutput call
* fall back to old behavior if hub doesn't understand all\_volumes option
* PR#359 Add koji-tools link to docs
* Add koji-tools link to docs
* PR#318 Signed repos, take two [dist repos]
* record missing signatures even if skipping them
* rename some options for clarity
* fix arg sanity check
* deal with missing signatures more correctly
* Don't require specifying a key if --allow-unsigned is given
* fix latest links for dist repos
* print('') is more 2.4 friendly
* log missing multilib files
* saner error on missing multilib files
* propagate the full name of the skip\_unsigned option
* log missing signatures even if allowing unsigned
* log missing files and signatures for dist repos
* handle case where tag archlist is None
* cleanup: has\_key and print
* last bit of renaming
* rename files
* more renaming
* first stab at renaming signed repos to dist repos
* command help adjustments
* adjust cli handling of --delta-rpms arg
* first stab at fixing delta rpm behavior for signed repos
* add builder json requirement for rhel5
* require python2-multilib on builder
* upload kojipkgs data
* handle unsigned rpms in signedRepoMove
* no integer keys in xmlrpc
* rework signedRepoMove api a bit
* update exception syntax in signed-repo code
* more unit tests
* clean up logic to avoid duplicate code
* extend unit test for signed\_repo\_init()
* unit test for signed\_repo\_init()
* clean up handling of task\_opts in signed\_repo\_init
* use nextval function in signed\_repo\_init()
* avoid print statement
* rework noarch filter
* avoid noarch duplication
* avoid duplicate hard linking
* fix multilib import
* debug logging
* use correct lifetime option for deleting signed repos
* logging adjustments
* avoid directory namespace conflicts with signed repos
* option to write signed copy when importing signature
* support nvra as well as nvr in write-signed-rpm
* schema update script for signed repos feature
* fix default arches for signed-repo cli
* update data for list-commands test
* use safer\_move in repoDone
* repoDone knows if a repo is signed
* clean up strings in signed-repo cli
* clean up signed\_repo\_init
* remove stray comment copied from hub code
* remove incorrect singleton syntax in \_taskLabel()
* lowercase directories in signed repos
* make the src arch work in signed repos
* fixes from testing and upstream comments
* add --non-latest
* errno not error
* fall back to a copy if we cannot hardlink
* Make the signedRepo tasks happen in the createrepo channe
* fix newRepo in webui
* add signed flag to repo table
* lay out rpms by first character
* encapsulate repodata references
* implement multilib
* move package addition logic to builder from hub
* implement comps
* implement --delta-rpms
* fix createrepo task breakage in webui
* kojira policy for signed repos
* implement --event
* implement --allow-unsigned and --skip-unsigned
* signed-repo kojiweb tweaks
* initial builder implementation for signed-repos
* initial hub implementation for signed-repos
* implement CLI for signed-repos
* PR#200 Saving failed build trees
* updated tests
* refactor
* change config separator to whitespace
* check that correct builder is used
* Fail if host is disabled
* handle unknown exception in main
* remove unnecessary code
* utilize multiple volume support
* use print function everywhere
* config file
* removing already done TODOs
* make stripped paths configurable
* permissions
* Define tasks via config file
* CLI for save\_failed\_tree
* Basic docs for save\_failed\_tree plugin
* Basic functionality for save\_failed\_tree plugin
* PR#354 more runroot tests
* more runroot tests
* PR#232 Allow uploading files to non-default volumes
* sanity check volume field for uploads
* multi-volume support for buildNotification
* multi-volume support for wrapperRPM
* remove unused call
* extend CLI multi-volume support
* use only relative paths + volumes in downloadTaskOutput
* pass volume directly to work()
* test that volume is passed in fastUpload code
* split up upload tests
* volume opt for checkUpload
* propagate volume through hub
* backward compatibility changes
* Allow uploading files to non-default volumes
* PR#350 cli: clarify some "mismatch" warnings
* cli: clarify some "mismatch" warnings
* PR#351 cli: check # of args in handle\_set\_build\_volume()
* cli: check # of args in handle\_set\_build\_volume()
* PR#358 jenkins configuration update
* jenkins configuration update
* PR#260 Add debug and debug\_xmlrpc to default koji config
* debug/debug\_xmlrpc should default to False
* remove defaults from --debug and --debug-xmlrpc so configuration can supply
* Add debug and debug\_xmlrpc to default koji config
* PR#304 unify KeyboardInterrupt behaviour for watch commands
* new watch\_tasks code should re-raise KeyboardInterrupt
* don't abort all unit tests if KeyboardInterrupt is uncaught by code
* fix return value for watch\_tasks
* unify KeyboardInterrupt behaviour for watch commands
* PR#341 Some more 2to3 python2.4 safe results
* idioms
* whitespace formatting
* remove types module
* remove sys.exc\_type, exc\_value, exc\_traceback
* remove obsoleted StandardError
* remove deprecated "filer" calls
* PR#345 support removing extra values from tags
* make cli and hub to support remove-extra for edit-tag
* PR#295 Set compatrequests defaults same as requests
* Set compatrequests defaults same as requests
* PR#348 remove unused function parse\_timestamp
* remove unused function parse\_timestamp
* PR#347 Return datetime objects in iso string format
* return datetime objects in iso string format
* stop mangling psycopg2.extensions
* PR#343 Handle empty file upload
* fix traceback uploading empty file
* Handle empty file upload
* PR#337 cli: move list-permissions to info category
* cli: move list-permissions to info category
* PR#332 remove has\_key (not working in python3)
* typo
* remove has\_key (not working in python3)
* PR#336 use alabaster theme for docs
* use alabaster theme for docs
* PR#333 Fix README link to mash project
* Fix README link to mash project
* PR#331 use new exception syntax
* a few more exceptions
* use new exception syntax
* PR#330 formatting typo
* formatting typo
* PR#226 print statement -> print function
* a couple more prints
* print statement -> print function
* PR#319 Added support for CG provided owner
* Added support for CG provided owner
* PR#324 jenkins' docs
* fixed typo
* jenkins' docs
* PR#326 use multicall for clone tag
* also use multicall for setting the package list
* use multicall for clone tag
* PR#283 wrap sending email in try except
* wrap sending email in try except
* PR#323 Honor excludearch and exclusivearch for noarch builds
* rework logic and extend unit tests
* add comment and docstring to choose\_taskarch()
* more choose\_taskarch testing
* stub kojid tests
* add method choose\_taskarch
* choose an arch for noarch package with ExcludeArch or ExclusiveArch tag
* test cases for fixEncoding
* fix encoding of loaded json data
* fixEncodingRecurse function
* PR#278 mock\_output.log not included with logs when importing rpm builds
* fix mocklog path
* add mockout.log to log\_files
* hub: enforce strict in get\_user()
* PR#309 Make --can-fail option working for make-image
* Make --can-fail option working for make-image
* new hub CheckClientIP option
* PR#307 Fix options.force in import\_comps
* Fix options.force in import\_comps
* PR#308 fix a syntax error introduced by commit 6f4c576
* fix a syntax error introduced by commit 6f4c576
* PR#303 check http request status before attempting to decode response
* include raise\_for\_status in unit test
* check http request status before attempting to decode response
* PR#317 docs update - krbV configuration
* docs update - krbV configuration
* PR#310 Fix koji-devel mailing list address
* typo
* Fix koji-devel mailing list address
* PR#311 Add indirectionimage to pull-down menu in webui
* Add indirectionimage to pull-down menu in webui
* PR#313 docs typo
* docs typo
* PR#316 update test requirements docs
* update test requirements docs
* make non-plugin tasks default
* web.conf options for specifying which methods will appear in filter
* make optional\_arches optional
* be stricter about incrementable release values
* more complex release values to test
* unit test for get\_next\_release()
* add disttag handling to get\_next\_release
* preserve old option for compatibility
* koji-shadow: fix log() invocation
* koji-shadow: remove authca, it's not used for ssl\_login any more
* koji-shadow: allow use without certs
* Fixed minor typo in writing koji code doc
* Don't fail on unimported krbV
* Update content generator metadata documentation
* no need to escape, thanks mikem
* remove useless return value
* s/result/results/
* have listPackages() method to support queryOpts option and convert the packages page to use paginateMethod()
* fix method names to listPackagesSimple and countAndFilterResults.     1. replace listPackages call by listPackagesSimple.     2. replace filterResults by countAndFilterResults
* add method listFlatPackages and CountAndFilterResults
* PR#240 Convert from pygresql to psycopg2
* add psycopg2 requires to spec
* convert from pygresql to psycopg2
* Allow principal and keytab in cli config
* Don't require cert/serverca for kojid
* backward-compatible default value for kojid/kojira/koji-gc certs
* Error message for missing certificates
* Fix kojiweb error using getfile to download non-text files
* fix raise\_fault condition in taskWaitResults()
* typo
* fail if all sub-tasks fails
* don't try to upload image if task failed
* fix default value for --can-fail
* CLI options for failing arches
* remove unused import
* typo fixes
* Basic test for task canfail
* update tests
* ... partial...
* don't error when waiting on 'canfail' tasks
* fix ref to task id
* adjustments to WaitTestTask
* support optional\_arches in livemedia builds
* canfail option for BaseTaskHandler.wait()
* unify CLI parsing of multiple architectures
* fix poll\_interval ref in list-history cmd
* fix default values for buildroot.container\_type
* convert test data to json
* Make tests compatible with rhel7/centos7
* more direct tag functions for the hub
* update url and source in spec
* Clarify purpose of cfgmap
* Update exception syntax in rmtree()
* replace old rmtree with the new one
* keep going on errors
* add a note
* first stab at rmtree for long filenames
* Add krb\_rdns to koji-shadow
* koji-gc: Set default value for krb\_rdns to False
* Revert "default krb\_rdns to True"
* Make koji-gc also work with principal and keytab
* Update http:// to https:// in code
* Update http:// to https:// in docs
* Use https to link to wiki
* Extended clone-tag
* PR#83 add support for putting scripts just before the closing </body> tag
* add support for putting scripts just before the closing </body> tag
* move link to the bottom
* add 'Show abbreviated results' also to bottom
* fix the link to full results
* low the limits to 4 line and 400 chars
* lower the length limits and put the expansion link at the postscript end
* remove the escaped instance variable and let TaskResultLine to add postscript
* fix hence the abbreviated result always with the postscript
* add docstring and replace func name by a good one
* Fix as mikem review result.      replace reduce func by sum func      max lines is honored for dictionary results      follow PEP8 style      do not require HTMLParser      from url args remove maxAbbrResultLines/maxAbbrResultLen
* fix issue 222: Don't hide results in kojiweb
* Also set WSGIApplicationGroup to %{GLOBAL} for the web
* make the tlstimeout class compatible with newer versions of qpid
* fix version in docs
* spec changelog
* migration doc
* add some comments to the interim cgen schema update scripts
* schema upgrade script for 1.11
* add another pattern to is\_requests\_cert\_error()
* allow setting no\_ssl\_verify in client config
* Don't require protonmsg on rhel5
* more README formatting
* Fix README formatting now that pagure has enabled nl2br
* kojiweb: [rpminfo] add tooltip for SIGMD5 field
* cli: [rpminfo]rename "Payload" to "SIGMD5"
* kojiweb: [rpminfo]rename "Payload Hash" to "SIGMD5"
* PR#138 don't bind-mount /dev for LiveMediaTask (RHBZ #1315541)
* don't bind-mount /dev for LiveMediaTask (RHBZ #1315541)
* doc: Highlight string supposed to be in setting
* work around in OpenSSL issue on the hub
* PR#222 missing check on number of arguments
* missing check on number of arguments
* Maintain non-strict behavior in getTaskInfo
* avoid try..except..finally
* don't mask kwargs in callMethod
* Restore baseurl to original if GSSAPI login didn't work
* Disable automatic request retries for GSSAPI authentication
* Allow callMethod calls to specify that no retries should be attempted
* Determine if a request error is caused by certificates with requests
* Header values need to be strings
* Implement GSSAPI login
* unit tests for new\_session()
* add test for ClientSession.serverPrincipal
* more compatrequests unit tests
* still more tests
* uncovered import exception
* more unit tests for compatrequests
* some unit tests for koji.compatrequests
* more smarts for ssl bug workaround
* ssl hack 2
* force a new session in ssl\_login
* allow setting more session options in kojivmd
* allow setting more session options in kojid config
* allow setting more session options in kojira
* let koji-gc config set more session options
* use grab\_session\_options everywhere
* fix return
* koji-gc: remove --network-hack, use grab\_session\_options
* grab\_session\_options function
* force https when using ssl auth
* avoid tickling race condition with common keep alive timeout setting
* update connection error retry code
* honor verify in compatrequests
* avoid with statement for now
* suppress warnings in requests
* no\_ssl\_verify session opt
* only use default certs if they exist
* always pass serverca
* move cert date directly into client session opts
* fix post handler
* use compatrequests if requests no present
* add config for use\_old\_ssl. make new session on errors
* use correct port
* trying to fix auth
* compat mode works anonymously
* don't assume content type is given
* working?
* More work on compatrequests
* stub for compatrequests
* stop mocking removed function in tests
* fix handler url for upload
* honor debug\_xmlrpc
* move is\_cert\_error(); require python-requests
* ssl auth working
* parse host from baseurl in \_serverPrincipal()
* pull requests bits from py3 work
* include tag\_extra data when deleting a tag
* handle long type for tag ids
* rename test file
* test for \_untag\_build
* fix up test case
* more direct tag calls, also a fix
* \_direct\_pkglist\_remove
* \_direct\_untag\_build for consistency
* stub test for \_tag\_build
* unit test for create\_tag()
* more pkglist..
* also pkglist\_add
* provide some lower-level functions sans access check
* PR#210 ut: cli - for handle\_maven\_build and some functions related in koji.utils
* ut: test case for koji.util.tsort()
* ut: koji.utils - cases for related Maven build utils
* ut: format testcases
* ut: cli - test\_maven\_build
* add dependency on python-qpid-proton to koji-hub-plugins
* protonmsg hub plugin
* update copyright year and point the powered by link to pagure.io/koji
* fix typo in assign-task command
* PR#101 Added CG\_Importer tests
* update CG\_Importer.get\_build test
* Leveraging koji.fixEncoding() and cleaned up spacing
* Added test cases for get\_build
* Added more CG\_Importer unit tests
* Added test for CG\_Importer test\_build
* Added support for unicode in lookup\_name
* Added tests for assert\_cg\_access
* Cleaned up test cases for get\_metadata
* Added default.json and finished get\_metadata tests
* Added tests for get\_metadata - Fixed Typo
* Added base test case for CG\_Importer
* PR#90 optimize table joins for faster counting performance
* optimize table joins for faster counting performance
* PR#67 add --logfile parameter, no behaviour changes if omitted
* back out top broken changes
* add --logfile parameter, no behaviour changes if omitted
* PR#187 ut: cli - for handle\_build / \_unique\_path / \_upload\_progress\_callback / \_running\_in\_bg ..
* ut: cli - test\_chain\_build     cli.handle\_chain\_build: remove unused '--noprogress'                             add '--quiet'
* remove unused code
* ut: cli - test\_running\_in\_bg
* ut: cli - test\_build
* ut: cli - test\_upload\_progress\_callback
* ut: cli - test\_unique\_path
* drop commented debug code
* mock session.getAPIVersion in runroot tests
* change stray stderr writes to logger.info on hub
* More policy tests -- 100% coverage for policy.py
* no coverage for unreached code
* ImportErrors are uncovered
* provide more information to the pre/postRPMSign callback
* pass build information consistently to the postImport callback
* PR#154: ut: cli - test\_watch\_tasks / test\_add\_group / test\_add\_host ..
* remove renaming in cli
* change handle\_remove\_pkg to multicall
* change handle\_block\_pkg to multicall
* ut: cli - test\_add\_pkg
* ut: cli - test\_rename\_channel
* ut: cli - test\_remove\_channel
* ut: correct typos
* ut: cli - test\_remove\_host\_from\_channel
* ut: cli - test\_add\_host\_to\_channel
* pep8 format for tests/test\_cli
* ut: cli - test\_edit\_host
* ut: cli - test\_add\_host
* ut: cli - test\_add\_group
* ut: cli - watch\_tasks with KeyboardInterrupt
* ut: cli - test\_watch\_tasks
* PR#178: Expose optional rpm deps
* rename test spec file
* don't show optional deps if they are not supported by rpm
* ignore optional deps for rpm < 4.12
* show optional deps in web ui
* getRPMDeps exposes additional deps
* PR#184: Port Koji comps/group functionality from yum.comps to libcomps
* require python-libcomps on rhel7
* add \`generate\_out\_calls for tests\`
* skip some subtests of modules missing
* require python-libcomps on Fedora
* remove stale comment
* ut: skip the tests for large file comps-example.xml by default
* ut: cli - test\_import\_comps
* check if tag exists and refine some code
* drop debug code
* partial - mostly working
* PR#170: Allow buildArch tasks to continue when sibling fails
* config default updated
* Don't cancel subtask when other fails
* use dateutil to parse timestamp args in list-history
* always encode hello to utf-8
* add unit tests for check\_NVR[A] functions
* fix cut and paste errors
* assert basic nvr sanity for cg imports
* fix issue report link in README.md
* PR#173: Nicer runroot taskinfo page
* Nicer runroot taskinfo page
* PR#174: createTag method should support to set extra data for a tag
* handle values containing "=" in add-tag and edit-tag
* add extra data option to create\_tag
* update old\_edit\_tag to support extra tag data
* unused returns (handled by env)
* remove unused variables/methods
* removed unused imports
* fixing unimported exceptions
* remove asterisk import
* fix readme formatting
* add README
* drop stale planning comment
* make resetBuild a complete reset
* fix typos in readTaggedBuilds
* fix task\_id ref in recycle\_build
* unit test for recycle\_build
* provide imageID value to query
* unit test for add\_btype
* unit tests for list\_btypes
* only admins can add btypes
* also clear image\_archives rows in reset\_build
* typo: image builds are not maven builds
* fixes to cgen2 schema update
* update unit tests
* fix callback in recycle\_build
* fix new\_typed\_build invocations
* make sure rpm btype is set when appropriate
* recycled builds: more checks, clear type info
* move build recycling logic into its own function
* warn instead of error when sphinx-build is absent
* filter builds by arbitary type in web ui
* new calls: listBTypes, addBType
* add btype data for legacy builds
* typo
* ..
* update test case
* use new archive component tables in hub code
* more schema updates
* typo
* enforce that output types match one of the build types
* more fixes
* unit test for new\_typed\_build
* unit test for get\_build\_type
* fix up cli buildinfo
* fixes
* add btype\_id to archiveinfo
* schema-update-cgen2.sql
* fix up archiveinfo page
* handle btypes in import\_archive
* handle btypes in cg\_import
* use InsertProcessor in new\_maven\_build
* more consistency between listBuilds and getBuild
* support querying by new btypes
* get\_build\_type()
* btypes schema changes
* fix cli display for generic archives
* fix web display of generic archives
* support untyped build archive imports
* update runroot cli test case
* Slight improvement to new-chroot to make the cli change less likely to confuse older builders
* A stab at --new-chroot support for rhe runroot plugin
* Update cli tests for assign-task command
* Expose assignTask via CLI
* allow hosts with no channels to take assigned tasks
* have koji to gracefully hanle noneexistent tasks
* fix spelling error
* don't generate messages on postCommit events
* add postCommit to callbacks list
* preCommit too. why not?
* add postCommit callback
* default krb\_rdns to True
* cli: fixed download-logs with nvr
* Remove all bad-whitespaces
* make yum.comps a soft dep
* honor smtp\_host option in koji-gc (jflorian)
* pull in content generator doc too
* fix doc headers
* pull in content generator metadata docs
* pull docs updates from Fedora wiki
* minor text adjustments in doc
* Add testing instructions to docs
* fix image path in list\_archive\_files
* docs: correct url
* docs: update submission guidelines
* pass workdir to mergerepos command
* add unit tests for koji.openRemoteFile
* use correct temporary dirs in openRemoteFile and mergerepos
* clean up output
* more debugging output in mergerepos
* debug output
* Test lchmod is called any any order
* use python json, but fall back to simplejson
* Get the test suite working again
* Removes unnecessary declaration of results as an empty dict, and modifies styling for PEP8 compliance
* don't try to unlink src after safer\_move()
* unit test for safer\_move()
* update raise syntax in safer\_move()
* use safer\_move on hub
* just wrap shutil.move for now
* stub
* add jnilib archivetype
* Removes Vagrantfile
* Adds unit tests for tasks.py Adds Vagrant support to run unit tests
* fix spec bug in the builder-plugins package
* fix handling of strict option in get\_image\_archive()
* fix the issue that listArchiveFiles() returns empty list for content generator archives
* add tlb archive type
* erase coverage data before generating it
* Add test cases for delete\_build() function
* Scrub comments based on feedback from @mikem in #93
* Add tests for the UpdateProcessor
* Produce a nice coverage report
* Scrub comments based on feedback from @mikem in #93
* Add tests for the QueryProcessor
* The beginnings of some cli tests
* Test for import build and import rpm
* Tests for rpmdiff and check\_noarch\_rpms
* Add test for importImageInternal
* Test \_applyQueryOpts
* Remove mktask in favor of make\_task (and fix all references)
* Add a test of the runroot hub plugin
* Tests for the insert processor
* show hyperv support in CLI help
* expose Factory hyperv support in builder
* Tests for the Host model
* Some tests for the base policy stuff
* Add test for get\_upload\_path() functio
* Add test for get\_verify\_class() function
* enable dns to work in runroot buildroots
* LMC: change the name of the andconda log files
* --project does not like options with spaces, just go with name
* lmc: add --project to livemedia-creator
* allow kojiweb login to be disabled
* fix up the list of tasks that you can watch logs on
* cli support for querying by cg
* query history by cg
* add armv6 hard fp arches to mergerepos cannonical mapping lists
* s/LiveMEDIA/LiveMedia
* add missing self. in ks handling
* define bld\_info earlier in livemedia/livecd/appliance handlers
* remove stray colon in option display
* apply fix for setting kickstart url to livemedia as well
* add arch to log path for livemedia builds
* enable task filtering for livemedia tasks
* no rpm list for livemedia images until we can get the data from lmc
* inject install tree url for livemedia spins
* use correct livemedia isoname throughout
* clean up web display for livemedia tasks
* parse task params for createLiveMedia
* fixing up cli task display
* top level livemedia tasks are noarch (patch by dgilmore)
* correct livemedia log name
* fix livemedia report text
* fix arch splitting
* more livemedia multiarch
* allow multiple arches on spin-livemedia command line
* partial work on multiarch livemedia builds
* use correct path to result iso
* fix docstring for importImageInternal
* use correct value for lmc "releasever" arg
* look in right place for livemedia isos
* use --iso-name livemedia opt
* grab livemedia anaconda logs too
* capture all livemedia logs
* fix isoname
* use \_shortenVolID for livemedia handler too
* shorten the livecd iso labels to match fedora's naming policy
* refactor lmc args. only making live isos for now
* fix livemedia-creator kickstart opt
* make sure livemedia options are passed through to task
* misc fixes
* [\*] don't obscure traceback in retry code
* first stab at livemedia control task, based on livecd
* fix whitespace
* - fix whitespace issues with tab characters vs spaces - fix invalid variable names in livemediacreator handler - add parser for ostree pxe2live to cli
* koji: Add LMC error handler, and misc glue
* Hub: Add livemedia image type
* builder: Add LMC task handler
* Optparsing for LMC
* Remove unused variables
* Space-delimited
* Split the HiddenUsers string pulled from our config
* Make HiddenUser into HiddenUsers
* Remove unused var
* Allow hiding a user from the frontpage task list
* ensure qcow2 v2 compatible output regardless of local qemu-img version
* deprecate spin-livecd with spin-livemedia
* ignore tagless buildroots in BuildTagTest
* don't ignore source data in cg\_import
* show source in buildinfo display, if available
* use build source value for source test, if available
* cg matching policy handlers
* add krb\_rdns option. see https://fedorahosted.org/koji/ticket/328
* update docstring for get\_event()
* don't recycle event ids in multicalls
* re-add install target to docs
* remove duplicates in the table of contents
* first pass at converting docs to sphinx-doc reStructured Text
* plugin conf files should be config(noreplace)
* package builder plugins
* structural help, categorize commands into groups
* use correct epoch when recycling nvr
* update epoch when recycling a build
* reworking cli import a bit. support importing over a failed/canceled nvr
* honor --test in import-cg command
* return buildinfo from cg\_import
* set strict to true so dnf does not ignore broken deps
* set install\_weak\_deps to 0 by default
* noarch arch handling fixups on armhfp tasks
* catch pyssl import errors
* acquire import lock in get\_profile\_module
* add unit test for using profiles in threads
* clean up the tar-gz patch a bit
* first stab at tar-gz image support
* Bugfix - st\_complete needs to be defined earlier
* Add subdirectory for builder plugin configuration
* Make the other makefile vars here explicit now
* Install both hub and builder plugins
* Run plugin callbacks when image builds finish
* standard\_buildroot.id has been renamed to buildroot\_id
* Fix wait-repo to not wait a minute if --timeout=0 is specified
* use full path to squashfs-root
* use rhel-friendly path for dd
* Add support for liveimg-squashfs
* preserve upload blocksize default in api
* upload-blocksize doesn't need to be a cli opt
* fix merge issue
* make the upload block size configurable
* use urlgrab instead of urlopen in download-build
* Add packages to a koji package group as mandatory not default
* Enable keepcache in koji dnf conf
* set the arch in the tdl to be compatibile with qemu
* Fix handling of --arch param when a target is specified
* Support for koji profiles
* Move config processing from CLI to koji.read\_config()
* koji-shadow: use /var/tmp for work files
* koji-shadow: use workpath consistently
* copy extra information for a tag cloned from primary koji
* koji-shadow: mark builds without buildroot info as noroot
* remove use of dict comprehensions to retain python 2.6 support
* Add tests for koji.Enum
* Remove Enum.getvalue, since it is unused
* Add nocover to some blocks we won't test
* Test krbv failing when krbV is not installed
* Coverage tracking for the test suite
* Add rough notes on koji.next goals/plans
* Add watch-tasks alias
* Implement watch-task --mine, --user, etc
* Split out task list retrieval
* add --krbservice cli opt
* Configure httpd's access control automatically with IfVersion
* move table drops to schema-clear.sql
* drop tables in reverse creation order
* CLI: fix download-task's session typo
* obr archivetype
* Drop tables and functions only if exist
* cli: if given an rpm name without --rpm, download the containing build
* cli: handle rpms in download-build
* add-pkg: use multicall and ignore existing packages
* wsdl archivetype
* avoid traceback when cli fails to parse task parameters
* avoid masking exceptions in retry code
* handle Unexpected EOF exceptions on reads
* clarify error message for noarch rpmdiff mismatches
* add rc archivetype
* fix errors in several raise statements
* allow filtering runroot tasks
* add missing comma in schema file
* adjust default seach result order for large tables
* adjust option name to: use\_createrepo\_c
* enable using createrepo\_c instread of createrepo
* fix using https url with non-ssl auth in python 2.7.9+
* remove additional dead ssl code
* Make sure a URL is written to the output kickstart file
* Don't use stringToVersion from pykickstart
* Remove dead client CA code
* new archivetypes: shell scripts and batch files
* fix the matching of archivetypes
* display task info for regen-repo command
* don't break listArchives argument ordering
* fix query opts in repo\_references
* avoid waiting on empty task list in newRepo tasks
* avoid db error when taskSetWait called with empty task list
* fix query opts passing in repo\_references
* ensure fixed\_params variable is defined
* fix nvr recycling
* fall back to client side info for authtype
* print the correct authentication method in "koji moshimoshi"
* remove stray # from literal footers in web ui
* taginfo: return error code if tag does not exist, drop stray newlines
* Increase default SSL timeout to 600
* remove mutable default args in \_do\_target\_image
* add mechanism for general purpose parameter passing to Image Factory
* add groovy script archive type
* fail a build that produces an unknown file type, rather than silently ignoring them
* cleanup the build directory when re-running a failed build
* Better web display for metadata\_only imports
* record and report source and metadata\_only fields
* ensure builddir when writing cg metadata file
* fix refactor issue
* cg\_import policy stub
* run prep steps early
* more refactor
* don't pass importer class to callback. could confuse plugins
* refactoring cg importer to facilitate policy hooks
* fix a small typo
* make sure timestamps are floats to keep datetime happy
* temporary workaround for external component refs in cg\_import
* pre/postImport callbacks for content generators
* new archive types: json, key, dot
* record raw metadata
* set build.start\_time in cg\_import
* use build.start\_time in webui is set
* support for build.start\_time field
* add start\_time to build table
* set completion\_time for cg builds
* combine cg import code into a class
* fix typo
* handle json metadata as an upload
* remove broken cg\_export stub
* show extra data in cli. fix cli rpminfo for cg brs
* show extra data in web ui
* show extra data on buildinfo page
* provide extra data in several archive queries
* more centralization of json parsing
* return rpm extra data more places, plus fix some typos from earlier commits
* return extra info in get\_rpm, support transforms in QueryProcessor
* handle extra in cg\_import\_rpm
* handle extra info in cg archive outputs
* fix python 2.4 incompatibilities in download-task and runroot commands
* pass build extra along
* version 1.10.1
* import image components
* show upload progress in import-cg
* docs: Document how to write a plugin
* use util.brLabel when appropriate
* move buildroot label display code into util function
* fix buildroot display on archiveinfo page
* first stab at support metadata only cg imports, plus a few fixes
* fix some exception lines
* fix up mistakes in cg cli handlers
* tweak metadata format for maven/win/image extra data
* Revert "fix superclass ref"
* tweak debug messages in schema update script
* cg\_import does its own access check now
* rework cg\_import\_archive a bit
* pull maven/win/image build info from metadata build.extra
* Avoid multiple updates to same rows in taskSetWait
* return extra data in get\_build
* adjust handling of buildroot extra. handle extra data in new\_build
* more extra data. just use a json text field for it
* Revert "more extra data in schema"
* more extra data in schema
* adjust cg access terminology
* cli for managing cg users
* obsolete comment
* fix buildroot title display on rpminfo page
* attempt to fix web display
* buildroots might not have tags or repos now
* fix log path ref
* fix br ref
* fix upload path
* fix file path on hub
* let extra be optional
* fix br init
* typo
* fix cg\_id ref
* fix table list
* fix login check
* work on cg import cli
* stubs for cg output import handlers
* cg archive listing
* set tools/extra for br
* assert buildroots are used
* work on handling components from cg
* use cg\_new, fix typos
* fix data ref
* fix var name
* fix superclass ref
* fix int encoding in list\_rpms
* BuildRoot.cg\_new() and related updates
* fix int encoding in list\_rpms
* partial work
* assert cg access
* check for tag existence in add-pkg
* add/remove user from cg
* cgen cli stub
* include new br info in queries
* fix br components data in cg\_export
* cg\_export fixes
* fix ambiguous buildroot\_id column ref
* cg\_export
* provide CGImport call
* cg\_import stub
* use encode\_int on rpm sizes
* Remove koji.\_forceAscii
* Resolve the canonical hostname when constructing the Kerberos server principal
* add support for Image Factory generation of VMWare Fusion Vagrant boxes
* Be more careful when detect cert-expiry exceptions
* don't omit debuginfos on buildinfo page
* correct error message in fastUpload
* cli: rename download-scratch-build to download-task
* koji cli: add download-scratch-build command
* Better catch SSL errors
* Check task method before trying to determine "scratch" status
* fix changelog date
* 1.10 release
* migration doc for 1.10
* schema update script for 1.10
* Don't retry on SSL failures
* runroot: Avoid squashing path components with os.path.join
* show tag options in web ui
* show tag\_extra in cli list-history
* show/edit tag extra options in cli
* honor tag['extra']['mock.package\_manager']
* initial support for tag extra options
* download-logs: print a message when there are no logs to download
* capture mock output even if it exits immediately
* Add systemd unit file for kojira
* Add systemd unit file for kojivmd
* Add systemd unit file for kojid
* schema: add missing image channel from the default schema
* inject the url of the install tree into the kickstart used for generating images
* Avoid errors logging anonymous retries (ticket 317)
* fix more #pylint issues
* handle symlinks in BuildMavenTask.\_zip\_dir()
* Make the templated footer configurable
* Catch the case where the runroot plugin is not installed
* Add CLI for runroot plugin
* Add the hub plugin that accompanies the kojid runroot plugin
* handle tasks with arch-specific and noarch subtasks (e.g. kernel)
* More query fixes
* add a note about FollowSymLinks in hub httpd conf
* files: Tell Apache to let clients follow symlinks
* more #pylint -- dangerous-default-value
* fix docstring #pylint
* fix comment #pylint
* import no longer used #pylint
* actually raise intended exceptions #pylint
* fix useless-else-on-loop warnings #pylint
* fix a couple old typos found by pylint
* Ran reindent.py from cpython tools on all python scripts
* (koji-web) Treat extra-footer as a template
* (koji-web) Markup scratch builds
* (koji-web) Add user-specific css classes
* add vhd/vpc support
* fix several small mistakes in the cgen modifications
* schema: add missiing raw.xz archive type
* use the same name for repository and pluginRepository entries in settings.xml
* mergeScratch(): import rpms from a scratch build into an existing build
* add id and parent to the headers of TaskStateChange messages
* handle callnum=None (anon\_retry) in retry error messages
* typos
* clean up cgen schema update script
* Getting cgen schema update script to working state
* schema-update-cgen.sql; fix buildroot\_extra\_info primary key
* Add "real" Vagrant format options to image building
* fix arch field in query\_buildroots
* more cgen porting
* adapt list\_archives() for cgen schema
* adapt list\_rpms() for cgen schema
* fix constraint name; drop buildroot\_extra\_info.v\_type; drop some obsolete comments
* update query\_buildroots() for cgen
* add imageID arg to list\_archives()
* fix repo\_references() for cgen schema
* include image listings in build\_references check
* image\_archive\_listing; add drops for new tables;
* merge some of the new buildroot tables, refactor buildroot\_extra\_info
* cg br schema pass 1
* Make koji.plugin.export\_in() decorator working
* package hub.conf.d and web.conf.d
* we xz compress the docker base image, make sure it is named correctly
* add/use strict option in find\_build\_id
* for prune-signed-copies, consider file timestamp
* support latest=N api option in cli
* preserve latest behavior for non-integer, non-boolean "true" values, and update comment
* Allow specifying an 'int' for 'latest'
* slightly better errors for host auth failures
* update predefined archivetypes
* taskinfo.chtml: missing line break
* in modpy mode, if ConfigFile is set to default, then default to normal ConfigDir
* Support conf.d in kojihub and kojiweb
* handle package field for group\_package\_listing in history queries
* Avoid crash if some hosts have no arches
* Test parent tag existence before query for its id
* runroot plugin
* ssl: use the best possible connection method
* image tasks: only bind mount /selinux if it exists
* Compress docker images with xz
* Add new {pre,post}RPMSign plugin callbacks
* update httpd access directives
* use os.lchown() so dangling symlinks don't cause errors
* update copyright
* fix a few errors revealed by pylint
* add --ini and --section options to maven-build and wrapper-rpm
* xmlrpclib is not thread-safe, create a new ServerProxy instance so we're not sharing with the stream\_logs thread
* display the top-level task start time as the build start time
* move maven-chain parsing into util so it can be used by other utilities
* declare dependencies as pluginRepositories also, because dependencies and plugins are resolved separately (for some reason)
* remove the resolve-plugins goal from Maven builds
* preserve the format of parameters with no value when calling maven-build and maven-chain
* include status information in the output of the chainmaven task
* check for duplicates during scratch builds also
* consider more timestamps before deleting old repos
* do not require rpm source layout
* do not assume sourcedir=chrootdir
* compress rhevm ova
* log failed queries
* report subset of maven tags in regen total
* report expired time when triggering newRepo task
* prioritize repo regen by time since expiration rather than time since creation
* solve a threading issue in kojira
* remove debug line
* use TLSv1. https://bugzilla.redhat.com/show\_bug.cgi?id=1152823
* list-history --watch
* don't \_forget subsession when used by a thread
* log out subsession if thread dies
* log exceptions in currency checker thread
* restart currency checker if it dies
* remove multicall from currencyChecker in kojira
* kojira: check repo currency in separate thread
* ignore indirectionimage tasks in source test handler
* older python does not understand try..except..finally
* opts is not optional in the indirection handler
* small fix regarding location of final image
* missing var in action function arguments
* Initial attempt at a koji task based on the Indirection plugin
* sanity check requested arches for image builds
* complain if the user does not exist
* don't assume newRepo tag arg is a string
* defer g:a:v no-match error until after we check ignores
* fix an issue with listTasks call
* fix field handling in readTaggedRPMS
* support --link in import-archive
* builder: Improve allowed\_scms documentation in the config file
* Support rpm source layout (SPECS and SOURCES dirs) when building srpms from source control
* correctly call pykickstarts makeVersion
* fix cursor name race condition
* maven-chain builds can override a G:A:V from the tag with a previous build in the chain, update the index accordingly
* fix typo in updateMavenBuildRootList
* log error when multiple builds found for a g:a:v
* log details on unknown maven file errors
* handle maven\_tag\_archives generator in updateMavenBuildRootList
* return a generator from maven\_tag\_archives
* fix variable name
* use pid in cursor name
* limit request size
* QueryProcessor iteration refinements skip cursor if limit < chunksize avoid possibly volatile parameters during iteration
* rework repo\_init for iterator efficiency
* use iteration in readTaggedRPMS
* Use iterators for potentially large queries to reduce memory use
* add raw-xz option
* refactor do\_images
* refactor image-build handlers in kojid
* Revert "image: support xz compressed raw files"
* fix to address for gc notices (ticket 268)
* handle task ids in download-build
* list-tasks cli improvements
* koji-shadow: add option to only import noarch builds
* image: support xz compressed raw files
* maven-chain: support multiple config files
* ChainMavenTask: compare the task deps when checking for duplicate builds
* return all results when waiting on all subtasks
* provide the list of active subtasks to wait on in ChainMavenTask.handler(), to avoid unnecessary updates in taskSetwait()
* BaseTaskHandler.wait() should only get results for finished subtasks
* use SELECT ... FOR UPDATE in taskWaitCheck() because those rows may be updated in taskWait()
* support wrapper-rpm builds in maven-chain
* don't include dependencies when looking for duplicate builds
* handle display of chainmaven tasks
* support -SNAPSHOT versions in scratch builds, explicitly reject them in non-scratch builds
* support running a sequence of Maven builds in dependency order
* remove small blocksize when uploading archives
* copy maven-metadata.xml to the output directory
* upload all Maven output to the hub
* remove unused argument from \_generate\_maven\_metadata()
* clean up repo\_init() a bit
* koji-shadow: convert certificate paths to absolute
* move workdir from /tmp/koji/ to /var/tmp/koji/
* add vdi archive type
* fix time opts in listTasks
* tell mock target=noarch when building srpms
* fixup some issies identified by pylint
* add overwrite option to uploadWrapper
* bump install timeout to 2 hours
* include multilib packages in repos
* use offline icicle generation
* put ova options in its own section
* define bld\_info before the try in case of an earlier exception
* upload the tdl priority to building
* compress docker tarball properly
* fix distro behavior for rhel 5
* strip search terms in web ui
* make first call retry immediately
* check build tag arches in add-target/edit-target
* koji wait-repo patch
* version 1.9.0
* 1.9 migration docs
* fix typos
* If attempting kerberos login for user with no kerberos principal, try updating record rather than creating a user that already exists
* make providing br name optional in mock-config command
* Fix 'No image archives available for ...'
* cli option to specify config profile
* process conf.d dirs in koji cli (based on a patch by Pavol Babincak)
* enhancements/fixes for download-logs command
* Add download-logs command for koji CLI
* non-scratch image builds require --ksurl
* support image-build config file
* mock hasn't accepted --debug in a long time
* add --target option to mock-config command
* obsolete comment
* Don't hardcode /var/lib/mock
* support --latest for mock-config command
* flush output when watching tasks (based on suggestion by Jan Stancek) see: https://bugzilla.redhat.com/show\_bug.cgi?id=1060050
* check for fast upload support
* add docker support
* treat kickstarts as artifacts
* support images for CentOS and SL
* support --ova-option
* add image archives to buildinfo
* fix raw format behavior
* ppc64le is a new arch that needs to be seperated from all others
* fix bug in buildtag policy test
* skip fake packages when recording buildroot and image contents
* fix parameter formating for image
* avoid int overflow in get\_archive
* fix task option ordering for images
* add image tasks to method filter
* also test maven\_repo\_ignore patterns against the relative path of the file in the local repo
* never make backups of files that are patched so they don't end up in source jars
* event args for list-groups
* allow setting build priority
* allow setting the timeout for builds from config file
* fix format when printing rpms without buildroot
* ignore files other than .log files in the result directory
* raise AuthError if Secret is needed and not set
* use wsgi.url\_scheme in kojiweb too
* fix build notifications for image builds
* email notifications last
* split imports and fix livecd report
* rename tasks, make getImagePackages more robust
* kojid changes to support ova formats
* client side changes to support ova formats
* implement image-build tasks on the builder
* implement image-build tasks on the hub
* update taskinfo page for imageBuilds
* implement image-build command
* handle files and symlinks in safe\_rmtree
* fix handling of incl\_pkgs/incl\_reqs opts in getTagGroups
* add the KrbService option to web.conf
* add support for the krbservice and email\_domain options to koji-gc
* use more specific dependency plugin reference for invocation
* no longer require python-virtinst, we use virt-clone directly
* show a prettier error page when the hub is offline
* host.evalPolicy call
* don't check cnx if we don't have one
* show list of package groups in taginfo [patch from jcpunk]
* typo in comment
* set the target\_arch to arm when its armhfp. makes autoconf happy
* koji-gc: if the tag has the maven\_include\_all=True, calculate the order for Maven builds with respect to name-version rather than just package name
* koji-gc: move sorting and filtering into the database
* vm/kojivmd: only clone disk devices
* vm/kojivmd: virt-clone limits the new VM name to 50 characters
* vm/kojivmd: it is no longer necessary to set the disk type manually
* win-build: add the --static-mac option to win-build, which retains the original MAC address
* vm/kojivmd: use Popen.communicate() to avoid deadlocks
* kojivmd: Call out to virt-clone instead of virtinst
* rename the generated -sources.zip and -patches.zip files to be more consistent with Maven naming conventions
* when passing the -f/--file option to Maven, parse the correct pom.xml to get the build info
* don't parse the pom.xml until after the build
* mark the kojiweb dir as a dir
* Add timeout and heartbeat options to the messagebus plugin. The plugin will block for timeout seconds at most when trying to send a message to the broker.  After that amount of time, the send will fail and an error will be logged. The plugin will check that the broker is reachable every heartbeat seconds.  If it is not reachable, the connection will be aborted and a new connection will be attempted the next time a message is sent
* clean up plugin logging
* ensuredir fix for relative paths
* fail if user specified config is absent https://fedorahosted.org/koji/ticket/256
* provide handler to \_read\_xmlrpc\_response()
* 1.8 migration doc
* create the image\_listing table after image\_archives, because it now references it
* fix changelog date
* version 1.8.0
* remove extraneous external repo lookup
* handle relative-to-koji urls in mergerepos
* use wsgi.url\_scheme instead of HTTPS
* a little more room to edit host comments
* Specify altDeploymentRepository for Maven in settings.xml NOT on command line
* implement remove-pkg for the cli
* a few more cli aliases
* cleaner rename -pkg commands to -build
* rewrite ensuredir function to avoid os.makedirs race
* WrapperRPMTask: handle non-ascii characters in the specfile template
* list\_archives(): handle when queryOpts is None
* change default ssl timeout to 60 seconds
* add xsd to archivetypes
* handle volumes in maven repos
* include volume data in maven\_tag\_archives() return
* list\_archives(): only encode ints when not counting
* Use standard locations for maven settings and local repository
* repo\_init(): rather than linking to each artifact from the Maven repo, link the version directory
* enable prefer-new functionality for single builds
* accept tag also when doing a single build
* don't search for the latest build in the top-level run of scanBuild
* use the closest newer build not the latest
* fix integer overflow issue in checkUpload handler
* WrapperRPM wants a target not a build tag
* don't append to artifact\_relpaths twice in the case of Maven builds
* fix kojira to start new regen-repo tasks if there's room even when maven regen-repos are maxed out
* fix get\_image\_archive and web archiveinfo handler for non-images
* fix writeSignedRPM signature
* move permission check out of underlying write\_signed\_rpm call
* let kojira delete repos for deleted tags
* also exclude SCM metadata dirs from the sources and patches zip files of Windows builds
* bring back delete\_batch\_size
* kojira: limit maven regens
* fix repo opt handling in kojid
* set self.opts in image tasks
* no more archiveinfo.md5sum
* use smarter getRepo wrapper for image tasks
* check for a target before waiting on a repo
* encode large ints in list\_archives
* use import time as completion time for imported images
* handle both old and new signatures for image tasks
* get\_next\_release
* image migration hub call
* check image type sanity in buildImage
* only allow image\_listing entries for actual images
* rework PathInfo handlers for images
* further work on schema upgrade script
* imageinfo\_listing -> image\_listing
* set/report checksum\_type
* partial work on imagebuilds schema upgrade script
* clarify error message in getNextRelease
* images can be imported with import-archive
* fix kojiweb regressions after merge
* sort builds by image in kojiweb
* download-build supports --type image
* support --specfile in image builds
* list tagged supports image type
* put scratch builds in scratch directory
* build logs in data/logs/image directory
* add archiveinfo link for image contents
* fix buildinfo and archiveinfo pages
* fix taskinfo page
* images stored by nvr instead of id
* support multi file image output
* obey --release
* rename image tasks to follow existing conventions
* use build object workflow in image builds
* hub changes to enforce names and versions
* client side changes to enforce an image name and version
* remodeled image build task structure
* images treated like archives in db-schema
* kojira: delete repos in the background
* version 1.7.1
* fix up white space issue
* let koji-shadow finish when in prefer-new mode
* use glob matching for items in ignorelist
* merge the ignorelist from a script generated part and manually maintained part
* don't replace existing build when running with prefer-new
* lower the priority for koji-shadow submitted builds
* mount all of /dev
* context.params not set for fast uploads
* tweak upload logging
* ensure response is closed on errors
* kojid logging tweaks
* cleanup debug output
* new "fast upload" mechanism
* fix topurl config typo
* debuginfo and source options for regen-repo command
* avoid error messages on canceled/reassigned tasks
* handle unauthenticated case in moshimoshi
* fixing form handling
* remove shebang SSLConnection.py is not a standalone script bugzilla #529250
* fix a typo in checkHostArch
* fix the tag\_updates query in tag\_changed\_since\_event
* use getBuildConfig in checkHostArch
* no need for kojira to track deleted repos
* don't die on malformed tasks
* make HiddenValue() idempotent
* fix bugs in our relpath backport
* handle multiple topurl values in kojid
* avoid baseurl option in createrepo
* block for a maximum of 60 seconds when sending a message
* use a heartbeat when connecting to the messagebus
* add maven and win to the supported cli search types
* remove useless and misleading latest-by-tag command
* environ['SERVER\_PORT'] is a string value
* fix noreplace setting for web.conf
* have regen-repo warn if the tag is not a build tag or has no arch list
* in taginfo command, avoid passing (recently added) event opts unless needed (otherwise we get an error from older servers on plain taginfo commands)
* don't use .get() with kojiweb options. It is no longer needed
* use a shorter Source link in spec
* changelog for 1.7
* more 1.7 migration notes
* exclude SCM metadata dirs from the sources and patches zip files
* allow setting tag permission to none in webui (ticket#219)
* also add --yum-proxy option to cli mock-config command
* add "yum\_proxy" option to builder
* drop self args from argspec
* faster argcheck
* call\_with\_argcheck utility function
* use inspect module to report/check rpc args
* koji: small patch to fix warnings
* avoid hard-coded references to command name
* when writing out the mock configs set the target arch instead of canonical arch used for %\_host\_cpu and %\_host macros and \_target\_arch variable in the written out configs
* use encode\_int whenever uploadFile rpc call is used directly
* require mod\_wsgi; don't require mod\_python
* Rename recent schema upgrade file. (There were no schema changes between 1.5 and 1.6)
* avoid traceback if host has no channels
* migration doc for version 1.7
* document.height is no longer supported in modern browsers
* support SSL auth in mod\_python compatibility mode
* typo
* verify that the pom filename matches the GAV
* Maintain old PythonDebug behavior under mod\_python
* avoid req.is\_https()
* adjust web.conf logic
* fix error when tag policy not defined
* grant-permission --new
* Support wsgi in koji-hub and koji-web  - mod\_python still supported, but deprecated  - mod\_wsgi is the default  - koji-web now configured via web.conf  - new wsgi-friendly publisher for koji-web  - koji-web now has logging
* don't show repo information during historical taginfo queries, it may be inaccurate
* add support for querying past information with the taginfo command
* add Maven information to taginfo
* avoid possible rapid error loops
* catch errors from checkHost() call
* more sanity checks for volume moves
* initial stab at cross-volume symlinks for builds
* backport relpath
* make policy errors more helpful
* allow setting rlimits in kojid
* have listHosts return the same fields as getHost
* make SCM URL validity check more verbose
* better examples for Kerberos auth options
* fix for \_quoteparams issue
* gssapi support in the messagebus plugin
* Parse repomd.xml to determin the location of the pkgorigins file createrepo switched to hashing all files by default. regardless of the name of the file this works
* Pushed the wrong version of the patch Revert "Parse repomd.xml to determin the location of the pkgorigins file"
* Parse repomd.xml to determin the location of the pkgorigins file createrepo switched to hashing all files by default. regardless of the name of the file this works
* maven: handle deleted builds when calculating the new release
* dont error out on a tag failure
* make extra nav and footer follow theme
* new approach for web themes
* kojid literal\_task\_arches option
* --active/--revoked options for list-history
* failed\_buildroot\_lifetime is an integer option
* make failed buildroot lifetime configurable
* add "koji wrapper-rpm --create-build" which creates a new build to contain the wrapper rpms
* avoid collisions when downloading files from different builds with the same path and filename
* add moshimoshi command to make automatic user creation easier
* better descriptions for koji-gc SSL options
* fix querying builds by volume
* clarify build usage a bit
* add initial support for arm hardware floating point arches
* handle noarch filtration with $handler.checkHost()
* add hooks for patching specfiles into buildSRPMFromSCM and extra information needed to override build method for fullrpms
* retry whitelist
* mark expired/etc repos non-current
* limit stat fields in listTaskOutput (rhbz#741633)
* Clean up dead code
* Fix printing external rpm info
* Fix invalid Epoch error handling
* verbose option for list-buildroot command
* configurable sleeptime for kojira
* use RawConfigParser on hub
* More hub logging changes, based on aj's patch
* log pid, rss, and stime when debugging the xmlrpc request handler
* string-encode st\_dev in listTaskOutput [tguthmann]
* kojira: make tag cache a global for better readability
* adjust kojira debug output
* count untracked newRepo tasks towards limits
* limit non-waiting newRepo tasks
* fix event condition in get\_tag
* make kojira more efficient using multicalls and caching
* ensure parent dir when moving builds across volumes
* check that \_session is an attribute of req
* use the new updateArchiveList() interface
* resource limit config for kojihub
* wrap old 1.2-1.3 upgrade script in begin..commit
* don't trap apache.SERVER\_RETURN
* don't assume req.\_session
* handle rpm and archive tracking in buildroots separately
* another fix for source test
* avoid ambiguous column references in certain history queries
* make topurl options in cli consistent
* fix source test for win builds
* import additional local nav/footer code
* speed up kojira startup
* misc fixes
* fix VolumeTest
* minor fixes to the rpmlist page
* download task output directly from KojiFilesURL, rather than going through getfile
* always show rows for Parent and Descendants
* don't show the Files list when there are no files
* expand $name, $version, and $release in postbuild checks
* don't show log link for imported builds
*  - chown the specfile checkout in wrapperRPM tasks  - refactor the recursive chown into a method on BaseTaskHandler, and use it everywhere
* handle tag/host arch mismatch for wrapperRPM tasks as well
* prefix the buildroot name with /var/lib/mock/ for everything except vmExec tasks
* accept properties without values in maven-build, the same way Maven does
* add the --env option to maven-build, to set environment variables in the build environment
* add the --package option to maven-build, to enable installation of additional packages into the chroot
* make the wait-repo command wait for the specified build(s) to be the latest in the tag, rather than just being present in the tag
* create BuildRoot objects for Windows builds, and track Windows build dependencies
* stream all log files to the hub
* set source\_dir, spec\_dir, and patches\_dir variables when executing the build
* zip checkouts of sources, spec, and patches, and include them in build output
* only use patch files ending in .patch
* use full path when exec'ing tools
* fix url generation when downloading buildreqs
* add callbacks to maven and win builds
* store Maven build output under the standard build directory
*  - ensure that pkg\_id always matches name  - don't strip name from the data passed to the callbacks
* fix source url in spec
* only report appropriate tasks to hosts
* allow ordering queries by more than one column
* cli handlers for volume calls
* tag\_updates table for tracking non-versioned alterations
* more parity between list\_tags and get\_tag data
* listTags = staticmethod(list\_tags)
* volume test for koji-gc, plus some test cleanup
* lazy dictionary class
* volume policy test
* support for split storage
* show help on blank search command
* add --buildroots option for rpminfo command
* correct query\_buildroots docstring
* fix handling of active in query\_history
* fix reverse inheritance handling of maxdepth and intransitivity
* update default maven\_repo\_ignore setting
* allow setting maxdepth back to none
*  - make the list of files ignored in the local Maven repo configurable  - add files created by Maven 3 to the default ignore list
* chown the source tree after patches are applied, in case the patches created new files/directories
*  - allow plugins to modify the task result from the preTaskStateChange callback  - make closing a task more resilient to failure, because callback in closeTask() may raise exceptions
* maven-build: allow additional goals to be specified, which will be called before "deploy"
*  - enable use of a Kerberos service name other than host/ on the hub  - get the Kerberos realm from the client principal, rather than assuming the last two components of the domain name
* version 1.6.0
* use new\_build() directly to avoid redundant permission check in createEmptyBuild()
* add a --mine option to list-permissions
* use strict checksum checking
* enable passing options to Maven
* retain ordering of Maven builds so more recent builds will take precedence when there are GAV conflicts
* only treat files ending in .patch as patch files
* more sanity checks on wait-repo arguments (ticket#192)
* fix ssl connections for python 2.7 (rhbz#619276) (without breaking earlier python versions)
* better display for restart tasks
* restart-hosts cli handler
* add mass restart support to kojivmd
* add a graceful restart option to kojid.init
* graceful mass builder restart
* Fix a bug where we could traceback on ^c
* include tasks handlers from koji.tasks
* gracefully ignore tasks we do not have a handler for
* fix bug in moveAllBuilds
* extend debuginfo check to cover newer formats
* missing import
* fix references to the buildroot object
* missing semi
* bump version
* create empty repos for empty tags
* avoid undefined variable in log\_output exception handler
* log mock output
* make koji-gc --test show better data
* fix search help text
* promote some useful logging from debug to info
* parse pom.xml after applying patches, so patches can change the GAV if necessary
* rpm2maven: a plugin to extract Maven artifacts from a rpm build and make them available in the Koji-managed Maven repo
* fix typos in add\_external\_repo()
* handle weird encodings in rpm headers
* add tag info to winbuild policy data so we can block by dest tag
* added vm policy and vm\_name test
* cleanup archive import
* make ensuredir() return the directory it is passed
* callbacks for archive import
* update docstring
* use qpid native marshalling/unmarshalling for message content, instead of json
* update the messagebus plugin to use the new qpid.messaging API
* if the deploy command failed, don't raise an error on unknown artifacts, because that will mask the underlying failure
* copy file data into a temporary file in openRemoteFile()
* allow getfile to handle files > 2G
* support downloading non-rpm archives via download-build --type
* taskLabel for createAppliance
* add "Windows" to the Type drop-down list on the Builds page
* remove obsolete files from koji-vm development
* avoid masking tracebacks in TaskManager
* alter SCM.checkout() to mesh with kojikamid
* replace 'heinous copy&paste' with build-time substitution
* rename kojikamid
* package kojivmd
* remove trailing whitespace
* remove extraneous get\_win\_build def
* added kojivmd initscript
* move Maven scratch builds to the user's scratch directory
* update qemu-img option format for RHEL-6
* show multi-platform information in "koji buildinfo"
* add detailed info about more task types to "koji taskinfo"
* support searching for Windows artifacts
* enable selection of Windows tasks on the Tasks page
* improved mime-type handling for output
* added support for $name $version $release variables in execute=, output=, and logs= fields
* add support for wrapping win-build output in rpms
* make buildLabel() more flexible in the data structure it handles
* add support for an optional epoch
* rename --specfile to --winspec so we can use --specfile for wrapper rpms, for consistency with maven-build
* use koji.fixEncoding(message) to make sure that a message is utf8 from RH BZ#614767
* check that clamAV is installed before bothering to build
* handle the format of winbuild requests in \_get\_build\_target()
* added virus checking with ClamAV
* the cannonical arch for all of arm\* is arm
* support for complete history query (not just tag operations)
* fix bug in drop\_group\_member
* win-build cli command
* provide link to build target
* set cpus and mem directly in the XML, since libvirt in RHEL-6 doesn't support calling vm.setVcpus() or vm.setMemory() on a VM that isn't running
* enable validation of build output
* allow the spec file to define a list of files, directories, and commands that must be available in the chroot for the build to run
*  - do all logging using the same handler, to simplify reading the build log  - pass the file object to StreamHandler
*  - more logging cleanup  - move logic into main()
* support specifying parameters of a buildrequires, including type, which allows builds of one type to depend on files from builds of a different type
* fix for lazy PathInfo.topdir change. Allow setting topdir
* retry fail incremental uploads
* don't shutdown logging, just flush the fd
* support listing archive contents for Windows build output
* don't pluralize the archivetypes
* support running execute commands with cmd.exe
* handle an empty relpath correctly
* Make PathInfo.topdir lazy to respect BASEDIR changes
* resurrect import-comps command
* fix issue with channel policy code and koji-shadow
* added handle\_win\_build function
* only claim vmExec tasks if the requested VM is available on the current host
* use md5 everywhere to make it easier to compare to what gets stored in the database
* verify checksum of buildrequires using fileinfo from the server
*  - support streaming build output to the server while the build is running  - more logging cleanup
*  - support streaming logfile output from Windows builds  - cleanup logging a bit
* remove a couple of unnecessary extra classes
* update the archiveinfo and buildinfo pages for Windows archives
* ui work for winbuild and vmExec tasks
* make sure we're always working with an absolute path
* verify buildrequires after downloading them
* handle logfiles with possibly-duplicate names
* support for retrieving buildrequires
*  - fill out xmlrpc api for Windows builds  - add relpath field to win\_archives
* move more logic into the WindowsBuild class
*  - support for additional filetypes from Windows builds  - handle cr/lf weirdness with git in Windows
* report required permission in tag access error
* clean up tagBuild checks, fix rhbz#616839
* allow filtering tasks by channel in webui, show active task count on channelinfo page
* run commands as one script, rather than individually
* cleanup logging
* better logging in kojikamid
* Windows builds working, including artifacts import
* remove\_channel command
* rename-channel command
* add-host-to-channel: option to create new channel
* remove unnecessary import (rhbz#614186)
*  - update the interface between the kojivmd and kojikamid  - allow --specfile and --patches to be passed to the VM  - handle validation of urls in kojivmd
* reimplement scanPlugin() as a wrapper around findHandlers()
* inherit classes from koji.daemon and koji.tasks
* major refactoring of koji daemons  - move TaskManager, SCM, and a couple helper functions to koji.daemon  - move generic TaskHandler classes to koji.tasks  - remove use of globals in kojid and kojira  - fix a few issues revealed by pylint
* added to-do text file
* new revision of kojikamid
* initial import of Koji VM code
* provide example ssl config to support koji < 1.4.0 clients
* respect global --quiet option in wait\_repo()
* respect the global --quiet everywhere watch\_tasks() is used
* add a poll\_interval config option which sets how long watch\_tasks() and watch\_logs() sleep between polling the server, defaults to 5 seconds
* handle option types correctly in the cli
* save the original URL and restore it on logout, to enable use of SSL for non-logged-in requests
* append "/ssllogin" to the hub URL when logging in via SSL, so we only need to require client certificates on that specific URL
* finalize 1.4.0 spec changes
* include mead changes in schema update script
* don't allocate an arch to noarch tasks early, allow kojid to decide if it can handle a noarch task
* support the global -q option in spin-{livecd,appliance}
*  - let OptionParser handle line-wrapping  - standardize whitespace and punctuation
* whitelist the command-line options to spin-{livecd,appliance} that get sent to the hub
* allow comments to be cleared by passing an empty string to disable/enable-host
* hide Maven-specific UI if Maven support is not enabled
* drop mead sub-version, bump release
* disable Maven features by default
* fix HasTest
* honor EnableMaven in repo\_init, add a call to check if maven is enabled
* merge cleanup. drop make\_sources arg, use source\_cmd=None instead
* big maven switch
* workaround api variation in list-tagged/latest-pkg when a mead cli talks to a non-mead hub
* fix arg handling in set-task-priority
* add a note about config syntax in sample hub.conf
* Fix defaults for ProxyDNs and ProxyPrincipals
* user policy test
* kojira: remove early task check which prevents expired repo cleanup, we also check before creating new tasks
* kojira: remove unexpected directories
* prevent a few missing repo directories from stalling repo deletion
* add support to make the command used to fetch sources configuable per repo
* channel policy to determine which channel a task is placed in
* allow python expression syntax in 'call' handler
* add --wait flag to livecd and appliance commands
* fix labels for chain-build subtasks
* pass opts to makeTask() correctly
* fix mergerepos to allow packages built from the same srpm to span multiple repos
* add the task method into the routing key or header for TaskStateChange messages
* allow querying tasks by start\_time
* Extend listTasks fields to be consistent with getTaskInfo
* fix typo in disable-user command (ticket#175) https://fedorahosted.org/koji/ticket/175
* change where we set start\_time to avoid deadlocks
* unify debuginfo rpm checks
* fixed improperly written ksflatten error handler
* remove extraneous newlines in logs
* fix height of "powered by" icon in koji.css
* fix field name in grplist\_add
* use non-strict dslice when appropriate
* fix syntax issues with the creator/revoker changes
* update copyright year to include 2010 on web pages
* enable --scratch builds for koji wrapper-rpm
* don't force wrapper srpms to match the build nvr
* make additional information about the build available to the wrapper rpm
* isoname now impacts the iso fs label
* added some TODOs and comments fixed an error when viewing an incomplete appliance task in kojiweb renamed the appliance-build directive to spin-appliance
* fixed --scratch appliance output uploading xml description file treated as output rather than a log
* None values in options map are no longer passed to the Handler
* taskinfo extensions for createAppliance
* minor kojiweb enhancements fixed results upload
* added a few appliance-build options to pass to appliance-creator minor usage text alterations
* initial revision of kojid appliance creation
* made livecd-specific calls in kojihub more generic for appliances added ApplianceError added appliance-specific paths to pathinfo
* refactored LiveCDTask: added ImageTask which keeps methods of common image-generating code, and LiveCDTask inherits from it
* initial changes to the cli, hub and schema to build appliances
* fix typo from commit a08442f5
* fix a typo in the creator/revoker work
* track start time for tasks
* rhel builder requires
* list\_rpms function to match mead branch
* small fix from mead branch
* make the (tail) link show the last 4000 characters of the file, which seems to be a more useful amount
* --krb-principal arg for add-host
* allow setting retry parameters for the cli
* remove misplaced commit
* show user data in history output
* set creator/revoker data for all versioned tables latter accomplished using InsertProcessor and UpdateProcessor classes
* InsertProcessor and UpdateProcessor for cleaner dml operations
* rearrange some test conditions for clarity
* remove unnecessary function
* add user data (creator/revoker) to versioned tables also updated schema upgrade script
* avoid ugly errors if connection fails to close
* avoid duplicate log messages
* log regen ordering data
* clarify the import docstring a little
* log db connection errors
* avoid possible notification traceback (bz 526275)
* some chain-build fixes - use sane and unique subtask labels - avoid redundant waits
* no more \_opt\_bool
* more hub logging work
* more logging config in hub
* clean up hub logging a bit
*  - clean up add-host-to-channel and remove-host-from-channel commands to make them a little more efficient  - remove redundant getAllChannels() method, use listChannels() instead
*  - report when a builder is in no channels  - improve formatting when there are no active buildroots
* enable editing the channel mappings for a host from the web UI
* enable editing a host via the web UI
*  - add the description and comment fields to the host table  - add the edit-host CLI command to allow editing of the arches, capacity, description, and comment fields of a host  - add the --comment option to the enable-host and disable-host commands, to allow specifying a reason for changing the state of a host  - display the description and comment on the hostinfo page
* handle\_call(): use arg\_filter() and remove duplicate code
* package list policy
* fix Kerberos authentication for modern python: e.message is deprecated, and e.err\_code no longer exists
* default the Builds and Tasks page to ordering by descending id, which provides almost the same ordering as -completion\_time but is faster due to indexes
* show the build and task owners if not logged in
* don't paginate the build and task lists on the front page, to avoid doing "select count(\*)"'s on large tables and thereby improve performance
* only shadowbuild tags should start with SHADOWBUILD there repos are auto expired.  so lets get the most recent expired tag for newRepo shadowbuild tasks
* avoid unicode errors involving changelogs (rhbz 545387, patch by dmach)
* also remove result dir during initial buildroot clearing
* correct a few spelling errors
* avoid unnecessary processing for empty lists
* livecd task handler fixes for building on F12 removed a race condition when expiring buildroots and getting image manifests
* add a Finnish greeting to the Kojiweb header
* kojira config to specify which repos should have debuginfo or source rpms
* handle multiple hosts in enable/disable-host command
* ignore negative average task duration when adjusting task weight
* indicate maxdepth=0 in taginfo output
* repo regen priority work
*  - add the -J option to maven-build to pass command-line options to the JVM  - increase the default max. JVM memory to 2G
* trim whitespace from values extracted from the pom file
* merge specfile fixes from master
* no longer require rpm-build and redhat-rpm-config on the builders, srpms are created by mock now
* merge master branch onto the mead branch
* remove requirement on nfs access from the wrapperRPM task handler
* allow Maven builds using --skip-tag to succeed even if the package is not in the package list, or is blocked (consistent with rpm-based builds)
* typo
* - only send messages for post callbacks - remove the unnecessary "post" prefix from the message type
* - replace periods with underscores in the tokens that make up the routing key, so the number of tokens in the routing keys are deterministic and consistent - reduce the number of tokens in the routing keys
* rename the "queues" configuration section to "topic", to indicate it is only relevant for topic exchanges
* support for the "headers" exchange type
* don't let encoding push the routing key over the max length
* declare our own exchange, rather than using the builtin amq.topic exchange
* add Requires: python-qpid to the hub-plugins package because of the messagebus plugin
* more consistent use of \_sysconfdir
* messagebus.py: a hub plugin to send notifications of events to an amqp broker
* don't fail if there are duplicate artifacts
* fix a spelling error (rhbz 529208)
* soft dependencies for livecd code
* remove stray debug output (rhbz 543067)
* avoid 'no transaction in progress' warnings (Ticket #162) https://fedorahosted.org/koji/ticket/162
* add the koji ric powerd by logo
* add mead-specific release suffix
* avoid open transactions between calls
* listTasks(): add support for createdBefore and createdAfter options
* remove unused method from the PathInfo class
* merge koji-1.3.2 changes onto the mead branch
* add support to protect a build by name. What this does is to ensure that sertain builds always match the original, overriding prefer-new
* add support to always include extra local packages  takes a nvr
* add koji-hub-plugins subpackage
* add a couple more parameters to the example hub.conf
* remove unused 'file' clause
* support searching for Maven artifacts by filename or groupId-artifactId-version
* add support for importing xml files
*  - add --quiet and --wait options to the build command  - add --quiet option to the watch-task command  - fix a corner case in watch\_tasks() that would prevent the return value from getting set correctly if watching an already-completed task Resolves: fh#133
* remove unused locked parameter and extraneous select Resolves: fh#157
* add estimated completion time for build tasks to the taskinfo page
* add creation\_ts and completion\_ts to listBuilds(), for consistency with getBuild()
* callback hooks for repo events
* remove the delete hooks, they're handled by the build state-change hooks
* callback hooks for tag/untag
* callback hooks for import
* move host sanity checks to a more logical place
* typo
* callback hooks for build state changes
* callback hooks for package list actions
* return more information about rpm contents, and display it in the UI
*  - extend the plugin system with an event-based callback infrastructure  - implement callback hooks for task state transitions  - example echo plugin that logs all callback invocations
* show file mode in monospace
*  - add support for importing tarballs  - show list of files in a tarball in the web UI  - show more information about archive files, if it's available
* major refactoring of the artifact import process, to improve robustness and correctness
* add -P as an alias for --profile in maven-build
* allow selecting maven tasks in the web UI
* - remove KojiArchiveURL - fix the Maven archive links on the buildinfo page
* - reorder some maven-build options to make them more apparent - allow properties to be specified with -D
* get the maven info from the build instead of the archive so we get the path right
* clean up the api, make it a little less maven-specific, and adding the type= argument to a few more methods
* continue when we hit an ignored dep dont break,  we are not yet done dep solving the build
*  - add a revoke-permission cli command  - clean up grant- and revoke-permission to remove duplicate work and enable better error reporting
* First "missing hyphen" commit was the merge of the livecd changes on the master branch to the mead branch. Second "missing hyphen" commit was the fix on the master branch, merged onto the mead branch to keep things in sync.   (commiting to the repository at 5:30pm on a Friday is a bad idea)
* missing hyphen
* missing hyphen
* avoid double-escaping ampersands
* handle all strings as unicode for compatibility with Cheetah 2.2.x (also backward-compatible with 2.0.x)
*  - include directory entries in the manifest  - don't call iso9660.name\_translate(), it seems unnecessary
* add new Requires to koji-builder
* allow longer mediatypes
* enable specifying the syntax version of the kickstart file
* don't depend on a specific version of a pykickstart RepoData class
* rename the spin-livecd option --scmurl to --ksurl (in case we allow specifying a --compsurl later)
*  - store the arch of the image in the imageinfo table  - put the non-.iso files in a data/logs/ subdirectory for consistency with builds
* importImage() should be in HostExports
* minor changes, mostly cosmetic
* avoid filename collisions with the user-supplied kickstart file
* minor tweaks to the web UI for consistency
* only pass non-null options to createLiveCD
* show the "Watch logs" link on the taskinfo page for createLiveCD tasks as well
* add extended info to createLiveCD task labels
* missed this one in the initial LiveCD commit
* put createLiveCD tasks in their own channel
* use assertPerm() so admins will inherit the permission
* remove the topurl option to spin-livecd
* specify the LiveCD target first, for consistency with the build command
* mark spin-livecd as an admin task
* enable creation of LiveCD/DVD images in Koji
* update the Maven repo-creation logic so artifacts from the same build with different groupId-artifactId-version values end up in the correct place
* use custom krb5 cache in kojid and kojira. ticket#104 (patch by tjarls)
* support event args in get-tag-inheritance
* support querying package listings at an event
* don't expire repos from old events while they are being created
* make latest repo symlinks relative
* avoid duplicate waits on mock
* remove unnecessary stat() that causes a huge slowdown when accessing files via nfs
* remove ugly hacks from mergerepos now that fixes to yum have been checked in upstream
* adding this join to the front of the list rather than the end improves the query plan and dramatically speeds up the query on postgres 8.1 (postgres 8.3 always uses the better plan)
* support large file uploads, take two
* use the proper escape syntax
* add missing column to get\_archive\_type()
* pass "-Xmx1024m" to the jvm to prevent OOMs when compiling large projects
* commit the footer.chtml and koji.css changes needed for the powered by koji icon
* add powered by koji logo to the footer.  it links back to https://fedorahosted.org/koji
* if we are scanning a build we can not use prefer new  so make sure we dont
* merge master onto the mead branch
* fix a typo in buildtag policy test
* prepare a new MEAD update
* paginate the list of buildroots an archive has been included in
* merge master onto the mead branch
* - add a task count to the userinfo page - allow a few more pages to take usernames in addition to user IDs
* paginate the component buildroot list on the rpminfo page
* - allow filtering by enabled/disabled on the hosts page (default to showing only enabled hosts)
* handle the -sources.zip and -patches.zip files correctly
* allow specifying one or more profiles for the Maven build
* get the Maven info for the build from the pom.xml at the top of the source tree, not from the first .pom we find in the build output
* use <mirrorOf>\*</mirrorOf> now that we have Maven 2.0.8 available
* relicense hub/rpmdiff as GPLv2+, with permission from ffesti
* koji: Look at tail of \*.log
* set-task-priority command (#138, patch by Daniel Mach)
* quiet koji-gc output a little
* index external rpm origins by nvra, not just nvr
* typo in module name
* only show the rpm origin when listing components of a buildroot
* list\_archive\_files(): handle non-zip archive types gracefully
* build the wrapper srpm in a mock chroot as well
* pass a repo\_id when calling wrapperRPM as a standalone task as well
* - pass repo\_id to maven subtasks - fix use of md5 and sha modules
* remove references to the archivefiles table
* fix getChangelogEntries
* allow uploading and importing rpms larger than 2GiB
* if you pass None to getBuildTargets you get a dict of all targets.  this results in broken emails and tasks when the packages doesnt exist in the first tag in the list
* bump version
* EnableFunctionDebug is defined as a boolean
* canonicalize tagarches, since get\_all\_arches() is canonical but non-canonical arches may be set in tag['arches']
* external repo urls will always be rewritten by mergerepos (yum) to end with /, and appear that way in the pkgorigins file, so ensure they appear that way in the database as well so we can track them properly
* add schema file for upgrades from 1.2.x to 1.3
* fix up sparc arch handling
* explicitly request sha1 for backward compatibility with older yum
* 1.3.0
* don't start kojira by default
* fix typo in RawHeader.version()
* detect empty signature headers correctly
* Handle different kinds of rpm signatures [mitr]
* provide a default for CN (it will rarely be changed)
* replace configuration in kojihub.conf with a reference to hub.conf
* add a "sources" target to the Makefile to enable building Koji from the Koji git repo with Koji
* remove redundant line (pointed out by James Antill)
* some cleanup of the koji command-line  - replace sys.exit(1) with return 1  - remove unnecessary limits on number of arguments  - remove some duplicate code  - ensure sessions are logged out before watching tasks  - fix typos
* remove file as a supported search type
* add space to the list of valid search chars
* move build state above start and end times
* get the summary, description, and changelogs from the buildSRPMFromSCM task for builds that are not complete
* use the YumBase.preconf attribute if it's available
* make sure we reap canceled/reassigned tasks too
* make the load average test a function of the number of processors
* add the createdBefore= and createdAfter= parameters to listBuild()
* support file digests other than md5 in the api and web UI
* remove unused import
*  try again just call md5\_constructor
* use md5\_constructor.new()  not md5.new()
* check the load average before taking a task
* fix up bad characters
* setup for python-2.6 avoid depreciation warnings
* add missing logger attribute
* use python 2.4 compatible class syntax
* work around missing summary and description for RHEL-5 compatibility
* group rpms by arch instead of canon arch on the buildinfo page (this makes the build log links correct)
* add a regen-repo command, useful for when an external repo is updated and the internal copy is out of date
* use kojiweb.publisher
* make publisher work in new location
* move publisher wrapper to lib
* set the PythonHandler name to be compatible with Fedora and RHEL-5+
* reseed the hub also, because all workers are cloned from an initial interpreter with the same state
* make the log name match the script name
* expand the arches passed to mergerepos to include compatible arches that may appear in external repos
* bump the mock requirement to the version that includes --buildsrpm and --chroot fixes
* reseed the prng so we don't always get the same arch
* use event\_id in buildSRPMFromSCM task
* make use of createrepo --update optional
* some changes to the web UI to defend against XSS
* remove file as a search option
* remove tables we're no longer using from the schema
* show load and capacity to two decimal places in kojid log output
* give SIGINT a little longer to work
* make the child killing process slightly less verbose
* only display two decimal points for the task load
* remove the buildroot dirtyness indicator from the buildrootinfo page (it's never used)
* randomly pick the arch of a noarch buildroot
* only show the task weight to two decimal places
* update the buildArch task weight based on the average duration of a build of the package
*  - fix task cleanup to actually check if child processes are running (you can't use waitpid() on processes that aren't your direct children)  - send SIGINT first to give mock a chance to cleanup
* try to kill child processes with SIGINT first, so mock has a chance to clean up
* link to the externalrepoinfo page from the rpminfo page
*  - remove wrapper around get\_rpm  - don't execute the same query again
* fix up some doc strings
* remove remaining references to the rpmdeps and rpmfiles tables
* remove unused code
* ensure the origin of an internal rpm starts with file://
* handle internal rpms in pkgorigins
* create repos properly even if all rpms are noarch
* use os.statvfs() instead of an exec
* fix format to account for additional headers we're checking
* use subprocess instead of popen2, which is deprecated in python2.6
* enable displaying of only the latest builds in a tag
* avoid UnicodeDecodeErrors when writing out the metadata by ensuring that pkg attributes that end up in the xml are utf-8-encoded strs (not unicode objects)
* use a select list for inheritance, for consistency with the builds page
* fix the build logs link on the buildinfo page to be correct in both the case of noarch in extra-arches and noarch subpackages
* simplify estimated completion calculation
* display an Origin column indicating the external repo on the rpmlist page
* remove redundant getPackageConfig() call
* add the authtoken to the build cancel link
* provide a default for NotifyOnSuccess
* if we're not building from a specific repo\_id, use the most recent event\_id instead of the repo creation event\_id, because config changes could have been made to the dest tag that don't affect the repo
* whitespace cleanup
* run rpmdiff against noarch subpackages
* always wrap a traceback in <pre> tags
* record external rpms in buildroots
* more fully honor topdir in kojid
*  fix typo
* clean up whitespace
* have config work support an ignorearch list.  some packages are excluded on secondary arches. we are assuming that the spec files deal with those packages not being there
* configure weather we send email to task and package owners on success.  still send email to watchers
* show correct repo data when tag is both a build tag and destination tag
* fix typo in option help
*  - pull changelog entries directly from the file on the filesystem  - don't populate the changelogs table
* also escape HTML in the file name
* enforce utf-8 encoding in escapeHTML()
* use SiteName in the recent build RSS feed
* control line wrapping using CSS instead of pre tags to avoid unnecessary whitespace
* handle queryOpts even when the rpm doesn't exist
* ensure that the summary and description keys get created in the values map
* show the summary and description of the srpm on the buildinfo page
* show the summary and description on the rpminfo page
* getRPMHeaders(): return arbitrary headers pulled directly from the rpm on disk
* no need to commit early since we're no longer creating links
* cli commands for external repos
* allow global query in get\_tag\_external\_repos
* allow partial edits of external repo data
* set external\_repo\_id=0 for normal imports
* grab information directly from the rpms on the filesystem rather than from the database in listRPMFiles(), getRPMFile(), and getRPMDeps(), and disable searching by filename within an rpm
* Happy New Year!
* use ids instead of names in the urls (names could have spaces or other special characters)
* display external repo information in the web UI
* increase the weight of the createrepo task significantly since repo merging can take a \*lot\* of memory
* bump the weight of buildSRPMFromSCM since it creates a chroot now
* missing join on external\_repo
* indicate when you're looking at a deleted rpm in the rpminfo page
* cleanup whitespace
* set %distribution the same way we set %vendor and %packager
* use event\_id consistently during the build process
* make repo\_id an option to buildSRPMFromSCM for consistency with buildArch, but make it non-optional
* support for including external repo data in Koji repos
* handle buildSRPMFromSCM tasks the same way as noarch buildArch tasks, when the tag archlist is a subset of the current builder arches
* handle external rpms gracefully in cli and webui
* better support for external rpms
* some enhancements to repo creation   - handle the event parameter correctly   - allow manual creation of repos including srpms and/or debuginfo
* update the external repo api to pass event= to get\_tag()
* enable retrieval of tag information at a previous event
* xmlrpc api for interacting with external repos
* missing comma
* purge gc option
* speed up koji-shadow a bit with multicall
* schema changes for external repos
* minor ui touchup
* add an auth token to any URL that modifies the system, to avoid CSRF vulnerabilities
* include the current time in the cookie so we can verify that someone is not using a valid but expired cookie
* fix typo  extra )
* refactor checking of noarch rpms
* Fix the "Watch logs" feature in the web UI to work over SSL   - reimplemented by parsing plain text from the web UI instead of performing xmlrpc from JavaScript   - removed dependency on the unmaintained jsolait JavaScript libraries
* handle offset= and size= in getfile urls
*  working noarch package building
* initial attempt at supporting noarch subpackages. right now it will take them from the first arch in the build arch list
* remove the old kojisd bits  now in koji-shadow
* add option to tag builds when complete (could be smarter im tagging into the tag we are building)
* fix case in MissingPolicyOk actually set the defaut correctly
* make the arches to build for a config option
* fix up newerBuild substitution,  if there is no local build we dont want it replaced :)
* koji-shadow: Initial setup of code to prefer a newer build
* basic ssl auth for koji-shadow
* use the new mock --buildsrpm feature to create the srpm from sources
* return a placeholder object from method calls while in a multicall
* always reset session.multicall to False when calling multiCall(), even if we did not perform any multicalls
* when enabling DNS in the chroot, also copy in /etc/hosts from the host
* create the srpm in a mock chroot
* don't use koji. prefix in \_\_init\_\_.py
* also check archives in BuildTagTest and ImportedTest
* show package filters correctly in taginfo cli command
* fix LoginCreatesUser check
* honor topdir in cli
* preserve old extra\_arches during package list updates
* Handle chain-build cases where the build tag is the same as the dest tag
* - add a getEvent(id) method - explain the inconsistencies in getLastEvent() caused by precision issues between postgres and python
* fix merge conflicts
* add a "before" parameter to getLastEvent()
* fix timestamp checks when deleting repos
* fix up arch list handling in readTaggedRPMS
* show buildroot info in rpminfo output
* cleanup before re-taking a freed or reassigned task
* return the error code from watching tasks in move-pkg
* allow list-tagged to query at an event (or at the event corresponding to a repo)
* added --non-latest to cli untag-pkg command
* added --old-user flag to set-pkg-owner-global cli command
* add timestamps to getBuild return
* check for the permission before doing insert
* remove the ability to overwrite already-imported rpms, Maven builds can now be rebuilt without source changes
* make the name that shows up in the title configurable
* fix a chainbuild error message
* some chainbuild fixes
* a couple of fixes to chainbuild
* build output ends up in the local repo too, make sure we don't add those files as build dependencies
* allow a list of arches when querying for tagged rpms
* don't fail when a builder tries to take an older base64-encoded task
* fix handling of DBHost/DBhost option
* create a separate jar archivetype
* in groups output, show package list even if empty
* - make the group name passed to "yum groupinstall" configurable - use "maven-build" as the group to initialize Maven buildroots
* - make working dns in the buildroot configurable - enable dns in buildMaven buildroots (required for Maven builds)
* rename the -sources and -patches zips based on the Maven build label
* Make it possible to rebuild a Maven project without changing the version  - synthesize the release value by incrementing the release of the previous successful build with the same name and version  - add an extra level to the storage hierarchy for Maven builds so they can be differentiated by release  - create the per-tag Maven repos by symlinking into the storage hierarchy, rather than copying files  - significant refactoring of Maven build environment population and tracking to differentiate between builds of the same version
* enable verbose policy errors without full debug
* don't block srpm builds in cli (policy might allow them)
* new policy tests: fromtag, skip\_tag
* clean up example hub.conf
* a better default for list of plugins
* fix session for plugin handlers
* build\_from\_repo\_id policy
* give a saner error when a nonexistent repo is specified
* only provide target in policy\_data if it is actually available
* correct a few typos from last batch of commits
* add default policies
* add tests 'all' and 'none' (aliases for true and false)
* add search command to cli
* add more policy tests, and extend some for use with srpm build policy
* policy for builds from srpm
* make missing policy behavior configurable
* return creation\_time in repo\_info call
* honor kwargs in host.subtask call
* add a strict option to multiCall
* in resetBuild use CANCELED state instead of FAILED
* show arch in list-buildroot output
* add DisableNotifications option
* don't blow up when the database contains older base64 encoded task data
* policy framework and tagging policies
* basic plugin support for hub and builders
* hub config file, hander registry
* make a latest link in repoDone
* fix a typo in QueryProcessor
* don't fail if scratch not specified
* add missing / from default serverca path
* check for archives in koji-gc
* use the filesize and md5sum to track files in the build environment that don't have an associated .pom
* move $nvrpath further out
* define $nvrpath unconditionally
* don't include options with no value
* typo
* a couple changes to assist in theming
* remove some debug logging
* index.py: cache compiled Cheetah templates
* a couple more short attributes
* missed one short attribute
* missed a few XHTML problems
* merge from HEAD
* update the web UI to conform to XHTML 1.0 Transitional (thanks W3C Validator!)
* buildinfo.chtml: group archives by extension
* builds.chtml: rearrange select lists to save space
* - don't checkout common/ when checking out patches - filter directories from the list of patches - make PathInfo.task() conform to the new task directory hierarchy
* builds.chtml: rearrange the select lists to save space
* merge in changes from the master branch
* typo
* handle ssh and non-ssh git checkouts the same
* use reset instead of checkout when updating a git checkout to the correct changeset
* - move the allowed\_scms validation into the assert\_allowed() method of the SCM class - make use\_common an attribute of the SCM class instead of a method parameter
* show a link to the build logs for the Maven build
* add download urls for Maven artifacts
* include patches.log in the build result, if present
* update copyright to 2008
* handle Maven builds in build\_references(), reset\_build(), and delete\_build()
* builds.chtml: convert to using passthrough\_except()
* builds.chtml: pull all options in the select list for consistency with tasks.chtml
* tasks.chtml: put the select lists into a 2x2 table
* tasks.chtml: pull all selection options into select lists instead of links
* - use req.connection.local\_addr to find the port the server is running on (req.server.port evaluates to 0) - define env before we reference it
* util.py: add the toggleSelected() method
* tasks page: move toplevel into the View selector
* tasks page: add a View selector and move toplevel from State to Method
* implement passthrough\_except(), which doesn't require a full list of vars for every invocation
* Use a python construct\_url function (req.construct\_url isn't available in mod\_python mod\_python-3.2.8)
* choose a better arch for noarch builds
* url quote the name in case it gets included in the url of the search results
* only allow searching for files by an exact match on filename, so we can use the index and not thrash the disks
* - indicate which log people should look in for build failures - use BuildError instead of BuildrootError in build() to further differentiate the cause of failure
* join against the \_config tables so search results don't include inactive entries
* clean up remove-target a little bit
* add remove-tag admin command
* make the "inherited" toggle on the builds page a drop-down instead of a link
* fix license, bump version, add changelog entry
* add missing init actions for kojid/kojira
* patch from Toshio adding support to use passwd auth for database connection
* register system.multicall for compliance with the multicall spec
* clean up kojihub.conf option handling
* - put the task label into the taskinfo header - move the task ID into the main table
* change the title format to put the important bits first (format suggested by Will Woods)
* put identification information into the title on the \*info pages
* add links to the headers on the info pages
* change taskLabel() to show the repository path, module path (when present), and revision information  - the additional information is helpful when dealing with multiple source repositories in the same Koji instance
* change the way git urls are parsed  - the concatenation of server and repository now constitute the full url, and are passed to "git clone"  - module is now considered a subdirectory of the git checkout, where the Makefile and specfile are expected to be found  - module can now be empty or absent in a scm url, meaning that the Makefile and specfile are in the root directory of the checkout
* allow the checkout of the common/ directory from source control to be configured via the allowed\_scms option in kojid.conf
* add the authtype config option and command-line option to manually specify the authentication method (patch by Dennis Gilmore)
* - zip up pristine sources and patches and include them in the buildMaven output - pass the list of artifacts to the template as a map keyed by extension
* honor group dependencies by expanding in comps
* - pass newRepo tasks the tag name instead of tag ID  - display the tag name for newRepo tasks in the web UI
* Ticket #82 -- fix issue with tasks dir size
* add ignored/protected tag options to prune-signed-copies (cli)
* allow a transaction set to be passed into get\_rpm\_header
* fix numerous typos
* Add quiet option to resubmit, if not quiet print info about task about to be resubmitted
* allow use of wildcards in the allowed\_scms config parameter
* don't sleep if we successfully took a task, to enable builders to reach their capacity more quickly
* Add a test-srpm build target, from oliver for #72
* Add patch from wakko666 for #77; Patch to document koji's --admin help options
* Update copyright as we've modified the file this year
* Finish missing commit
* Patch from Ajax for #85, top level --quiet for koji cli
* sort rpm listing on the buildinfo page by arch and -debuginfo
* handle importing a srpm into a build that already exists (could have been created by import --create-build)
* parse config values based on the name used to invoke the client (patch by Adam Jackson)
* put packageID into the linkURL as well
* - only send the session cookie over a secure connection (patch from Toshio Kuratomi, with modifications) - remove the KojiWebURL config option (no longer necessary)
* - allow rss feed to filter by package name (specified with package=) - allow listTagged\* and readTagged\* to filter by package owner name (specified with owner=) - allow the builds page in the web UI to filter by package ID (specified with packageID=)
* don't spawn a waitrepo task if the repo is ready
* fix some merge issues in the waitrepo task handler
* prune-signed-copies: logic fix, plus new option
* list-pkgs: only hide dups when a tag is specified
* gc: fix age calculation for untagged builds
* package koji-gc
* remove unnecessary work-around
* unify logic between the waitrepo task and koji wait-repo
* set labels on the subtasks so a chainbuild can restart gracefully
* the wait-repo command: wait for the repo of a given tag to be regenerated, and optionally that one or more NVRs are present in the repo
* add the --key option to download build, to download packages signed with the given key ID
* increase the default blocksize to 1M and use it everywhere
* differentiate between build environment (core and plugin) dependencies and project dependencies, using generally the same approach as we do for rpm
* Allow wrapperRPM to be called as a subtask of a maven build of as a standalone top-level task (by an admin).  Subsequent wrapperRPM calls will replace the set of rpms associated with an existing build
* download-build: handle subpackages whihc override version and release (this should really be using PathInfo, but that's incompatible with pkgurl at the moment)
* add the ability to apply patches to the upstream source before building
* Remove redundant getBuild call.  (mikeb)
* Add some error checking
* listTagged returns a list, handle it.  Also handle the case where we would get no builds returned
* Rename option from latest to latestfrom
* Add option to download-build to get the latest from a tag
* koji-shadow: more useful report format, import-noarch fixes
* enable setting of jvm properties from the maven-build command
* koji-shadow: import-noarch
* many changes, notably black/white/greylists and substitutions
* in resetBuild use CANCELED state instead of FAILED
* add a strict option to multiCall
* add --repo-id option to cli build command
* allow creation of repos from a specified event
* don't reference st if os.stat() failed
* keep track of archives we've already processed so we don't try to link them multiple times
* also mirror the repo named "repository.jboss.org", as it shows up in some .pom files
* create the maven channel by default
* add a couple files I missed earlier
* Set a mock option to timeout builds lasting longer than 24 hours
* kojid: make use of --skip-stat configurable hub: option to disable notifications koji-shadow: build from original scm fix boolean opts in kojid fix notifications for no-target builds fix some typos
* correctly handle no-target builds in taskinfo webui
* avoid duplicate %files entries
* checkin the work ive done on kojisd based on koji-shadow  slightly differnet target  though i have tried to keep divergences configurable
* handle errors more gracefully in the web ui. Display a real explanation if possible
* don't mask errors when retrying rpc calls use \_callMethod() in multiCall()
* make ClientSession retries more configurable, and more robust add an offline mode to the hub (ServerOffline fault) report offline status if db connection fails adjust retry timings for kojid and kojira
* don't recycle broken db connections
* make ClientSession retries more configurable, and more robust add an offline mode to the hub (ServerOffline fault) report offline status if db connection fails adjust retry timings for kojid and kojira
* don't recycle broken db connections
* limit number of simultaneous shadow builds misc comments
* fix errors in the "build with specified repo" option
* a quiet option, and an option to ignore stray repos
* fix merge conflict
* - don't fail repo creation if a maven directory doesn't exist - convert pom files to utf-8 before attempting to parse - a couple typos
* run builds in parallel, if possible
* don't throw an exception if a tag is renamed or deleted
* reorganize code to be more robust to errors
* don't raise an error if the build is not in the tag
* pass name, version, release, and epoch to the template as well
* reorganize code for better error-handling
* build the wrapper rpm in a mock chroot
* cleanup whitespace
* handle the Maven data model in resetBuild()
* add buildMaven and wrapperRPM to the list of watchlogs tasks
* typo
* reorganize, rename, and use an additional subtask
* don't complete the build until everything is actually complete
* make the spec file fragment a Cheetah template
* enable creation of wrapper rpms by passing "--specfile url" to the maven-build command
* end-to-end building and importing is working
* use enhanced features of mock --chroot
* display component archives and built archives of a buildroot
* track Maven archives downloaded during the build process
* track pom files in the database
* fix the url, again
* update spec
* use right createrepo argument order
* And one more fix for the source location
* Fix up the spec, reference the place we stuff tarballs
* Prepare for the release
* fix a typo from a recent patch
* Use the --skip-stat flag in createrepo calls
* canonicalize tag arches before using them to limit repo generation (based on a patch from Dennis Gilmore <dennis@ausil.us>)
* fix return value of delete\_build
* Revert to getfile urls if the task is not successful (closed)
* Pass --target instead of --arch to mock
* actually read default conf file. add limit option to buildReferences call
* ignore trashcan tag in prune-signed-copies command
* Revert patch to disable --arch calls.  Broke kernel-doc build
* different method for shadow rebuild ordering
* package koji-gc and koji-shadow change default config locations for these utilities
* don't blow up when the database contains older base64 encoded task data
* don't throw an exception if a tag is renamed or deleted
* fix the url, again
* update spec
* use right createrepo argument order
* And one more fix for the source location
* Fix up the spec, reference the place we stuff tarballs
* Prepare for the release
* fix a typo from a recent patch
* Use the --skip-stat flag in createrepo calls
* initial drop for koji-shadow utility
* use same repo for all buildArch subtasks
* honor kwargs in host.subtask call
* canonicalize tag arches before using them to limit repo generation (based on a patch from Dennis Gilmore <dennis@ausil.us>)
* fix return value of delete\_build
* Revert to getfile urls if the task is not successful (closed)
* Pass --target instead of --arch to mock
* actually read default conf file. add limit option to buildReferences call
* ignore trashcan tag in prune-signed-copies command
* Revert patch to disable --arch calls.  Broke kernel-doc build
* changes to mock calls to support newer versions of mock
* intermediate commit for Maven build support
* versions should be sorted in ascending order
* support for the 'maven\_include\_all' option in tag\_config - setting it causes all builds in that tag (including different versions of the same package) to be included in the Maven repository
* allow selection of only Maven builds on the builds page
* include every maven build in the tag, not just the latest
* create additional metadata for maven repos
* - enable add-group-pkg to accept more than one package at a time, for parity with block-group-pkg
* improved support for importing Maven build output
* create Maven repos for tags where maven\_support is enabled
* implement listTaggedArchives
* add support for listing Maven builds to the XML-RPC API and cli
* add the maven\_support flag to tag\_config
* display archive information in the web UI
* associate Maven metadata with builds and individual archives, since a single build can create multiple archives with different groupIds, artifactIds, and/or versions
* display Maven info on the build page
* additional fixes for archive import
* initial support for importing Maven builds
* temporary fix for using topurl, since urlopen() returns a wrapped HTTPConnection which doesn't support fileno(); will see about getting this fixed in upstream python
* add the "allowed\_scms" kojid parameter: a whitelist of hostname:repository tuples that kojid is allowed to checkout from
* tweak tasklist spacing
* - allow filtering builds by the person who built them - remove some code duplication
* allow identification of users and tags by name as well as ID
* Don't call --arch when the build is noarch
* New release
* limit option for build\_references function
* quiet some debug output
* in the prune-signed-copies cli command, check to see if builds have been latest somewhere in the past N days instead of just currently
* change default actions in koji-gc
* Mock will now handle setarch internally, we no longer need to call it
* Go back to using stock 'clean' command.  It now takes care of all mount points
* Update mock commands to the undeprecated version
* Fix some typos. Don't worry about blocked group list entries, they don't show up to be cloned anyway
* Add the ability to clone/update group data to the clone-tag command
* Use real urls in buildNotification instead of getfile urls
* Remove comments Ensure src directory gets created if it's needed Stop making group.spec, it's not needed
* Make sure we get a pkgurl
* Make sure we get groupdata
* Drop the PrepRepo task, it's no longer needed. Reference the configured pkgurl for repodata
* Bypass the PrepRepo task, it's not really needed now
* Fix think-o in the part of the path we strip out
* Initial stab at no longer doing hardlinks in repo creation
* show the un-mangled command name in the error message
* add the latest-by-tag command (patch provided by Dan Berrange)
* make search case-insensitive
* add nvr to the output of getBuild()
* Limit list-pkgs output to 80 chars.  Ticket #58
* Print out tags applied to a build from the buildinfo command
* Use a build nvr rather than nevr in emails.  Easier for doing tag requests. Also use buildLabel to get the nvr instead of doing it by hand. Resolves ticket #53
* Allow package signing by build ID as well as nvr (patch from rmyers)
* Cloning from a locked tag was broken to begin with.  Move lock check earlier and follow --force option
* Add a missing paren
* Add a force option to clone-tag, useful when updating a locked tag. Resolves ticket #42
* Use the group data rather than a generated rpm
* update the generated mock config file to me compatible with mock >= 0.8.7
* adjust non-debug output a little
* only create the common/ symlink if there isn't already a common/ directory
* conditionalize use of the DistCVS layout
* support for retrieving source from multiple SCM repositories (patch provided by Rob Myers)  - currently CVS, SVN, and GIT are supported
* koji-gc: tweak tag/pkg filtering option to bypass locks catch ProtocolError
* import time (used by delete\_build and setBuildTimestamp)
* koji-gc: from\_addr option, make network timeout hack an option, misc cleanup
* variable name typo
* prune-signed-copies cli call
* salvage action combine notifications to same user
* add weburl option to config
* add some key aliases. Handle lowercase hex ids in config
* fix parsing of key aliases fix an error in the MySession hack honor --skip-main option (used for debugging)
* use koji.fp.o in config
* initial work on garbage collection script
* fix a unadorned raise outside of try-except
* include 'name' in the map returned by listBuilds() for compatibility
* compare against arch when checking for src and noarch
* don't raise an error if arches for a tag are not set
* don't create repos for arches not in the arch list for the tag
* - actually use the logfile specified in kojira.conf - don't make kojira also log to syslog
* fix missing optional arg
* fix fixEncoding() to handle being passed a unicode object
* add a --show-dups flag to list-pkgs to show all ownership entries in the tag hierarchy, not just the latest (defaults to false)
* show tree display when displaying toplevel tasks as well
* only list builds from actual build tasks
* - require you to be logged-in to upload a file - only allow .log files to be overwritten
* support for specifying a N-V-R as a stage in chain-build
* escape filenames in urls
* clean up waitrepo tasks a bit
* remove support for srpms from chain-build (since it already doesn't support --scratch)
* ensure that every task has an owner (already enforced at the database level)
* download the file in 64k chunks instead of pulling the entire file into memory
* make Koji more robust to transient SSL errors
* simplify error processing
* - don't attempt Kerberos authentication unless they have credentials - fix display of Kerberos error messages
* prettify the display of the exception names
* canonicalize the "alpha" arch
* don't traceback from tag\_notification is the build\_id doesn't exist
* additional sanity-checking in the cli, patches by cbalint
* provide a link to the build logs from the buildinfo page, patch by till and oliver
* improve speed of build\_references function
* order creation of newRepo tasks by age of existing repo
* add clone-tag command (by cbalint)
* avoid duplicate entries in readTaggedRPMS when there is redundancy in the inheritance
* don't register the database log handler
* don't fork/exec just to get the hostname
* logout before watching tasks
* additional sanity checking for the add-host-to-channel, remove-host-from-channel, and add-target cli commands (patch by Cristian Balint)
* getAllChannels() XML-RPC call (patch by Cristian Balint)
* greetings in Romanian, Hungarian, and Serbian for the web interface (patch by Cristian Balint)
* new add-group cli command (patch by Cristian Balint)
* - exclude -debuginfo packages from repos - ensure build['name'] is set everywhere - remove unused repo\_new() function
* reflect proper createrepo dependency
* We don't use these files anymore
* Add a .gitignore file (Trac #19)
* Use clearer notation for upload rates (patch by Jan Kratochvil) Resolves:   rhbz#243169
* return a proper timestamp for last\_used in build\_references
* bump version to 1.2.2
* exclude -debuginfo rpms from being downloaded by default
* ensure uniqueness of suggested priority values, patch by rmyers
* catch errors thrown by os.tcgetpgrp(), patch provided by walters
* only allow admins to perform non-scratch builds from srpm
* add a prefix header to the users page
* bump for rebuild
* increase the waitrepo timeout
* disable syslogging for kojid
* sanity-check build target before running a chain-build
* typo
* new koji download-build command (patch provided by Dan Berrange) koji.spec: require python-urlgrabber (needed by download-build) cli/koji.conf: add new pkgurl option (needed by download-build)
* fix typo, patch provided by rmyers
* add a search box to the header of every page in the upper-right corner
* add a summary line stating whether the task succeeded or failed to the end of the "watch-task" output
* support for running as an alternate OS user (defaults to root)
* don't allow ExclusiveArch to expand the archlist (see rhbz#239359)
* encode changelog entries as utf-8 before printing
* change to a 3-token version numbering scheme
* install koji.ico as well
* bump release for rebuild
* remove exec bit from kojid logs and uploaded files (patch by Enrico Scholz)
* set the default maxjobs to match the default in the config file
* commit before linking to release db locks
* fix a couple typos
* allow import of rpms without srpms better sanity checking when importing
* Allow reasonable archlist expansion based on ExclusiveArch/BuildArchs
* actually handle whitespace correctly
* remove extra whitespace from tag notification email
* encode email notifications in UTF-8
* set a default for from\_addr in kojid.conf
* $destTag is not defined when untagging a build
* bump release for rebuilt
* remove spurious Requires: from the koji-utils package
* bump release for rebuild
* - show a link to the associated task on the buildroot info page - make buildroot(task\_id) not-null in the database
* show the search type on the results page
* make email notifications work   - always send notifications to the build submitter and the package owner   - default smtphost in kojid.conf
* do not allow users to manually specify their notification email address, construct it from their username and the "EmailDomain" option
* enable filtering of the users list by first character
* buildinfo: don't display changelog by default, only when --changelog was passed
* fix typo in BuildNotificationTask (patch provided by Michael Schwendt)
* - bump release for rebuild - update Requires for createrepo
* re-enable use of --update in createrepo
* fix a typo in the code for accepting assigned tasks
* 1.1 release
* make the output listPackages() consistent regardless of with\_dups
* prevent large batches of repo deletes from holding up regens
* allow sorting the host list by arches
* 1.0!
* expect the hub to return raw XML-RPC data
* store raw (not base64-encoded) XML-RPC data in the database
* improve text of RetryError in ClientSession
* grab the arch list from the hub
* pull full arch list from db rather than hard coding it
* add test-tarball Makefile target
* turn off debug messages unless we're debugging
* - default to a larger block size in uploadWrapper(), but make it overrideable - use a lower blocksize when uploading from the cli, for better interactivity
* support for sparc builds (patch by Dennis Gilmore)
* bump release for rebuild
* set a timeout of 12 hours when communicating over SSL, instead of the default (20 seconds)
* bump revision for rebuild
* only write out method timing information if we're debugging
* - fix koji mock-config to use sensible defaults for \*\*opts - add --topurl option to koji mock-config - upload in 64k chunks in incrementalUpload - best-effort to check when mock has truncated a file and started writing from 0 in BuildRoot.mock() - improvements to cmdline parsing in koji call
* - make client certificate config global (in ssl.conf) to avoid SSL renegotiation and buffer overruns caused by it - reorganize auth config in kojihub.conf - don't set krb\_principal for new hosts unless HostPrincipalFormat is set
* HTML-escape errors and tracebacks
* a little extra whitespace
* add createrepo to the list of tasks that present "Watch logs" links
* remove references to the runroot task
* bump revision for rebuild
* - url-encode filenames on the taskinfo page - expand the page content to full width - remove unused /koji-hub alias
* - fix up chain-build   - remove options that make no sense in the context of chain-build   - avoid namespace collision (reuse of "options")   - allow server.build() and server.chainBuild() to actually be called without an opts argument - call os.path.expanduser() on the koji --config argument
* actually make sure debugFunction call is enabled
* add debugFunction handler
* fix typo in a comment
* guard against mock switching log files under us, so we don't lose important log information
* make weburl command-line option consistent with the config file
* set a default for mockhost so kojid can (hopefully) work out-of-the-box
* update the buildSRPMFromCVS task to be consistent with Extras CVS
* add simple Koji favicon
* decrease upload chunk size so we don't overflow a buffer in mod\_ssl
* copy opts in ClientSession.\_\_init\_\_() because we modify it in setSession() undo state changes by ssl\_login() in setSession(None) remove some extraneous session options
* make callers of createUser() responsible for checkin permissions
* debug message for downloads
* fix logic bug in grp\_pkg\_add
* test
* test
* test
* test
* test
* test
* test
* test
* test
* test
* test
* test
* ..
* make it easier to create test builds
* add missing Requires: pyOpenSSL
* typo
* Move the more dangerous git clean to git-clean target, restore old clean
* Bump spec for new build
* package up the files in koji/ssl as well
* option to use http instead of nfs in kojid (except createrepo handler)
* Create a force-tag target
* Use the right tag option
* 0.9.6 release
* allow the username component of the client's DN to be configurable
* provide some more defaults for httpd options
* - centralize user creation in the Session class - check user status on login as well as session creation   - don't even create sessions for blocked users
* enable-user and disable-user cli commands
* add the add-user admin command
* clean up httpd options handling in a couple places
* - don't try to guess what kind of authentication we want to use in ClientSession.login() - allow clients to call login() (for user/password), krb\_login() (for Kerberos), or ssl\_login() (for client certificates)
* enable authentication via SSL client certificates in the web interface
* expand user paths before returning options
* enable SSL client certificate authentication for kojira
* enable SSL client certificate authentication for kojid
* remove redundant expansions
* enable authentication from the cli via SSL client certificates
* - fix some typos - disable support for non-standard createrepo options
* have list-permissions list known perms if --user not specified
* - handle inserting and displaying utf-8 data in the database - allow options to be specified in the config file but not on the cmdline
* Avoid namespace collision in handle\_build()
* Set vendor, packager and \_host for mock config
* fix a traceback in list-pkgs
* download path is based on build nvr, not package nvr
* one last email test typo
* another email test typo
* fix typo
* Introduce a typo to test email notification
* Adding myself to the authors file
* more changes from the package review
* Use -p with install to preserve timestamps, etc..
* Move web content from /var/www to /usr/share
* More cleanup from review
* Don't use tarball directly for building, screws with spec permissions
* Disable comps import for now
* Obfuscate the email addy's a bit
* Remove temp file created for empty repo
* Install context.py as a script
* Make context.py executable, it has a main
* Clean up some more things found by rpmlint
* sort changelog entries by id instead of date, to handle entries made on the same day
* Revert buildroot to current guidelines. Disable testbuild by default. Use %{name} in various places
* Use git for clean
* Clean up the tarball target
* Adjust for working with git
* Initial code drop
* Add a file for repo
