murakumo 0.4.7 → 0.6.0

Sign up to get free protection for your applications and to get access to all the features.
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
-