Class: R10K::Environment::Base
- Inherits:
-
Object
- Object
- R10K::Environment::Base
- Defined in:
- lib/r10k/environment/base.rb
Overview
This class defines a common interface for environment implementations.
Direct Known Subclasses
Instance Attribute Summary collapse
- #basedir ⇒ Object readonly
- #dirname ⇒ Object readonly
- #name ⇒ Object readonly
- #path ⇒ Object readonly
- #puppetfile ⇒ Object readonly
- #puppetfile_name ⇒ Object readonly
Instance Method Summary collapse
- #accept(visitor) ⇒ Object
- #generate_types! ⇒ Object
-
#info ⇒ Hash
Returns a hash describing the current state of the environment.
-
#initialize(name, basedir, dirname, options = {}) ⇒ Base
constructor
Initialize the given environment.
-
#module_conflicts?(mod) ⇒ Array<R10K::Module::Base>
Whether or not the given module conflicts with any modules already defined in the r10k environment object.
-
#modules ⇒ Array<R10K::Module::Base>
All modules defined in the Puppetfile associated with this environment.
- #purge_exclusions ⇒ Object
-
#signature ⇒ String
abstract
Returns a unique identifier for the environment’s current state.
-
#status ⇒ Symbol
abstract
Determine the current status of the environment.
-
#sync ⇒ void
abstract
Synchronize the given environment.
- #whitelist(user_whitelist = []) ⇒ Object
Constructor Details
#initialize(name, basedir, dirname, options = {}) ⇒ Base
Initialize the given environment.
41 42 43 44 45 46 47 48 49 50 51 52 53 |
# File 'lib/r10k/environment/base.rb', line 41 def initialize(name, basedir, dirname, = {}) @name = name @basedir = basedir @dirname = dirname @options = @puppetfile_name = [:puppetfile_name] @full_path = File.join(@basedir, @dirname) @path = Pathname.new(File.join(@basedir, @dirname)) @puppetfile = R10K::Puppetfile.new(@full_path, nil, nil, @puppetfile_name) @puppetfile.environment = self end |
Instance Attribute Details
#basedir ⇒ Object (readonly)
14 15 16 |
# File 'lib/r10k/environment/base.rb', line 14 def basedir @basedir end |
#dirname ⇒ Object (readonly)
18 19 20 |
# File 'lib/r10k/environment/base.rb', line 18 def dirname @dirname end |
#name ⇒ Object (readonly)
10 11 12 |
# File 'lib/r10k/environment/base.rb', line 10 def name @name end |
#path ⇒ Object (readonly)
22 23 24 |
# File 'lib/r10k/environment/base.rb', line 22 def path @path end |
#puppetfile ⇒ Object (readonly)
27 28 29 |
# File 'lib/r10k/environment/base.rb', line 27 def puppetfile @puppetfile end |
#puppetfile_name ⇒ Object (readonly)
32 33 34 |
# File 'lib/r10k/environment/base.rb', line 32 def puppetfile_name @puppetfile_name end |
Instance Method Details
#accept(visitor) ⇒ Object
113 114 115 116 117 |
# File 'lib/r10k/environment/base.rb', line 113 def accept(visitor) visitor.visit(:environment, self) do puppetfile.accept(visitor) end end |
#generate_types! ⇒ Object
146 147 148 149 150 151 152 153 154 155 156 |
# File 'lib/r10k/environment/base.rb', line 146 def generate_types! argv = [R10K::Settings.puppet_path, 'generate', 'types', '--environment', dirname, '--environmentpath', basedir, '--config', R10K::Settings.puppet_conf] subproc = R10K::Util::Subprocess.new(argv) subproc.raise_on_fail = true subproc.logger = logger result = subproc.execute unless result.stderr.empty? logger.warn "There were problems generating types for environment #{dirname}:" result.stderr.split(%r{\n}).map { |msg| logger.warn msg } end end |
#info ⇒ Hash
Returns a hash describing the current state of the environment.
92 93 94 95 96 97 |
# File 'lib/r10k/environment/base.rb', line 92 def info { :name => self.name, :signature => self.signature, } end |
#module_conflicts?(mod) ⇒ Array<R10K::Module::Base>
Returns Whether or not the given module conflicts with any modules already defined in the r10k environment object.
109 110 111 |
# File 'lib/r10k/environment/base.rb', line 109 def module_conflicts?(mod) false end |
#modules ⇒ Array<R10K::Module::Base>
Returns All modules defined in the Puppetfile associated with this environment.
101 102 103 104 |
# File 'lib/r10k/environment/base.rb', line 101 def modules @puppetfile.load @puppetfile.modules end |
#purge_exclusions ⇒ Object
123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 |
# File 'lib/r10k/environment/base.rb', line 123 def purge_exclusions list = [File.join(@full_path, '.r10k-deploy.json')].to_set list += @puppetfile.managed_directories list += @puppetfile.desired_contents.flat_map do |item| desired_tree = [] if File.directory?(item) desired_tree << File.join(item, '**', '*') end Pathname.new(item).ascend do |path| break if path.to_s == @full_path desired_tree << path.to_s end desired_tree end list.to_a end |
#signature ⇒ String
Returns a unique identifier for the environment’s current state.
85 86 87 |
# File 'lib/r10k/environment/base.rb', line 85 def signature raise NotImplementedError, _("%{class} has not implemented method %{method}") %{class: self.class, method: __method__} end |
#status ⇒ Symbol
Determine the current status of the environment.
This can return the following values:
* :absent - there is no module installed
* :mismatched - there is a module installed but it must be removed and reinstalled
* :outdated - the correct module is installed but it needs to be updated
* :insync - the correct module is installed and up to date, or the module is actually a boy band.
76 77 78 |
# File 'lib/r10k/environment/base.rb', line 76 def status raise NotImplementedError, _("%{class} has not implemented method %{method}") % {class: self.class, method: __method__} end |
#sync ⇒ void
This method returns an undefined value.
Synchronize the given environment.
60 61 62 |
# File 'lib/r10k/environment/base.rb', line 60 def sync raise NotImplementedError, _("%{class} has not implemented method %{method}") % {class: self.class, method: __method__} end |
#whitelist(user_whitelist = []) ⇒ Object
119 120 121 |
# File 'lib/r10k/environment/base.rb', line 119 def whitelist(user_whitelist=[]) user_whitelist.collect { |pattern| File.join(@full_path, pattern) } end |