Class: Puppet::Util::MasterWorkerLinkManager

Inherits:
Object
  • Object
show all
Defined in:
lib/puppet/util/master_worker_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, replication_port) ⇒ MasterWorkerLinkManager

Returns a new instance of MasterWorkerLinkManager.



15
16
17
18
19
20
21
22
# File 'lib/puppet/util/master_worker_link_manager.rb', line 15

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

Instance Attribute Details

#master_endpointObject (readonly)

Returns the value of attribute master_endpoint.



9
10
11
# File 'lib/puppet/util/master_worker_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/master_worker_link_manager.rb', line 10

def master_repository_id
  @master_repository_id
end

#replication_portObject (readonly)

Returns the value of attribute replication_port.



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

def replication_port
  @replication_port
end

#worker_endpointObject (readonly)

Returns the value of attribute worker_endpoint.



11
12
13
# File 'lib/puppet/util/master_worker_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/master_worker_link_manager.rb', line 12

def worker_repository_id
  @worker_repository_id
end

Instance Method Details



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

def check_link
  Puppet.debug "Check link between #{master_endpoint}/repositories/#{master_repository_id}
  	and #{worker_endpoint}/repositories/#{worker_repository_id}"

  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 },
                                                    { 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
56
57
58
# File 'lib/puppet/util/master_worker_link_manager.rb', line 38

def create_link
  Puppet.debug "Creating link between #{master_endpoint}/repositories/#{master_repository_id}
  	and #{worker_endpoint}/repositories/#{worker_repository_id}"

  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, true]
  }
  expected_massage = Regexp.escape("#{worker_endpoint}/repositories/#{worker_repository_id}".gsub('/', '\/'))

  Puppet::Util::RequestManager.perform_http_request(uri,
                                                    { method: :post,
                                                      content_type: "application/json",
                                                      body_data: body.to_json },
                                                    { messages: [expected_massage],
                                                      codes: [200] }, 0)
end


60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
# File 'lib/puppet/util/master_worker_link_manager.rb', line 60

def delete_link
  Puppet.debug "Deleting link between #{master_endpoint}/repositories/#{master_repository_id}
  	and #{worker_endpoint}/repositories/#{worker_repository_id}"

  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,
                                                      content_type: "application/json",
                                                      body_data: body.to_json },
                                                    { messages: [expected_massage],
                                                      codes: [200] }, 0)
end