Skip to content

create_server module reports "Volume is not available" as fatal error after successful instance creation (false positive) #260

Open

Description

@JanKazWasilewski

When migrating workloads using the boot_from_cinder path with import_workloads_boot_from_cinder: true, the create_server module consistently reports the following fatal error immediately after successfully creating the instance:

TASK [os_migrate.vmware_migration_kit.import_workloads : Create instance] **********************************************************************************************************************************************************************************************************************
fatal: [192.168.210.243]: FAILED! => {"changed": false, "id": null, "msg": "Volume is not available"}

What actually happens:
The instance is created successfully, boots correctly, and all volumes and NICs are attached as expected. The volume transitions from available to in-use — which is the correct and expected Cinder state for a boot volume attached to a running instance.

Root cause:
After submitting the boot request to Nova, the module performs a post-creation check on the Cinder volume status and expects it to remain available. However, by the time the check executes, Nova has already attached the volume to the instance, transitioning its state to in-use. The module treats this valid transition as a failure condition.

Why this is a problem:
The module returns "id": null despite the instance existing in Nova with ACTIVE status
Any downstream tasks relying on instance_output.id will fail
Operators unfamiliar with the codebase will treat this as a real failure and attempt unnecessary troubleshooting or re-runs
The create_server module is a compiled binary (module_dispatcher), making it impossible to patch at the collection level without a fix from maintainers

Expected behaviour:
The module should treat a volume in in-use state as a successful outcome when the instance is in ACTIVE state, and return the correct id of the created instance.

Workaround:
Apply failed_when to suppress the false positive:

failed_when:
  - instance_output.failed | default(false) | bool
  - "'Volume is not available' not in (instance_output.msg | default(''))"

Environment:
Collection: os_migrate.vmware_migration_kit 2.2.7
Ansible: ansible-core 2.18
OpenStack: Gazpacho (Kolla-Ansible)
Migration path: nbdkit + boot_from_cinder

Activity

  1. matbu commented on Oct 20, 2026

    @matbu
    Contributor

    This PR should address this issue:
    #282

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions