'List registered key pairs.
:param     projectid: list objects by project
:type      projectid: ``str``
:param     page: The page to list the keypairs from
:type      page: ``int``
:param     keyword: List by keyword
:type      keyword: ``str``
:param     listall: If set to false, list only resources
belonging to the command\'s caller;
if set to true - list resources that
the caller is authorized to see.
Default value is false
:type      listall: ``bool``
:param     pagesize: The number of results per page
:type      pagesize: ``int``
:param     account: List resources by account.
Must be used with the domainId parameter
:type      account: ``str``
:param     isrecursive: Defaults to false, but if true,
lists all resources from
the parent specified by the
domainId till leaves.
:type      isrecursive: ``bool``
:param     fingerprint: A public key fingerprint to look for
:type      fingerprint: ``str``
:param     name: A key pair name to look for
:type      name: ``str``
:param     domainid: List only resources belonging to
the domain specified
:type      domainid: ``str``
:return:   A list of key par objects.
:rtype:   ``list`` of :class:`libcloud.compute.base.KeyPair`'

def list_key_pairs(self, **kwargs):

    extra_args = kwargs.copy()
    res = self._sync_request(command='listSSHKeyPairs', params=extra_args, method='GET')
    key_pairs = res.get('sshkeypair', [])
    key_pairs = self._to_key_pairs(data=key_pairs)
    return key_pairs
