Class: Mammoth::NodeIdentity

Inherits:
Object
  • Object
show all
Defined in:
lib/mammoth/node_identity.rb

Overview

Local Mammoth node identity used by status and future control-plane agents.

Instance Attribute Summary collapse

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(node_id:, node_name:, fleet_id: nil, environment: nil, labels: {}, metadata: {}) ⇒ NodeIdentity

Returns a new instance of NodeIdentity.

Parameters:

  • node_id (String)

    stable node identifier

  • node_name (String)

    human-readable node name

  • fleet_id (String, nil) (defaults to: nil)

    optional fleet identifier

  • environment (String, nil) (defaults to: nil)

    optional environment name

  • labels (Hash) (defaults to: {})

    operator-defined labels

  • metadata (Hash) (defaults to: {})

    operator-defined metadata



16
17
18
19
20
21
22
23
# File 'lib/mammoth/node_identity.rb', line 16

def initialize(node_id:, node_name:, fleet_id: nil, environment: nil, labels: {}, metadata: {})
  @node_id = node_id
  @node_name = node_name
  @fleet_id = fleet_id
  @environment = environment
  @labels = labels || {}
  @metadata =  || {}
end

Instance Attribute Details

#environmentObject (readonly)

Returns the value of attribute environment.



8
9
10
# File 'lib/mammoth/node_identity.rb', line 8

def environment
  @environment
end

#fleet_idObject (readonly)

Returns the value of attribute fleet_id.



8
9
10
# File 'lib/mammoth/node_identity.rb', line 8

def fleet_id
  @fleet_id
end

#labelsObject (readonly)

Returns the value of attribute labels.



8
9
10
# File 'lib/mammoth/node_identity.rb', line 8

def labels
  @labels
end

#metadataObject (readonly)

Returns the value of attribute metadata.



8
9
10
# File 'lib/mammoth/node_identity.rb', line 8

def 
  @metadata
end

#node_idObject (readonly)

Returns the value of attribute node_id.



8
9
10
# File 'lib/mammoth/node_identity.rb', line 8

def node_id
  @node_id
end

#node_nameObject (readonly)

Returns the value of attribute node_name.



8
9
10
# File 'lib/mammoth/node_identity.rb', line 8

def node_name
  @node_name
end

Class Method Details

.from_config(config) ⇒ Mammoth::NodeIdentity

Build identity from Mammoth configuration.

Parameters:

Returns:



29
30
31
32
33
34
35
36
37
38
39
40
# File 'lib/mammoth/node_identity.rb', line 29

def self.from_config(config)
  identity = config.data["node"] || {}
  hostname = Socket.gethostname
  new(
    node_id: identity["node_id"] || hostname,
    node_name: identity["node_name"] || config.dig("mammoth", "name") || hostname,
    fleet_id: identity["fleet_id"],
    environment: identity["environment"],
    labels: identity["labels"] || {},
    metadata: identity["metadata"] || {}
  )
end

Instance Method Details

#to_hHash

Returns JSON-friendly node identity.

Returns:

  • (Hash)

    JSON-friendly node identity



43
44
45
46
47
48
49
50
51
52
# File 'lib/mammoth/node_identity.rb', line 43

def to_h
  {
    node_id: node_id,
    node_name: node_name,
    fleet_id: fleet_id,
    environment: environment,
    labels: labels,
    metadata: 
  }
end