[libvirt] [sandbox PATCH v3 18/22] Add configuration object for environment variables
Cedric Bosdonnat
cbosdonnat at suse.com
Tue Aug 18 09:57:31 UTC 2015
On Tue, 2015-08-18 at 06:53 +0000, Eren Yagdiran wrote:
> Add the config gobject to store custom environment variables.
> This will allow creating custom environment variables on a sandbox
> with a parameter formatted like --env key1=val1
> ---
> libvirt-sandbox/Makefile.am | 2 +
> libvirt-sandbox/libvirt-sandbox-config-all.h | 1 +
> libvirt-sandbox/libvirt-sandbox-config-env.c | 199 +++++++++++++++++++++++++++
> libvirt-sandbox/libvirt-sandbox-config-env.h | 78 +++++++++++
> libvirt-sandbox/libvirt-sandbox-config.c | 187 ++++++++++++++++++++++++-
> libvirt-sandbox/libvirt-sandbox-config.h | 12 ++
> libvirt-sandbox/libvirt-sandbox.h | 1 +
> libvirt-sandbox/libvirt-sandbox.sym | 6 +
> 8 files changed, 485 insertions(+), 1 deletion(-)
> create mode 100644 libvirt-sandbox/libvirt-sandbox-config-env.c
> create mode 100644 libvirt-sandbox/libvirt-sandbox-config-env.h
>
> diff --git a/libvirt-sandbox/Makefile.am b/libvirt-sandbox/Makefile.am
> index 597803e..5383b0d 100644
> --- a/libvirt-sandbox/Makefile.am
> +++ b/libvirt-sandbox/Makefile.am
> @@ -53,6 +53,7 @@ SANDBOX_RPC_FILES = \
> SANDBOX_CONFIG_HEADER_FILES = \
> libvirt-sandbox-config.h \
> libvirt-sandbox-config-disk.h \
> + libvirt-sandbox-config-env.h \
> libvirt-sandbox-config-network.h \
> libvirt-sandbox-config-network-address.h \
> libvirt-sandbox-config-network-filterref-parameter.h \
> @@ -92,6 +93,7 @@ SANDBOX_CONFIG_SOURCE_FILES = \
> libvirt-sandbox-util.c \
> libvirt-sandbox-config.c \
> libvirt-sandbox-config-disk.c \
> + libvirt-sandbox-config-env.c \
> libvirt-sandbox-config-network.c \
> libvirt-sandbox-config-network-address.c \
> libvirt-sandbox-config-network-filterref.c \
> diff --git a/libvirt-sandbox/libvirt-sandbox-config-all.h b/libvirt-sandbox/libvirt-sandbox-config-all.h
> index 8cb25c4..756bb3e 100644
> --- a/libvirt-sandbox/libvirt-sandbox-config-all.h
> +++ b/libvirt-sandbox/libvirt-sandbox-config-all.h
> @@ -32,6 +32,7 @@
> /* Local includes */
> #include <libvirt-sandbox/libvirt-sandbox-util.h>
> #include <libvirt-sandbox/libvirt-sandbox-config-disk.h>
> +#include <libvirt-sandbox/libvirt-sandbox-config-env.h>
> #include <libvirt-sandbox/libvirt-sandbox-config-mount.h>
> #include <libvirt-sandbox/libvirt-sandbox-config-mount-file.h>
> #include <libvirt-sandbox/libvirt-sandbox-config-mount-host-bind.h>
> diff --git a/libvirt-sandbox/libvirt-sandbox-config-env.c b/libvirt-sandbox/libvirt-sandbox-config-env.c
> new file mode 100644
> index 0000000..eaf0fb2
> --- /dev/null
> +++ b/libvirt-sandbox/libvirt-sandbox-config-env.c
> @@ -0,0 +1,199 @@
> +/*
> + * libvirt-sandbox-config-env.c: libvirt sandbox configuration
> + *
> + * Copyright (C) 2015 Universitat Politècnica de Catalunya.
> + *
> + * This library is free software; you can redistribute it and/or
> + * modify it under the terms of the GNU Lesser 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 library 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
> + * Lesser General Public License for more details.
> + *
> + * You should have received a copy of the GNU Lesser General Public
> + * License along with this library; if not, write to the Free Software
> + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
> + *
> + * Author: Eren Yagdiran <erenyagdiran at gmail.com>
> + */
> +
> +#include <config.h>
> +#include <string.h>
> +
> +#include "libvirt-sandbox/libvirt-sandbox-config-all.h"
> +
> +/**
> + * SECTION: libvirt-sandbox-config-env
> + * @short_description: Disk attachment configuration details
> + * @include: libvirt-sandbox/libvirt-sandbox.h
> + * @see_aloso: #GVirSandboxConfig
> + *
> + * Provides an object to store information about a environment variable in the sandbox
> + *
> + */
> +
> +#define GVIR_SANDBOX_CONFIG_ENV_GET_PRIVATE(obj) \
> + (G_TYPE_INSTANCE_GET_PRIVATE((obj), GVIR_SANDBOX_TYPE_CONFIG_ENV, GVirSandboxConfigEnvPrivate))
> +
> +
> +struct _GVirSandboxConfigEnvPrivate
> +{
> + gchar *key;
> + gchar *value;
> +};
Any reason for not having removed that class and used a GHashMap
instead?
--
Cedric
> +G_DEFINE_TYPE(GVirSandboxConfigEnv, gvir_sandbox_config_env, G_TYPE_OBJECT);
> +
> +
> +enum {
> + PROP_0,
> + PROP_KEY,
> + PROP_VALUE
> +};
> +
> +enum {
> + LAST_SIGNAL
> +};
> +
> +
> +
> +static void gvir_sandbox_config_env_get_property(GObject *object,
> + guint prop_id,
> + GValue *value,
> + GParamSpec *pspec)
> +{
> + GVirSandboxConfigEnv *config = GVIR_SANDBOX_CONFIG_ENV(object);
> + GVirSandboxConfigEnvPrivate *priv = config->priv;
> +
> + switch (prop_id) {
> + case PROP_KEY:
> + g_value_set_string(value, priv->key);
> + break;
> + case PROP_VALUE:
> + g_value_set_string(value, priv->value);
> + break;
> + default:
> + G_OBJECT_WARN_INVALID_PROPERTY_ID(object, prop_id, pspec);
> + }
> +}
> +
> +
> +static void gvir_sandbox_config_env_set_property(GObject *object,
> + guint prop_id,
> + const GValue *value,
> + GParamSpec *pspec)
> +{
> + GVirSandboxConfigEnv *config = GVIR_SANDBOX_CONFIG_ENV(object);
> + GVirSandboxConfigEnvPrivate *priv = config->priv;
> +
> + switch (prop_id) {
> + case PROP_KEY:
> + g_free(priv->key);
> + priv->key = g_value_dup_string(value);
> + break;
> + case PROP_VALUE:
> + g_free(priv->value);
> + priv->value = g_value_dup_string(value);
> + break;
> + default:
> + G_OBJECT_WARN_INVALID_PROPERTY_ID(object, prop_id, pspec);
> + }
> +}
> +
> +
> +static void gvir_sandbox_config_env_finalize(GObject *object)
> +{
> + GVirSandboxConfigEnv *config = GVIR_SANDBOX_CONFIG_ENV(object);
> + GVirSandboxConfigEnvPrivate *priv = config->priv;
> +
> + g_free(priv->key);
> + g_free(priv->value);
> +
> + G_OBJECT_CLASS(gvir_sandbox_config_env_parent_class)->finalize(object);
> +}
> +
> +
> +static void gvir_sandbox_config_env_class_init(GVirSandboxConfigEnvClass *klass)
> +{
> + GObjectClass *object_class = G_OBJECT_CLASS(klass);
> +
> + object_class->finalize = gvir_sandbox_config_env_finalize;
> + object_class->get_property = gvir_sandbox_config_env_get_property;
> + object_class->set_property = gvir_sandbox_config_env_set_property;
> +
> + g_object_class_install_property(object_class,
> + PROP_KEY,
> + g_param_spec_string("key",
> + "Key",
> + "The sandbox key property",
> + NULL,
> + G_PARAM_READABLE |
> + G_PARAM_WRITABLE |
> + G_PARAM_CONSTRUCT_ONLY |
> + G_PARAM_STATIC_NAME |
> + G_PARAM_STATIC_NICK |
> + G_PARAM_STATIC_BLURB));
> +
> + g_object_class_install_property(object_class,
> + PROP_VALUE,
> + g_param_spec_string("value",
> + "Value",
> + "The sandbox value property",
> + NULL,
> + G_PARAM_READABLE |
> + G_PARAM_WRITABLE |
> + G_PARAM_CONSTRUCT_ONLY |
> + G_PARAM_STATIC_NAME |
> + G_PARAM_STATIC_NICK |
> + G_PARAM_STATIC_BLURB));
> +
> + g_type_class_add_private(klass, sizeof(GVirSandboxConfigEnvPrivate));
> +}
> +
> +
> +static void gvir_sandbox_config_env_init(GVirSandboxConfigEnv *config)
> +{
> + config->priv = GVIR_SANDBOX_CONFIG_ENV_GET_PRIVATE(config);
> +}
> +
> +
> +/**
> + * gvir_sandbox_config_env_get_key:
> + * @config: (transfer none): the sandbox env config
> + *
> + * Retrieves the key property for the environment variable
> + *
> + * Returns: (transfer none): the key property
> + */
> +const gchar *gvir_sandbox_config_env_get_key(GVirSandboxConfigEnv *config)
> +{
> + GVirSandboxConfigEnvPrivate *priv = config->priv;
> + return priv->key;
> +}
> +
> +
> +/**
> + * gvir_sandbox_config_disk_get_value:
> + * @config: (transfer none): the sandbox env config
> + *
> + * Retrieves the value property for the environment variable
> + *
> + * Returns: (transfer none): the value property
> + */
> +const gchar *gvir_sandbox_config_env_get_value(GVirSandboxConfigEnv *config)
> +{
> + GVirSandboxConfigEnvPrivate *priv = config->priv;
> + return priv->value;
> +}
> +
> +/*
> + * Local variables:
> + * c-indent-level: 4
> + * c-basic-offset: 4
> + * indent-tabs-mode: nil
> + * tab-width: 8
> + * End:
> + */
> diff --git a/libvirt-sandbox/libvirt-sandbox-config-env.h b/libvirt-sandbox/libvirt-sandbox-config-env.h
> new file mode 100644
> index 0000000..1386f10
> --- /dev/null
> +++ b/libvirt-sandbox/libvirt-sandbox-config-env.h
> @@ -0,0 +1,78 @@
> +/*
> + * libvirt-sandbox-config-env.h: libvirt sandbox configuration
> + *
> + * Copyright (C) 2015 Universitat Politècnica de Catalunya.
> + *
> + * This library is free software; you can redistribute it and/or
> + * modify it under the terms of the GNU Lesser 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 library 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
> + * Lesser General Public License for more details.
> + *
> + * You should have received a copy of the GNU Lesser General Public
> + * License along with this library; if not, write to the Free Software
> + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
> + *
> + * Author: Eren Yagdiran <erenyagdiran at gmail.com>
> + */
> +
> +#if !defined(__LIBVIRT_SANDBOX_H__) && !defined(LIBVIRT_SANDBOX_BUILD)
> +#error "Only <libvirt-sandbox/libvirt-sandbox.h> can be included directly."
> +#endif
> +
> +#ifndef __LIBVIRT_SANDBOX_CONFIG_ENV_H__
> +#define __LIBVIRT_SANDBOX_CONFIG_ENV_H__
> +
> +G_BEGIN_DECLS
> +
> +#define GVIR_SANDBOX_TYPE_CONFIG_ENV (gvir_sandbox_config_env_get_type ())
> +#define GVIR_SANDBOX_CONFIG_ENV(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), GVIR_SANDBOX_TYPE_CONFIG_ENV, GVirSandboxConfigEnv))
> +#define GVIR_SANDBOX_CONFIG_ENV_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), GVIR_SANDBOX_TYPE_CONFIG_ENV, GVirSandboxConfigEnvClass))
> +#define GVIR_SANDBOX_IS_CONFIG_ENV(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), GVIR_SANDBOX_TYPE_CONFIG_ENV))
> +#define GVIR_SANDBOX_IS_CONFIG_ENV_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), GVIR_SANDBOX_TYPE_CONFIG_ENV))
> +#define GVIR_SANDBOX_CONFIG_ENV_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), GVIR_SANDBOX_TYPE_CONFIG_ENV, GVirSandboxConfigEnvClass))
> +
> +#define GVIR_SANDBOX_TYPE_CONFIG_ENV_HANDLE (gvir_sandbox_config_env_handle_get_type ())
> +
> +typedef struct _GVirSandboxConfigEnv GVirSandboxConfigEnv;
> +typedef struct _GVirSandboxConfigEnvPrivate GVirSandboxConfigEnvPrivate;
> +typedef struct _GVirSandboxConfigEnvClass GVirSandboxConfigEnvClass;
> +
> +struct _GVirSandboxConfigEnv
> +{
> + GObject parent;
> +
> + GVirSandboxConfigEnvPrivate *priv;
> +
> + /* Do not add fields to this struct */
> +};
> +
> +struct _GVirSandboxConfigEnvClass
> +{
> + GObjectClass parent_class;
> +
> + gpointer padding[LIBVIRT_SANDBOX_CLASS_PADDING];
> +};
> +
> +GType gvir_sandbox_config_env_get_type(void);
> +
> +const gchar *gvir_sandbox_config_env_get_key(GVirSandboxConfigEnv *config);
> +
> +const gchar *gvir_sandbox_config_env_get_value(GVirSandboxConfigEnv *config);
> +
> +G_END_DECLS
> +
> +#endif /* __LIBVIRT_SANDBOX_CONFIG_DISK_H__ */
> +
> +/*
> + * Local variables:
> + * c-indent-level: 4
> + * c-basic-offset: 4
> + * indent-tabs-mode: nil
> + * tab-width: 8
> + * End:
> + */
> diff --git a/libvirt-sandbox/libvirt-sandbox-config.c b/libvirt-sandbox/libvirt-sandbox-config.c
> index 2506072..980a50b 100644
> --- a/libvirt-sandbox/libvirt-sandbox-config.c
> +++ b/libvirt-sandbox/libvirt-sandbox-config.c
> @@ -64,6 +64,7 @@ struct _GVirSandboxConfigPrivate
> GList *networks;
> GList *mounts;
> GList *disks;
> + GList *envs;
>
> gchar *secLabel;
> gboolean secDynamic;
> @@ -276,6 +277,9 @@ static void gvir_sandbox_config_finalize(GObject *object)
> g_list_foreach(priv->networks, (GFunc)g_object_unref, NULL);
> g_list_free(priv->networks);
>
> + g_list_foreach(priv->envs, (GFunc)g_object_unref, NULL);
> + g_list_free(priv->envs);
> +
> g_list_foreach(priv->disks, (GFunc)g_object_unref, NULL);
> g_list_free(priv->disks);
>
> @@ -1144,6 +1148,114 @@ gboolean gvir_sandbox_config_has_networks(GVirSandboxConfig *config)
> return priv->networks ? TRUE : FALSE;
> }
>
> +/**
> + * gvir_sandbox_config_add_env:
> + * @config: (transfer none): the sandbox config
> + * @dsk: (transfer none): the env configuration
> + *
> + * Adds a new environment variable to the sandbox
> + *
> + */
> +void gvir_sandbox_config_add_env(GVirSandboxConfig *config,
> + GVirSandboxConfigEnv *env)
> +{
> + GVirSandboxConfigPrivate *priv = config->priv;
> +
> + g_object_ref(env);
> +
> + priv->envs = g_list_append(priv->envs, env);
> +}
> +
> +/**
> + * gvir_sandbox_config_get_envs:
> + * @config: (transfer none): the sandbox config
> + *
> + * Retrieves the list of custom environment list in the sandbox
> + *
> + * Returns: (transfer full) (element-type GVirSandboxConfigMount): the list of environment variables
> + */
> +GList *gvir_sandbox_config_get_envs(GVirSandboxConfig *config)
> +{
> + GVirSandboxConfigPrivate *priv = config->priv;
> + g_list_foreach(priv->envs, (GFunc)g_object_ref, NULL);
> + return g_list_copy(priv->envs);
> +}
> +
> +/**
> + * gvir_sandbox_config_add_env_strv:
> + * @config: (transfer none): the sandbox config
> + * @envs: (transfer none)(array zero-terminated=1): the list of environment variables
> + *
> + * Parses @envs whose elements are in the format KEY=VALUE
> + *
> + * --env KEY=VALUE
> + */
> +gboolean gvir_sandbox_config_add_env_strv(GVirSandboxConfig *config,
> + gchar **envs,
> + GError **error)
> +{
> + gsize i = 0;
> + while (envs && envs[i]) {
> + if (!gvir_sandbox_config_add_env_opts(config,
> + envs[i],
> + error))
> + return FALSE;
> + i++;
> + }
> + return TRUE;
> +}
> +
> +/**
> + * gvir_sandbox_config_add_env_opts:
> + * @config: (transfer none): the sandbox config
> + * @disk: (transfer none): the env config
> + *
> + * Parses @env in the format KEY=VALUE
> + * creating #GVirSandboxConfigEnv instances for each element. For
> + * example
> + *
> + * --env KEY=VALUE
> + */
> +
> +gboolean gvir_sandbox_config_add_env_opts(GVirSandboxConfig *config,
> + const char *opt,
> + GError **error)
> +{
> + gchar *tmp = NULL;
> + gchar *key = NULL;
> + gchar *value = NULL;
> + GVirSandboxConfigEnv *envConfig;
> +
> + if (!(tmp = g_strdup(opt)))
> + return FALSE;
> +
> + key = strchr(tmp, '=');
> +
> + if (!key) {
> + g_set_error(error, GVIR_SANDBOX_CONFIG_ERROR, 0,
> + _("Wrong environment format on %s"), opt);
> + return FALSE;
> + }
> +
> + *key = '\0';
> + value = key + 1;
> + envConfig = GVIR_SANDBOX_CONFIG_ENV(g_object_new(GVIR_SANDBOX_TYPE_CONFIG_ENV,
> + "key", tmp,
> + "value", value,
> + NULL));
> +
> + gvir_sandbox_config_add_env(config, envConfig);
> +
> + g_object_unref(envConfig);
> + g_free(tmp);
> + return TRUE;
> +}
> +
> +gboolean gvir_sandbox_config_has_envs(GVirSandboxConfig *config)
> +{
> + GVirSandboxConfigPrivate *priv = config->priv;
> + return priv->envs != NULL;
> +}
>
> /**
> * gvir_sandbox_config_add_disk:
> @@ -1163,7 +1275,6 @@ void gvir_sandbox_config_add_disk(GVirSandboxConfig *config,
> priv->disks = g_list_append(priv->disks, dsk);
> }
>
> -
> /**
> * gvir_sandbox_config_get_disks:
> * @config: (transfer none): the sandbox config
> @@ -1949,6 +2060,44 @@ static GVirSandboxConfigMount *gvir_sandbox_config_load_config_mount(GKeyFile *f
> goto cleanup;
> }
>
> +static GVirSandboxConfigEnv *gvir_sandbox_config_load_config_env(GKeyFile *file,
> + guint i,
> + GError **error)
> +{
> + GVirSandboxConfigEnv *config = NULL;
> + gchar *index = NULL;
> + gchar *key = NULL;
> + gchar *value = NULL;
> + GError *e = NULL;
> +
> + index = g_strdup_printf("env.%u", i);
> + if ((key = g_key_file_get_string(file, index, "key", &e)) == NULL) {
> + if (e->code == G_KEY_FILE_ERROR_GROUP_NOT_FOUND) {
> + g_error_free(e);
> + return NULL;
> + }
> + g_error_free(e);
> + g_set_error(error, GVIR_SANDBOX_CONFIG_ERROR, 0,
> + "%s", _("Missing environment key in config file"));
> + goto cleanup;
> + }
> + if ((value = g_key_file_get_string(file, index, "value", NULL)) == NULL) {
> + g_set_error(error, GVIR_SANDBOX_CONFIG_ERROR, 0,
> + "%s", _("Missing environment value in config file"));
> + goto cleanup;
> + }
> +
> + config = GVIR_SANDBOX_CONFIG_ENV(g_object_new(GVIR_SANDBOX_TYPE_CONFIG_ENV,
> + "key", key,
> + "value", value,
> + NULL));
> +
> + cleanup:
> + g_free(key);
> + g_free(value);
> + g_free(index);
> + return config;
> +}
>
> static GVirSandboxConfigDisk *gvir_sandbox_config_load_config_disk(GKeyFile *file,
> guint i,
> @@ -2244,6 +2393,14 @@ static gboolean gvir_sandbox_config_load_config(GVirSandboxConfig *config,
> priv->mounts = g_list_append(priv->mounts, mount);
> }
>
> + for (i = 0 ; i < 1024 ; i++) {
> + GVirSandboxConfigEnv *env;
> + if (!(env = gvir_sandbox_config_load_config_env(file, i, error)) &&
> + *error)
> + goto cleanup;
> + if (env)
> + priv->envs = g_list_append(priv->envs, env);
> + }
>
> for (i = 0 ; i < 1024 ; i++) {
> GVirSandboxConfigDisk *disk;
> @@ -2274,6 +2431,24 @@ static gboolean gvir_sandbox_config_load_config(GVirSandboxConfig *config,
> return ret;
> }
>
> +static void gvir_sandbox_config_save_config_env(GVirSandboxConfigEnv *config,
> + GKeyFile *file,
> + guint i)
> +{
> + gchar *index = NULL;
> + gchar *key = NULL;
> + gchar *value = NULL;
> +
> + index = g_strdup_printf("env.%u", i);
> + key = g_strdup(gvir_sandbox_config_env_get_key(config));
> + value = g_strdup(gvir_sandbox_config_env_get_value(config));
> + g_key_file_set_string(file, index, "key",key);
> + g_key_file_set_string(file, index, "value",value);
> +
> + g_free(index);
> + g_free(key);
> + g_free(value);
> +}
>
> static void gvir_sandbox_config_save_config_disk(GVirSandboxConfigDisk *config,
> GKeyFile *file,
> @@ -2485,6 +2660,16 @@ static void gvir_sandbox_config_save_config(GVirSandboxConfig *config,
> }
>
> i = 0;
> + tmp = priv->envs;
> + while (tmp) {
> + gvir_sandbox_config_save_config_env(tmp->data,
> + file,
> + i);
> + tmp = tmp->next;
> + i++;
> + }
> +
> + i = 0;
> tmp = priv->disks;
> while (tmp) {
> gvir_sandbox_config_save_config_disk(tmp->data,
> diff --git a/libvirt-sandbox/libvirt-sandbox-config.h b/libvirt-sandbox/libvirt-sandbox-config.h
> index 2c5f0a6..d39bb2b 100644
> --- a/libvirt-sandbox/libvirt-sandbox-config.h
> +++ b/libvirt-sandbox/libvirt-sandbox-config.h
> @@ -122,6 +122,18 @@ gboolean gvir_sandbox_config_add_network_strv(GVirSandboxConfig *config,
> GError **error);
> gboolean gvir_sandbox_config_has_networks(GVirSandboxConfig *config);
>
> +void gvir_sandbox_config_add_env(GVirSandboxConfig *config,
> + GVirSandboxConfigEnv *env);
> +GList *gvir_sandbox_config_get_envs(GVirSandboxConfig *config);
> +gboolean gvir_sandbox_config_add_env_strv(GVirSandboxConfig *config,
> + gchar **envs,
> + GError **error);
> +gboolean gvir_sandbox_config_add_env_opts(GVirSandboxConfig *config,
> + const char *env,
> + GError **error);
> +gboolean gvir_sandbox_config_has_envs(GVirSandboxConfig *config);
> +
> +
> void gvir_sandbox_config_add_disk(GVirSandboxConfig *config,
> GVirSandboxConfigDisk *dsk);
> GList *gvir_sandbox_config_get_disks(GVirSandboxConfig *config);
> diff --git a/libvirt-sandbox/libvirt-sandbox.h b/libvirt-sandbox/libvirt-sandbox.h
> index 20dc871..05d7485 100644
> --- a/libvirt-sandbox/libvirt-sandbox.h
> +++ b/libvirt-sandbox/libvirt-sandbox.h
> @@ -32,6 +32,7 @@
> #include <libvirt-sandbox/libvirt-sandbox-util.h>
> #include <libvirt-sandbox/libvirt-sandbox-enum-types.h>
> #include <libvirt-sandbox/libvirt-sandbox-config-disk.h>
> +#include <libvirt-sandbox/libvirt-sandbox-config-env.h>
> #include <libvirt-sandbox/libvirt-sandbox-config-mount.h>
> #include <libvirt-sandbox/libvirt-sandbox-config-mount-file.h>
> #include <libvirt-sandbox/libvirt-sandbox-config-mount-host-bind.h>
> diff --git a/libvirt-sandbox/libvirt-sandbox.sym b/libvirt-sandbox/libvirt-sandbox.sym
> index 6f8097a..a09a6c2 100644
> --- a/libvirt-sandbox/libvirt-sandbox.sym
> +++ b/libvirt-sandbox/libvirt-sandbox.sym
> @@ -26,6 +26,12 @@ LIBVIRT_SANDBOX_0.6.0 {
> gvir_sandbox_config_disk_get_type;
> gvir_sandbox_config_has_disks;
>
> + gvir_sandbox_config_add_env;
> + gvir_sandbox_config_add_env_strv;
> + gvir_sandbox_config_add_env_opts;
> + gvir_sandbox_config_env_get_type;
> + gvir_sandbox_config_has_envs;
> +
> gvir_sandbox_config_mount_add_include;
> gvir_sandbox_config_mount_get_includes;
> gvir_sandbox_config_mount_get_target;
> --
> libvir-list mailing list
> libvir-list at redhat.com
> https://www.redhat.com/mailman/listinfo/libvir-list
More information about the libvir-list
mailing list