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 <dwalsh(a)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 :|