'Lists Security Groups
:param domainid: List only resources belonging to the domain specified
:type  domainid: ``str``
:param account: List resources by account. Must be used with
the domainId parameter.
:type  account: ``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: Number of entries per page
:type  pagesize: ``int``
:param keyword: List by keyword
:type  keyword: ``str``
:param tags: List resources by tags (key/value pairs)
:type  tags: ``dict``
:param id: list the security group by the id provided
:type  id: ``str``
:param securitygroupname: lists security groups by name
:type  securitygroupname: ``str``
:param virtualmachineid: lists security groups by virtual machine id
:type  virtualmachineid: ``str``
:param projectid: list objects by project
:type  projectid: ``str``
:param isrecursive: (boolean) defaults to false, but if true,
lists all resources from the parent
specified by the domainId till leaves.
:type  isrecursive: ``bool``
:param page: (integer)
:type  page: ``int``
:rtype ``list``'

def ex_list_security_groups(self, **kwargs):

    extra_args = kwargs.copy()
    res = self._sync_request(command='listSecurityGroups', params=extra_args, method='GET')
    security_groups = res.get('securitygroup', [])
    return security_groups
