The functional test for a ControllerRevision [1] is failed due to a "module 'kubernetes.client' has no attribute 'object" error.
[1] https://github.com/openstack/tacker/blob/master/tacker/tests/functional/vnflcm/test_kubernetes.py#L358-L392
The details of tacker logs are as follows.
```
Jan 05 06:53:25.363944 ubuntu-focal-limestone-regionone-0022391378 tacker-conductor[35808]: 2021-01-05 06:53:25.363 ERROR tacker.vnfm.infra_drivers.kubernetes.k8s.translate_outputs [req-70fc6e94-2d25-4fa9-9690-dc2d9812e73d nfv_user nfv] ControllerRevision create failure. Reason=module 'kubernetes.client' has no attribute 'object'
Jan 05 06:53:25.364704 ubuntu-focal-limestone-regionone-0022391378 tacker-conductor[35808]: 2021-01-05 06:53:25.364 ERROR tacker.vnflcm.vnflcm_driver [req-70fc6e94-2d25-4fa9-9690-dc2d9812e73d nfv_user nfv] Unable to instantiate vnf instance 1b56aa3e-1495-4bd4-a080-eda8ead2007f due to error : Failed to init resource.: tacker.common.exceptions.InitApiFalse: Failed to init resource.
Jan 05 06:53:25.366124 ubuntu-focal-limestone-regionone-0022391378 tacker-conductor[35808]: 2021-01-05 06:53:25.365 ERROR root [req-70fc6e94-2d25-4fa9-9690-dc2d9812e73d nfv_user nfv] Original exception being dropped: ['
Traceback (most recent call last):
File "/opt/stack/tacker/tacker/vnfm/infra_drivers/kubernetes/k8s/translate_outputs.py", line 303, in get_k8s_objs_from_yaml
k8s_obj[\'object\'] = self._create_k8s_object(
File "/opt/stack/tacker/tacker/vnfm/infra_drivers/kubernetes/k8s/translate_outputs.py", line 283, in _create_k8s_object
self._init_k8s_obj(k8s_obj, file_content_dict, must_param)
File "/opt/stack/tacker/tacker/vnfm/infra_drivers/kubernetes/k8s/translate_outputs.py", line 452, in _init_k8s_obj
rely_obj = eval(\'client.\' + obj_name + \'()\')
File "<string>", line 1, in <module>
', "AttributeError: module 'kubernetes.client' has no attribute 'object'", '
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "/opt/stack/tacker/tacker/vnflcm/vnflcm_driver.py", line 341, in _instantiate_vnf
instance_id = self._vnf_manager.invoke(
File "/opt/stack/tacker/tacker/common/driver_manager.py", line 71, in invoke
return getattr(driver, method_name)(**kwargs)
File "/opt/stack/tacker/tacker/vnfm/infra_drivers/kubernetes/kubernetes_driver.py", line 1279, in instantiate_vnf
k8s_objs = transformer.\\
File "/opt/stack/tacker/tacker/vnfm/infra_drivers/kubernetes/k8s/translate_outputs.py", line 317, in get_k8s_objs_from_yaml
raise exceptions.InitApiFalse(error=msg)
tacker.common.exceptions.InitApiFalse: Failed to init resource.
']: tacker.common.exceptions.VnfInstantiationFailed: Vnf instantiation failed for vnf 1b56aa3e-1495-4bd4-a080-eda8ead2007f, error: Failed to init resource.
```
This issue seems to have occurred due to used the Kubernetes Python Client v12.0.0. ision modules, a 'data' key for openapi_types is setting a 'RuntimeRawExte nsion' resource in v11.0.0, but it is setting a 'object' instead of 'RuntimeRawExte nsion' in v12.0.0. conductor. log.
As below, in V1ControllerRev
The current tacker seems to be assumes that the kubernetes resource is set [1]. so, I think it was outputed "AttributeError: module 'kubernetes.client' has no attribute 'object'" in tacker-
* v11.0.0:
'api_version' : 'str', nsion', * /github. com/kubernetes- client/ python/ blob/v11. 0.0/kubernetes/ client/ models/ v1_controller_ revision. py
-----
openapi_types = {
'data': 'RuntimeRawExte
'kind': 'str',
'metadata': 'V1ObjectMeta',
'revision': 'int'
}
-----
https:/
* v12.0.0:
'api_version' : 'str', /github. com/kubernetes- client/ python/ blob/v12. 0.0/kubernetes/ client/ models/ v1_controller_ revision. py
-----
openapi_types = {
'data': 'object', * The value changed
'kind': 'str',
'metadata': 'V1ObjectMeta',
'revision': 'int'
}
-----
https:/
[1] https:/ /github. com/openstack/ tacker/ blob/master/ tacker/ vnfm/infra_ drivers/ kubernetes/ k8s/translate_ outputs. py#L444