r10k 1.4.2 → 1.5.1
Sign up to get free protection for your applications and to get access to all the features.
- data/.travis.yml +2 -0
- data/CHANGELOG.mkd +192 -0
- data/CONTRIBUTING.mkd +3 -3
- data/Gemfile +4 -0
- data/README.mkd +13 -6
- data/doc/dynamic-environments/configuration.mkd +77 -8
- data/doc/dynamic-environments/git-environments.mkd +12 -2
- data/doc/dynamic-environments/quickstart.mkd +6 -0
- data/doc/faq.mkd +6 -6
- data/doc/git/cloning-and-mirroring.mkd +60 -0
- data/doc/git/providers.mkd +68 -0
- data/integration/Gemfile +3 -0
- data/integration/README.mkd +29 -0
- data/integration/configs/README.mkd +7 -0
- data/integration/configs/pe/centos-6-64mda +25 -0
- data/integration/configs/pe/centos-7-64mda +25 -0
- data/integration/configs/pe/debian-6-64mda +25 -0
- data/integration/configs/pe/debian-7-64mda +25 -0
- data/integration/configs/pe/redhat-6-64mda +25 -0
- data/integration/configs/pe/redhat-7-64mda +25 -0
- data/integration/configs/pe/sles-11-64mda +25 -0
- data/integration/configs/pe/ubuntu-1004-64mda +25 -0
- data/integration/configs/pe/ubuntu-1204-64mda +25 -0
- data/integration/configs/pe/ubuntu-1404-64mda +25 -0
- data/integration/files/README.mkd +4 -0
- data/integration/files/hiera.yaml +8 -0
- data/integration/files/modules/helloworld/manifests/init.pp +3 -0
- data/integration/files/modules/hieratest/manifests/init.pp +3 -0
- data/integration/files/modules/unicode/files/pretend_unicode +1 -0
- data/integration/files/modules/unicode/manifests/init.pp +6 -0
- data/integration/files/pre-suite/prod_env.config +3 -0
- data/integration/files/r10k_conf.yaml.erb +9 -0
- data/integration/lib/README.mkd +4 -0
- data/integration/lib/git_utils.rb +205 -0
- data/integration/lib/master_manipulator.rb +205 -0
- data/integration/lib/r10k_utils.rb +166 -0
- data/integration/manifests/README.mkd +4 -0
- data/integration/pre-suite/00_pe_install.rb +4 -0
- data/integration/pre-suite/01_git_config.rb +59 -0
- data/integration/pre-suite/02_pe_r10k.rb +60 -0
- data/integration/pre-suite/03_test_utils.rb +17 -0
- data/integration/pre-suite/README.mkd +5 -0
- data/integration/test_run_scripts/README.mkd +5 -0
- data/integration/test_run_scripts/all_tests-rugged-pe-centos6.sh +20 -0
- data/integration/test_run_scripts/all_tests-rugged-pe-rhel7.sh +20 -0
- data/integration/test_run_scripts/all_tests-rugged-pe-sles11.sh +20 -0
- data/integration/test_run_scripts/all_tests-rugged-pe-ubuntu1204.sh +20 -0
- data/integration/test_run_scripts/all_tests-rugged-pe-ubuntu1404.sh +20 -0
- data/integration/test_run_scripts/all_tests-shellgit-pe-centos6.sh +20 -0
- data/integration/test_run_scripts/all_tests-shellgit-pe-rhel7.sh +20 -0
- data/integration/test_run_scripts/all_tests-shellgit-pe-sles11.sh +20 -0
- data/integration/test_run_scripts/all_tests-shellgit-pe-ubuntu1204.sh +20 -0
- data/integration/test_run_scripts/all_tests-shellgit-pe-ubuntu1404.sh +20 -0
- data/integration/test_run_scripts/basic_functionality/all_tests-pe-centos6.sh +20 -0
- data/integration/test_run_scripts/command_line/all_tests-pe-centos6.sh +20 -0
- data/integration/test_run_scripts/git_source/all_tests-pe-centos6.sh +20 -0
- data/integration/test_run_scripts/user_scenario/basic_workflow/all_tests-pe-centos6.sh +20 -0
- data/integration/test_run_scripts/user_scenario/complex_workflow/all_tests-pe-centos6.sh +20 -0
- data/integration/tests/README.mkd +4 -0
- data/integration/tests/basic_functionality/negative/neg_deploy_with_invalid_r10k_yaml.rb +46 -0
- data/integration/tests/basic_functionality/negative/neg_deploy_with_missing_r10k_yaml.rb +27 -0
- data/integration/tests/command_line/deploy_env_without_mod_update.rb +75 -0
- data/integration/tests/command_line/negative/neg_deploy_env_with_module_update.rb +76 -0
- data/integration/tests/command_line/negative/neg_invalid_cli_dep_flag.rb +22 -0
- data/integration/tests/command_line/negative/neg_invalid_cli_env_flag.rb +22 -0
- data/integration/tests/command_line/negative/neg_invalid_cmd_line_arg.rb +24 -0
- data/integration/tests/git_source/git_source_git.rb +123 -0
- data/integration/tests/git_source/git_source_ssh.rb +84 -0
- data/integration/tests/git_source/git_source_submodule.rb +69 -0
- data/integration/tests/git_source/negative/neg_git_broken_remote.rb +37 -0
- data/integration/tests/git_source/negative/neg_git_unauthorized_https.rb +45 -0
- data/integration/tests/git_source/negative/neg_git_unauthorized_ssh.rb +72 -0
- data/integration/tests/git_source/negative/neg_git_unicode_branch.rb +34 -0
- data/integration/tests/user_scenario/basic_workflow/multi_env_1000_branches.rb +66 -0
- data/integration/tests/user_scenario/basic_workflow/multi_env_custom_forge_git_module.rb +110 -0
- data/integration/tests/user_scenario/basic_workflow/multi_env_custom_forge_git_module_static.rb +113 -0
- data/integration/tests/user_scenario/basic_workflow/multi_env_hiera.rb +93 -0
- data/integration/tests/user_scenario/basic_workflow/multi_env_multi_source.rb +132 -0
- data/integration/tests/user_scenario/basic_workflow/multi_source_custom_forge_git_module.rb +160 -0
- data/integration/tests/user_scenario/basic_workflow/negative/neg_bad_basedir.rb +45 -0
- data/integration/tests/user_scenario/basic_workflow/negative/neg_bad_forge_module.rb +43 -0
- data/integration/tests/user_scenario/basic_workflow/negative/neg_bad_git_module.rb +40 -0
- data/integration/tests/user_scenario/basic_workflow/negative/neg_bad_git_module_ref.rb +42 -0
- data/integration/tests/user_scenario/basic_workflow/negative/neg_bad_git_remote.rb +44 -0
- data/integration/tests/user_scenario/basic_workflow/negative/neg_branch_name_collision.rb +63 -0
- data/integration/tests/user_scenario/basic_workflow/negative/neg_disk_full.rb +73 -0
- data/integration/tests/user_scenario/basic_workflow/negative/neg_duplicate_module_names.rb +45 -0
- data/integration/tests/user_scenario/basic_workflow/negative/neg_inaccessible_forge.rb +51 -0
- data/integration/tests/user_scenario/basic_workflow/negative/neg_invalid_env_name.rb +33 -0
- data/integration/tests/user_scenario/basic_workflow/negative/neg_invalid_puppet_file.rb +35 -0
- data/integration/tests/user_scenario/basic_workflow/negative/neg_module_specified_at_deleted_release.rb +44 -0
- data/integration/tests/user_scenario/basic_workflow/negative/neg_read_only.rb +57 -0
- data/integration/tests/user_scenario/basic_workflow/negative/neg_specify_deleted_forge_module.rb +44 -0
- data/integration/tests/user_scenario/basic_workflow/single_env_10000_files.rb +73 -0
- data/integration/tests/user_scenario/basic_workflow/single_env_custom_forge_git_module.rb +103 -0
- data/integration/tests/user_scenario/basic_workflow/single_env_custom_forge_module.rb +80 -0
- data/integration/tests/user_scenario/basic_workflow/single_env_custom_module.rb +48 -0
- data/integration/tests/user_scenario/basic_workflow/single_env_large_files.rb +73 -0
- data/integration/tests/user_scenario/basic_workflow/single_env_module_already_installed.rb +81 -0
- data/integration/tests/user_scenario/basic_workflow/single_env_module_last_release_deleted.rb +67 -0
- data/integration/tests/user_scenario/basic_workflow/single_env_non-existent_base_dir.rb +93 -0
- data/integration/tests/user_scenario/basic_workflow/single_env_purge_unmanaged_modules.rb +92 -0
- data/integration/tests/user_scenario/basic_workflow/single_env_switch_forge_git_module.rb +116 -0
- data/integration/tests/user_scenario/basic_workflow/single_env_unicode_paths.rb +59 -0
- data/integration/tests/user_scenario/basic_workflow/single_env_upgrade_forge_mod_revert_change.rb +165 -0
- data/integration/tests/user_scenario/complex_workflow/multi_env_add_change_remove.rb +162 -0
- data/integration/tests/user_scenario/complex_workflow/multi_env_remove_re-add.rb +110 -0
- data/lib/r10k/action/cri_runner.rb +10 -13
- data/lib/r10k/cli.rb +3 -8
- data/lib/r10k/cli/version.rb +10 -1
- data/lib/r10k/deployment/config.rb +26 -6
- data/lib/r10k/deployment/config/loader.rb +38 -29
- data/lib/r10k/deployment/source.rb +2 -4
- data/lib/r10k/environment/git.rb +10 -19
- data/lib/r10k/environment/name.rb +86 -0
- data/lib/r10k/errors.rb +8 -5
- data/lib/r10k/feature.rb +35 -0
- data/lib/r10k/feature/collection.rb +23 -0
- data/lib/r10k/features.rb +18 -0
- data/lib/r10k/git.rb +106 -12
- data/lib/r10k/git/alternates.rb +2 -2
- data/lib/r10k/git/cache.rb +43 -26
- data/lib/r10k/git/errors.rb +12 -6
- data/lib/r10k/git/head.rb +3 -0
- data/lib/r10k/git/ref.rb +3 -0
- data/lib/r10k/git/remote_head.rb +6 -0
- data/lib/r10k/git/repository.rb +6 -0
- data/lib/r10k/git/rugged.rb +17 -0
- data/lib/r10k/git/rugged/bare_repository.rb +86 -0
- data/lib/r10k/git/rugged/base_repository.rb +90 -0
- data/lib/r10k/git/rugged/cache.rb +11 -0
- data/lib/r10k/git/rugged/thin_repository.rb +72 -0
- data/lib/r10k/git/rugged/working_repository.rb +99 -0
- data/lib/r10k/git/shellgit.rb +9 -0
- data/lib/r10k/git/shellgit/bare_repository.rb +29 -0
- data/lib/r10k/git/shellgit/base_repository.rb +102 -0
- data/lib/r10k/git/shellgit/cache.rb +11 -0
- data/lib/r10k/git/shellgit/thin_repository.rb +56 -0
- data/lib/r10k/git/shellgit/working_repository.rb +73 -0
- data/lib/r10k/git/stateful_repository.rb +80 -0
- data/lib/r10k/git/tag.rb +3 -0
- data/lib/r10k/git/working_dir.rb +15 -2
- data/lib/r10k/logging.rb +73 -36
- data/lib/r10k/logging/terminaloutputter.rb +36 -0
- data/lib/r10k/module/forge.rb +10 -9
- data/lib/r10k/module/git.rb +14 -44
- data/lib/r10k/module/metadata_file.rb +31 -0
- data/lib/r10k/module/svn.rb +0 -1
- data/lib/r10k/module_repository/forge.rb +20 -7
- data/lib/r10k/puppetfile.rb +1 -1
- data/lib/r10k/settings/container.rb +6 -0
- data/lib/r10k/settings/mixin.rb +9 -0
- data/lib/r10k/source.rb +2 -3
- data/lib/r10k/source/base.rb +5 -5
- data/lib/r10k/source/git.rb +11 -86
- data/lib/r10k/source/svn.rb +8 -52
- data/lib/r10k/util/basedir.rb +4 -4
- data/lib/r10k/util/commands.rb +31 -0
- data/lib/r10k/util/exec_env.rb +36 -0
- data/lib/r10k/util/platform.rb +4 -0
- data/lib/r10k/util/purgeable.rb +2 -2
- data/lib/r10k/util/subprocess.rb +3 -7
- data/lib/r10k/util/subprocess/runner.rb +3 -28
- data/lib/r10k/util/subprocess/runner/posix.rb +103 -0
- data/lib/r10k/util/subprocess/runner/pump.rb +59 -0
- data/lib/r10k/util/subprocess/{windows/runner.rb → runner/windows.rb} +2 -11
- data/lib/r10k/util/symbolize_keys.rb +31 -0
- data/lib/r10k/version.rb +1 -1
- data/lib/shared/puppet/module_tool/metadata.rb +197 -0
- data/r10k.gemspec +7 -5
- data/spec/fixtures/integration/git/puppet-boolean-bare.tar +0 -0
- data/spec/fixtures/module/forge/bad_module/metadata.json +1 -0
- data/spec/fixtures/unit/util/subprocess/posix/runner/no-execute.sh +3 -0
- data/spec/fixtures/vcr/cassettes/R10K_ModuleRepository_Forge/and_the_expected_version_is_latest/can_fetch_all_versions_of_a_given_module.yml +171 -26
- data/spec/fixtures/vcr/cassettes/R10K_ModuleRepository_Forge/and_the_expected_version_is_latest/can_fetch_the_latest_version_of_a_given_module.yml +171 -26
- data/spec/fixtures/vcr/cassettes/R10K_ModuleRepository_Forge/and_the_expected_version_is_latest/ignores_deleted_releases.yml +190 -0
- data/spec/fixtures/vcr/cassettes/R10K_ModuleRepository_Forge/it_handles_errors_from_forgeapi_puppetlabs_com/raises_an_error_for_a_non-existant_module.yml +34 -0
- data/spec/fixtures/vcr/cassettes/R10K_Module_Forge/and_the_expected_version_is_latest/sets_the_expected_version_based_on_the_latest_forge_version.yml +87 -26
- data/spec/integration/git/rugged/bare_repository_spec.rb +13 -0
- data/spec/integration/git/rugged/thin_repository_spec.rb +14 -0
- data/spec/integration/git/rugged/working_repository_spec.rb +13 -0
- data/spec/integration/git/shellgit/bare_repository_spec.rb +13 -0
- data/spec/integration/git/shellgit/thin_repository_spec.rb +14 -0
- data/spec/integration/git/shellgit/working_repository_spec.rb +13 -0
- data/spec/integration/git/stateful_repository_spec.rb +104 -0
- data/spec/matchers/match_realpath.rb +18 -0
- data/spec/shared-contexts/git-fixtures.rb +55 -0
- data/spec/shared-examples/git-repository.rb +38 -0
- data/spec/shared-examples/git/bare_repository.rb +70 -0
- data/spec/shared-examples/git/thin_repository.rb +26 -0
- data/spec/shared-examples/git/working_repository.rb +115 -0
- data/spec/shared-examples/subprocess-runner.rb +83 -0
- data/spec/spec_helper.rb +13 -9
- data/spec/unit/action/cri_runner_spec.rb +0 -6
- data/spec/unit/action/puppetfile/{cri_action_spec.rb → cri_runner_spec.rb} +0 -0
- data/spec/unit/deployment/config/loader_spec.rb +48 -0
- data/spec/unit/deployment/config_spec.rb +49 -0
- data/spec/unit/environment/git_spec.rb +5 -39
- data/spec/unit/environment/name_spec.rb +135 -0
- data/spec/unit/feature_spec.rb +50 -0
- data/spec/unit/git/alternates_spec.rb +1 -1
- data/spec/unit/git/cache_spec.rb +32 -19
- data/spec/unit/git/commit_spec.rb +1 -0
- data/spec/unit/git/head_spec.rb +1 -6
- data/spec/unit/git/ref_spec.rb +0 -23
- data/spec/unit/git/rugged/cache_spec.rb +26 -0
- data/spec/unit/git/shellgit/cache_spec.rb +27 -0
- data/spec/unit/git/stateful_repository_spec.rb +43 -0
- data/spec/unit/git/tag_spec.rb +1 -0
- data/spec/unit/git/working_dir_spec.rb +1 -0
- data/spec/unit/git_spec.rb +74 -0
- data/spec/unit/logging/terminaloutputter_spec.rb +53 -0
- data/spec/unit/logging_spec.rb +68 -0
- data/spec/unit/module/forge_spec.rb +7 -38
- data/spec/unit/module/git_spec.rb +7 -38
- data/spec/unit/module/metadata_file_spec.rb +69 -0
- data/spec/unit/module/svn_spec.rb +0 -4
- data/spec/unit/module_repository/forge_spec.rb +22 -1
- data/spec/unit/puppet/module_tool/metadata_spec.rb +301 -0
- data/spec/unit/settings/container_spec.rb +17 -0
- data/spec/unit/source/git_spec.rb +0 -123
- data/spec/unit/source/svn_spec.rb +66 -0
- data/spec/unit/util/commands_spec.rb +61 -0
- data/spec/unit/util/exec_env_spec.rb +56 -0
- data/spec/unit/util/subprocess/runner/posix_spec.rb +7 -0
- data/spec/unit/util/subprocess/runner/pump_spec.rb +79 -0
- data/spec/unit/util/subprocess_spec.rb +3 -2
- data/spec/unit/util/symbolize_keys_spec.rb +51 -0
- metadata +226 -45
- data/lib/r10k/execution.rb +0 -47
- data/lib/r10k/module/metadata.rb +0 -47
- data/lib/r10k/util/core_ext/hash_ext.rb +0 -19
- data/lib/r10k/util/subprocess/io.rb +0 -7
- data/lib/r10k/util/subprocess/posix.rb +0 -4
- data/lib/r10k/util/subprocess/posix/io.rb +0 -7
- data/lib/r10k/util/subprocess/posix/runner.rb +0 -140
- data/lib/r10k/util/subprocess/windows.rb +0 -4
- data/lib/r10k/util/subprocess/windows/io.rb +0 -6
- data/spec/fixtures/vcr/cassettes/R10K_ModuleRepository_Forge/looking_up_versions.yml +0 -42
- data/spec/fixtures/vcr/cassettes/R10K_ModuleRepository_Forge/looking_up_versions/can_fetch_all_versions_of_a_given_module.yml +0 -42
- data/spec/fixtures/vcr/cassettes/R10K_ModuleRepository_Forge/looking_up_versions/can_fetch_the_latest_version_of_a_given_module.yml +0 -42
- data/spec/unit/deployment/source_spec.rb +0 -24
- data/spec/unit/module/metadata_spec.rb +0 -68
- data/spec/unit/util/core_ext/hash_ext_spec.rb +0 -63
@@ -1,4 +1,5 @@
|
|
1
1
|
require 'open3'
|
2
|
+
require 'r10k/util/subprocess/runner'
|
2
3
|
|
3
4
|
# Run processes on Windows.
|
4
5
|
#
|
@@ -6,11 +7,10 @@ require 'open3'
|
|
6
7
|
# results. In contrast to the POSIX runner this cannot be used in an
|
7
8
|
# asynchronous manner as-is; implementing that will probably mean launching a
|
8
9
|
# thread and invoking #capture3 in that thread.
|
9
|
-
class R10K::Util::Subprocess::Windows
|
10
|
+
class R10K::Util::Subprocess::Runner::Windows < R10K::Util::Subprocess::Runner
|
10
11
|
|
11
12
|
def initialize(argv)
|
12
13
|
@argv = argv
|
13
|
-
@io = R10K::Util::Subprocess::Windows::IO.new
|
14
14
|
end
|
15
15
|
|
16
16
|
def run
|
@@ -18,15 +18,6 @@ class R10K::Util::Subprocess::Windows::Runner < R10K::Util::Subprocess::Runner
|
|
18
18
|
|
19
19
|
stdout, stderr, status = Open3.capture3(cmd)
|
20
20
|
|
21
|
-
@status = status
|
22
21
|
@result = R10K::Util::Subprocess::Result.new(@argv, stdout, stderr, status.exitstatus)
|
23
22
|
end
|
24
|
-
|
25
|
-
def exit_code
|
26
|
-
@status.exitstatus
|
27
|
-
end
|
28
|
-
|
29
|
-
def crashed?
|
30
|
-
exit_code != 0
|
31
|
-
end
|
32
23
|
end
|
@@ -0,0 +1,31 @@
|
|
1
|
+
module R10K
|
2
|
+
module Util
|
3
|
+
module SymbolizeKeys
|
4
|
+
module_function
|
5
|
+
|
6
|
+
# Convert all String keys to Symbol keys
|
7
|
+
#
|
8
|
+
# @param hash [Hash] The data structure to convert
|
9
|
+
# @param recurse [Boolean] Whether to recursively symbolize keys in nested
|
10
|
+
# hash values. Defaults to false.
|
11
|
+
# @raise [TypeError] If a String key collides with an existing Symbol key
|
12
|
+
# @return [void]
|
13
|
+
def symbolize_keys!(hash, recurse = false)
|
14
|
+
hash.keys.each do |key|
|
15
|
+
if key.is_a?(String)
|
16
|
+
if hash.key?(key.to_sym)
|
17
|
+
raise TypeError, "An existing interned key for #{key} exists, cannot overwrite"
|
18
|
+
end
|
19
|
+
hash[key.to_sym] = hash.delete(key)
|
20
|
+
key = key.to_sym
|
21
|
+
end
|
22
|
+
|
23
|
+
value = hash[key]
|
24
|
+
if recurse && value.is_a?(Hash)
|
25
|
+
symbolize_keys!(value, true)
|
26
|
+
end
|
27
|
+
end
|
28
|
+
end
|
29
|
+
end
|
30
|
+
end
|
31
|
+
end
|
data/lib/r10k/version.rb
CHANGED
@@ -0,0 +1,197 @@
|
|
1
|
+
require 'uri'
|
2
|
+
require 'json'
|
3
|
+
require 'set'
|
4
|
+
require 'semantic_puppet/version'
|
5
|
+
|
6
|
+
module Puppet
|
7
|
+
module ModuleTool
|
8
|
+
|
9
|
+
# This class provides a data structure representing a module's metadata.
|
10
|
+
# @api private
|
11
|
+
class Metadata
|
12
|
+
|
13
|
+
attr_accessor :module_name
|
14
|
+
|
15
|
+
DEFAULTS = {
|
16
|
+
'name' => nil,
|
17
|
+
'version' => nil,
|
18
|
+
'author' => nil,
|
19
|
+
'summary' => nil,
|
20
|
+
'license' => 'Apache-2.0',
|
21
|
+
'source' => '',
|
22
|
+
'project_page' => nil,
|
23
|
+
'issues_url' => nil,
|
24
|
+
'dependencies' => Set.new.freeze,
|
25
|
+
}
|
26
|
+
|
27
|
+
def initialize
|
28
|
+
@data = DEFAULTS.dup
|
29
|
+
@data['dependencies'] = @data['dependencies'].dup
|
30
|
+
end
|
31
|
+
|
32
|
+
# Returns a filesystem-friendly version of this module name.
|
33
|
+
def dashed_name
|
34
|
+
@data['name'].tr('/', '-') if @data['name']
|
35
|
+
end
|
36
|
+
|
37
|
+
# Returns a string that uniquely represents this version of this module.
|
38
|
+
def release_name
|
39
|
+
return nil unless @data['name'] && @data['version']
|
40
|
+
[ dashed_name, @data['version'] ].join('-')
|
41
|
+
end
|
42
|
+
|
43
|
+
alias :name :module_name
|
44
|
+
alias :full_module_name :dashed_name
|
45
|
+
|
46
|
+
# Merges the current set of metadata with another metadata hash. This
|
47
|
+
# method also handles the validation of module names and versions, in an
|
48
|
+
# effort to be proactive about module publishing constraints.
|
49
|
+
def update(data, with_dependencies = true)
|
50
|
+
process_name(data) if data['name']
|
51
|
+
process_version(data) if data['version']
|
52
|
+
process_source(data) if data['source']
|
53
|
+
merge_dependencies(data) if with_dependencies && data['dependencies']
|
54
|
+
|
55
|
+
@data.merge!(data)
|
56
|
+
return self
|
57
|
+
end
|
58
|
+
|
59
|
+
# Validates the name and version_requirement for a dependency, then creates
|
60
|
+
# the Dependency and adds it.
|
61
|
+
# Returns the Dependency that was added.
|
62
|
+
def add_dependency(name, version_requirement=nil, repository=nil)
|
63
|
+
validate_name(name)
|
64
|
+
validate_version_range(version_requirement) if version_requirement
|
65
|
+
|
66
|
+
if dup = @data['dependencies'].find { |d| d.full_module_name == name && d.version_requirement != version_requirement }
|
67
|
+
raise ArgumentError, "Dependency conflict for #{full_module_name}: Dependency #{name} was given conflicting version requirements #{version_requirement} and #{dup.version_requirement}. Verify that there are no duplicates in the metadata.json or the Modulefile."
|
68
|
+
end
|
69
|
+
|
70
|
+
dep = Dependency.new(name, version_requirement, repository)
|
71
|
+
@data['dependencies'].add(dep)
|
72
|
+
|
73
|
+
dep
|
74
|
+
end
|
75
|
+
|
76
|
+
# Provides an accessor for the now defunct 'description' property. This
|
77
|
+
# addresses a regression in Puppet 3.6.x where previously valid templates
|
78
|
+
# refering to the 'description' property were broken.
|
79
|
+
# @deprecated
|
80
|
+
def description
|
81
|
+
@data['description']
|
82
|
+
end
|
83
|
+
|
84
|
+
def dependencies
|
85
|
+
@data['dependencies'].to_a
|
86
|
+
end
|
87
|
+
|
88
|
+
# Returns a hash of the module's metadata. Used by Puppet's automated
|
89
|
+
# serialization routines.
|
90
|
+
#
|
91
|
+
# @see Puppet::Network::FormatSupport#to_data_hash
|
92
|
+
def to_hash
|
93
|
+
@data
|
94
|
+
end
|
95
|
+
alias :to_data_hash :to_hash
|
96
|
+
|
97
|
+
def to_json
|
98
|
+
data = @data.dup.merge('dependencies' => dependencies)
|
99
|
+
|
100
|
+
contents = data.keys.map do |k|
|
101
|
+
value = (JSON.pretty_generate(data[k]) rescue data[k].to_json)
|
102
|
+
"#{k.to_json}: #{value}"
|
103
|
+
end
|
104
|
+
|
105
|
+
"{\n" + contents.join(",\n").gsub(/^/, ' ') + "\n}\n"
|
106
|
+
end
|
107
|
+
|
108
|
+
# Expose any metadata keys as callable reader methods.
|
109
|
+
def method_missing(name, *args)
|
110
|
+
return @data[name.to_s] if @data.key? name.to_s
|
111
|
+
super
|
112
|
+
end
|
113
|
+
|
114
|
+
private
|
115
|
+
|
116
|
+
# Do basic validation and parsing of the name parameter.
|
117
|
+
def process_name(data)
|
118
|
+
validate_name(data['name'])
|
119
|
+
author, @module_name = data['name'].split(/[-\/]/, 2)
|
120
|
+
|
121
|
+
data['author'] ||= author if @data['author'] == DEFAULTS['author']
|
122
|
+
end
|
123
|
+
|
124
|
+
# Do basic validation on the version parameter.
|
125
|
+
def process_version(data)
|
126
|
+
validate_version(data['version'])
|
127
|
+
end
|
128
|
+
|
129
|
+
# Do basic parsing of the source parameter. If the source is hosted on
|
130
|
+
# GitHub, we can predict sensible defaults for both project_page and
|
131
|
+
# issues_url.
|
132
|
+
def process_source(data)
|
133
|
+
if data['source'] =~ %r[://]
|
134
|
+
source_uri = URI.parse(data['source'])
|
135
|
+
else
|
136
|
+
source_uri = URI.parse("http://#{data['source']}")
|
137
|
+
end
|
138
|
+
|
139
|
+
if source_uri.host =~ /^(www\.)?github\.com$/
|
140
|
+
source_uri.scheme = 'https'
|
141
|
+
source_uri.path.sub!(/\.git$/, '')
|
142
|
+
data['project_page'] ||= @data['project_page'] || source_uri.to_s
|
143
|
+
data['issues_url'] ||= @data['issues_url'] || source_uri.to_s.sub(/\/*$/, '') + '/issues'
|
144
|
+
end
|
145
|
+
|
146
|
+
rescue URI::Error
|
147
|
+
return
|
148
|
+
end
|
149
|
+
|
150
|
+
# Validates and parses the dependencies.
|
151
|
+
def merge_dependencies(data)
|
152
|
+
data['dependencies'].each do |dep|
|
153
|
+
add_dependency(dep['name'], dep['version_requirement'], dep['repository'])
|
154
|
+
end
|
155
|
+
|
156
|
+
# Clear dependencies so @data dependencies are not overwritten
|
157
|
+
data.delete 'dependencies'
|
158
|
+
end
|
159
|
+
|
160
|
+
# Validates that the given module name is both namespaced and well-formed.
|
161
|
+
def validate_name(name)
|
162
|
+
return if name =~ /\A[a-z0-9]+[-\/][a-z][a-z0-9_]*\Z/i
|
163
|
+
|
164
|
+
namespace, modname = name.split(/[-\/]/, 2)
|
165
|
+
modname = :namespace_missing if namespace == ''
|
166
|
+
|
167
|
+
err = case modname
|
168
|
+
when nil, '', :namespace_missing
|
169
|
+
"the field must be a namespaced module name"
|
170
|
+
when /[^a-z0-9_]/i
|
171
|
+
"the module name contains non-alphanumeric (or underscore) characters"
|
172
|
+
when /^[^a-z]/i
|
173
|
+
"the module name must begin with a letter"
|
174
|
+
else
|
175
|
+
"the namespace contains non-alphanumeric characters"
|
176
|
+
end
|
177
|
+
|
178
|
+
raise ArgumentError, "Invalid 'name' field in metadata.json: #{err}"
|
179
|
+
end
|
180
|
+
|
181
|
+
# Validates that the version string can be parsed by SemanticPuppet.
|
182
|
+
def validate_version(version)
|
183
|
+
return if SemanticPuppet::Version.valid?(version)
|
184
|
+
|
185
|
+
err = "version string cannot be parsed as a valid Semantic Version"
|
186
|
+
raise ArgumentError, "Invalid 'version' field in metadata.json: #{err}"
|
187
|
+
end
|
188
|
+
|
189
|
+
# Validates that the version range can be parsed by SemanticPuppet.
|
190
|
+
def validate_version_range(version_range)
|
191
|
+
SemanticPuppet::VersionRange.parse(version_range)
|
192
|
+
rescue ArgumentError => e
|
193
|
+
raise ArgumentError, "Invalid 'version_range' field in metadata.json: #{e}"
|
194
|
+
end
|
195
|
+
end
|
196
|
+
end
|
197
|
+
end
|
data/r10k.gemspec
CHANGED
@@ -23,19 +23,21 @@ Gem::Specification.new do |s|
|
|
23
23
|
s.add_dependency 'colored', '1.2'
|
24
24
|
s.add_dependency 'cri', '~> 2.6.1'
|
25
25
|
|
26
|
-
s.add_dependency 'systemu', '~> 2.5.2'
|
27
|
-
|
28
26
|
s.add_dependency 'log4r', '1.1.10'
|
29
|
-
s.add_dependency 'multi_json', '~> 1.
|
27
|
+
s.add_dependency 'multi_json', '~> 1.10'
|
30
28
|
s.add_dependency 'json_pure', '~> 1.8'
|
31
29
|
|
32
|
-
s.add_dependency 'faraday', '~> 0.
|
30
|
+
s.add_dependency 'faraday', '~> 0.9.0'
|
33
31
|
s.add_dependency 'faraday_middleware', '~> 0.9.0'
|
34
|
-
s.add_dependency 'faraday_middleware-multi_json', '~> 0.0.
|
32
|
+
s.add_dependency 'faraday_middleware-multi_json', '~> 0.0.6'
|
33
|
+
|
34
|
+
s.add_dependency 'semantic_puppet', '~> 0.1.0'
|
35
35
|
|
36
36
|
s.add_development_dependency 'rspec', '~> 3.1'
|
37
37
|
s.add_development_dependency 'vcr', '~> 2.9'
|
38
38
|
|
39
|
+
s.add_development_dependency 'minitar'
|
40
|
+
|
39
41
|
s.add_development_dependency 'yard', '~> 0.8.7.3'
|
40
42
|
|
41
43
|
s.files = %x[git ls-files].split($/)
|
Binary file
|
@@ -0,0 +1 @@
|
|
1
|
+
I am bad JSON!
|
@@ -2,41 +2,186 @@
|
|
2
2
|
http_interactions:
|
3
3
|
- request:
|
4
4
|
method: get
|
5
|
-
uri: https://
|
5
|
+
uri: https://forgeapi.puppetlabs.com/v3/modules/adrien-boolean
|
6
6
|
body:
|
7
7
|
encoding: US-ASCII
|
8
8
|
string: ''
|
9
9
|
headers:
|
10
10
|
User-Agent:
|
11
|
-
- Faraday v0.8.
|
11
|
+
- Faraday v0.8.9
|
12
12
|
response:
|
13
13
|
status:
|
14
14
|
code: 200
|
15
15
|
message:
|
16
16
|
headers:
|
17
|
-
|
18
|
-
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
-
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
-
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
-
|
17
|
+
!binary "c2VydmVy":
|
18
|
+
- !binary |-
|
19
|
+
bmdpbng=
|
20
|
+
!binary "ZGF0ZQ==":
|
21
|
+
- !binary |-
|
22
|
+
TW9uLCAwMiBNYXIgMjAxNSAxOTo1OTowMiBHTVQ=
|
23
|
+
!binary "Y29udGVudC10eXBl":
|
24
|
+
- !binary |-
|
25
|
+
YXBwbGljYXRpb24vanNvbjtjaGFyc2V0PXV0Zi04
|
26
|
+
!binary "dHJhbnNmZXItZW5jb2Rpbmc=":
|
27
|
+
- !binary |-
|
28
|
+
Y2h1bmtlZA==
|
29
|
+
!binary "Y29ubmVjdGlvbg==":
|
30
|
+
- !binary |-
|
31
|
+
Y2xvc2U=
|
32
|
+
!binary "c3RhdHVz":
|
33
|
+
- !binary |-
|
34
|
+
MjAwIE9L
|
35
|
+
!binary "Y2FjaGUtY29udHJvbA==":
|
36
|
+
- !binary |-
|
37
|
+
cHVibGljLCBtdXN0LXJldmFsaWRhdGU=
|
38
|
+
!binary "bGFzdC1tb2RpZmllZA==":
|
39
|
+
- !binary |-
|
40
|
+
TW9uLCAwMiBNYXIgMjAxNSAxNzoxODoxMSBHTVQ=
|
41
|
+
!binary "eC1ub2Rl":
|
42
|
+
- !binary |-
|
43
|
+
Zm9yZ2UtYXBwMDMtcHJvZA==
|
44
|
+
!binary "eC1yZXZpc2lvbg==":
|
45
|
+
- !binary |-
|
46
|
+
ODQ4NDQyZA==
|
47
|
+
!binary "eC1jb250ZW50LXR5cGUtb3B0aW9ucw==":
|
48
|
+
- !binary |-
|
49
|
+
bm9zbmlmZg==
|
50
|
+
!binary "dmFyeQ==":
|
51
|
+
- !binary |-
|
52
|
+
QWNjZXB0LUVuY29kaW5n
|
37
53
|
body:
|
38
|
-
encoding:
|
39
|
-
string: !
|
54
|
+
encoding: ASCII-8BIT
|
55
|
+
string: !binary |-
|
56
|
+
ewogICJ1cmkiOiAiL3YzL21vZHVsZXMvYWRyaWVuLWJvb2xlYW4iLAogICJu
|
57
|
+
YW1lIjogImJvb2xlYW4iLAogICJkb3dubG9hZHMiOiAzMTU3NCwKICAiY3Jl
|
58
|
+
YXRlZF9hdCI6ICIyMDEyLTEyLTEzIDEwOjM5OjM0IC0wODAwIiwKICAidXBk
|
59
|
+
YXRlZF9hdCI6ICIyMDE1LTAzLTAyIDA5OjE4OjExIC0wODAwIiwKICAic3Vw
|
60
|
+
cG9ydGVkIjogZmFsc2UsCiAgImVuZG9yc2VtZW50IjogbnVsbCwKICAibW9k
|
61
|
+
dWxlX2dyb3VwIjogImJhc2UiLAogICJvd25lciI6IHsKICAgICJ1cmkiOiAi
|
62
|
+
L3YzL3VzZXJzL2FkcmllbiIsCiAgICAidXNlcm5hbWUiOiAiYWRyaWVuIiwK
|
63
|
+
ICAgICJncmF2YXRhcl9pZCI6ICI1ZDZlMTRjMzYwNDBkMTdlMGFlMjJmMjgx
|
64
|
+
Yjk5N2FkMiIKICB9LAogICJjdXJyZW50X3JlbGVhc2UiOiB7CiAgICAidXJp
|
65
|
+
IjogIi92My9yZWxlYXNlcy9hZHJpZW4tYm9vbGVhbi0xLjAuMSIsCiAgICAi
|
66
|
+
bW9kdWxlIjogewogICAgICAidXJpIjogIi92My9tb2R1bGVzL2Fkcmllbi1i
|
67
|
+
b29sZWFuIiwKICAgICAgIm5hbWUiOiAiYm9vbGVhbiIsCiAgICAgICJvd25l
|
68
|
+
ciI6IHsKICAgICAgICAidXJpIjogIi92My91c2Vycy9hZHJpZW4iLAogICAg
|
69
|
+
ICAgICJ1c2VybmFtZSI6ICJhZHJpZW4iLAogICAgICAgICJncmF2YXRhcl9p
|
70
|
+
ZCI6ICI1ZDZlMTRjMzYwNDBkMTdlMGFlMjJmMjgxYjk5N2FkMiIKICAgICAg
|
71
|
+
fQogICAgfSwKICAgICJ2ZXJzaW9uIjogIjEuMC4xIiwKICAgICJtZXRhZGF0
|
72
|
+
YSI6IHsKICAgICAgIm5hbWUiOiAiYWRyaWVuLWJvb2xlYW4iLAogICAgICAi
|
73
|
+
dmVyc2lvbiI6ICIxLjAuMSIsCiAgICAgICJzb3VyY2UiOiAiaHR0cHM6Ly9n
|
74
|
+
aXRodWIuY29tL2FkcmllbnRoZWJvL3B1cHBldC1ib29sZWFuIiwKICAgICAg
|
75
|
+
ImF1dGhvciI6ICJBZHJpZW4gVGhlYm8gPGFkcmllbkBzb21ldGhpbmdzaW5p
|
76
|
+
c3RyYWwubmV0PiIsCiAgICAgICJsaWNlbnNlIjogIkFwYWNoZSAyLjAiLAog
|
77
|
+
ICAgICAic3VtbWFyeSI6ICJCb29sZWFuIG5vcm1hbGl6aW5nIHByb3BlcnR5
|
78
|
+
IGZvciBQdXBwZXQgdHlwZXMiLAogICAgICAiZGVzY3JpcHRpb24iOiAiRGVm
|
79
|
+
aW5lIHRydWUgYm9vbGVhbiBwcm9wZXJ0aWVzIGluIFB1cHBldCB0eXBlcywg
|
80
|
+
dGhhdCBjYW4gbm9ybWFsaXplXG5hbGwgcmVhc29uYWJsZSBib29sZWFuIHZh
|
81
|
+
bHVlcyB0byBSdWJ5IGJvb2xlYW4gdmFsdWVzLlxuIiwKICAgICAgInByb2pl
|
82
|
+
Y3RfcGFnZSI6ICJodHRwczovL2dpdGh1Yi5jb20vYWRyaWVudGhlYm8vcHVw
|
83
|
+
cGV0LWJvb2xlYW4iLAogICAgICAiZGVwZW5kZW5jaWVzIjogWwoKICAgICAg
|
84
|
+
XSwKICAgICAgInR5cGVzIjogWwoKICAgICAgXSwKICAgICAgImNoZWNrc3Vt
|
85
|
+
cyI6IHsKICAgICAgICAiQ0hBTkdFTE9HIjogImVlNzlkZDk3OWJiZDY0NTUw
|
86
|
+
MzFhYzEwMzk3NzhmYzFkIiwKICAgICAgICAiTElDRU5TRSI6ICI4Y2JkNDRm
|
87
|
+
NGZmYmM4MTYzMmRmMjJmZGQ0YWU4NzgxMSIsCiAgICAgICAgIk1vZHVsZWZp
|
88
|
+
bGUiOiAiYTQ3NWNlOTYzMzI1NzI1ZTE2YWRjMjZlY2MzOGJhNTMiLAogICAg
|
89
|
+
ICAgICJSRUFETUUubWFya2Rvd24iOiAiNDM4YzBlMjhhNDI1ZmI2OWQwZGNi
|
90
|
+
NDllOGM1MTIyYzIiLAogICAgICAgICJsaWIvcHVwcGV0L3Byb3BlcnR5L2Jv
|
91
|
+
b2xlYW4ucmIiOiAiMDc5NTQ4ZmE1YzE2OGYzMDM1MzA0NzU1OTgyZTllYjAi
|
92
|
+
CiAgICAgIH0KICAgIH0sCiAgICAidGFncyI6IFsKICAgICAgImRldmVsb3Bl
|
93
|
+
ciIsCiAgICAgICJleHRlbnNpb24iLAogICAgICAiYm9vbGVhbiIsCiAgICAg
|
94
|
+
ICJwcm9wZXJ0eSIKICAgIF0sCiAgICAic3VwcG9ydGVkIjogZmFsc2UsCiAg
|
95
|
+
ICAidmFsaWRhdGlvbl9zY29yZSI6IDgyLAogICAgImZpbGVfdXJpIjogIi92
|
96
|
+
My9maWxlcy9hZHJpZW4tYm9vbGVhbi0xLjAuMS50YXIuZ3oiLAogICAgImZp
|
97
|
+
bGVfc2l6ZSI6IDI1ODAsCiAgICAiZmlsZV9tZDUiOiAiOTY0OTQyMTBlNDNi
|
98
|
+
ZGNkYjM1NjFiZDA1NjVmYmI0MWQiLAogICAgImRvd25sb2FkcyI6IDI5NDIx
|
99
|
+
LAogICAgInJlYWRtZSI6ICJwdXBwZXQtYm9vbGVhblxuPT09PT09PT09PT09
|
100
|
+
PT1cblxuRGVmaW5lIGFjdHVhbCBib29sZWFuIHByb3BlcnRpZXMgZm9yIHB1
|
101
|
+
cHBldCB0eXBlcy5cblxuU3lub3BzaXNcbi0tLS0tLS0tXG5cblB1cHBldCBo
|
102
|
+
YXMgbG9vc2VseSBkZWZpbmVkIGludGVybmFsIHR5cGVzIHdoaWNoIGNhbiBt
|
103
|
+
YWtlIG5vcm1hbGl6aW5nIGJvb2xlYW5cbnZhbHVlcyBpbiB0eXBlcyBhbmQg
|
104
|
+
cHJvdmlkZXJzIGRpZmZpY3VsdC4gVGhpcyBjdXN0b20gcHJvcGVydHkgaGFu
|
105
|
+
ZGxlcyB0aGF0XG5ub3JtYWxpemF0aW9uIGluIG9uZSBwbGFjZSBieSBkZWZp
|
106
|
+
bmluZyBhY3R1YWwgYm9vbGVhbiBzdGF0ZXMuXG5cbkV4YW1wbGVcbi0tLS0t
|
107
|
+
LS1cblxuKipUeXBlIGltcGxlbWVudGF0aW9uKio6XG5cbiAgICByZXF1aXJl
|
108
|
+
ICdwdXBwZXQvcHJvcGVydHkvYm9vbGVhbidcblxuICAgIFB1cHBldDo6VHlw
|
109
|
+
ZS5uZXd0eXBlKDphd2Vzb21lKSBkb1xuXG4gICAgICBuZXdwYXJhbSg6bmFt
|
110
|
+
ZSwgOm5hbWV2YXIgPT4gdHJ1ZSlcblxuICAgICAgbmV3cHJvcGVydHkoOmJl
|
111
|
+
dHRlcnRoYW5zbGljZWRicmVhZCwgOnBhcmVudCA9PiBQdXBwZXQ6OlByb3Bl
|
112
|
+
cnR5OjpCb29sZWFuKSBkb1xuICAgICAgICBkZXNjIFwiRGV0ZXJtaW5lIGlm
|
113
|
+
IHRoZSB0aGluZyBpcyBtb3JlIGF3ZXNvbWUgdGhhbiBzbGljZWQgYnJlYWRc
|
114
|
+
IlxuICAgICAgICBkZWZhdWx0dG8gdHJ1ZSAjIEl0J3Mgbm90IGhhcmQgdG8g
|
115
|
+
YmUgbW9yZSBhd2Vzb21lIHRoYW4gc2xpY2VkIGJyZWFkXG4gICAgICBlbmRc
|
116
|
+
blxuICAgICAgbmV3cHJvcGVydHkoOmJldHRlcl90aGFuX3JvY2tldF9ib290
|
117
|
+
cywgOnBhcmVudCA9PiBQdXBwZXQ6OlByb3BlcnR5OjpCb29sZWFuKSBkb1xu
|
118
|
+
ICAgICAgICBkZXNjIFwiRGV0ZXJtaW5lIGlmIHRoZSB0aGluZyBpcyBtb3Jl
|
119
|
+
IG9mdGVuIHRoYW4gcm9ja2V0IGJvb3RzXCJcbiAgICAgICAgZGVmYXVsdHRv
|
120
|
+
IGZhbHNlICMgUm9ja2V0IGJvb3RzIGFyZSBwcmV0dHkgaGFyZCB0byBiZWF0
|
121
|
+
XG4gICAgICBlbmRcblxuICAgICAgbmV3cHJvcGVydHkoOndpbGxfZ2V0X3lv
|
122
|
+
dV9lYXRlbl9ieV9zaGFya3MsIDpwYXJlbnQgPT4gUHVwcGV0OjpQcm9wZXJ0
|
123
|
+
eTo6Qm9vbGVhbikgZG9cbiAgICAgICAgZGVzYyBcIkRldGVybWluZSBpZiB0
|
124
|
+
aGlzIGlzIHNvIGF3ZXNvbWUgdGhhdCBpdCdsbCBnZXQgeW91IGVhdGVuIGJ5
|
125
|
+
IHNoYXJrc1wiXG4gICAgICAgIGRlZmF1bHR0byA6ZmFsc2UgIyBVc2UgYSBz
|
126
|
+
eW1ib2wgZm9yIHRoZSBkZWZhdWx0IHZhbHVlIGFuZCBpdCdsbCBzdGlsbCBi
|
127
|
+
ZSBmYWxzZVxuICAgICAgZW5kXG5cbiAgICAgIG5ld3Byb3BlcnR5KDpzdWl0
|
128
|
+
YWJsZV9mb3JfaHVtYW5fY29uc3VtcHRpb24sIDpwYXJlbnQgPT4gUHVwcGV0
|
129
|
+
OjpQcm9wZXJ0eTo6Qm9vbGVhbikgZG9cbiAgICAgICAgZGVzYyBcIkRldGVy
|
130
|
+
bWluZSBpZiB0aGUgdGhpbmcgaXMgYm90aCBhd2Vzb21lIGFuZCBlZGlibGVc
|
131
|
+
IlxuICAgICAgICBkZWZhdWx0dG8gOmZhbHNlICMgVGhlIGFyZSBtb3JlIG5v
|
132
|
+
bi1lZGlibGUgdGhpbmdzIHRoYW4gZWRpYmxlIHRoaW5nc1xuICAgICAgZW5k
|
133
|
+
XG4gICAgZW5kXG5cbioqVHlwZSB1c2FnZSoqOlxuXG4gICAgYXdlc29tZSB7
|
134
|
+
ICdhY3R1YWwgYm9vbGVhbnMnOlxuICAgICAgYmV0dGVyX3RoYW5fcm9ja2V0
|
135
|
+
X2Jvb3RzICAgICAgID0+IHRydWUsICAgIyBVc2UgYW4gdW5xdW90ZWQgc3Ry
|
136
|
+
aW5nIVxuICAgICAgYmV0dGVyX3RoYW5fc2xpY2VkX2JyZWFkICAgICAgID0+
|
137
|
+
ICd0cnVlJywgIyBVc2UgYSBxdW90ZWQgc3RyaW5nIVxuICAgICAgc3VpdGFi
|
138
|
+
bGVfZm9yX2h1bWFuX2NvbnN1bXB0aW9uID0+IG5vLCAgICAgIyBVc2UgeWVz
|
139
|
+
IGFuZCBubyEgSXQgZG9lc24ndCBtYXR0ZXIhXG4gICAgfVxuXG5Db250YWN0
|
140
|
+
XG4tLS0tLS0tXG5cbiAgKiBzb3VyY2UgY29kZTogaHR0cHM6Ly9naXRodWIu
|
141
|
+
Y29tL2FkcmllbnRoZWJvL3B1cHBldC1ib29sZWFuXG4gICogaXNzdWUgdHJh
|
142
|
+
Y2tlcjogaHR0cHM6Ly9naXRodWIuY29tL2FkcmllbnRoZWJvL3B1cHBldC1i
|
143
|
+
b29sZWFuL2lzc3Vlc1xuXG5JZiB5b3UgaGF2ZSBxdWVzdGlvbnMgb3IgY29u
|
144
|
+
Y2VybnMgYWJvdXQgdGhpcyBtb2R1bGUsIGNvbnRhY3QgZmluY2ggb24gI3B1
|
145
|
+
cHBldFxub24gRnJlZW5vZGUsIG9yIGVtYWlsIGFkcmllbkBwdXBwZXRsYWJz
|
146
|
+
LmNvbS5cbiIsCiAgICAiY2hhbmdlbG9nIjogIkNIQU5HRUxPR1xuXG4xLjAu
|
147
|
+
MVxuLS0tLS1cblxuVGhpcyBpcyBhIGJhY2t3YXJkcyBjb21wYXRpYmxlIGJ1
|
148
|
+
Z2ZpeCByZWxlYXNlXG5cbiAgKiBDb3JyZWN0IHBlcm1pc3Npb25zIHRvIG1h
|
149
|
+
a2UgcGx1Z2luIHdvcmxkIHJlYWRhYmxlLlxuIiwKICAgICJsaWNlbnNlIjog
|
150
|
+
IkNvcHlyaWdodCAyMDEzIEFkcmllbiBUaGVib1xuXG5MaWNlbnNlZCB1bmRl
|
151
|
+
ciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNl
|
152
|
+
bnNlXCIpO1xueW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4g
|
153
|
+
Y29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuWW91IG1heSBvYnRhaW4g
|
154
|
+
YSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG5cbiAgICBodHRwOi8vd3d3LmFw
|
155
|
+
YWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcblxuVW5sZXNzIHJlcXVp
|
156
|
+
cmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5n
|
157
|
+
LCBzb2Z0d2FyZVxuZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMg
|
158
|
+
ZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuV0lUSE9VVCBX
|
159
|
+
QVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBl
|
160
|
+
eHByZXNzIG9yIGltcGxpZWQuXG5TZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBz
|
161
|
+
cGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG5s
|
162
|
+
aW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cblxuIiwKICAgICJjcmVh
|
163
|
+
dGVkX2F0IjogIjIwMTMtMDgtMTQgMTQ6MDA6MjQgLTA3MDAiLAogICAgInVw
|
164
|
+
ZGF0ZWRfYXQiOiAiMjAxNS0wMi0wNCAyMToxNzowMiAtMDgwMCIsCiAgICAi
|
165
|
+
ZGVsZXRlZF9hdCI6IG51bGwKICB9LAogICJyZWxlYXNlcyI6IFsKICAgIHsK
|
166
|
+
ICAgICAgInVyaSI6ICIvdjMvcmVsZWFzZXMvYWRyaWVuLWJvb2xlYW4tMS4w
|
167
|
+
LjEiLAogICAgICAidmVyc2lvbiI6ICIxLjAuMSIsCiAgICAgICJzdXBwb3J0
|
168
|
+
ZWQiOiBmYWxzZSwKICAgICAgImNyZWF0ZWRfYXQiOiAiMjAxMy0wOC0xNCAx
|
169
|
+
NDowMDoyNCAtMDcwMCIKICAgIH0sCiAgICB7CiAgICAgICJ1cmkiOiAiL3Yz
|
170
|
+
L3JlbGVhc2VzL2Fkcmllbi1ib29sZWFuLTEuMC4wIiwKICAgICAgInZlcnNp
|
171
|
+
b24iOiAiMS4wLjAiLAogICAgICAic3VwcG9ydGVkIjogZmFsc2UsCiAgICAg
|
172
|
+
ICJjcmVhdGVkX2F0IjogIjIwMTMtMDctMDQgMTc6MTU6MzcgLTA3MDAiCiAg
|
173
|
+
ICB9LAogICAgewogICAgICAidXJpIjogIi92My9yZWxlYXNlcy9hZHJpZW4t
|
174
|
+
Ym9vbGVhbi0wLjkuMCIsCiAgICAgICJ2ZXJzaW9uIjogIjAuOS4wIiwKICAg
|
175
|
+
ICAgInN1cHBvcnRlZCI6IGZhbHNlLAogICAgICAiY3JlYXRlZF9hdCI6ICIy
|
176
|
+
MDEyLTEyLTI4IDEwOjM5OjM2IC0wODAwIgogICAgfSwKICAgIHsKICAgICAg
|
177
|
+
InVyaSI6ICIvdjMvcmVsZWFzZXMvYWRyaWVuLWJvb2xlYW4tMC45LjAtcmMx
|
178
|
+
IiwKICAgICAgInZlcnNpb24iOiAiMC45LjAtcmMxIiwKICAgICAgInN1cHBv
|
179
|
+
cnRlZCI6IGZhbHNlLAogICAgICAiY3JlYXRlZF9hdCI6ICIyMDEyLTEyLTEz
|
180
|
+
IDEwOjQwOjExIC0wODAwIgogICAgfQogIF0sCiAgImZlZWRiYWNrX3Njb3Jl
|
181
|
+
IjogbnVsbCwKICAiaG9tZXBhZ2VfdXJsIjogImh0dHBzOi8vZ2l0aHViLmNv
|
182
|
+
bS9hZHJpZW50aGViby9wdXBwZXQtYm9vbGVhbiIsCiAgImlzc3Vlc191cmwi
|
183
|
+
OiAiaHR0cHM6Ly9naXRodWIuY29tL2FkcmllbnRoZWJvL3B1cHBldC1ib29s
|
184
|
+
ZWFuL2lzc3VlcyIKfQ==
|
40
185
|
http_version:
|
41
|
-
recorded_at:
|
42
|
-
recorded_with: VCR 2.
|
186
|
+
recorded_at: Mon, 02 Mar 2015 19:59:13 GMT
|
187
|
+
recorded_with: VCR 2.9.3
|