Class: Puppet::Util::LinkManager

Inherits:
Object
  • Object
show all
Defined in:
lib/puppet/util/link_manager.rb

Overview

GraphDB master worker link manager

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(master_endpoint, master_repository_id, worker_endpoint, worker_repository_id, jolokia_secret, replication_port) ⇒ LinkManager

Returns a new instance of LinkManager.



16
17
18
19
20
21
22
23
24
# File 'lib/puppet/util/link_manager.rb', line 16

def initialize(master_endpoint, master_repository_id, worker_endpoint, worker_repository_id, jolokia_secret,
               replication_port)
  @master_endpoint = master_endpoint
  @master_repository_id = master_repository_id
  @worker_endpoint = worker_endpoint
  @worker_repository_id = worker_repository_id
  @jolokia_secret = jolokia_secret
  @replication_port = replication_port
end

Instance Attribute Details

#jolokia_secretObject (readonly)

Returns the value of attribute jolokia_secret.



13
14
15
# File 'lib/puppet/util/link_manager.rb', line 13

def jolokia_secret
  @jolokia_secret
end

#master_endpointObject (readonly)

Returns the value of attribute master_endpoint.



9
10
11
# File 'lib/puppet/util/link_manager.rb', line 9

def master_endpoint
  @master_endpoint
end

#master_repository_idObject (readonly)

Returns the value of attribute master_repository_id.



10
11
12
# File 'lib/puppet/util/link_manager.rb', line 10

def master_repository_id
  @master_repository_id
end

#replication_portObject (readonly)

Returns the value of attribute replication_port.



14
15
16
# File 'lib/puppet/util/link_manager.rb', line 14

def replication_port
  @replication_port
end

#worker_endpointObject (readonly)

Returns the value of attribute worker_endpoint.



11
12
13
# File 'lib/puppet/util/link_manager.rb', line 11

def worker_endpoint
  @worker_endpoint
end

#worker_repository_idObject (readonly)

Returns the value of attribute worker_repository_id.



12
13
14
# File 'lib/puppet/util/link_manager.rb', line 12

def worker_repository_id
  @worker_repository_id
end

Instance Method Details



26
27
28
29
30
31
32
33
34
35
36
# File 'lib/puppet/util/link_manager.rb', line 26

def check_link
  uri = master_endpoint.dup
  uri.path = "/jolokia/read/ReplicationCluster:name=ClusterInfo!/#{master_repository_id}/NodeStatus"
  expected_massage = Regexp.escape("#{worker_endpoint}/repositories/#{worker_repository_id}".gsub('/', '\/'))

  Puppet::Util::RequestManager.perform_http_request(uri,
                                                    { method: :get,
                                                      auth: { user: '', password: jolokia_secret } },
                                                    { messages: [expected_massage],
                                                      codes: [200] }, 0)
end


38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
# File 'lib/puppet/util/link_manager.rb', line 38

def create_link
  uri = master_endpoint.dup
  uri.path = '/jolokia'
  body = {
    'type'      => 'EXEC',
    'mbean'     => "ReplicationCluster:name=ClusterInfo/#{master_repository_id}",
    'operation' => 'addClusterNode',
    'arguments' => ["#{worker_endpoint}/repositories/#{worker_repository_id}", replication_port, 0, true]
  }
  expected_massage = Regexp.escape("#{worker_endpoint}/repositories/#{worker_repository_id}".gsub('/', '\/'))

  Puppet::Util::RequestManager.perform_http_request(uri,
                                                    { method: :post,
                                                      body_data: body.to_json,
                                                      auth: { user: '', password: jolokia_secret } },
                                                    { messages: [expected_massage],
                                                      codes: [200] }, 0)
end


57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
# File 'lib/puppet/util/link_manager.rb', line 57

def delete_link
  uri = master_endpoint.dup
  uri.path = '/jolokia'
  body = {
    'type'      => 'EXEC',
    'mbean'     => "ReplicationCluster:name=ClusterInfo/#{master_repository_id}",
    'operation' => 'removeClusterNode',
    'arguments' => ["#{worker_endpoint}/repositories/#{worker_repository_id}"]
  }
  expected_massage = Regexp.escape("#{worker_endpoint}/repositories/#{worker_repository_id}".gsub('/', '\/'))

  Puppet::Util::RequestManager.perform_http_request(uri,
                                                    { method: :post,
                                                      body_data: body.to_json,
                                                      auth: { user: '', password: jolokia_secret } },
                                                    { messages: [expected_massage],
                                                      codes: [200] }, 0)
end