[libvirt] [libvirt-designer][PATCH v2 4/4] Implement resources setting
Christophe Fergeau
cfergeau at redhat.com
Fri Sep 14 15:57:26 UTC 2012
On Thu, Sep 13, 2012 at 04:04:31PM +0200, Michal Privoznik wrote:
> Users can choose between minimum and recommended values
> for VCPU count and amount of RAM. Moreover, recommended
> values should inherit defaults from the minimum.
> ---
> examples/virtxml.c | 12 ++++
> libvirt-designer/libvirt-designer-domain.c | 91 ++++++++++++++++++++++++++++
> libvirt-designer/libvirt-designer-domain.h | 8 +++
> libvirt-designer/libvirt-designer.sym | 1 +
> 4 files changed, 112 insertions(+), 0 deletions(-)
>
> diff --git a/examples/virtxml.c b/examples/virtxml.c
> index cfe25ff..2908667 100644
> --- a/examples/virtxml.c
> +++ b/examples/virtxml.c
> @@ -496,6 +496,7 @@ main(int argc, char *argv[])
> static char *platform_str = NULL;
> static char *arch_str = NULL;
> static char *connect_uri = NULL;
> + static char *resources = NULL;
> GOptionContext *context;
>
> static GOptionEntry entries[] =
> @@ -516,6 +517,8 @@ main(int argc, char *argv[])
> "add disk to domain with PATH being source and FORMAT its format", "PATH[,FORMAT]"},
> {"interface", 'i', 0, G_OPTION_ARG_CALLBACK, add_iface_str,
> "add interface with NETWORK source. Possible ARGs: mac, link={up,down}", "NETWORK[,ARG=VAL]"},
> + {"resources", 'r', 0, G_OPTION_ARG_STRING, &resources,
> + "Set minimal or recommended values for cpu count and RAM amount", "{minimal|recommended}"},
> {NULL}
> };
>
> @@ -572,6 +575,15 @@ main(int argc, char *argv[])
> CHECK_ERROR;
> }
>
> + if (resources) {
> + gvir_designer_domain_setup_resources(domain, resources, &error);
> + CHECK_ERROR;
> + } else {
> + gvir_designer_domain_setup_resources(domain,
> + GVIR_DESIGNER_DOMAIN_RESOURCES_RECOMMENDED,
> + NULL);
> + }
> +
> g_list_foreach(disk_str_list, add_disk, domain);
>
> g_list_foreach(iface_str_list, add_iface, domain);
> diff --git a/libvirt-designer/libvirt-designer-domain.c b/libvirt-designer/libvirt-designer-domain.c
> index 194fdf5..de4582c 100644
> --- a/libvirt-designer/libvirt-designer-domain.c
> +++ b/libvirt-designer/libvirt-designer-domain.c
> @@ -1033,3 +1033,94 @@ gvir_designer_domain_add_interface_network(GVirDesignerDomain *design,
>
> return ret;
> }
> +
> +
> +static void
> +gvir_designer_domain_get_resources(OsinfoResourcesList *res_list,
> + const gchar *design_arch,
> + gint *design_n_cpus,
> + gint64 *design_ram)
> +{
> + GList *elem_list, *elem_iterator;
> +
> + if (!res_list)
> + return;
> +
> + elem_list = osinfo_list_get_elements(OSINFO_LIST(res_list));
> + for (elem_iterator = elem_list; elem_iterator; elem_iterator = elem_iterator->next) {
> + OsinfoResources *res = OSINFO_RESOURCES(elem_iterator->data);
> + const char *arch = osinfo_resources_get_architecture(res);
> + gint n_cpus = -1;
> + gint64 ram = -1;
> +
> + if (g_str_equal(arch, "all") ||
> + g_str_equal(arch, design_arch)) {
> + n_cpus = osinfo_resources_get_n_cpus(res);
> + ram = osinfo_resources_get_ram(res);
extra space after '='
> + if (n_cpus > 0) {
> + *design_n_cpus = n_cpus;
> + }
> + if (ram > 0) {
> + /* libosinfo returns RAM in B, libvirt-gconfig takes it in KB */
> + *design_ram = ram / 1024;
> + }
> + break;
> + }
> + }
> +}
> +
> +
> +/**
> + * gvir_designer_domain_setup_resources:
> + * @design: (transfer none): the domain designer intance
instance
> + * @req: (transfer none): requirements to set
> + *
> + * Set minimal or recommended resources on @design.
> + *
> + * Returns: (transfer none): TRUE when successfully set, FALSE otherwise.
> + */
> +gboolean gvir_designer_domain_setup_resources(GVirDesignerDomain *design,
> + const gchar *req,
I think an enum would be better than a string based API. If we go with a
string, can you explicitly mention the valid values in the api doc?
Christophe
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 198 bytes
Desc: not available
URL: <http://listman.redhat.com/archives/libvir-list/attachments/20120914/a1d4ccbb/attachment-0001.sig>
More information about the libvir-list
mailing list