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.



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

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.



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

def master_endpoint
  @master_endpoint
end

#master_repository_idObject (readonly)

Returns the value of attribute master_repository_id.



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

def master_repository_id
  @master_repository_id
end

#peer_master_endpointObject (readonly)

Returns the value of attribute peer_master_endpoint.



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

def peer_master_endpoint
  @peer_master_endpoint
end

#peer_master_node_idObject (readonly)

Returns the value of attribute peer_master_node_id.



15
16
17
# File 'lib/puppet/util/master_master_link_manager.rb', line 15

def peer_master_node_id
  @peer_master_node_id
end

#peer_master_repository_idObject (readonly)

Returns the value of attribute peer_master_repository_id.



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

def peer_master_repository_id
  @peer_master_repository_id
end

Instance Method Details



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

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


40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
# File 'lib/puppet/util/master_master_link_manager.rb', line 40

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


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

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