Project

General

Profile

Download (2.79 KB) Statistics
| Branch: | Tag: | Revision:
ecdabe95 Marc Dequènes (Duck)
#!/usr/bin/ruby -Ku

#--
# CyborgHood, a distributed system management software.
# Copyright (c) 2009-2010 Marc Dequènes (Duck) <Duck@DuckCorp.org>
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program. If not, see <http://www.gnu.org/licenses/>.
#++

# to allow in-place run for test
$: << File.join(File.dirname(__FILE__), "..", "lib")

require 'cyborghood/cyborg'
8fcaacd6 Marc Dequènes (Duck)
require 'cyborghood/services/dns'
ecdabe95 Marc Dequènes (Duck)

module CyborgHood
class Config
protected
class MapMakerValidator < CyborgHoodValidator
def validate_hook_in(value, rule, path, msg_list)
case rule.name
when 'MasterZonePattern'
if value.gsub('#ZONE#', 'test') == value
msg_list << "pattern is constant"
end
end
end
end
end

module MapMakerHome
include I18nTranslation
bindtextdomain("cyborghood_mapmaker", {:path => Config::L10N_DIR, :charset => "UTF-8"})

class MapMaker < Cyborg
e75cca5b Marc Dequènes (Duck)
# load config before modules are included
Config.load(self.human_name)

70c59c34 Marc Dequènes (Duck)
include BotNetServer
050eca43 Marc Dequènes (Duck)
def interface
1c89625f Marc Dequènes (Duck)
MapMakerInterface.instance
050eca43 Marc Dequènes (Duck)
end
end

bc473567 Marc Dequènes (Duck)
class MapMakerInterface
include CyborgServerInterface
b7f7d214 Marc Dequènes (Duck)
include CyborgServerRootInterfaceAddon
bc473567 Marc Dequènes (Duck)
23b2305f Marc Dequènes (Duck)
class Taiste
include CyborgServerInterface

def api_methods
["coucou", "toto", "plop"]
end

dynamic_interface {|node_name| ">>> #{node_name} <<<" }
end

ca79e27e Marc Dequènes (Duck)
class DNS < Services::DNS::System
bc473567 Marc Dequènes (Duck)
include CyborgServerInterface

8fcaacd6 Marc Dequènes (Duck)
export_parent_methods
d5495a1e Marc Dequènes (Duck)
unexport_method :zones, :'[]'
8fcaacd6 Marc Dequènes (Duck)
def test(data)
"coucou: " + data.inspect
end

b7f7d214 Marc Dequènes (Duck)
class Zones
e82a264b Marc Dequènes (Duck)
include CyborgServerStatefulInterface
8fcaacd6 Marc Dequènes (Duck)
def initialize
ca79e27e Marc Dequènes (Duck)
@dns = Services::DNS::System.new
8fcaacd6 Marc Dequènes (Duck)
end

def api_methods
@dns.zones
end

23b2305f Marc Dequènes (Duck)
def api_container_methods
api_methods
end

b7f7d214 Marc Dequènes (Duck)
stateful_dynamic_interface("dns/zones/#NODE#") {|node_name| Zone.new(node_name) }
8fcaacd6 Marc Dequènes (Duck)
ca79e27e Marc Dequènes (Duck)
class Zone < Services::DNS::Zone
e82a264b Marc Dequènes (Duck)
include CyborgServerEmbeddedInterface
8fcaacd6 Marc Dequènes (Duck)
end
ce98dac2 Marc Dequènes (Duck)
end
050eca43 Marc Dequènes (Duck)
end
ecdabe95 Marc Dequènes (Duck)
end
end
end

bot = CyborgHood::MapMakerHome::MapMaker.new

trap('INT') do
bot.ask_to_stop
end
trap('TERM') do
bot.ask_to_stop
end

bot.run