Class: Dapp::Kube::Client

Inherits:
Object
  • Object
show all
Defined in:
lib/dapp/kube/client.rb

Defined Under Namespace

Modules: Error

Instance Method Summary collapse

Constructor Details

#initialize(namespace: nil) ⇒ Client

Returns a new instance of Client.



4
5
6
7
# File 'lib/dapp/kube/client.rb', line 4

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

Instance Method Details

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



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

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

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



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

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

#event_list(**query_parameters) ⇒ Object



106
107
108
# File 'lib/dapp/kube/client.rb', line 106

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

#namespaceObject



9
10
11
# File 'lib/dapp/kube/client.rb', line 9

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

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

Returns:

  • (Boolean)


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

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

#namespace_list(**query_parameters) ⇒ Object



80
81
82
# File 'lib/dapp/kube/client.rb', line 80

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

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



96
97
98
99
100
101
102
103
104
# File 'lib/dapp/kube/client.rb', line 96

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,
           **{ follow: follow }.merge(query_parameters))
rescue Excon::Error::Timeout
  raise Error::Timeout
end

#with_namespace(namespace, &blk) ⇒ Object

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



16
17
18
19
20
21
22
23
24
# File 'lib/dapp/kube/client.rb', line 16

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

#with_query(query, &blk) ⇒ Object



26
27
28
29
30
31
32
33
34
# File 'lib/dapp/kube/client.rb', line 26

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