git.lirion.de

Of git, get, and gud

summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--site/no_fail_file/lib/puppet/parser/functions/no_fail_file.rb36
-rw-r--r--site/profile/manifests/code_manager.pp11
2 files changed, 43 insertions, 4 deletions
diff --git a/site/no_fail_file/lib/puppet/parser/functions/no_fail_file.rb b/site/no_fail_file/lib/puppet/parser/functions/no_fail_file.rb
new file mode 100644
index 0000000..3819ebf
--- /dev/null
+++ b/site/no_fail_file/lib/puppet/parser/functions/no_fail_file.rb
@@ -0,0 +1,36 @@
+require 'puppet/file_system'
+
+Puppet::Parser::Functions::newfunction(
+ :no_fail_file, :arity => -2, :type => :rvalue,
+ :doc => "Loads a file from a module and returns its contents as a string.
+
+ This is a replacement to the file function that returns nothing
+ if the file specified cannot be found instead of erroring out.
+
+ The argument to this function should be a `<MODULE NAME>/<FILE>`
+ reference, which will load `<FILE>` from a module's `files`
+ directory. (For example, the reference `mysql/mysqltuner.pl` will load the
+ file `<MODULES DIRECTORY>/mysql/files/mysqltuner.pl`.)
+
+ This function can also accept:
+
+ * An absolute path, which can load a file from anywhere on disk.
+ * Multiple arguments, which will return the contents of the **first** file
+ found, skipping any files that don't exist.
+ "
+) do |vals|
+ path = nil
+ vals.each do |file|
+ found = Puppet::Parser::Files.find_file(file, compiler.environment)
+ if found && Puppet::FileSystem.exist?(found)
+ path = found
+ break
+ end
+ end
+
+ if path
+ Puppet::FileSystem.read_preserve_line_endings(path)
+ else
+ nil
+ end
+end
diff --git a/site/profile/manifests/code_manager.pp b/site/profile/manifests/code_manager.pp
index f244564..6416054 100644
--- a/site/profile/manifests/code_manager.pp
+++ b/site/profile/manifests/code_manager.pp
@@ -42,11 +42,14 @@ class profile::code_manager {
}
- if !empty($gms_api_token) {
+ #this file cannont be read until the next run after the above exec
+ #because the file function runs on the master not on the agent
+ #so the file doesn't exist at the time the function is run
+ $rbac_token_file_contents = no_fail_file($token_filename)
- #this file cannont be read until the next run after the above exec
- #because the file function runs on the master not on the agent
- $rbac_token = parsejson(file($token_filename))['token']
+ if !empty($gms_api_token) and !empty($rbac_token_file_contents) {
+
+ $rbac_token = parsejson($rbac_token_file_contents)['token']
$code_manager_webhook_type = $git_management_system ? {
'gitlab' => 'github',