Skip to content

Commit d28e64b

Browse files
author
Morgan Haskel
committed
Merge pull request #686 from tphoney/igalic-server_id
Added server_id fact
2 parents 1a572d6 + 78a7871 commit d28e64b

File tree

3 files changed

+44
-0
lines changed

3 files changed

+44
-0
lines changed

README.md

+8
Original file line numberDiff line numberDiff line change
@@ -768,6 +768,14 @@ The name of the MySQL plugin to manage.
768768

769769
The library file name.
770770

771+
###Facts
772+
773+
####`mysql_server_id`
774+
775+
Generates a unique id, based on the node's MAC address, which can be used as
776+
`server_id`. This fact will *always* return `0` on all nodes which only have
777+
loopback interfaces. Given those nodes' connnectivity that's probably okay.
778+
771779
##Limitations
772780

773781
This module has been tested on:

lib/facter/mysql_server_id.rb

+9
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
def get_mysql_id
2+
Facter.value(:macaddress).split(':').inject(0) { |total,value| (total << 4) + value.hex }
3+
end
4+
5+
Facter.add("mysql_server_id") do
6+
setcode do
7+
get_mysql_id
8+
end
9+
end
+27
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
require "spec_helper"
2+
3+
describe Facter::Util::Fact do
4+
before {
5+
Facter.clear
6+
}
7+
8+
describe "mysql_server_id" do
9+
context "igalic's laptop" do
10+
before :each do
11+
Facter.fact(:macaddress).stubs(:value).returns('3c:97:0e:69:fb:e1')
12+
end
13+
it do
14+
Facter.fact(:mysql_server_id).value.to_s.should == '72898961'
15+
end
16+
end
17+
18+
context "node with lo only" do
19+
before :each do
20+
Facter.fact(:macaddress).stubs(:value).returns('00:00:00:00:00:00')
21+
end
22+
it do
23+
Facter.fact(:mysql_server_id).value.to_s.should == '0'
24+
end
25+
end
26+
end
27+
end

0 commit comments

Comments
 (0)