diff --git a/Makefile.am b/Makefile.am index ff219efe3..88c583521 100644 --- a/Makefile.am +++ b/Makefile.am @@ -1,19 +1,44 @@ -EXTRA_DIST = autogen.sh \ - .version make/release.mk \ - dev_requirements.txt parallel_tests_requirements.txt \ - make/git-version-gen make/gitlog-to-changelog \ - scripts/pcsd.sh.in CHANGELOG.md CONTRIBUTING.md \ - .eslintrc .gitlab-ci.yml \ - MANIFEST.in rpm/pcs.spec.in \ - mypy.ini pyproject.toml pylintrc +EXTRA_DIST = \ + autogen.sh \ + CHANGELOG.md \ + CONTRIBUTING.md \ + dev_requirements.txt \ + .eslintrc \ + .gitlab-ci.yml \ + make/gitlog-to-changelog \ + make/git-version-gen \ + make/release.mk \ + MANIFEST.in \ + mypy.ini \ + parallel_tests_requirements.txt \ + pylintrc \ + pyproject.toml \ + rpm/pcs.spec.in \ + scripts/pcsd.sh.in \ + .version AUTOMAKE_OPTIONS = foreign -MAINTAINERCLEANFILES = Makefile.in aclocal.m4 configure depcomp \ - config.guess config.sub missing install-sh \ - autoheader automake autoconf libtool libtoolize \ - ltmain.sh compile autoscan.log \ - configure.scan Gemfile Gemfile.lock +MAINTAINERCLEANFILES = \ + aclocal.m4 \ + autoconf \ + autoheader \ + automake \ + autoscan.log \ + compile \ + config.guess \ + config.sub \ + configure \ + configure.scan \ + depcomp \ + Gemfile \ + Gemfile.lock \ + install-sh \ + libtool \ + libtoolize \ + ltmain.sh \ + Makefile.in \ + missing \ rpm/requirements.txt SPEC = rpm/$(PACKAGE_NAME).spec diff --git a/configure.ac b/configure.ac index 7eab7af9a..81f8d1bfe 100644 --- a/configure.ac +++ b/configure.ac @@ -457,7 +457,6 @@ PCS_PKG_CHECK_VAR([SBDEXECPREFIX], [sbd], [exec_prefix], [/usr]) PCS_PKG_CHECK_VAR([FASEXECPREFIX], [fence-agents], [exec_prefix], [/usr]) -PCS_PKG_CHECK_VAR([OCFROOT], [resource-agents], [ocfrootdir], [/usr/lib/ocf]) PCS_PKG_CHECK_VAR([RA_API_DTD], [resource-agents], [ra_api_dtd], [/usr/share/resource-agents/ra-api-1.dtd]) PCS_PKG_CHECK_VAR([RA_TMP_DIR], [resource-agents], [ra_tmp_dir], [/run/resource-agents]) diff --git a/pcs/Makefile.am b/pcs/Makefile.am index bd9b918d0..f4cd36777 100644 --- a/pcs/Makefile.am +++ b/pcs/Makefile.am @@ -17,276 +17,276 @@ servicedir = $(SYSTEMD_UNIT_DIR) service_DATA = snmp/pcs_snmp_agent.service EXTRA_DIST = \ - node.py \ - daemon/log.py \ - daemon/env.py \ - daemon/ruby_pcsd.py \ - daemon/app/sinatra_ui.py \ - daemon/app/sinatra_remote.py \ - daemon/app/sinatra_common.py \ - daemon/app/test/__init__.py \ - daemon/app/ui.py \ - daemon/app/common.py \ - daemon/app/session.py \ - daemon/app/ui_common.py \ - daemon/app/__init__.py \ - daemon/auth.py \ - daemon/http_server.py \ - daemon/ssl.py \ - daemon/run.py \ - daemon/session.py \ - daemon/__init__.py \ - daemon/systemd.py \ - utils.py \ - usage.py \ - constraint.py \ + acl.py \ + alert.py \ + app.py \ + cli/booth/command.py \ + cli/booth/env.py \ + cli/booth/__init__.py \ + cli/cluster/command.py \ + cli/cluster/__init__.py \ + cli/common/capabilities.py \ + cli/common/completion.py \ + cli/common/env_cli.py \ + cli/common/errors.py \ + cli/common/__init__.py \ + cli/common/lib_wrapper.py \ + cli/common/middleware.py \ + cli/common/parse_args.py \ + cli/common/printable_tree.py \ + cli/common/routing.py \ + cli/constraint_colocation/command.py \ + cli/constraint_colocation/__init__.py \ + cli/constraint/command.py \ + cli/constraint/__init__.py \ + cli/constraint_order/command.py \ + cli/constraint_order/__init__.py \ + cli/constraint/parse_args.py \ + cli/constraint_ticket/command.py \ + cli/constraint_ticket/__init__.py \ + cli/constraint_ticket/parse_args.py \ + cli/dr.py \ + client.py \ + cli/fencing_topology.py \ + cli/file/__init__.py \ + cli/file/metadata.py \ + cli/__init__.py \ + cli/nvset.py \ + cli/reports/__init__.py \ + cli/reports/messages.py \ + cli/reports/output.py \ + cli/reports/processor.py \ + cli/resource/__init__.py \ + cli/resource/parse_args.py \ + cli/resource/relations.py \ + cli/routing/acl.py \ + cli/routing/alert.py \ + cli/routing/booth.py \ + cli/routing/client.py \ + cli/routing/cluster.py \ + cli/routing/config.py \ + cli/routing/constraint.py \ + cli/routing/dr.py \ + cli/routing/host.py \ + cli/routing/__init__.py \ + cli/routing/node.py \ + cli/routing/pcsd.py \ + cli/routing/prop.py \ + cli/routing/qdevice.py \ + cli/routing/quorum.py \ + cli/routing/resource.py \ + cli/routing/status.py \ + cli/routing/stonith.py \ + cli/routing/tag.py \ + cli/rule.py \ + cli/tag/command.py \ + cli/tag/__init__.py \ + cluster.py \ common/corosync_conf.py \ common/dr.py \ - common/node_communicator.py \ + common/fencing_topology.py \ + common/file.py \ common/file_type_codes.py \ common/host.py \ - common/str_tools.py \ - common/reports/dto.py \ - common/reports/messages.py \ - common/reports/item.py \ - common/reports/constraints/order.py \ - common/reports/constraints/common.py \ - common/reports/constraints/ticket.py \ - common/reports/constraints/__init__.py \ - common/reports/constraints/colocation.py \ - common/reports/codes.py \ - common/reports/processor.py \ - common/reports/const.py \ - common/reports/__init__.py \ - common/reports/types.py \ - common/file.py \ - common/ssl.py \ - common/fencing_topology.py \ - common/pcs_pycurl.py \ + common/__init__.py \ common/interface/dto.py \ common/interface/__init__.py \ - common/tools.py \ + common/node_communicator.py \ + common/pacemaker/__init__.py \ common/pacemaker/nvset.py \ - common/pacemaker/resource/relations.py \ common/pacemaker/resource/__init__.py \ - common/pacemaker/__init__.py \ + common/pacemaker/resource/relations.py \ common/pacemaker/rule.py \ - common/__init__.py \ + common/pcs_pycurl.py \ + common/reports/codes.py \ + common/reports/const.py \ + common/reports/constraints/colocation.py \ + common/reports/constraints/common.py \ + common/reports/constraints/__init__.py \ + common/reports/constraints/order.py \ + common/reports/constraints/ticket.py \ + common/reports/dto.py \ + common/reports/__init__.py \ + common/reports/item.py \ + common/reports/messages.py \ + common/reports/processor.py \ + common/reports/types.py \ + common/ssl.py \ + common/str_tools.py \ common/system.py \ + common/tools.py \ common/types.py \ common/validate.py \ - entry_points/__init__.py \ + config.py \ + constraint.py \ + daemon/app/common.py \ + daemon/app/__init__.py \ + daemon/app/session.py \ + daemon/app/sinatra_common.py \ + daemon/app/sinatra_remote.py \ + daemon/app/sinatra_ui.py \ + daemon/app/test/__init__.py \ + daemon/app/ui_common.py \ + daemon/app/ui.py \ + daemon/auth.py \ + daemon/env.py \ + daemon/http_server.py \ + daemon/__init__.py \ + daemon/log.py \ + daemon/ruby_pcsd.py \ + daemon/run.py \ + daemon/session.py \ + daemon/ssl.py \ + daemon/systemd.py \ entry_points/cli.py \ entry_points/common.py \ entry_points/daemon.py \ + entry_points/__init__.py \ entry_points/internal.py \ entry_points/snmp_agent.py \ - pcs_internal.py \ - client.py \ - app.py \ - lib/sbd.py \ - lib/node.py \ - lib/env.py \ - lib/external.py \ - lib/communication/corosync.py \ - lib/communication/sbd.py \ - lib/communication/nodes.py \ - lib/communication/cluster.py \ - lib/communication/booth.py \ - lib/communication/qdevice.py \ - lib/communication/qdevice_net.py \ - lib/communication/status.py \ - lib/communication/tools.py \ - lib/communication/__init__.py \ - lib/commands/sbd.py \ - lib/commands/dr.py \ - lib/commands/node.py \ - lib/commands/cluster.py \ - lib/commands/constraint/order.py \ - lib/commands/constraint/common.py \ - lib/commands/constraint/ticket.py \ - lib/commands/constraint/__init__.py \ - lib/commands/constraint/colocation.py \ - lib/commands/stonith.py \ - lib/commands/remote_node.py \ - lib/commands/booth.py \ - lib/commands/qdevice.py \ - lib/commands/pcsd.py \ - lib/commands/resource_agent.py \ - lib/commands/alert.py \ - lib/commands/fencing_topology.py \ - lib/commands/stonith_agent.py \ - lib/commands/tag.py \ - lib/commands/status.py \ - lib/commands/cib_options.py \ - lib/commands/quorum.py \ - lib/commands/__init__.py \ - lib/commands/resource.py \ - lib/commands/acl.py \ - lib/exchange_formats.md \ - lib/cib/node.py \ - lib/cib/sections.py \ - lib/cib/nvpair.py \ - lib/cib/nvpair_multi.py \ + host.py \ + __init__.py \ + lib/booth/config_facade.py \ + lib/booth/config_files.py \ + lib/booth/config_parser.py \ + lib/booth/config_validators.py \ + lib/booth/constants.py \ + lib/booth/env.py \ + lib/booth/__init__.py \ + lib/booth/resource.py \ + lib/booth/status.py \ + lib/booth/sync.py \ + lib/cib/acl.py \ + lib/cib/alert.py \ + lib/cib/constraint/colocation.py \ lib/cib/constraint/constraint.py \ + lib/cib/constraint/__init__.py \ lib/cib/constraint/order.py \ - lib/cib/constraint/ticket.py \ lib/cib/constraint/resource_set.py \ - lib/cib/constraint/__init__.py \ - lib/cib/constraint/colocation.py \ - lib/cib/stonith.py \ - lib/cib/alert.py \ - lib/cib/resource/operations.py \ - lib/cib/resource/hierarchy.py \ + lib/cib/constraint/ticket.py \ + lib/cib/fencing_topology.py \ + lib/cib/__init__.py \ + lib/cib/node.py \ + lib/cib/nvpair_multi.py \ + lib/cib/nvpair.py \ lib/cib/resource/bundle.py \ + lib/cib/resource/clone.py \ + lib/cib/resource/common.py \ + lib/cib/resource/group.py \ lib/cib/resource/guest_node.py \ + lib/cib/resource/hierarchy.py \ + lib/cib/resource/__init__.py \ + lib/cib/resource/operations.py \ + lib/cib/resource/primitive.py \ lib/cib/resource/relations.py \ lib/cib/resource/remote_node.py \ - lib/cib/resource/group.py \ - lib/cib/resource/common.py \ - lib/cib/resource/clone.py \ - lib/cib/resource/primitive.py \ - lib/cib/resource/__init__.py \ - lib/cib/rule/in_effect.py \ - lib/cib/rule/cib_to_str.py \ - lib/cib/rule/parsed_to_cib.py \ lib/cib/rule/cib_to_dto.py \ + lib/cib/rule/cib_to_str.py \ lib/cib/rule/expression_part.py \ - lib/cib/rule/tools.py \ - lib/cib/rule/parser.py \ + lib/cib/rule/in_effect.py \ lib/cib/rule/__init__.py \ + lib/cib/rule/parsed_to_cib.py \ + lib/cib/rule/parser.py \ + lib/cib/rule/tools.py \ lib/cib/rule/validator.py \ - lib/cib/fencing_topology.py \ - lib/cib/tag.py \ + lib/cib/sections.py \ lib/cib/status.py \ + lib/cib/stonith.py \ + lib/cib/tag.py \ lib/cib/tools.py \ - lib/cib/__init__.py \ - lib/cib/acl.py \ - lib/node_communication_format.py \ - lib/resource_agent.py \ - lib/xml_tools.py \ - lib/dr/env.py \ + lib/commands/acl.py \ + lib/commands/alert.py \ + lib/commands/booth.py \ + lib/commands/cib_options.py \ + lib/commands/cluster.py \ + lib/commands/constraint/colocation.py \ + lib/commands/constraint/common.py \ + lib/commands/constraint/__init__.py \ + lib/commands/constraint/order.py \ + lib/commands/constraint/ticket.py \ + lib/commands/dr.py \ + lib/commands/fencing_topology.py \ + lib/commands/__init__.py \ + lib/commands/node.py \ + lib/commands/pcsd.py \ + lib/commands/qdevice.py \ + lib/commands/quorum.py \ + lib/commands/remote_node.py \ + lib/commands/resource_agent.py \ + lib/commands/resource.py \ + lib/commands/sbd.py \ + lib/commands/status.py \ + lib/commands/stonith_agent.py \ + lib/commands/stonith.py \ + lib/commands/tag.py \ + lib/communication/booth.py \ + lib/communication/cluster.py \ + lib/communication/corosync.py \ + lib/communication/__init__.py \ + lib/communication/nodes.py \ + lib/communication/qdevice_net.py \ + lib/communication/qdevice.py \ + lib/communication/sbd.py \ + lib/communication/status.py \ + lib/communication/tools.py \ + lib/corosync/config_facade.py \ + lib/corosync/config_parser.py \ + lib/corosync/config_validators.py \ + lib/corosync/constants.py \ + lib/corosync/__init__.py \ + lib/corosync/live.py \ + lib/corosync/node.py \ + lib/corosync/qdevice_client.py \ + lib/corosync/qdevice_net.py \ lib/dr/config/facade.py \ lib/dr/config/__init__.py \ + lib/dr/env.py \ lib/dr/__init__.py \ + lib/env.py \ lib/errors.py \ - lib/validate.py \ - lib/node_communication.py \ - lib/file/toolbox.py \ - lib/file/metadata.py \ + lib/exchange_formats.md \ + lib/external.py \ + lib/file/__init__.py \ lib/file/instance.py \ + lib/file/metadata.py \ lib/file/raw_file.py \ - lib/file/__init__.py \ + lib/file/toolbox.py \ + lib/__init__.py \ lib/interface/config.py \ lib/interface/__init__.py \ - lib/corosync/constants.py \ - lib/corosync/live.py \ - lib/corosync/node.py \ - lib/corosync/config_facade.py \ - lib/corosync/qdevice_client.py \ - lib/corosync/qdevice_net.py \ - lib/corosync/config_parser.py \ - lib/corosync/config_validators.py \ - lib/corosync/__init__.py \ - lib/tools.py \ + lib/node_communication_format.py \ + lib/node_communication.py \ + lib/node.py \ + lib/pacemaker/__init__.py \ lib/pacemaker/live.py \ - lib/pacemaker/state.py \ lib/pacemaker/simulate.py \ + lib/pacemaker/state.py \ lib/pacemaker/values.py \ - lib/pacemaker/__init__.py \ - lib/__init__.py \ - lib/booth/constants.py \ - lib/booth/env.py \ - lib/booth/config_facade.py \ - lib/booth/config_parser.py \ - lib/booth/sync.py \ - lib/booth/config_validators.py \ - lib/booth/config_files.py \ - lib/booth/status.py \ - lib/booth/__init__.py \ - lib/booth/resource.py \ - stonith.py \ - host.py \ - config.py \ - qdevice.py \ + lib/resource_agent.py \ + lib/sbd.py \ + lib/tools.py \ + lib/validate.py \ + lib/xml_tools.py \ + node.py \ pcsd.py \ - alert.py \ - status.py \ - quorum.py \ - __init__.py \ + pcs_internal.py \ prop.py \ - snmp/conf/pcs_snmp_agent \ - snmp/updaters/v1.py \ - snmp/updaters/__init__.py \ - snmp/pcs_snmp_agent.8 \ - snmp/agentx/updater.py \ + qdevice.py \ + quorum.py \ + resource.py \ + rule.py \ snmp/agentx/__init__.py \ snmp/agentx/types.py \ + snmp/agentx/updater.py \ + snmp/conf/pcs_snmp_agent \ + snmp/__init__.py \ snmp/mibs/PCMK-PCS-MIB.txt \ snmp/mibs/PCMK-PCS-V1-MIB.txt \ + snmp/pcs_snmp_agent.8 \ snmp/pcs_snmp_agent.py \ - snmp/__init__.py \ - rule.py \ - cli/dr.py \ - cli/common/env_cli.py \ - cli/common/routing.py \ - cli/common/completion.py \ - cli/common/capabilities.py \ - cli/common/middleware.py \ - cli/common/errors.py \ - cli/common/lib_wrapper.py \ - cli/common/printable_tree.py \ - cli/common/__init__.py \ - cli/common/parse_args.py \ - cli/constraint/command.py \ - cli/constraint/__init__.py \ - cli/constraint/parse_args.py \ - cli/nvset.py \ - cli/tag/command.py \ - cli/tag/__init__.py \ - cli/reports/messages.py \ - cli/reports/output.py \ - cli/reports/processor.py \ - cli/reports/__init__.py \ - cli/constraint_ticket/command.py \ - cli/constraint_ticket/__init__.py \ - cli/constraint_ticket/parse_args.py \ - cli/resource/relations.py \ - cli/resource/__init__.py \ - cli/resource/parse_args.py \ - cli/routing/dr.py \ - cli/routing/node.py \ - cli/routing/constraint.py \ - cli/routing/cluster.py \ - cli/routing/client.py \ - cli/routing/stonith.py \ - cli/routing/host.py \ - cli/routing/config.py \ - cli/routing/booth.py \ - cli/routing/qdevice.py \ - cli/routing/pcsd.py \ - cli/routing/alert.py \ - cli/routing/tag.py \ - cli/routing/status.py \ - cli/routing/quorum.py \ - cli/routing/__init__.py \ - cli/routing/prop.py \ - cli/routing/resource.py \ - cli/routing/acl.py \ - cli/fencing_topology.py \ - cli/file/metadata.py \ - cli/file/__init__.py \ - cli/constraint_colocation/command.py \ - cli/constraint_colocation/__init__.py \ - cli/cluster/command.py \ - cli/cluster/__init__.py \ - cli/__init__.py \ - cli/rule.py \ - cli/constraint_order/command.py \ - cli/constraint_order/__init__.py \ - cli/booth/env.py \ - cli/booth/command.py \ - cli/booth/__init__.py \ - resource.py \ - cluster.py \ - acl.py + snmp/updaters/__init__.py \ + snmp/updaters/v1.py \ + status.py \ + stonith.py \ + usage.py \ + utils.py diff --git a/pcs_test/Makefile.am b/pcs_test/Makefile.am index 4506f438b..4505aebb9 100644 --- a/pcs_test/Makefile.am +++ b/pcs_test/Makefile.am @@ -1,320 +1,326 @@ MAINTAINERCLEANFILES = Makefile.in EXTRA_DIST = \ - tier0/test_host.py \ - tier0/daemon/test_ssl.py \ - tier0/daemon/test_env.py \ - tier0/daemon/app/test_app_redirect.py \ - tier0/daemon/app/test_app_spa.py \ - tier0/daemon/app/test_app_session.py \ - tier0/daemon/app/fixtures_app.py \ - tier0/daemon/app/test_app_remote.py \ - tier0/daemon/app/test_app_gui.py \ - tier0/daemon/app/__init__.py \ - tier0/daemon/test_ruby_pcsd.py \ - tier0/daemon/test_auth.py \ - tier0/daemon/test_http_server.py \ - tier0/daemon/test_session.py \ - tier0/daemon/__init__.py \ - tier0/common/test_host.py \ - tier0/common/test_tools.py \ - tier0/common/test_str_tools.py \ - tier0/common/test_file.py \ - tier0/common/reports/constraints/test_ticket.py \ - tier0/common/reports/constraints/test_common.py \ + curl_test.py \ + __init__.py \ + resources/capabilities.xml \ + resources/cib-empty-1.2.xml \ + resources/cib-empty-2.0.xml \ + resources/cib-empty-2.3-withnodes.xml \ + resources/cib-empty-2.5-withnodes.xml \ + resources/cib-empty-2.5.xml \ + resources/cib-empty-2.6.xml \ + resources/cib-empty-2.8.xml \ + resources/cib-empty-2.9.xml \ + resources/cib-empty-3.1.xml \ + resources/cib-empty-3.2.xml \ + resources/cib-empty-3.3.xml \ + resources/cib-empty-3.4.xml \ + resources/cib-empty-3.5.xml \ + resources/cib-empty-with3nodes.xml \ + resources/cib-empty-withnodes.xml \ + resources/cib-empty.xml \ + resources/cib-largefile.xml \ + resources/cib-large.xml \ + resources/cib-tags.xml \ + resources/cluster.conf \ + resources/corosync-3nodes.conf \ + resources/corosync-3nodes-qdevice.conf \ + resources/corosync-3nodes-qdevice-heuristics.conf \ + resources/corosync.conf \ + resources/corosync-no-node-names.conf \ + resources/corosync-qdevice.conf \ + resources/corosync-some-node-names.conf \ + resources/crm_mon.minimal.xml \ + resources/crm_mon_rng/crm_mon-2.3.rng \ + resources/crm_mon_rng/crm_mon.rng \ + resources/crm_mon_rng/fence-event-2.0.rng \ + resources/fenced_metadata.xml \ + resources/qdevice-certs/final-certificate.pk12 \ + resources/qdevice-certs/qdevice-cert-request.crq \ + resources/qdevice-certs/qnetd-cacert.crt \ + resources/qdevice-certs/signed-certificate.crt \ + resources/resource_agent_ocf_heartbeat_dummy_insane_action.xml \ + resources/resource_agent_ocf_heartbeat_dummy_utf8.xml \ + resources/resource_agent_ocf_heartbeat_dummy.xml \ + resources/resource_agent_ocf_heartbeat_ipaddr2.xml \ + resources/resource_agent_ocf_pacemaker_booth-site.xml \ + resources/resource_agent_ocf_pacemaker_remote.xml \ + resources/stonith_agent_fence_custom_actions.xml \ + resources/stonith_agent_fence_simple.xml \ + resources/stonith_agent_fence_unfencing.xml \ + resources/transitions01.xml \ + resources/transitions02.xml \ + suite.py \ + tier0/cli/booth/__init__.py \ + tier0/cli/booth/test_env.py \ + tier0/cli/cluster/__init__.py \ + tier0/cli/cluster/test_command.py \ + tier0/cli/common/__init__.py \ + tier0/cli/common/test_capabilities.py \ + tier0/cli/common/test_completion.py \ + tier0/cli/common/test_lib_wrapper.py \ + tier0/cli/common/test_middleware.py \ + tier0/cli/common/test_parse_args.py \ + tier0/cli/common/test_printable_tree.py \ + tier0/cli/constraint/__init__.py \ + tier0/cli/constraint/test_command.py \ + tier0/cli/constraint/test_parse_args.py \ + tier0/cli/constraint_ticket/__init__.py \ + tier0/cli/constraint_ticket/test_command.py \ + tier0/cli/constraint_ticket/test_parse_args.py \ + tier0/cli/__init__.py \ + tier0/cli/reports/__init__.py \ + tier0/cli/reports/test_messages.py \ + tier0/cli/resource/__init__.py \ + tier0/cli/resource/test_defaults.py \ + tier0/cli/resource/test_parse_args.py \ + tier0/cli/resource/test_relations.py \ + tier0/cli/tag/__init__.py \ + tier0/cli/tag/test_command.py \ + tier0/cli/test_booth.py \ + tier0/cli/test_cluster.py \ + tier0/cli/test_dr.py \ + tier0/cli/test_nvset.py \ + tier0/cli/test_resource.py \ + tier0/cli/test_rule.py \ + tier0/cli/test_stonith.py \ + tier0/common/__init__.py \ + tier0/common/interface/__init__.py \ + tier0/common/interface/test_dto.py \ tier0/common/reports/constraints/__init__.py \ + tier0/common/reports/constraints/test_common.py \ tier0/common/reports/constraints/test_init.py \ + tier0/common/reports/constraints/test_ticket.py \ + tier0/common/reports/__init__.py \ tier0/common/reports/test_item.py \ tier0/common/reports/test_messages.py \ - tier0/common/reports/__init__.py \ + tier0/common/test_file.py \ + tier0/common/test_host.py \ tier0/common/test_node_communicator.py \ - tier0/common/interface/test_dto.py \ - tier0/common/interface/__init__.py \ + tier0/common/test_str_tools.py \ + tier0/common/test_tools.py \ tier0/common/test_tools_xml_fromstring.py \ - tier0/common/__init__.py \ - tier0/lib/test_env_corosync.py \ - tier0/lib/test_node_communication_format.py \ - tier0/lib/test_resource_agent.py \ - tier0/lib/test_external.py \ - tier0/lib/communication/test_qdevice.py \ - tier0/lib/communication/test_booth.py \ - tier0/lib/communication/test_nodes.py \ - tier0/lib/communication/test_cluster.py \ - tier0/lib/communication/test_status.py \ - tier0/lib/communication/test_sbd.py \ - tier0/lib/communication/test_corosync.py \ - tier0/lib/communication/__init__.py \ - tier0/lib/communication/test_qdevice_net.py \ - tier0/lib/test_env.py \ - tier0/lib/commands/test_qdevice.py \ - tier0/lib/commands/test_quorum.py \ - tier0/lib/commands/test_resource_agent.py \ - tier0/lib/commands/test_ticket.py \ - tier0/lib/commands/test_fencing_topology.py \ - tier0/lib/commands/test_stonith.py \ - tier0/lib/commands/test_pcsd.py \ - tier0/lib/commands/test_stonith_agent.py \ - tier0/lib/commands/test_acl.py \ - tier0/lib/commands/test_booth.py \ - tier0/lib/commands/tag/test_tag_create.py \ - tier0/lib/commands/tag/tag_common.py \ - tier0/lib/commands/tag/test_tag_config.py \ - tier0/lib/commands/tag/test_tag_remove.py \ - tier0/lib/commands/tag/test_tag_update.py \ - tier0/lib/commands/tag/__init__.py \ - tier0/lib/commands/resource/test_resource_enable_disable.py \ - tier0/lib/commands/resource/test_group_add.py \ - tier0/lib/commands/resource/test_failcounts.py \ - tier0/lib/commands/resource/test_resource_relations.py \ - tier0/lib/commands/resource/test_bundle_reset.py \ - tier0/lib/commands/resource/test_resource_manage_unmanage.py \ - tier0/lib/commands/resource/test_bundle_update.py \ - tier0/lib/commands/resource/bundle_common.py \ - tier0/lib/commands/resource/test_bundle_create.py \ - tier0/lib/commands/resource/test_resource_create.py \ - tier0/lib/commands/resource/__init__.py \ - tier0/lib/commands/resource/test_resource_move_ban.py \ - tier0/lib/commands/test_status.py \ - tier0/lib/commands/dr/test_destroy.py \ - tier0/lib/commands/dr/test_status.py \ - tier0/lib/commands/dr/test_get_config.py \ - tier0/lib/commands/dr/test_set_recovery_site.py \ - tier0/lib/commands/dr/__init__.py \ - tier0/lib/commands/test_node.py \ - tier0/lib/commands/sbd/test_get_cluster_sbd_status.py \ - tier0/lib/commands/sbd/test_disable_sbd.py \ - tier0/lib/commands/sbd/test_enable_sbd.py \ - tier0/lib/commands/sbd/test_get_cluster_sbd_config.py \ - tier0/lib/commands/sbd/__init__.py \ - tier0/lib/commands/sbd/test_watchdog_list.py \ - tier0/lib/commands/test_sbd.py \ - tier0/lib/commands/test_alert.py \ - tier0/lib/commands/remote_node/test_node_remove_remote.py \ - tier0/lib/commands/remote_node/test_node_add_remote.py \ - tier0/lib/commands/remote_node/fixtures_add.py \ - tier0/lib/commands/remote_node/fixtures_remove.py \ - tier0/lib/commands/remote_node/__init__.py \ - tier0/lib/commands/remote_node/test_node_remove_guest.py \ - tier0/lib/commands/remote_node/test_node_add_guest.py \ - tier0/lib/commands/test_stonith_history.py \ - tier0/lib/commands/test_cib_options.py \ - tier0/lib/commands/cluster/common.py \ - tier0/lib/commands/cluster/test_add_link.py \ - tier0/lib/commands/cluster/test_add_nodes.py \ - tier0/lib/commands/cluster/test_authkey_corosync.py \ - tier0/lib/commands/cluster/test_verify.py \ - tier0/lib/commands/cluster/test_node_clear.py \ - tier0/lib/commands/cluster/test_setup.py \ - tier0/lib/commands/cluster/test_update_link.py \ - tier0/lib/commands/cluster/test_add_nodes_validation.py \ - tier0/lib/commands/cluster/test_remove_links.py \ - tier0/lib/commands/cluster/test_remove_nodes.py \ - tier0/lib/commands/cluster/test_remove_nodes_from_cib.py \ - tier0/lib/commands/cluster/__init__.py \ - tier0/lib/commands/__init__.py \ - tier0/lib/commands/test_constraint_common.py \ - tier0/lib/test_tools.py \ - tier0/lib/test_stonith_agent.py \ - tier0/lib/misc.py \ - tier0/lib/cib/test_constraint_colocation.py \ - tier0/lib/cib/test_resource_remote_node.py \ - tier0/lib/cib/test_sections.py \ - tier0/lib/cib/test_resource_clone.py \ - tier0/lib/cib/test_resource_common.py \ - tier0/lib/cib/test_resource_guest_node.py \ - tier0/lib/cib/test_fencing_topology.py \ - tier0/lib/cib/test_stonith.py \ - tier0/lib/cib/test_tools.py \ - tier0/lib/cib/test_nvpair.py \ - tier0/lib/cib/test_resource_operations.py \ - tier0/lib/cib/test_acl.py \ - tier0/lib/cib/test_resource_primitive.py \ - tier0/lib/cib/test_tag.py \ - tier0/lib/cib/test_resource_group.py \ - tier0/lib/cib/test_constraint_ticket.py \ + tier0/daemon/app/fixtures_app.py \ + tier0/daemon/app/__init__.py \ + tier0/daemon/app/test_app_gui.py \ + tier0/daemon/app/test_app_redirect.py \ + tier0/daemon/app/test_app_remote.py \ + tier0/daemon/app/test_app_session.py \ + tier0/daemon/app/test_app_spa.py \ + tier0/daemon/__init__.py \ + tier0/daemon/test_auth.py \ + tier0/daemon/test_env.py \ + tier0/daemon/test_http_server.py \ + tier0/daemon/test_ruby_pcsd.py \ + tier0/daemon/test_session.py \ + tier0/daemon/test_ssl.py \ + tier0/__init__.py \ + tier0/lib/booth/__init__.py \ + tier0/lib/booth/test_config_facade.py \ + tier0/lib/booth/test_config_files.py \ + tier0/lib/booth/test_config_parser.py \ + tier0/lib/booth/test_config_validators.py \ + tier0/lib/booth/test_env.py \ + tier0/lib/booth/test_resource.py \ + tier0/lib/booth/test_status.py \ + tier0/lib/booth/test_sync.py \ + tier0/lib/cib/__init__.py \ + tier0/lib/cib/resource/__init__.py \ tier0/lib/cib/resource/test_hierarchy.py \ tier0/lib/cib/resource/test_relations.py \ - tier0/lib/cib/resource/__init__.py \ - tier0/lib/cib/test_status.py \ + tier0/lib/cib/rule/__init__.py \ tier0/lib/cib/rule/test_cib_to_dto.py \ - tier0/lib/cib/rule/test_tools.py \ - tier0/lib/cib/rule/test_validator.py \ tier0/lib/cib/rule/test_cib_to_str.py \ tier0/lib/cib/rule/test_parsed_to_cib.py \ tier0/lib/cib/rule/test_parser.py \ - tier0/lib/cib/rule/__init__.py \ - tier0/lib/cib/test_node.py \ + tier0/lib/cib/rule/test_tools.py \ + tier0/lib/cib/rule/test_validator.py \ + tier0/lib/cib/test_acl.py \ tier0/lib/cib/test_alert.py \ - tier0/lib/cib/test_constraint.py \ - tier0/lib/cib/test_resource_set.py \ - tier0/lib/cib/test_resource_bundle.py \ - tier0/lib/cib/__init__.py \ + tier0/lib/cib/test_constraint_colocation.py \ tier0/lib/cib/test_constraint_order.py \ + tier0/lib/cib/test_constraint.py \ + tier0/lib/cib/test_constraint_ticket.py \ + tier0/lib/cib/test_fencing_topology.py \ + tier0/lib/cib/test_node.py \ tier0/lib/cib/test_nvpair_multi.py \ - tier0/lib/test_xml_tools.py \ - tier0/lib/dr/test_facade.py \ - tier0/lib/dr/__init__.py \ - tier0/lib/test_sbd.py \ - tier0/lib/file/test_raw_file.py \ - tier0/lib/file/test_toolbox.py \ - tier0/lib/file/test_instance.py \ - tier0/lib/test_validate.py \ - tier0/lib/corosync/test_config_facade_links.py \ - tier0/lib/corosync/test_config_facade_nodes.py \ - tier0/lib/corosync/test_config_facade_misc.py \ - tier0/lib/corosync/test_config_facade_quorum_device.py \ - tier0/lib/corosync/test_config_validators_quorum.py \ - tier0/lib/corosync/test_config_facade_quorum.py \ - tier0/lib/corosync/test_config_validators_links.py \ - tier0/lib/corosync/test_live.py \ - tier0/lib/corosync/test_node.py \ - tier0/lib/corosync/test_config_parser.py \ - tier0/lib/corosync/test_config_validators_create.py \ - tier0/lib/corosync/test_config_validators_nodes.py \ - tier0/lib/corosync/test_config_validators_common.py \ - tier0/lib/corosync/test_qdevice_net.py \ - tier0/lib/corosync/test_qdevice_client.py \ - tier0/lib/corosync/__init__.py \ - tier0/lib/test_env_cib.py \ - tier0/lib/test_node_communication.py \ - tier0/lib/pacemaker/test_simulate.py \ - tier0/lib/pacemaker/test_live.py \ - tier0/lib/pacemaker/test_state.py \ - tier0/lib/pacemaker/test_values.py \ - tier0/lib/pacemaker/__init__.py \ - tier0/lib/__init__.py \ - tier0/lib/booth/test_env.py \ - tier0/lib/booth/test_config_parser.py \ - tier0/lib/booth/test_config_facade.py \ - tier0/lib/booth/test_config_files.py \ - tier0/lib/booth/test_config_validators.py \ - tier0/lib/booth/test_status.py \ - tier0/lib/booth/test_resource.py \ - tier0/lib/booth/test_sync.py \ - tier0/lib/booth/__init__.py \ - tier0/__init__.py \ - tier0/cli/test_booth.py \ - tier0/cli/common/test_middleware.py \ - tier0/cli/common/test_capabilities.py \ - tier0/cli/common/test_printable_tree.py \ - tier0/cli/common/test_lib_wrapper.py \ - tier0/cli/common/__init__.py \ - tier0/cli/common/test_completion.py \ - tier0/cli/common/test_parse_args.py \ - tier0/cli/test_stonith.py \ - tier0/cli/constraint/__init__.py \ - tier0/cli/constraint/test_command.py \ - tier0/cli/constraint/test_parse_args.py \ - tier0/cli/test_dr.py \ - tier0/cli/test_cluster.py \ - tier0/cli/tag/__init__.py \ - tier0/cli/tag/test_command.py \ - tier0/cli/reports/test_messages.py \ - tier0/cli/reports/__init__.py \ - tier0/cli/constraint_ticket/__init__.py \ - tier0/cli/constraint_ticket/test_command.py \ - tier0/cli/constraint_ticket/test_parse_args.py \ - tier0/cli/test_nvset.py \ - tier0/cli/resource/test_relations.py \ - tier0/cli/resource/test_defaults.py \ - tier0/cli/resource/__init__.py \ - tier0/cli/resource/test_parse_args.py \ - tier0/cli/test_resource.py \ - tier0/cli/cluster/__init__.py \ - tier0/cli/cluster/test_command.py \ - tier0/cli/__init__.py \ - tier0/cli/test_rule.py \ - tier0/cli/booth/test_env.py \ - tier0/cli/booth/__init__.py \ - tier0/test_capabilities.py \ + tier0/lib/cib/test_nvpair.py \ + tier0/lib/cib/test_resource_bundle.py \ + tier0/lib/cib/test_resource_clone.py \ + tier0/lib/cib/test_resource_common.py \ + tier0/lib/cib/test_resource_group.py \ + tier0/lib/cib/test_resource_guest_node.py \ + tier0/lib/cib/test_resource_operations.py \ + tier0/lib/cib/test_resource_primitive.py \ + tier0/lib/cib/test_resource_remote_node.py \ + tier0/lib/cib/test_resource_set.py \ + tier0/lib/cib/test_sections.py \ + tier0/lib/cib/test_status.py \ + tier0/lib/cib/test_stonith.py \ + tier0/lib/cib/test_tag.py \ + tier0/lib/cib/test_tools.py \ + tier0/lib/commands/cluster/common.py \ + tier0/lib/commands/cluster/__init__.py \ + tier0/lib/commands/cluster/test_add_link.py \ + tier0/lib/commands/cluster/test_add_nodes.py \ + tier0/lib/commands/cluster/test_add_nodes_validation.py \ + tier0/lib/commands/cluster/test_authkey_corosync.py \ tier0/lib/commands/cluster/test_config_update.py \ tier0/lib/commands/cluster/test_get_corosync_conf_struc.py \ + tier0/lib/commands/cluster/test_node_clear.py \ + tier0/lib/commands/cluster/test_remove_links.py \ + tier0/lib/commands/cluster/test_remove_nodes_from_cib.py \ + tier0/lib/commands/cluster/test_remove_nodes.py \ + tier0/lib/commands/cluster/test_setup.py \ + tier0/lib/commands/cluster/test_update_link.py \ + tier0/lib/commands/cluster/test_verify.py \ + tier0/lib/commands/dr/__init__.py \ + tier0/lib/commands/dr/test_destroy.py \ + tier0/lib/commands/dr/test_get_config.py \ + tier0/lib/commands/dr/test_set_recovery_site.py \ + tier0/lib/commands/dr/test_status.py \ + tier0/lib/commands/__init__.py \ + tier0/lib/commands/remote_node/fixtures_add.py \ + tier0/lib/commands/remote_node/fixtures_remove.py \ + tier0/lib/commands/remote_node/__init__.py \ + tier0/lib/commands/remote_node/test_node_add_guest.py \ + tier0/lib/commands/remote_node/test_node_add_remote.py \ + tier0/lib/commands/remote_node/test_node_remove_guest.py \ + tier0/lib/commands/remote_node/test_node_remove_remote.py \ + tier0/lib/commands/resource/bundle_common.py \ + tier0/lib/commands/resource/__init__.py \ + tier0/lib/commands/resource/test_bundle_create.py \ + tier0/lib/commands/resource/test_bundle_reset.py \ + tier0/lib/commands/resource/test_bundle_update.py \ + tier0/lib/commands/resource/test_failcounts.py \ + tier0/lib/commands/resource/test_group_add.py \ + tier0/lib/commands/resource/test_resource_create.py \ + tier0/lib/commands/resource/test_resource_enable_disable.py \ + tier0/lib/commands/resource/test_resource_manage_unmanage.py \ + tier0/lib/commands/resource/test_resource_move_ban.py \ + tier0/lib/commands/resource/test_resource_relations.py \ + tier0/lib/commands/sbd/__init__.py \ + tier0/lib/commands/sbd/test_disable_sbd.py \ + tier0/lib/commands/sbd/test_enable_sbd.py \ + tier0/lib/commands/sbd/test_get_cluster_sbd_config.py \ + tier0/lib/commands/sbd/test_get_cluster_sbd_status.py \ + tier0/lib/commands/sbd/test_watchdog_list.py \ + tier0/lib/commands/tag/__init__.py \ + tier0/lib/commands/tag/tag_common.py \ + tier0/lib/commands/tag/test_tag_config.py \ + tier0/lib/commands/tag/test_tag_create.py \ + tier0/lib/commands/tag/test_tag_remove.py \ + tier0/lib/commands/tag/test_tag_update.py \ + tier0/lib/commands/test_acl.py \ + tier0/lib/commands/test_alert.py \ + tier0/lib/commands/test_booth.py \ + tier0/lib/commands/test_cib_options.py \ + tier0/lib/commands/test_constraint_common.py \ + tier0/lib/commands/test_fencing_topology.py \ + tier0/lib/commands/test_node.py \ + tier0/lib/commands/test_pcsd.py \ + tier0/lib/commands/test_qdevice.py \ + tier0/lib/commands/test_quorum.py \ + tier0/lib/commands/test_resource_agent.py \ + tier0/lib/commands/test_sbd.py \ + tier0/lib/commands/test_status.py \ + tier0/lib/commands/test_stonith_agent.py \ + tier0/lib/commands/test_stonith_history.py \ + tier0/lib/commands/test_stonith.py \ + tier0/lib/commands/test_ticket.py \ + tier0/lib/communication/__init__.py \ + tier0/lib/communication/test_booth.py \ + tier0/lib/communication/test_cluster.py \ + tier0/lib/communication/test_corosync.py \ + tier0/lib/communication/test_nodes.py \ + tier0/lib/communication/test_qdevice_net.py \ + tier0/lib/communication/test_qdevice.py \ + tier0/lib/communication/test_sbd.py \ + tier0/lib/communication/test_status.py \ + tier0/lib/corosync/__init__.py \ + tier0/lib/corosync/test_config_facade_links.py \ + tier0/lib/corosync/test_config_facade_misc.py \ + tier0/lib/corosync/test_config_facade_nodes.py \ + tier0/lib/corosync/test_config_facade_quorum_device.py \ + tier0/lib/corosync/test_config_facade_quorum.py \ tier0/lib/corosync/test_config_facade_transport.py \ + tier0/lib/corosync/test_config_parser.py \ + tier0/lib/corosync/test_config_validators_common.py \ + tier0/lib/corosync/test_config_validators_create.py \ + tier0/lib/corosync/test_config_validators_links.py \ + tier0/lib/corosync/test_config_validators_nodes.py \ + tier0/lib/corosync/test_config_validators_quorum.py \ tier0/lib/corosync/test_config_validators_update.py \ - curl_test.py \ - tier1/test_booth.py \ - tier1/test_misc.py \ - tier1/test_quorum.py \ - tier1/test_tag.py \ - tier1/test_status.py \ - tier1/legacy/test_stonith.py \ - tier1/legacy/test_acl.py \ - tier1/legacy/test_utils.py \ - tier1/legacy/test_cluster.py \ - tier1/legacy/test_node.py \ - tier1/legacy/test_resource.py \ - tier1/legacy/test_alert.py \ - tier1/legacy/test_properties.py \ - tier1/legacy/__init__.py \ - tier1/legacy/test_constraints.py \ - tier1/legacy/test_rule.py \ - tier1/test_cluster_pcmk_remote.py \ - tier1/test_cib_options.py \ - tier1/cluster/test_cib_push.py \ - tier1/cluster/test_setup_local.py \ - tier1/cluster/__init__.py \ - tier1/cib_resource/test_clone_unclone.py \ + tier0/lib/corosync/test_live.py \ + tier0/lib/corosync/test_node.py \ + tier0/lib/corosync/test_qdevice_client.py \ + tier0/lib/corosync/test_qdevice_net.py \ + tier0/lib/dr/__init__.py \ + tier0/lib/dr/test_facade.py \ + tier0/lib/file/test_instance.py \ + tier0/lib/file/test_raw_file.py \ + tier0/lib/file/test_toolbox.py \ + tier0/lib/__init__.py \ + tier0/lib/misc.py \ + tier0/lib/pacemaker/__init__.py \ + tier0/lib/pacemaker/test_live.py \ + tier0/lib/pacemaker/test_simulate.py \ + tier0/lib/pacemaker/test_state.py \ + tier0/lib/pacemaker/test_values.py \ + tier0/lib/test_env_cib.py \ + tier0/lib/test_env_corosync.py \ + tier0/lib/test_env.py \ + tier0/lib/test_external.py \ + tier0/lib/test_node_communication_format.py \ + tier0/lib/test_node_communication.py \ + tier0/lib/test_resource_agent.py \ + tier0/lib/test_sbd.py \ + tier0/lib/test_stonith_agent.py \ + tier0/lib/test_tools.py \ + tier0/lib/test_validate.py \ + tier0/lib/test_xml_tools.py \ + tier0/test_capabilities.py \ + tier0/test_host.py \ + tier1/cib_resource/common.py \ + tier1/cib_resource/__init__.py \ tier1/cib_resource/stonith_common.py \ - tier1/cib_resource/test_create.py \ tier1/cib_resource/test_bundle.py \ + tier1/cib_resource/test_clone_unclone.py \ + tier1/cib_resource/test_create.py \ + tier1/cib_resource/test_enable_disable.py \ + tier1/cib_resource/test_group_ungroup.py \ tier1/cib_resource/test_manage_unmanage.py \ tier1/cib_resource/test_operation_add.py \ - tier1/cib_resource/common.py \ tier1/cib_resource/test_stonith_create.py \ - tier1/cib_resource/test_group_ungroup.py \ tier1/cib_resource/test_stonith_enable_disable.py \ - tier1/cib_resource/test_enable_disable.py \ - tier1/cib_resource/__init__.py \ - tier1/__init__.py \ tier1/cluster/common.py \ + tier1/cluster/__init__.py \ + tier1/cluster/test_cib_push.py \ tier1/cluster/test_config_show.py \ tier1/cluster/test_config_update.py \ - tools/command_env/config_runner_cib.py \ - tools/command_env/config_runner_systemctl.py \ - tools/command_env/config_raw_file.py \ - tools/command_env/config_runner_booth.py \ - tools/command_env/config_runner.py \ - tools/command_env/config_http_status.py \ - tools/command_env/mock_node_communicator.py \ - tools/command_env/config_http_pcmk.py \ - tools/command_env/config_http.py \ - tools/command_env/config_corosync_conf.py \ - tools/command_env/mock_runner.py \ - tools/command_env/config_http_sbd.py \ - tools/command_env/config_http_booth.py \ - tools/command_env/config_fs.py \ - tools/command_env/config_runner_pcmk.py \ - tools/command_env/config.py \ - tools/command_env/mock_push_corosync_conf.py \ - tools/command_env/mock_raw_file.py \ - tools/command_env/mock_get_local_corosync_conf.py \ - tools/command_env/config_runner_sbd.py \ - tools/command_env/config_http_host.py \ - tools/command_env/config_http_corosync.py \ - tools/command_env/config_env.py \ - tools/command_env/config_http_files.py \ - tools/command_env/calls.py \ - tools/command_env/spy.py \ - tools/command_env/config_runner_corosync.py \ - tools/command_env/mock_push_cib.py \ - tools/command_env/tools.py \ - tools/command_env/assistant.py \ - tools/command_env/mock_fs.py \ - tools/command_env/__init__.py \ + tier1/cluster/test_setup_local.py \ + tier1/__init__.py \ + tier1/legacy/__init__.py \ + tier1/legacy/test_acl.py \ + tier1/legacy/test_alert.py \ + tier1/legacy/test_cluster.py \ + tier1/legacy/test_constraints.py \ + tier1/legacy/test_node.py \ + tier1/legacy/test_properties.py \ + tier1/legacy/test_resource.py \ + tier1/legacy/test_rule.py \ + tier1/legacy/test_stonith.py \ + tier1/legacy/test_utils.py \ + tier1/test_booth.py \ + tier1/test_cib_options.py \ + tier1/test_cluster_pcmk_remote.py \ + tier1/test_misc.py \ + tier1/test_quorum.py \ + tier1/test_status.py \ + tier1/test_tag.py \ tools/assertions.py \ - tools/integration_lib.py \ - tools/color_text_runner/writer.py \ - tools/color_text_runner/result.py \ - tools/color_text_runner/__init__.py \ - tools/color_text_runner/format.py \ - tools/custom_mock.py \ - tools/misc.py \ - tools/cib.py \ - tools/case_analysis.py \ - tools/fixture.py \ - tools/xml.py \ - tools/fixture_cib.py \ - tools/bin_mock/pcmk/crm_resource.py \ + tools/bin_mock/__init__.py \ tools/bin_mock/pcmk/crm_resource.d/list_agents_ocf__heartbeat \ tools/bin_mock/pcmk/crm_resource.d/list_agents_ocf__pacemaker \ tools/bin_mock/pcmk/crm_resource.d/list_agents_stonith \ @@ -334,58 +340,52 @@ EXTRA_DIST = \ tools/bin_mock/pcmk/crm_resource.d/stonith__fence_scsi_metadata.xml \ tools/bin_mock/pcmk/crm_resource.d/stonith__fence_xvm_metadata.xml \ tools/bin_mock/pcmk/crm_resource.d/systemd__test@a__b_metadata.xml \ - tools/bin_mock/__init__.py \ + tools/bin_mock/pcmk/crm_resource.py \ + tools/case_analysis.py \ + tools/check/__init__.py \ + tools/check/test_misc.py \ + tools/cib.py \ + tools/color_text_runner/format.py \ + tools/color_text_runner/__init__.py \ + tools/color_text_runner/result.py \ + tools/color_text_runner/writer.py \ + tools/command_env/assistant.py \ + tools/command_env/calls.py \ + tools/command_env/config_corosync_conf.py \ + tools/command_env/config_env.py \ + tools/command_env/config_fs.py \ + tools/command_env/config_http_booth.py \ + tools/command_env/config_http_corosync.py \ + tools/command_env/config_http_files.py \ + tools/command_env/config_http_host.py \ + tools/command_env/config_http_pcmk.py \ + tools/command_env/config_http.py \ + tools/command_env/config_http_sbd.py \ + tools/command_env/config_http_status.py \ + tools/command_env/config.py \ + tools/command_env/config_raw_file.py \ + tools/command_env/config_runner_booth.py \ + tools/command_env/config_runner_cib.py \ + tools/command_env/config_runner_corosync.py \ + tools/command_env/config_runner_pcmk.py \ + tools/command_env/config_runner.py \ + tools/command_env/config_runner_sbd.py \ + tools/command_env/config_runner_systemctl.py \ + tools/command_env/__init__.py \ + tools/command_env/mock_fs.py \ + tools/command_env/mock_get_local_corosync_conf.py \ + tools/command_env/mock_node_communicator.py \ + tools/command_env/mock_push_cib.py \ + tools/command_env/mock_push_corosync_conf.py \ + tools/command_env/mock_raw_file.py \ + tools/command_env/mock_runner.py \ + tools/command_env/spy.py \ + tools/command_env/tools.py \ + tools/custom_mock.py \ + tools/fixture_cib.py \ + tools/fixture.py \ tools/__init__.py \ + tools/integration_lib.py \ + tools/misc.py \ tools/pcs_runner.py \ - tools/check/test_misc.py \ - tools/check/__init__.py \ - resources/corosync-3nodes-qdevice.conf \ - resources/crm_mon.minimal.xml \ - resources/capabilities.xml \ - resources/transitions02.xml \ - resources/cib-empty-3.4.xml \ - resources/resource_agent_ocf_pacemaker_booth-site.xml \ - resources/cluster.conf \ - resources/cib-empty-3.5.xml \ - resources/corosync-some-node-names.conf \ - resources/corosync-3nodes-qdevice-heuristics.conf \ - resources/resource_agent_ocf_heartbeat_dummy_utf8.xml \ - resources/stonith_agent_fence_unfencing.xml \ - resources/cib-large.xml \ - resources/cib-empty-withnodes.xml \ - resources/cib-empty-3.3.xml \ - resources/crm_mon_rng/fence-event-2.0.rng \ - resources/crm_mon_rng/crm_mon-2.3.rng \ - resources/crm_mon_rng/crm_mon.rng \ - resources/resource_agent_ocf_pacemaker_remote.xml \ - resources/corosync-no-node-names.conf \ - resources/corosync.conf \ - resources/cib-empty-2.3-withnodes.xml \ - resources/cib-empty-1.2.xml \ - resources/cib-largefile.xml \ - resources/cib-empty-with3nodes.xml \ - resources/cib-empty-3.2.xml \ - resources/qdevice-certs/qdevice-cert-request.crq \ - resources/qdevice-certs/qnetd-cacert.crt \ - resources/qdevice-certs/signed-certificate.crt \ - resources/qdevice-certs/final-certificate.pk12 \ - resources/resource_agent_ocf_heartbeat_dummy_insane_action.xml \ - resources/cib-empty-2.8.xml \ - resources/cib-empty-2.9.xml \ - resources/fenced_metadata.xml \ - resources/cib-empty.xml \ - resources/corosync-qdevice.conf \ - resources/stonith_agent_fence_simple.xml \ - resources/stonith_agent_fence_custom_actions.xml \ - resources/resource_agent_ocf_heartbeat_dummy.xml \ - resources/corosync-3nodes.conf \ - resources/cib-empty-2.6.xml \ - resources/resource_agent_ocf_heartbeat_ipaddr2.xml \ - resources/cib-empty-2.5.xml \ - resources/cib-empty-2.0.xml \ - resources/cib-tags.xml \ - resources/cib-empty-2.5-withnodes.xml \ - resources/cib-empty-3.1.xml \ - resources/transitions01.xml \ - __init__.py \ - suite.py + tools/xml.py diff --git a/pcs_test/settings.py.in b/pcs_test/settings.py.in index 8929cefa0..f56350e41 100644 --- a/pcs_test/settings.py.in +++ b/pcs_test/settings.py.in @@ -1,2 +1 @@ pacemaker_version_rng = "@PCMK_SCHEMA_DIR@/versions.rng" -ocf_root = "@OCFROOT@" diff --git a/pcs_test/tier1/test_booth.py b/pcs_test/tier1/test_booth.py index af5623ce3..28a314c51 100644 --- a/pcs_test/tier1/test_booth.py +++ b/pcs_test/tier1/test_booth.py @@ -1,16 +1,16 @@ import os from textwrap import dedent -from unittest import mock, skipUnless, TestCase +from unittest import mock, TestCase from pcs.cli.booth import command as booth_cmd -from pcs_test import settings from pcs_test.tools.assertions import AssertPcsMixin from pcs_test.tools.misc import ( get_test_resource as rc, get_tmp_dir, get_tmp_file, outdent, + skip_unless_booth_resource_agent_installed, write_file_to_tmpfile, ) from pcs_test.tools.pcs_runner import PcsRunner @@ -18,15 +18,6 @@ EMPTY_CIB = rc("cib-empty.xml") -BOOTH_RESOURCE_AGENT_INSTALLED = os.path.exists( - os.path.join(settings.ocf_root, "pacemaker/booth-site") -) -need_booth_resource_agent = skipUnless( - BOOTH_RESOURCE_AGENT_INSTALLED, - "test requires resource agent ocf:pacemaker:booth-site" - " which is not installed", -) - class BoothMixinNoFiles(AssertPcsMixin): def setUp(self): @@ -350,7 +341,7 @@ class RemoveTicketTest(DeleteRemoveTicketMixin, BoothTest): command = "remove" -@need_booth_resource_agent +@skip_unless_booth_resource_agent_installed() class CreateTest(BoothMixinNoFiles, TestCase): def test_not_enough_args(self): self.assert_pcs_fail( @@ -421,12 +412,12 @@ def test_failed_when_no_booth_configuration_created(self): ) -@need_booth_resource_agent +@skip_unless_booth_resource_agent_installed() class DeleteTest(DeleteRemoveTestMixin, TestCase): command = "delete" -@need_booth_resource_agent +@skip_unless_booth_resource_agent_installed() class RemoveTest(DeleteRemoveTestMixin, TestCase): command = "remove" diff --git a/pcs_test/tools/misc.py b/pcs_test/tools/misc.py index 7941378bf..ca2b9bbfd 100644 --- a/pcs_test/tools/misc.py +++ b/pcs_test/tools/misc.py @@ -280,6 +280,26 @@ def skip_unless_root(): return skipUnless(os.getuid() == 0, "Root user required") +@lru_cache() +def _is_booth_resource_agent_installed(): + output, dummy_stderr, dummy_retval = runner.run( + [ + os.path.join(settings.pacemaker_binaries, "crm_resource"), + "--list-agents", + "ocf:pacemaker", + ] + ) + return "booth-site" in output + + +def skip_unless_booth_resource_agent_installed(): + return skipUnless( + _is_booth_resource_agent_installed(), + "test requires resource agent ocf:pacemaker:booth-site" + " which is not installed", + ) + + def create_patcher(target_prefix_or_module): """ Return function for patching tests with preconfigured target prefix diff --git a/pcsd/Makefile.am b/pcsd/Makefile.am index ae639410b..ea7292e51 100644 --- a/pcsd/Makefile.am +++ b/pcsd/Makefile.am @@ -1,11 +1,23 @@ EXTRA_DIST = \ - test/test_resource.rb test/test_cluster_entity.rb \ - test/cluster.conf test/pcs_settings.conf test/test_pcs.rb \ - test/corosync.conf test/pcsd_test_utils.rb test/test_cfgsync.rb \ - test/test_all_suite.rb test/known-hosts \ - test/test_cluster.rb test/cib1.xml test/crm1.xml test/test_config.rb \ + pam/pcsd.debian \ + pam/pcsd.fedora \ + test/cib1.xml \ + test/cluster.conf \ + test/corosync.conf \ + test/crm1.xml \ + test/known-hosts \ + test/pcsd_test_utils.rb \ + test/pcs_settings.conf \ + test/test_all_suite.rb \ + test/test_auth.rb \ + test/test_cfgsync.rb \ + test/test_cluster_entity.rb \ + test/test_cluster.rb \ + test/test_config.rb \ test/test_corosyncconf.rb \ - test/test_permissions.rb test/test_auth.rb pam/pcsd.fedora pam/pcsd.debian + test/test_pcs.rb \ + test/test_permissions.rb \ + test/test_resource.rb MAINTAINERCLEANFILES = Makefile.in @@ -27,28 +39,28 @@ pcsd_SCRIPTS = \ pcsd-cli.rb dist_pcsd_DATA = \ - corosyncconf.rb \ - pcsd_exchange_format.rb \ + api_v1.rb \ + auth.rb \ + bootstrap.rb \ capabilities.rng \ capabilities.xml \ - pcsd_remove_file.rb \ cfgsync.rb \ - cluster.rb \ cluster_entity.rb \ - api_v1.rb \ - pcsd_file.rb \ - rserver.rb \ - resource.rb \ + cluster.rb \ + config.rb \ + corosyncconf.rb \ fenceagent.rb \ - auth.rb \ - remote.rb \ - permissions.rb \ - bootstrap.rb \ pcsd_action_command.rb \ - config.rb \ - pcs.rb \ + pcsd-cli-main.rb \ + pcsd_exchange_format.rb \ + pcsd_file.rb \ pcsd.rb \ - pcsd-cli-main.rb + pcsd_remove_file.rb \ + pcs.rb \ + permissions.rb \ + remote.rb \ + resource.rb \ + rserver.rb pcsd_DATA = \ settings.rb @@ -56,18 +68,18 @@ pcsd_DATA = \ pcsdviewsdir = ${pcsddir}/views dist_pcsdviews_DATA = \ - views/_permissions_cluster.erb \ - views/manage.erb \ - views/permissions.erb \ - views/login.erb \ - views/_dialogs.erb \ - views/_resource_list.erb \ + views/_acls.erb \ + views/_cluster_list.erb \ views/_configure.erb \ + views/_dialogs.erb \ + views/login.erb \ views/main.erb \ - views/_acls.erb \ - views/_resource.erb \ + views/manage.erb \ views/nodes.erb \ - views/_cluster_list.erb + views/_permissions_cluster.erb \ + views/permissions.erb \ + views/_resource.erb \ + views/_resource_list.erb pcsdpubdir = ${pcsddir}/public dist_pcsdpub_DATA = \ @@ -75,70 +87,70 @@ dist_pcsdpub_DATA = \ pcsdpubjsdir = ${pcsddir}/public/js dist_pcsdpubjs_DATA = \ - public/js/jquery-1.9.1.min.js \ - public/js/node-remove.js \ - public/js/cluster-destroy.js \ public/js/api.js \ + public/js/cluster-destroy.js \ + public/js/cluster-setup.js \ public/js/ember-1.4.0.js \ - public/js/node-add.js \ public/js/handlebars-v1.2.1.js \ - public/js/tools.js \ - public/js/cluster-setup.js \ - public/js/pcsd.js \ + public/js/jquery-1.9.1.min.js \ public/js/jquery-ui-1.10.1.custom.min.js \ - public/js/nodes-ember.js + public/js/node-add.js \ + public/js/node-remove.js \ + public/js/nodes-ember.js \ + public/js/pcsd.js \ + public/js/tools.js pcsdpubjsdevdir = ${pcsddir}/public/js/dev dist_pcsdpubjsdev_DATA = \ - public/js/dev/tests-cluster-setup.js \ - public/js/dev/cluster_status.mock.js \ - public/js/dev/tests-node-add.js \ - public/js/dev/tests-node-remove.js \ public/js/dev/clusters-overview-mock.js \ + public/js/dev/cluster_status.mock.js \ + public/js/dev/dev.js \ public/js/dev/tests-cluster-destroy.js \ - public/js/dev/dev.js + public/js/dev/tests-cluster-setup.js \ + public/js/dev/tests-node-add.js \ + public/js/dev/tests-node-remove.js pcsdpubimagesdir = ${pcsddir}/public/images dist_pcsdpubimages_DATA = \ - public/images/HAM-logo.png \ - public/images/favicon.png \ - public/images/Shell_bg.png \ public/images/action-icons.png \ - public/images/field_bg.png + public/images/favicon.png \ + public/images/field_bg.png \ + public/images/HAM-logo.png \ + public/images/Shell_bg.png pcsdpubcssdir = ${pcsddir}/public/css dist_pcsdpubcss_DATA = \ + public/css/jquery-ui-1.10.1.custom.css \ public/css/liberation.css \ public/css/overpass.css \ - public/css/style.css \ - public/css/jquery-ui-1.10.1.custom.css + public/css/style.css pcsdpubcssimgsdir = ${pcsddir}/public/css/images dist_pcsdpubcssimgs_DATA= \ - public/css/images/ui-bg_inset-soft_30_f58400_1x100.png \ - public/css/images/ui-icons_cccccc_256x240.png \ - public/css/images/ui-bg_inset-soft_25_000000_1x100.png \ - public/css/images/ui-bg_glass_40_0078a3_1x400.png \ - public/css/images/ui-icons_4b8e0b_256x240.png \ - public/css/images/ui-bg_flat_50_5c5c5c_40x100.png \ - public/css/images/ui-icons_a83300_256x240.png \ - public/css/images/ui-icons_222222_256x240.png \ public/css/images/animated-overlay.gif \ - public/css/images/ui-bg_highlight-soft_80_eeeeee_1x100.png \ - public/css/images/ui-bg_glass_40_ffc73d_1x400.png \ + public/css/images/pbar-ani.gif \ public/css/images/ui-bg_flat_30_cccccc_40x100.png \ - public/css/images/ui-bg_gloss-wave_25_333333_500x100.png \ + public/css/images/ui-bg_flat_50_5c5c5c_40x100.png \ public/css/images/ui-bg_glass_20_555555_1x400.png \ - public/css/images/pbar-ani.gif \ + public/css/images/ui-bg_glass_40_0078a3_1x400.png \ + public/css/images/ui-bg_glass_40_ffc73d_1x400.png \ + public/css/images/ui-bg_gloss-wave_25_333333_500x100.png \ + public/css/images/ui-bg_highlight-soft_80_eeeeee_1x100.png \ + public/css/images/ui-bg_inset-soft_25_000000_1x100.png \ + public/css/images/ui-bg_inset-soft_30_f58400_1x100.png \ + public/css/images/ui-icons_222222_256x240.png \ + public/css/images/ui-icons_4b8e0b_256x240.png \ + public/css/images/ui-icons_a83300_256x240.png \ + public/css/images/ui-icons_cccccc_256x240.png \ public/css/images/ui-icons_ffffff_256x240.png pcsd_fonts = \ - LiberationSans-Regular.ttf;LiberationSans:style=Regular \ - LiberationSans-Bold.ttf;LiberationSans:style=Bold \ LiberationSans-BoldItalic.ttf;LiberationSans:style=BoldItalic \ + LiberationSans-Bold.ttf;LiberationSans:style=Bold \ LiberationSans-Italic.ttf;LiberationSans:style=Italic \ - Overpass-Regular.ttf;Overpass:style=Regular \ - Overpass-Bold.ttf;Overpass:style=Bold + LiberationSans-Regular.ttf;LiberationSans:style=Regular \ + Overpass-Bold.ttf;Overpass:style=Bold \ + Overpass-Regular.ttf;Overpass:style=Regular clean-local: rm -f test/*.tmp diff --git a/pcsd/test/test_cfgsync.rb b/pcsd/test/test_cfgsync.rb index 3ea83b28a..8fdaff191 100644 --- a/pcsd/test/test_cfgsync.rb +++ b/pcsd/test/test_cfgsync.rb @@ -318,20 +318,26 @@ def test_paused() assert(!Cfgsync::ConfigSyncControl.sync_thread_disabled?()) assert(Cfgsync::ConfigSyncControl.sync_thread_allowed?()) - assert(Cfgsync::ConfigSyncControl.sync_thread_pause(2)) + start = Time::now().to_i + assert(Cfgsync::ConfigSyncControl.sync_thread_pause(10)) assert(Cfgsync::ConfigSyncControl.sync_thread_paused?()) assert(!Cfgsync::ConfigSyncControl.sync_thread_disabled?()) assert(!Cfgsync::ConfigSyncControl.sync_thread_allowed?()) - sleep(4) + now = Time::now().to_i + # sleep for the rest of the pause time and a bit more + sleep(10 - (start - now) + 3) assert(!Cfgsync::ConfigSyncControl.sync_thread_paused?()) assert(!Cfgsync::ConfigSyncControl.sync_thread_disabled?()) assert(Cfgsync::ConfigSyncControl.sync_thread_allowed?()) - assert(Cfgsync::ConfigSyncControl.sync_thread_pause('2')) + start = Time::now().to_i + assert(Cfgsync::ConfigSyncControl.sync_thread_pause('10')) assert(Cfgsync::ConfigSyncControl.sync_thread_paused?()) assert(!Cfgsync::ConfigSyncControl.sync_thread_disabled?()) assert(!Cfgsync::ConfigSyncControl.sync_thread_allowed?()) - sleep(4) + now = Time::now().to_i + # sleep for the rest of the pause time and a bit more + sleep(10 - (start - now) + 3) assert(!Cfgsync::ConfigSyncControl.sync_thread_paused?()) assert(!Cfgsync::ConfigSyncControl.sync_thread_disabled?()) assert(Cfgsync::ConfigSyncControl.sync_thread_allowed?())