code: def list_candidate_adapter_ports(self, full_properties=False):
          
          sg_cpc = self.cpc
          adapter_mgr = sg_cpc.adapters
          port_list = []
          port_uris = self.get_property('candidate-adapter-port-uris')
          if port_uris:
              for port_uri in port_uris:
                  m = re.match(r'^(/api/adapters/[^/]*)/.*', port_uri)
  
                  adapter_uri = m.group(1)
                  adapter = adapter_mgr.resource_object(adapter_uri)
  
                  port_mgr = adapter.ports
                  port = port_mgr.resource_object(port_uri)
                  port_list.append(port)
                  if full_properties:
                      port.pull_full_properties()
  
          return port_list
docs: Return the current candidate storage adapter port list of this storage
          group.
  
          The result reflects the actual list of ports used by the CPC, including
          any changes that have been made during discovery. The source for this
          information is the 'candidate-adapter-port-uris' property of the
          storage group object.
  
          Parameters:
  
            full_properties (bool):
              Controls that the full set of resource properties for each returned
              candidate storage adapter port is being retrieved, vs. only the
              following short set: "element-uri", "element-id", "class",
              "parent".
  
              TODO: Verify short list of properties.
  
          Returns:
  
            List of :class:`~zhmcclient.Port` objects representing the
            current candidate storage adapter ports of this storage group.
  
          Raises:
  
            :exc:`~zhmcclient.HTTPError`
            :exc:`~zhmcclient.ParseError`
            :exc:`~zhmcclient.AuthError`
            :exc:`~zhmcclient.ConnectionError`