murakumo 0.4.7 → 0.6.0

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.
data/README CHANGED
@@ -12,6 +12,8 @@ https://github.com/cookpad/murakumo
12
12
 
13
13
  * RubyDNS
14
14
  * SQLite
15
+ * Ruby1.9 (murakumo version is 0.6.0 or more)
16
+
15
17
 
16
18
  == Install
17
19
 
@@ -22,7 +22,16 @@ else
22
22
  exit 1
23
23
  end
24
24
 
25
- bin_dir = ((RbConfig::CONFIG['bindir'] rescue nil) || '').strip
25
+ bin_dir = nil
26
+
27
+ if defined?(Gem)
28
+ bin_dir = Gem.bindir
29
+ elsif defined?(RbConfig)
30
+ bin_dir = ((RbConfig::CONFIG['bindir'] rescue nil) || '').strip
31
+ else
32
+ $stderr.puts 'error: bin dir is not found.'
33
+ exit 1
34
+ end
26
35
 
27
36
  `cp -i #{gem_dir}/murakumo-#{Murakumo::VERSION}/etc/murakumo.server #{INIT_D_DIR}/murakumo`
28
37
  `chmod 755 #{INIT_D_DIR}/murakumo`
@@ -12,7 +12,7 @@ if options[:daemon]
12
12
  # RExecに処理を委譲するのでARGVの先頭にdaemonizeのコマンドを格納
13
13
  ARGV.unshift options[:daemon].to_s
14
14
 
15
- Murakumo::Server.pid_directory = options[:pid_dir]
15
+ Murakumo::Server.working_directory = options[:working_dir]
16
16
  Murakumo::Server.daemonize
17
17
  else
18
18
  # デーモン化しない場合
@@ -1,6 +1,6 @@
1
1
  require 'logger'
2
2
  require 'optopus'
3
- require 'resolv'
3
+ require 'rubydns'
4
4
  require 'socket'
5
5
 
6
6
  require 'cli/murakumo_initializer_context'
@@ -107,8 +107,8 @@ def murakumo_parse_args
107
107
  desc 'command of daemonize: {start|stop|restart|status}'
108
108
  option :daemon, '-d', '--daemon CMD', :type => [:start, :stop, :restart, :status]
109
109
 
110
- desc 'directory of a pid file'
111
- option :pid_dir, '-f', '--pid-dir PATH'
110
+ desc 'var directory path'
111
+ option :working_dir, '-w', '--working-dir PATH', :default => '/var'
112
112
 
113
113
  desc 'output path of a log'
114
114
  option :log_path, '-l', '--log-path PATH'
@@ -145,8 +145,11 @@ def murakumo_parse_args
145
145
 
146
146
  # resolver
147
147
  if options[:resolver]
148
- options[:resolver] = options[:resolver].map {|i| i.strip }
149
- options[:resolver] = Resolv::DNS.new(:nameserver => options[:resolver])
148
+ servers = []
149
+ options[:resolver].each do |addr|
150
+ [:udp, :tcp].each {|prot| servers << [prot, addr.strip, 53] }
151
+ end
152
+ options[:resolver] = RubyDNS::Resolver.new(servers)
150
153
  end
151
154
 
152
155
  # initial nodes
@@ -1,5 +1,5 @@
1
1
  module Murakumo
2
- VERSION = '0.4.7'
2
+ VERSION = Version = '0.6.0'
3
3
 
4
4
  # Priority
5
5
  MASTER = 1
@@ -481,7 +481,7 @@ module Murakumo
481
481
 
482
482
  # Search of records
483
483
 
484
- def address_exist?(name)
484
+ def address_exist?(name, resource_class)
485
485
  # includes、excludesのチェック
486
486
  if @options[:name_excludes] and @options[:name_excludes].any? {|r| r =~ name }
487
487
  return false
@@ -582,7 +582,7 @@ module Murakumo
582
582
  @address_records = nil
583
583
  end
584
584
 
585
- def name_exist?(address)
585
+ def name_exist?(address, resource_class)
586
586
  address = x_ip_addr(address)
587
587
 
588
588
  # includes、excludesのチェック
@@ -17,17 +17,21 @@ module Murakumo
17
17
  # クラスメソッドを定義
18
18
  class << self
19
19
 
20
+ IN = Resolv::DNS::Resource::IN
21
+
20
22
  def init(options)
21
23
  # クラスインスタンス変数を使わないこと
22
24
  @@options = options
23
25
  @@cloud = Cloud.new(options)
24
26
  end
25
27
 
26
- def pid_directory=(path)
27
- @@pid_directory = path
28
+ def working_directory=(path)
29
+ @@base_directory = path
28
30
  end
29
31
 
30
32
  def run
33
+ EventMachine.epoll
34
+
31
35
  RubyDNS.run_server(:listen => [[:udp, @@options[:dns_address], @@options[:dns_port]]]) do
32
36
  # RubyDNS::Serverのコンテキスト
33
37
  @logger = @@options[:logger] if @@options[:logger]
@@ -39,6 +43,7 @@ module Murakumo
39
43
 
40
44
  # ServerクラスをDRuby化
41
45
  DRb.start_service("drbunix:#{@@options[:socket]}", @@cloud)
46
+ File.chmod(0700, @@options[:socket])
42
47
  at_exit { FileUtils.rm_f(@@options[:socket]) }
43
48
  end
44
49
 
@@ -66,7 +71,7 @@ module Murakumo
66
71
  end
67
72
 
68
73
  # look up A record
69
- match(@@cloud.method(:address_exist?), :A) do |transaction|
74
+ match(@@cloud.method(:address_exist?), IN::A) do |transaction|
70
75
  records = @@cloud.lookup_addresses(transaction.name)
71
76
 
72
77
  addrs = []
@@ -90,7 +95,7 @@ module Murakumo
90
95
  end # match
91
96
 
92
97
  # look up PTR record
93
- match(@@cloud.method(:name_exist?), :PTR) do |transaction|
98
+ match(@@cloud.method(:name_exist?), IN::PTR) do |transaction|
94
99
  name, ttl = @@cloud.lookup_name(transaction.name)
95
100
  name += ".#{@@options[:domain]}" if @@options[:domain]
96
101
  transaction.respond!(Resolv::DNS::Name.create("#{name}."), :ttl => ttl)
metadata CHANGED
@@ -1,89 +1,83 @@
1
- --- !ruby/object:Gem::Specification
1
+ --- !ruby/object:Gem::Specification
2
2
  name: murakumo
3
- version: !ruby/object:Gem::Version
4
- hash: 1
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.6.0
5
5
  prerelease:
6
- segments:
7
- - 0
8
- - 4
9
- - 7
10
- version: 0.4.7
11
6
  platform: ruby
12
- authors:
7
+ authors:
13
8
  - winebarrel
14
9
  autorequire:
15
10
  bindir: bin
16
11
  cert_chain: []
17
-
18
- date: 2012-02-05 00:00:00 Z
19
- dependencies:
20
- - !ruby/object:Gem::Dependency
12
+ date: 2013-05-19 00:00:00.000000000 Z
13
+ dependencies:
14
+ - !ruby/object:Gem::Dependency
21
15
  name: rubydns
22
- prerelease: false
23
- requirement: &id001 !ruby/object:Gem::Requirement
16
+ requirement: !ruby/object:Gem::Requirement
24
17
  none: false
25
- requirements:
18
+ requirements:
26
19
  - - ~>
27
- - !ruby/object:Gem::Version
28
- hash: 27
29
- segments:
30
- - 0
31
- - 3
32
- - 4
33
- version: 0.3.4
20
+ - !ruby/object:Gem::Version
21
+ version: 0.6.2
34
22
  type: :runtime
35
- version_requirements: *id001
36
- - !ruby/object:Gem::Dependency
37
- name: rgossip2
38
23
  prerelease: false
39
- requirement: &id002 !ruby/object:Gem::Requirement
24
+ version_requirements: !ruby/object:Gem::Requirement
25
+ none: false
26
+ requirements:
27
+ - - ~>
28
+ - !ruby/object:Gem::Version
29
+ version: 0.6.2
30
+ - !ruby/object:Gem::Dependency
31
+ name: rgossip2
32
+ requirement: !ruby/object:Gem::Requirement
40
33
  none: false
41
- requirements:
42
- - - ">="
43
- - !ruby/object:Gem::Version
44
- hash: 31
45
- segments:
46
- - 0
47
- - 2
48
- - 4
49
- version: 0.2.4
34
+ requirements:
35
+ - - ~>
36
+ - !ruby/object:Gem::Version
37
+ version: 0.2.7
50
38
  type: :runtime
51
- version_requirements: *id002
52
- - !ruby/object:Gem::Dependency
53
- name: optopus
54
39
  prerelease: false
55
- requirement: &id003 !ruby/object:Gem::Requirement
40
+ version_requirements: !ruby/object:Gem::Requirement
56
41
  none: false
57
- requirements:
58
- - - ">="
59
- - !ruby/object:Gem::Version
60
- hash: 17
61
- segments:
62
- - 0
63
- - 2
64
- - 3
42
+ requirements:
43
+ - - ~>
44
+ - !ruby/object:Gem::Version
45
+ version: 0.2.7
46
+ - !ruby/object:Gem::Dependency
47
+ name: optopus
48
+ requirement: !ruby/object:Gem::Requirement
49
+ none: false
50
+ requirements:
51
+ - - ~>
52
+ - !ruby/object:Gem::Version
65
53
  version: 0.2.3
66
54
  type: :runtime
67
- version_requirements: *id003
68
- - !ruby/object:Gem::Dependency
69
- name: sqlite3-ruby
70
55
  prerelease: false
71
- requirement: &id004 !ruby/object:Gem::Requirement
56
+ version_requirements: !ruby/object:Gem::Requirement
57
+ none: false
58
+ requirements:
59
+ - - ~>
60
+ - !ruby/object:Gem::Version
61
+ version: 0.2.3
62
+ - !ruby/object:Gem::Dependency
63
+ name: sqlite3-ruby
64
+ requirement: !ruby/object:Gem::Requirement
72
65
  none: false
73
- requirements:
66
+ requirements:
74
67
  - - ~>
75
- - !ruby/object:Gem::Version
76
- hash: 21
77
- segments:
78
- - 1
79
- - 2
80
- - 5
68
+ - !ruby/object:Gem::Version
81
69
  version: 1.2.5
82
70
  type: :runtime
83
- version_requirements: *id004
71
+ prerelease: false
72
+ version_requirements: !ruby/object:Gem::Requirement
73
+ none: false
74
+ requirements:
75
+ - - ~>
76
+ - !ruby/object:Gem::Version
77
+ version: 1.2.5
84
78
  description:
85
79
  email: sgwr_dts@yahoo.co.jp
86
- executables:
80
+ executables:
87
81
  - murakumo
88
82
  - mrkmctl
89
83
  - murakumo-install-init-script
@@ -94,80 +88,69 @@ executables:
94
88
  - murakumo-attach-ec2-attach-interface
95
89
  - murakumo-show-ec2-interfaces
96
90
  extensions: []
97
-
98
91
  extra_rdoc_files: []
99
-
100
- files:
92
+ files:
101
93
  - README
102
- - bin/murakumo-show-ec2-private-ip-addresses
103
94
  - bin/murakumo-install-init-script
95
+ - bin/murakumo
104
96
  - bin/murakumo-show-ec2-tags
105
97
  - bin/murakumo-show-ec2-interfaces
98
+ - bin/murakumo-show-ec2-private-ip-addresses
99
+ - bin/mrkmctl
100
+ - bin/murakumo-attach-ec2-attach-interface
106
101
  - bin/murakumo-show-ip-address
107
102
  - bin/murakumo-show-ec2-instances
108
- - bin/murakumo-attach-ec2-attach-interface
109
- - bin/mrkmctl
110
- - bin/murakumo
111
- - lib/cli/murakumo_options.rb
112
- - lib/cli/mrkmctl.rb
113
- - lib/cli/mrkmctl_options.rb
114
103
  - lib/cli/murakumo.rb
115
104
  - lib/cli/murakumo_initializer_context.rb
116
- - lib/srv/murakumo_health_check_notifier.rb
117
- - lib/srv/murakumo_balancer.rb
118
- - lib/srv/murakumo_server.rb
119
- - lib/srv/murakumo_health_checker.rb
120
- - lib/srv/murakumo_cloud.rb
121
- - lib/srv/murakumo_activity_check_notifier.rb
122
- - lib/srv/murakumo_activity_checker.rb
123
- - lib/srv/murakumo_health_check_context.rb
124
- - lib/util/murakumo_ec2_private_ip_addresses.rb
125
- - lib/util/murakumo_ec2_instances.rb
126
- - lib/util/murakumo_ec2_client.rb
127
- - lib/util/murakumo_ec2_tags.rb
105
+ - lib/cli/mrkmctl.rb
106
+ - lib/cli/mrkmctl_options.rb
107
+ - lib/cli/murakumo_options.rb
128
108
  - lib/util/murakumo_self_ip_address.rb
109
+ - lib/util/murakumo_ec2_tags.rb
110
+ - lib/util/murakumo_ec2_private_ip_addresses.rb
129
111
  - lib/util/murakumo_ec2_interfaces.rb
130
112
  - lib/util/murakumo_ec2_attach_interface.rb
113
+ - lib/util/murakumo_ec2_instances.rb
114
+ - lib/util/murakumo_ec2_client.rb
115
+ - lib/srv/murakumo_activity_checker.rb
116
+ - lib/srv/murakumo_cloud.rb
117
+ - lib/srv/murakumo_balancer.rb
118
+ - lib/srv/murakumo_health_check_context.rb
119
+ - lib/srv/murakumo_server.rb
120
+ - lib/srv/murakumo_activity_check_notifier.rb
121
+ - lib/srv/murakumo_health_check_notifier.rb
122
+ - lib/srv/murakumo_health_checker.rb
131
123
  - lib/misc/murakumo_const.rb
132
124
  - etc/murakumo-update-config-for-ec2
133
- - etc/gai.conf.example
134
- - etc/attach_if.sh.example
135
- - etc/murakumo.yml.example
136
125
  - etc/dhclient-script.patch
137
- - etc/murakumo-init.rb.for-ec2
138
126
  - etc/murakumo.server
127
+ - etc/murakumo.yml.example
128
+ - etc/attach_if.sh.example
129
+ - etc/murakumo-init.rb.for-ec2
130
+ - etc/gai.conf.example
139
131
  homepage: https://github.com/cookpad/murakumo/wiki
140
132
  licenses: []
141
-
142
133
  post_install_message:
143
134
  rdoc_options: []
144
-
145
- require_paths:
135
+ require_paths:
146
136
  - lib
147
- required_ruby_version: !ruby/object:Gem::Requirement
137
+ required_ruby_version: !ruby/object:Gem::Requirement
148
138
  none: false
149
- requirements:
150
- - - ">="
151
- - !ruby/object:Gem::Version
152
- hash: 3
153
- segments:
154
- - 0
155
- version: "0"
156
- required_rubygems_version: !ruby/object:Gem::Requirement
139
+ requirements:
140
+ - - ! '>='
141
+ - !ruby/object:Gem::Version
142
+ version: '0'
143
+ required_rubygems_version: !ruby/object:Gem::Requirement
157
144
  none: false
158
- requirements:
159
- - - ">="
160
- - !ruby/object:Gem::Version
161
- hash: 3
162
- segments:
163
- - 0
164
- version: "0"
145
+ requirements:
146
+ - - ! '>='
147
+ - !ruby/object:Gem::Version
148
+ version: '0'
165
149
  requirements: []
166
-
167
150
  rubyforge_project:
168
- rubygems_version: 1.8.1
151
+ rubygems_version: 1.8.23
169
152
  signing_key:
170
153
  specification_version: 3
171
- summary: Murakumo is the internal DNS server which manages name information using a gossip protocol.
154
+ summary: Murakumo is the internal DNS server which manages name information using
155
+ a gossip protocol.
172
156
  test_files: []
173
-