[libvirt] [PATCH] ESX: Fallback to the preliminary name if the datastore cannot be found.
Daniel P. Berrange
berrange at redhat.com
Wed Oct 28 22:52:10 UTC 2009
On Wed, Oct 28, 2009 at 09:07:55PM +0100, Matthias Bolte wrote:
> This allows to use domain-xml-from-native with VMX files that reference
> unavailable datastores.
>
> * src/esx/esx_vmx.c: fallback to the preliminary name if the datastore
> cannot be found
> ---
> src/esx/esx_vmx.c | 43 +++++++++++++++++++++++--------------------
> 1 files changed, 23 insertions(+), 20 deletions(-)
>
> diff --git a/src/esx/esx_vmx.c b/src/esx/esx_vmx.c
> index 8e2bdec..a9ff1b4 100644
> --- a/src/esx/esx_vmx.c
> +++ b/src/esx/esx_vmx.c
> @@ -606,34 +606,37 @@ esxVMX_AbsolutePathToDatastoreRelatedPath(virConnectPtr conn,
> if (ctx != NULL) {
> if (esxVI_LookupDatastoreByName(conn, ctx, preliminaryDatastoreName,
> NULL, &datastore,
> - esxVI_Occurence_RequiredItem) < 0) {
> + esxVI_Occurence_OptionalItem) < 0) {
> goto failure;
> }
>
> - for (dynamicProperty = datastore->propSet; dynamicProperty != NULL;
> - dynamicProperty = dynamicProperty->_next) {
> - if (STREQ(dynamicProperty->name, "summary.accessible")) {
> - /* Ignore it */
> - } else if (STREQ(dynamicProperty->name, "summary.name")) {
> - if (esxVI_AnyType_ExpectType(conn, dynamicProperty->val,
> - esxVI_Type_String) < 0) {
> - goto failure;
> + if (datastore != NULL) {
> + for (dynamicProperty = datastore->propSet; dynamicProperty != NULL;
> + dynamicProperty = dynamicProperty->_next) {
> + if (STREQ(dynamicProperty->name, "summary.accessible")) {
> + /* Ignore it */
> + } else if (STREQ(dynamicProperty->name, "summary.name")) {
> + if (esxVI_AnyType_ExpectType(conn, dynamicProperty->val,
> + esxVI_Type_String) < 0) {
> + goto failure;
> + }
> +
> + datastoreName = dynamicProperty->val->string;
> + break;
> + } else if (STREQ(dynamicProperty->name, "summary.url")) {
> + /* Ignore it */
> + } else {
> + VIR_WARN("Unexpected '%s' property", dynamicProperty->name);
> }
> -
> - datastoreName = dynamicProperty->val->string;
> - break;
> - } else if (STREQ(dynamicProperty->name, "summary.url")) {
> - /* Ignore it */
> - } else {
> - VIR_WARN("Unexpected '%s' property", dynamicProperty->name);
> }
> }
>
> if (datastoreName == NULL) {
> - ESX_ERROR(conn, VIR_ERR_INTERNAL_ERROR,
> - "Could not retrieve datastore name for absolute path '%s'",
> - absolutePath);
> - goto failure;
> + VIR_WARN("Could not retrieve datastore name for absolute "
> + "path '%s', falling back to preliminary name '%s'",
> + absolutePath, preliminaryDatastoreName);
> +
> + datastoreName = preliminaryDatastoreName;
> }
> } else {
> datastoreName = preliminaryDatastoreName;
ACK
Daniel
--
|: Red Hat, Engineering, London -o- http://people.redhat.com/berrange/ :|
|: http://libvirt.org -o- http://virt-manager.org -o- http://ovirt.org :|
|: http://autobuild.org -o- http://search.cpan.org/~danberr/ :|
|: GnuPG: 7D3B9505 -o- F3C9 553F A1DA 4AC2 5648 23C1 B3DF F742 7D3B 9505 :|
More information about the libvir-list
mailing list