mirror of
https://github.com/ansible-collections/community.general.git
synced 2025-07-23 05:10:22 -07:00
manageiq_provider: don't send top-level null fields on creation (#38448)
* manageiq_provider: method docstrings fixes * manageiq_provider: refactoring step towards DRY `resource` is now same in `edit_provider()` and `create_provider()`, to be extracted to main later. * manageiq_provider: Fix creation of openshift provider Fixes #38331. Sending `api_version` to openshift provider would cause error: "OpenShift api_version cannot be modified" due to https://github.com/ManageIQ/manageiq-providers-kubernetes/blob/gaprindashvili-2/app/models/manageiq/providers/kubernetes/container_manager.rb#L37 In `edit_provider` we `delete_nulls()` on the whole data being sent so `api_version` was omitted if not specified. In `create_provider()` we only did it on endpoints list so `api_version` was always sent - now doing on whole data.
This commit is contained in:
parent
ffee906c54
commit
0c5f03d3f4
1 changed files with 19 additions and 20 deletions
|
@ -694,7 +694,7 @@ class ManageIQProvider(object):
|
||||||
def edit_provider(self, provider, name, provider_type, endpoints, zone_id, provider_region,
|
def edit_provider(self, provider, name, provider_type, endpoints, zone_id, provider_region,
|
||||||
host_default_vnc_port_start, host_default_vnc_port_end,
|
host_default_vnc_port_start, host_default_vnc_port_end,
|
||||||
subscription, project, uid_ems, tenant_mapping_enabled, api_version):
|
subscription, project, uid_ems, tenant_mapping_enabled, api_version):
|
||||||
""" Edit a user from manageiq.
|
""" Edit a provider from manageiq.
|
||||||
|
|
||||||
Returns:
|
Returns:
|
||||||
a short message describing the operation executed.
|
a short message describing the operation executed.
|
||||||
|
@ -737,33 +737,32 @@ class ManageIQProvider(object):
|
||||||
def create_provider(self, name, provider_type, endpoints, zone_id, provider_region,
|
def create_provider(self, name, provider_type, endpoints, zone_id, provider_region,
|
||||||
host_default_vnc_port_start, host_default_vnc_port_end,
|
host_default_vnc_port_start, host_default_vnc_port_end,
|
||||||
subscription, project, uid_ems, tenant_mapping_enabled, api_version):
|
subscription, project, uid_ems, tenant_mapping_enabled, api_version):
|
||||||
""" Creates the user in manageiq.
|
""" Creates the provider in manageiq.
|
||||||
|
|
||||||
Returns:
|
Returns:
|
||||||
the created user id, name, created_on timestamp,
|
a short message describing the operation executed.
|
||||||
updated_on timestamp, userid and current_group_id.
|
|
||||||
"""
|
"""
|
||||||
|
resource = dict(
|
||||||
|
name=name,
|
||||||
|
zone={'id': zone_id},
|
||||||
|
provider_region=provider_region,
|
||||||
|
host_default_vnc_port_start=host_default_vnc_port_start,
|
||||||
|
host_default_vnc_port_end=host_default_vnc_port_end,
|
||||||
|
subscription=subscription,
|
||||||
|
project=project,
|
||||||
|
uid_ems=uid_ems,
|
||||||
|
tenant_mapping_enabled=tenant_mapping_enabled,
|
||||||
|
api_version=api_version,
|
||||||
|
connection_configurations=endpoints,
|
||||||
|
)
|
||||||
|
|
||||||
# clean nulls, we do not send nulls to the api
|
# clean nulls, we do not send nulls to the api
|
||||||
endpoints = delete_nulls(endpoints)
|
resource = delete_nulls(resource)
|
||||||
|
|
||||||
# try to create a new provider
|
# try to create a new provider
|
||||||
try:
|
try:
|
||||||
url = '%s/providers' % (self.api_url)
|
url = '%s/providers' % (self.api_url)
|
||||||
result = self.client.post(
|
result = self.client.post(url, type=supported_providers()[provider_type]['class_name'], **resource)
|
||||||
url,
|
|
||||||
name=name,
|
|
||||||
type=supported_providers()[provider_type]['class_name'],
|
|
||||||
zone={'id': zone_id},
|
|
||||||
provider_region=provider_region,
|
|
||||||
host_default_vnc_port_start=host_default_vnc_port_start,
|
|
||||||
host_default_vnc_port_end=host_default_vnc_port_end,
|
|
||||||
subscription=subscription,
|
|
||||||
project=project,
|
|
||||||
uid_ems=uid_ems,
|
|
||||||
tenant_mapping_enabled=tenant_mapping_enabled,
|
|
||||||
api_version=api_version,
|
|
||||||
connection_configurations=endpoints,
|
|
||||||
)
|
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
self.module.fail_json(msg="failed to create provider %s: %s" % (name, str(e)))
|
self.module.fail_json(msg="failed to create provider %s: %s" % (name, str(e)))
|
||||||
|
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue