require 'mixlib/shellout' require 'io/console' require 'chef/mash' require 'chef/mixins' require 'json' require 'socket' module GitlabCtl module Util PUBLIC_ATTRIBUTES_FILE = '/var/opt/gitlab/public_attributes.json'.freeze class < 1, 's' => 1000, 'm' => 1000 * 60, 'h' => 1000 * 60 * 60, 'd' => 1000 * 60 * 60 * 24 }.freeze def parse_duration(duration) millis = 0 duration&.scan(/(?\d+(\.\d+)?)(?[a-zA-Z]+)/)&.each do |quantity, unit| multiplier = DURATION_UNITS[unit] break if multiplier.nil? millis += multiplier * quantity.to_f end begin millis = Float(duration || '') if millis.zero? rescue ArgumentError # Translating exception raise ArgumentError, "invalid value for duration: `#{duration}`" end millis.to_i end def public_attributes_missing? !File.exist?(PUBLIC_ATTRIBUTES_FILE) end def public_attributes_broken?(attribute_key = "gitlab") return true if public_attributes_missing? !get_public_node_attributes.key?(attribute_key) end def master_cookbook File.directory?('/opt/gitlab/embedded/cookbooks/gitlab-ee') ? 'gitlab-ee' : 'gitlab' end end end end