{
"cpuQuotaForeground" : -1,
"cpuQuotaBackground" : 1000,
+ "enableDbusIntegration" : true,
"privilege" : 1,
"switchToDefaultAfterTimeout" : true,
"config" : "../libvirt-config/business.xml",
{
"cpuQuotaForeground" : -1,
"cpuQuotaBackground" : 1000,
+ "enableDbusIntegration" : true,
"privilege" : 10,
"switchToDefaultAfterTimeout" : true,
"config" : "../libvirt-config/private.xml",
bool switchToDefaultAfterTimeout;
/**
+ * Specify, if D-Bus communication with the container will be enabled.
+ * Setting this value to "false" will make the domain API not work inside the container.
+ */
+ bool enableDbusIntegration;
+
+ /**
* Container's libvirt (XML) config file.
* Location can be relative to the Container's config file.
*/
(
privilege,
switchToDefaultAfterTimeout,
+ enableDbusIntegration,
config,
networkConfig,
networkFilterConfig,
, mNameLost(false)
{
if (address.empty()) {
- // TODO: this should throw. Don't return cleanly unless the object is fully usable.
- LOGW("The connection to the container is disabled");
- return;
+ LOGE("Invalid container connection address");
+ throw ContainerConnectionException("Invalid container connection address");
}
LOGT("Connecting to DBUS on " << address);
void Container::start()
{
Lock lock(mReconnectMutex);
- mConnectionTransport.reset(new ContainerConnectionTransport(mRunMountPoint));
+ if (mConfig.enableDbusIntegration) {
+ mConnectionTransport.reset(new ContainerConnectionTransport(mRunMountPoint));
+ }
mNetworkAdmin->start();
mAdmin->start();
- connect();
+ if (mConfig.enableDbusIntegration) {
+ connect();
+ }
- // Send to the background only after we're connected,
- // otherwise it'd take ages.
- LOGD(getId() << ": DBUS connected, sending to the background");
+ // Send to the background only after we're connected, otherwise it'd take ages.
+ LOGD(getId() << ": sending to the background");
goBackground();
}
Lock lock(mReconnectMutex);
mNetworkAdmin->setDetachOnExit();
mAdmin->setDetachOnExit();
- mConnectionTransport->setDetachOnExit();
+ if (mConnectionTransport) {
+ mConnectionTransport->setDetachOnExit();
+ }
}
bool Container::isRunning()
{
"privilege" : 20,
"switchToDefaultAfterTimeout" : true,
+ "enableDbusIntegration" : true,
"config" : "../libvirt-config/console1-dbus.xml",
"networkConfig" : "../libvirt-config/network1.xml",
"networkFilterConfig" : "../libvirt-config/network1-filter.xml",
{
"privilege" : 20,
"switchToDefaultAfterTimeout" : false,
+ "enableDbusIntegration" : true,
"config" : "../libvirt-config/console2-dbus.xml",
"networkConfig" : "../libvirt-config/network2.xml",
"networkFilterConfig" : "../libvirt-config/network2-filter.xml",
{
"privilege" : 20,
"switchToDefaultAfterTimeout" : true,
+ "enableDbusIntegration" : true,
"config" : "../libvirt-config/console3-dbus.xml",
"networkConfig" : "../libvirt-config/network3.xml",
"networkFilterConfig" : "../libvirt-config/network3-filter.xml",
{
"privilege" : 10,
"switchToDefaultAfterTimeout" : true,
+ "enableDbusIntegration" : false,
"config" : "@SC_TEST_CONFIG_INSTALL_DIR@/server/ut-container-admin/libvirt-config/buggy.xml",
"networkConfig" : "",
"networkFilterConfig" : "",
{
"privilege" : 10,
"switchToDefaultAfterTimeout" : true,
+ "enableDbusIntegration" : false,
"config" : "/this/is/a/missing/file/path/missing.xml",
"networkConfig" : "",
"networkFilterConfig" : "",
{
"privilege" : 10,
"switchToDefaultAfterTimeout" : true,
+ "enableDbusIntegration" : false,
"config" : "@SC_TEST_CONFIG_INSTALL_DIR@/server/ut-container-admin/libvirt-config/test-no-shutdown.xml",
"networkConfig" : "",
"networkFilterConfig" : "",
{
"privilege" : 10,
"switchToDefaultAfterTimeout" : true,
+ "enableDbusIntegration" : false,
"config" : "@SC_TEST_CONFIG_INSTALL_DIR@/server/ut-container-admin/libvirt-config/test.xml",
"networkConfig" : "",
"networkFilterConfig" : "",
{
"privilege" : 10,
"switchToDefaultAfterTimeout" : true,
+ "enableDbusIntegration" : false,
"config" : "/missing/file/path/libvirt.xml",
"networkConfig" : "../libvirt-config/network.xml",
"networkFilterConfig" : "../libvirt-config/network-filter.xml",
{
"privilege" : 10,
"switchToDefaultAfterTimeout" : true,
+ "enableDbusIntegration" : true,
"config" : "../libvirt-config/test-dbus.xml",
"networkConfig" : "../libvirt-config/network.xml",
"networkFilterConfig" : "../libvirt-config/network-filter.xml",
{
"privilege" : 10,
"switchToDefaultAfterTimeout" : true,
+ "enableDbusIntegration" : false,
"config" : "../libvirt-config/test.xml",
"networkConfig" : "../libvirt-config/network.xml",
"networkFilterConfig" : "../libvirt-config/network-filter.xml",
{
"privilege" : 20,
"switchToDefaultAfterTimeout" : true,
+ "enableDbusIntegration" : true,
"config" : "../libvirt-config/console1-dbus.xml",
"networkConfig" : "../libvirt-config/network1.xml",
"networkFilterConfig" : "../libvirt-config/network1-filter.xml",
{
"privilege" : 20,
"switchToDefaultAfterTimeout" : true,
+ "enableDbusIntegration" : false,
"config" : "../libvirt-config/console1.xml",
"networkConfig" : "../libvirt-config/network1.xml",
"networkFilterConfig" : "../libvirt-config/network1-filter.xml",
{
"privilege" : 20,
"switchToDefaultAfterTimeout" : false,
+ "enableDbusIntegration" : true,
"config" : "../libvirt-config/console2-dbus.xml",
"networkConfig" : "../libvirt-config/network2.xml",
"networkFilterConfig" : "../libvirt-config/network2-filter.xml",
{
"privilege" : 10,
"switchToDefaultAfterTimeout" : true,
+ "enableDbusIntegration" : false,
"config" : "../libvirt-config/console2.xml",
"networkConfig" : "../libvirt-config/network2.xml",
"networkFilterConfig" : "../libvirt-config/network2-filter.xml",
{
"privilege" : 20,
"switchToDefaultAfterTimeout" : true,
+ "enableDbusIntegration" : true,
"config" : "../libvirt-config/console3-dbus.xml",
"networkConfig" : "../libvirt-config/network3.xml",
"networkFilterConfig" : "../libvirt-config/network3-filter.xml",
{
"privilege" : 15,
"switchToDefaultAfterTimeout" : true,
+ "enableDbusIntegration" : false,
"config" : "../libvirt-config/console3.xml",
"networkConfig" : "../libvirt-config/network3.xml",
"networkFilterConfig" : "../libvirt-config/network3-filter.xml",
{
"privilege" : 10,
"switchToDefaultAfterTimeout" : true,
+ "enableDbusIntegration" : false,
"config" : "",
"networkConfig" : "@SC_TEST_CONFIG_INSTALL_DIR@/server/ut-network-admin/libvirt-config/buggy-network.xml",
"networkFilterConfig" : "@SC_TEST_CONFIG_INSTALL_DIR@/server/ut-network-admin/libvirt-config/buggy-network-filter.xml",
{
"privilege" : 10,
"switchToDefaultAfterTimeout" : true,
+ "enableDbusIntegration" : false,
"config" : "",
"networkConfig" : "",
"networkFilterConfig" : "",
{
"privilege" : 10,
"switchToDefaultAfterTimeout" : true,
+ "enableDbusIntegration" : false,
"config" : "",
"networkConfig" : "@SC_TEST_CONFIG_INSTALL_DIR@/server/ut-network-admin/libvirt-config/network.xml",
"networkFilterConfig" : "@SC_TEST_CONFIG_INSTALL_DIR@/server/ut-network-admin/libvirt-config/network-filter.xml",
{
"privilege" : 20,
"switchToDefaultAfterTimeout" : true,
+ "enableDbusIntegration" : false,
"config" : "../libvirt-config/container1.xml",
"networkConfig" : "../libvirt-config/network1.xml",
"networkFilterConfig" : "../libvirt-config/network1-filter.xml",
{
"privilege" : 10,
"switchToDefaultAfterTimeout" : true,
+ "enableDbusIntegration" : false,
"config" : "../libvirt-config/container2.xml",
"networkConfig" : "../libvirt-config/network2.xml",
"networkFilterConfig" : "../libvirt-config/network2-filter.xml",
{
"privilege" : 15,
"switchToDefaultAfterTimeout" : true,
+ "enableDbusIntegration" : false,
"config" : "../libvirt-config/container3.xml",
"networkConfig" : "../libvirt-config/network3.xml",
"networkFilterConfig" : "../libvirt-config/network3-filter.xml",
}
namespace {
+ const DbusAccessory::Dbuses EXPECTED_DBUSES_NO_DBUS = {
+ {"ut-containers-manager-console1", ""},
+ {"ut-containers-manager-console2", ""},
+ {"ut-containers-manager-console3", ""}};
+
const DbusAccessory::Dbuses EXPECTED_DBUSES_STOPPED = {
{"ut-containers-manager-console1-dbus", ""},
{"ut-containers-manager-console2-dbus", ""},
BOOST_AUTO_TEST_CASE(GetContainerDbusesTest)
{
DbusAccessory host(DbusAccessory::HOST_ID);
-
ContainersManager cm(TEST_DBUS_CONFIG_PATH);
BOOST_CHECK(EXPECTED_DBUSES_STOPPED == host.callMethodGetContainerDbuses());
-
cm.startAll();
-
BOOST_CHECK(EXPECTED_DBUSES_STARTED == host.callMethodGetContainerDbuses());
-
cm.stopAll();
-
BOOST_CHECK(EXPECTED_DBUSES_STOPPED == host.callMethodGetContainerDbuses());
}
+BOOST_AUTO_TEST_CASE(GetContainerDbusesNoDbusTest)
+{
+ DbusAccessory host(DbusAccessory::HOST_ID);
+ ContainersManager cm(TEST_CONFIG_PATH);
+ BOOST_CHECK(EXPECTED_DBUSES_NO_DBUS == host.callMethodGetContainerDbuses());
+ cm.startAll();
+ BOOST_CHECK(EXPECTED_DBUSES_NO_DBUS == host.callMethodGetContainerDbuses());
+ cm.stopAll();
+ BOOST_CHECK(EXPECTED_DBUSES_NO_DBUS == host.callMethodGetContainerDbuses());
+}
+
BOOST_AUTO_TEST_CASE(ContainerDbusesSignalsTest)
{
Latch signalLatch;