puppet 6.11.1-x64-mingw32 → 6.16.0-x64-mingw32
Sign up to get free protection for your applications and to get access to all the features.
Potentially problematic release.
This version of puppet might be problematic. Click here for more details.
- checksums.yaml +4 -4
- data/CODEOWNERS +3 -8
- data/CONTRIBUTING.md +7 -13
- data/Gemfile +1 -0
- data/Gemfile.lock +39 -36
- data/README.md +17 -24
- data/ext/build_defaults.yaml +1 -0
- data/ext/project_data.yaml +1 -1
- data/ext/windows/service/daemon.rb +25 -20
- data/lib/puppet.rb +52 -13
- data/lib/puppet/agent.rb +20 -14
- data/lib/puppet/application/agent.rb +12 -14
- data/lib/puppet/application/describe.rb +7 -5
- data/lib/puppet/application/device.rb +2 -2
- data/lib/puppet/application/filebucket.rb +19 -15
- data/lib/puppet/application/plugin.rb +1 -0
- data/lib/puppet/application/resource.rb +1 -1
- data/lib/puppet/application/ssl.rb +4 -4
- data/lib/puppet/concurrent.rb +2 -0
- data/lib/puppet/concurrent/lock.rb +16 -0
- data/lib/puppet/concurrent/synchronized.rb +15 -0
- data/lib/puppet/concurrent/thread_local_singleton.rb +14 -0
- data/lib/puppet/configurer.rb +85 -83
- data/lib/puppet/configurer/plugin_handler.rb +10 -1
- data/lib/puppet/context/trusted_information.rb +14 -8
- data/lib/puppet/daemon.rb +13 -27
- data/lib/puppet/defaults.rb +158 -40
- data/lib/puppet/environments.rb +30 -20
- data/lib/puppet/error.rb +9 -1
- data/lib/puppet/face/facts.rb +8 -5
- data/lib/puppet/face/help.rb +29 -3
- data/lib/puppet/face/module/search.rb +5 -0
- data/lib/puppet/face/plugin.rb +2 -2
- data/lib/puppet/file_serving/http_metadata.rb +1 -1
- data/lib/puppet/file_system/file_impl.rb +13 -9
- data/lib/puppet/file_system/memory_file.rb +6 -0
- data/lib/puppet/file_system/memory_impl.rb +13 -0
- data/lib/puppet/file_system/uniquefile.rb +4 -0
- data/lib/puppet/file_system/windows.rb +7 -10
- data/lib/puppet/forge.rb +3 -3
- data/lib/puppet/forge/errors.rb +2 -2
- data/lib/puppet/forge/repository.rb +31 -86
- data/lib/puppet/functions/call.rb +1 -1
- data/lib/puppet/functions/camelcase.rb +2 -2
- data/lib/puppet/functions/epp.rb +4 -4
- data/lib/puppet/functions/eyaml_lookup_key.rb +13 -8
- data/lib/puppet/functions/filter.rb +1 -0
- data/lib/puppet/functions/find_file.rb +9 -9
- data/lib/puppet/functions/find_template.rb +63 -0
- data/lib/puppet/functions/inline_epp.rb +5 -5
- data/lib/puppet/functions/reduce.rb +2 -4
- data/lib/puppet/http.rb +7 -0
- data/lib/puppet/http/client.rb +341 -54
- data/lib/puppet/http/errors.rb +2 -0
- data/lib/puppet/http/external_client.rb +90 -0
- data/lib/puppet/http/redirector.rb +34 -0
- data/lib/puppet/http/resolver.rb +57 -1
- data/lib/puppet/http/resolver/server_list.rb +98 -0
- data/lib/puppet/http/resolver/settings.rb +23 -2
- data/lib/puppet/http/resolver/srv.rb +36 -4
- data/lib/puppet/http/response.rb +68 -1
- data/lib/puppet/http/retry_after_handler.rb +39 -0
- data/lib/puppet/http/service.rb +179 -3
- data/lib/puppet/http/service/ca.rb +84 -21
- data/lib/puppet/http/service/compiler.rb +319 -0
- data/lib/puppet/http/service/file_server.rb +206 -0
- data/lib/puppet/http/service/report.rb +66 -0
- data/lib/puppet/http/session.rb +106 -31
- data/lib/puppet/indirector/catalog/compiler.rb +10 -0
- data/lib/puppet/indirector/catalog/rest.rb +34 -0
- data/lib/puppet/indirector/facts/rest.rb +42 -0
- data/lib/puppet/indirector/file_bucket_file/file.rb +1 -1
- data/lib/puppet/indirector/file_bucket_file/rest.rb +48 -0
- data/lib/puppet/indirector/file_content/http.rb +5 -0
- data/lib/puppet/indirector/file_content/rest.rb +30 -0
- data/lib/puppet/indirector/file_metadata/http.rb +4 -4
- data/lib/puppet/indirector/file_metadata/rest.rb +52 -0
- data/lib/puppet/indirector/json.rb +1 -1
- data/lib/puppet/indirector/msgpack.rb +1 -1
- data/lib/puppet/indirector/node/rest.rb +24 -0
- data/lib/puppet/indirector/report/rest.rb +19 -0
- data/lib/puppet/indirector/report/yaml.rb +23 -0
- data/lib/puppet/indirector/rest.rb +12 -0
- data/lib/puppet/indirector/status/rest.rb +18 -0
- data/lib/puppet/loaders.rb +6 -0
- data/lib/puppet/metatype/manager.rb +80 -80
- data/lib/puppet/network/http/base_pool.rb +19 -1
- data/lib/puppet/network/http/compression.rb +7 -0
- data/lib/puppet/network/http/connection.rb +6 -0
- data/lib/puppet/network/http/connection_adapter.rb +182 -0
- data/lib/puppet/network/http/nocache_pool.rb +2 -0
- data/lib/puppet/network/http/pool.rb +13 -6
- data/lib/puppet/network/http_pool.rb +2 -1
- data/lib/puppet/node/environment.rb +24 -8
- data/lib/puppet/pal/catalog_compiler.rb +5 -0
- data/lib/puppet/pal/pal_impl.rb +9 -29
- data/lib/puppet/parser/ast/pops_bridge.rb +6 -11
- data/lib/puppet/parser/compiler.rb +42 -32
- data/lib/puppet/parser/functions.rb +18 -13
- data/lib/puppet/parser/functions/epp.rb +3 -3
- data/lib/puppet/parser/functions/filter.rb +1 -0
- data/lib/puppet/parser/functions/inline_epp.rb +5 -5
- data/lib/puppet/pops/evaluator/access_operator.rb +2 -2
- data/lib/puppet/pops/evaluator/evaluator_impl.rb +1 -1
- data/lib/puppet/pops/evaluator/runtime3_support.rb +1 -1
- data/lib/puppet/pops/loader/puppet_plan_instantiator.rb +12 -3
- data/lib/puppet/pops/loaders.rb +7 -5
- data/lib/puppet/pops/lookup/invocation.rb +10 -3
- data/lib/puppet/pops/model/pn_transformer.rb +5 -9
- data/lib/puppet/pops/parser/evaluating_parser.rb +8 -11
- data/lib/puppet/pops/serialization/json_path.rb +3 -3
- data/lib/puppet/pops/time/timespan.rb +3 -5
- data/lib/puppet/pops/types/p_object_type_extension.rb +10 -0
- data/lib/puppet/pops/types/string_converter.rb +6 -9
- data/lib/puppet/pops/types/type_calculator.rb +30 -10
- data/lib/puppet/pops/types/type_formatter.rb +9 -11
- data/lib/puppet/pops/types/type_parser.rb +3 -3
- data/lib/puppet/pops/validation/checker4_0.rb +1 -1
- data/lib/puppet/pops/validation/tasks_checker.rb +5 -1
- data/lib/puppet/provider/aix_object.rb +4 -2
- data/lib/puppet/provider/group/aix.rb +1 -0
- data/lib/puppet/provider/group/groupadd.rb +57 -24
- data/lib/puppet/provider/group/windows_adsi.rb +3 -3
- data/lib/puppet/provider/package/aix.rb +17 -2
- data/lib/puppet/provider/package/apt.rb +78 -4
- data/lib/puppet/provider/package/dnfmodule.rb +69 -15
- data/lib/puppet/provider/package/dpkg.rb +14 -7
- data/lib/puppet/provider/package/fink.rb +20 -3
- data/lib/puppet/provider/package/gem.rb +41 -7
- data/lib/puppet/provider/package/openbsd.rb +13 -1
- data/lib/puppet/provider/package/pacman.rb +2 -5
- data/lib/puppet/provider/package/pip.rb +143 -48
- data/lib/puppet/provider/package/pip3.rb +0 -2
- data/lib/puppet/provider/package/pkg.rb +18 -5
- data/lib/puppet/provider/package/pkgdmg.rb +1 -1
- data/lib/puppet/provider/package/pkgng.rb +16 -4
- data/lib/puppet/provider/package/portage.rb +5 -5
- data/lib/puppet/provider/package/puppet_gem.rb +6 -2
- data/lib/puppet/provider/package/rpm.rb +6 -213
- data/lib/puppet/provider/package/yum.rb +108 -24
- data/lib/puppet/provider/package/zypper.rb +59 -1
- data/lib/puppet/provider/package_targetable.rb +5 -4
- data/lib/puppet/provider/service/systemd.rb +23 -5
- data/lib/puppet/provider/user/aix.rb +1 -0
- data/lib/puppet/provider/user/directoryservice.rb +30 -5
- data/lib/puppet/provider/user/hpux.rb +1 -1
- data/lib/puppet/provider/user/useradd.rb +11 -8
- data/lib/puppet/reports/http.rb +13 -9
- data/lib/puppet/reports/store.rb +1 -1
- data/lib/puppet/resource/type_collection.rb +20 -16
- data/lib/puppet/runtime.rb +32 -1
- data/lib/puppet/settings.rb +4 -0
- data/lib/puppet/settings/http_extra_headers_setting.rb +25 -0
- data/lib/puppet/ssl.rb +1 -0
- data/lib/puppet/ssl/certificate.rb +2 -1
- data/lib/puppet/ssl/host.rb +4 -4
- data/lib/puppet/ssl/oids.rb +1 -0
- data/lib/puppet/ssl/ssl_provider.rb +20 -0
- data/lib/puppet/ssl/state_machine.rb +81 -35
- data/lib/puppet/ssl/verifier_adapter.rb +9 -1
- data/lib/puppet/test/test_helper.rb +7 -1
- data/lib/puppet/transaction.rb +33 -11
- data/lib/puppet/transaction/report.rb +2 -2
- data/lib/puppet/transaction/resource_harness.rb +1 -1
- data/lib/puppet/type.rb +7 -2
- data/lib/puppet/type/file.rb +13 -0
- data/lib/puppet/type/file/data_sync.rb +5 -1
- data/lib/puppet/type/file/source.rb +49 -58
- data/lib/puppet/type/group.rb +5 -4
- data/lib/puppet/type/package.rb +102 -10
- data/lib/puppet/type/service.rb +6 -8
- data/lib/puppet/type/user.rb +6 -30
- data/lib/puppet/util.rb +34 -11
- data/lib/puppet/util/at_fork.rb +1 -1
- data/lib/puppet/util/autoload.rb +4 -18
- data/lib/puppet/util/instance_loader.rb +14 -10
- data/lib/puppet/util/log/destinations.rb +2 -11
- data/lib/puppet/util/logging.rb +30 -18
- data/lib/puppet/util/package/version/debian.rb +175 -0
- data/lib/puppet/util/package/version/gem.rb +15 -0
- data/lib/puppet/util/package/version/pip.rb +167 -0
- data/lib/puppet/util/package/version/range.rb +53 -0
- data/lib/puppet/util/package/version/range/eq.rb +14 -0
- data/lib/puppet/util/package/version/range/gt.rb +14 -0
- data/lib/puppet/util/package/version/range/gt_eq.rb +14 -0
- data/lib/puppet/util/package/version/range/lt.rb +14 -0
- data/lib/puppet/util/package/version/range/lt_eq.rb +14 -0
- data/lib/puppet/util/package/version/range/min_max.rb +21 -0
- data/lib/puppet/util/package/version/range/simple.rb +11 -0
- data/lib/puppet/util/package/version/rpm.rb +73 -0
- data/lib/puppet/util/pidlock.rb +36 -10
- data/lib/puppet/util/platform.rb +5 -0
- data/lib/puppet/util/plist.rb +6 -0
- data/lib/puppet/util/rpm_compare.rb +193 -0
- data/lib/puppet/util/storage.rb +0 -1
- data/lib/puppet/util/windows/adsi.rb +50 -20
- data/lib/puppet/util/windows/process.rb +15 -14
- data/lib/puppet/util/windows/security.rb +1 -0
- data/lib/puppet/util/windows/sid.rb +3 -3
- data/lib/puppet/util/yaml.rb +1 -1
- data/lib/puppet/version.rb +1 -1
- data/lib/puppet/x509/cert_provider.rb +9 -5
- data/locales/puppet.pot +640 -521
- data/man/man5/puppet.conf.5 +88 -9
- data/man/man8/puppet-agent.8 +6 -6
- data/man/man8/puppet-apply.8 +1 -1
- data/man/man8/puppet-catalog.8 +1 -1
- data/man/man8/puppet-config.8 +1 -1
- data/man/man8/puppet-describe.8 +1 -1
- data/man/man8/puppet-device.8 +2 -2
- data/man/man8/puppet-doc.8 +1 -1
- data/man/man8/puppet-epp.8 +1 -1
- data/man/man8/puppet-facts.8 +1 -1
- data/man/man8/puppet-filebucket.8 +17 -2
- data/man/man8/puppet-generate.8 +1 -1
- data/man/man8/puppet-help.8 +6 -3
- data/man/man8/puppet-key.8 +1 -1
- data/man/man8/puppet-lookup.8 +1 -1
- data/man/man8/puppet-man.8 +1 -1
- data/man/man8/puppet-module.8 +4 -1
- data/man/man8/puppet-node.8 +1 -1
- data/man/man8/puppet-parser.8 +1 -1
- data/man/man8/puppet-plugin.8 +1 -1
- data/man/man8/puppet-report.8 +1 -1
- data/man/man8/puppet-resource.8 +1 -1
- data/man/man8/puppet-script.8 +1 -1
- data/man/man8/puppet-ssl.8 +2 -2
- data/man/man8/puppet-status.8 +1 -1
- data/man/man8/puppet.8 +2 -2
- data/spec/fixtures/ssl/unknown-127.0.0.1-key.pem +67 -0
- data/spec/fixtures/ssl/unknown-127.0.0.1.pem +48 -0
- data/spec/fixtures/ssl/unknown-ca-key.pem +67 -0
- data/spec/fixtures/ssl/unknown-ca.pem +59 -0
- data/spec/fixtures/unit/forge/bacula.json +76 -0
- data/spec/fixtures/unit/provider/package/dnfmodule/{dnf-module-list-installed.txt → dnf-module-list.txt} +8 -0
- data/spec/fixtures/unit/provider/package/pkgng/pkg.version +2 -0
- data/spec/fixtures/unit/provider/package/yum/yum-check-update-subscription-manager.txt +9 -0
- data/spec/fixtures/unit/provider/package/zypper/zypper-search-uninstalled.out +13 -0
- data/spec/fixtures/unit/provider/service/systemd/list_unit_files_services +9 -0
- data/spec/fixtures/vcr/cassettes/Puppet_Type_File/when_sourcing/from_http/using_md5/should_fetch_if_not_on_the_local_disk.yml +1 -102
- data/spec/fixtures/vcr/cassettes/Puppet_Type_File/when_sourcing/from_http/using_md5/should_not_update_if_content_on_disk_is_up-to-date.yml +1 -106
- data/spec/fixtures/vcr/cassettes/Puppet_Type_File/when_sourcing/from_http/using_md5/should_update_if_content_differs_on_disk.yml +1 -106
- data/spec/fixtures/vcr/cassettes/Puppet_Type_File/when_sourcing/from_http/using_mtime/should_fetch_if_mtime_is_older_on_disk.yml +1 -102
- data/spec/fixtures/vcr/cassettes/Puppet_Type_File/when_sourcing/from_http/using_mtime/should_fetch_if_no_header_specified.yml +1 -98
- data/spec/fixtures/vcr/cassettes/Puppet_Type_File/when_sourcing/from_http/using_mtime/should_fetch_if_not_on_the_local_disk.yml +1 -102
- data/spec/fixtures/vcr/cassettes/Puppet_Type_File/when_sourcing/from_http/using_mtime/should_not_update_if_mtime_is_newer_on_disk.yml +1 -102
- data/spec/integration/application/agent_spec.rb +394 -0
- data/spec/integration/application/apply_spec.rb +132 -3
- data/spec/integration/application/filebucket_spec.rb +190 -0
- data/spec/integration/application/plugin_spec.rb +73 -0
- data/spec/integration/configurer_spec.rb +26 -7
- data/spec/integration/http/client_spec.rb +154 -0
- data/spec/integration/indirector/facts/facter_spec.rb +4 -0
- data/spec/integration/indirector/report/yaml.rb +83 -0
- data/spec/integration/module_tool/forge_spec.rb +51 -0
- data/spec/integration/network/http_pool_spec.rb +76 -20
- data/spec/integration/node/environment_spec.rb +15 -0
- data/spec/integration/util/windows/adsi_spec.rb +6 -1
- data/spec/lib/puppet/test_ca.rb +2 -2
- data/spec/lib/puppet_spec/https.rb +20 -9
- data/spec/lib/puppet_spec/puppetserver.rb +119 -0
- data/spec/shared_contexts/https.rb +29 -0
- data/spec/spec_helper.rb +6 -2
- data/spec/unit/agent_spec.rb +80 -26
- data/spec/unit/application/agent_spec.rb +9 -5
- data/spec/unit/application/apply_spec.rb +2 -12
- data/spec/unit/application/describe_spec.rb +88 -50
- data/spec/unit/application/device_spec.rb +2 -2
- data/spec/unit/application/filebucket_spec.rb +22 -2
- data/spec/unit/application/resource_spec.rb +2 -2
- data/spec/unit/concurrent/lock_spec.rb +29 -0
- data/spec/unit/configurer/fact_handler_spec.rb +0 -4
- data/spec/unit/configurer/plugin_handler_spec.rb +36 -19
- data/spec/unit/configurer_spec.rb +400 -406
- data/spec/unit/context/trusted_information_spec.rb +17 -0
- data/spec/unit/daemon_spec.rb +5 -64
- data/spec/unit/defaults_spec.rb +38 -4
- data/spec/unit/environments_spec.rb +65 -28
- data/spec/unit/face/facts_spec.rb +24 -20
- data/spec/unit/face/module/search_spec.rb +17 -0
- data/spec/unit/face/plugin_spec.rb +12 -10
- data/spec/unit/file_system/uniquefile_spec.rb +11 -0
- data/spec/unit/file_system_spec.rb +26 -2
- data/spec/unit/forge/errors_spec.rb +1 -1
- data/spec/unit/forge/forge_spec.rb +12 -54
- data/spec/unit/forge/module_release_spec.rb +19 -6
- data/spec/unit/forge/repository_spec.rb +63 -157
- data/spec/unit/forge_spec.rb +46 -116
- data/spec/unit/functions/find_template_spec.rb +69 -0
- data/spec/unit/functions/lookup_spec.rb +13 -0
- data/spec/unit/http/client_spec.rb +395 -27
- data/spec/unit/http/external_client_spec.rb +201 -0
- data/spec/unit/http/resolver_spec.rb +81 -12
- data/spec/unit/http/response_spec.rb +69 -0
- data/spec/unit/http/service/ca_spec.rb +100 -7
- data/spec/unit/http/service/compiler_spec.rb +627 -0
- data/spec/unit/http/service/file_server_spec.rb +308 -0
- data/spec/unit/http/service/report_spec.rb +118 -0
- data/spec/unit/http/service_spec.rb +117 -4
- data/spec/unit/http/session_spec.rb +237 -19
- data/spec/unit/indirector/catalog/compiler_spec.rb +47 -29
- data/spec/unit/indirector/catalog/rest_spec.rb +59 -2
- data/spec/unit/indirector/facts/rest_spec.rb +79 -24
- data/spec/unit/indirector/file_bucket_file/rest_spec.rb +82 -2
- data/spec/unit/indirector/file_content/rest_spec.rb +53 -2
- data/spec/unit/indirector/file_metadata/http_spec.rb +167 -0
- data/spec/unit/indirector/file_metadata/rest_spec.rb +110 -2
- data/spec/unit/indirector/node/rest_spec.rb +57 -2
- data/spec/unit/indirector/report/rest_spec.rb +58 -51
- data/spec/unit/indirector/resource/ral_spec.rb +7 -8
- data/spec/unit/indirector/rest_spec.rb +13 -0
- data/spec/unit/indirector/status/rest_spec.rb +43 -2
- data/spec/unit/network/http/connection_spec.rb +549 -176
- data/spec/unit/network/http/nocache_pool_spec.rb +25 -3
- data/spec/unit/network/http/pool_spec.rb +89 -11
- data/spec/unit/network/http_pool_spec.rb +63 -57
- data/spec/unit/network/http_spec.rb +1 -1
- data/spec/unit/node/environment_spec.rb +16 -0
- data/spec/unit/node/facts_spec.rb +2 -1
- data/spec/unit/node_spec.rb +7 -4
- data/spec/unit/pops/evaluator/evaluating_parser_spec.rb +8 -3
- data/spec/unit/pops/serialization/to_from_hr_spec.rb +6 -1
- data/spec/unit/pops/validator/validator_spec.rb +7 -2
- data/spec/unit/provider/aix_object_spec.rb +16 -2
- data/spec/unit/provider/group/groupadd_spec.rb +181 -56
- data/spec/unit/provider/group/windows_adsi_spec.rb +43 -10
- data/spec/unit/provider/package/aix_spec.rb +29 -0
- data/spec/unit/provider/package/apt_spec.rb +43 -2
- data/spec/unit/provider/package/aptitude_spec.rb +1 -0
- data/spec/unit/provider/package/dnfmodule_spec.rb +76 -15
- data/spec/unit/provider/package/dpkg_spec.rb +28 -6
- data/spec/unit/provider/package/gem_spec.rb +40 -0
- data/spec/unit/provider/package/openbsd_spec.rb +17 -0
- data/spec/unit/provider/package/pacman_spec.rb +6 -21
- data/spec/unit/provider/package/pip_spec.rb +68 -19
- data/spec/unit/provider/package/pkg_spec.rb +15 -1
- data/spec/unit/provider/package/pkgdmg_spec.rb +1 -1
- data/spec/unit/provider/package/pkgng_spec.rb +38 -0
- data/spec/unit/provider/package/portage_spec.rb +9 -4
- data/spec/unit/provider/package/puppet_gem_spec.rb +8 -0
- data/spec/unit/provider/package/rpm_spec.rb +0 -212
- data/spec/unit/provider/package/yum_spec.rb +292 -0
- data/spec/unit/provider/package/zypper_spec.rb +84 -0
- data/spec/unit/provider/package_targetable_spec.rb +60 -0
- data/spec/unit/provider/service/init_spec.rb +1 -0
- data/spec/unit/provider/service/openbsd_spec.rb +9 -0
- data/spec/unit/provider/service/openwrt_spec.rb +1 -0
- data/spec/unit/provider/service/redhat_spec.rb +9 -0
- data/spec/unit/provider/service/systemd_spec.rb +92 -12
- data/spec/unit/provider/user/directoryservice_spec.rb +41 -0
- data/spec/unit/provider/user/hpux_spec.rb +2 -2
- data/spec/unit/provider/user/useradd_spec.rb +21 -8
- data/spec/unit/provider/user/windows_adsi_spec.rb +3 -3
- data/spec/unit/puppet_pal_2pec.rb +0 -26
- data/spec/unit/puppet_pal_catalog_spec.rb +46 -0
- data/spec/unit/puppet_spec.rb +47 -0
- data/spec/unit/reports/http_spec.rb +70 -52
- data/spec/unit/settings/autosign_setting_spec.rb +1 -1
- data/spec/unit/settings/http_extra_headers_spec.rb +64 -0
- data/spec/unit/ssl/certificate_spec.rb +7 -0
- data/spec/unit/ssl/host_spec.rb +4 -2
- data/spec/unit/ssl/oids_spec.rb +1 -0
- data/spec/unit/ssl/ssl_provider_spec.rb +71 -0
- data/spec/unit/ssl/state_machine_spec.rb +99 -13
- data/spec/unit/transaction/persistence_spec.rb +1 -10
- data/spec/unit/transaction/report_spec.rb +4 -0
- data/spec/unit/transaction_spec.rb +45 -1
- data/spec/unit/type/file/content_spec.rb +9 -3
- data/spec/unit/type/file/ensure_spec.rb +1 -2
- data/spec/unit/type/file/source_spec.rb +86 -35
- data/spec/unit/type/package_spec.rb +8 -0
- data/spec/unit/type/service_spec.rb +9 -8
- data/spec/unit/type/user_spec.rb +1 -2
- data/spec/unit/util/at_fork_spec.rb +3 -2
- data/spec/unit/util/autoload_spec.rb +2 -1
- data/spec/unit/util/log/destinations_spec.rb +1 -29
- data/spec/unit/util/log_spec.rb +0 -138
- data/spec/unit/util/logging_spec.rb +200 -0
- data/spec/unit/util/package/version/debian_spec.rb +83 -0
- data/spec/unit/util/package/version/pip_spec.rb +464 -0
- data/spec/unit/util/package/version/range_spec.rb +175 -0
- data/spec/unit/util/package/version/rpm_spec.rb +121 -0
- data/spec/unit/util/pidlock_spec.rb +112 -42
- data/spec/unit/util/plist_spec.rb +20 -0
- data/spec/unit/util/rpm_compare_spec.rb +196 -0
- data/spec/unit/util/storage_spec.rb +1 -8
- data/spec/unit/util/windows/adsi_spec.rb +55 -4
- data/spec/unit/util/windows/sid_spec.rb +2 -2
- data/spec/unit/x509/cert_provider_spec.rb +24 -4
- data/tasks/generate_cert_fixtures.rake +15 -1
- data/tasks/manpages.rake +6 -35
- metadata +92 -12
- data/COMMITTERS.md +0 -244
- data/spec/integration/faces/plugin_spec.rb +0 -61
- data/spec/lib/puppet_spec/validators.rb +0 -37
@@ -1,3 +1,5 @@
|
|
1
|
+
require 'puppet/concurrent/thread_local_singleton'
|
2
|
+
|
1
3
|
# This class provides parsing of Type Specification from a string into the Type
|
2
4
|
# Model that is produced by the TypeFactory.
|
3
5
|
#
|
@@ -8,9 +10,7 @@
|
|
8
10
|
module Puppet::Pops
|
9
11
|
module Types
|
10
12
|
class TypeParser
|
11
|
-
|
12
|
-
@singleton ||= TypeParser.new
|
13
|
-
end
|
13
|
+
extend Puppet::Concurrent::ThreadLocalSingleton
|
14
14
|
|
15
15
|
# @api public
|
16
16
|
def initialize
|
@@ -93,7 +93,7 @@ class Checker4_0 < Evaluator::LiteralEvaluator
|
|
93
93
|
o = container(idx)
|
94
94
|
idx -= 1
|
95
95
|
case o
|
96
|
-
when NilClass, Model::HostClassDefinition, Model::Program
|
96
|
+
when NilClass, Model::ApplyExpression, Model::HostClassDefinition, Model::Program
|
97
97
|
# ok, stop scanning parents
|
98
98
|
when Model::BlockExpression
|
99
99
|
c = container(idx)
|
@@ -330,8 +330,10 @@ class Puppet::Provider::AixObject < Puppet::Provider
|
|
330
330
|
end
|
331
331
|
|
332
332
|
def ia_module_args
|
333
|
-
|
334
|
-
["-R", @resource[:ia_load_module].to_s]
|
333
|
+
raise ArgumentError, _("Cannot have both 'forcelocal' and 'ia_load_module' at the same time!") if @resource[:ia_load_module] && @resource[:forcelocal]
|
334
|
+
return ["-R", @resource[:ia_load_module].to_s] if @resource[:ia_load_module]
|
335
|
+
return ["-R", "files"] if @resource[:forcelocal]
|
336
|
+
[]
|
335
337
|
end
|
336
338
|
|
337
339
|
def lscmd
|
@@ -18,6 +18,7 @@ Puppet::Type.type(:group).provide :aix, :parent => Puppet::Provider::AixObject d
|
|
18
18
|
# Provider features
|
19
19
|
has_features :manages_aix_lam
|
20
20
|
has_features :manages_members
|
21
|
+
has_features :manages_local_users_and_groups
|
21
22
|
|
22
23
|
class << self
|
23
24
|
# Used by the AIX user provider. Returns a hash of:
|
@@ -2,9 +2,7 @@ require 'puppet/provider/nameservice/objectadd'
|
|
2
2
|
require 'puppet/util/libuser'
|
3
3
|
|
4
4
|
Puppet::Type.type(:group).provide :groupadd, :parent => Puppet::Provider::NameService::ObjectAdd do
|
5
|
-
desc "Group management via `groupadd` and its ilk. The default for most platforms.
|
6
|
-
|
7
|
-
"
|
5
|
+
desc "Group management via `groupadd` and its ilk. The default for most platforms."
|
8
6
|
|
9
7
|
commands :add => "groupadd", :delete => "groupdel", :modify => "groupmod"
|
10
8
|
|
@@ -16,7 +14,9 @@ Puppet::Type.type(:group).provide :groupadd, :parent => Puppet::Provider::NameSe
|
|
16
14
|
|
17
15
|
optional_commands :localadd => "lgroupadd", :localdelete => "lgroupdel", :localmodify => "lgroupmod"
|
18
16
|
|
19
|
-
has_feature :
|
17
|
+
has_feature :manages_local_users_and_groups, :manages_members if Puppet.features.libuser?
|
18
|
+
|
19
|
+
options :members, :flag => '-M', :method => :mem
|
20
20
|
|
21
21
|
def exists?
|
22
22
|
return !!localgid if @resource.forcelocal?
|
@@ -28,25 +28,9 @@ Puppet::Type.type(:group).provide :groupadd, :parent => Puppet::Provider::NameSe
|
|
28
28
|
get(:gid)
|
29
29
|
end
|
30
30
|
|
31
|
-
def findgroup(key, value)
|
32
|
-
group_file = "/etc/group"
|
33
|
-
group_keys = ['group_name', 'password', 'gid', 'user_list']
|
34
|
-
index = group_keys.index(key)
|
35
|
-
File.open(group_file) do |f|
|
36
|
-
f.each_line do |line|
|
37
|
-
group = line.split(":")
|
38
|
-
if group[index] == value
|
39
|
-
f.close
|
40
|
-
return group
|
41
|
-
end
|
42
|
-
end
|
43
|
-
end
|
44
|
-
false
|
45
|
-
end
|
46
|
-
|
47
31
|
def localgid
|
48
|
-
group = findgroup(
|
49
|
-
return group[
|
32
|
+
group = findgroup(:group_name, resource[:name])
|
33
|
+
return group[:gid] if group
|
50
34
|
false
|
51
35
|
end
|
52
36
|
|
@@ -56,7 +40,7 @@ Puppet::Type.type(:group).provide :groupadd, :parent => Puppet::Provider::NameSe
|
|
56
40
|
# to ensure consistent behaviour of the useradd provider when
|
57
41
|
# using both useradd and luseradd
|
58
42
|
if not @resource.allowdupe? and @resource.forcelocal?
|
59
|
-
if @resource.should(:gid) and findgroup(
|
43
|
+
if @resource.should(:gid) and findgroup(:gid, @resource.should(:gid).to_s)
|
60
44
|
raise(Puppet::Error, _("GID %{resource} already exists, use allowdupe to force group creation") % { resource: @resource.should(:gid).to_s })
|
61
45
|
end
|
62
46
|
elsif @resource.allowdupe? and not @resource.forcelocal?
|
@@ -65,6 +49,11 @@ Puppet::Type.type(:group).provide :groupadd, :parent => Puppet::Provider::NameSe
|
|
65
49
|
[]
|
66
50
|
end
|
67
51
|
|
52
|
+
def create
|
53
|
+
super
|
54
|
+
set(:members, @resource[:members]) if @resource[:members]
|
55
|
+
end
|
56
|
+
|
68
57
|
def addcmd
|
69
58
|
if @resource.forcelocal?
|
70
59
|
cmd = [command(:localadd)]
|
@@ -85,13 +74,28 @@ Puppet::Type.type(:group).provide :groupadd, :parent => Puppet::Provider::NameSe
|
|
85
74
|
cmd
|
86
75
|
end
|
87
76
|
|
77
|
+
def validate_members(members)
|
78
|
+
members.each do |member|
|
79
|
+
member.split(',').each do |user|
|
80
|
+
Etc.getpwnam(user.strip)
|
81
|
+
end
|
82
|
+
end
|
83
|
+
end
|
84
|
+
|
88
85
|
def modifycmd(param, value)
|
89
|
-
if @resource.forcelocal?
|
86
|
+
if @resource.forcelocal? || @resource[:members]
|
90
87
|
cmd = [command(:localmodify)]
|
91
88
|
@custom_environment = Puppet::Util::Libuser.getenv
|
92
89
|
else
|
93
90
|
cmd = [command(:modify)]
|
94
91
|
end
|
92
|
+
|
93
|
+
if param == :members
|
94
|
+
validate_members(value)
|
95
|
+
value = members_to_s(value)
|
96
|
+
purge_members if @resource[:auth_membership] && !members.empty?
|
97
|
+
end
|
98
|
+
|
95
99
|
cmd << flag(param) << value
|
96
100
|
# TODO the group type only really manages gid, so there are currently no
|
97
101
|
# tests for this behavior
|
@@ -109,4 +113,33 @@ Puppet::Type.type(:group).provide :groupadd, :parent => Puppet::Provider::NameSe
|
|
109
113
|
[command(:delete), @resource[:name]]
|
110
114
|
end
|
111
115
|
end
|
116
|
+
|
117
|
+
def members_insync?(current, should)
|
118
|
+
current.uniq.sort == @resource.parameter(:members).actual_should(current, should)
|
119
|
+
end
|
120
|
+
|
121
|
+
def members_to_s(current)
|
122
|
+
return '' if current.nil? || !current.kind_of?(Array)
|
123
|
+
current.join(',')
|
124
|
+
end
|
125
|
+
|
126
|
+
def purge_members
|
127
|
+
localmodify('-m', members_to_s(members), @resource.name)
|
128
|
+
end
|
129
|
+
|
130
|
+
private
|
131
|
+
|
132
|
+
def findgroup(key, value)
|
133
|
+
group_file = "/etc/group"
|
134
|
+
group_keys = [:group_name, :password, :gid, :user_list]
|
135
|
+
index = group_keys.index(key)
|
136
|
+
@group_content ||= File.read(group_file)
|
137
|
+
@group_content.each_line do |line|
|
138
|
+
group = line.split(":")
|
139
|
+
if group[index] == value
|
140
|
+
return Hash[group_keys.zip(group)]
|
141
|
+
end
|
142
|
+
end
|
143
|
+
false
|
144
|
+
end
|
112
145
|
end
|
@@ -24,7 +24,7 @@ Puppet::Type.type(:group).provide :windows_adsi do
|
|
24
24
|
# since the default array_matching comparison is not commutative
|
25
25
|
|
26
26
|
# dupes automatically weeded out when hashes built
|
27
|
-
current_members = Puppet::Util::Windows::ADSI::Group.name_sid_hash(current)
|
27
|
+
current_members = Puppet::Util::Windows::ADSI::Group.name_sid_hash(current, true)
|
28
28
|
specified_members = Puppet::Util::Windows::ADSI::Group.name_sid_hash(should)
|
29
29
|
|
30
30
|
current_sids = current_members.keys.to_a
|
@@ -52,7 +52,7 @@ Puppet::Type.type(:group).provide :windows_adsi do
|
|
52
52
|
account = sid.account
|
53
53
|
end
|
54
54
|
resource.debug("#{sid.domain}\\#{account} (#{sid.sid})")
|
55
|
-
"#{sid.domain}\\#{account}"
|
55
|
+
sid.domain ? "#{sid.domain}\\#{account}" : account
|
56
56
|
end
|
57
57
|
return users.join(',')
|
58
58
|
end
|
@@ -66,7 +66,7 @@ Puppet::Type.type(:group).provide :windows_adsi do
|
|
66
66
|
end
|
67
67
|
|
68
68
|
def members
|
69
|
-
@members ||= Puppet::Util::Windows::ADSI::Group.name_sid_hash(group.members)
|
69
|
+
@members ||= Puppet::Util::Windows::ADSI::Group.name_sid_hash(group.members, true)
|
70
70
|
|
71
71
|
# @members.keys returns an array of SIDs. We need to convert those SIDs into
|
72
72
|
# names so that `puppet resource` prints the right output.
|
@@ -29,6 +29,15 @@ Puppet::Type.type(:package).provide :aix, :parent => Puppet::Provider::Package d
|
|
29
29
|
|
30
30
|
attr_accessor :latest_info
|
31
31
|
|
32
|
+
STATE_CODE = {
|
33
|
+
'A' => :applied,
|
34
|
+
'B' => :broken,
|
35
|
+
'C' => :committed,
|
36
|
+
'E' => :efix_locked,
|
37
|
+
'O' => :obsolete,
|
38
|
+
'?' => :inconsistent,
|
39
|
+
}.freeze
|
40
|
+
|
32
41
|
def self.srclistcmd(source)
|
33
42
|
[ command(:installp), "-L", "-d", source ]
|
34
43
|
end
|
@@ -97,6 +106,11 @@ Puppet::Type.type(:package).provide :aix, :parent => Puppet::Provider::Package d
|
|
97
106
|
if output =~ /^#{Regexp.escape(@resource[:name])}\s+.*\s+Already superseded by.*$/
|
98
107
|
self.fail _("aix package provider is unable to downgrade packages")
|
99
108
|
end
|
109
|
+
|
110
|
+
pkg_info = query
|
111
|
+
if pkg_info && [:broken, :inconsistent].include?(pkg_info[:status])
|
112
|
+
self.fail _("Package '%{name}' is in a %{status} state and requires manual intervention") % { name: @resource[:name], status: pkg_info[:status] }
|
113
|
+
end
|
100
114
|
end
|
101
115
|
|
102
116
|
def self.pkglist(hash = {})
|
@@ -108,8 +122,9 @@ Puppet::Type.type(:package).provide :aix, :parent => Puppet::Provider::Package d
|
|
108
122
|
end
|
109
123
|
|
110
124
|
begin
|
111
|
-
list = execute(cmd).scan(/^[^#][^:]*:([^:]*):([^:]*)/).collect { |n,e|
|
112
|
-
|
125
|
+
list = execute(cmd).scan(/^[^#][^:]*:([^:]*):([^:]*):[^:]*:[^:]*:([^:])/).collect { |n,e,s|
|
126
|
+
e = :absent if [:broken, :inconsistent].include?(STATE_CODE[s])
|
127
|
+
{ :name => n, :ensure => e, :status => STATE_CODE[s], :provider => self.name }
|
113
128
|
}
|
114
129
|
rescue Puppet::ExecutionFailure => detail
|
115
130
|
if hash[:pkgname]
|
@@ -1,7 +1,11 @@
|
|
1
|
+
require 'puppet/util/package/version/range'
|
2
|
+
require 'puppet/util/package/version/debian'
|
3
|
+
|
1
4
|
Puppet::Type.type(:package).provide :apt, :parent => :dpkg, :source => :dpkg do
|
2
5
|
# Provide sorting functionality
|
3
6
|
include Puppet::Util::Package
|
4
|
-
|
7
|
+
DebianVersion = Puppet::Util::Package::Version::Debian
|
8
|
+
VersionRange = Puppet::Util::Package::Version::Range
|
5
9
|
desc "Package management via `apt-get`.
|
6
10
|
|
7
11
|
This provider supports the `install_options` attribute, which allows command-line flags to be passed to apt-get.
|
@@ -44,12 +48,44 @@ Puppet::Type.type(:package).provide :apt, :parent => :dpkg, :source => :dpkg do
|
|
44
48
|
end
|
45
49
|
end
|
46
50
|
|
51
|
+
def best_version(should_range)
|
52
|
+
available_versions = SortedSet.new
|
53
|
+
|
54
|
+
output = aptcache :madison, @resource[:name]
|
55
|
+
output.each_line do |line|
|
56
|
+
is = line.split('|')[1].strip
|
57
|
+
begin
|
58
|
+
is_version = DebianVersion.parse(is)
|
59
|
+
available_versions << is_version if should_range.include?(is_version)
|
60
|
+
rescue DebianVersion::ValidationFailure
|
61
|
+
Puppet.debug("Cannot parse #{is} as a debian version")
|
62
|
+
end
|
63
|
+
end
|
64
|
+
|
65
|
+
return available_versions.to_a.last unless available_versions.empty?
|
66
|
+
|
67
|
+
Puppet.debug("No available version for package #{@resource[:name]} is included in range #{should_range}")
|
68
|
+
should_range
|
69
|
+
end
|
70
|
+
|
47
71
|
# Install a package using 'apt-get'. This function needs to support
|
48
72
|
# installing a specific version.
|
49
73
|
def install
|
50
74
|
self.run_preseed if @resource[:responsefile]
|
51
75
|
should = @resource[:ensure]
|
52
76
|
|
77
|
+
if should.is_a?(String)
|
78
|
+
begin
|
79
|
+
should_range = VersionRange.parse(should, DebianVersion)
|
80
|
+
|
81
|
+
unless should_range.is_a?(VersionRange::Eq)
|
82
|
+
should = best_version(should_range)
|
83
|
+
end
|
84
|
+
rescue VersionRange::ValidationFailure, DebianVersion::ValidationFailure
|
85
|
+
Puppet.debug("Cannot parse #{should} as a debian version range, falling through")
|
86
|
+
end
|
87
|
+
end
|
88
|
+
|
53
89
|
checkforcdrom
|
54
90
|
cmd = %w{-q -y}
|
55
91
|
|
@@ -75,7 +111,12 @@ Puppet::Type.type(:package).provide :apt, :parent => :dpkg, :source => :dpkg do
|
|
75
111
|
cmd += install_options if @resource[:install_options]
|
76
112
|
cmd << :install << str
|
77
113
|
|
78
|
-
|
114
|
+
self.unhold if self.properties[:mark] == :hold
|
115
|
+
begin
|
116
|
+
aptget(*cmd)
|
117
|
+
ensure
|
118
|
+
self.hold if @resource[:mark] == :hold
|
119
|
+
end
|
79
120
|
end
|
80
121
|
|
81
122
|
# What's the latest package version available?
|
@@ -106,12 +147,18 @@ Puppet::Type.type(:package).provide :apt, :parent => :dpkg, :source => :dpkg do
|
|
106
147
|
|
107
148
|
def uninstall
|
108
149
|
self.run_preseed if @resource[:responsefile]
|
109
|
-
|
150
|
+
args = ['-y', '-q']
|
151
|
+
args << '--allow-change-held-packages' if self.properties[:mark] == :hold
|
152
|
+
args << :remove << @resource[:name]
|
153
|
+
aptget(*args)
|
110
154
|
end
|
111
155
|
|
112
156
|
def purge
|
113
157
|
self.run_preseed if @resource[:responsefile]
|
114
|
-
|
158
|
+
args = ['-y', '-q']
|
159
|
+
args << '--allow-change-held-packages' if self.properties[:mark] == :hold
|
160
|
+
args << :remove << '--purge' << @resource[:name]
|
161
|
+
aptget(*args)
|
115
162
|
# workaround a "bug" in apt, that already removed packages are not purged
|
116
163
|
super
|
117
164
|
end
|
@@ -119,4 +166,31 @@ Puppet::Type.type(:package).provide :apt, :parent => :dpkg, :source => :dpkg do
|
|
119
166
|
def install_options
|
120
167
|
join_options(@resource[:install_options])
|
121
168
|
end
|
169
|
+
|
170
|
+
def insync?(is)
|
171
|
+
# this is called after the generic version matching logic (insync? for the
|
172
|
+
# type), so we only get here if should != is
|
173
|
+
|
174
|
+
return false unless is && is != :absent
|
175
|
+
|
176
|
+
#if 'should' is a range and 'is' a debian version we should check if 'should' includes 'is'
|
177
|
+
should = @resource[:ensure]
|
178
|
+
|
179
|
+
return false unless is.is_a?(String) && should.is_a?(String)
|
180
|
+
|
181
|
+
begin
|
182
|
+
should_range = VersionRange.parse(should, DebianVersion)
|
183
|
+
rescue VersionRange::ValidationFailure, DebianVersion::ValidationFailure
|
184
|
+
Puppet.debug("Cannot parse #{should} as a debian version range")
|
185
|
+
return false
|
186
|
+
end
|
187
|
+
|
188
|
+
begin
|
189
|
+
is_version = DebianVersion.parse(is)
|
190
|
+
rescue DebianVersion::ValidationFailure
|
191
|
+
Puppet.debug("Cannot parse #{is} as a debian version")
|
192
|
+
return false
|
193
|
+
end
|
194
|
+
should_range.include?(is_version)
|
195
|
+
end
|
122
196
|
end
|
@@ -12,7 +12,7 @@ require 'puppet/provider/package'
|
|
12
12
|
|
13
13
|
Puppet::Type.type(:package).provide :dnfmodule, :parent => :dnf do
|
14
14
|
|
15
|
-
has_feature :installable, :uninstallable, :versionable
|
15
|
+
has_feature :installable, :uninstallable, :versionable, :supports_flavors, :disableable
|
16
16
|
#has_feature :upgradeable
|
17
17
|
# it's not (yet) feasible to make this upgradeable since module streams don't
|
18
18
|
# always have matching version types (i.e. idm has streams DL1 and client,
|
@@ -34,14 +34,26 @@ Puppet::Type.type(:package).provide :dnfmodule, :parent => :dnf do
|
|
34
34
|
|
35
35
|
def self.instances
|
36
36
|
packages = []
|
37
|
-
cmd = "#{command(:dnf)} module list
|
37
|
+
cmd = "#{command(:dnf)} module list -d 0 -e #{error_level}"
|
38
38
|
execute(cmd).each_line do |line|
|
39
|
-
|
40
|
-
line
|
39
|
+
# select only lines with actual packages since DNF clutters the output
|
40
|
+
next unless line =~ /\[[eix]\][, ]/
|
41
|
+
line.gsub!(/\[d\]/, '') # we don't care about the default flag
|
42
|
+
|
43
|
+
flavor = if line.include?('[i]')
|
44
|
+
line.split('[i]').first.split.last
|
45
|
+
else
|
46
|
+
:absent
|
47
|
+
end
|
48
|
+
|
41
49
|
packages << new(
|
42
50
|
name: line.split[0],
|
43
|
-
ensure: line.
|
44
|
-
|
51
|
+
ensure: if line.include?('[x]')
|
52
|
+
:disabled
|
53
|
+
else
|
54
|
+
line.split[1]
|
55
|
+
end,
|
56
|
+
flavor: flavor,
|
45
57
|
provider: name
|
46
58
|
)
|
47
59
|
end
|
@@ -55,33 +67,75 @@ Puppet::Type.type(:package).provide :dnfmodule, :parent => :dnf do
|
|
55
67
|
pkg ? pkg.properties : nil
|
56
68
|
end
|
57
69
|
|
58
|
-
def reset
|
59
|
-
execute([command(:dnf), 'module', 'reset', '-d', '0', '-e', self.class.error_level, '-y', @resource[:name]])
|
60
|
-
end
|
61
|
-
|
62
70
|
# to install specific streams and profiles:
|
63
71
|
# $ dnf module install module-name:stream/profile
|
64
72
|
# $ dnf module install perl:5.24/minimal
|
65
73
|
# if unspecified, they will be defaulted (see [d] param in dnf module list output)
|
66
74
|
def install
|
67
|
-
args = @resource[:name]
|
68
75
|
# ensure we start fresh (remove existing stream)
|
69
76
|
uninstall unless [:absent, :purged].include?(@property_hash[:ensure])
|
77
|
+
|
78
|
+
args = @resource[:name].dup
|
70
79
|
case @resource[:ensure]
|
71
80
|
when true, false, Symbol
|
72
81
|
# pass
|
73
82
|
else
|
74
83
|
args << ":#{@resource[:ensure]}"
|
75
84
|
end
|
76
|
-
if @resource[:flavor]
|
77
|
-
|
85
|
+
args << "/#{@resource[:flavor]}" if @resource[:flavor]
|
86
|
+
|
87
|
+
if @resource[:enable_only] == true
|
88
|
+
enable(args)
|
89
|
+
else
|
90
|
+
begin
|
91
|
+
execute([command(:dnf), 'module', 'install', '-d', '0', '-e', self.class.error_level, '-y', args])
|
92
|
+
rescue Puppet::ExecutionFailure => e
|
93
|
+
# module has no default profile and no profile was requested, so just enable the stream
|
94
|
+
# DNF versions prior to 4.2.8 do not need this workaround
|
95
|
+
# see https://bugzilla.redhat.com/show_bug.cgi?id=1669527
|
96
|
+
if @resource[:flavor] == nil && e.message =~ /^missing groups or modules: #{Regexp.quote(@resource[:name])}$/
|
97
|
+
enable(args)
|
98
|
+
else
|
99
|
+
raise
|
100
|
+
end
|
101
|
+
end
|
102
|
+
end
|
103
|
+
end
|
104
|
+
|
105
|
+
# should only get here when @resource[ensure] is :disabled
|
106
|
+
def insync?(is)
|
107
|
+
if resource[:ensure] == :disabled
|
108
|
+
# in sync only if package is already disabled
|
109
|
+
pkg = self.class.instances.find do |package|
|
110
|
+
@resource[:name] == package.name && package.properties[:ensure] == :disabled
|
111
|
+
end
|
112
|
+
return true if pkg
|
78
113
|
end
|
79
|
-
|
114
|
+
return false
|
115
|
+
end
|
116
|
+
|
117
|
+
def enable(args = @resource[:name])
|
118
|
+
execute([command(:dnf), 'module', 'enable', '-d', '0', '-e', self.class.error_level, '-y', args])
|
80
119
|
end
|
81
120
|
|
82
121
|
def uninstall
|
83
122
|
execute([command(:dnf), 'module', 'remove', '-d', '0', '-e', self.class.error_level, '-y', @resource[:name]])
|
84
123
|
reset # reset module to the default stream
|
85
124
|
end
|
86
|
-
end
|
87
125
|
|
126
|
+
def disable(args = @resource[:name])
|
127
|
+
execute([command(:dnf), 'module', 'disable', '-d', '0', '-e', self.class.error_level, '-y', args])
|
128
|
+
end
|
129
|
+
|
130
|
+
def reset
|
131
|
+
execute([command(:dnf), 'module', 'reset', '-d', '0', '-e', self.class.error_level, '-y', @resource[:name]])
|
132
|
+
end
|
133
|
+
|
134
|
+
def flavor
|
135
|
+
@property_hash[:flavor]
|
136
|
+
end
|
137
|
+
|
138
|
+
def flavor=(value)
|
139
|
+
install if flavor != @resource.should(:flavor)
|
140
|
+
end
|
141
|
+
end
|