master_manipulator 1.2.4 → 1.2.6

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,15 +1,15 @@
1
1
  ---
2
2
  !binary "U0hBMQ==":
3
3
  metadata.gz: !binary |-
4
- YjEyODEzZjdlNjg1NDkwYjE5OWM0OTYzMzIwM2QzYzZkZWVlMjI1ZA==
4
+ ZDZjYzhmMTQ2OGU3OTdhYWI3OWI3NzRkOWE0NzliZTZiY2NmNDdlOQ==
5
5
  data.tar.gz: !binary |-
6
- OGMxMGJkNzQ0NTA5OWVjMjdmNDQxYTdlODRkZGRjMDFkOTU2NDAwMg==
6
+ NjU0MjQ0NTQzMjNhYzM1NzE0MzljN2QwNjI1YTlmMDY2ODAzMWUwNA==
7
7
  SHA512:
8
8
  metadata.gz: !binary |-
9
- NDlmMWFiY2I3YzM2ODQ0NDg0MzhmYjIwNzYzZTFkNjU0ZmNmYzQyZDRmYmYx
10
- ZWFiZDUxMzA2MWU1NmJhMzYwMjc0ZDI1MTBmNmI4OWRkMGIwNmRiOTY4OWEy
11
- ZmJhNzE5Y2Y4NWMxYmE3NWQ4N2M1MGMyNDExMjcwOGY4YjBhYjM=
9
+ ZTZlNDBkZTk3ZjJkYWZkNGQwNTUwYmJmMzYxOTk0ZGM0NjJhNDM1ZThkNjc5
10
+ YmE0ZDhjY2ZiZGMwYWM3ZGYxYjFiZTYzMWI4OGIxODc3YTc4OGVhMmI1NzNk
11
+ OTZiNzkyOWUwMmU2YTYzNWZlNWVmNDk1YjZhODMwZTNjNjk2OTE=
12
12
  data.tar.gz: !binary |-
13
- MjI4ZmQyYTkyZmQ3ZjZmMDQ2MTg4MWEwNjRmMTI0NDNlZDAxNDUwNmZmMWUx
14
- YmYwYzc5M2UzYTNkNWE2YzJhNDE2NGIzMWFkYTEwMjY2M2VlNDUzNmQ4YmQ2
15
- YzdhZDc4MjM3M2QyOTYwZjU1YjI3NDAyZDBjZTBkNzQ2YmQzYzc=
13
+ MjcxMzIxZDgzYzk1NzJiOTA1MzQyYjhkMTFiNDE5NmRjMjU1ODRhNTcyNzA0
14
+ NjRmOTQ1YTlhOTcyYWM2MzUwMDkzYjg3NzU1NDI1YWI1MmY2MTgyOGE5YmVk
15
+ MDRjYTU0OTdhNDk5YTVkZDhiNjYwYjE5NzRiNjcxNmEzZGY3ZDk=
data/HISTORY.md CHANGED
@@ -1,6 +1,7 @@
1
1
  # default - History
2
2
  ## Tags
3
- * [LATEST - 27 Sep, 2016 (036a99e6)](#LATEST)
3
+ * [LATEST - 10 Jan, 2017 (e3ff6153)](#LATEST)
4
+ * [1.2.4 - 27 Sep, 2016 (48017488)](#1.2.4)
4
5
  * [1.2.3 - 20 Nov, 2015 (f31e884e)](#1.2.3)
5
6
  * [1.2.2 - 30 Oct, 2015 (31450d3c)](#1.2.2)
6
7
  * [1.2.1 - 30 Oct, 2015 (b59fd2cf)](#1.2.1)
@@ -12,7 +13,81 @@
12
13
  * [1.0.0 - 6 May, 2015 (8ae50d90)](#1.0.0)
13
14
 
14
15
  ## Details
15
- ### <a name = "LATEST">LATEST - 27 Sep, 2016 (036a99e6)
16
+ ### <a name = "LATEST">LATEST - 10 Jan, 2017 (e3ff6153)
17
+
18
+ * (GEM) update master_manipulator version to 1.2.6 (e3ff6153)
19
+
20
+ * Merge pull request #25 from kurtwall/release-gem (838e4850)
21
+
22
+
23
+ ```
24
+ Merge pull request #25 from kurtwall/release-gem
25
+
26
+ (GEM) Release 1.2.5 gem
27
+ ```
28
+ * (GEM) Release 1.2.5 gem (b6a81655)
29
+
30
+ * Merge pull request #24 from kurtwall/fix-apiref (cd46a323)
31
+
32
+
33
+ ```
34
+ Merge pull request #24 from kurtwall/fix-apiref
35
+
36
+ (QA-2812) API ref missing #pe_version method
37
+ ```
38
+ * (QA-2812) API ref missing #pe_version method (4f718a04)
39
+
40
+ * Merge pull request #23 from kurtwall/release-gem (6f2f8ed9)
41
+
42
+
43
+ ```
44
+ Merge pull request #23 from kurtwall/release-gem
45
+
46
+ (maint) Fix YARD markup; modify a couple of variable names
47
+ ```
48
+ * Update changelog (88fd7460)
49
+
50
+ * Fix spec failures (36910dd8)
51
+
52
+ * Various cleanups ahead of a 1.2.5 release (fdf54a20)
53
+
54
+ * Merge pull request #22 from kurtwall/seed-the-yard (49f6ca54)
55
+
56
+
57
+ ```
58
+ Merge pull request #22 from kurtwall/seed-the-yard
59
+
60
+ (QA-2789) Convert API docs to use YARD markup
61
+ ```
62
+ * Merge https://github.com/puppetlabs/master_manipulator into seed-the-yard (38cb1469)
63
+
64
+ * Merge pull request #21 from kurtwall/update-readme (1d75e909)
65
+
66
+
67
+ ```
68
+ Merge pull request #21 from kurtwall/update-readme
69
+
70
+ (QA-2789) Revise Master Manipulator docs
71
+ ```
72
+ * Start the initial conversion to YARD (169b5755)
73
+
74
+ * Update README.md (2159ad76)
75
+
76
+ * (QA-2789) Revise Master Manipulator docs (fc5cae87)
77
+
78
+ * Merge pull request #20 from kurtwall/fix-typo (eff5cdf0)
79
+
80
+
81
+ ```
82
+ Merge pull request #20 from kurtwall/fix-typo
83
+
84
+ (MAINT) Fix typo
85
+ ```
86
+ * (MAINT) Fix typo (d3a63069)
87
+
88
+ ### <a name = "1.2.4">1.2.4 - 27 Sep, 2016 (48017488)
89
+
90
+ * (HISTORY) update master_manipulator history for gem release 1.2.4 (48017488)
16
91
 
17
92
  * (GEM) update master_manipulator version to 1.2.4 (036a99e6)
18
93
 
data/README.md CHANGED
@@ -1,127 +1,33 @@
1
1
  # Master Manipulator
2
2
 
3
- This Gem extends the Beaker DSL for the purpose of changing things on a
4
- Puppet Master.
3
+ This gem extends the Beaker DSL for the purpose of changing things on a
4
+ Puppet master
5
5
 
6
6
  ## Installation
7
7
 
8
+ ### Using a Gemfile
9
+
8
10
  Add this line to your application's Gemfile:
9
11
 
12
+ ```
10
13
  gem 'master_manipulator'
14
+ ```
11
15
 
12
16
  And then execute:
13
17
 
14
- $ bundle
15
-
16
- Or install it yourself as:
17
-
18
- $ gem install master_manipulator
19
-
20
- ## Methods
21
-
22
- ### disable_node_classifier
23
-
24
- Disable the node classifier on a Puppet Enterprise master and use the "site.pp"
25
- manifest instead for node classification.
26
-
27
- #### Example
28
-
29
- disable_node_classifier(master)
30
-
31
- ### disable_env_cache
32
-
33
- Disable environment caching on a Puppet Enterprise master to allow for dynamic
34
- updates to environments without waiting for cache purge.
35
-
36
- #### Example
37
-
38
- disable_env_cache(master)
39
-
40
- ### restart_puppet_server
41
-
42
- Restart the Puppet Server service to pickup configuration changes made to the
43
- "puppet.conf" file.
44
-
45
- #### Example
46
-
47
- Restart the Puppet Server service on Puppet Enterprise:
48
-
49
- restart_puppet_server(master)
50
-
51
- ### get_manifests_path
52
-
53
- Retrieve the path to the manifests folder for an environment on a master.
54
-
55
- #### Example 1
56
-
57
- Retrieve the path to the manifests folder for the "production" environment.
58
-
59
- prod_env_manifests_path = get_manifests_path(master)
60
-
61
- #### Example 2
62
-
63
- Retrieve the path to the manifests folder for the "staging" environment.
64
-
65
- stage_env_manifests_path = get_manifests_path(master, :env => 'staging')
66
-
67
- ### get_site_pp_path
68
-
69
- Retrieve the path to the "site.pp" manifest for an environment on a master.
70
-
71
- #### Example 1
72
-
73
- Retrieve the path to the "site.pp" manifest for the "production" environment.
74
-
75
- prod_env_site_pp_path = get_site_pp_path(master)
76
-
77
- #### Example 2
78
-
79
- Retrieve the path to the "site.pp" manifest for the "production" environment.
80
-
81
- stage_env_site_pp_path = get_site_pp_path(master, :env => 'staging')
82
-
83
- ### create_site_pp
84
-
85
- Create a "site.pp" file with file bucket enabled. Also, allow the creation of a
86
- custom node definition or use the 'default' node definition.
87
-
88
- #### Example 1
89
-
90
- Create a "site.pp" manifest with the default node definition using a simple
91
- manifest.
92
-
93
- site_pp = create_site_pp(master, :manifest => 'notify { hello: }')
94
-
95
- #### Example 2
96
-
97
- Create a "site.pp" manifest with a custom node definition using a simple
98
- manifest.
99
-
100
- site_pp = create_site_pp(master, :node_def_name => 'puppet_agent', :manifest => 'notify { hello: }')
101
-
102
- ### set_perms_on_remote
103
-
104
- Set permissions and ownership on a remote file.
105
-
106
- #### Example 1
107
-
108
- Set permissions on the "site.pp" manifest with default ownership of Pupppet
109
- user and group.
110
-
111
- set_perms_on_remote(master, get_site_pp_path(master), '644')
112
-
113
- #### Example 2
18
+ ```
19
+ bundle install
20
+ ```
114
21
 
115
- Set permissions on the "site.pp" manifest with root ownership.
22
+ or your preferred invocation for installing gems.
116
23
 
117
- set_perms_on_remote(master, get_site_pp_path(master), '644', :owner => 'root', :group => 'root')
24
+ ### Using Rubygems
118
25
 
119
- ### inject_site_pp
26
+ To install the gem yourself:
120
27
 
121
- Inject a "site.pp" manifest onto a master.
122
28
 
123
- #### Example
29
+ ```
30
+ gem install master_manipulator
31
+ ```
124
32
 
125
- prod_env_site_pp_path = get_site_pp_path(master)
126
- site_pp = create_site_pp(master, :manifest => 'notify { hello: }')
127
- inject_site_pp(master, prod_env_site_pp_path, site_pp)
33
+ Refer to [the API document](doc/apiref.md) for API information.
data/Rakefile CHANGED
@@ -1,5 +1,4 @@
1
1
  require "bundler/gem_tasks"
2
-
3
2
  require 'rspec/core/rake_task'
4
3
 
5
4
  task :default => :test
@@ -1,36 +1,24 @@
1
1
  module MasterManipulator
2
2
  module Config
3
3
 
4
- # Disable the Node Classifier on the Puppet master.
5
- # (Note: this requires a restart of Puppet Server to take affect.)
6
- # ==== Attributes
7
- #
8
- # * +master_host+ - The master running Puppet Server.
9
- #
10
- # ==== Returns
11
- #
12
- # nil
13
- #
14
- # ==== Examples
15
- #
16
- # site_pp = disable_node_classifier(master_host)
4
+ # Disable the node classifier on the Puppet master
5
+ # @param [Beaker::Host] master_host The master running the Puppet server.
6
+ # @return nil
7
+ # @example Disable the node classifier on the master
8
+ # disable_node_classifier(master)
9
+ # reload_puppetserver(master)
17
10
  def disable_node_classifier(master_host)
18
11
  on(master_host, puppet('config set node_terminus plain --section master'))
19
12
  end
20
13
 
21
- # Disable environment caching on the Puppet master.
22
- # (Note: this requires a restart of Puppet Server to take affect.)
23
- # ==== Attributes
24
- #
25
- # * +master_host+ - The master running Puppet Server.
26
- #
27
- # ==== Returns
28
- #
29
- # nil
30
- #
31
- # ==== Examples
32
- #
33
- # site_pp = disable_node_classifier(master_host)
14
+ # Disable environment caching on the Puppet master. Modifying this
15
+ # this setting requires reloading (preferred) or restarting (not
16
+ # preferred) the Puppet server
17
+ # @param [Beaker::Host] master_host The master running the Puppet server.
18
+ # @return nil
19
+ # @example Disable the environment cache on master
20
+ # disable_env_cache(master)
21
+ # reload_puppetserver(master)
34
22
  def disable_env_cache(master_host)
35
23
  on(master_host, puppet('config set environment_timeout 0 --section main'))
36
24
  end
@@ -3,31 +3,34 @@ require 'json'
3
3
  module MasterManipulator
4
4
  module Service
5
5
 
6
- # Restart the puppet server and wait for it to come back up
7
- # ==== Attributes
8
- # *+host+ - the host that this should operate on
9
- # *+opts+ - an options hash - not required
10
- # *+:wait_cycle+ - the number of cycles to attempt retry
11
- # *+:is_pe?+ - Boolean : if the SUT is PE, defaults to true
12
- #
13
- # Raises a standard error if the wait is unsuccessful
14
- #
15
- # ==== Example
16
- # restart_puppet_server(master)
17
- # restart_puppet_server(master, {:wait_cycles => 20})
18
- def restart_puppet_server(host, opts = {})
6
+ # Restart the puppet server and wait for it to come back up or raise
7
+ # an error if the wait times out
8
+ # @param [Beaker::Host] master_host The host to manipulate.
9
+ # @param [Hash] opts Optional options hash containing options
10
+ # @option opts [Boolean] :is_pe? true if host is running PE, false otherwise
11
+ # @option opts [Integer] :wait_cycles How many attempt to make before failing
12
+ # @return nil
13
+ # @example Restart the puppetserver process on a PE master
14
+ # restart_puppet_server(master)
15
+ # @example Restart the puppetserver process on a FOSS master
16
+ # restart_puppet_server(master, {:is_pe? => false})
17
+ # @example Restart the puppetserver process on a PE master, timing out after 20 attempts
18
+ # restart_puppet_server(master, {:wait_cycles => 20})
19
+ # @example Restart the puppetserver process on a FOSS master, timing out after 20 attempts
20
+ # restart_puppet_server(master, {:is_pe? => false, :wait_cycles => 20})
21
+ def restart_puppet_server(master_host, opts = {})
19
22
 
20
23
  start_time = Time.now
21
24
 
22
25
  opts[:is_pe?] ||= true
23
26
  opts[:is_pe?] ? service_name = 'pe-puppetserver' : service_name = 'puppetserver'
24
27
 
25
- on(host, puppet("resource service #{service_name} ensure=stopped"))
26
- on(host, puppet("resource service #{service_name} ensure=running"))
27
- hostname = on(host, 'hostname').stdout.chomp
28
+ on(master_host, puppet("resource service #{service_name} ensure=stopped"))
29
+ on(master_host, puppet("resource service #{service_name} ensure=running"))
30
+ hostname = on(master_host, 'hostname').stdout.chomp
28
31
  opts[:wait_cycles] ||= 10
29
32
 
30
- pe_ver = pe_version(host)
33
+ pe_ver = pe_version(master_host)
31
34
  three_eight_regex = /^3\.8/
32
35
 
33
36
  # This logic is not ideal refactor in the future
@@ -40,8 +43,7 @@ module MasterManipulator
40
43
  end
41
44
 
42
45
  (1..opts[:wait_cycles]).each do |i|
43
-
44
- @result = curl_on(host, curl_call, :acceptable_exit_codes => [0,1,7])
46
+ @result = curl_on(master_host, curl_call, :acceptable_exit_codes => [0,1,7])
45
47
  # parse body if we are using PE and we are not in PE 3.8
46
48
  (pe_ver && !pe_ver.match(three_eight_regex)) ? @body = JSON.parse(@result.stdout) : @body = []
47
49
 
@@ -50,42 +52,32 @@ module MasterManipulator
50
52
  sleep 20
51
53
  pe_ver.match(/three_eight_regex/) ? return : (return if @body.all? { |k, v| v['state'] == 'running' })
52
54
  when '1', '7'
53
- # Exit code 7 is "connection refused"
55
+ # Exit code 7 is 'connection refused'
54
56
  sleep (i**(1.2))
55
57
  end
56
58
  end
57
59
 
58
60
  total_time = Time.now - start_time
59
-
60
61
  message = "Attempted to restart #{opts[:wait_cycles]} times, waited #{total_time} seconds total."
61
-
62
- message << "\nHere is the status reported by the puppetserver'"
62
+ message << "\nHere is the status reported by the puppetserver"
63
63
 
64
64
  @body.each do |k,v|
65
65
  message << "\n'#{k}' state: #{v['state']} "
66
66
  end
67
-
68
67
  raise message
69
68
 
70
69
  end
71
70
 
72
- # Determine the version of PE installed on the master
73
- #
74
- # ==== Attributes
75
- # *+host+ - the host that this should operate on
76
- #
77
- # ==== Returns
78
- #
79
- # +string+ -The version of puppet enterprise, if version can not be determined 'version unknown' is returned
80
- #
81
- # ==== Examples
82
- #
83
- # pe_version
84
- def pe_version(host)
85
- if on(host, 'test -f /opt/puppet/pe_version', :acceptable_exit_codes => [0,1]).exit_code == 0
86
- return on(host, 'cat /opt/puppet/pe_version').stdout.chomp
87
- elsif on(host, 'test -f /opt/puppetlabs/server/pe_version', :acceptable_exit_codes => [0,1]).exit_code == 0
88
- return on(host, 'cat /opt/puppetlabs/server/pe_version').stdout.chomp
71
+ # Return the version of PE installed on the specified Puppet master
72
+ # @param [Beaker::Host] master_host the master to query.
73
+ # @return [String] The version of Puppet Enterprise, or 'version unknown' if undetermined
74
+ # @example Return the version of PE running on master
75
+ # ver = pe_version(master)
76
+ def pe_version(master_host)
77
+ if on(master_host, 'test -f /opt/puppet/pe_version', :acceptable_exit_codes => [0,1]).exit_code == 0
78
+ return on(master_host, 'cat /opt/puppet/pe_version').stdout.chomp
79
+ elsif on(master_host, 'test -f /opt/puppetlabs/server/pe_version', :acceptable_exit_codes => [0,1]).exit_code == 0
80
+ return on(master_host, 'cat /opt/puppetlabs/server/pe_version').stdout.chomp
89
81
  else
90
82
  return 'version unknown'
91
83
  end
@@ -1,65 +1,51 @@
1
1
  module MasterManipulator
2
2
  module Site
3
3
 
4
- # Get the location of an environment's manifests path. (Defaults to "production" environment.)
5
- #
6
- # ==== Attributes
7
- #
8
- # * +master_host+ - The master host that contains environments.
9
- # * +opts:env+ - The environment from which to discover the manifests path.
10
- #
11
- # ==== Returns
12
- #
13
- # +string+ - An absolute path to the manifests for an environment on the master host.
14
- #
15
- # ==== Examples
16
- #
17
- # prod_env_manifests_path = get_manifests_path(master)
4
+ # Get the location of an environment's manifests path; defaults to production environment.
5
+ # @param [Beaker::Host] master_host The master host that contains environments.
6
+ # @param [Hash] opts Optional options hash containing options.
7
+ # @option opts [String] :env The environment to query on the specified master
8
+ # @return [String] The absolute path to the manifests for the given environment on the given master
9
+ # @example Get the manifests path for the production environment on master
10
+ # prod_env_manifests_path = get_manifests_path(master)
11
+ # @example Get the manifests path for the testing environment on master
12
+ # test_env_manifests_path = get_manifests_path(master, {:env => 'test'})
18
13
  def get_manifests_path(master_host, opts = {})
19
14
  opts[:env] ||= 'production'
20
-
21
15
  environment_base_path = on(master_host, puppet('config print environmentpath')).stdout.rstrip
22
16
 
23
17
  return File.join(environment_base_path, opts[:env], 'manifests')
24
18
  end
25
19
 
26
- # Get the location of an environment's "site.pp" path. (Defaults to "production" environment.)
27
- #
28
- # ==== Attributes
29
- #
30
- # * +master_host+ - The master host that contains environments.
31
- # * +opts:env+ - The environment from which to discover the "site.pp" path.
32
- #
33
- # ==== Returns
34
- #
35
- # +string+ - An absolute path to the "site.pp" for an environment on the master host.
36
- #
37
- # ==== Examples
38
- #
39
- # prod_env_site_pp_path = get_site_pp_path(master)
20
+ # Get the path to a given environment's site.pp; defaults to production environment.
21
+ # @param [Beaker::Host] master_host The master to query.
22
+ # @param [Hash] opts Optional options hash containing options.
23
+ # @option opts [String] :env opts The environment to query on the specified master
24
+ # @return [String] The absolute path to the site.pp for the given environment on the given master
25
+ # @example Return the path to the site.pp file for the production environment on master
26
+ # prod_env_site_pp_path = get_site_pp_path(master)
27
+ # @example Return the path to the site.pp file for the testing environment on master
28
+ # prod_env_site_pp_path = get_site_pp_path(master, {:env => 'testing'})
40
29
  def get_site_pp_path(master_host, opts = {})
41
30
  opts[:env] ||= 'production'
42
31
 
43
32
  return File.join(get_manifests_path(master_host, opts), 'site.pp')
44
33
  end
45
34
 
46
- # Create a "site.pp" file with file bucket enabled. Also, allow
47
- # the creation of a custom node definition or use the 'default'
35
+ # Create a site.pp file with file bucket enabled. Also, allow
36
+ # the creation of a custom node definition or use the default
48
37
  # node definition.
49
- #
50
- # ==== Attributes
51
- #
52
- # * +master_host+ - The target master for "site.pp" injection.
53
- # * +opts:manifest+ - A Puppet manifest to inject into the node definition.
54
- # * +opts:node_def_name+ - A node definition pattern or name.
55
- #
56
- # ==== Returns
57
- #
58
- # +string+ - A combined manifest with node definition containing input manifest
59
- #
60
- # ==== Examples
61
- #
62
- # site_pp = create_site_pp(master, '', node_def_name='agent')
38
+ # @param [Beaker::Host] master_host the target master for site.pp injection.
39
+ # @param [Hash] opts Optional options hash containing options.
40
+ # @option opts [String] :manifest The node definition to lay down
41
+ # @option opts [String] :node_def_name The node definition name
42
+ # @return [String] manifest A manifest containing the input node definition to lay down in site.pp
43
+ # @example Create a site.pp on master using the default node definition and an otherwise empty manifest
44
+ # site_pp = create_site_pp(master)
45
+ # @example Create a site.pp on master for a node named 'mailgrunt' with an otherwise empty manifest
46
+ # site_pp = create_site_pp(master, {:node_def_name => 'mailgrunt'})
47
+ # @example Create a site.pp on master for a node named 'mailgrunt' with a custom node definition in the manifest
48
+ # site_pp = create_site_pp(master, {:manifest => manifest_for_mailgrunt, :node_def_name => 'mailgrunt'})
63
49
  def create_site_pp(master_host, opts = {})
64
50
  opts[:manifest] ||= ''
65
51
  opts[:node_def_name] ||= 'default'
@@ -72,8 +58,7 @@ MANIFEST
72
58
 
73
59
  node_def = <<-MANIFEST
74
60
  node #{opts[:node_def_name]} {
75
-
76
- #{opts[:manifest]}
61
+ #{opts[:manifest]}
77
62
  }
78
63
  MANIFEST
79
64
 
@@ -96,50 +81,41 @@ MANIFEST
96
81
  end
97
82
 
98
83
  # Set mode, owner and group on a remote path.
99
- #
100
- # ==== Attributes
101
- #
102
- # * +host+ - The remote host containing the target path.
103
- # * +path+ - The path to set mode, user and group upon.
104
- # * +mode+ - The desired mode to set on the path in as a string.
105
- # * +opts:owner+ - The owner to set on the path. (Puppet user if not specified.)
106
- # * +opts:group+ - The group to set on the path. (Puppet group if not specified.)
107
- #
108
- # ==== Returns
109
- #
110
- # nil
111
- #
112
- # ==== Examples
113
- #
114
- # set_perms_on_remote(master, "/tmp/test/site.pp", "777")
115
- def set_perms_on_remote(host, path, mode, opts = {})
116
- opts[:owner] ||= on(host, puppet('config print user')).stdout.rstrip
117
- opts[:group] ||= on(host, puppet('config print group')).stdout.rstrip
118
-
119
- on(host, "chmod -R #{mode} #{path}")
120
- on(host, "chown -R #{opts[:owner]}:#{opts[:group]} #{path}")
84
+ # @param [Beaker::Host] master_host The remote host containing the target path.
85
+ # @param [String] path The pathname on which to set mode, user and group.
86
+ # @param [String] mode The desired file mode in 4-digit octal string (e.g. '0644').
87
+ # @param [Hash] opts Optional options hash containing options.
88
+ # @option opts [String] :owner The user owner to assign
89
+ # @option opts [String] :group The group owner to assign
90
+ # @return nil
91
+ # @example Set perms on a file on master with the default user and group
92
+ # set_perms_on_remote(master, '/tmp/this_is_junk.pp', '0644')
93
+ # @example Set perms on a file on master with the default user and a custom group
94
+ # set_perms_on_remote(master, '/tmp/this_is_junk.pp', '0644', {:group => 'tutones')
95
+ # @example Set perms on a file on master with a custom user and the default group
96
+ # set_perms_on_remote(master, '/tmp/this_is_junk.pp', '0644', {:user => 'tommy')
97
+ # @example Set perms on a file on master with a custom user and a custom group
98
+ # set_perms_on_remote(master, '/tmp/this_is_junk.pp', '0644', {:user => 'tommy', :group => 'tutones')
99
+ def set_perms_on_remote(master_host, path, mode, opts = {})
100
+ opts[:owner] ||= on(master_host, puppet('config print user')).stdout.rstrip
101
+ opts[:group] ||= on(master_host, puppet('config print group')).stdout.rstrip
102
+
103
+ on(master_host, "chmod -Rv #{mode} #{path}")
104
+ on(master_host, "chown -Rv #{opts[:owner]}:#{opts[:group]} #{path}")
121
105
  end
122
106
 
123
- # Inject a "site.pp" manifest onto a master.
124
- #
125
- # ==== Attributes
126
- #
127
- # * +master_host+ - The target master for injection.
128
- # * +site_pp_path+ - A path on the remote host into which the site.pp will be injected.
129
- # * +manifest+ - The manifest content to inject into "site.pp" to the host target path.
130
- #
131
- # ==== Returns
132
- #
133
- # nil
134
- #
135
- # ==== Examples
136
- #
137
- # site_pp = inject_site_pp(master_host, "/tmp/test/site.pp", manifest)
107
+ # Inject a site.pp manifest onto a master.
108
+ # @param [Beaker::Host] master_host the target master for injection.
109
+ # @param [String] site_pp_path a path on the remote host into which the site.pp will be injected.
110
+ # @param [String] manifest the manifest content to inject into site.pp to the host target path.
111
+ # @return nil
112
+ # @example Place this_is_junk.pp, with the contents defined in manifest, in /tmp on the master named compile_master
113
+ # site_pp = inject_site_pp(compile_master, '/tmp/this_is_junk.pp', manifest)
138
114
  def inject_site_pp(master_host, site_pp_path, manifest)
139
115
  site_pp_dir = File.dirname(site_pp_path)
140
116
  create_remote_file(master_host, site_pp_path, manifest)
141
117
 
142
- set_perms_on_remote(master_host, site_pp_dir, '744')
118
+ set_perms_on_remote(master_host, site_pp_dir, '0744')
143
119
  end
144
120
 
145
121
  end
@@ -1,5 +1,5 @@
1
1
  module MasterManipulator
2
2
  module Version
3
- STRING = '1.2.4'
3
+ STRING = '1.2.6'
4
4
  end
5
5
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: master_manipulator
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.2.4
4
+ version: 1.2.6
5
5
  platform: ruby
6
6
  authors:
7
- - Puppet Labs
7
+ - Puppet, Inc.
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2016-09-27 00:00:00.000000000 Z
11
+ date: 2017-01-10 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -136,10 +136,10 @@ dependencies:
136
136
  - - ! '>='
137
137
  - !ruby/object:Gem::Version
138
138
  version: '0'
139
- description: This Gem extends the Beaker DSL for the purpose of changing things on
140
- a Puppet Master.
139
+ description: This gem extends the Beaker DSL for the purpose of changing things on
140
+ a Puppet master
141
141
  email:
142
- - qa@puppetlabs.com
142
+ - qa@puppet.com
143
143
  executables: []
144
144
  extensions: []
145
145
  extra_rdoc_files: []
@@ -178,6 +178,6 @@ rubyforge_project:
178
178
  rubygems_version: 2.4.6
179
179
  signing_key:
180
180
  specification_version: 4
181
- summary: Puppet Labs testing library for controlling a Puppet Master
181
+ summary: Puppet test library for modifying a Puppet master
182
182
  test_files:
183
183
  - spec/spec_helper.rb