Module: Nutella::App

Defined in:
lib/nutella_lib/app_core.rb,
lib/nutella_lib/app_log.rb,
lib/nutella_lib/app_net.rb,
lib/nutella_lib/app_persist.rb

Overview

App-level APIs sub-module

Defined Under Namespace

Modules: Log, Net, Persist

Class Method Summary collapse

Class Method Details

.app_runs_listObject



26
27
28
29
# File 'lib/nutella_lib/app_core.rb', line 26

def self.app_runs_list
  raise 'Nutella has not been initialized: you need to call the proper init method before you can start using nutella' if @app_runs_list.nil?
  @app_runs_list
end

.app_runs_list=(val) ⇒ Object

Setter/getter for runs_list



25
# File 'lib/nutella_lib/app_core.rb', line 25

def self.app_runs_list=(val) @app_runs_list=val; end

.extract_component_idString

Extracts the component name from the folder where the code for this component is located

Returns:

  • (String)

    the component name



51
52
53
# File 'lib/nutella_lib/app_core.rb', line 51

def self.extract_component_id
  Nutella.extract_component_id
end

.init(broker_hostname, app_id, component_id) ⇒ Object

Initializes this component as an application component

Parameters:

  • broker_hostname (String)
  • app_id (String)
  • component_id (String)


9
10
11
12
13
14
15
16
17
18
19
20
21
22
# File 'lib/nutella_lib/app_core.rb', line 9

def self.init( broker_hostname, app_id, component_id )
  Nutella.app_id = app_id
  Nutella.run_id = nil
  Nutella.component_id = component_id
  Nutella.resource_id = nil
  Nutella.mongo_host = broker_hostname
  Nutella.mqtt = SimpleMQTTClient.new broker_hostname
  
  # Start pinging
  Nutella.net.start_pinging
  # Fetch the `run_id`s list for this application and subscribe to its updates
  net.async_request('app_runs_list', lambda { |res| Nutella.app.app_runs_list = res })
  self.net.subscribe('app_runs_list', lambda {|message, _| Nutella.app.app_runs_list = message })
end

.logObject



33
# File 'lib/nutella_lib/app_core.rb', line 33

def self.log; Nutella::App::Log; end

.netObject

Accessors for sub-modules



32
# File 'lib/nutella_lib/app_core.rb', line 32

def self.net; Nutella::App::Net; end

.parse_args(args) ⇒ String

Parse command line arguments for app level components

Parameters:

  • args (Array)

    command line arguments array

Returns:

  • (String, String)

    broker and app_id



40
41
42
43
44
45
46
# File 'lib/nutella_lib/app_core.rb', line 40

def self.parse_args(args)
  if args.length < 2
    STDERR.puts 'Couldn\'t read broker address and app_id from the command line, impossible to initialize component!'
    return
  end
  return args[0], args[1]
end

.persistObject



34
# File 'lib/nutella_lib/app_core.rb', line 34

def self.persist; Nutella::App::Persist; end

.set_resource_id(resource_id) ⇒ Object

Sets the resource id

Parameters:

  • resource_id (String)

    the resource id (i.e. the particular instance of this component)



58
59
60
# File 'lib/nutella_lib/app_core.rb', line 58

def self.set_resource_id( resource_id )
  Nutella.set_resource_id resource_id
end