[Libvirt-cim] [PATCH 1 of 3] Device: rename dom_device to enum_devices and make it configurable
Kaitlin Rupert
kaitlin at linux.vnet.ibm.com
Fri Mar 7 17:54:46 UTC 2008
> +static CMPIStatus _enum_devices(const CMPIBroker *broker,
> + const CMPIObjectPath *reference,
> + const virDomainPtr dom,
> + const uint16_t type,
> + struct inst_list *list)
> +{
> + CMPIStatus s;
> +
> + if (type == CIM_RES_TYPE_ALL) {
> + s = _get_devices(broker,
> + reference,
> + dom,
> + CIM_RES_TYPE_PROC,
> + list);
> + s = _get_devices(broker,
> + reference,
> + dom,
> + CIM_RES_TYPE_MEM,
> + list);
> + s = _get_devices(broker,
> + reference,
> + dom,
> + CIM_RES_TYPE_NET,
> + list);
> + s = _get_devices(broker,
> + reference,
> + dom,
> + CIM_RES_TYPE_DISK,
> + list);
> + }
Would it be better to have a list of all the resource types, and then
call _get_devices() in a loop? This is probably fine as is, and I don't
suspect we'll add more resource types in the future, so it's probably
not worth worrying about.
Thoughts?
> +
> +static CMPIStatus return_enum_devices(const CMPIObjectPath *reference,
> + const CMPIResult *results,
> + int names_only)
> +{
> + CMPIStatus s = {CMPI_RC_OK, NULL};
> struct inst_list list;
>
> if (!provider_is_responsible(_BROKER, reference, &s))
> - return s;
> + goto out;
>
> inst_list_init(&list);
>
> - conn = connect_by_classname(_BROKER, CLASSNAME(reference), &s);
> - if (conn == NULL)
> - return s;
> -
> - if (!dom_list_devices(conn, reference, &list)) {
> - cu_statusf(_BROKER, &s,
> - CMPI_RC_ERR_FAILED,
> - "Failed to list domains");
> - return s;
> - }
> + s = enum_devices(_BROKER, reference, NULL,
> + device_type_from_classname(CLASSNAME(reference)),
> + &list);
> + if (s.rc != CMPI_RC_OK)
> + goto out;
>
> if (list.cur == 0)
> goto out;
Should inst_list_free(&list); go after the out:?
Even if list.cur == 0, we still probably want to set list->list = NULL
to be sure.
--
Kaitlin Rupert
IBM Linux Technology Center
kaitlin at linux.vnet.ibm.com
More information about the Libvirt-cim
mailing list