#!/usr/bin/lua -- -- rhnop -- -- Copyright (C) 2011-2014 Christian Pointner -- -- This file is part of rhnop. -- -- rhnop 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 -- any later version. -- -- rhnop 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 rhnop. If not, see . -- -- -- send now and next cart# and length to nopsyncd -- this script should be called by the now/next macro cart -- the arguments should be: now# nowlen next# nextlen -- require "socket" package.path = package.path .. ";_rhnoplibdir_/?.lua" db = require "db" if #arg < 1 then io.stderr:write("too few parameters\n") os.exit(1) end conffile = "nopcollectd." .. arg[1] .. ".conf" conf = require "conf" src_db = assert(db.init(conf.src_db, conf.src_user, conf.src_pwd, conf.src_host, conf.src_port, conf.src_table)) dst_db = assert(db.init(conf.dst_db, conf.dst_user, conf.dst_pwd, conf.dst_host, conf.dst_port, conf.dst_table)) local sock = assert(socket.tcp()) local ret, err = sock:connect(conf.sync_host, conf.sync_port) if ret == nil then print(err) return 1 end print "connection established" local last = dst_db:getLastEntry() print("last timestamp was " .. last) local cur = assert(src_db:findMissingEntries(last)) local cnt = 0 while true do local data = src_db:getNextMissingEntry(cur) if data == nil then break end local ret, err = dst_db:addEntry(data) if ret == nil then print(err) end cnt = cnt + 1 end print("synced " .. cnt .. " Entries") while true do local timestamp = sock:receive('*l') if timestamp == nil then break end data = assert(src_db:getEntry(timestamp)) assert(dst_db:addEntry(data)) end sock:close() return 0