[PATCH] - Generic console initscript and configuration parameters
by Adam Stokes
- Update matahari.sysconf to support console specific
parameters
- Update initscript to capture and process any console
specific parameters
Signed-off-by: Adam Stokes <astokes(a)fedoraproject.org>
---
matahari.init.in | 4 ++++
matahari.sysconf.in | 6 ++++++
2 files changed, 10 insertions(+), 0 deletions(-)
diff --git a/matahari.init.in b/matahari.init.in
index c8774a1..d3d3700 100644
--- a/matahari.init.in
+++ b/matahari.init.in
@@ -43,6 +43,10 @@ start() {
MATAHARI_AGENT_ARGS="$MATAHARI_AGENT_ARGS $@BASE@_AGENT_ARGS"
fi
+ if [ ! -z "$@BASE@_CONSOLE_ARGS" ]; then
+ MATAHARI_AGENT_ARGS="$MATAHARI_AGENT_ARGS $MATAHARI_CONSOLE_ARGS $@BASE@_CONSOLE_ARGS"
+ fi
+
daemon $PROCESS $MATAHARI_AGENT_ARGS --daemon
RETVAL=$?
echo
diff --git a/matahari.sysconf.in b/matahari.sysconf.in
index 0c04bbe..4d69015 100644
--- a/matahari.sysconf.in
+++ b/matahari.sysconf.in
@@ -9,6 +9,12 @@
# Other options that all agents should observe
MATAHARI_AGENT_ARGS="--reconnect=yes"
+# Other options that all consoles should observe
+# MATAHARI_CONSOLE_ARGS=...
+
# Per agent options
# host_AGENT_ARGS=...
# network_AGENT_ARGS=...
+
+# Per console options
+# sysconfig_CONSOLE_ARGS=...
\ No newline at end of file
--
1.7.6
12 years, 9 months
[PATCH] - Update dns srv unittests
by Adam Stokes
- Abort tests on failure, mainly for mh_domainname when returning
empty.
- Update routine calls for correct parameters
Signed-off-by: Adam Stokes <astokes(a)fedoraproject.org>
---
src/lib/utilities.c | 2 +-
src/tests/CMakeLists.txt | 2 ++
src/tests/mh_hsa_linux.h | 16 ++++++++--------
src/tests/mh_hsa_windows.h | 13 +++++++------
4 files changed, 18 insertions(+), 15 deletions(-)
diff --git a/src/lib/utilities.c b/src/lib/utilities.c
index b6dc339..a56a5a4 100644
--- a/src/lib/utilities.c
+++ b/src/lib/utilities.c
@@ -358,7 +358,7 @@ mh_domainname(void)
}
if (domainname == NULL) {
- return "";
+ return "";
}
mh_trace("Got domainname: %s", domainname);
diff --git a/src/tests/CMakeLists.txt b/src/tests/CMakeLists.txt
index 8fe81f2..d8823c5 100644
--- a/src/tests/CMakeLists.txt
+++ b/src/tests/CMakeLists.txt
@@ -1,6 +1,8 @@
set(CXXTEST_USE_PYTHON TRUE)
find_package(CxxTest)
if(CXXTEST_FOUND)
+ add_definitions(-DCXXTEST_HAVE_EH)
+ add_definitions(-DCXXTEST_ABORT_TEST_ON_FAIL)
include_directories(${CXXTEST_INCLUDE_DIR})
ENABLE_TESTING()
CXXTEST_ADD_TEST(mh_api_network_unittest network_unittest.cpp ${CMAKE_CURRENT_SOURCE_DIR}/mh_api_network.h)
diff --git a/src/tests/mh_hsa_linux.h b/src/tests/mh_hsa_linux.h
index 2e46784..2f85b8e 100644
--- a/src/tests/mh_hsa_linux.h
+++ b/src/tests/mh_hsa_linux.h
@@ -1,5 +1,5 @@
/*
- * mh_hs.h: dns srv high availability test
+ * mh_hsa_linux.h: dns srv high availability test
*
* Copyright (C) 2011 Red Hat Inc.
*
@@ -33,6 +33,7 @@ extern "C" {
#include <arpa/nameser.h>
#include <resolv.h>
#include "mh_test_utilities.h"
+#include "matahari/utilities.h"
#include "matahari/dnssrv.h"
};
@@ -41,16 +42,15 @@ using namespace std;
class MhHsaSuite : public CxxTest::TestSuite
{
public:
- std::stringstream infomsg;
-
void testSrvLookup(void)
{
- char target[NS_MAXDNAME];
- const char *host = "_matahari._tcp.matahariproject.org";
- int ret = 0;
+ std::stringstream fqdn;
+ char *target = NULL;
- ret = mh_srv_lookup(host, target, NS_MAXDNAME);
- TS_ASSERT(ret == 0);
+ fqdn << "_matahari._tcp." << mh_domainname();
+ TS_ASSERT(fqdn.str().empty());
+ target = mh_os_dnssrv_lookup(fqdn.str().c_str());
+ TS_ASSERT(target == NULL);
TS_ASSERT((mh_test_is_match("^www\\.matahariproject\\.org$",
target)) >= 0);
}
diff --git a/src/tests/mh_hsa_windows.h b/src/tests/mh_hsa_windows.h
index 1cf1ea8..8264c41 100644
--- a/src/tests/mh_hsa_windows.h
+++ b/src/tests/mh_hsa_windows.h
@@ -1,5 +1,5 @@
/*
- * mh_hs.h: dns srv high availability test
+ * mh_hsa_windows.h: dns srv high availability test
*
* Copyright (C) 2011 Red Hat Inc.
*
@@ -33,6 +33,7 @@ extern "C" {
#include <winsock2.h>
#include <ws2tcpip.h>
#include "mh_test_utilities.h"
+#include "matahari/utilities.h"
#include "matahari/dnssrv.h"
};
@@ -45,12 +46,12 @@ class MhHsaSuite : public CxxTest::TestSuite
void testSrvLookup(void)
{
- char target[NI_MAXHOST];
- const char *host = "_matahari._tcp.matahariproject.org";
- int ret = 0;
+ char *target = NULL;
- ret = mh_srv_lookup(host, target, NI_MAXHOST);
- TS_ASSERT(ret == 0);
+ fqdn << "_matahari._tcp." << mh_domainname();
+ TS_ASSERT(fqdn.str().empty());
+ target = mh_os_dnssrv_lookup(fqdn.str().c_str());
+ TS_ASSERT(target == NULL);
TS_ASSERT((mh_test_is_match("^qpid.*matahariproject\\.org$",
target)) >= 0);
}
--
1.7.6
12 years, 9 months
[PATCH] Core: rhbz#728988 - Allow reconnection to broker
by Zane Bitter
Previously the --reconnect option was always ignored, so if the connection
to the broker was lost it would never be re-established.
Signed-off-by: Zane Bitter <zbitter(a)redhat.com>
---
src/lib/mh_agent.cpp | 7 +++----
1 files changed, 3 insertions(+), 4 deletions(-)
diff --git a/src/lib/mh_agent.cpp b/src/lib/mh_agent.cpp
index 3353335..dfb4efe 100644
--- a/src/lib/mh_agent.cpp
+++ b/src/lib/mh_agent.cpp
@@ -158,10 +158,9 @@ connection_option(int code, const char *name, const char *arg, void *userdata)
options->insert(std::pair<std::string, qpid::types::Variant>("sasl-mechanism", "GSSAPI"));
} else if(strcmp(name, "reconnect") == 0) {
- if(arg && strcmp(arg, "no") == 0) {
- options->insert(std::pair<std::string, qpid::types::Variant>("reconnect", false));
- }
-
+ bool reconnect = !arg || (strcasecmp(arg, "no") != 0 &&
+ strcasecmp(arg, "false") != 0);
+ (*options)["reconnect"] = reconnect;
} else {
options->insert(std::pair<std::string, qpid::types::Variant>(name, arg));
}
12 years, 9 months
[PATCH] - Make sure to return ok/no in status return arguments in sysconfig agent
by Adam Stokes
Signed-off-by: Adam Stokes <astokes(a)fedoraproject.org>
---
src/sysconfig/sysconfig-qmf.cpp | 8 ++++----
1 files changed, 4 insertions(+), 4 deletions(-)
diff --git a/src/sysconfig/sysconfig-qmf.cpp b/src/sysconfig/sysconfig-qmf.cpp
index 962ca3d..372f1cc 100644
--- a/src/sysconfig/sysconfig-qmf.cpp
+++ b/src/sysconfig/sysconfig-qmf.cpp
@@ -89,18 +89,18 @@ ConfigAgent::invoke(qmf::AgentSession session, qmf::AgentEvent event, gpointer u
args["scheme"].asString().c_str(),
args["key"].asString().c_str());
if (rc == 0) {
- mh_sysconfig_set_configured(args["key"].asString().c_str());
+ rc = mh_sysconfig_set_configured(args["key"].asString().c_str());
}
- event.addReturnArgument("status", rc);
+ event.addReturnArgument("status", rc ? "ok" : "no");
} else if (methodName == "run_string") {
rc = mh_sysconfig_run_string(args["data"].asString().c_str(),
args["flags"].asUint32(),
args["scheme"].asString().c_str(),
args["key"].asString().c_str());
if (rc == 0) {
- mh_sysconfig_set_configured(args["key"].asString().c_str());
+ rc = mh_sysconfig_set_configured(args["key"].asString().c_str());
}
- event.addReturnArgument("status", rc);
+ event.addReturnArgument("status", rc ? "ok" : "no");
} else if (methodName == "query") {
const char *data = NULL;
data = mh_sysconfig_query(args["query"].asString().c_str(),
--
1.7.6
12 years, 9 months
[PATCH] - Add conditional to make sure status returns are in string form of ok/no
by Adam Stokes
Signed-off-by: Adam Stokes <astokes(a)fedoraproject.org>
---
matahari.spec | 503 ---------------------------------------
src/sysconfig/sysconfig-qmf.cpp | 8 +-
2 files changed, 4 insertions(+), 507 deletions(-)
delete mode 100644 matahari.spec
diff --git a/matahari.spec b/matahari.spec
deleted file mode 100644
index 300bcb8..0000000
--- a/matahari.spec
+++ /dev/null
@@ -1,503 +0,0 @@
-%global specversion 102
-%global upstream_version 2ce6cba
-
-# Keep around for when/if required
-%global alphatag %{upstream_version}.git
-%global mh_release %{?alphatag:0.}%{specversion}%{?alphatag:.%{alphatag}}%{?dist}
-
-# Messaging buses
-%bcond_without dbus
-%bcond_without qmf
-
-# Systemd init scripts
-%bcond_without systemd
-
-Name: matahari
-Version: 0.4.2
-Release: %{mh_release}
-Summary: Matahari QMF Agents for Linux guests
-
-Group: Applications/System
-License: GPLv2
-URL: http://fedorahosted.org/matahari
-
-# wget --no-check-certificate -O matahari-matahari-{upstream_version}.tgz https://github.com/matahari/matahari/tarball/{upstream_version}
-Source0: matahari-matahari-%{upstream_version}.tgz
-BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-root-%(%{__id_u} -n)
-
-# NOTE: The host API uses dbus for the machine uuid
-Requires: dbus
-Requires: qmf > 0.7
-Requires: pcre
-
-BuildRequires: cmake
-BuildRequires: libudev-devel
-BuildRequires: gcc-c++
-BuildRequires: pcre-devel
-BuildRequires: glib2-devel
-BuildRequires: sigar-devel
-BuildRequires: libcurl-devel
-BuildRequires: cxxtest
-
-%if %{with systemd}
-BuildRequires: systemd-units
-%endif
-
-%if %{with qmf}
-BuildRequires: qpid-cpp-client-devel > 0.7
-BuildRequires: qmf-devel > 0.7
-%endif
-
-%if %{with dbus}
-BuildRequires: dbus-devel dbus-glib-devel polkit-devel libxslt
-%endif
-
-%description
-
-Matahari provides QMF Agents that can be used to control and manage
-various pieces of functionality, using the AMQP protocol.
-
-The Advanced Message Queuing Protocol (AMQP) is an open standard application
-layer protocol providing reliable transport of messages.
-
-QMF provides a modeling framework layer on top of qpid (which implements
-AMQP). This interface allows you to manage a host and its various components
-as a set of objects with properties and methods.
-
-
-%if %{with qmf}
-%package broker
-License: GPLv2+
-Summary: Optional AMQP Broker for Matahari
-Group: Applications/System
-Requires: %{name} = %{version}-%{release}
-Requires: qpid-cpp-server > 0.7
-Requires: qpid-cpp-server-ssl > 0.7
-Requires: qmf > 0.7
-
-%description broker
-Optional AMQP Broker for Matahari
-%endif
-
-%package lib
-License: GPLv2+
-Summary: C libraries used by Matahari agents
-Group: Applications/System
-
-%description lib
-C libraries used by Matahari agents
-
-%package agent-lib
-License: GPLv2+
-Summary: C++ library used by Matahari agents
-Group: Applications/System
-Requires: %{name}-lib = %{version}-%{release}
-Requires: qpid-cpp-client-ssl > 0.7
-
-%description agent-lib
-C++ library containing the base class for Matahari agents
-
-%if %{with dbus}
-%package dbus
-License: GPLv2+
-Summary: DBus policies for Matahari services
-Group: Applications/System
-
-%description dbus
-DBus policies for allowing Matahari to be used on the local system
-%endif
-
-%package host
-License: GPLv2+
-Summary: QMF agent for remote hosts
-Group: Applications/System
-Requires: %{name}-lib = %{version}-%{release}
-Requires: %{name}-agent-lib = %{version}-%{release}
-
-%description host
-QMF agent for viewing and controlling remote hosts
-
-%package network
-License: GPLv2+
-Summary: QMF agent for network devices
-Group: Applications/System
-Requires: %{name}-lib = %{version}-%{release}
-Requires: %{name}-agent-lib = %{version}-%{release}
-Obsoletes: matahari-net < %{version}-%{release}
-
-%description network
-QMF agent for viewing and controlling network devices
-
-%package service
-License: GPLv2+
-Summary: QMF agent for system services
-Group: Applications/System
-Requires: %{name}-lib = %{version}-%{release}
-Requires: %{name}-agent-lib = %{version}-%{release}
-
-%description service
-QMF agent for viewing and controlling system services
-
-%package sysconfig
-License: GPLv2+
-Summary: QMF agent for post boot configuration services.
-Group: Applications/System
-Requires: %{name}-lib = %{version}-%{release}
-Requires: %{name}-agent-lib = %{version}-%{release}
-
-%description sysconfig
-QMF agent/console for providing post boot capabilities.
-
-%package devel
-License: GPLv2+
-Summary: Matahari development package
-Group: Development/Libraries
-Requires: %{name} = %{version}-%{release}
-Requires: %{name}-lib = %{version}-%{release}
-Requires: %{name}-agent-lib = %{version}-%{release}
-Requires: qpid-cpp-client-devel > 0.7
-Requires: qmf-devel > 0.7
-Requires: glib2-devel
-
-%description devel
-Headers and shared libraries for developing Matahari agents.
-
-%package consoles
-License: GPLv2+
-Summary: QMF console for monitoring various agents
-Group: Applications/System
-Requires: %{name}-lib = %{version}-%{release}
-Requires: %{name}-agent-lib = %{version}-%{release}
-
-%description consoles
-QMF console for monitoring various agents
-
-%prep
-%setup -q -n matahari-matahari-%{upstream_version}
-
-%build
-%{cmake} -DCMAKE_BUILD_TYPE=RelWithDebInfo %{!?with_qmf: -DWITH-QMF:BOOL=OFF} %{!?with_dbus: -DWITH-DBUS:BOOL=OFF} -Dinitdir=%{_initddir} -Dsysconfdir=%{_sysconfdir} .
-make %{?_smp_mflags}
-
-%install
-rm -rf %{buildroot}
-make DESTDIR=%{buildroot} install
-
-%{__install} -d $RPM_BUILD_ROOT/%{_sysconfdir}/sysconfig/
-%{__install} matahari.sysconf $RPM_BUILD_ROOT/%{_sysconfdir}/sysconfig/matahari
-
-%if %{with qmf}
-%{__install} -d $RPM_BUILD_ROOT/%{_sysconfdir}/rc.d/init.d
-%{__install} matahari-broker $RPM_BUILD_ROOT/%{_sysconfdir}/rc.d/init.d/matahari-broker
-
-%{__install} matahari-broker.sysconf $RPM_BUILD_ROOT/%{_sysconfdir}/sysconfig/matahari-broker
-%{__ln_s} qpidd $RPM_BUILD_ROOT/%{_sbindir}/matahari-brokerd
-
-%{__install} -d -m0755 %{buildroot}%{_localstatedir}/lib/%{name}
-%{__install} -d -m0755 %{buildroot}%{_localstatedir}/run/%{name}
-%endif
-
-%post -n matahari-lib -p /sbin/ldconfig
-%postun -n matahari-lib -p /sbin/ldconfig
-
-%post -n matahari-agent-lib -p /sbin/ldconfig
-%postun -n matahari-agent-lib
-# Can't use -p, gives: '/sbin/ldconfig: relative path `0' used to build cache' error
-/sbin/ldconfig
-
-%if %{with qmf}
-#== Host
-
-%post host
-/sbin/service matahari-host condrestart
-
-%preun host
-if [ $1 = 0 ]; then
- /sbin/service matahari-host stop >/dev/null 2>&1 || :
- chkconfig --del matahari-host
-fi
-
-%postun host
-if [ "$1" -ge "1" ]; then
- /sbin/service matahari-host condrestart >/dev/null 2>&1 || :
-fi
-
-#== Network
-
-%post network
-/sbin/service matahari-network condrestart
-
-%preun network
-if [ $1 = 0 ]; then
- /sbin/service matahari-network stop >/dev/null 2>&1 || :
- chkconfig --del matahari-network
-fi
-
-%postun network
-if [ "$1" -ge "1" ]; then
- /sbin/service matahari-network condrestart >/dev/null 2>&1 || :
-fi
-
-#== Services
-
-%post service
-/sbin/service matahari-service condrestart
-
-%preun service
-if [ $1 = 0 ]; then
- /sbin/service matahari-service stop >/dev/null 2>&1 || :
- chkconfig --del matahari-service
-fi
-
-%postun service
-if [ "$1" -ge "1" ]; then
- /sbin/service matahari-service condrestart >/dev/null 2>&1 || :
-fi
-
-#== sysconfig
-
-%post sysconfig
-/sbin/service matahari-sysconfig condrestart
-
-%preun sysconfig
-if [ $1 = 0 ]; then
- /sbin/service matahari-sysconfig stop >/dev/null 2>&1 || :
- chkconfig --del matahari-sysconfig
-fi
-
-%postun sysconfig
-if [ "$1" -ge "1" ]; then
- /sbin/service matahari-sysconfig condrestart >/dev/null 2>&1 || :
-fi
-
-#== Broker
-
-%post broker
-/sbin/service matahari-broker condrestart
-
-%preun broker
-if [ $1 = 0 ]; then
- /sbin/service matahari-broker stop >/dev/null 2>&1 || :
- chkconfig --del matahari-broker
-fi
-
-%postun broker
-if [ "$1" -ge "1" ]; then
- /sbin/service matahari-broker condrestart >/dev/null 2>&1 || :
-fi
-
-%endif
-
-%clean
-test "x%{buildroot}" != "x" && rm -rf %{buildroot}
-
-%files
-%defattr(644, root, root, 755)
-%doc AUTHORS COPYING
-
-%files agent-lib
-%defattr(644, root, root, 755)
-%dir %{_datadir}/matahari/
-%config(noreplace) %{_sysconfdir}/sysconfig/matahari
-%doc AUTHORS COPYING
-
-%if %{with qmf}
-%{_libdir}/libmcommon_qmf.so.*
-%endif
-
-%if %{with dbus}
-%{_libdir}/libmcommon_dbus.so.*
-%endif
-
-%files lib
-%defattr(644, root, root, 755)
-%{_libdir}/libmcommon.so.*
-%{_libdir}/libmhost.so.*
-%{_libdir}/libmnetwork.so.*
-%{_libdir}/libmservice.so.*
-%{_libdir}/libmsysconfig.so.*
-%doc AUTHORS COPYING
-
-%files network
-%defattr(644, root, root, 755)
-%doc AUTHORS COPYING
-
-%if %{with systemd}
-%{_unitdir}/matahari-network.service
-%endif
-
-%if %{with qmf}
-%attr(755, root, root) %{_initddir}/matahari-network
-%attr(755, root, root) %{_sbindir}/matahari-qmf-networkd
-%endif
-
-%if %{with dbus}
-%attr(755, root, root) %{_sbindir}/matahari-dbus-networkd
-%endif
-
-%files host
-%defattr(644, root, root, 755)
-%doc AUTHORS COPYING
-
-%if %{with systemd}
-%{_unitdir}/matahari-host.service
-%endif
-
-%if %{with qmf}
-%attr(755, root, root) %{_initddir}/matahari-host
-%attr(755, root, root) %{_sbindir}/matahari-qmf-hostd
-%endif
-
-%if %{with dbus}
-%attr(755, root, root) %{_sbindir}/matahari-dbus-hostd
-%endif
-
-%files service
-%defattr(644, root, root, 755)
-%doc AUTHORS COPYING
-
-%if %{with systemd}
-%{_unitdir}/matahari-service.service
-%endif
-
-%if %{with qmf}
-%attr(755, root, root) %{_initddir}/matahari-service
-%attr(755, root, root) %{_sbindir}/matahari-qmf-serviced
-%attr(755, root, root) %{_sbindir}/matahari-qmf-service-cli
-%endif
-
-%if %{with dbus}
-%attr(755, root, root) %{_sbindir}/matahari-dbus-serviced
-%endif
-
-%files sysconfig
-%defattr(644, root, root, 755)
-%doc AUTHORS COPYING
-
-%if %{with qmf}
-%attr(755, root, root) %{_initddir}/matahari-sysconfig
-%attr(755, root, root) %{_sbindir}/matahari-qmf-sysconfigd
-%endif
-
-%files consoles
-%defattr(644, root, root, 755)
-%doc AUTHORS COPYING
-
-%if %{with qmf}
-%attr(755, root, root) %{_initddir}/matahari-sysconfig-console
-%attr(755, root, root) %{_sbindir}/matahari-qmf-sysconfig-consoled
-%endif
-
-%if %{with qmf}
-%files broker
-%defattr(644, root, root, 755)
-%attr(755, root, root) %{_initddir}/matahari-broker
-%config(noreplace) %{_sysconfdir}/sysconfig/matahari-broker
-%config(noreplace) %{_sysconfdir}/matahari-broker.conf
-%{_sbindir}/matahari-brokerd
-
-%ghost %attr(755, qpidd, qpidd) %{_localstatedir}/lib/%{name}
-%ghost %attr(755, qpidd, qpidd) %{_localstatedir}/run/%{name}
-%doc AUTHORS COPYING
-
-%else
-%exclude %{_sysconfdir}/matahari-broker.conf
-%endif
-
-%if %{with dbus}
-%files dbus
-%{_sysconfdir}/dbus-1/system.d/org.matahariproject.Host.conf
-%{_sysconfdir}/dbus-1/system.d/org.matahariproject.Network.conf
-%{_sysconfdir}/dbus-1/system.d/org.matahariproject.Services.conf
-%{_datadir}/dbus-1/interfaces/org.matahariproject.Host.xml
-%{_datadir}/dbus-1/interfaces/org.matahariproject.Network.xml
-%{_datadir}/dbus-1/interfaces/org.matahariproject.Services.xml
-%{_datadir}/dbus-1/system-services/org.matahariproject.Host.service
-%{_datadir}/dbus-1/system-services/org.matahariproject.Network.service
-%{_datadir}/dbus-1/system-services/org.matahariproject.Services.service
-%{_datadir}/polkit-1/actions/org.matahariproject.Host.policy
-%{_datadir}/polkit-1/actions/org.matahariproject.Network.policy
-%{_datadir}/polkit-1/actions/org.matahariproject.Services.policy
-%{_datadir}/matahari/check-policy.xsl
-%{_datadir}/polkit-1/actions/org.matahariproject.Resources.policy
-%endif
-
-%files devel
-%defattr(644, root, root, 755)
-%doc AUTHORS COPYING
-
-%{_libdir}/libm*.so
-%{_includedir}/matahari.h
-%{_includedir}/matahari/logging.h
-%{_includedir}/matahari/utilities.h
-%{_includedir}/matahari/dnssrv.h
-%{_includedir}/matahari/host.h
-%{_includedir}/matahari/network.h
-%{_includedir}/matahari/sysconfig.h
-%{_includedir}/matahari/services.h
-%{_datadir}/cmake/Modules/FindMatahari.cmake
-
-%if %{with qmf}
-%{_includedir}/matahari/agent.h
-%{_includedir}/matahari/mainloop.h
-%{_datadir}/cmake/Modules/FindQPID.cmake
-%endif
-
-%if %{with dbus}
-%{_includedir}/matahari/dbus_common.h
-%{_includedir}/matahari/gobject_class.h
-%{_datadir}/cmake/Modules/MatahariMacros.cmake
-%{_datadir}/matahari/schema-to-dbus.xsl
-%{_datadir}/matahari/dbus-to-c.xsl
-%endif
-
-%changelog
-* Wed Oct 12 2010 Andrew Beekhof <andrew(a)beekhof.net> - 0.4.0-0.8.ad8b81b.git
-- Added the Network agent
-- Removed unnecessary OO-ness from existing Host agent/schema
-
-* Fri Oct 01 2010 Adam Stokes <astokes(a)fedoraproject.org> - 0.4.0-0.1.5e26232.git
-- Add schema-net for network api
-
-* Tue Sep 21 2010 Andrew Beekhof <andrew(a)beekhof.net> - 0.4.0-0.1.9fc30e4.git
-- Pre-release of the new cross platform version of Matahari
-- Add matahari broker scripts
-
-* Thu Oct 08 2009 Arjun Roy <arroy(a)redhat.com> - 0.0.4-7
-- Refactored for new version of qpidc.
-
-* Fri Oct 02 2009 Kevin Kofler <Kevin(a)tigcc.ticalc.org> - 0.0.4-6
-- Rebuild for new qpidc.
-
-* Sat Jul 25 2009 Fedora Release Engineering <rel-eng(a)lists.fedoraproject.org> - 0.0.4-5
-- Rebuilt for https://fedoraproject.org/wiki/Fedora_12_Mass_Rebuild
-
-* Thu Jul 16 2009 Arjun Roy <arroy(a)redhat.com> - 0.0.4-4
-- Changed buildroot value to meet fedora packaging guidelines
-- Updated project website
-
-* Mon Jul 13 2009 Arjun Roy <arroy(a)redhat.com> - 0.0.4-3
-- Quietened rpmlint errors and warnings.
-- Fixed most gcc warnings.
-- Changed init script so it doesn't run by default
-- Now rpm specfile makes it so service runs by default instead
-
-* Thu Jul 9 2009 Arjun Roy <arroy(a)redhat.com> - 0.0.4-2
-- Bumped qpidc and qmf version requirements to 0.5.790661.
-
-* Thu Jul 9 2009 Arjun Roy <arroy(a)redhat.com> - 0.0.4-1
-- Removed dependency on boost. Added dependency on pcre.
-
-* Thu Jul 2 2009 Arjun Roy <arroy(a)redhat.com> - 0.0.3-2
-- Fixed bug with not publishing host hypervisor and arch to broker
-- Updated aclocal.m4 to match new version of automake
-
-* Tue Jun 30 2009 Arjun Roy <arroy(a)redhat.com> - 0.0.3-1
-- Added getopt and daemonize support
-- Added sysV init script support
-
-* Mon Jun 29 2009 Arjun Roy <arroy(a)redhat.com> - 0.0.2-1
-- Now tracks hypervisor and arch using libvirt
-
-* Tue Jun 23 2009 Arjun Roy <arroy(a)redhat.com> - 0.0.1-1
-- Initial rpmspec packaging
diff --git a/src/sysconfig/sysconfig-qmf.cpp b/src/sysconfig/sysconfig-qmf.cpp
index 962ca3d..372f1cc 100644
--- a/src/sysconfig/sysconfig-qmf.cpp
+++ b/src/sysconfig/sysconfig-qmf.cpp
@@ -89,18 +89,18 @@ ConfigAgent::invoke(qmf::AgentSession session, qmf::AgentEvent event, gpointer u
args["scheme"].asString().c_str(),
args["key"].asString().c_str());
if (rc == 0) {
- mh_sysconfig_set_configured(args["key"].asString().c_str());
+ rc = mh_sysconfig_set_configured(args["key"].asString().c_str());
}
- event.addReturnArgument("status", rc);
+ event.addReturnArgument("status", rc ? "ok" : "no");
} else if (methodName == "run_string") {
rc = mh_sysconfig_run_string(args["data"].asString().c_str(),
args["flags"].asUint32(),
args["scheme"].asString().c_str(),
args["key"].asString().c_str());
if (rc == 0) {
- mh_sysconfig_set_configured(args["key"].asString().c_str());
+ rc = mh_sysconfig_set_configured(args["key"].asString().c_str());
}
- event.addReturnArgument("status", rc);
+ event.addReturnArgument("status", rc ? "ok" : "no");
} else if (methodName == "query") {
const char *data = NULL;
data = mh_sysconfig_query(args["query"].asString().c_str(),
--
1.7.6
12 years, 9 months
[PATCH] Make sysconfig unit test pass when not run as root.
by russell@russellbryant.net
From: Russell Bryant <rbryant(a)redhat.com>
The sysconfig unit test needed to be able to write to
/var/lib/matahari/. This patch adds some code so that the test can
still work.
Signed-off-by: Russell Bryant <rbryant(a)redhat.com>
---
src/include/matahari/sysconfig.h | 13 +++++++++++++
src/lib/sysconfig.c | 33 +++++++++++++++++++++++++++++----
src/tests/mh_api_sysconfig.h | 3 +++
3 files changed, 45 insertions(+), 4 deletions(-)
diff --git a/src/include/matahari/sysconfig.h b/src/include/matahari/sysconfig.h
index aced3b4..0390528 100644
--- a/src/include/matahari/sysconfig.h
+++ b/src/include/matahari/sysconfig.h
@@ -94,4 +94,17 @@ mh_sysconfig_set_configured(const char *key);
extern gboolean
mh_sysconfig_is_configured(const char *key);
+/**
+ * Set the directory used to store data about keys
+ *
+ * This is primarily intended to be used in unit test code. It should not
+ * be needed by any production usage of this library.
+ *
+ * \param[in] path directory to store key info
+ *
+ * \return nothing
+ */
+extern void
+mh_sysconfig_keys_dir_set(const char *path);
+
#endif // __MH_SYSCONFIG_H__
diff --git a/src/lib/sysconfig.c b/src/lib/sysconfig.c
index 81d4ee9..1dc5753 100644
--- a/src/lib/sysconfig.c
+++ b/src/lib/sysconfig.c
@@ -33,18 +33,43 @@
MH_TRACE_INIT_DATA(mh_sysconfig);
#ifdef WIN32
-static const char keys_dir[] = "c:\\";
+static const char DEFAULT_KEYS_DIR[] = "c:\\";
#else
-static const char keys_dir[] = "/var/lib/matahari/";
+static const char DEFAULT_KEYS_DIR[] = "/var/lib/matahari/";
#endif
+/*!
+ * Directory to store sysconfig action keys
+ *
+ * Set with mh_sysconfig_keys_dir_set(), get with keys_dir_get().
+ */
+static char _keys_dir[PATH_MAX];
+
+static const char *
+keys_dir_get(void)
+{
+ if (!*_keys_dir) {
+ strncpy(_keys_dir, DEFAULT_KEYS_DIR, sizeof(_keys_dir) - 1);
+ _keys_dir[sizeof(_keys_dir) - 1] = '\0';
+ }
+
+ return _keys_dir;
+}
+
+void
+mh_sysconfig_keys_dir_set(const char *path)
+{
+ strncpy(_keys_dir, path, sizeof(_keys_dir) - 1);
+ _keys_dir[sizeof(_keys_dir) - 1] = '\0';
+}
+
static gboolean
set_key(const char *key)
{
char key_file[PATH_MAX];
const char contents[] = "ok";
- g_snprintf(key_file, sizeof(key_file), "%s%s", keys_dir, key);
+ g_snprintf(key_file, sizeof(key_file), "%s%s", keys_dir_get(), key);
if (!g_file_set_contents(key_file, contents, strlen(contents), NULL)) {
mh_err("Could not set file %s", key_file);
return FALSE;
@@ -59,7 +84,7 @@ get_key(const char *key)
char *contents;
size_t length;
- g_snprintf(key_file, sizeof(key_file), "%s%s", keys_dir, key);
+ g_snprintf(key_file, sizeof(key_file), "%s%s", keys_dir_get(), key);
if (g_file_test(key_file, G_FILE_TEST_EXISTS)) {
if(g_file_get_contents(key_file, &contents, &length, NULL)) {
if (strcmp(contents, "ok") == 0) {
diff --git a/src/tests/mh_api_sysconfig.h b/src/tests/mh_api_sysconfig.h
index 9351aef..879bb11 100644
--- a/src/tests/mh_api_sysconfig.h
+++ b/src/tests/mh_api_sysconfig.h
@@ -28,6 +28,9 @@ class MhApiSysconfigSuite : public CxxTest::TestSuite
const char *uri = "http://matahariproject.org/atom.xml"; // Test if download succeeds
const char flags = 0;
const char key[] = "org.matahariproject.test.unittest"; // Unimportant key defined
+
+ mh_sysconfig_keys_dir_set("/tmp/");
+
TS_ASSERT((mh_sysconfig_set_configured(key)) == TRUE);
TS_ASSERT((mh_sysconfig_is_configured(key)) == TRUE);
TS_ASSERT((mh_sysconfig_run_uri(uri, flags, "puppet", key)) != -1);
--
1.7.6
12 years, 9 months
[PATCH] Expand hostname regex.
by russell@russellbryant.net
From: Russell Bryant <rbryant(a)redhat.com>
I set up a new VM for development with the hostname of "matahari-dev"
and it was failing. This patch expands upon the regex in the unit test
to make it match more valid hostnames.
Signed-off-by: Russell Bryant <rbryant(a)redhat.com>
---
src/tests/mh_api_host.h | 5 +++--
1 files changed, 3 insertions(+), 2 deletions(-)
diff --git a/src/tests/mh_api_host.h b/src/tests/mh_api_host.h
index 4786255..00287ca 100644
--- a/src/tests/mh_api_host.h
+++ b/src/tests/mh_api_host.h
@@ -57,8 +57,9 @@ class MhApiHostSuite : public CxxTest::TestSuite
{
infomsg << "Verify " << mh_host_get_hostname() << " format";
TS_TRACE(infomsg.str());
- TS_ASSERT((mh_test_is_match("^([0-9a-zA-Z]+([\\.]|$)){1,3}$",
- mh_host_get_hostname())) >= 0);
+ /* http://stackoverflow.com/questions/1418423/the-hostname-regex */
+ TS_ASSERT((mh_test_is_match("^(?=.{1,255}$)[0-9A-Za-z](?:(?:[0-9A-Za-z]|\\b-){0,61}[0-9A-Za-z])?(?:\\.[0-9A-Za-z](?:(?:[0-9A-Za-z]|\\b-){0,61}[0-9A-Za-z])?)*\\.?$",
+ mh_host_get_hostname())) >= 0);
infomsg.str("");
}
--
1.7.6
12 years, 9 months
[PATCH 1/3] dnssrv: create dnssrv.c around OS specific functions
by russell@russellbryant.net
From: Russell Bryant <russell(a)russellbryant.net>
Change mh_os_dnssrv_lookup() to be an internal function and create a
wrapper around it. This makes it match the convention set by other core
code.
Signed-off-by: Russell Bryant <russell(a)russellbryant.net>
---
src/include/matahari/dnssrv.h | 2 +-
src/lib/CMakeLists.txt | 2 +-
src/lib/dnssrv.c | 28 ++++++++++++++++++++++++++++
src/lib/dnssrv_private.h | 34 ++++++++++++++++++++++++++++++++++
src/lib/mh_agent.cpp | 2 +-
5 files changed, 65 insertions(+), 3 deletions(-)
create mode 100644 src/lib/dnssrv.c
create mode 100644 src/lib/dnssrv_private.h
diff --git a/src/include/matahari/dnssrv.h b/src/include/matahari/dnssrv.h
index 58328e9..7d7a0c4 100644
--- a/src/include/matahari/dnssrv.h
+++ b/src/include/matahari/dnssrv.h
@@ -34,7 +34,7 @@
*
* \return buffer to hold domain retrieved
*/
-extern char *mh_os_dnssrv_lookup(const char *query);
+extern char *mh_dnssrv_lookup(const char *query);
#endif /* __MH_DNSSRV_H__ */
diff --git a/src/lib/CMakeLists.txt b/src/lib/CMakeLists.txt
index 9dd1fbd..e130995 100644
--- a/src/lib/CMakeLists.txt
+++ b/src/lib/CMakeLists.txt
@@ -6,7 +6,7 @@ include_directories(${pcre_INCLUDE_DIRS})
# See http://sourceware.org/autobook/autobook/autobook_91.html for
# how to set the library version appropriately
-add_library (mcommon SHARED utilities.c mainloop.c dnssrv_${VARIANT}.c)
+add_library (mcommon SHARED utilities.c mainloop.c dnssrv.c dnssrv_${VARIANT}.c)
set_target_properties(mcommon PROPERTIES SOVERSION 1.0.0)
target_link_libraries(mcommon ${SIGAR} ${glib_LIBRARIES})
diff --git a/src/lib/dnssrv.c b/src/lib/dnssrv.c
new file mode 100644
index 0000000..f3e095f
--- /dev/null
+++ b/src/lib/dnssrv.c
@@ -0,0 +1,28 @@
+/* dnssrv.c - Copyright (C) 2011 Red Hat, Inc.
+ *
+ * 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.1 of the License, or (at your option) any later version.
+ *
+ * This software 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 library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+ */
+
+#ifndef WIN32
+#include "config.h"
+#endif
+
+#include "dnssrv_private.h"
+
+char *
+mh_dnssrv_lookup(const char *query)
+{
+ return mh_os_dnssrv_lookup(query);
+}
diff --git a/src/lib/dnssrv_private.h b/src/lib/dnssrv_private.h
new file mode 100644
index 0000000..3f63ab7
--- /dev/null
+++ b/src/lib/dnssrv_private.h
@@ -0,0 +1,34 @@
+/* dnssrv_private.h - Copyright (C) 2011 Red Hat, Inc.
+ *
+ * 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.1 of the License, or (at your option) any later version.
+ *
+ * This software 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 library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+ */
+
+/**
+ * \file
+ * \brief Platform specific function prototypes.
+ *
+ * The functions in this header must be implemented by the platform
+ * specific host data code.
+ * - dnssrv_linux.c
+ * - dnssrv_windows.c
+ */
+
+#ifndef __MH_DNSSRV_PRIVATE_H__
+#define __MH_DNSSRV_PRIVATE_H__
+
+extern char *
+mh_os_dnssrv_lookup(const char *query);
+
+#endif /* __MH_DNSSRV_PRIVATE_H__ */
diff --git a/src/lib/mh_agent.cpp b/src/lib/mh_agent.cpp
index 871d1e4..cdea1c9 100644
--- a/src/lib/mh_agent.cpp
+++ b/src/lib/mh_agent.cpp
@@ -208,7 +208,7 @@ mh_connect(qpid::types::Variant::Map mh_options, qpid::types::Variant::Map amqp_
/* Is _ssl valid here as a protocol? _udp? */
std::stringstream fqdn;
fqdn << "_matahari._tcp." << mh_domainname();
- target = mh_os_dnssrv_lookup(fqdn.str().c_str());
+ target = mh_dnssrv_lookup(fqdn.str().c_str());
if(target) {
mh_info("SRV record resolved to: %s", target);
--
1.7.6
12 years, 9 months
matahari on RHEL5
by Roman Rakus
Hi all. I'm trying to build and run matahari on RHEL5. Here is status so far.
qpid-cpp is not in RHEL5 cvs branch, but RHEL6's could work.
in qpid-cpp.spec set global flag `rhel_5' to 1 and I get:
DEBUG util.py:256: No Package Found for xqilla-devel
DEBUG util.py:256: No Package Found for xerces-c-devel
- Both are in brew, so probably just only need to move them to build root.
sigar - in cvs but not built, older version than in RHEL6
matahari
Got ../lib/libmcommon.so.1.0.0: undefined reference to `__ns_name_uncompress' (and 2 more) - looks like a bug in libresolv, not exported symbols (glibc doh :( )
package 'polkit-gobject-1' not found - policy kit is not in RHEL6
So I think we can drop dbus support for RHEL5.
One question - does anybody know how to easily fix those undefined references?
RR
12 years, 9 months