class Adminix::Entities::Service
Attributes
device_id[R]
id[R]
jobs[R]
load_stamps[R]
logs[R]
performed_actions[R]
variables[RW]
Public Class Methods
new(opts = {})
click to toggle source
# File lib/adminix/entities/service.rb, line 9 def initialize(opts = {}) @id = opts[:id] @device_id_path = "#{Helpers::Command.home}/.config/adminix/device_id" @variables = [] @jobs = [] @logs = [] @load_stamps = [] @send_logs = false @locked = false @send_system_load = false @performed_actions = { watcher_started: true, watcher_updated: false, process_stopped: false, process_started: false, process_updated: false } define_device_id end
Public Instance Methods
add_logs(logs)
click to toggle source
# File lib/adminix/entities/service.rb, line 57 def add_logs(logs) return if locked? @logs += logs end
add_new_jobs(list)
click to toggle source
# File lib/adminix/entities/service.rb, line 48 def add_new_jobs(list) list.each do |data| @jobs << Entities::Job.new( id: data['id'], script: data['script'] ) end end
add_system_load(sys_load)
click to toggle source
# File lib/adminix/entities/service.rb, line 76 def add_system_load(sys_load) @load_stamps << sys_load end
add_variable(new_var)
click to toggle source
# File lib/adminix/entities/service.rb, line 66 def add_variable(new_var) var = @variables.find { |v| v.key == new_var.key } if var index = @variables.index(var) @variables[index] = new_var else @variables << new_var end end
allow_sending_logs()
click to toggle source
# File lib/adminix/entities/service.rb, line 84 def allow_sending_logs @send_logs = true return if @logs.count.zero? Adminix.logger.info("Sending #{@logs.count} new logs") end
allow_sending_system_load()
click to toggle source
# File lib/adminix/entities/service.rb, line 90 def allow_sending_system_load @send_system_load = true return if @load_stamps.count.zero? Adminix.logger.info("Sending #{@load_stamps.count} new system load stamps") end
bash_variables(file = nil)
click to toggle source
# File lib/adminix/entities/service.rb, line 173 def bash_variables(file = nil) output = '' if file content = (variables.map { |v| "#{v.key}=#{v.value}" }).join("\n") Helpers::Files.rm(file) Helpers::Files.write_plain_file(file, content) output = file else variables.each { |v| output << "#{v.to_bash_export}\n" } output << "# Run this command to configure your shell:\n" \ '# eval $(adminix env)' end output end
clean_load_stamps()
click to toggle source
# File lib/adminix/entities/service.rb, line 42 def clean_load_stamps return unless @send_system_load @send_system_load = false @load_stamps = [] end
clean_sent_logs()
click to toggle source
# File lib/adminix/entities/service.rb, line 36 def clean_sent_logs return unless @send_logs @send_logs = false @logs = [] end
completed_jobs()
click to toggle source
# File lib/adminix/entities/service.rb, line 149 def completed_jobs @jobs.select(&:completed?) end
completed_jobs_to_api()
click to toggle source
# File lib/adminix/entities/service.rb, line 153 def completed_jobs_to_api completed_jobs.map(&:to_api) end
define_device_id()
click to toggle source
# File lib/adminix/entities/service.rb, line 101 def define_device_id if Helpers::Files.file_exists?(@device_id_path) read_device_id else generate_device_id end end
define_performed_action(key, value)
click to toggle source
# File lib/adminix/entities/service.rb, line 169 def define_performed_action(key, value) @performed_actions[key] = value end
ensure_credentials_exists!()
click to toggle source
# File lib/adminix/entities/service.rb, line 96 def ensure_credentials_exists! return unless id_defined? Helpers::Output.display_error_and_exit('Credentials are not provided') end
generate_device_id(id = nil)
click to toggle source
# File lib/adminix/entities/service.rb, line 119 def generate_device_id(id = nil) @device_id = id || SecureRandom.uuid Helpers::Files.write_plain_file(@device_id_path, @device_id) end
id_defined?()
click to toggle source
# File lib/adminix/entities/service.rb, line 190 def id_defined? !(id || '').empty? end
load_stamps_to_api()
click to toggle source
# File lib/adminix/entities/service.rb, line 161 def load_stamps_to_api @send_system_load ? @load_stamps.map(&:to_api) : [] end
lock()
click to toggle source
# File lib/adminix/entities/service.rb, line 202 def lock @locked = true end
locked?()
click to toggle source
# File lib/adminix/entities/service.rb, line 198 def locked? @locked == true end
logs_to_api()
click to toggle source
# File lib/adminix/entities/service.rb, line 157 def logs_to_api @send_logs ? @logs.map(&:to_api) : [] end
new_jobs()
click to toggle source
# File lib/adminix/entities/service.rb, line 145 def new_jobs @jobs.select(&:in_queue?) end
new_jobs?()
click to toggle source
# File lib/adminix/entities/service.rb, line 194 def new_jobs? new_jobs.any? end
read_device_id()
click to toggle source
# File lib/adminix/entities/service.rb, line 109 def read_device_id content = Helpers::Files.read_plain_file(@device_id_path) .split("\n").first.to_s if content.empty? Helpers::Output.display_error_and_exit("Device ID can't be empty") else @device_id = content end end
remove_completed_jobs()
click to toggle source
# File lib/adminix/entities/service.rb, line 30 def remove_completed_jobs @jobs.each do |job| @jobs -= [job] if job.completed? end end
reset_performed_actions()
click to toggle source
# File lib/adminix/entities/service.rb, line 165 def reset_performed_actions @performed_actions.keys.map { |key| @performed_actions[key] = false } end
shift_load_stamps(number)
click to toggle source
# File lib/adminix/entities/service.rb, line 80 def shift_load_stamps(number) @load_stamps.shift(number) end
shift_logs(number)
click to toggle source
# File lib/adminix/entities/service.rb, line 62 def shift_logs(number) @logs.shift(number) end
sync_payload()
click to toggle source
TODO: real total memory and disk
# File lib/adminix/entities/service.rb, line 125 def sync_payload { device_id: @device_id, watcher_started: @performed_actions[:watcher_started], watcher_updated: @performed_actions[:watcher_updated], process_stopped: @performed_actions[:process_stopped], process_started: @performed_actions[:process_started], process_updated: @performed_actions[:process_updated], completed_jobs: completed_jobs_to_api, logs: logs_to_api, system_load: { stamps: load_stamps_to_api, total: { memory: 1024, disk: 10_240 } } } end
unlock()
click to toggle source
# File lib/adminix/entities/service.rb, line 206 def unlock @locked = false end