%global package_name ipa-hcc %if 0%{?rhel} # RHEL 8, 9 %global ipa_name ipa # ipa-client-install supports PKINIT options since 4.9.11 (RHEL 8.8) # and 4.10.1 (RHEL 9.2). %if 0%{?rhel} >= 9 # RHEL 9.2+ with PKINIT support in ipa-client-install %global ipa_version 4.10.1 %global include_client 1 %global with_pyproject_macros 1 %global selinux_policy_version 38.1.1-1 %else # RHEL 8.8+ with PKINIT support in ipa-client-install # NOTE: python3 macro points to platform-python %global ipa_version 4.9.11 %global include_client 1 # RHEL 8's build root does not provide pyproject-rpm-macros %global without_pyproject_macros 1 %global selinux_policy_version 3.14.3-107 %endif %else # Fedora 37+ with PKINIT support in ipa-client-install %global ipa_name freeipa %global ipa_version 4.10.1 # Fedora is missing rhc and insights-client %global include_client 0 %global with_pyproject_macros 1 %global selinux_policy_version 36.16-1 %endif # always include ipa-hcc-server package %global with_server 1 # --with client (enabled on RHEL, disabled on Fedora) # include ipa-hcc-client package # NOTE: RHEL8 does not define 'bcond()' helper %if %{include_client} %bcond_without client %else %bcond_with client %endif # --with mockapi (disabled by default) # include mockapi server and client prepare for Ephemeral %bcond_with mockapi %if %{with mockapi} && !%{with server} %{error:--with mockapi requires --with server} %endif # --with stageconsole (disabled by default) # setup system for internal stage console %bcond_with stageconsole # --without selinux (enabled by default) # SELinux rules for ipa-hcc-server %bcond_without selinux # --with devel (disabled by default) # local development depedencies %bcond_with devel %if %{with selinux} %global selinuxtype targeted %global modulename ipa-hcc %endif Name: %{package_name} Version: 0.17 Release: 4%{?dist} Summary: Hybrid Cloud Console extension for IPA BuildArch: noarch License: GPL-3.0-or-later URL: https://github.com/podengo-project/ipa-hcc # tag names are generated by rpkg Source: https://github.com/podengo-project/ipa-hcc/archive/refs/tags/ipa-hcc-%{version}-1.tar.gz BuildRequires: python3-devel %if %{with pyproject_macros} BuildRequires: pyproject-rpm-macros %endif # RHEL 8 buildroot does not have idm:DL1 module %if %{with server} && 0%{?rhel} != 8 BuildRequires: python3-ipaserver >= %{ipa_version} %else BuildRequires: python3-ipaclient >= %{ipa_version} %endif BuildRequires: python3-requests BuildRequires: python3-systemd BuildRequires: python3-sssdconfig BuildRequires: python3-jsonschema BuildRequires: python3-jwcrypto BuildRequires: make BuildRequires: openssl BuildRequires: systemd-devel %if %{with selinux} BuildRequires: selinux-policy-devel >= %{selinux_policy_version} %endif BuildRequires: subscription-manager-rhsm-certificates %if %{with devel} BuildRequires: ipa-client BuildRequires: tox BuildRequires: python3.6 BuildRequires: python3.9 BuildRequires: rpmlint BuildRequires: nodejs-npm BuildRequires: openldap-devel BuildRequires: openldap-compat BuildRequires: gcc BuildRequires: krb5-devel BuildRequires: python3-pyyaml BuildRequires: python3-pip BuildRequires: python3-wheel BuildRequires: rpmdeplint BuildRequires: rpmlint %endif %description An extension for IPA integration with Red Hat Hybrid Cloud Console. %package -n python3-ipahcc Summary: Python libraries for ipa-hcc, IPA Hybrid Cloud Console integration BuildArch: noarch %{?python_provide:%python_provide python3-ipahcc} Requires: python3-ipalib >= %{ipa_version} Requires: python3-requests Recommends: python3-subscription-manager-rhsm Conflicts: %{package_name}-server <= 0.16-1 %description -n python3-ipahcc python3-ipahcc provides Python libraries that are used by ipa-hcc-client and ipa-hcc-server packages. %if %{with pyproject_macros} %pyproject_extras_subpkg -n python3-ipahcc server %endif %if %{with server} %package server Summary: IPA server plugin for Hybrid Cloud Console integration BuildArch: noarch %if %{with pyproject_macros} Requires: python3-ipahcc+server = %{version}-%{release} %else Requires: python3-ipahcc = %{version}-%{release} Requires: python3-cryptography Requires: python3-jsonschema Requires: python3-jwcrypto # pyproject_macros extra dependencies %endif Requires: %{ipa_name}-server >= %{ipa_version} Requires(post): %{ipa_name}-server >= %{ipa_version} Requires: httpd Requires: mod_ssl %if %{with selinux} Requires: selinux-policy >= %{selinux_policy_version} Requires(post): selinux-policy-base >= %{selinux_policy_version} Requires(post): (%{name}-selinux = %{version}-%{release} if selinux-policy-%{selinuxtype}) %endif %{?systemd_requires} %description server This package contains IPA server plugins, LDAP schema extension, WebUI extension, and registration agent for Hybrid Cloud Console integration. The extensions require an account on https://console.redhat.com/ and registration with subscription manager. %posttrans server %{python3} -c "import sys; from ipaserver.install import installutils; sys.exit(0 if installutils.is_ipa_configured() else 1);" > /dev/null 2>&1 if [ $? -eq 0 ]; then /usr/sbin/ipa-ldap-updater --quiet \ --schema-file=%{_datadir}/ipa/schema.d/85-hcc.ldif \ %{_datadir}/ipa/updates/85-hcc.update \ %{_datadir}/ipa/updates/86-hcc-registration-service.update # restart httpd if running /bin/systemctl try-restart gssproxy.service httpd.service >/dev/null 2>&1 || : fi %pre server # create user account for service getent passwd ipahcc >/dev/null || useradd -r -g ipaapi -s /sbin/nologin -d / -c "IPA Hybrid Cloud Console enrollment service" ipahcc %post server # ipa-hcc-update.timer is started by ipactl %systemd_post ipa-hcc-update.service %systemd_post ipa-hcc-update.timer /bin/systemctl daemon-reload %preun server %systemd_preun ipa-hcc-update.service %systemd_preun ipa-hcc-update.timer %postun server # remove pkinit_anchors line from KRB5 KDC config sed --in-place=.bak '/\/usr\/share\/ipa-hcc\/cacerts/d' /var/kerberos/krb5kdc/kdc.conf || : /bin/systemctl try-restart krb5kdc.service || : %systemd_postun ipa-hcc-update.service %systemd_postun ipa-hcc-update.timer # with server %endif %if %{with mockapi} %package mockapi Summary: Automatic IPA client enrollment: Mock API BuildArch: noarch Requires: %{package_name}-server = %{version} %{?systemd_requires} %description mockapi This package contains a Mock API for testing of automatic enrollment service of IPA clients. %posttrans mockapi %{python3} -c "import sys; from ipaserver.install import installutils; sys.exit(0 if installutils.is_ipa_configured() else 1);" > /dev/null 2>&1 if [ $? -eq 0 ]; then /usr/sbin/ipa-ldap-updater --quiet %{_datadir}/ipa/updates/87-hcc-mockapi.update # restart httpd if running /bin/systemctl try-restart httpd.service >/dev/null 2>&1 || : fi %package ephemeral Summary: Automatic IPA client enrollment: Ephemeral client prepare BuildArch: noarch Requires: %{package_name}-client = %{version} %{?systemd_requires} %description ephemeral This package contains a systemd service that hooks into the auto enrollment process of IPA clients. It prepares the client for testing with Ephemeral environment. The package also enables ipa-hcc-auto-enrollment.service. %post ephemeral %systemd_post ipa-hcc-client-prepare.service /bin/systemctl daemon-reload %posttrans ephemeral /bin/systemctl enable ipa-hcc-client-prepare.service /bin/systemctl enable ipa-hcc-auto-enrollment.service %preun ephemeral %systemd_preun ipa-hcc-client-prepare.service %postun ephemeral %systemd_postun_with_restart ipa-hcc-client-prepare.service # with mockapi and ephemeral client-prepare %endif %if %{with stageconsole} %package stage-console Summary: IPA HCC: Stage Console configuration BuildArch: noarch Requires(post): python3 Requires(post): rhc Requires(post): insights-client %description stage-console This package configures subscription manager, rhc, insights-client, and ipa-hcc-auto-enrollment.service to use the internal Stage Console. The system is reconfigured during package installation. %posttrans stage-console /usr/libexec/ipa-hcc/ipa-hcc-stage-console --verbose stage.redhat.com # with stageconsole %endif %if %{with client} %package client Summary: Automatic IPA client enrollment for Hybrid Cloud Console BuildArch: noarch Requires: python3-ipahcc = %{version}-%{release} Requires: %{ipa_name}-client >= %{ipa_version} # ipa-client RHEL 8.7, 9.1, and ealier, do not come with pkinit Requires: krb5-pkinit-openssl Recommends: subscription-manager %if 0%{?rhel} # Recommend remote host configuration and Insights client on RHEL # The packages are not available on Fedora. We don't support Yggdrasil. Recommends: rhc Recommends: insights-client %endif %{?systemd_requires} %description client This package contains the automatic enrollment service for IPA clients (domain join on launch). %post client %systemd_post ipa-hcc-auto-enrollment.service /bin/systemctl daemon-reload %preun client %systemd_preun ipa-hcc-auto-enrollment.service %postun client %systemd_postun_with_restart ipa-hcc-auto-enrollment.service # with client %endif %if %{with selinux} %package selinux Summary: SELinux policy for ipa-hcc-server BuildArch: noarch Requires: selinux-policy-%{selinuxtype} >= %{selinux_policy_version} Requires(post): selinux-policy-%{selinuxtype} >= %{selinux_policy_version} %description selinux Custom SELinux policy module for ipa-hcc-server %pre selinux %selinux_relabel_pre -s %{selinuxtype} %post selinux %selinux_modules_install -s %{selinuxtype} %{_datadir}/selinux/packages/%{selinuxtype}/%{modulename}.pp.bz2 %postun selinux if [ $1 -eq 0 ]; then %selinux_modules_uninstall -s %{selinuxtype} %{modulename} fi %posttrans selinux %selinux_relabel_post -s %{selinuxtype} /usr/sbin/restorecon -R /var/cache/ipa-hcc || : # with selinux %endif %prep # tag names are generated by rpkg # Release 0.14 has tag name "ipa-hcc-0.14-1", which results in top level # directory "ipa-hcc-ipa-hcc-0.14-1". %autosetup -n ipa-hcc-ipa-hcc-%{version}-1 %if %{with pyproject_macros} %generate_buildrequires %pyproject_buildrequires %endif %build %if %{with pyproject_macros} %pyproject_wheel %endif touch debugfiles.list %check %if %{without mockapi} # tests depend on ipahcc.mockapi ln -s $(pwd)/src/ipahcc/server/mockapi.py %{buildroot}%{python3_sitelib}/ipahcc/server/mockapi.py %endif # tests depend on ipahcc_ modules ln -s -t %{buildroot}%{python3_sitelib}/ $(pwd)/src/ipahcc_*.py export PYTHONPATH=%{buildroot}%{python3_sitelib} %{python3} -B -Wignore -m unittest discover -s tests/ # cleanup after tests rm -rf %{buildroot}%{python3_sitelib}/ipahcc_*.py %if %{without mockapi} rm %{buildroot}%{python3_sitelib}/ipahcc/server/mockapi.py rm -f %{buildroot}%{python3_sitelib}/ipahcc/server/__pycache__/mockapi*.pyc %endif %if %{with client} %{buildroot}%{_libexecdir}/ipa-hcc/ipa-hcc-auto-enrollment --help >/dev/null %{buildroot}%{_libexecdir}/ipa-hcc/ipa-hcc-auto-enrollment --version %endif %if %{with server} %{buildroot}%{_sbindir}/ipa-hcc --help >/dev/null %endif %if %{with mockapi} %{buildroot}%{_libexecdir}/ipa-hcc/ipa-hcc-client-prepare --help >/dev/null %{buildroot}%{_libexecdir}/ipa-hcc/ipa-hcc-client-prepare --version %endif %if %{with stageconsole} %{buildroot}%{_libexecdir}/ipa-hcc/ipa-hcc-stage-console --help >/dev/null %{buildroot}%{_libexecdir}/ipa-hcc/ipa-hcc-stage-console --version %endif %install %global make %__make -j1 DEST=%{buildroot} PREFIX=%{_prefix} PYTHON=%{python3} PYTHON_SITELIB=%{python3_sitelib} VERSION=%{version} %{__mkdir_p} %{buildroot}%{_libexecdir}/ipa-hcc %if %{with server} # ghost config %{__mkdir_p} %{buildroot}%{_sysconfdir}/ipa touch %{buildroot}%{_sysconfdir}/ipa/hcc.conf %if %{with pyproject_macros} %pyproject_install %else %make install_python %endif %make install_server_plugin install_registration_service %{__mkdir_p} %{buildroot}%{_sbindir} mv %{buildroot}%{_bindir}/ipa-hcc %{buildroot}%{_sbindir}/ipa-hcc %py3_shebang_fix %{buildroot}%{_sbindir}/ipa-hcc %{__mkdir_p} %{buildroot}%{_sharedstatedir}/gssproxy touch %{buildroot}%{_sharedstatedir}/gssproxy/hcc-enrollment.keytab %else rm -rf %{buildroot}%{python3_sitelib}/ipaserver rm -rf %{buildroot}%{python3_sitelib}/ipahcc*.dist-info rm -rf %{buildroot}%{python3_sitelib}/ipahcc*.egg-info # with server %endif %if %{with client} %make install_client mv %{buildroot}%{_bindir}/ipa-hcc-auto-enrollment %{buildroot}%{_libexecdir}/ipa-hcc/ %py3_shebang_fix %{buildroot}%{_libexecdir}/ipa-hcc/ipa-hcc-auto-enrollment %else rm %{buildroot}%{_bindir}/ipa-hcc-auto-enrollment %endif %if %{with mockapi} %make install_mockapi install_client_prepare mv %{buildroot}%{_bindir}/ipa-hcc-client-prepare %{buildroot}%{_libexecdir}/ipa-hcc/ %py3_shebang_fix %{buildroot}%{_libexecdir}/ipa-hcc/ipa-hcc-client-prepare %{__mkdir_p} %{buildroot}%{_sysconfdir}/ipa/hcc %else rm %{buildroot}%{_bindir}/ipa-hcc-client-prepare rm %{buildroot}%{python3_sitelib}/ipahcc/server/mockapi.py rm -f %{buildroot}%{python3_sitelib}/ipahcc/server/__pycache__/mockapi*.pyc rm %{buildroot}%{python3_sitelib}/ipaserver/install/plugins/update_hcc_mockapi.py rm -f %{buildroot}%{python3_sitelib}/ipaserver/install/plugins/__pycache__/update_hcc_mockapi.*.pyc %endif %if %{with stageconsole} mv %{buildroot}%{_bindir}/ipa-hcc-stage-console %{buildroot}%{_libexecdir}/ipa-hcc/ %py3_shebang_fix %{buildroot}%{_libexecdir}/ipa-hcc/ipa-hcc-stage-console %else rm %{buildroot}%{_bindir}/ipa-hcc-stage-console %endif %if %{with selinux} %make install_selinux SELINUXTYPE=%{selinuxtype} SELINUX_MODULENAME=%{modulename} %endif # We use the scripts in /usr/libexec/ipa-hcc rm -f %{buildroot}%{python3_sitelib}/ipahcc_auto_enrollment.py rm -f %{buildroot}%{python3_sitelib}/ipahcc_client_prepare.py rm -f %{buildroot}%{python3_sitelib}/ipahcc_stage_console.py rm -rf %{buildroot}%{python3_sitelib}/__pycache__ %files -n python3-ipahcc %doc README.md CONTRIBUTORS.txt %license COPYING %{python3_sitelib}/ipahcc %if %{with pyproject_macros} %{python3_sitelib}/ipahcc*.dist-info %else %{python3_sitelib}/ipahcc*.egg-info %endif # exclude files that are in mockapi package %if %{with mockapi} %exclude %{python3_sitelib}/ipahcc/server/mockapi.py %exclude %{python3_sitelib}/ipahcc/server/__pycache__/mockapi*.pyc %endif %if %{with server} %files server %doc README.md CONTRIBUTORS.txt %license COPYING %ghost %attr(0644,root,root) %config(noreplace) %{_sysconfdir}/ipa/hcc.conf %{_sbindir}/ipa-hcc %{_mandir}/man1/ipa-hcc.1* %dir %{_datadir}/ipa-hcc %{_datadir}/ipa-hcc/cacerts %{_datadir}/ipa-hcc/hcc.conf.example %{_unitdir}/ipa-hcc-update.* # exclude files that are in mockapi package %if %{with mockapi} %exclude %{python3_sitelib}/ipaserver/install/plugins/update_hcc_mockapi.py %exclude %{python3_sitelib}/ipaserver/install/plugins/__pycache__/update_hcc_mockapi.*.pyc %endif %{python3_sitelib}/ipaserver/plugins/*.py %{python3_sitelib}/ipaserver/plugins/__pycache__/*.pyc %{python3_sitelib}/ipaserver/install/plugins/*.py %{python3_sitelib}/ipaserver/install/plugins/__pycache__/*.pyc %{_datadir}/ipa/schema.d/85-hcc.ldif %{_datadir}/ipa/updates/85-hcc.update %{_datadir}/ipa/ui/js/plugins/* # registration service # non-standard uid and gid %attr(0755,ipahcc,ipaapi) %dir %{_localstatedir}/cache/ipa-hcc %{_datadir}/ipa-hcc/hcc_registration_service.py %{_datadir}/ipa/updates/86-hcc-registration-service.update %attr(0644,root,root) %config(noreplace) %{_sysconfdir}/httpd/conf.d/ipa-hcc.conf %attr(0644,root,root) %config(noreplace) %{_sysconfdir}/gssproxy/85-ipa-hcc.conf %ghost %{_sharedstatedir}/gssproxy/hcc-enrollment.keytab %endif %if %{with mockapi} %files mockapi %doc README.md CONTRIBUTORS.txt %license COPYING %{python3_sitelib}/ipahcc/server/mockapi.py %{python3_sitelib}/ipahcc/server/__pycache__/mockapi*.pyc %{_datadir}/ipa-hcc/hcc_mockapi.py %attr(0644,root,root) %config(noreplace) %{_sysconfdir}/httpd/conf.d/ipa-hcc-mockapi.conf %{python3_sitelib}/ipaserver/install/plugins/update_hcc_mockapi.py %{python3_sitelib}/ipaserver/install/plugins/__pycache__/update_hcc_mockapi.*.pyc %{_datadir}/ipa/updates/87-hcc-mockapi.update # non-standard ownership and permission to restrict the directory to ipahcc:root %attr(0750,ipahcc,root) %dir %{_sysconfdir}/ipa/hcc %files ephemeral %doc README.md CONTRIBUTORS.txt %license COPYING %attr(0755,root,root) %{_libexecdir}/ipa-hcc/ipa-hcc-client-prepare %attr(0644,root,root) %{_unitdir}/ipa-hcc-client-prepare.service %attr(0644,root,root) %config(noreplace) %{_sysconfdir}/sysconfig/ipa-hcc-client-prepare # with mockapi %endif %if %{with stageconsole} %files stage-console %doc README.md CONTRIBUTORS.txt %license COPYING %attr(0755,root,root) %{_libexecdir}/ipa-hcc/ipa-hcc-stage-console # with stageconsole %endif %if %{with client} %files client %doc README.md CONTRIBUTORS.txt %license COPYING %attr(0755,root,root) %{_libexecdir}/ipa-hcc/ipa-hcc-auto-enrollment %attr(0644,root,root) %{_unitdir}/ipa-hcc-auto-enrollment.service %attr(0644,root,root) %config(noreplace) %{_sysconfdir}/sysconfig/ipa-hcc-auto-enrollment %endif %if %{with selinux} %files selinux %doc README.md CONTRIBUTORS.txt %license COPYING %{_datadir}/selinux/packages/%{selinuxtype}/%{modulename}.pp.* # with selinux %endif %changelog * Thu Jul 18 2024 Fedora Release Engineering - 0.17-4 - Rebuilt for https://fedoraproject.org/wiki/Fedora_41_Mass_Rebuild * Mon Jun 10 2024 Python Maint - 0.17-3 - Rebuilt for Python 3.13 * Sun Apr 07 2024 Christian Heimes 0.17-2 - ipa-hcc-client depends on ipa-client again * Sat Apr 06 2024 Christian Heimes 0.17-1 - Don't install /etc/ipa/hcc.conf by default - Refactor: Client scripts now use hccplatform - refactor: Move all server code to ipahcc.server - Feat: Server features detect Console from rhsm.conf - feat: SELinux policy for ipa-hcc-server - Fix EPEL 8 build * Wed Mar 27 2024 Christian Heimes 0.16-1 - HMS-3840 feat: Detect configuration from rhsm.conf - ipahcc-stage-console now configures proxy - HMS-3821 feat: auto enrollment can set DNS resolver - More Fedora packaging fixes - Implement testing with Stage Console APIs - Implement console proxy settings * Wed Mar 20 2024 Christian Heimes 0.15-1 - add CONTRIBUTING.md guidelines - Fedora packaging fixes * Tue Mar 19 2024 Christian Heimes 0.14-1 - Prepare ipa-hcc for Fedora packaging - infra: Add helper for stage console testing - Fix: pylint warning R1737 - Fix: Typo in ipa-hcc-auto-enrollment sysconfig - Fix various infra issues - fix HMS-2066: Add timeout to confirmation prompt - test: Test on RHEL 9.3 / 8.9 * Tue Dec 05 2023 Christian Heimes 0.13-1 - feat: Enhance reporting and logging - feat: Check remote status with HCC - refactor: Use context="hcc" in IPA API - infra: Log JSON error information - infra: Refresh cache and config file - fix: Use LDAP for public JWKs - refactor: Run ipa-client-automount - fix: Replace legacy with modern Insights API - fix: Limit hostname to 63 characters - fix: Use UEP CA to access prod cert-api - fix: Don't create global DNSResolver - feat: Add ipahcc-client-prepare - fix: Fake headers can use org_id/cn from RHSM cert - refactor: Change to --idmsvc-api-url - HMS-2348 feat: Add ephemeral fake header to auto-enrollment - test: Run CI on Fedora 39, drop 37 - fix: Better error reporting for missing RHSM cert - fix: Fix typo fdqn -> fqdn - Fix: Keycloak SSO provider requires openid scope - doc: Add test instructions and hcc.conf info - HMS-2814 feat: IPA client installer and automount - test: idm-ci now requires local cloud auth - feat: Add sso.rh.c IdP provider definitions - HMS-2694 fix: Update JWST issuer and docs - HMS-2595 feat: Extend ipa-hcc to retrieve+store JWKs - test: Fix and improve coverage - fix: Update spec file URL - fix: Update git repo URL - HMS-2594: IPA plugin for HCC JWKs - test: Do not install KRA - HMS-2532 fix: attach to api commit - HMS-2491 test: Enable backend tests again - HMS-2491 test: Allow backend test to fail - HMS-2491 refactor: Separate GET signing keys - HMS-2491 test: Update test infra for DRT - HMS-2491 feat: Remove old domain registration - HMS-2491 feat: Update for domain token workflow - refactor: Remove env patching - HMS-2446 feat: New domain reg token - fix: Use gssproxy client keytab - HMS-2446 refactor: Move IPA API to WSGI framework - tests: Add test for deserialize() - tests: Check that serializing compact form gives a ValueError - feat: Add additional check json deserialization and update docs - feat: Rename deserialize_json to deserialize - feat: Do not allow compact serialization for MultiJWST - test: Enable mypy checker for tests - feat: Add domain token to mockapi - test: Run CI with Fedora 37 and 38 - HMS-2070 feat: Remove D-Bus service * Mon Aug 14 2023 Christian Heimes 0.12-1 - fix: use new Quay org for CI images - HMS-1789 tests: use @podengo/ipa-hcc COPR - fix: Support latest tox on Fedora 38 - fix: Allow non-compact JWT serialization - fix: use OpenAPI from public GitHub repo - test: Build SRPM and RPMs on GHA - test: update packages in containers - fix: Don't hard-code inventory url - doc: Add documentation for developers - HMS-2195: fix: Use idmsvc as API slug - feat: update locations - fix: Fix typo in automember rule - HMS-2147 fix: use HostConfIpa schema in HostConfResponse - refactor: Use setuptools to install Python code - fix: store public JWK in separate file - HMS-1857 feat: signed assertion for host registration - HMS-1857 feat: Add multi-sig and host token - HMS-1289 fix: Remove inventory_id from HostConfResponse - HMS-1857 feat: Add JWK abstraction and helpers - feat: Update JSON schema from latest OpenAPI - HMS-2038 test: Smoke tests with idm-domains-backend - HMS-2068: Drop support for RHEL without PKINIT * Mon Jul 03 2023 Christian Heimes 0.11-1 - HMS-2052 build: Use OpenAPI schema from idm-domains-api - HMS-2038 test: catch metadata misconfiguration early - fix: Move rpkg output out of .tox directory - HMS-2041 fix: Represent org id as string, not int - HMS-2038 test: Improve testing with backend compose - HMS-1991 fix: Tighten OpenAPI schema - HMS-2008 feat: Adopt JSON API error objects - Add definitions for missing JSON schemas - HMS-1991 feat: Generate schema JSON files from OpenAPI - HMS-1991: Refactor JSON schema - Add project and build definitions to pyproject.toml - HMS-1898: Fix and validate error response - HMS-1975: Remove check-host API endpoint - Improve CI and test with Python 3.9 (RHEL 9) - register: prompt for confirmation - HMS-1926: Friendly D-Bus error message - ipa-hcc CLI: print human-readable messages - Document how to configure for ephemeral - logging: pretty print API response - Reconcile JSON schema with idm-domains-backend OpenAPI - Add verbose logging to ipa-hcc - Prepare release 0.11 - Ephemeral env support with fake headers - Improve Makefile and tox runner - yamllint: don't apply truthy test to map keys - Rename field 'cacerts' to 'ca_certs' - Reconcile domain response schema - Reconcile register/update domain schema - Document how to install build and test deps - HMS-1898 Reconcile error result schema - Ruff: silence F811 redefined-while-unused * Wed May 17 2023 Christian Heimes 0.10-1 - [HMS-1788] Add simple GH CI workflow - [HMS-1779] Move secrets and settings to CI/CD variables - [HMS-1645] Replace bandit/flake8 with ruff linter - Add infrastructure for mypy type checks - [HMS-1645] Drop IPA 4.6 compatibility workarounds - [HMS-1645] Drop Python 2 compatibility - Run integration tests in FIPS mode - [HMS-1645] Drop support for RHEL 7 * Wed Apr 19 2023 Christian Heimes 0.9-1 - Last version with RHEL 7 / Python 2.7 support - [HMS-1607] Use inventory_id in API routes - [HMS-1607] Move common WSGI code into module - Include os-release id and version in HTTP header - [HMS-1479] Implement status check - Drop bundle file, add more ipaserver tests - Detect and block auto-enrollment with FQDN localhost - [HMS-1472] Switch from admintool to D-Bus CLI - Add tests for dbus service, fix hccapi - Move cert parsing into common function - Validate insights registration state * Wed Mar 29 2023 Christian Heimes 0.8-1 - Fold common and registration-service into ipa-hcc-server - Default to stage - Add title and description to JSON schema - Use D-Bus service and simplify config - Download PKINIT chain from registration service - Add mock tests for mockapi service, refactor code - [HMS-1485] Add --location to auto-enrollment script - Verify with pylint and fix violations - Use server role to indicate presence of ipa-hcc plugin - [HMS-1485] Add IPA location information to domain - Add D-Bus service for checking host in HBI - [HMS-1475] Add tests for registration WSGI server - [HMS-1475] Refactor and test auto enrollment client - Test with RHEL 7.9 server - Remove dependency on requests - Rename smid -> rhsm_id, drop redundant rhsm_id from body - Move API handler in separate module, add JSON schema * Wed Mar 15 2023 Christian Heimes 0.7-1 - Fix config_mod(hcc_update_server_server) API call - Improve idm-ci - Refactor project structure - Add timeout option - Remove unused cert info and detect_environment - Split ipa_hcc_cli into CLI interface and logic - Add systemd timer service - Add global hccDomainId, use domain_id in PUT request - Add HCC update role and register/update subcommands - Add ipa-hcc to register/update domain with HCC - Update rhsm_id in server's host entry - - Add server role for HCC enrollment service - Fix deployment and rhc connect in stage environment - Test on RHEL 9.2, 8.8 - Add mockapi with test API endpoints * Tue Feb 21 2023 Christian Heimes 0.6-1 - Add metadata to deploy with local builds - build and deploy RPMs from current checkout - Add QEW test and metadata file - Add idm-ci playbook and metadata - Add tox CI with custom image - Fix stage env support - Add 1minutetip and virt-builder scripts - More validation of PKINIT options - Write custom krb5.conf, handle missing domain better, more arg checks - Drop 'not krbprincipalkey' check for testing - Mention SHA-1 PKINIT issue on old RHEL 7 and 8.6 servers * Mon Feb 06 2023 Christian Heimes 0.5-1 - Fallback to kinit with PKINIT + ipa-getkeytab on systems without PKINIT support ipa-client-install - Add support for IPA 4.6 on RHEL 7 with Python 2.7 and mod_nss - Handle platform-python on RHEL 8 - Sleep longer - Relax dependency on SELinux - Move keytab installation into auto enrollment - Basic tests for WSGI - Move /etc/ipa/hcc dir to registration-service RPM - Move scripts into ipaclient.hcc package * Thu Feb 02 2023 Christian Heimes 0.4-1 - Detect stage/prod from rhsm.conf - Move refresh_token to /etc/ipa/hcc/refresh_token - Move more configuration into hccplatform - Remove keytab file on error - Add service with force=True option - Update permissions before adding privileges - Use ipa-ldap-updater instead of slow ipa-server-upgrade - Split server plugin and registration service updates * Tue Jan 31 2023 Christian Heimes 0.3-1 - Rename package to ipa-hcc - Replace term 'consoleDot' with 'Hybrid Cloud Console' * Tue Jan 31 2023 Christian Heimes 0.2-1 - Update CA chain to official RH certs with new SHA-256 Candlepin cert - Wait until host appears in ConsoleDot inventory - Always disconnect to get a fresh Kerberos ticket and connection - Add ipa-consoledot-consoledot.service - Remove old test data * Tue Jan 31 2023 Christian Heimes 0.1-1 - Handle outdated keytab, autoconfig org id - Remove pkinit_anchors line on uninstall - Workaround for missing IdM features - Fix spec file dependencies - Automate ipa-getkeytab with update plugin - Move some files around, automate service and keytab - Update spec, add KRB5 snippet with anchors - Use more persistent connections - Add caching and logging to WSGI app - Add link from search facet to consoleDot inventory - Lookup host in consoleDot inventory - Regenerate certs with C=US instead of CN=US - Return shell script with certs - Add cross-signed certs - Add script to generate cross-signed Candlepin CA - Update README with more instructions - Require known CA issuer - Add WSGI service, roles, and cert mapping - Add test scripts - Add notes about cache and certmap-match - Add test data and instructions - Fix error reporting when global org id is missing - Use lower number for updates/schema so we can use 89 for test data - explain unique index - Add write permission - Add enrolled hosts to a hostgroup