On Tue, Apr 02, 2013 at 06:11:18PM -0400, Dan Walsh wrote:
We need to add support for interactive sandbox/containers for OpenShift.
This patch will create the correct container type based off the
/etc/libvirt-sandbox/service/*
Signed-off-by: Dan Walsh dwa...@redhat.com
---
bin/virt-sandbox-service-util.c | 31 +++
1 file changed, 23 insertions(+), 8 deletions(-)
diff --git a/bin/virt-sandbox-service-util.c b/bin/virt-sandbox-service-util.c
index 430518f..2630109 100644
--- a/bin/virt-sandbox-service-util.c
+++ b/bin/virt-sandbox-service-util.c
@@ -352,6 +352,7 @@ static gboolean libvirt_lxc_attach(const gchar
*option_name,
int main(int argc, char **argv) {
GMainLoop *loop = NULL;
+GVirSandboxConfigInteractive *interactive_cfg = NULL;
GVirSandboxConfigService *cfg = NULL;
GVirSandboxConfig *config = NULL;
This is rather overkill - just have the single 'GVirSandboxConfig *config'
variable and cast it where needed, removing the intermediate variables.
GVirSandboxContext *ctx = NULL;
@@ -360,7 +361,6 @@ int main(int argc, char **argv) {
int ret = EXIT_FAILURE;
pid_t pid = 0;
gchar *buf=NULL;
-GVirSandboxContextService *service;
gchar *uri = NULL;
gchar *command = NULL;
@@ -451,16 +451,28 @@ int main(int argc, char **argv) {
goto cleanup;
}
-cfg = GVIR_SANDBOX_CONFIG_SERVICE(config);
+if (GVIR_SANDBOX_IS_CONFIG_INTERACTIVE(config)) {
+GVirSandboxContextInteractive *service;
+interactive_cfg = GVIR_SANDBOX_CONFIG_INTERACTIVE(config);
-if (!(service = gvir_sandbox_context_service_new(hv, cfg))) {
-g_printerr(_(Unable to create new context service: %s\n),
- err err-message ? err-message : _(unknown));
-goto cleanup;
+if (!(service = gvir_sandbox_context_interactive_new(hv,
interactive_cfg))) {
Replace 'interactive_cfg' with a direct call to
GVIR_SANDBOX_CONFIG_INTERACTIVE(config)
+g_printerr(_(Unable to create new context service: %s\n),
+ err err-message ? err-message :
_(unknown));
+goto cleanup;
+}
+ctx = GVIR_SANDBOX_CONTEXT(service);
+} else {
+GVirSandboxContextService *service;
+cfg = GVIR_SANDBOX_CONFIG_SERVICE(config);
+
+if (!(service = gvir_sandbox_context_service_new(hv, cfg))) {
+g_printerr(_(Unable to create new context service: %s\n),
+ err err-message ? err-message :
_(unknown));
+goto cleanup;
+}
+ctx = GVIR_SANDBOX_CONTEXT(service);
}
-ctx = GVIR_SANDBOX_CONTEXT(service);
-
if (command) {
container_execute(ctx, command, pid);
}
@@ -475,6 +487,9 @@ cleanup:
free(buf);
+if (interactive_cfg)
+g_object_unref(interactive_cfg);
+
if (cfg)
g_object_unref(cfg);
And thus instead of needing these 2 blocks you can now just do
if (config)
g_object_unref(config)
Daniel
--
|: http://berrange.com -o-http://www.flickr.com/photos/dberrange/ :|
|: http://libvirt.org -o- http://virt-manager.org :|
|: http://autobuild.org -o- http://search.cpan.org/~danberr/ :|
|: http://entangle-photo.org -o- http://live.gnome.org/gtk-vnc :|
--
libvir-list mailing list
libvir-list@redhat.com
https://www.redhat.com/mailman/listinfo/libvir-list