class ChefCLI::PolicyfileServices::Push
Attributes
config[R]
policy_group[R]
root_dir[R]
storage_config[R]
ui[R]
Public Class Methods
new(policyfile: nil, ui: nil, policy_group: nil, config: nil, root_dir: nil)
click to toggle source
# File lib/chef-cli/policyfile_services/push.rb, line 39 def initialize(policyfile: nil, ui: nil, policy_group: nil, config: nil, root_dir: nil) @root_dir = root_dir @ui = ui @config = config @policy_group = policy_group policyfile_rel_path = policyfile || "Policyfile.rb" policyfile_full_path = File.expand_path(policyfile_rel_path, root_dir) @storage_config = Policyfile::StorageConfig.new.use_policyfile(policyfile_full_path) @http_client = nil @policy_data = nil end
Public Instance Methods
http_client()
click to toggle source
# File lib/chef-cli/policyfile_services/push.rb, line 53 def http_client @http_client ||= Chef::ServerAPI.new(config.chef_server_url, signing_key_filename: config.client_key, client_name: config.node_name) end
policy_data()
click to toggle source
# File lib/chef-cli/policyfile_services/push.rb, line 59 def policy_data @policy_data ||= FFI_Yajl::Parser.parse(IO.read(policyfile_lock_expanded_path)) rescue => error raise PolicyfilePushError.new("Error reading lockfile #{policyfile_lock_expanded_path}", error) end
policyfile_lock()
click to toggle source
# File lib/chef-cli/policyfile_services/push.rb, line 82 def policyfile_lock @policyfile_lock || validate_lockfile end
run()
click to toggle source
# File lib/chef-cli/policyfile_services/push.rb, line 72 def run unless File.exist?(policyfile_lock_expanded_path) raise LockfileNotFound, "No lockfile at #{policyfile_lock_expanded_path} - you need to run `install` before `push`" end validate_lockfile write_updated_lockfile upload_policy end
uploader()
click to toggle source
# File lib/chef-cli/policyfile_services/push.rb, line 65 def uploader ChefCLI::Policyfile::Uploader.new(policyfile_lock, policy_group, ui: ui, http_client: http_client, policy_document_native_api: config.policy_document_native_api) end
Private Instance Methods
upload_policy()
click to toggle source
# File lib/chef-cli/policyfile_services/push.rb, line 88 def upload_policy uploader.upload rescue => error raise PolicyfilePushError.new("Failed to upload policy to policy group #{policy_group}", error) end
validate_lockfile()
click to toggle source
# File lib/chef-cli/policyfile_services/push.rb, line 100 def validate_lockfile return @policyfile_lock if @policyfile_lock @policyfile_lock = ChefCLI::PolicyfileLock.new(storage_config).build_from_lock_data(policy_data) # TODO: enumerate any cookbook that have been updated @policyfile_lock.validate_cookbooks! @policyfile_lock rescue => error raise PolicyfilePushError.new("Invalid lockfile data", error) end
write_updated_lockfile()
click to toggle source
# File lib/chef-cli/policyfile_services/push.rb, line 94 def write_updated_lockfile with_file(policyfile_lock_expanded_path) do |f| f.print(FFI_Yajl::Encoder.encode(policyfile_lock.to_lock, pretty: true )) end end