The code used to verify credentials via DDF forms for create/edit actions is completely different from the code used after the provider is created.
This inconsistency means it is possible for one to pass and another to fail.
Class-level connect: https://github.com/ManageIQ/manageiq-providers-openstack/blob/master/app/models/manageiq/providers/openstack/manager_mixin.rb#L36-L61
Instance-level connect: https://github.com/ManageIQ/manageiq-providers-openstack/blob/master/app/models/manageiq/providers/openstack/manager_mixin.rb#L186-L188