# Copyright 1999-2022 Gentoo Authors
# Distributed under the terms of the GNU General Public License v2

EAPI=8

DISTUTILS_USE_PEP517=setuptools
PYTHON_COMPAT=( python3_{8..10} )

inherit distutils-r1 readme.gentoo-r1 systemd tmpfiles

MY_PV=$(ver_rs 3 '-')

DESCRIPTION="System and NGINX metric collection"
HOMEPAGE="https://amplify.nginx.com/login"
SRC_URI="https://github.com/nginxinc/${PN}/archive/v${MY_PV}.tar.gz -> ${P}.tar.gz"

LICENSE="BSD-2"
SLOT="0"
KEYWORDS="~amd64 ~x86"
IUSE="test"

CDEPEND="dev-python/crossplane[${PYTHON_USEDEP}]
	dev-python/gevent[${PYTHON_USEDEP}]
	dev-python/netaddr[${PYTHON_USEDEP}]
	dev-python/netifaces[${PYTHON_USEDEP}]
	dev-python/psutil[${PYTHON_USEDEP}]
	dev-python/requests[${PYTHON_USEDEP}]
	dev-python/ujson[${PYTHON_USEDEP}]
	dev-python/pymysql[${PYTHON_USEDEP}]
	dev-python/python-daemon[${PYTHON_USEDEP}]
	dev-python/rstr[${PYTHON_USEDEP}]
	dev-python/flup[${PYTHON_USEDEP}]"
RDEPEND="${CDEPEND}
	www-servers/nginx[nginx_modules_http_stub_status]"
DEPEND="${CDEPEND}"
BDEPEND="test? ( dev-python/pyhamcrest[${PYTHON_USEDEP}]
		dev-python/pytest[${PYTHON_USEDEP}]
		dev-python/requests-mock[${PYTHON_USEDEP}] )"

S="${WORKDIR}/${PN}-${MY_PV}"

distutils_enable_tests pytest

DOC_CONTENTS="You should put you API_KEY from https://amplify.nginx.com/
into api_key parameter in /etc/nginx-amplify-agent/agent.conf"

EPYTEST_DESELECT=(
	test/unit/agent/supervisor.py::SupervisorTestCase::test_filters_applying_oss
	test/unit/agent/supervisor.py::SupervisorTestCase::test_filters_unchanged
	test/unit/agent/collectors/nginx/config.py::ConfigCollectorTestCase::test_collect
	test/unit/agent/collectors/nginx/config.py::ConfigCollectorTestCase::test_skip_parse_until_change
	test/unit/agent/collectors/nginx/config.py::ConfigCollectorTestCase::test_test_run_time
	test/unit/agent/collectors/nginx/config.py::ConfigCollectorSSLTestCase::test_ssl_config_doesnt_work_if_ssl_disabled
	test/unit/agent/collectors/nginx/config.py::ConfigCollectorSSLTestCase::test_ssl_config_works_if_ssl_enabled
	test/unit/agent/common/util/ssl.py::SSLAnalysisTestCase::test_ssl_analysis
	test/unit/agent/managers/nginx.py::NginxManagerTestCase::test_find_all
	test/unit/agent/managers/nginx.py::NginxManagerTestCase::test_find_none
	test/unit/agent/managers/nginx.py::NginxManagerTestCase::test_reload
	test/unit/agent/collectors/system/meta.py::SystemMetaCollectorTestCase::test_default_interface
	test/unit/agent/collectors/system/metrics.py::SystemMetricsCollectorTestCase::test_collect
	test/unit/agent/objects/nginx/config/config.py::ConfigLogsTestCase::test_logs_path
	test/unit/agent/objects/nginx/config/config.py::ConfigTestCase::test_broken
	test/unit/agent/objects/nginx/config/config.py::ConfigTestCase::test_broken_includes
	test/unit/agent/objects/nginx/config/config.py::ConfigTestCase::test_parse_simple
	test/unit/agent/objects/nginx/config/config.py::ConfigTestCase::test_parse_wildcard_dir
	test/unit/agent/objects/nginx/config/config.py::ExcludeConfigTestCase::test_parse_simple_exclude_multiple
	test/unit/agent/objects/nginx/config/parser.py::ParserTestCase::test_lightweight_parse_includes
	test/unit/agent/objects/nginx/config/parser.py::ParserTestCase::test_lightweight_parse_includes_permissions
	test/unit/agent/objects/nginx/config/parser.py::ParserTestCase::test_parse_huge
	test/unit/agent/objects/nginx/config/parser.py::ParserTestCase::test_parse_ssl_include_dirs
	test/unit/agent/tanks/nginx_config.py::NginxConfigTankCleanTestCase::test_clean
	test/unit/agent/tanks/nginx_config.py::NginxConfigTankCleanTestCase::test_discover
	test/unit/agent/pipelines/syslog.py::SyslogTailTestCase::test_overall
	test/unit/ext/phpfpm/objects/master.py::PHPFPMObjectTestCase::test_parse
)

src_prepare() {
	default

	# remove zope reference, remove data files
	sed -i  -e '/amplify.zope/d' \
		-e '/        ]/a\    )),' \
		-e '/amplify-agent\//,+3d' \
		setup.py || die "sed failed for setup.py"
	rm test/unit/agent/collectors/nginx/meta.py \
		test/unit/agent/common/util/ps.py \
		test/unit/agent/collectors/nginx/metrics.py \
		test/unit/agent/managers/nginx.py \
		test/unit/agent/objects/nginx/object.py \
		test/unit/ext/mysql/managers.py \
		test/unit/ext/mysql/collectors/meta.py \
		test/unit/ext/mysql/collectors/metrics.py \
		test/unit/ext/phpfpm/util.py \
		test/unit/ext/phpfpm/collectors/master/meta.py \
		test/unit/ext/phpfpm/collectors/master/metrics.py \
		test/unit/ext/phpfpm/collectors/pool/metrics.py \
		test/unit/ext/phpfpm/managers/master.py \
		test/unit/ext/phpfpm/managers/pool.py || die "rm failed"
}

src_install() {
	distutils-r1_src_install

	newinitd "${FILESDIR}"/nginx-amplify-agent.initd nginx-amplify-agent
	newconfd "${FILESDIR}"/nginx-amplify-agent.initd nginx-amplify-agent
	systemd_dounit "${FILESDIR}"/nginx-amplify-agent.service
	newtmpfiles "${FILESDIR}"/nginx-amplify-agent.tmpfile nginx-amplify-agent.conf

	keepdir /var/log/nginx-amplify-agent /etc/nginx-amplify-agent
	fowners -R nginx:nginx /var/log/nginx-amplify-agent \
		/etc/nginx-amplify-agent
	insinto /etc/nginx-amplify-agent
	doins etc/agent.conf.default
	insinto /etc/logrotate.d
	newins etc/logrotate.d/amplify-agent nginx-amplify-agent

	readme.gentoo_create_doc
}

pkg_postinst() {
	tmpfiles_process nginx-amplify-agent.conf
	readme.gentoo_print_elog
}