Class: Puppet::Util::MasterMasterLinkManager

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

Overview

GraphDB master master link manager

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(master_endpoint, master_repository_id, peer_master_endpoint, peer_master_repository_id, peer_master_node_id) ⇒ MasterMasterLinkManager

Returns a new instance of MasterMasterLinkManager.



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

def initialize(master_endpoint, master_repository_id, peer_master_endpoint, peer_master_repository_id,
               peer_master_node_id)
  @master_endpoint = master_endpoint
  @master_repository_id = master_repository_id
  @peer_master_endpoint = peer_master_endpoint
  @peer_master_repository_id = peer_master_repository_id
  @peer_master_node_id = peer_master_node_id
end

Instance Attribute Details

#master_endpointObject (readonly)

Returns the value of attribute master_endpoint.



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

def master_repository_id
  @master_repository_id
end

#peer_master_endpointObject (readonly)

Returns the value of attribute peer_master_endpoint.



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

def peer_master_endpoint
  @peer_master_endpoint
end

#peer_master_node_idObject (readonly)

Returns the value of attribute peer_master_node_id.



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

def peer_master_node_id
  @peer_master_node_id
end

#peer_master_repository_idObject (readonly)

Returns the value of attribute peer_master_repository_id.



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

def peer_master_repository_id
  @peer_master_repository_id
end

Instance Method Details



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

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

  uri = master_endpoint.dup
  uri.path = "/jolokia/read/ReplicationCluster:name=ClusterInfo!/#{master_repository_id}/SyncPeers"
  expected_massage = Regexp.escape("#{peer_master_endpoint}/repositories/#{peer_master_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
# File 'lib/puppet/util/master_master_link_manager.rb', line 38

def create_link
  Puppet.debug "Creating link between #{master_endpoint}/repositories/#{master_repository_id}
  	and #{peer_master_endpoint}/repositories/#{peer_master_repository_id}"
  uri = master_endpoint.dup
  uri.path = '/jolokia'
  body = {
    'type'      => 'EXEC',
    'mbean'     => "ReplicationCluster:name=ClusterInfo/#{master_repository_id}",
    'operation' => 'addSyncPeer',
    'arguments' => [peer_master_node_id, "#{peer_master_endpoint}/repositories/#{peer_master_repository_id}"]
  }
  expected_massage = Regexp.escape("#{peer_master_endpoint}/repositories/#{peer_master_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


59
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_master_link_manager.rb', line 59

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

  uri = master_endpoint.dup
  uri.path = '/jolokia'
  expected_massage = Regexp.escape(peer_master_node_id.gsub('/', '\/'))

  body = {
    'type'      => 'EXEC',
    'mbean'     => "ReplicationCluster:name=ClusterInfo/#{master_repository_id}",
    'operation' => 'removeSyncPeer',
    'arguments' => [peer_master_node_id]
  }

  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