We’ve finally completed this migration.  I’m not exactly sure, but I believe 
the missing step was to manually run "rescan-scsi-bus.sh —forcerescan” on each 
ovirt server to make sure they all saw the new LUN.  This allowed the new 
hosted_engine storage domain to activate and the setup to complete?

Thanks,
Devin

> On Sep 11, 2024, at 9:57 AM, Devin A. Bougie <[email protected]> wrote:
>
> Hello,
>
> We are attempting to move a hosted engine from an NFS to an iSCSI storage 
> domain, following the normal backup / restore procedure.
>
> With a little intervention in the new hosted engine VM, everything seems to 
> be working with the new engine and the process gets to the point of trying to 
> create the new iSCSI hosted_storage domain.   At this point, it fails with 
> "Storage domain cannot be reached. Please ensure it is accessible from the 
> host(s).”
>
> The host itself does see the storage, and everything looks fine using 
> iscsiadm and multipath commands.  However, if I look at the new 
> hosted_storage domain in the new engine, it’s stuck “unattached” and the 
> “hosted-engine --deploy --restore-from-file …” command loops at the "Please 
> specify the storage you would like to use” step.
>
> Please see below for an excerpt of the output and logs, and let me know what 
> additional information I can provide.
>
> Many thanks,
> Devin
>
> Here’s the output from the  “hosted-engine --deploy --restore-from-file …” 
> command.
> ———
> [ INFO  ] TASK [ovirt.ovirt.hosted_engine_setup : iSCSI login]
> [ INFO  ] changed: [localhost]
> [ INFO  ] TASK [ovirt.ovirt.hosted_engine_setup : Get iSCSI LUNs]
> [ INFO  ] ok: [localhost]
>          The following luns have been found on the requested target:
>                  [1]     mpathm  1024.0GiB       IFT     DS 3000 Series
>                          status: free, paths: 8 active
>                    Please select the destination LUN (1) [1]:
> [ INFO  ] iSCSI discard after delete is disabled
> [ INFO  ] Creating Storage Domain
> [ INFO  ] TASK [ovirt.ovirt.hosted_engine_setup : Execute just a specific set 
> of steps]
> [ INFO  ] ok: [localhost]
> [ INFO  ] TASK [ovirt.ovirt.hosted_engine_setup : Force facts gathering]
> [ INFO  ] ok: [localhost]
> [ INFO  ] TASK [ovirt.ovirt.hosted_engine_setup : Wait for the storage 
> interface to be up]
> [ INFO  ] skipping: [localhost]
> [ INFO  ] TASK [ovirt.ovirt.hosted_engine_setup : Check local VM dir stat]
> [ INFO  ] ok: [localhost]
> [ INFO  ] TASK [ovirt.ovirt.hosted_engine_setup : Enforce local VM dir 
> existence]
> [ INFO  ] skipping: [localhost]
> [ INFO  ] TASK [ovirt.ovirt.hosted_engine_setup : include_tasks]
> [ INFO  ] ok: [localhost]
> [ INFO  ] TASK [ovirt.ovirt.hosted_engine_setup : Obtain SSO token using 
> username/password credentials]
> [ INFO  ] ok: [localhost]
> [ INFO  ] TASK [ovirt.ovirt.hosted_engine_setup : Fetch host facts]
> [ INFO  ] ok: [localhost]
> [ INFO  ] TASK [ovirt.ovirt.hosted_engine_setup : Fetch cluster ID]
> [ INFO  ] ok: [localhost]
> [ INFO  ] TASK [ovirt.ovirt.hosted_engine_setup : Fetch cluster facts]
> [ INFO  ] ok: [localhost]
> [ INFO  ] TASK [ovirt.ovirt.hosted_engine_setup : Fetch Datacenter facts]
> [ INFO  ] ok: [localhost]
> [ INFO  ] TASK [ovirt.ovirt.hosted_engine_setup : Fetch Datacenter ID]
> [ INFO  ] ok: [localhost]
> [ INFO  ] TASK [ovirt.ovirt.hosted_engine_setup : Fetch Datacenter name]
> [ INFO  ] ok: [localhost]
> [ INFO  ] TASK [ovirt.ovirt.hosted_engine_setup : Fetch cluster name]
> [ INFO  ] ok: [localhost]
> [ INFO  ] TASK [ovirt.ovirt.hosted_engine_setup : Fetch cluster version]
> [ INFO  ] ok: [localhost]
> [ INFO  ] TASK [ovirt.ovirt.hosted_engine_setup : Enforce cluster major 
> version]
> [ INFO  ] skipping: [localhost]
> [ INFO  ] TASK [ovirt.ovirt.hosted_engine_setup : Enforce cluster minor 
> version]
> [ INFO  ] skipping: [localhost]
> [ INFO  ] TASK [ovirt.ovirt.hosted_engine_setup : Set storage_format]
> [ INFO  ] ok: [localhost]
> [ INFO  ] TASK [ovirt.ovirt.hosted_engine_setup : Add NFS storage domain]
> [ INFO  ] skipping: [localhost]
> [ INFO  ] TASK [ovirt.ovirt.hosted_engine_setup : Add glusterfs storage 
> domain]
> [ INFO  ] skipping: [localhost]
> [ INFO  ] TASK [ovirt.ovirt.hosted_engine_setup : Add iSCSI storage domain]
> [ INFO  ] changed: [localhost]
> [ INFO  ] TASK [ovirt.ovirt.hosted_engine_setup : Add Fibre Channel storage 
> domain]
> [ INFO  ] skipping: [localhost]
> [ INFO  ] TASK [ovirt.ovirt.hosted_engine_setup : Get storage domain details]
> [ INFO  ] ok: [localhost]
> [ INFO  ] TASK [ovirt.ovirt.hosted_engine_setup : Find the appliance OVF]
> [ INFO  ] ok: [localhost]
> [ INFO  ] TASK [ovirt.ovirt.hosted_engine_setup : Get ovf data]
> [ INFO  ] ok: [localhost]
> [ INFO  ] TASK [ovirt.ovirt.hosted_engine_setup : Get disk size from ovf data]
> [ INFO  ] ok: [localhost]
> [ INFO  ] TASK [ovirt.ovirt.hosted_engine_setup : Get required size]
> [ INFO  ] ok: [localhost]
> [ INFO  ] TASK [ovirt.ovirt.hosted_engine_setup : Remove unsuitable storage 
> domain]
> [ INFO  ] skipping: [localhost]
> [ INFO  ] TASK [ovirt.ovirt.hosted_engine_setup : Check storage domain free 
> space]
> [ INFO  ] skipping: [localhost]
> [ INFO  ] TASK [ovirt.ovirt.hosted_engine_setup : Activate storage domain]
> [ ERROR ] ovirtsdk4.Error: Fault reason is "Operation Failed". Fault detail 
> is "[Storage domain cannot be reached. Please ensure it is accessible from 
> the host(s).]". HTTP response code is 400.
> [ ERROR ] fatal: [localhost]: FAILED! => {"changed": false, "msg": "Fault 
> reason is \"Operation Failed\". Fault detail is \"[Storage domain cannot be 
> reached. Please ensure it is accessible from the host(s).]\". HTTP response 
> code is 400.”}
> ———
>
> Here’s an excerpt from the 
> "ovirt-hosted-engine-setup-ansible-create_storage_domain-20240911081524-c7yrkf.log”:
> ———
> 2024-09-11 08:16:12,354-0400 INFO ansible task start {'status': 'OK', 
> 'ansible_type': 'task', 'ansible_playbook': 
> '/usr/share/ovirt-hosted-engine-setup/he_ansible/trigger_role.yml', 
> 'ansible_task': 'ovirt.ovirt.hosted_engine_setup : Activate storage domain'}
> 2024-09-11 08:16:12,354-0400 DEBUG ansible on_any args TASK: 
> ovirt.ovirt.hosted_engine_setup : Activate storage domain  kwargs 
> is_conditional:False  2024-09-11 08:16:12,355-0400 DEBUG ansible on_any args 
> localhost TASK: ovirt.ovirt.hosted_engine_setup : Activate storage domain  
> kwargs  2024-09-11 08:16:25,550-0400 DEBUG var changed: host "localhost" var 
> "ansible_play_hosts" type "<class 'list'>" value: "[]"
> 2024-09-11 08:16:25,551-0400 DEBUG var changed: host "localhost" var 
> "ansible_play_batch" type "<class 'list'>" value: "[]"
> 2024-09-11 08:16:25,551-0400 DEBUG var changed: host "localhost" var 
> "play_hosts" type "<class 'list'>" value: "[]"
> 2024-09-11 08:16:25,551-0400 ERROR ansible failed {
>    "ansible_host": "localhost",
>    "ansible_playbook": 
> "/usr/share/ovirt-hosted-engine-setup/he_ansible/trigger_role.yml",
>    "ansible_result": {
>        "_ansible_no_log": false,
>        "changed": false,
>        "exception": "Traceback (most recent call last):\n  File 
> \"/tmp/ansible_ovirt_storage_domain_payload_cne75az3/ansible_ovirt_storage_domain_payload.zip/ansible_collections/ovirt/ovirt/plugins/modules/ovirt_storage_domain.py\",
>  line 811, in main\n  File 
> \"/tmp/ansible_ovirt_storage_domain_payload_cne75az3/ansible_ovirt_storage_domain_payload.zip/ansible_collections/ovirt/ovirt/plugins/modules/ovirt_storage_domain.py\",
>  line 660, in post_create_check\n  File 
> \"/usr/lib64/python3.9/site-packages/ovirtsdk4/services.py\", line 3647, in 
> add\n    return self._internal_add(storage_domain, headers, query, wait)\n  
> File \"/usr/lib64/python3.9/site-packages/ovirtsdk4/service.py\", line 232, 
> in _internal_add\n    return future.wait() if wait else future\n  File 
> \"/usr/lib64/python3.9/site-packages/ovirtsdk4/service.py\", line 55, in 
> wait\n    return self._code(response)\n  File 
> \"/usr/lib64/python3.9/site-packages/ovirtsdk4/service.py\", line 229, in 
> callback\n    self._check_fault(response)\n  File 
> \"/usr/lib64/python3.9/site-packages/ovirtsdk4/service.py\", line 132, in 
> _check_fault\n    self._raise_error(response, body)\n  File 
> \"/usr/lib64/python3.9/site-packages/ovirtsdk4/service.py\", line 118, in 
> _raise_error\n    raise error\novirtsdk4.Error: Fault reason is \"Operation 
> Failed\". Fault detail is \"[Storage domain cannot be reached. Please ensure 
> it is accessible from the host(s).]\". HTTP response code is 400.\n",
>        "invocation": {
>            "module_args": {
>                "backup": null,
>                "comment": null,
>                "critical_space_action_blocker": null,
>                "data_center": "Default",
>                "description": null,
>                "destroy": null,
>                "discard_after_delete": null,
>                "domain_function": "data",
>                "fcp": null,
>                "fetch_nested": false,
>                "format": null,
>                "glusterfs": null,
>                "host": "lnxvirt01-p55.classe.cornell.edu",
>                "id": null,
>                "iscsi": null,
>                "localfs": null,
>                "managed_block_storage": null,
>                "name": "hosted_storage",
>                "nested_attributes": [],
>                "nfs": null,
>                "poll_interval": 3,
>                "posixfs": null,
>                "state": "present",
>                "storage_format": null,
>                "timeout": 180,
>                "wait": true,
>                "warning_low_space": null,
>                "wipe_after_delete": null
>            }
>        },
>        "msg": "Fault reason is \"Operation Failed\". Fault detail is 
> \"[Storage domain cannot be reached. Please ensure it is accessible from the 
> host(s).]\". HTTP response code is 400."
>    },
>    "ansible_task": "Activate storage domain",
>    "ansible_type": "task",
>    "status": "FAILED",
>    "task_duration": 13
> }
> 2024-09-11 08:16:25,551-0400 DEBUG ansible on_any args 
> <ansible.executor.task_result.TaskResult object at 0x7fac823de1f0>  kwargs 
> ignore_errors:None  2024-09-11 08:16:25,552-0400 INFO ansible stats {
>    "ansible_playbook": 
> "/usr/share/ovirt-hosted-engine-setup/he_ansible/trigger_role.yml",
>    "ansible_playbook_duration": "00:59 Minutes",
>    "ansible_result": "type: <class 'dict'>\nstr: {'localhost': {'ok': 20, 
> 'failures': 1, 'unreachable': 0, 'changed': 1, 'skipped': 9, 'rescued': 0, 
> 'ignored': 0}}",
>    "ansible_type": "finish",
>    "status": "FAILED"
> }
> 2024-09-11 08:16:25,552-0400 INFO SUMMARY:
> Duration        Task Name
> --------        --------
> [ < 1 sec ]     Execute just a specific set of steps
> [  00:03  ]     Force facts gathering
> [  00:01  ]     Check local VM dir stat
> [  00:01  ]     Obtain SSO token using username/password credentials
> [  00:01  ]     Fetch host facts
> [ < 1 sec ]     Fetch cluster ID
> [  00:01  ]     Fetch cluster facts
> [  00:01  ]     Fetch Datacenter facts
> [ < 1 sec ]     Fetch Datacenter ID
> [ < 1 sec ]     Fetch Datacenter name
> [ < 1 sec ]     Fetch cluster name
> [ < 1 sec ]     Fetch cluster version
> [ < 1 sec ]     Set storage_format
> [  00:15  ]     Add iSCSI storage domain
> [  00:01  ]     Get storage domain details
> [  00:01  ]     Find the appliance OVF
> [  00:01  ]     Get ovf data
> [ < 1 sec ]     Get disk size from ovf data
> [ < 1 sec ]     Get required size
> [ FAILED  ]     Activate storage domain
> 2024-09-11 08:16:25,553-0400 DEBUG ansible on_any args 
> <ansible.executor.stats.AggregateStats object at 0x7fac83c8a700>  kwargs
> ———
>
> And here’s from the "ovirt-hosted-engine-setup-20240910222757-5ru4mo.log”:
> ———
> 2024-09-11 08:16:12,144-0400 INFO 
> otopi.ovirt_hosted_engine_setup.ansible_utils 
> ansible_utils._process_output:115 TASK [ovirt.ovirt.hosted_engine_setup : 
> Activate storage domain]
> 2024-09-11 08:16:25,264-0400 DEBUG 
> otopi.ovirt_hosted_engine_setup.ansible_utils 
> ansible_utils._process_output:109 {'exception': 'Traceback (most recent call 
> last):\n  File 
> "/tmp/ansible_ovirt_storage_domain_payload_cne75az3/ansible_ovirt_storage_domain_payload.zip/ansible_collections/ovirt/ovirt/plugins/modules/ovirt_storage_domain.py",
>  line 811, in main\n  File 
> "/tmp/ansible_ovirt_storage_domain_payload_cne75az3/ansible_ovirt_storage_domain_payload.zip/ansible_collections/ovirt/ovirt/plugins/modules/ovirt_storage_domain.py",
>  line 660, in post_create_check\n  File 
> "/usr/lib64/python3.9/site-packages/ovirtsdk4/services.py", line 3647, in 
> add\n    return self._internal_add(storage_domain, headers, query, wait)\n  
> File "/usr/lib64/python3.9/site-packages/ovirtsdk4/service.py", line 232, in 
> _internal_add\n    return future.wait() if wait else future\n  File 
> "/usr/lib64/python3.9/site-packages/ovirtsdk4/service.py", line 55, in wait\n 
>    return self._code(response)\n  File 
> "/usr/lib64/python3.9/site-packages/ovirtsdk4/service.py", line 229, in 
> callback\n    self._check_fault(response)\n  File 
> "/usr/lib64/python3.9/site-packages/ovirtsdk4/service.py", line 132, in 
> _check_fault\n    self._raise_error(response, body)\n  File 
> "/usr/lib64/python3.9/site-packages/ovirtsdk4/service.py", line 118, in 
> _raise_error\n    raise error\novirtsdk4.Error: Fault reason is "Operation 
> Failed". Fault detail is "[Storage domain cannot be reached. Please ensure it 
> is accessible from the host(s).]". HTTP response code is 400.\n', 'msg': 
> 'Fault reason is "Operation Failed". Fault detail is "[Storage domain cannot 
> be reached. Please ensure it is accessible from the host(s).]". HTTP response 
> code is 400.', 'invocation': {'module_args': {'host': 
> 'lnxvirt01-p55.classe.cornell.edu', 'data_center': 'Default', 'name': 
> 'hosted_storage', 'wait': True, 'state': 'present', 'timeout': 180, 
> 'poll_interval': 3, 'fetch_nested': False, 'nested_attributes': [], 
> 'domain_function': 'data', 'id': None, 'description': None, 'comment': None, 
> 'localfs': None, 'nfs': None, 'iscsi': None, 'managed_block_storage': None, 
> 'posixfs': None, 'glusterfs': None, 'fcp': None, 'wipe_after_delete': None, 
> 'backup': None, 'critical_space_action_blocker': None, 'warning_low_space': 
> None, 'destroy': None, 'format': None, 'discard_after_delete': None, 
> 'storage_format': None}}, '_ansible_no_log': False, 'changed': False}
> 2024-09-11 08:16:25,364-0400 ERROR 
> otopi.ovirt_hosted_engine_setup.ansible_utils 
> ansible_utils._process_output:113 ovirtsdk4.Error: Fault reason is "Operation 
> Failed". Fault detail is "[Storage domain cannot be reached. Please ensure it 
> is accessible from the host(s).]". HTTP response code is 400.
> 2024-09-11 08:16:25,464-0400 ERROR 
> otopi.ovirt_hosted_engine_setup.ansible_utils 
> ansible_utils._process_output:113 fatal: [localhost]: FAILED! => {"changed": 
> false, "msg": "Fault reason is \"Operation Failed\". Fault detail is 
> \"[Storage domain cannot be reached. Please ensure it is accessible from the 
> host(s).]\". HTTP response code is 400."}
> 2024-09-11 08:16:25,765-0400 DEBUG 
> otopi.ovirt_hosted_engine_setup.ansible_utils 
> ansible_utils._process_output:109 PLAY RECAP [localhost] : ok: 20 changed: 1 
> unreachable: 0 skipped: 9 failed: 1
> 2024-09-11 08:16:25,866-0400 DEBUG 
> otopi.ovirt_hosted_engine_setup.ansible_utils ansible_utils.run:226 
> ansible-playbook rc: 2
> 2024-09-11 08:16:25,866-0400 DEBUG 
> otopi.ovirt_hosted_engine_setup.ansible_utils ansible_utils.run:233 
> ansible-playbook stdout:
> 2024-09-11 08:16:25,867-0400 DEBUG 
> otopi.ovirt_hosted_engine_setup.ansible_utils ansible_utils.run:236 
> ansible-playbook stderr:
> 2024-09-11 08:16:25,867-0400 DEBUG otopi.plugins.otopi.dialog.human 
> human.queryString:174 query OVEHOSTED_STORAGE_DOMAIN_TYPE
> 2024-09-11 08:16:25,868-0400 DEBUG otopi.plugins.otopi.dialog.human 
> dialog.__logString:204 DIALOG:SEND                 Please specify the storage 
> you would like to use (glusterfs, iscsi, fc, nfs)[nfs]:
> ———
>
> _______________________________________________
> Users mailing list -- [email protected]
> To unsubscribe send an email to [email protected]
> Privacy Statement: https://www.ovirt.org/privacy-policy.html
> oVirt Code of Conduct: 
> https://www.ovirt.org/community/about/community-guidelines/
> List Archives: 
> https://lists.ovirt.org/archives/list/[email protected]/message/J2OHANJ2NNM7T5U4W62DKS6NTSCGOTJ4/

_______________________________________________
Users mailing list -- [email protected]
To unsubscribe send an email to [email protected]
Privacy Statement: https://www.ovirt.org/privacy-policy.html
oVirt Code of Conduct: 
https://www.ovirt.org/community/about/community-guidelines/
List Archives: 
https://lists.ovirt.org/archives/list/[email protected]/message/4S62OBX3GVKYJYLDWFYMDWKCEXNUCMFL/

Reply via email to