pyvcloud icon indicating copy to clipboard operation
pyvcloud copied to clipboard

Problem in filter vApp in/vcd/vdc.py

Open fnoorden opened this issue 4 years ago • 0 comments

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 "", line 58 lxml.etree.XMLSyntaxError: AttValue: " or ' expected, line 58, column 39

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

fnoorden avatar Apr 16 '21 09:04 fnoorden