chef 16.13.16-universal-mingw32 → 17.0.242-universal-mingw32
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/Gemfile +9 -10
- data/README.md +1 -1
- data/Rakefile +2 -2
- data/chef-universal-mingw32.gemspec +1 -1
- data/chef.gemspec +6 -8
- data/lib/chef/application/base.rb +1 -1
- data/lib/chef/applications.rb +0 -1
- data/lib/chef/chef_fs/command_line.rb +5 -2
- data/lib/chef/chef_fs/file_system.rb +9 -10
- data/lib/chef/client.rb +2 -2
- data/lib/chef/compliance/default_attributes.rb +4 -3
- data/lib/chef/compliance/fetcher/automate.rb +0 -7
- data/lib/chef/compliance/reporter/automate.rb +17 -7
- data/lib/chef/compliance/reporter/chef_server_automate.rb +11 -6
- data/lib/chef/compliance/reporter/cli.rb +77 -0
- data/lib/chef/compliance/reporter/compliance_enforcer.rb +4 -0
- data/lib/chef/compliance/reporter/json_file.rb +8 -1
- data/lib/chef/compliance/runner.rb +65 -27
- data/lib/chef/cookbook/synchronizer.rb +3 -5
- data/lib/chef/cookbook_loader.rb +2 -4
- data/lib/chef/cookbook_uploader.rb +0 -1
- data/lib/chef/data_bag_item.rb +11 -2
- data/lib/chef/delayed_evaluator.rb +4 -0
- data/lib/chef/deprecated.rb +4 -0
- data/lib/chef/dsl/chef_vault.rb +6 -6
- data/lib/chef/dsl/reboot_pending.rb +1 -2
- data/lib/chef/formatters/error_inspectors/resource_failure_inspector.rb +20 -22
- data/lib/chef/group.rb +75 -0
- data/lib/chef/mixin/get_source_from_package.rb +1 -1
- data/lib/chef/node/attribute.rb +6 -4
- data/lib/chef/node/immutable_collections.rb +13 -0
- data/lib/chef/node/mixin/deep_merge_cache.rb +11 -7
- data/lib/chef/org.rb +3 -2
- data/lib/chef/property.rb +18 -0
- data/lib/chef/provider.rb +1 -1
- data/lib/chef/provider/cron.rb +1 -1
- data/lib/chef/provider/execute.rb +2 -1
- data/lib/chef/provider/file.rb +1 -1
- data/lib/chef/provider/git.rb +5 -7
- data/lib/chef/provider/group/groupadd.rb +3 -3
- data/lib/chef/provider/group/groupmod.rb +3 -3
- data/lib/chef/provider/group/pw.rb +3 -3
- data/lib/chef/provider/ifconfig.rb +2 -2
- data/lib/chef/provider/link.rb +2 -2
- data/lib/chef/provider/mount.rb +5 -5
- data/lib/chef/provider/mount/aix.rb +3 -3
- data/lib/chef/provider/mount/mount.rb +5 -5
- data/lib/chef/provider/mount/windows.rb +1 -1
- data/lib/chef/provider/package.rb +17 -21
- data/lib/chef/provider/package/apt.rb +27 -1
- data/lib/chef/provider/package/deb.rb +3 -3
- data/lib/chef/provider/package/dnf/dnf_helper.py +1 -1
- data/lib/chef/provider/package/portage.rb +2 -2
- data/lib/chef/provider/package/rubygems.rb +11 -17
- data/lib/chef/provider/package/windows.rb +2 -4
- data/lib/chef/provider/package/yum/yum_helper.py +1 -1
- data/lib/chef/provider/route.rb +2 -2
- data/lib/chef/provider/service.rb +6 -6
- data/lib/chef/provider/service/aixinit.rb +1 -1
- data/lib/chef/provider/service/debian.rb +1 -1
- data/lib/chef/provider/service/freebsd.rb +15 -21
- data/lib/chef/provider/service/macosx.rb +4 -4
- data/lib/chef/provider/service/systemd.rb +43 -14
- data/lib/chef/provider/service/upstart.rb +2 -13
- data/lib/chef/provider/service/windows.rb +12 -12
- data/lib/chef/provider/subversion.rb +10 -12
- data/lib/chef/provider/systemd_unit.rb +36 -10
- data/lib/chef/provider/template/content.rb +2 -6
- data/lib/chef/provider/user.rb +2 -2
- data/lib/chef/provider/user/dscl.rb +1 -1
- data/lib/chef/provider/user/mac.rb +17 -20
- data/lib/chef/provider/user/pw.rb +1 -1
- data/lib/chef/provider/user/windows.rb +1 -1
- data/lib/chef/provider/zypper_repository.rb +2 -2
- data/lib/chef/providers.rb +0 -1
- data/lib/chef/resource/alternatives.rb +6 -6
- data/lib/chef/resource/apt_package.rb +1 -1
- data/lib/chef/resource/apt_preference.rb +2 -2
- data/lib/chef/resource/apt_repository.rb +6 -6
- data/lib/chef/resource/apt_update.rb +3 -2
- data/lib/chef/resource/archive_file.rb +2 -3
- data/lib/chef/resource/breakpoint.rb +1 -1
- data/lib/chef/resource/build_essential.rb +2 -6
- data/lib/chef/resource/chef_client_config.rb +2 -2
- data/lib/chef/resource/chef_client_cron.rb +4 -4
- data/lib/chef/resource/chef_client_launchd.rb +3 -3
- data/lib/chef/resource/chef_client_scheduled_task.rb +1 -1
- data/lib/chef/resource/chef_client_systemd_timer.rb +2 -2
- data/lib/chef/resource/chef_handler.rb +3 -7
- data/lib/chef/resource/chef_sleep.rb +1 -1
- data/lib/chef/resource/chef_vault_secret.rb +3 -8
- data/lib/chef/resource/chocolatey_config.rb +2 -6
- data/lib/chef/resource/chocolatey_feature.rb +2 -6
- data/lib/chef/resource/chocolatey_source.rb +4 -10
- data/lib/chef/resource/cron/_cron_shared.rb +2 -2
- data/lib/chef/resource/cron_access.rb +2 -4
- data/lib/chef/resource/dmg_package.rb +6 -10
- data/lib/chef/resource/dpkg_package.rb +1 -1
- data/lib/chef/resource/execute.rb +6 -1
- data/lib/chef/resource/file.rb +1 -1
- data/lib/chef/resource/group.rb +2 -2
- data/lib/chef/resource/homebrew_cask.rb +2 -6
- data/lib/chef/resource/homebrew_tap.rb +2 -6
- data/lib/chef/resource/hostname.rb +21 -17
- data/lib/chef/resource/http_request.rb +1 -1
- data/lib/chef/resource/kernel_module.rb +6 -17
- data/lib/chef/resource/locale.rb +2 -3
- data/lib/chef/resource/lwrp_base.rb +4 -0
- data/lib/chef/resource/macos_userdefaults.rb +10 -14
- data/lib/chef/resource/mdadm.rb +53 -7
- data/lib/chef/resource/mount.rb +2 -1
- data/lib/chef/resource/openssl_ec_private_key.rb +2 -2
- data/lib/chef/resource/openssl_rsa_private_key.rb +1 -1
- data/lib/chef/resource/openssl_x509_certificate.rb +2 -2
- data/lib/chef/resource/plist.rb +7 -7
- data/lib/chef/resource/powershell_script.rb +1 -1
- data/lib/chef/resource/remote_file.rb +1 -1
- data/lib/chef/resource/rhsm_errata.rb +16 -1
- data/lib/chef/resource/rhsm_errata_level.rb +10 -1
- data/lib/chef/resource/rhsm_register.rb +12 -6
- data/lib/chef/resource/rhsm_repo.rb +2 -6
- data/lib/chef/resource/rhsm_subscription.rb +2 -6
- data/lib/chef/resource/scm/git.rb +1 -1
- data/lib/chef/resource/sudo.rb +6 -6
- data/lib/chef/resource/sysctl.rb +2 -6
- data/lib/chef/resource/systemd_unit.rb +2 -2
- data/lib/chef/resource/template.rb +1 -1
- data/lib/chef/resource/timezone.rb +1 -3
- data/lib/chef/resource/user/mac_user.rb +1 -1
- data/lib/chef/resource/user_ulimit.rb +2 -2
- data/lib/chef/resource/windows_ad_join.rb +2 -6
- data/lib/chef/resource/windows_audit_policy.rb +1 -1
- data/lib/chef/resource/windows_auto_run.rb +2 -5
- data/lib/chef/resource/windows_certificate.rb +207 -73
- data/lib/chef/resource/windows_dfs_folder.rb +2 -6
- data/lib/chef/resource/windows_dfs_namespace.rb +2 -6
- data/lib/chef/resource/windows_dfs_server.rb +1 -3
- data/lib/chef/resource/windows_dns_record.rb +2 -6
- data/lib/chef/resource/windows_dns_zone.rb +2 -6
- data/lib/chef/resource/windows_env.rb +5 -4
- data/lib/chef/resource/windows_feature.rb +3 -9
- data/lib/chef/resource/windows_feature_dism.rb +2 -6
- data/lib/chef/resource/windows_feature_powershell.rb +3 -3
- data/lib/chef/resource/windows_firewall_profile.rb +4 -4
- data/lib/chef/resource/windows_firewall_rule.rb +2 -5
- data/lib/chef/resource/windows_font.rb +2 -4
- data/lib/chef/resource/windows_pagefile.rb +2 -6
- data/lib/chef/resource/windows_path.rb +2 -2
- data/lib/chef/resource/windows_printer.rb +4 -4
- data/lib/chef/resource/windows_printer_port.rb +6 -6
- data/lib/chef/resource/windows_security_policy.rb +53 -40
- data/lib/chef/resource/windows_share.rb +14 -21
- data/lib/chef/resource/windows_shortcut.rb +4 -6
- data/lib/chef/resource/windows_task.rb +17 -5
- data/lib/chef/resource/windows_uac.rb +1 -1
- data/lib/chef/resource/windows_user_privilege.rb +4 -4
- data/lib/chef/resource/windows_workgroup.rb +1 -2
- data/lib/chef/resources.rb +0 -1
- data/lib/chef/user.rb +0 -1
- data/lib/chef/user_v1.rb +3 -4
- data/lib/chef/util/dsc/configuration_generator.rb +1 -0
- data/lib/chef/util/dsc/local_configuration_manager.rb +1 -1
- data/lib/chef/version.rb +1 -1
- data/lib/chef/win32/registry.rb +4 -2
- data/spec/data/cookbooks/openldap/libraries/openldap.rb +1 -1
- data/spec/data/lwrp/resources/bar.rb +2 -0
- data/spec/data/lwrp/resources/buck_passer.rb +1 -0
- data/spec/data/lwrp/resources/buck_passer_2.rb +1 -0
- data/spec/data/lwrp/resources/embedded_resource_accesses_providers_scope.rb +1 -0
- data/spec/data/lwrp/resources/foo.rb +2 -0
- data/spec/data/lwrp/resources/inline_compiler.rb +1 -0
- data/spec/data/lwrp/resources/monkey_name_printer.rb +1 -0
- data/spec/data/lwrp/resources/paint_drying_watcher.rb +1 -0
- data/spec/data/lwrp/resources/thumb_twiddler.rb +1 -0
- data/spec/data/lwrp/resources_with_default_attributes/nodeattr.rb +2 -0
- data/spec/data/lwrp_const_scoping/resources/conflict.rb +1 -0
- data/spec/data/lwrp_override/resources/foo.rb +1 -0
- data/spec/data/rubygems.org/nonexistent_gem-info +1 -0
- data/spec/data/rubygems.org/sexp_processor-info +49 -0
- data/spec/data/run_context/cookbooks/circular-dep1/resources/resource.rb +1 -0
- data/spec/data/run_context/cookbooks/circular-dep2/resources/resource.rb +1 -0
- data/spec/data/run_context/cookbooks/dependency1/resources/resource.rb +1 -0
- data/spec/data/run_context/cookbooks/dependency2/resources/resource.rb +1 -0
- data/spec/data/run_context/cookbooks/no-default-attr/resources/resource.rb +1 -0
- data/spec/data/run_context/cookbooks/test-with-circular-deps/resources/resource.rb +2 -0
- data/spec/data/run_context/cookbooks/test-with-deps/resources/resource.rb +1 -0
- data/spec/data/run_context/cookbooks/test/resources/resource.rb +2 -0
- data/spec/functional/dsl/registry_helper_spec.rb +1 -1
- data/spec/functional/resource/aixinit_service_spec.rb +7 -7
- data/spec/functional/resource/apt_package_spec.rb +1 -1
- data/spec/functional/resource/chocolatey_package_spec.rb +13 -0
- data/spec/functional/resource/dnf_package_spec.rb +4 -1
- data/spec/functional/resource/registry_spec.rb +8 -8
- data/spec/functional/resource/user/mac_user_spec.rb +2 -2
- data/spec/functional/resource/windows_certificate_spec.rb +92 -35
- data/spec/functional/version_spec.rb +1 -1
- data/spec/functional/win32/registry_spec.rb +1 -1
- data/spec/integration/client/client_spec.rb +5 -2
- data/spec/integration/client/exit_code_spec.rb +1 -1
- data/spec/integration/client/ipv6_spec.rb +1 -1
- data/spec/integration/compliance/compliance_spec.rb +1 -1
- data/spec/integration/ohai/ohai_spec.rb +7 -6
- data/spec/integration/recipes/accumulator_spec.rb +13 -1
- data/spec/integration/recipes/lwrp_inline_resources_spec.rb +5 -1
- data/spec/integration/recipes/lwrp_spec.rb +3 -1
- data/spec/integration/recipes/notifies_spec.rb +15 -1
- data/spec/integration/recipes/notifying_block_spec.rb +2 -1
- data/spec/integration/recipes/recipe_dsl_spec.rb +9 -9
- data/spec/integration/recipes/unified_mode_spec.rb +1 -1
- data/spec/integration/recipes/use_partial_spec.rb +4 -1
- data/spec/spec_helper.rb +10 -13
- data/spec/support/chef_helpers.rb +0 -16
- data/spec/support/lib/chef/resource/with_state.rb +0 -1
- data/spec/support/lib/chef/resource/zen_follower.rb +0 -1
- data/spec/support/lib/chef/resource/zen_master.rb +0 -1
- data/spec/support/matchers/leak.rb +7 -9
- data/spec/support/platform_helpers.rb +1 -8
- data/spec/support/shared/integration/integration_helper.rb +0 -1
- data/spec/support/shared/unit/script_resource.rb +2 -2
- data/spec/unit/application/solo_spec.rb +2 -2
- data/spec/unit/chef_fs/diff_spec.rb +1 -1
- data/spec/unit/chef_fs/file_system_spec.rb +1 -1
- data/spec/unit/compliance/fetcher/automate_spec.rb +0 -16
- data/spec/unit/compliance/reporter/automate_spec.rb +26 -2
- data/spec/unit/compliance/reporter/chef_server_automate_spec.rb +20 -0
- data/spec/unit/compliance/reporter/compliance_enforcer_spec.rb +1 -0
- data/spec/unit/compliance/runner_spec.rb +30 -4
- data/spec/unit/data_bag_item_spec.rb +1 -6
- data/spec/unit/dsl/reboot_pending_spec.rb +2 -2
- data/spec/unit/dsl/registry_helper_spec.rb +1 -1
- data/spec/unit/lwrp_spec.rb +1 -1
- data/spec/unit/mixin/params_validate_spec.rb +4 -3
- data/spec/unit/node/attribute_spec.rb +1 -1
- data/spec/unit/node_spec.rb +78 -0
- data/spec/unit/org_group_spec.rb +45 -0
- data/spec/unit/property_spec.rb +23 -22
- data/spec/unit/provider/cron_spec.rb +1 -1
- data/spec/unit/provider/group/gpasswd_spec.rb +2 -2
- data/spec/unit/provider/group/groupmod_spec.rb +2 -2
- data/spec/unit/provider/group/pw_spec.rb +2 -2
- data/spec/unit/provider/group_spec.rb +1 -1
- data/spec/unit/provider/package/apt_spec.rb +84 -18
- data/spec/unit/provider/package/deb_spec.rb +3 -3
- data/spec/unit/provider/package/rubygems_spec.rb +21 -33
- data/spec/unit/provider/service/arch_service_spec.rb +1 -0
- data/spec/unit/provider/service/debian_service_spec.rb +1 -0
- data/spec/unit/provider/service/macosx_spec.rb +2 -2
- data/spec/unit/provider/service/systemd_service_spec.rb +138 -23
- data/spec/unit/provider/service/upstart_service_spec.rb +0 -29
- data/spec/unit/provider/service/windows_spec.rb +2 -2
- data/spec/unit/provider/subversion_spec.rb +2 -2
- data/spec/unit/provider/systemd_unit_spec.rb +79 -60
- data/spec/unit/provider/zypper_repository_spec.rb +2 -2
- data/spec/unit/provider_spec.rb +0 -8
- data/spec/unit/resource/powershell_script_spec.rb +2 -2
- data/spec/unit/resource/windows_task_spec.rb +1 -1
- data/spec/unit/user_spec.rb +1 -1
- data/spec/unit/user_v1_spec.rb +6 -4
- data/tasks/rspec.rb +16 -8
- metadata +19 -382
- data/bin/knife +0 -24
- data/lib/chef/application/knife.rb +0 -234
- data/lib/chef/application/windows_service.rb +0 -338
- data/lib/chef/application/windows_service_manager.rb +0 -205
- data/lib/chef/chef_fs/knife.rb +0 -160
- data/lib/chef/chef_fs/parallelizer.rb +0 -102
- data/lib/chef/chef_fs/parallelizer/flatten_enumerable.rb +0 -35
- data/lib/chef/chef_fs/parallelizer/parallel_enumerable.rb +0 -278
- data/lib/chef/cookbook_site_streaming_uploader.rb +0 -244
- data/lib/chef/knife.rb +0 -665
- data/lib/chef/knife/acl_add.rb +0 -57
- data/lib/chef/knife/acl_base.rb +0 -183
- data/lib/chef/knife/acl_bulk_add.rb +0 -78
- data/lib/chef/knife/acl_bulk_remove.rb +0 -83
- data/lib/chef/knife/acl_remove.rb +0 -62
- data/lib/chef/knife/acl_show.rb +0 -56
- data/lib/chef/knife/bootstrap.rb +0 -1192
- data/lib/chef/knife/bootstrap/chef_vault_handler.rb +0 -162
- data/lib/chef/knife/bootstrap/client_builder.rb +0 -212
- data/lib/chef/knife/bootstrap/templates/README.md +0 -11
- data/lib/chef/knife/bootstrap/templates/chef-full.erb +0 -242
- data/lib/chef/knife/bootstrap/templates/windows-chef-client-msi.erb +0 -278
- data/lib/chef/knife/bootstrap/train_connector.rb +0 -336
- data/lib/chef/knife/client_bulk_delete.rb +0 -104
- data/lib/chef/knife/client_create.rb +0 -101
- data/lib/chef/knife/client_delete.rb +0 -62
- data/lib/chef/knife/client_edit.rb +0 -52
- data/lib/chef/knife/client_key_create.rb +0 -73
- data/lib/chef/knife/client_key_delete.rb +0 -80
- data/lib/chef/knife/client_key_edit.rb +0 -83
- data/lib/chef/knife/client_key_list.rb +0 -73
- data/lib/chef/knife/client_key_show.rb +0 -80
- data/lib/chef/knife/client_list.rb +0 -41
- data/lib/chef/knife/client_reregister.rb +0 -58
- data/lib/chef/knife/client_show.rb +0 -48
- data/lib/chef/knife/config_get.rb +0 -39
- data/lib/chef/knife/config_get_profile.rb +0 -37
- data/lib/chef/knife/config_list.rb +0 -139
- data/lib/chef/knife/config_list_profiles.rb +0 -37
- data/lib/chef/knife/config_show.rb +0 -127
- data/lib/chef/knife/config_use.rb +0 -61
- data/lib/chef/knife/config_use_profile.rb +0 -47
- data/lib/chef/knife/configure.rb +0 -150
- data/lib/chef/knife/configure_client.rb +0 -48
- data/lib/chef/knife/cookbook_bulk_delete.rb +0 -71
- data/lib/chef/knife/cookbook_delete.rb +0 -151
- data/lib/chef/knife/cookbook_download.rb +0 -142
- data/lib/chef/knife/cookbook_list.rb +0 -47
- data/lib/chef/knife/cookbook_metadata.rb +0 -106
- data/lib/chef/knife/cookbook_metadata_from_file.rb +0 -49
- data/lib/chef/knife/cookbook_show.rb +0 -98
- data/lib/chef/knife/cookbook_upload.rb +0 -292
- data/lib/chef/knife/core/bootstrap_context.rb +0 -264
- data/lib/chef/knife/core/cookbook_scm_repo.rb +0 -159
- data/lib/chef/knife/core/formatting_options.rb +0 -49
- data/lib/chef/knife/core/gem_glob_loader.rb +0 -138
- data/lib/chef/knife/core/generic_presenter.rb +0 -232
- data/lib/chef/knife/core/hashed_command_loader.rb +0 -100
- data/lib/chef/knife/core/node_editor.rb +0 -130
- data/lib/chef/knife/core/node_presenter.rb +0 -133
- data/lib/chef/knife/core/object_loader.rb +0 -115
- data/lib/chef/knife/core/status_presenter.rb +0 -147
- data/lib/chef/knife/core/subcommand_loader.rb +0 -203
- data/lib/chef/knife/core/text_formatter.rb +0 -85
- data/lib/chef/knife/core/ui.rb +0 -338
- data/lib/chef/knife/core/windows_bootstrap_context.rb +0 -406
- data/lib/chef/knife/data_bag_create.rb +0 -81
- data/lib/chef/knife/data_bag_delete.rb +0 -49
- data/lib/chef/knife/data_bag_edit.rb +0 -74
- data/lib/chef/knife/data_bag_from_file.rb +0 -113
- data/lib/chef/knife/data_bag_list.rb +0 -42
- data/lib/chef/knife/data_bag_secret_options.rb +0 -122
- data/lib/chef/knife/data_bag_show.rb +0 -69
- data/lib/chef/knife/delete.rb +0 -125
- data/lib/chef/knife/deps.rb +0 -156
- data/lib/chef/knife/diff.rb +0 -83
- data/lib/chef/knife/download.rb +0 -84
- data/lib/chef/knife/edit.rb +0 -88
- data/lib/chef/knife/environment_compare.rb +0 -128
- data/lib/chef/knife/environment_create.rb +0 -52
- data/lib/chef/knife/environment_delete.rb +0 -44
- data/lib/chef/knife/environment_edit.rb +0 -44
- data/lib/chef/knife/environment_from_file.rb +0 -84
- data/lib/chef/knife/environment_list.rb +0 -41
- data/lib/chef/knife/environment_show.rb +0 -47
- data/lib/chef/knife/exec.rb +0 -99
- data/lib/chef/knife/group_add.rb +0 -55
- data/lib/chef/knife/group_create.rb +0 -49
- data/lib/chef/knife/group_destroy.rb +0 -53
- data/lib/chef/knife/group_list.rb +0 -43
- data/lib/chef/knife/group_remove.rb +0 -56
- data/lib/chef/knife/group_show.rb +0 -49
- data/lib/chef/knife/key_create.rb +0 -112
- data/lib/chef/knife/key_create_base.rb +0 -50
- data/lib/chef/knife/key_delete.rb +0 -55
- data/lib/chef/knife/key_edit.rb +0 -118
- data/lib/chef/knife/key_edit_base.rb +0 -55
- data/lib/chef/knife/key_list.rb +0 -90
- data/lib/chef/knife/key_list_base.rb +0 -45
- data/lib/chef/knife/key_show.rb +0 -53
- data/lib/chef/knife/list.rb +0 -177
- data/lib/chef/knife/node_bulk_delete.rb +0 -75
- data/lib/chef/knife/node_create.rb +0 -47
- data/lib/chef/knife/node_delete.rb +0 -46
- data/lib/chef/knife/node_edit.rb +0 -70
- data/lib/chef/knife/node_environment_set.rb +0 -53
- data/lib/chef/knife/node_from_file.rb +0 -51
- data/lib/chef/knife/node_list.rb +0 -44
- data/lib/chef/knife/node_policy_set.rb +0 -79
- data/lib/chef/knife/node_run_list_add.rb +0 -104
- data/lib/chef/knife/node_run_list_remove.rb +0 -67
- data/lib/chef/knife/node_run_list_set.rb +0 -66
- data/lib/chef/knife/node_show.rb +0 -63
- data/lib/chef/knife/null.rb +0 -12
- data/lib/chef/knife/raw.rb +0 -123
- data/lib/chef/knife/recipe_list.rb +0 -32
- data/lib/chef/knife/rehash.rb +0 -50
- data/lib/chef/knife/role_bulk_delete.rb +0 -66
- data/lib/chef/knife/role_create.rb +0 -53
- data/lib/chef/knife/role_delete.rb +0 -46
- data/lib/chef/knife/role_edit.rb +0 -45
- data/lib/chef/knife/role_env_run_list_add.rb +0 -87
- data/lib/chef/knife/role_env_run_list_clear.rb +0 -55
- data/lib/chef/knife/role_env_run_list_remove.rb +0 -57
- data/lib/chef/knife/role_env_run_list_replace.rb +0 -60
- data/lib/chef/knife/role_env_run_list_set.rb +0 -70
- data/lib/chef/knife/role_from_file.rb +0 -51
- data/lib/chef/knife/role_list.rb +0 -42
- data/lib/chef/knife/role_run_list_add.rb +0 -87
- data/lib/chef/knife/role_run_list_clear.rb +0 -55
- data/lib/chef/knife/role_run_list_remove.rb +0 -56
- data/lib/chef/knife/role_run_list_replace.rb +0 -60
- data/lib/chef/knife/role_run_list_set.rb +0 -69
- data/lib/chef/knife/role_show.rb +0 -48
- data/lib/chef/knife/search.rb +0 -194
- data/lib/chef/knife/serve.rb +0 -65
- data/lib/chef/knife/show.rb +0 -72
- data/lib/chef/knife/ssh.rb +0 -645
- data/lib/chef/knife/ssl_check.rb +0 -284
- data/lib/chef/knife/ssl_fetch.rb +0 -161
- data/lib/chef/knife/status.rb +0 -95
- data/lib/chef/knife/supermarket_download.rb +0 -121
- data/lib/chef/knife/supermarket_install.rb +0 -192
- data/lib/chef/knife/supermarket_list.rb +0 -76
- data/lib/chef/knife/supermarket_search.rb +0 -53
- data/lib/chef/knife/supermarket_share.rb +0 -166
- data/lib/chef/knife/supermarket_show.rb +0 -66
- data/lib/chef/knife/supermarket_unshare.rb +0 -61
- data/lib/chef/knife/tag_create.rb +0 -52
- data/lib/chef/knife/tag_delete.rb +0 -60
- data/lib/chef/knife/tag_list.rb +0 -47
- data/lib/chef/knife/upload.rb +0 -86
- data/lib/chef/knife/user_create.rb +0 -107
- data/lib/chef/knife/user_delete.rb +0 -44
- data/lib/chef/knife/user_dissociate.rb +0 -42
- data/lib/chef/knife/user_edit.rb +0 -52
- data/lib/chef/knife/user_invite_add.rb +0 -43
- data/lib/chef/knife/user_invite_list.rb +0 -34
- data/lib/chef/knife/user_invite_rescind.rb +0 -63
- data/lib/chef/knife/user_key_create.rb +0 -73
- data/lib/chef/knife/user_key_delete.rb +0 -80
- data/lib/chef/knife/user_key_edit.rb +0 -83
- data/lib/chef/knife/user_key_list.rb +0 -73
- data/lib/chef/knife/user_key_show.rb +0 -80
- data/lib/chef/knife/user_list.rb +0 -42
- data/lib/chef/knife/user_reregister.rb +0 -59
- data/lib/chef/knife/user_show.rb +0 -48
- data/lib/chef/knife/xargs.rb +0 -282
- data/lib/chef/knife/yaml_convert.rb +0 -91
- data/lib/chef/resource/user/dscl_user.rb +0 -35
- data/spec/data/knife-home/.chef/plugins/knife/example_home_subcommand.rb +0 -0
- data/spec/data/knife-site-subcommands/plugins/knife/example_subcommand.rb +0 -0
- data/spec/data/knife_subcommand/test_explicit_category.rb +0 -7
- data/spec/data/knife_subcommand/test_name_mapping.rb +0 -4
- data/spec/data/knife_subcommand/test_yourself.rb +0 -21
- data/spec/functional/knife/configure_spec.rb +0 -33
- data/spec/functional/knife/cookbook_delete_spec.rb +0 -156
- data/spec/functional/knife/exec_spec.rb +0 -55
- data/spec/functional/knife/rehash_spec.rb +0 -39
- data/spec/functional/knife/smoke_test.rb +0 -42
- data/spec/functional/knife/ssh_spec.rb +0 -352
- data/spec/functional/resource/user/dscl_spec.rb +0 -188
- data/spec/functional/resource/windows_service_spec.rb +0 -105
- data/spec/functional/win32/service_manager_spec.rb +0 -220
- data/spec/integration/knife/chef_fs_data_store_spec.rb +0 -557
- data/spec/integration/knife/chef_repo_path_spec.rb +0 -962
- data/spec/integration/knife/chef_repository_file_system_spec.rb +0 -200
- data/spec/integration/knife/chefignore_spec.rb +0 -301
- data/spec/integration/knife/client_bulk_delete_spec.rb +0 -131
- data/spec/integration/knife/client_create_spec.rb +0 -70
- data/spec/integration/knife/client_delete_spec.rb +0 -64
- data/spec/integration/knife/client_key_create_spec.rb +0 -66
- data/spec/integration/knife/client_key_delete_spec.rb +0 -43
- data/spec/integration/knife/client_key_list_spec.rb +0 -61
- data/spec/integration/knife/client_key_show_spec.rb +0 -45
- data/spec/integration/knife/client_list_spec.rb +0 -49
- data/spec/integration/knife/client_show_spec.rb +0 -37
- data/spec/integration/knife/common_options_spec.rb +0 -174
- data/spec/integration/knife/config_list_spec.rb +0 -220
- data/spec/integration/knife/config_show_spec.rb +0 -192
- data/spec/integration/knife/config_use_spec.rb +0 -198
- data/spec/integration/knife/cookbook_api_ipv6_spec.rb +0 -113
- data/spec/integration/knife/cookbook_bulk_delete_spec.rb +0 -65
- data/spec/integration/knife/cookbook_download_spec.rb +0 -72
- data/spec/integration/knife/cookbook_list_spec.rb +0 -55
- data/spec/integration/knife/cookbook_show_spec.rb +0 -149
- data/spec/integration/knife/cookbook_upload_spec.rb +0 -128
- data/spec/integration/knife/data_bag_create_spec.rb +0 -125
- data/spec/integration/knife/data_bag_delete_spec.rb +0 -59
- data/spec/integration/knife/data_bag_edit_spec.rb +0 -105
- data/spec/integration/knife/data_bag_from_file_spec.rb +0 -116
- data/spec/integration/knife/data_bag_list_spec.rb +0 -44
- data/spec/integration/knife/data_bag_show_spec.rb +0 -95
- data/spec/integration/knife/delete_spec.rb +0 -1018
- data/spec/integration/knife/deps_spec.rb +0 -703
- data/spec/integration/knife/diff_spec.rb +0 -605
- data/spec/integration/knife/download_spec.rb +0 -1336
- data/spec/integration/knife/environment_compare_spec.rb +0 -75
- data/spec/integration/knife/environment_create_spec.rb +0 -41
- data/spec/integration/knife/environment_delete_spec.rb +0 -37
- data/spec/integration/knife/environment_from_file_spec.rb +0 -116
- data/spec/integration/knife/environment_list_spec.rb +0 -42
- data/spec/integration/knife/environment_show_spec.rb +0 -77
- data/spec/integration/knife/list_spec.rb +0 -1060
- data/spec/integration/knife/node_bulk_delete_spec.rb +0 -52
- data/spec/integration/knife/node_create_spec.rb +0 -47
- data/spec/integration/knife/node_delete_spec.rb +0 -48
- data/spec/integration/knife/node_environment_set_spec.rb +0 -46
- data/spec/integration/knife/node_from_file_spec.rb +0 -59
- data/spec/integration/knife/node_list_spec.rb +0 -45
- data/spec/integration/knife/node_run_list_add_spec.rb +0 -54
- data/spec/integration/knife/node_run_list_remove_spec.rb +0 -36
- data/spec/integration/knife/node_run_list_set_spec.rb +0 -41
- data/spec/integration/knife/node_show_spec.rb +0 -36
- data/spec/integration/knife/raw_spec.rb +0 -297
- data/spec/integration/knife/redirection_spec.rb +0 -64
- data/spec/integration/knife/role_bulk_delete_spec.rb +0 -52
- data/spec/integration/knife/role_create_spec.rb +0 -41
- data/spec/integration/knife/role_delete_spec.rb +0 -48
- data/spec/integration/knife/role_from_file_spec.rb +0 -96
- data/spec/integration/knife/role_list_spec.rb +0 -45
- data/spec/integration/knife/role_show_spec.rb +0 -51
- data/spec/integration/knife/search_node_spec.rb +0 -40
- data/spec/integration/knife/serve_spec.rb +0 -92
- data/spec/integration/knife/show_spec.rb +0 -197
- data/spec/integration/knife/upload_spec.rb +0 -1617
- data/spec/support/shared/functional/knife.rb +0 -37
- data/spec/support/shared/functional/win32_service.rb +0 -57
- data/spec/support/shared/integration/knife_support.rb +0 -192
- data/spec/support/shared/unit/knife_shared.rb +0 -39
- data/spec/unit/application/knife_spec.rb +0 -241
- data/spec/unit/chef_fs/parallelizer_spec.rb +0 -479
- data/spec/unit/cookbook_site_streaming_uploader_spec.rb +0 -198
- data/spec/unit/knife/bootstrap/chef_vault_handler_spec.rb +0 -152
- data/spec/unit/knife/bootstrap/client_builder_spec.rb +0 -207
- data/spec/unit/knife/bootstrap/train_connector_spec.rb +0 -244
- data/spec/unit/knife/bootstrap_spec.rb +0 -2220
- data/spec/unit/knife/client_bulk_delete_spec.rb +0 -166
- data/spec/unit/knife/client_create_spec.rb +0 -169
- data/spec/unit/knife/client_delete_spec.rb +0 -99
- data/spec/unit/knife/client_edit_spec.rb +0 -53
- data/spec/unit/knife/client_list_spec.rb +0 -34
- data/spec/unit/knife/client_reregister_spec.rb +0 -62
- data/spec/unit/knife/client_show_spec.rb +0 -52
- data/spec/unit/knife/configure_client_spec.rb +0 -81
- data/spec/unit/knife/configure_spec.rb +0 -190
- data/spec/unit/knife/cookbook_bulk_delete_spec.rb +0 -87
- data/spec/unit/knife/cookbook_delete_spec.rb +0 -239
- data/spec/unit/knife/cookbook_download_spec.rb +0 -255
- data/spec/unit/knife/cookbook_list_spec.rb +0 -88
- data/spec/unit/knife/cookbook_metadata_from_file_spec.rb +0 -72
- data/spec/unit/knife/cookbook_metadata_spec.rb +0 -182
- data/spec/unit/knife/cookbook_show_spec.rb +0 -253
- data/spec/unit/knife/cookbook_upload_spec.rb +0 -364
- data/spec/unit/knife/core/bootstrap_context_spec.rb +0 -287
- data/spec/unit/knife/core/cookbook_scm_repo_spec.rb +0 -187
- data/spec/unit/knife/core/gem_glob_loader_spec.rb +0 -209
- data/spec/unit/knife/core/hashed_command_loader_spec.rb +0 -112
- data/spec/unit/knife/core/node_editor_spec.rb +0 -211
- data/spec/unit/knife/core/object_loader_spec.rb +0 -81
- data/spec/unit/knife/core/status_presenter_spec.rb +0 -54
- data/spec/unit/knife/core/subcommand_loader_spec.rb +0 -64
- data/spec/unit/knife/core/ui_spec.rb +0 -656
- data/spec/unit/knife/core/windows_bootstrap_context_spec.rb +0 -238
- data/spec/unit/knife/data_bag_create_spec.rb +0 -175
- data/spec/unit/knife/data_bag_edit_spec.rb +0 -126
- data/spec/unit/knife/data_bag_from_file_spec.rb +0 -174
- data/spec/unit/knife/data_bag_secret_options_spec.rb +0 -173
- data/spec/unit/knife/data_bag_show_spec.rb +0 -139
- data/spec/unit/knife/environment_compare_spec.rb +0 -112
- data/spec/unit/knife/environment_create_spec.rb +0 -91
- data/spec/unit/knife/environment_delete_spec.rb +0 -71
- data/spec/unit/knife/environment_edit_spec.rb +0 -79
- data/spec/unit/knife/environment_from_file_spec.rb +0 -90
- data/spec/unit/knife/environment_list_spec.rb +0 -54
- data/spec/unit/knife/environment_show_spec.rb +0 -52
- data/spec/unit/knife/key_create_spec.rb +0 -223
- data/spec/unit/knife/key_delete_spec.rb +0 -133
- data/spec/unit/knife/key_edit_spec.rb +0 -264
- data/spec/unit/knife/key_helper.rb +0 -74
- data/spec/unit/knife/key_list_spec.rb +0 -216
- data/spec/unit/knife/key_show_spec.rb +0 -126
- data/spec/unit/knife/node_bulk_delete_spec.rb +0 -94
- data/spec/unit/knife/node_delete_spec.rb +0 -77
- data/spec/unit/knife/node_edit_spec.rb +0 -116
- data/spec/unit/knife/node_environment_set_spec.rb +0 -61
- data/spec/unit/knife/node_from_file_spec.rb +0 -59
- data/spec/unit/knife/node_list_spec.rb +0 -62
- data/spec/unit/knife/node_policy_set_spec.rb +0 -122
- data/spec/unit/knife/node_run_list_add_spec.rb +0 -145
- data/spec/unit/knife/node_run_list_remove_spec.rb +0 -106
- data/spec/unit/knife/node_run_list_set_spec.rb +0 -115
- data/spec/unit/knife/node_show_spec.rb +0 -65
- data/spec/unit/knife/raw_spec.rb +0 -43
- data/spec/unit/knife/role_bulk_delete_spec.rb +0 -80
- data/spec/unit/knife/role_create_spec.rb +0 -80
- data/spec/unit/knife/role_delete_spec.rb +0 -67
- data/spec/unit/knife/role_edit_spec.rb +0 -77
- data/spec/unit/knife/role_env_run_list_add_spec.rb +0 -217
- data/spec/unit/knife/role_env_run_list_clear_spec.rb +0 -94
- data/spec/unit/knife/role_env_run_list_remove_spec.rb +0 -102
- data/spec/unit/knife/role_env_run_list_replace_spec.rb +0 -105
- data/spec/unit/knife/role_env_run_list_set_spec.rb +0 -99
- data/spec/unit/knife/role_from_file_spec.rb +0 -69
- data/spec/unit/knife/role_list_spec.rb +0 -54
- data/spec/unit/knife/role_run_list_add_spec.rb +0 -179
- data/spec/unit/knife/role_run_list_clear_spec.rb +0 -84
- data/spec/unit/knife/role_run_list_remove_spec.rb +0 -92
- data/spec/unit/knife/role_run_list_replace_spec.rb +0 -98
- data/spec/unit/knife/role_run_list_set_spec.rb +0 -89
- data/spec/unit/knife/role_show_spec.rb +0 -59
- data/spec/unit/knife/ssh_spec.rb +0 -403
- data/spec/unit/knife/ssl_check_spec.rb +0 -256
- data/spec/unit/knife/ssl_fetch_spec.rb +0 -222
- data/spec/unit/knife/status_spec.rb +0 -112
- data/spec/unit/knife/supermarket_download_spec.rb +0 -152
- data/spec/unit/knife/supermarket_install_spec.rb +0 -202
- data/spec/unit/knife/supermarket_list_spec.rb +0 -70
- data/spec/unit/knife/supermarket_search_spec.rb +0 -85
- data/spec/unit/knife/supermarket_share_spec.rb +0 -208
- data/spec/unit/knife/supermarket_unshare_spec.rb +0 -78
- data/spec/unit/knife/tag_create_spec.rb +0 -23
- data/spec/unit/knife/tag_delete_spec.rb +0 -25
- data/spec/unit/knife/tag_list_spec.rb +0 -23
- data/spec/unit/knife/user_create_spec.rb +0 -184
- data/spec/unit/knife/user_delete_spec.rb +0 -46
- data/spec/unit/knife/user_edit_spec.rb +0 -48
- data/spec/unit/knife/user_list_spec.rb +0 -36
- data/spec/unit/knife/user_reregister_spec.rb +0 -56
- data/spec/unit/knife/user_show_spec.rb +0 -46
- data/spec/unit/knife_spec.rb +0 -634
- data/spec/unit/provider/user/dscl_spec.rb +0 -699
- data/spec/unit/windows_service_spec.rb +0 -118
@@ -1,1336 +0,0 @@
|
|
1
|
-
#
|
2
|
-
# Author:: John Keiser (<jkeiser@chef.io>)
|
3
|
-
# Copyright:: Copyright (c) Chef Software Inc.
|
4
|
-
# License:: Apache License, Version 2.0
|
5
|
-
#
|
6
|
-
# Licensed under the Apache License, Version 2.0 (the "License");
|
7
|
-
# you may not use this file except in compliance with the License.
|
8
|
-
# You may obtain a copy of the License at
|
9
|
-
#
|
10
|
-
# http://www.apache.org/licenses/LICENSE-2.0
|
11
|
-
#
|
12
|
-
# Unless required by applicable law or agreed to in writing, software
|
13
|
-
# distributed under the License is distributed on an "AS IS" BASIS,
|
14
|
-
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
15
|
-
# See the License for the specific language governing permissions and
|
16
|
-
# limitations under the License.
|
17
|
-
|
18
|
-
require "spec_helper"
|
19
|
-
require "support/shared/integration/integration_helper"
|
20
|
-
require "chef/knife/download"
|
21
|
-
require "chef/knife/diff"
|
22
|
-
|
23
|
-
describe "knife download", :workstation do
|
24
|
-
include IntegrationSupport
|
25
|
-
include KnifeSupport
|
26
|
-
|
27
|
-
context "without versioned cookbooks" do
|
28
|
-
when_the_chef_server "has one of each thing" do
|
29
|
-
|
30
|
-
before do
|
31
|
-
client "x", {}
|
32
|
-
cookbook "x", "1.0.0"
|
33
|
-
data_bag "x", { "y" => {} }
|
34
|
-
environment "x", {}
|
35
|
-
node "x", {}
|
36
|
-
role "x", {}
|
37
|
-
user "x", {}
|
38
|
-
end
|
39
|
-
|
40
|
-
when_the_repository "has only top-level directories" do
|
41
|
-
before do
|
42
|
-
directory "clients"
|
43
|
-
directory "cookbooks"
|
44
|
-
directory "data_bags"
|
45
|
-
directory "environments"
|
46
|
-
directory "nodes"
|
47
|
-
directory "roles"
|
48
|
-
directory "users"
|
49
|
-
end
|
50
|
-
|
51
|
-
it "knife download downloads everything" do
|
52
|
-
knife("download /").should_succeed <<~EOM
|
53
|
-
Created /clients/chef-validator.json
|
54
|
-
Created /clients/chef-webui.json
|
55
|
-
Created /clients/x.json
|
56
|
-
Created /cookbooks/x
|
57
|
-
Created /cookbooks/x/metadata.rb
|
58
|
-
Created /data_bags/x
|
59
|
-
Created /data_bags/x/y.json
|
60
|
-
Created /environments/_default.json
|
61
|
-
Created /environments/x.json
|
62
|
-
Created /nodes/x.json
|
63
|
-
Created /roles/x.json
|
64
|
-
Created /users/admin.json
|
65
|
-
Created /users/x.json
|
66
|
-
EOM
|
67
|
-
knife("diff --name-status /").should_succeed ""
|
68
|
-
end
|
69
|
-
end
|
70
|
-
|
71
|
-
when_the_repository "has an identical copy of each thing" do
|
72
|
-
before do
|
73
|
-
file "clients/chef-validator.json", { "validator" => true, "public_key" => ChefZero::PUBLIC_KEY }
|
74
|
-
file "clients/chef-webui.json", { "admin" => true, "public_key" => ChefZero::PUBLIC_KEY }
|
75
|
-
file "clients/x.json", { "public_key" => ChefZero::PUBLIC_KEY }
|
76
|
-
file "cookbooks/x/metadata.rb", cb_metadata("x", "1.0.0")
|
77
|
-
file "data_bags/x/y.json", {}
|
78
|
-
file "environments/_default.json", { "description" => "The default Chef environment" }
|
79
|
-
file "environments/x.json", {}
|
80
|
-
file "nodes/x.json", { "normal" => { "tags" => [] } }
|
81
|
-
file "roles/x.json", {}
|
82
|
-
file "users/admin.json", { "admin" => true, "public_key" => ChefZero::PUBLIC_KEY }
|
83
|
-
file "users/x.json", { "public_key" => ChefZero::PUBLIC_KEY }
|
84
|
-
end
|
85
|
-
|
86
|
-
it "knife download makes no changes" do
|
87
|
-
knife("download /").should_succeed ""
|
88
|
-
knife("diff --name-status /").should_succeed ""
|
89
|
-
end
|
90
|
-
|
91
|
-
it "knife download --purge makes no changes" do
|
92
|
-
knife("download --purge /").should_succeed ""
|
93
|
-
knife("diff --name-status /").should_succeed ""
|
94
|
-
end
|
95
|
-
|
96
|
-
context "except the role file" do
|
97
|
-
before do
|
98
|
-
file "roles/x.json", <<~EOM
|
99
|
-
{
|
100
|
-
"chef_type": "role",
|
101
|
-
"default_attributes": {
|
102
|
-
},
|
103
|
-
"description": "blarghle",
|
104
|
-
"env_run_lists": {
|
105
|
-
},
|
106
|
-
"json_class": "Chef::Role",
|
107
|
-
"name": "x",
|
108
|
-
"override_attributes": {
|
109
|
-
},
|
110
|
-
"run_list": [
|
111
|
-
|
112
|
-
]
|
113
|
-
}
|
114
|
-
EOM
|
115
|
-
end
|
116
|
-
|
117
|
-
it "knife download changes the role" do
|
118
|
-
knife("download /").should_succeed "Updated /roles/x.json\n"
|
119
|
-
knife("diff --name-status /").should_succeed ""
|
120
|
-
end
|
121
|
-
|
122
|
-
it "knife download --no-diff does not change the role" do
|
123
|
-
knife("download --no-diff /").should_succeed ""
|
124
|
-
knife("diff --name-status /").should_succeed "M\t/roles/x.json\n"
|
125
|
-
end
|
126
|
-
end
|
127
|
-
|
128
|
-
context "except the role file is textually different, but not ACTUALLY different" do
|
129
|
-
before do
|
130
|
-
file "roles/x.json", <<~EOM
|
131
|
-
{
|
132
|
-
"chef_type": "role",
|
133
|
-
"default_attributes": {
|
134
|
-
},
|
135
|
-
"env_run_lists": {
|
136
|
-
},
|
137
|
-
"json_class": "Chef::Role",
|
138
|
-
"name": "x",
|
139
|
-
"description": "",
|
140
|
-
"override_attributes": {
|
141
|
-
},
|
142
|
-
"run_list": [
|
143
|
-
|
144
|
-
]
|
145
|
-
}
|
146
|
-
EOM
|
147
|
-
end
|
148
|
-
|
149
|
-
it "knife download / does not change anything" do
|
150
|
-
knife("download /").should_succeed ""
|
151
|
-
knife("diff --name-status /").should_succeed ""
|
152
|
-
end
|
153
|
-
end
|
154
|
-
|
155
|
-
context "as well as one extra copy of each thing" do
|
156
|
-
before do
|
157
|
-
file "clients/y.json", { "public_key" => ChefZero::PUBLIC_KEY }
|
158
|
-
file "cookbooks/x/blah.rb", ""
|
159
|
-
file "cookbooks/y/metadata.rb", cb_metadata("x", "1.0.0")
|
160
|
-
file "data_bags/x/z.json", {}
|
161
|
-
file "data_bags/y/zz.json", {}
|
162
|
-
file "environments/y.json", {}
|
163
|
-
file "nodes/y.json", {}
|
164
|
-
file "roles/y.json", {}
|
165
|
-
file "users/y.json", { "public_key" => ChefZero::PUBLIC_KEY }
|
166
|
-
end
|
167
|
-
|
168
|
-
it "knife download does nothing" do
|
169
|
-
knife("download /").should_succeed ""
|
170
|
-
knife("diff --name-status /").should_succeed <<~EOM
|
171
|
-
A\t/clients/y.json
|
172
|
-
A\t/cookbooks/x/blah.rb
|
173
|
-
A\t/cookbooks/y
|
174
|
-
A\t/data_bags/x/z.json
|
175
|
-
A\t/data_bags/y
|
176
|
-
A\t/environments/y.json
|
177
|
-
A\t/nodes/y.json
|
178
|
-
A\t/roles/y.json
|
179
|
-
A\t/users/y.json
|
180
|
-
EOM
|
181
|
-
end
|
182
|
-
|
183
|
-
it "knife download --purge deletes the extra files" do
|
184
|
-
knife("download --purge /").should_succeed <<~EOM
|
185
|
-
Deleted extra entry /clients/y.json (purge is on)
|
186
|
-
Deleted extra entry /cookbooks/x/blah.rb (purge is on)
|
187
|
-
Deleted extra entry /cookbooks/y (purge is on)
|
188
|
-
Deleted extra entry /data_bags/x/z.json (purge is on)
|
189
|
-
Deleted extra entry /data_bags/y (purge is on)
|
190
|
-
Deleted extra entry /environments/y.json (purge is on)
|
191
|
-
Deleted extra entry /nodes/y.json (purge is on)
|
192
|
-
Deleted extra entry /roles/y.json (purge is on)
|
193
|
-
Deleted extra entry /users/y.json (purge is on)
|
194
|
-
EOM
|
195
|
-
knife("diff --name-status /").should_succeed ""
|
196
|
-
end
|
197
|
-
end
|
198
|
-
end
|
199
|
-
|
200
|
-
when_the_repository "is empty" do
|
201
|
-
it "knife download creates the extra files" do
|
202
|
-
knife("download /").should_succeed <<~EOM
|
203
|
-
Created /clients
|
204
|
-
Created /clients/chef-validator.json
|
205
|
-
Created /clients/chef-webui.json
|
206
|
-
Created /clients/x.json
|
207
|
-
Created /cookbooks
|
208
|
-
Created /cookbooks/x
|
209
|
-
Created /cookbooks/x/metadata.rb
|
210
|
-
Created /data_bags
|
211
|
-
Created /data_bags/x
|
212
|
-
Created /data_bags/x/y.json
|
213
|
-
Created /environments
|
214
|
-
Created /environments/_default.json
|
215
|
-
Created /environments/x.json
|
216
|
-
Created /nodes
|
217
|
-
Created /nodes/x.json
|
218
|
-
Created /roles
|
219
|
-
Created /roles/x.json
|
220
|
-
Created /users
|
221
|
-
Created /users/admin.json
|
222
|
-
Created /users/x.json
|
223
|
-
EOM
|
224
|
-
knife("diff --name-status /").should_succeed ""
|
225
|
-
end
|
226
|
-
|
227
|
-
it "knife download --no-diff creates the extra files" do
|
228
|
-
knife("download --no-diff /").should_succeed <<~EOM
|
229
|
-
Created /clients
|
230
|
-
Created /clients/chef-validator.json
|
231
|
-
Created /clients/chef-webui.json
|
232
|
-
Created /clients/x.json
|
233
|
-
Created /cookbooks
|
234
|
-
Created /cookbooks/x
|
235
|
-
Created /cookbooks/x/metadata.rb
|
236
|
-
Created /data_bags
|
237
|
-
Created /data_bags/x
|
238
|
-
Created /data_bags/x/y.json
|
239
|
-
Created /environments
|
240
|
-
Created /environments/_default.json
|
241
|
-
Created /environments/x.json
|
242
|
-
Created /nodes
|
243
|
-
Created /nodes/x.json
|
244
|
-
Created /roles
|
245
|
-
Created /roles/x.json
|
246
|
-
Created /users
|
247
|
-
Created /users/admin.json
|
248
|
-
Created /users/x.json
|
249
|
-
EOM
|
250
|
-
knife("diff --name-status /").should_succeed ""
|
251
|
-
end
|
252
|
-
|
253
|
-
context "when current directory is top level" do
|
254
|
-
before do
|
255
|
-
cwd "."
|
256
|
-
end
|
257
|
-
|
258
|
-
it "knife download with no parameters reports an error" do
|
259
|
-
knife("download").should_fail "FATAL: You must specify at least one argument. If you want to download everything in this directory, run \"knife download .\"\n", stdout: /USAGE/
|
260
|
-
end
|
261
|
-
end
|
262
|
-
end
|
263
|
-
end
|
264
|
-
|
265
|
-
# Test download of an item when the other end doesn't even have the container
|
266
|
-
when_the_repository "is empty" do
|
267
|
-
when_the_chef_server "has two data bag items" do
|
268
|
-
before do
|
269
|
-
data_bag "x", { "y" => {}, "z" => {} }
|
270
|
-
end
|
271
|
-
|
272
|
-
it "knife download of one data bag item itself succeeds" do
|
273
|
-
knife("download /data_bags/x/y.json").should_succeed <<~EOM
|
274
|
-
Created /data_bags
|
275
|
-
Created /data_bags/x
|
276
|
-
Created /data_bags/x/y.json
|
277
|
-
EOM
|
278
|
-
knife("diff --name-status /data_bags").should_succeed <<~EOM
|
279
|
-
D\t/data_bags/x/z.json
|
280
|
-
EOM
|
281
|
-
end
|
282
|
-
|
283
|
-
it "knife download /data_bags/x /data_bags/x/y.json downloads x once" do
|
284
|
-
knife("download /data_bags/x /data_bags/x/y.json").should_succeed <<~EOM
|
285
|
-
Created /data_bags
|
286
|
-
Created /data_bags/x
|
287
|
-
Created /data_bags/x/y.json
|
288
|
-
Created /data_bags/x/z.json
|
289
|
-
EOM
|
290
|
-
end
|
291
|
-
end
|
292
|
-
end
|
293
|
-
|
294
|
-
when_the_repository "has three data bag items" do
|
295
|
-
before do
|
296
|
-
file "data_bags/x/deleted.json", <<~EOM
|
297
|
-
{
|
298
|
-
"id": "deleted"
|
299
|
-
}
|
300
|
-
EOM
|
301
|
-
file "data_bags/x/modified.json", <<~EOM
|
302
|
-
{
|
303
|
-
"id": "modified"
|
304
|
-
}
|
305
|
-
EOM
|
306
|
-
file "data_bags/x/unmodified.json", <<~EOM
|
307
|
-
{
|
308
|
-
"id": "unmodified"
|
309
|
-
}
|
310
|
-
EOM
|
311
|
-
end
|
312
|
-
|
313
|
-
when_the_chef_server "has a modified, unmodified, added and deleted data bag item" do
|
314
|
-
before do
|
315
|
-
data_bag "x", {
|
316
|
-
"added" => {},
|
317
|
-
"modified" => { "foo" => "bar" },
|
318
|
-
"unmodified" => {},
|
319
|
-
}
|
320
|
-
end
|
321
|
-
|
322
|
-
it "knife download of the modified file succeeds" do
|
323
|
-
knife("download /data_bags/x/modified.json").should_succeed <<~EOM
|
324
|
-
Updated /data_bags/x/modified.json
|
325
|
-
EOM
|
326
|
-
knife("diff --name-status /data_bags").should_succeed <<~EOM
|
327
|
-
D\t/data_bags/x/added.json
|
328
|
-
A\t/data_bags/x/deleted.json
|
329
|
-
EOM
|
330
|
-
end
|
331
|
-
it "knife download of the unmodified file does nothing" do
|
332
|
-
knife("download /data_bags/x/unmodified.json").should_succeed ""
|
333
|
-
knife("diff --name-status /data_bags").should_succeed <<~EOM
|
334
|
-
D\t/data_bags/x/added.json
|
335
|
-
M\t/data_bags/x/modified.json
|
336
|
-
A\t/data_bags/x/deleted.json
|
337
|
-
EOM
|
338
|
-
end
|
339
|
-
it "knife download of the added file succeeds" do
|
340
|
-
knife("download /data_bags/x/added.json").should_succeed <<~EOM
|
341
|
-
Created /data_bags/x/added.json
|
342
|
-
EOM
|
343
|
-
knife("diff --name-status /data_bags").should_succeed <<~EOM
|
344
|
-
M\t/data_bags/x/modified.json
|
345
|
-
A\t/data_bags/x/deleted.json
|
346
|
-
EOM
|
347
|
-
end
|
348
|
-
it "knife download of the deleted file does nothing" do
|
349
|
-
knife("download /data_bags/x/deleted.json").should_succeed ""
|
350
|
-
knife("diff --name-status /data_bags").should_succeed <<~EOM
|
351
|
-
D\t/data_bags/x/added.json
|
352
|
-
M\t/data_bags/x/modified.json
|
353
|
-
A\t/data_bags/x/deleted.json
|
354
|
-
EOM
|
355
|
-
end
|
356
|
-
it "knife download --purge of the deleted file deletes it" do
|
357
|
-
knife("download --purge /data_bags/x/deleted.json").should_succeed <<~EOM
|
358
|
-
Deleted extra entry /data_bags/x/deleted.json (purge is on)
|
359
|
-
EOM
|
360
|
-
knife("diff --name-status /data_bags").should_succeed <<~EOM
|
361
|
-
D\t/data_bags/x/added.json
|
362
|
-
M\t/data_bags/x/modified.json
|
363
|
-
EOM
|
364
|
-
end
|
365
|
-
it "knife download of the entire data bag downloads everything" do
|
366
|
-
knife("download /data_bags/x").should_succeed <<~EOM
|
367
|
-
Created /data_bags/x/added.json
|
368
|
-
Updated /data_bags/x/modified.json
|
369
|
-
EOM
|
370
|
-
knife("diff --name-status /data_bags").should_succeed <<~EOM
|
371
|
-
A\t/data_bags/x/deleted.json
|
372
|
-
EOM
|
373
|
-
end
|
374
|
-
it "knife download --purge of the entire data bag downloads everything" do
|
375
|
-
knife("download --purge /data_bags/x").should_succeed <<~EOM
|
376
|
-
Created /data_bags/x/added.json
|
377
|
-
Updated /data_bags/x/modified.json
|
378
|
-
Deleted extra entry /data_bags/x/deleted.json (purge is on)
|
379
|
-
EOM
|
380
|
-
knife("diff --name-status /data_bags").should_succeed ""
|
381
|
-
end
|
382
|
-
context "when cwd is the /data_bags directory" do
|
383
|
-
before do
|
384
|
-
cwd "data_bags"
|
385
|
-
end
|
386
|
-
it "knife download fails" do
|
387
|
-
knife("download").should_fail "FATAL: You must specify at least one argument. If you want to download everything in this directory, run \"knife download .\"\n", stdout: /USAGE/
|
388
|
-
end
|
389
|
-
it "knife download --purge . downloads everything" do
|
390
|
-
knife("download --purge .").should_succeed <<~EOM
|
391
|
-
Created x/added.json
|
392
|
-
Updated x/modified.json
|
393
|
-
Deleted extra entry x/deleted.json (purge is on)
|
394
|
-
EOM
|
395
|
-
knife("diff --name-status /data_bags").should_succeed ""
|
396
|
-
end
|
397
|
-
it "knife download --purge * downloads everything" do
|
398
|
-
knife("download --purge *").should_succeed <<~EOM
|
399
|
-
Created x/added.json
|
400
|
-
Updated x/modified.json
|
401
|
-
Deleted extra entry x/deleted.json (purge is on)
|
402
|
-
EOM
|
403
|
-
knife("diff --name-status /data_bags").should_succeed ""
|
404
|
-
end
|
405
|
-
end
|
406
|
-
end
|
407
|
-
end
|
408
|
-
|
409
|
-
when_the_repository "has a cookbook" do
|
410
|
-
before do
|
411
|
-
file "cookbooks/x/metadata.rb", cb_metadata("x", "1.0.0")
|
412
|
-
file "cookbooks/x/z.rb", ""
|
413
|
-
end
|
414
|
-
|
415
|
-
when_the_chef_server "has a modified, added and deleted file for the cookbook" do
|
416
|
-
before do
|
417
|
-
cookbook "x", "1.0.0", { "metadata.rb" => cb_metadata("x", "1.0.0", "#extra content"), "y.rb" => "hi" }
|
418
|
-
end
|
419
|
-
|
420
|
-
it "knife download of a modified file succeeds" do
|
421
|
-
knife("download /cookbooks/x/metadata.rb").should_succeed "Updated /cookbooks/x/metadata.rb\n"
|
422
|
-
knife("diff --name-status /cookbooks").should_succeed <<~EOM
|
423
|
-
D\t/cookbooks/x/y.rb
|
424
|
-
A\t/cookbooks/x/z.rb
|
425
|
-
EOM
|
426
|
-
end
|
427
|
-
it "knife download of a deleted file does nothing" do
|
428
|
-
knife("download /cookbooks/x/z.rb").should_succeed ""
|
429
|
-
knife("diff --name-status /cookbooks").should_succeed <<~EOM
|
430
|
-
M\t/cookbooks/x/metadata.rb
|
431
|
-
D\t/cookbooks/x/y.rb
|
432
|
-
A\t/cookbooks/x/z.rb
|
433
|
-
EOM
|
434
|
-
end
|
435
|
-
it "knife download --purge of a deleted file succeeds" do
|
436
|
-
knife("download --purge /cookbooks/x/z.rb").should_succeed "Deleted extra entry /cookbooks/x/z.rb (purge is on)\n"
|
437
|
-
knife("diff --name-status /cookbooks").should_succeed <<~EOM
|
438
|
-
M\t/cookbooks/x/metadata.rb
|
439
|
-
D\t/cookbooks/x/y.rb
|
440
|
-
EOM
|
441
|
-
end
|
442
|
-
it "knife download of an added file succeeds" do
|
443
|
-
knife("download /cookbooks/x/y.rb").should_succeed "Created /cookbooks/x/y.rb\n"
|
444
|
-
knife("diff --name-status /cookbooks").should_succeed <<~EOM
|
445
|
-
M\t/cookbooks/x/metadata.rb
|
446
|
-
A\t/cookbooks/x/z.rb
|
447
|
-
EOM
|
448
|
-
end
|
449
|
-
it "knife download of the cookbook itself succeeds" do
|
450
|
-
knife("download /cookbooks/x").should_succeed <<~EOM
|
451
|
-
Updated /cookbooks/x/metadata.rb
|
452
|
-
Created /cookbooks/x/y.rb
|
453
|
-
EOM
|
454
|
-
knife("diff --name-status /cookbooks").should_succeed <<~EOM
|
455
|
-
A\t/cookbooks/x/z.rb
|
456
|
-
EOM
|
457
|
-
end
|
458
|
-
it "knife download --purge of the cookbook itself succeeds" do
|
459
|
-
knife("download --purge /cookbooks/x").should_succeed <<~EOM
|
460
|
-
Updated /cookbooks/x/metadata.rb
|
461
|
-
Created /cookbooks/x/y.rb
|
462
|
-
Deleted extra entry /cookbooks/x/z.rb (purge is on)
|
463
|
-
EOM
|
464
|
-
knife("diff --name-status /cookbooks").should_succeed ""
|
465
|
-
end
|
466
|
-
end
|
467
|
-
end
|
468
|
-
|
469
|
-
when_the_repository "has a cookbook" do
|
470
|
-
before do
|
471
|
-
file "cookbooks/x/metadata.rb", cb_metadata("x", "1.0.0")
|
472
|
-
file "cookbooks/x/onlyin1.0.0.rb", "old_text"
|
473
|
-
end
|
474
|
-
|
475
|
-
when_the_chef_server "has a later version for the cookbook" do
|
476
|
-
before do
|
477
|
-
cookbook "x", "1.0.0", { "onlyin1.0.0.rb" => "" }
|
478
|
-
cookbook "x", "1.0.1", { "onlyin1.0.1.rb" => "hi" }
|
479
|
-
end
|
480
|
-
|
481
|
-
it "knife download /cookbooks/x downloads the latest version" do
|
482
|
-
knife("download --purge /cookbooks/x").should_succeed <<~EOM
|
483
|
-
Updated /cookbooks/x/metadata.rb
|
484
|
-
Created /cookbooks/x/onlyin1.0.1.rb
|
485
|
-
Deleted extra entry /cookbooks/x/onlyin1.0.0.rb (purge is on)
|
486
|
-
EOM
|
487
|
-
knife("diff --name-status /cookbooks").should_succeed ""
|
488
|
-
end
|
489
|
-
end
|
490
|
-
|
491
|
-
when_the_chef_server "has an earlier version for the cookbook" do
|
492
|
-
before do
|
493
|
-
cookbook "x", "1.0.0", { "onlyin1.0.0.rb" => "" }
|
494
|
-
cookbook "x", "0.9.9", { "onlyin0.9.9.rb" => "hi" }
|
495
|
-
end
|
496
|
-
|
497
|
-
it "knife download /cookbooks/x downloads the updated file" do
|
498
|
-
knife("download --purge /cookbooks/x").should_succeed <<~EOM
|
499
|
-
Updated /cookbooks/x/onlyin1.0.0.rb
|
500
|
-
EOM
|
501
|
-
knife("diff --name-status /cookbooks").should_succeed ""
|
502
|
-
end
|
503
|
-
end
|
504
|
-
|
505
|
-
when_the_chef_server "has a later version for the cookbook, and no current version" do
|
506
|
-
before do
|
507
|
-
cookbook "x", "1.0.1", { "onlyin1.0.1.rb" => "hi" }
|
508
|
-
end
|
509
|
-
|
510
|
-
it "knife download /cookbooks/x downloads the latest version" do
|
511
|
-
knife("download --purge /cookbooks/x").should_succeed <<~EOM
|
512
|
-
Updated /cookbooks/x/metadata.rb
|
513
|
-
Created /cookbooks/x/onlyin1.0.1.rb
|
514
|
-
Deleted extra entry /cookbooks/x/onlyin1.0.0.rb (purge is on)
|
515
|
-
EOM
|
516
|
-
knife("diff --name-status /cookbooks").should_succeed ""
|
517
|
-
end
|
518
|
-
end
|
519
|
-
|
520
|
-
when_the_chef_server "has an earlier version for the cookbook, and no current version" do
|
521
|
-
before do
|
522
|
-
cookbook "x", "0.9.9", { "onlyin0.9.9.rb" => "hi" }
|
523
|
-
end
|
524
|
-
|
525
|
-
it "knife download /cookbooks/x downloads the old version" do
|
526
|
-
knife("download --purge /cookbooks/x").should_succeed <<~EOM
|
527
|
-
Updated /cookbooks/x/metadata.rb
|
528
|
-
Created /cookbooks/x/onlyin0.9.9.rb
|
529
|
-
Deleted extra entry /cookbooks/x/onlyin1.0.0.rb (purge is on)
|
530
|
-
EOM
|
531
|
-
knife("diff --name-status /cookbooks").should_succeed ""
|
532
|
-
end
|
533
|
-
end
|
534
|
-
end
|
535
|
-
|
536
|
-
when_the_chef_server "has a role" do
|
537
|
-
before do
|
538
|
-
role "x", {}
|
539
|
-
end
|
540
|
-
when_the_repository "has the role in ruby" do
|
541
|
-
before do
|
542
|
-
file "roles/x.rb", <<~EOM
|
543
|
-
name "x"
|
544
|
-
description "x"
|
545
|
-
EOM
|
546
|
-
end
|
547
|
-
|
548
|
-
it "knife download refuses to change the role" do
|
549
|
-
knife("download /roles/x.json").should_succeed "", stderr: "WARNING: /roles/x.rb cannot be updated (can't safely update ruby files).\n"
|
550
|
-
knife("diff --name-status /roles/x.json").should_succeed "M\t/roles/x.rb\n"
|
551
|
-
end
|
552
|
-
end
|
553
|
-
end
|
554
|
-
|
555
|
-
when_the_chef_server "has an environment" do
|
556
|
-
before do
|
557
|
-
environment "x", {}
|
558
|
-
end
|
559
|
-
when_the_repository "has an environment with bad JSON" do
|
560
|
-
before do
|
561
|
-
file "environments/x.json", "{"
|
562
|
-
end
|
563
|
-
it "knife download succeeds" do
|
564
|
-
warning = <<~EOH
|
565
|
-
WARN: Parse error reading #{path_to("environments/x.json")} as JSON: parse error: premature EOF
|
566
|
-
{
|
567
|
-
(right here) ------^
|
568
|
-
|
569
|
-
EOH
|
570
|
-
knife("download /environments/x.json").should_succeed "Updated /environments/x.json\n", stderr: warning
|
571
|
-
knife("diff --name-status /environments/x.json").should_succeed ""
|
572
|
-
end
|
573
|
-
end
|
574
|
-
|
575
|
-
when_the_repository "has the same environment with the wrong name in the file" do
|
576
|
-
before do
|
577
|
-
file "environments/x.json", { "name" => "y" }
|
578
|
-
end
|
579
|
-
it "knife download succeeds" do
|
580
|
-
knife("download /environments/x.json").should_succeed "Updated /environments/x.json\n"
|
581
|
-
knife("diff --name-status /environments/x.json").should_succeed ""
|
582
|
-
end
|
583
|
-
end
|
584
|
-
|
585
|
-
when_the_repository "has the same environment with no name in the file" do
|
586
|
-
before do
|
587
|
-
file "environments/x.json", { "description" => "hi" }
|
588
|
-
end
|
589
|
-
it "knife download succeeds" do
|
590
|
-
knife("download /environments/x.json").should_succeed "Updated /environments/x.json\n"
|
591
|
-
knife("diff --name-status /environments/x.json").should_succeed ""
|
592
|
-
end
|
593
|
-
end
|
594
|
-
end
|
595
|
-
end # without versioned cookbooks
|
596
|
-
|
597
|
-
context "with versioned cookbooks" do
|
598
|
-
before { Chef::Config[:versioned_cookbooks] = true }
|
599
|
-
|
600
|
-
when_the_chef_server "has one of each thing" do
|
601
|
-
before do
|
602
|
-
client "x", {}
|
603
|
-
cookbook "x", "1.0.0"
|
604
|
-
data_bag "x", { "y" => {} }
|
605
|
-
environment "x", {}
|
606
|
-
node "x", {}
|
607
|
-
role "x", {}
|
608
|
-
user "x", {}
|
609
|
-
end
|
610
|
-
|
611
|
-
when_the_repository "has only top-level directories" do
|
612
|
-
before do
|
613
|
-
directory "clients"
|
614
|
-
directory "cookbooks"
|
615
|
-
directory "data_bags"
|
616
|
-
directory "environments"
|
617
|
-
directory "nodes"
|
618
|
-
directory "roles"
|
619
|
-
directory "users"
|
620
|
-
end
|
621
|
-
|
622
|
-
it "knife download downloads everything" do
|
623
|
-
knife("download /").should_succeed <<~EOM
|
624
|
-
Created /clients/chef-validator.json
|
625
|
-
Created /clients/chef-webui.json
|
626
|
-
Created /clients/x.json
|
627
|
-
Created /cookbooks/x-1.0.0
|
628
|
-
Created /cookbooks/x-1.0.0/metadata.rb
|
629
|
-
Created /data_bags/x
|
630
|
-
Created /data_bags/x/y.json
|
631
|
-
Created /environments/_default.json
|
632
|
-
Created /environments/x.json
|
633
|
-
Created /nodes/x.json
|
634
|
-
Created /roles/x.json
|
635
|
-
Created /users/admin.json
|
636
|
-
Created /users/x.json
|
637
|
-
EOM
|
638
|
-
knife("diff --name-status /").should_succeed ""
|
639
|
-
end
|
640
|
-
end
|
641
|
-
|
642
|
-
when_the_repository "has an identical copy of each thing" do
|
643
|
-
before do
|
644
|
-
file "clients/chef-validator.json", { "validator" => true, "public_key" => ChefZero::PUBLIC_KEY }
|
645
|
-
file "clients/chef-webui.json", { "admin" => true, "public_key" => ChefZero::PUBLIC_KEY }
|
646
|
-
file "clients/x.json", { "public_key" => ChefZero::PUBLIC_KEY }
|
647
|
-
file "cookbooks/x-1.0.0/metadata.rb", cb_metadata("x", "1.0.0")
|
648
|
-
file "data_bags/x/y.json", {}
|
649
|
-
file "environments/_default.json", { "description" => "The default Chef environment" }
|
650
|
-
file "environments/x.json", {}
|
651
|
-
file "nodes/x.json", { "normal" => { "tags" => [] } }
|
652
|
-
file "roles/x.json", {}
|
653
|
-
file "users/admin.json", { "admin" => true, "public_key" => ChefZero::PUBLIC_KEY }
|
654
|
-
file "users/x.json", { "public_key" => ChefZero::PUBLIC_KEY }
|
655
|
-
end
|
656
|
-
|
657
|
-
it "knife download makes no changes" do
|
658
|
-
knife("download /").should_succeed ""
|
659
|
-
knife("diff --name-status /").should_succeed ""
|
660
|
-
end
|
661
|
-
|
662
|
-
it "knife download --purge makes no changes" do
|
663
|
-
knife("download --purge /").should_succeed ""
|
664
|
-
knife("diff --name-status /").should_succeed ""
|
665
|
-
end
|
666
|
-
|
667
|
-
context "except the role file" do
|
668
|
-
before do
|
669
|
-
file "roles/x.json", { "description" => "blarghle" }
|
670
|
-
end
|
671
|
-
|
672
|
-
it "knife download changes the role" do
|
673
|
-
knife("download /").should_succeed "Updated /roles/x.json\n"
|
674
|
-
knife("diff --name-status /").should_succeed ""
|
675
|
-
end
|
676
|
-
end
|
677
|
-
|
678
|
-
context "except the role file is textually different, but not ACTUALLY different" do
|
679
|
-
before do
|
680
|
-
file "roles/x.json", <<~EOM
|
681
|
-
{
|
682
|
-
"chef_type": "role" ,
|
683
|
-
"default_attributes": {
|
684
|
-
},
|
685
|
-
"env_run_lists": {
|
686
|
-
},
|
687
|
-
"json_class": "Chef::Role",
|
688
|
-
"name": "x",
|
689
|
-
"description": "",
|
690
|
-
"override_attributes": {
|
691
|
-
},
|
692
|
-
"run_list": [
|
693
|
-
|
694
|
-
]
|
695
|
-
}
|
696
|
-
EOM
|
697
|
-
end
|
698
|
-
|
699
|
-
it "knife download / does not change anything" do
|
700
|
-
knife("download /").should_succeed ""
|
701
|
-
knife("diff --name-status /").should_succeed ""
|
702
|
-
end
|
703
|
-
end
|
704
|
-
|
705
|
-
context "as well as one extra copy of each thing" do
|
706
|
-
before do
|
707
|
-
file "clients/y.json", { "public_key" => ChefZero::PUBLIC_KEY }
|
708
|
-
file "cookbooks/x-1.0.0/blah.rb", ""
|
709
|
-
file "cookbooks/x-2.0.0/metadata.rb", 'version "2.0.0"'
|
710
|
-
file "cookbooks/y-1.0.0/metadata.rb", 'version "1.0.0"'
|
711
|
-
file "data_bags/x/z.json", {}
|
712
|
-
file "data_bags/y/zz.json", {}
|
713
|
-
file "environments/y.json", {}
|
714
|
-
file "nodes/y.json", {}
|
715
|
-
file "roles/y.json", {}
|
716
|
-
file "users/y.json", { "public_key" => ChefZero::PUBLIC_KEY }
|
717
|
-
end
|
718
|
-
|
719
|
-
it "knife download does nothing" do
|
720
|
-
knife("download /").should_succeed ""
|
721
|
-
knife("diff --name-status /").should_succeed <<~EOM
|
722
|
-
A\t/clients/y.json
|
723
|
-
A\t/cookbooks/x-1.0.0/blah.rb
|
724
|
-
A\t/cookbooks/x-2.0.0
|
725
|
-
A\t/cookbooks/y-1.0.0
|
726
|
-
A\t/data_bags/x/z.json
|
727
|
-
A\t/data_bags/y
|
728
|
-
A\t/environments/y.json
|
729
|
-
A\t/nodes/y.json
|
730
|
-
A\t/roles/y.json
|
731
|
-
A\t/users/y.json
|
732
|
-
EOM
|
733
|
-
end
|
734
|
-
|
735
|
-
it "knife download --purge deletes the extra files" do
|
736
|
-
knife("download --purge /").should_succeed <<~EOM
|
737
|
-
Deleted extra entry /clients/y.json (purge is on)
|
738
|
-
Deleted extra entry /cookbooks/x-1.0.0/blah.rb (purge is on)
|
739
|
-
Deleted extra entry /cookbooks/x-2.0.0 (purge is on)
|
740
|
-
Deleted extra entry /cookbooks/y-1.0.0 (purge is on)
|
741
|
-
Deleted extra entry /data_bags/x/z.json (purge is on)
|
742
|
-
Deleted extra entry /data_bags/y (purge is on)
|
743
|
-
Deleted extra entry /environments/y.json (purge is on)
|
744
|
-
Deleted extra entry /nodes/y.json (purge is on)
|
745
|
-
Deleted extra entry /roles/y.json (purge is on)
|
746
|
-
Deleted extra entry /users/y.json (purge is on)
|
747
|
-
EOM
|
748
|
-
knife("diff --name-status /").should_succeed ""
|
749
|
-
end
|
750
|
-
end
|
751
|
-
end
|
752
|
-
|
753
|
-
when_the_repository "is empty" do
|
754
|
-
it "knife download creates the extra files" do
|
755
|
-
knife("download /").should_succeed <<~EOM
|
756
|
-
Created /clients
|
757
|
-
Created /clients/chef-validator.json
|
758
|
-
Created /clients/chef-webui.json
|
759
|
-
Created /clients/x.json
|
760
|
-
Created /cookbooks
|
761
|
-
Created /cookbooks/x-1.0.0
|
762
|
-
Created /cookbooks/x-1.0.0/metadata.rb
|
763
|
-
Created /data_bags
|
764
|
-
Created /data_bags/x
|
765
|
-
Created /data_bags/x/y.json
|
766
|
-
Created /environments
|
767
|
-
Created /environments/_default.json
|
768
|
-
Created /environments/x.json
|
769
|
-
Created /nodes
|
770
|
-
Created /nodes/x.json
|
771
|
-
Created /roles
|
772
|
-
Created /roles/x.json
|
773
|
-
Created /users
|
774
|
-
Created /users/admin.json
|
775
|
-
Created /users/x.json
|
776
|
-
EOM
|
777
|
-
knife("diff --name-status /").should_succeed ""
|
778
|
-
end
|
779
|
-
|
780
|
-
context "when current directory is top level" do
|
781
|
-
before do
|
782
|
-
cwd "."
|
783
|
-
end
|
784
|
-
it "knife download with no parameters reports an error" do
|
785
|
-
knife("download").should_fail "FATAL: You must specify at least one argument. If you want to download everything in this directory, run \"knife download .\"\n", stdout: /USAGE/
|
786
|
-
end
|
787
|
-
end
|
788
|
-
end
|
789
|
-
end
|
790
|
-
|
791
|
-
# Test download of an item when the other end doesn't even have the container
|
792
|
-
when_the_repository "is empty" do
|
793
|
-
when_the_chef_server "has two data bag items" do
|
794
|
-
before do
|
795
|
-
data_bag "x", { "y" => {}, "z" => {} }
|
796
|
-
end
|
797
|
-
|
798
|
-
it "knife download of one data bag item itself succeeds" do
|
799
|
-
knife("download /data_bags/x/y.json").should_succeed <<~EOM
|
800
|
-
Created /data_bags
|
801
|
-
Created /data_bags/x
|
802
|
-
Created /data_bags/x/y.json
|
803
|
-
EOM
|
804
|
-
knife("diff --name-status /data_bags").should_succeed <<~EOM
|
805
|
-
D\t/data_bags/x/z.json
|
806
|
-
EOM
|
807
|
-
end
|
808
|
-
end
|
809
|
-
end
|
810
|
-
|
811
|
-
when_the_repository "has three data bag items" do
|
812
|
-
before do
|
813
|
-
file "data_bags/x/deleted.json", <<~EOM
|
814
|
-
{
|
815
|
-
"id": "deleted"
|
816
|
-
}
|
817
|
-
EOM
|
818
|
-
file "data_bags/x/modified.json", <<~EOM
|
819
|
-
{
|
820
|
-
"id": "modified"
|
821
|
-
}
|
822
|
-
EOM
|
823
|
-
file "data_bags/x/unmodified.json", <<~EOM
|
824
|
-
{
|
825
|
-
"id": "unmodified"
|
826
|
-
}
|
827
|
-
EOM
|
828
|
-
end
|
829
|
-
|
830
|
-
when_the_chef_server "has a modified, unmodified, added and deleted data bag item" do
|
831
|
-
before do
|
832
|
-
data_bag "x", {
|
833
|
-
"added" => {},
|
834
|
-
"modified" => { "foo" => "bar" },
|
835
|
-
"unmodified" => {},
|
836
|
-
}
|
837
|
-
end
|
838
|
-
|
839
|
-
it "knife download of the modified file succeeds" do
|
840
|
-
knife("download /data_bags/x/modified.json").should_succeed <<~EOM
|
841
|
-
Updated /data_bags/x/modified.json
|
842
|
-
EOM
|
843
|
-
knife("diff --name-status /data_bags").should_succeed <<~EOM
|
844
|
-
D\t/data_bags/x/added.json
|
845
|
-
A\t/data_bags/x/deleted.json
|
846
|
-
EOM
|
847
|
-
end
|
848
|
-
it "knife download of the unmodified file does nothing" do
|
849
|
-
knife("download /data_bags/x/unmodified.json").should_succeed ""
|
850
|
-
knife("diff --name-status /data_bags").should_succeed <<~EOM
|
851
|
-
D\t/data_bags/x/added.json
|
852
|
-
M\t/data_bags/x/modified.json
|
853
|
-
A\t/data_bags/x/deleted.json
|
854
|
-
EOM
|
855
|
-
end
|
856
|
-
it "knife download of the added file succeeds" do
|
857
|
-
knife("download /data_bags/x/added.json").should_succeed <<~EOM
|
858
|
-
Created /data_bags/x/added.json
|
859
|
-
EOM
|
860
|
-
knife("diff --name-status /data_bags").should_succeed <<~EOM
|
861
|
-
M\t/data_bags/x/modified.json
|
862
|
-
A\t/data_bags/x/deleted.json
|
863
|
-
EOM
|
864
|
-
end
|
865
|
-
it "knife download of the deleted file does nothing" do
|
866
|
-
knife("download /data_bags/x/deleted.json").should_succeed ""
|
867
|
-
knife("diff --name-status /data_bags").should_succeed <<~EOM
|
868
|
-
D\t/data_bags/x/added.json
|
869
|
-
M\t/data_bags/x/modified.json
|
870
|
-
A\t/data_bags/x/deleted.json
|
871
|
-
EOM
|
872
|
-
end
|
873
|
-
it "knife download --purge of the deleted file deletes it" do
|
874
|
-
knife("download --purge /data_bags/x/deleted.json").should_succeed <<~EOM
|
875
|
-
Deleted extra entry /data_bags/x/deleted.json (purge is on)
|
876
|
-
EOM
|
877
|
-
knife("diff --name-status /data_bags").should_succeed <<~EOM
|
878
|
-
D\t/data_bags/x/added.json
|
879
|
-
M\t/data_bags/x/modified.json
|
880
|
-
EOM
|
881
|
-
end
|
882
|
-
it "knife download of the entire data bag downloads everything" do
|
883
|
-
knife("download /data_bags/x").should_succeed <<~EOM
|
884
|
-
Created /data_bags/x/added.json
|
885
|
-
Updated /data_bags/x/modified.json
|
886
|
-
EOM
|
887
|
-
knife("diff --name-status /data_bags").should_succeed <<~EOM
|
888
|
-
A\t/data_bags/x/deleted.json
|
889
|
-
EOM
|
890
|
-
end
|
891
|
-
it "knife download --purge of the entire data bag downloads everything" do
|
892
|
-
knife("download --purge /data_bags/x").should_succeed <<~EOM
|
893
|
-
Created /data_bags/x/added.json
|
894
|
-
Updated /data_bags/x/modified.json
|
895
|
-
Deleted extra entry /data_bags/x/deleted.json (purge is on)
|
896
|
-
EOM
|
897
|
-
knife("diff --name-status /data_bags").should_succeed ""
|
898
|
-
end
|
899
|
-
context "when cwd is the /data_bags directory" do
|
900
|
-
before do
|
901
|
-
cwd "data_bags"
|
902
|
-
end
|
903
|
-
it "knife download fails" do
|
904
|
-
knife("download").should_fail "FATAL: You must specify at least one argument. If you want to download everything in this directory, run \"knife download .\"\n", stdout: /USAGE/
|
905
|
-
end
|
906
|
-
it "knife download --purge . downloads everything" do
|
907
|
-
knife("download --purge .").should_succeed <<~EOM
|
908
|
-
Created x/added.json
|
909
|
-
Updated x/modified.json
|
910
|
-
Deleted extra entry x/deleted.json (purge is on)
|
911
|
-
EOM
|
912
|
-
knife("diff --name-status /data_bags").should_succeed ""
|
913
|
-
end
|
914
|
-
it "knife download --purge * downloads everything" do
|
915
|
-
knife("download --purge *").should_succeed <<~EOM
|
916
|
-
Created x/added.json
|
917
|
-
Updated x/modified.json
|
918
|
-
Deleted extra entry x/deleted.json (purge is on)
|
919
|
-
EOM
|
920
|
-
knife("diff --name-status /data_bags").should_succeed ""
|
921
|
-
end
|
922
|
-
end
|
923
|
-
end
|
924
|
-
end
|
925
|
-
|
926
|
-
when_the_repository "has a cookbook" do
|
927
|
-
before do
|
928
|
-
file "cookbooks/x-1.0.0/metadata.rb", 'name "x"; version "1.0.0"#unmodified'
|
929
|
-
file "cookbooks/x-1.0.0/z.rb", ""
|
930
|
-
end
|
931
|
-
|
932
|
-
when_the_chef_server "has a modified, added and deleted file for the cookbook" do
|
933
|
-
before do
|
934
|
-
cookbook "x", "1.0.0", { "y.rb" => "hi" }
|
935
|
-
end
|
936
|
-
|
937
|
-
it "knife download of a modified file succeeds" do
|
938
|
-
knife("download /cookbooks/x-1.0.0/metadata.rb").should_succeed "Updated /cookbooks/x-1.0.0/metadata.rb\n"
|
939
|
-
knife("diff --name-status /cookbooks").should_succeed <<~EOM
|
940
|
-
D\t/cookbooks/x-1.0.0/y.rb
|
941
|
-
A\t/cookbooks/x-1.0.0/z.rb
|
942
|
-
EOM
|
943
|
-
end
|
944
|
-
it "knife download of a deleted file does nothing" do
|
945
|
-
knife("download /cookbooks/x-1.0.0/z.rb").should_succeed ""
|
946
|
-
knife("diff --name-status /cookbooks").should_succeed <<~EOM
|
947
|
-
M\t/cookbooks/x-1.0.0/metadata.rb
|
948
|
-
D\t/cookbooks/x-1.0.0/y.rb
|
949
|
-
A\t/cookbooks/x-1.0.0/z.rb
|
950
|
-
EOM
|
951
|
-
end
|
952
|
-
it "knife download --purge of a deleted file succeeds" do
|
953
|
-
knife("download --purge /cookbooks/x-1.0.0/z.rb").should_succeed "Deleted extra entry /cookbooks/x-1.0.0/z.rb (purge is on)\n"
|
954
|
-
knife("diff --name-status /cookbooks").should_succeed <<~EOM
|
955
|
-
M\t/cookbooks/x-1.0.0/metadata.rb
|
956
|
-
D\t/cookbooks/x-1.0.0/y.rb
|
957
|
-
EOM
|
958
|
-
end
|
959
|
-
it "knife download of an added file succeeds" do
|
960
|
-
knife("download /cookbooks/x-1.0.0/y.rb").should_succeed "Created /cookbooks/x-1.0.0/y.rb\n"
|
961
|
-
knife("diff --name-status /cookbooks").should_succeed <<~EOM
|
962
|
-
M\t/cookbooks/x-1.0.0/metadata.rb
|
963
|
-
A\t/cookbooks/x-1.0.0/z.rb
|
964
|
-
EOM
|
965
|
-
end
|
966
|
-
it "knife download of the cookbook itself succeeds" do
|
967
|
-
knife("download /cookbooks/x-1.0.0").should_succeed <<~EOM
|
968
|
-
Updated /cookbooks/x-1.0.0/metadata.rb
|
969
|
-
Created /cookbooks/x-1.0.0/y.rb
|
970
|
-
EOM
|
971
|
-
knife("diff --name-status /cookbooks").should_succeed <<~EOM
|
972
|
-
A\t/cookbooks/x-1.0.0/z.rb
|
973
|
-
EOM
|
974
|
-
end
|
975
|
-
it "knife download --purge of the cookbook itself succeeds" do
|
976
|
-
knife("download --purge /cookbooks/x-1.0.0").should_succeed <<~EOM
|
977
|
-
Updated /cookbooks/x-1.0.0/metadata.rb
|
978
|
-
Created /cookbooks/x-1.0.0/y.rb
|
979
|
-
Deleted extra entry /cookbooks/x-1.0.0/z.rb (purge is on)
|
980
|
-
EOM
|
981
|
-
knife("diff --name-status /cookbooks").should_succeed ""
|
982
|
-
end
|
983
|
-
end
|
984
|
-
end
|
985
|
-
|
986
|
-
when_the_repository "has a cookbook" do
|
987
|
-
before do
|
988
|
-
file "cookbooks/x-1.0.0/metadata.rb", cb_metadata("x", "1.0.0")
|
989
|
-
file "cookbooks/x-1.0.0/onlyin1.0.0.rb", "old_text"
|
990
|
-
end
|
991
|
-
|
992
|
-
when_the_chef_server "has a later version for the cookbook" do
|
993
|
-
before do
|
994
|
-
cookbook "x", "1.0.0", { "onlyin1.0.0.rb" => "" }
|
995
|
-
cookbook "x", "1.0.1", { "onlyin1.0.1.rb" => "hi" }
|
996
|
-
end
|
997
|
-
|
998
|
-
it "knife download /cookbooks/x downloads the latest version" do
|
999
|
-
knife("download --purge /cookbooks").should_succeed <<~EOM
|
1000
|
-
Updated /cookbooks/x-1.0.0/onlyin1.0.0.rb
|
1001
|
-
Created /cookbooks/x-1.0.1
|
1002
|
-
Created /cookbooks/x-1.0.1/metadata.rb
|
1003
|
-
Created /cookbooks/x-1.0.1/onlyin1.0.1.rb
|
1004
|
-
EOM
|
1005
|
-
knife("diff --name-status /cookbooks").should_succeed ""
|
1006
|
-
end
|
1007
|
-
end
|
1008
|
-
|
1009
|
-
when_the_chef_server "has an earlier version for the cookbook" do
|
1010
|
-
before do
|
1011
|
-
cookbook "x", "1.0.0", { "onlyin1.0.0.rb" => "" }
|
1012
|
-
cookbook "x", "0.9.9", { "onlyin0.9.9.rb" => "hi" }
|
1013
|
-
end
|
1014
|
-
|
1015
|
-
it "knife download /cookbooks downloads the updated file" do
|
1016
|
-
knife("download --purge /cookbooks").should_succeed <<~EOM
|
1017
|
-
Created /cookbooks/x-0.9.9
|
1018
|
-
Created /cookbooks/x-0.9.9/metadata.rb
|
1019
|
-
Created /cookbooks/x-0.9.9/onlyin0.9.9.rb
|
1020
|
-
Updated /cookbooks/x-1.0.0/onlyin1.0.0.rb
|
1021
|
-
EOM
|
1022
|
-
knife("diff --name-status /cookbooks").should_succeed ""
|
1023
|
-
end
|
1024
|
-
end
|
1025
|
-
|
1026
|
-
when_the_chef_server "has a later version for the cookbook, and no current version" do
|
1027
|
-
before do
|
1028
|
-
cookbook "x", "1.0.1", { "onlyin1.0.1.rb" => "hi" }
|
1029
|
-
end
|
1030
|
-
|
1031
|
-
it "knife download /cookbooks/x downloads the latest version" do
|
1032
|
-
knife("download --purge /cookbooks").should_succeed <<~EOM
|
1033
|
-
Created /cookbooks/x-1.0.1
|
1034
|
-
Created /cookbooks/x-1.0.1/metadata.rb
|
1035
|
-
Created /cookbooks/x-1.0.1/onlyin1.0.1.rb
|
1036
|
-
Deleted extra entry /cookbooks/x-1.0.0 (purge is on)
|
1037
|
-
EOM
|
1038
|
-
knife("diff --name-status /cookbooks").should_succeed ""
|
1039
|
-
end
|
1040
|
-
end
|
1041
|
-
|
1042
|
-
when_the_chef_server "has an earlier version for the cookbook, and no current version" do
|
1043
|
-
before do
|
1044
|
-
cookbook "x", "0.9.9", { "onlyin0.9.9.rb" => "hi" }
|
1045
|
-
end
|
1046
|
-
|
1047
|
-
it "knife download --purge /cookbooks downloads the old version and deletes the new version" do
|
1048
|
-
knife("download --purge /cookbooks").should_succeed <<~EOM
|
1049
|
-
Created /cookbooks/x-0.9.9
|
1050
|
-
Created /cookbooks/x-0.9.9/metadata.rb
|
1051
|
-
Created /cookbooks/x-0.9.9/onlyin0.9.9.rb
|
1052
|
-
Deleted extra entry /cookbooks/x-1.0.0 (purge is on)
|
1053
|
-
EOM
|
1054
|
-
knife("diff --name-status /cookbooks").should_succeed ""
|
1055
|
-
end
|
1056
|
-
end
|
1057
|
-
end
|
1058
|
-
|
1059
|
-
when_the_chef_server "has an environment" do
|
1060
|
-
before do
|
1061
|
-
environment "x", {}
|
1062
|
-
end
|
1063
|
-
|
1064
|
-
when_the_repository "has the same environment with the wrong name in the file" do
|
1065
|
-
before do
|
1066
|
-
file "environments/x.json", { "name" => "y" }
|
1067
|
-
end
|
1068
|
-
|
1069
|
-
it "knife download succeeds" do
|
1070
|
-
knife("download /environments/x.json").should_succeed "Updated /environments/x.json\n"
|
1071
|
-
knife("diff --name-status /environments/x.json").should_succeed ""
|
1072
|
-
end
|
1073
|
-
end
|
1074
|
-
|
1075
|
-
when_the_repository "has the same environment with no name in the file" do
|
1076
|
-
before do
|
1077
|
-
file "environments/x.json", { "description" => "hi" }
|
1078
|
-
end
|
1079
|
-
|
1080
|
-
it "knife download succeeds" do
|
1081
|
-
knife("download /environments/x.json").should_succeed "Updated /environments/x.json\n"
|
1082
|
-
knife("diff --name-status /environments/x.json").should_succeed ""
|
1083
|
-
end
|
1084
|
-
end
|
1085
|
-
end
|
1086
|
-
end # with versioned cookbooks
|
1087
|
-
|
1088
|
-
when_the_chef_server "has a cookbook" do
|
1089
|
-
before do
|
1090
|
-
cookbook "x", "1.0.0"
|
1091
|
-
end
|
1092
|
-
|
1093
|
-
when_the_repository "is empty" do
|
1094
|
-
it "knife download /cookbooks/x signs all requests" do
|
1095
|
-
|
1096
|
-
# Check that BasicClient.request() always gets called with X-OPS-USERID
|
1097
|
-
original_new = Chef::HTTP::BasicClient.method(:new)
|
1098
|
-
expect(Chef::HTTP::BasicClient).to receive(:new) { |args|
|
1099
|
-
new_result = original_new.call(*args)
|
1100
|
-
original_request = new_result.method(:request)
|
1101
|
-
expect(new_result).to receive(:request) { |method, url, body, headers, &response_handler|
|
1102
|
-
expect(headers["X-OPS-USERID"]).not_to be_nil
|
1103
|
-
original_request.call(method, url, body, headers, &response_handler)
|
1104
|
-
}.at_least(:once)
|
1105
|
-
new_result
|
1106
|
-
}.at_least(:once)
|
1107
|
-
|
1108
|
-
knife("download /cookbooks/x").should_succeed <<~EOM
|
1109
|
-
Created /cookbooks
|
1110
|
-
Created /cookbooks/x
|
1111
|
-
Created /cookbooks/x/metadata.rb
|
1112
|
-
EOM
|
1113
|
-
end
|
1114
|
-
end
|
1115
|
-
end
|
1116
|
-
|
1117
|
-
when_the_chef_server "is in Enterprise mode", osc_compat: false, single_org: false do
|
1118
|
-
before do
|
1119
|
-
user "foo", {}
|
1120
|
-
user "bar", {}
|
1121
|
-
user "foobar", {}
|
1122
|
-
organization "foo", { "full_name" => "Something" }
|
1123
|
-
end
|
1124
|
-
|
1125
|
-
before :each do
|
1126
|
-
Chef::Config.chef_server_url = URI.join(Chef::Config.chef_server_url, "/organizations/foo")
|
1127
|
-
end
|
1128
|
-
|
1129
|
-
when_the_repository "has all the default stuff" do
|
1130
|
-
before do
|
1131
|
-
knife("download /").should_succeed <<~EOM
|
1132
|
-
Created /acls
|
1133
|
-
Created /acls/clients
|
1134
|
-
Created /acls/clients/foo-validator.json
|
1135
|
-
Created /acls/containers
|
1136
|
-
Created /acls/containers/clients.json
|
1137
|
-
Created /acls/containers/containers.json
|
1138
|
-
Created /acls/containers/cookbook_artifacts.json
|
1139
|
-
Created /acls/containers/cookbooks.json
|
1140
|
-
Created /acls/containers/data.json
|
1141
|
-
Created /acls/containers/environments.json
|
1142
|
-
Created /acls/containers/groups.json
|
1143
|
-
Created /acls/containers/nodes.json
|
1144
|
-
Created /acls/containers/policies.json
|
1145
|
-
Created /acls/containers/policy_groups.json
|
1146
|
-
Created /acls/containers/roles.json
|
1147
|
-
Created /acls/containers/sandboxes.json
|
1148
|
-
Created /acls/cookbook_artifacts
|
1149
|
-
Created /acls/cookbooks
|
1150
|
-
Created /acls/data_bags
|
1151
|
-
Created /acls/environments
|
1152
|
-
Created /acls/environments/_default.json
|
1153
|
-
Created /acls/groups
|
1154
|
-
Created /acls/groups/admins.json
|
1155
|
-
Created /acls/groups/billing-admins.json
|
1156
|
-
Created /acls/groups/clients.json
|
1157
|
-
Created /acls/groups/users.json
|
1158
|
-
Created /acls/nodes
|
1159
|
-
Created /acls/policies
|
1160
|
-
Created /acls/policy_groups
|
1161
|
-
Created /acls/roles
|
1162
|
-
Created /acls/organization.json
|
1163
|
-
Created /clients
|
1164
|
-
Created /clients/foo-validator.json
|
1165
|
-
Created /containers
|
1166
|
-
Created /containers/clients.json
|
1167
|
-
Created /containers/containers.json
|
1168
|
-
Created /containers/cookbook_artifacts.json
|
1169
|
-
Created /containers/cookbooks.json
|
1170
|
-
Created /containers/data.json
|
1171
|
-
Created /containers/environments.json
|
1172
|
-
Created /containers/groups.json
|
1173
|
-
Created /containers/nodes.json
|
1174
|
-
Created /containers/policies.json
|
1175
|
-
Created /containers/policy_groups.json
|
1176
|
-
Created /containers/roles.json
|
1177
|
-
Created /containers/sandboxes.json
|
1178
|
-
Created /cookbook_artifacts
|
1179
|
-
Created /cookbooks
|
1180
|
-
Created /data_bags
|
1181
|
-
Created /environments
|
1182
|
-
Created /environments/_default.json
|
1183
|
-
Created /groups
|
1184
|
-
Created /groups/admins.json
|
1185
|
-
Created /groups/billing-admins.json
|
1186
|
-
Created /groups/clients.json
|
1187
|
-
Created /groups/users.json
|
1188
|
-
Created /invitations.json
|
1189
|
-
Created /members.json
|
1190
|
-
Created /nodes
|
1191
|
-
Created /org.json
|
1192
|
-
Created /policies
|
1193
|
-
Created /policy_groups
|
1194
|
-
Created /roles
|
1195
|
-
EOM
|
1196
|
-
end
|
1197
|
-
|
1198
|
-
context "and the server has one of each thing" do
|
1199
|
-
before do
|
1200
|
-
# acl_for %w(organizations foo groups blah)
|
1201
|
-
client "x", {}
|
1202
|
-
cookbook "x", "1.0.0"
|
1203
|
-
cookbook_artifact "x", "1x1", { "metadata.rb" => cb_metadata("x", "1.0.0") }
|
1204
|
-
container "x", {}
|
1205
|
-
data_bag "x", { "y" => {} }
|
1206
|
-
environment "x", {}
|
1207
|
-
group "x", {}
|
1208
|
-
org_invite "foo"
|
1209
|
-
org_member "bar"
|
1210
|
-
node "x", {}
|
1211
|
-
policy "x", "1.0.0", {}
|
1212
|
-
policy "blah", "1.0.0", {}
|
1213
|
-
policy_group "x", {
|
1214
|
-
"policies" => {
|
1215
|
-
"x" => { "revision_id" => "1.0.0" },
|
1216
|
-
"blah" => { "revision_id" => "1.0.0" },
|
1217
|
-
},
|
1218
|
-
}
|
1219
|
-
role "x", {}
|
1220
|
-
end
|
1221
|
-
|
1222
|
-
before do
|
1223
|
-
knife("download /acls /groups/clients.json /groups/users.json").should_succeed <<~EOM
|
1224
|
-
Created /acls/clients/x.json
|
1225
|
-
Created /acls/containers/x.json
|
1226
|
-
Created /acls/cookbook_artifacts/x.json
|
1227
|
-
Created /acls/cookbooks/x.json
|
1228
|
-
Created /acls/data_bags/x.json
|
1229
|
-
Created /acls/environments/x.json
|
1230
|
-
Created /acls/groups/x.json
|
1231
|
-
Created /acls/nodes/x.json
|
1232
|
-
Created /acls/policies/blah.json
|
1233
|
-
Created /acls/policies/x.json
|
1234
|
-
Created /acls/policy_groups/x.json
|
1235
|
-
Created /acls/roles/x.json
|
1236
|
-
Updated /groups/clients.json
|
1237
|
-
Updated /groups/users.json
|
1238
|
-
EOM
|
1239
|
-
end
|
1240
|
-
|
1241
|
-
it "knife download / downloads everything" do
|
1242
|
-
knife("download /").should_succeed <<~EOM
|
1243
|
-
Created /clients/x.json
|
1244
|
-
Created /containers/x.json
|
1245
|
-
Created /cookbook_artifacts/x-1x1
|
1246
|
-
Created /cookbook_artifacts/x-1x1/metadata.rb
|
1247
|
-
Created /cookbooks/x
|
1248
|
-
Created /cookbooks/x/metadata.rb
|
1249
|
-
Created /data_bags/x
|
1250
|
-
Created /data_bags/x/y.json
|
1251
|
-
Created /environments/x.json
|
1252
|
-
Created /groups/x.json
|
1253
|
-
Updated /invitations.json
|
1254
|
-
Updated /members.json
|
1255
|
-
Created /nodes/x.json
|
1256
|
-
Created /policies/blah-1.0.0.json
|
1257
|
-
Created /policies/x-1.0.0.json
|
1258
|
-
Created /policy_groups/x.json
|
1259
|
-
Created /roles/x.json
|
1260
|
-
EOM
|
1261
|
-
knife("diff --name-status /").should_succeed ""
|
1262
|
-
end
|
1263
|
-
|
1264
|
-
context "and the repository has an identical copy of each thing" do
|
1265
|
-
before do
|
1266
|
-
# TODO We have to upload acls for an existing group due to a lack of
|
1267
|
-
# dependency detection during upload. Fix that!
|
1268
|
-
file "clients/x.json", { "public_key" => ChefZero::PUBLIC_KEY }
|
1269
|
-
file "containers/x.json", {}
|
1270
|
-
file "cookbooks/x/metadata.rb", cb_metadata("x", "1.0.0")
|
1271
|
-
file "cookbook_artifacts/x-1x1/metadata.rb", cb_metadata("x", "1.0.0")
|
1272
|
-
file "data_bags/x/y.json", {}
|
1273
|
-
file "environments/x.json", {}
|
1274
|
-
file "groups/x.json", {}
|
1275
|
-
file "invitations.json", [ "foo" ]
|
1276
|
-
file "members.json", [ "bar" ]
|
1277
|
-
file "nodes/x.json", { "normal" => { "tags" => [] } }
|
1278
|
-
file "org.json", { "full_name" => "Something" }
|
1279
|
-
file "policies/x-1.0.0.json", {}
|
1280
|
-
file "policies/blah-1.0.0.json", {}
|
1281
|
-
file "policy_groups/x.json", { "policies" => { "x" => { "revision_id" => "1.0.0" }, "blah" => { "revision_id" => "1.0.0" } } }
|
1282
|
-
file "roles/x.json", {}
|
1283
|
-
end
|
1284
|
-
|
1285
|
-
it "knife download makes no changes" do
|
1286
|
-
knife("download /").should_succeed ""
|
1287
|
-
end
|
1288
|
-
end
|
1289
|
-
|
1290
|
-
context "and the repository has a slightly different copy of each thing" do
|
1291
|
-
before do
|
1292
|
-
# acl_for %w(organizations foo groups blah)
|
1293
|
-
file "clients/x.json", { "validator" => true }
|
1294
|
-
file "containers/x.json", {}
|
1295
|
-
file "cookbooks/x/metadata.rb", cb_metadata("x", "1.0.1")
|
1296
|
-
file "cookbook_artifacts/x-1x1/metadata.rb", cb_metadata("x", "1.0.1")
|
1297
|
-
file "data_bags/x/y.json", { "a" => "b" }
|
1298
|
-
file "environments/x.json", { "description" => "foo" }
|
1299
|
-
file "groups/x.json", { "description" => "foo" }
|
1300
|
-
file "groups/x.json", { "groups" => [ "admin" ] }
|
1301
|
-
file "nodes/x.json", { "normal" => { "tags" => [] }, "run_list" => [ "blah" ] }
|
1302
|
-
file "org.json", { "full_name" => "Something Else " }
|
1303
|
-
file "policies/x-1.0.0.json", { "run_list" => [ "blah" ] }
|
1304
|
-
file "policy_groups/x.json", {
|
1305
|
-
"policies" => {
|
1306
|
-
"x" => { "revision_id" => "1.0.1" },
|
1307
|
-
"y" => { "revision_id" => "1.0.0" },
|
1308
|
-
},
|
1309
|
-
}
|
1310
|
-
file "roles/x.json", { "run_list" => [ "blah" ] }
|
1311
|
-
end
|
1312
|
-
|
1313
|
-
it "knife download updates everything" do
|
1314
|
-
knife("download /").should_succeed <<~EOM
|
1315
|
-
Updated /clients/x.json
|
1316
|
-
Updated /cookbook_artifacts/x-1x1/metadata.rb
|
1317
|
-
Updated /cookbooks/x/metadata.rb
|
1318
|
-
Updated /data_bags/x/y.json
|
1319
|
-
Updated /environments/x.json
|
1320
|
-
Updated /groups/x.json
|
1321
|
-
Updated /invitations.json
|
1322
|
-
Updated /members.json
|
1323
|
-
Updated /nodes/x.json
|
1324
|
-
Updated /org.json
|
1325
|
-
Created /policies/blah-1.0.0.json
|
1326
|
-
Updated /policies/x-1.0.0.json
|
1327
|
-
Updated /policy_groups/x.json
|
1328
|
-
Updated /roles/x.json
|
1329
|
-
EOM
|
1330
|
-
knife("diff --name-status /").should_succeed ""
|
1331
|
-
end
|
1332
|
-
end
|
1333
|
-
end
|
1334
|
-
end
|
1335
|
-
end
|
1336
|
-
end
|