/* * Lokomo OneCMDB - An Open Source Software for Configuration * Management of Datacenter Resources * * Copyright (C) 2006 Lokomo Systems AB * * 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 2 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, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA * 02110-1301 USA. * * Lokomo Systems AB can be contacted via e-mail: info@lokomo.com or via * paper mail: Lokomo Systems AB, Sv�rdv�gen 27, SE-182 33 * Danderyd, Sweden. * */ package org.onecmdb.nagios; import java.net.URL; import org.onecmdb.core.tests.AbstractOneCmdbTestCase; import org.onecmdb.core.utils.IBeanProvider; import org.onecmdb.core.utils.transform.ComplexAttributeSelector; import org.onecmdb.core.utils.transform.DataSet; import org.onecmdb.core.utils.transform.DataSetSelector; import org.onecmdb.core.utils.transform.DefaultAttributeValueSelector; import org.onecmdb.core.utils.transform.ForwardInstanceSelector; import org.onecmdb.core.utils.transform.TransformEngine; import org.onecmdb.core.utils.transform.matcher.RegExprMatcher; import org.onecmdb.core.utils.transform.xml.XMLDataSource; import org.onecmdb.core.utils.transform.xml.XPathAttributeSelector; import org.onecmdb.core.utils.transform.xml.XPathComplexAttributeSelector; import org.onecmdb.core.utils.transform.xml.XPathInstanceSelector; import org.onecmdb.core.utils.wsdl.WSDLBeanProvider; import org.onecmdb.core.utils.xml.XmlGenerator; import org.onecmdb.utils.wsdl.AbstractCMDBCommand; public class TestTransform extends AbstractCMDBCommand { public static void main(String argv[]) { TestTransform trans = new TestTransform(); start(trans, new String[0][0], argv); } @Override public void process() throws Exception { DataSet linux = new DataSet(); linux.setName("linux"); linux.setInstanceSelector(new XPathInstanceSelector("linux", "NAGIOS_Host_linux-server", "/Tree/system[os2system/os/Family = 'Linux']")); linux.addAttributeSelector(new XPathAttributeSelector("host_name", "Hostname", true)); linux.addAttributeSelector(new XPathAttributeSelector("address", "IPAddress", true)); DataSetSelector sel = new DataSetSelector(); sel.setName("select_host"); RegExprMatcher matcher = new RegExprMatcher("linux", new XPathAttributeSelector("expr", "os2system/os/Family", false), linux, true); sel.setInstanceSelector(new XPathInstanceSelector("selector", "NAGIOS_Host", ".")); sel.addDataSetMatcher(matcher); DataSet tcp = new DataSet(); tcp.setName("tcp_service"); tcp.setInstanceSelector( new XPathInstanceSelector("tcp_service", "NAGIOS_Service_generic-service", "/Tree//appl[Protocol='tcp']")); tcp.addAttributeSelector( new XPathComplexAttributeSelector("host_name", sel, true, "../../../..")); tcp.addAttributeSelector( new DefaultAttributeValueSelector("check_command", false, "NAGIOS_I_command_check_tcp", true)); tcp.addAttributeSelector(new XPathAttributeSelector("service_description", "Port", true)); DataSet fw = new DataSet(); fw.setName("fw"); fw.setInstanceSelector(new ForwardInstanceSelector()); fw.addAttributeSelector(new ComplexAttributeSelector("fw-linux", linux)); //fw.addAttributeSelector(new ComplexAttributeSelector("fw-sel", sel)); fw.addAttributeSelector(new ComplexAttributeSelector("fw-tcp", tcp)); XMLDataSource src = new XMLDataSource(); src.addURL(new URL("http://localhost:8080/onecmdb-desktop/onecmdb/export?name=cmdb2nagios.cfg")); fw.setDataSource(src); WSDLBeanProvider provider = new WSDLBeanProvider(getService(), getToken()); TransformEngine engine = new TransformEngine(); engine.setWebService(getService()); engine.setToken(getToken()); IBeanProvider result = engine.transform(provider, fw); XmlGenerator gen = new XmlGenerator(); gen.setBeans(result.getBeans()); gen.transfer(System.out); } }