voldemort-rb 0.1.3 → 0.1.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (2) hide show
  1. data/lib/connection/connection.rb +31 -32
  2. metadata +38 -6
@@ -1,8 +1,8 @@
1
- require 'rexml/document'
2
1
  require 'json'
2
+ require 'nokogiri'
3
+
3
4
 
4
5
  class Connection
5
- include REXML
6
6
 
7
7
  attr_accessor :hosts # The hosts from where we bootstrapped.
8
8
  attr_accessor :nodes # The array of VoldemortNodes available.
@@ -35,18 +35,22 @@ class Connection
35
35
 
36
36
  def bootstrap
37
37
  cluster_response = self.get_from("metadata", "cluster.xml", false)
38
- cluster_xml = cluster_response[1][0][1]
39
- self.nodes = self.parse_nodes_from(cluster_xml)
38
+ cluster_xml_doc = Nokogiri::XML(cluster_response[1][0][1])
39
+ self.nodes = self.parse_nodes_from(cluster_xml_doc)
40
40
 
41
41
  stores_response = self.get_from("metadata", "stores.xml", false)
42
+
42
43
  stores_xml = stores_response[1][0][1]
43
44
 
44
- self.key_serializer_type = parse_schema_type(stores_xml, 'key-serializer')
45
- self.value_serializer_type = parse_schema_type(stores_xml, 'value-serializer')
46
- self.key_serializer_schemas = parse_schema_from(stores_xml, 'key-serializer')
47
- self.value_serializer_schemas = parse_schema_from(stores_xml, 'value-serializer')
48
-
45
+ doc = Nokogiri::XML(stores_xml)
46
+
47
+ self.key_serializer_type = self.parse_schema_type(doc, 'key-serializer')
48
+ self.value_serializer_type = self.parse_schema_type(doc, 'value-serializer')
49
+ self.key_serializer_schemas = self.parse_schema_from(doc, 'key-serializer')
50
+ self.value_serializer_schemas = self.parse_schema_from(doc, 'value-serializer')
51
+
49
52
  self.connect_to_random_node
53
+
50
54
  rescue StandardError => e
51
55
  raise("There was an error trying to bootstrap from the specified servers: #{e}")
52
56
  end
@@ -62,39 +66,34 @@ class Connection
62
66
  end
63
67
  end
64
68
 
65
- def parse_schema_type(xml, serializer = 'value-serializer')
66
- doc = REXML::Document.new(xml)
67
- type_doc = XPath.first(doc, "//stores/store[name = \"#{self.db_name}\"]/#{serializer}/type")
68
-
69
+ def parse_schema_type(doc, serializer = 'value-serializer')
70
+ type_doc = doc.xpath("//stores/store[name = \"#{self.db_name}\"]/#{serializer}/type")
69
71
  if(type_doc != nil)
70
72
  return type_doc.text
71
73
  else
72
74
  return nil
73
75
  end
74
- end
76
+ end
75
77
 
76
- def parse_schema_from(xml, serializer = 'value-serializer')
78
+ def parse_schema_from(doc, serializer = 'value-serializer')
77
79
  parsed_schemas = {}
78
- doc = REXML::Document.new(xml)
79
-
80
- XPath.each(doc, "//stores/store[name = \"#{self.db_name}\"]/#{serializer}/schema-info") do |value_serializer|
81
- parsed_schemas[value_serializer.attributes['version']] = value_serializer.text
80
+ doc.xpath("//stores/store[name = \"#{self.db_name}\"]/#{serializer}/schema-info").each do |value_serializer|
81
+ parsed_schemas[value_serializer.attributes['version'].text] = value_serializer.text
82
82
  end
83
-
84
83
  return parsed_schemas
85
- end
86
-
87
- def parse_nodes_from(xml)
84
+ end
85
+
86
+
87
+ def parse_nodes_from(doc)
88
88
  nodes = []
89
- doc = REXML::Document.new(xml)
90
- XPath.each(doc, "/cluster/server").each do |n|
91
- node = VoldemortNode.new
92
- node.id = n.elements["id"].text
93
- node.host = n.elements["host"].text
94
- node.port = n.elements["socket-port"].text
95
- node.http_port = n.elements["http-port"].text
96
- node.admin_port = n.elements["admin-port"].text
97
- node.partitions = n.elements["partitions"].text
89
+ doc.xpath("/cluster/server").each do |n|
90
+ node = VoldemortNode.new
91
+ node.id = n.xpath("//id").text
92
+ node.host = n.xpath("//host").text
93
+ node.port = n.xpath("//socket-port").text
94
+ node.http_port = n.xpath("//http_port").text
95
+ node.admin_port = n.xpath("//admin-port").text
96
+ node.partitions = n.xpath("//partitions").text
98
97
  nodes << node
99
98
  end
100
99
  nodes
metadata CHANGED
@@ -1,13 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: voldemort-rb
3
3
  version: !ruby/object:Gem::Version
4
- hash: 29
4
+ hash: 19
5
5
  prerelease: false
6
6
  segments:
7
7
  - 0
8
8
  - 1
9
- - 3
10
- version: 0.1.3
9
+ - 4
10
+ version: 0.1.4
11
11
  platform: ruby
12
12
  authors:
13
13
  - Alejandro Crosa
@@ -15,10 +15,42 @@ autorequire:
15
15
  bindir: bin
16
16
  cert_chain: []
17
17
 
18
- date: 2010-09-13 00:00:00 -07:00
18
+ date: 2010-11-08 00:00:00 -03:00
19
19
  default_executable:
20
- dependencies: []
21
-
20
+ dependencies:
21
+ - !ruby/object:Gem::Dependency
22
+ name: ruby_protobuf
23
+ prerelease: false
24
+ requirement: &id001 !ruby/object:Gem::Requirement
25
+ none: false
26
+ requirements:
27
+ - - ">="
28
+ - !ruby/object:Gem::Version
29
+ hash: 21
30
+ segments:
31
+ - 0
32
+ - 3
33
+ - 3
34
+ version: 0.3.3
35
+ type: :runtime
36
+ version_requirements: *id001
37
+ - !ruby/object:Gem::Dependency
38
+ name: nokogiri
39
+ prerelease: false
40
+ requirement: &id002 !ruby/object:Gem::Requirement
41
+ none: false
42
+ requirements:
43
+ - - ">="
44
+ - !ruby/object:Gem::Version
45
+ hash: 113
46
+ segments:
47
+ - 1
48
+ - 4
49
+ - 3
50
+ - 1
51
+ version: 1.4.3.1
52
+ type: :runtime
53
+ version_requirements: *id002
22
54
  description: voldemort-rb allows you to connect to the Voldemort descentralized key value store.
23
55
  email:
24
56
  - alejandrocrosa@gmail.com