Class: Atatus::Metadata::SystemInfo::ContainerInfo Private

Inherits:
Object
  • Object
show all
Defined in:
lib/atatus/metadata/system_info/container_info.rb

This class is part of a private API. You should avoid using this class if possible, as it may be removed or be changed in the future.

Constant Summary collapse

CGROUP_PATH =

This constant is part of a private API. You should avoid using this constant if possible, as it may be removed or be changed in the future.

'/proc/self/cgroup'
MOUNTINFO_PATH =

This constant is part of a private API. You should avoid using this constant if possible, as it may be removed or be changed in the future.

'/proc/self/mountinfo'

Instance Attribute Summary collapse

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(cgroup_path: CGROUP_PATH) ⇒ ContainerInfo

This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.

Returns a new instance of ContainerInfo.



31
32
33
# File 'lib/atatus/metadata/system_info/container_info.rb', line 31

def initialize(cgroup_path: CGROUP_PATH)
  @cgroup_path = cgroup_path
end

Instance Attribute Details

#cgroup_pathObject (readonly)

This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.



35
36
37
# File 'lib/atatus/metadata/system_info/container_info.rb', line 35

def cgroup_path
  @cgroup_path
end

#container_idObject

This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.



28
29
30
# File 'lib/atatus/metadata/system_info/container_info.rb', line 28

def container_id
  @container_id
end

#kubernetes_namespaceObject

This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.



28
29
30
# File 'lib/atatus/metadata/system_info/container_info.rb', line 28

def kubernetes_namespace
  @kubernetes_namespace
end

#kubernetes_node_nameObject

This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.



28
29
30
# File 'lib/atatus/metadata/system_info/container_info.rb', line 28

def kubernetes_node_name
  @kubernetes_node_name
end

#kubernetes_pod_nameObject

This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.



28
29
30
# File 'lib/atatus/metadata/system_info/container_info.rb', line 28

def kubernetes_pod_name
  @kubernetes_pod_name
end

#kubernetes_pod_uidObject

This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.



28
29
30
# File 'lib/atatus/metadata/system_info/container_info.rb', line 28

def kubernetes_pod_uid
  @kubernetes_pod_uid
end

Class Method Details

.read!(hostname) ⇒ Object

This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.



46
47
48
# File 'lib/atatus/metadata/system_info/container_info.rb', line 46

def self.read!(hostname)
  new.read!(hostname)
end

Instance Method Details

#containerObject

This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.



50
51
52
53
54
55
56
# File 'lib/atatus/metadata/system_info/container_info.rb', line 50

def container
  @container ||=
    begin
      return unless container_id
      { id: container_id }
    end
end

#kubernetesObject

This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.



58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
# File 'lib/atatus/metadata/system_info/container_info.rb', line 58

def kubernetes
  @kubernetes =
    begin
      kubernetes = {
        namespace: kubernetes_namespace,
        node: { name: kubernetes_node_name },
        pod: {
          name: kubernetes_pod_name,
          uid: kubernetes_pod_uid
        }
      }
      return nil if kubernetes.values.all?(&:nil?)

      kubernetes
    end
end

#read!(hostname) ⇒ Object

This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.



37
38
39
40
41
42
43
44
# File 'lib/atatus/metadata/system_info/container_info.rb', line 37

def read!(hostname)
  read_from_mountinfo!
  read_from_cgroup! unless container_id && kubernetes_pod_uid

  self.kubernetes_pod_name = hostname if kubernetes_pod_uid
  read_from_env!
  self
end