code: def post(method, hmc, uri, uri_parms, body, logon_required,
               wait_for_completion):
          
          assert wait_for_completion is True  # async not supported yet
          partition_uri = re.sub('/hbas$', '', uri)
          try:
              partition = hmc.lookup_by_uri(partition_uri)
          except KeyError:
              raise InvalidResourceError(method, uri)
          cpc = partition.manager.parent
          assert cpc.dpm_enabled
          check_valid_cpc_status(method, uri, cpc)
          check_partition_status(method, uri, partition,
                                 invalid_statuses=['starting', 'stopping'])
          check_required_fields(method, uri, body, ['name', 'adapter-port-uri'])
  
          # Check the port-related input property
          port_uri = body['adapter-port-uri']
          m = re.match(r'(^/api/adapters/[^/]+)/storage-ports/[^/]+$', port_uri)
          if not m:
              # We treat an invalid port URI like "port not found".
              raise InvalidResourceError(method, uri, reason=6,
                                         resource_uri=port_uri)
          adapter_uri = m.group(1)
          try:
              hmc.lookup_by_uri(adapter_uri)
          except KeyError:
              raise InvalidResourceError(method, uri, reason=2,
                                         resource_uri=adapter_uri)
          try:
              hmc.lookup_by_uri(port_uri)
          except KeyError:
              raise InvalidResourceError(method, uri, reason=6,
                                         resource_uri=port_uri)
  
          new_hba = partition.hbas.add(body)
  
          return {'element-uri': new_hba.uri}
docs: Operation: Create HBA (requires DPM mode).