Class: KuberKit::Core::ServiceStore

Inherits:
Object
  • Object
show all
Defined in:
lib/kuber_kit/core/service_store.rb

Constant Summary collapse

NotFoundError =
Class.new(KuberKit::Error)
AlreadyAddedError =
Class.new(KuberKit::Error)

Instance Method Summary collapse

Instance Method Details

#add_definition(service_definition) ⇒ Object



18
19
20
21
22
23
24
25
26
# File 'lib/kuber_kit/core/service_store.rb', line 18

def add_definition(service_definition)
  @@service_definitions ||= {}

  unless @@service_definitions[service_definition.service_name].nil?
    raise AlreadyAddedError, "service #{service_definition.service_name} was already added"
  end

  @@service_definitions[service_definition.service_name] = service_definition
end

#all_definitionsObject



61
62
63
# File 'lib/kuber_kit/core/service_store.rb', line 61

def all_definitions
  @@service_definitions ||= {}
end

#countObject



65
66
67
# File 'lib/kuber_kit/core/service_store.rb', line 65

def count
  all_definitions.count
end

#define(service_name) ⇒ Object



12
13
14
15
16
# File 'lib/kuber_kit/core/service_store.rb', line 12

def define(service_name)
  definition = service_definition_factory.create(service_name)
  add_definition(definition)
  definition
end

#exists?(service_name) ⇒ Boolean

Returns:



69
70
71
# File 'lib/kuber_kit/core/service_store.rb', line 69

def exists?(service_name)
  !all_definitions[service_name].nil?
end

#get_definition(service_name) ⇒ Object



28
29
30
31
32
33
34
35
36
# File 'lib/kuber_kit/core/service_store.rb', line 28

def get_definition(service_name)
  @@service_definitions ||= {}

  if @@service_definitions[service_name].nil?
    raise NotFoundError, "service '#{service_name}' not found"
  end

  @@service_definitions[service_name]
end

#get_service(service_name) ⇒ Object



38
39
40
41
42
# File 'lib/kuber_kit/core/service_store.rb', line 38

def get_service(service_name)
  definition = get_definition(service_name)

  service_factory.create(definition)
end

#load_definition(file_path) ⇒ Object



53
54
55
# File 'lib/kuber_kit/core/service_store.rb', line 53

def load_definition(file_path)
  require(file_path)
end

#load_definitions(dir_path) ⇒ Object



44
45
46
47
48
49
50
51
# File 'lib/kuber_kit/core/service_store.rb', line 44

def load_definitions(dir_path)
  files = local_shell.recursive_list_files(dir_path, name: "*.rb").each do |path|
    load_definition(path)
  end
rescue KuberKit::Shell::AbstractShell::DirNotFoundError
  logger.warn("Directory with services not found: #{dir_path}")
  []
end

#reset!Object



57
58
59
# File 'lib/kuber_kit/core/service_store.rb', line 57

def reset!
  @@service_definitions = {}
end