Problem in filter vApp in/vcd/vdc.py
After upgrading to pyvcloud-23.0.0 and vcd_cli-24.0.0 I encountered the following error while adding nic's and updating cores
Traceback (most recent call last):
File "/root/.local/lib/python3.6/site-packages/vcd_cli/vm.py", line 428, in update
vm = _get_vm(ctx, vapp_name, vm_name)
File "/root/.local/lib/python3.6/site-packages/vcd_cli/vm.py", line 380, in _get_vm
vapp = _get_vapp(ctx, vapp_name)
File "/root/.local/lib/python3.6/site-packages/vcd_cli/vm.py", line 375, in _get_vapp
vapp_resource = vdc.get_vapp(vapp_name)
File "/root/.local/lib/python3.6/site-packages/pyvcloud/vcd/vdc.py", line 203, in get_vapp
return self.client.get_resource(self.get_vapp_href(name))
File "/root/.local/lib/python3.6/site-packages/pyvcloud/vcd/vdc.py", line 180, in get_vapp_href
records = list(q1.execute())
File "/root/.local/lib/python3.6/site-packages/pyvcloud/vcd/client.py", line 1895, in execute
return self._iterator(self._client.get_resource(query_uri))
File "/root/.local/lib/python3.6/site-packages/pyvcloud/vcd/client.py", line 1455, in get_resource
extra_headers=extra_headers)
File "/root/.local/lib/python3.6/site-packages/pyvcloud/vcd/client.py", line 1171, in _do_request
_objectify_response(response, objectify_results))
File "/root/.local/lib/python3.6/site-packages/pyvcloud/vcd/client.py", line 690, in _objectify_response
return objectify.fromstring(response.content)
File "src/lxml/objectify.pyx", line 1808, in lxml.objectify.fromstring
File "src/lxml/etree.pyx", line 3234, in lxml.etree.fromstring
File "src/lxml/parser.pxi", line 1876, in lxml.etree._parseMemoryDocument
File "src/lxml/parser.pxi", line 1764, in lxml.etree._parseDoc
File "src/lxml/parser.pxi", line 1127, in lxml.etree._BaseParser._parseDoc
File "src/lxml/parser.pxi", line 601, in lxml.etree._ParserContext._handleParseResultDoc
File "src/lxml/parser.pxi", line 711, in lxml.etree._handleParseResult
File "src/lxml/parser.pxi", line 640, in lxml.etree._raiseParseError
File "
Commands used:
- vcd vm add-nic yourvAppname yourVMname --adapter-type VMXNET3 --primary --connect --network VS-infra --ip-address-mode MANUAL --ip-address '172.17.1.15'
- vcd vm update yourvAppname yourVMname- --cpu 2 --cores 1
I was able to track down the error to the commit "Add support to escape special characters in query filter for api v35.…" by rocknes committed on Oct 1, 2020.
The problem was solved after changing the following statement in /vcd/vdc.py on line 170: vdc_filter = 'vdc==%s' % urllib.parse.quote(self.href) to vdc_filter = 'vdc==%s' % self.href
I guess the quoting part is not correct: GOOD https://portal.cchs.local/api/query?type=vApp&format=records&page=1&filterEncoded=true&filter=vdc%3D%3Dhttps%3A//portal.cchs.local/api/vdc/ebbaecaa-c310-40e5-a4ae-b1c315e42a1b%3Bname%3D%3DVS-infra
ERROR https://portal.cchs.local/api/query?type=vApp&format=records&page=1&filterEncoded=true&filter=vdc%3D%3Dhttps%253A//portal.cchs.local/api/vdc/ebbaecaa-c310-40e5-a4ae-b1c315e42a1b%3Bname%3D%3DVS-infra
vcd system info property value
Description 10.1.1.16282995 Tue May 26 08:42:15 CEST 2020 Link OrganizationReferences RightReferences RoleReferences name VMware vCloud Director