Class: Dapp::Kube::Kubernetes::Client

Inherits:
Object
  • Object
show all
Includes:
Helper::YAML
Defined in:
lib/dapp/kube/kubernetes/client.rb

Defined Under Namespace

Modules: Error, Resource

Instance Method Summary collapse

Methods included from Helper::YAML

#yaml_load, #yaml_load_file

Constructor Details

#initialize(namespace: nil) ⇒ Client

Returns a new instance of Client.



7
8
9
10
# File 'lib/dapp/kube/kubernetes/client.rb', line 7

def initialize(namespace: nil)
  @namespace = namespace
  @query_parameters = {}
end

Instance Method Details

#create_namespace!(name, **query_parameters) ⇒ Object



91
92
93
# File 'lib/dapp/kube/kubernetes/client.rb', line 91

def create_namespace!(name, **query_parameters)
  request!(:post, '/api/v1/namespaces', body: { metadata: { name: name } }, **query_parameters)
end

#delete_namespace!(name, **query_parameters) ⇒ Object



95
96
97
# File 'lib/dapp/kube/kubernetes/client.rb', line 95

def delete_namespace!(name, **query_parameters)
  request!(:delete, "/api/v1/namespaces/#{name}", **query_parameters)
end

#event_list(**query_parameters) ⇒ Object



110
111
112
# File 'lib/dapp/kube/kubernetes/client.rb', line 110

def event_list(**query_parameters)
  request!(:get, "/api/v1/namespaces/#{namespace}/events", **query_parameters)
end

#namespaceObject



12
13
14
# File 'lib/dapp/kube/kubernetes/client.rb', line 12

def namespace
  @namespace || kube_context_config['context']['namespace'] || 'default'
end

#namespace?(name, **query_parameters) ⇒ Boolean

Returns:

  • (Boolean)


87
88
89
# File 'lib/dapp/kube/kubernetes/client.rb', line 87

def namespace?(name, **query_parameters)
  namespace_list(**query_parameters)['items'].map { |item| item['metadata']['name'] }.include?(name)
end

#namespace_list(**query_parameters) ⇒ Object



83
84
85
# File 'lib/dapp/kube/kubernetes/client.rb', line 83

def namespace_list(**query_parameters)
  request!(:get, '/api/v1/namespaces', **query_parameters)
end

#pod_log(name, follow: false, **query_parameters, &blk) ⇒ Object



99
100
101
102
103
104
105
106
107
108
# File 'lib/dapp/kube/kubernetes/client.rb', line 99

def pod_log(name, follow: false, **query_parameters, &blk)
  excon_parameters = follow ? { response_block: blk } : {}
  request!(:get,
           "/api/v1/namespaces/#{namespace}/pods/#{name}/log",
           excon_parameters: excon_parameters,
           response_body_parameters: {json: false},
           **{ follow: follow }.merge(query_parameters))
rescue Excon::Error::Timeout
  raise Error::Timeout
end

#with_namespace(namespace, &blk) ⇒ Object

Чтобы не перегружать методы явной передачей namespace. Данный метод может пригодиться только в ситуации, когда надо указать другой namespace, в большинстве случаев используется namespace из конструктора.



19
20
21
22
23
24
25
26
27
# File 'lib/dapp/kube/kubernetes/client.rb', line 19

def with_namespace(namespace, &blk)
  old_namespace = @namespace
  begin
    @namespace = namespace
    return yield
  ensure
    @namespace = old_namespace
  end
end

#with_query(query, &blk) ⇒ Object



29
30
31
32
33
34
35
36
37
# File 'lib/dapp/kube/kubernetes/client.rb', line 29

def with_query(query, &blk)
  old_query = @query_parameters
  begin
    @query_parameters = query
    return yield
  ensure
    @query_parameters = old_query
  end
end