[libvirt] [PATCH 02/16] Current virt-sandbox-service-util only supports service sandbox/containers
Daniel P. Berrange
berrange at redhat.com
Wed Apr 3 11:16:24 UTC 2013
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 at 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 :|
More information about the libvir-list
mailing list