esx: split datastorePoolType helper

Move the detection of the type of a vmfs pool out of
esxLookupVMFSStoragePoolType in an own helper. This way it can be used
also in other functions.

Signed-off-by: Pino Toscano <ptoscano@redhat.com>
Reviewed-by: Ján Tomko <jtomko@redhat.com>
This commit is contained in:
Pino Toscano 2019-11-12 14:39:32 +01:00
parent 730a5bcf9f
commit 818bc30a71

View File

@ -54,26 +54,12 @@ verify(VIR_CRYPTO_HASH_SIZE_MD5 == VIR_UUID_BUFLEN);
static int
esxLookupVMFSStoragePoolType(esxVI_Context *ctx, const char *poolName,
int *poolType)
datastorePoolType(esxVI_ObjectContent *datastore, int *poolType)
{
int result = -1;
esxVI_String *propertyNameList = NULL;
esxVI_ObjectContent *datastore = NULL;
esxVI_DynamicProperty *dynamicProperty = NULL;
esxVI_DatastoreInfo *datastoreInfo = NULL;
if (esxVI_String_AppendValueToList(&propertyNameList, "info") < 0 ||
esxVI_LookupDatastoreByName(ctx, poolName, propertyNameList, &datastore,
esxVI_Occurrence_OptionalItem) < 0) {
goto cleanup;
}
if (!datastore) {
/* Not found, let the base storage driver handle error reporting */
goto cleanup;
}
for (dynamicProperty = datastore->propSet; dynamicProperty;
dynamicProperty = dynamicProperty->_next) {
if (STREQ(dynamicProperty->name, "info")) {
@ -100,10 +86,41 @@ esxLookupVMFSStoragePoolType(esxVI_Context *ctx, const char *poolName,
result = 0;
cleanup:
esxVI_DatastoreInfo_Free(&datastoreInfo);
return result;
}
static int
esxLookupVMFSStoragePoolType(esxVI_Context *ctx, const char *poolName,
int *poolType)
{
int result = -1;
esxVI_String *propertyNameList = NULL;
esxVI_ObjectContent *datastore = NULL;
if (esxVI_String_AppendValueToList(&propertyNameList, "info") < 0 ||
esxVI_LookupDatastoreByName(ctx, poolName, propertyNameList, &datastore,
esxVI_Occurrence_OptionalItem) < 0) {
goto cleanup;
}
if (!datastore) {
/* Not found, let the base storage driver handle error reporting */
goto cleanup;
}
if (datastorePoolType(datastore, poolType) < 0)
goto cleanup;
result = 0;
cleanup:
esxVI_String_Free(&propertyNameList);
esxVI_ObjectContent_Free(&datastore);
esxVI_DatastoreInfo_Free(&datastoreInfo);
return result;
}