Add sort-by option for climateclient list commands
Adding a sort-by parameter for the climateclient list command so that when a list is retrieved, it will be order by the column that the user prefered. Default value will be 'name' for leases and 'hypervisor_hostname' for hosts (which are more meaningful order attributes than id). Change-Id: Ie6a4df384770123ec5fc4cf43823ce5ef1a47ca5 Closes-Bug: #1304595
This commit is contained in:
parent
fb02a3a396
commit
020c07de18
@ -23,6 +23,7 @@ from cliff.formatters import table
|
|||||||
from cliff import lister
|
from cliff import lister
|
||||||
from cliff import show
|
from cliff import show
|
||||||
|
|
||||||
|
from climateclient import exception
|
||||||
from climateclient import utils
|
from climateclient import utils
|
||||||
|
|
||||||
|
|
||||||
@ -217,6 +218,16 @@ class ListCommand(ClimateCommand, lister.Lister):
|
|||||||
list_columns = []
|
list_columns = []
|
||||||
unknown_parts_flag = True
|
unknown_parts_flag = True
|
||||||
|
|
||||||
|
def args2body(self, parsed_args):
|
||||||
|
params = {}
|
||||||
|
if parsed_args.sort_by:
|
||||||
|
if parsed_args.sort_by in self.list_columns:
|
||||||
|
params['sort_by'] = parsed_args.sort_by
|
||||||
|
else:
|
||||||
|
msg = 'Invalid sort option %s' % parsed_args.sort_by
|
||||||
|
raise exception.ClimateClientException(msg)
|
||||||
|
return params
|
||||||
|
|
||||||
def get_parser(self, prog_name):
|
def get_parser(self, prog_name):
|
||||||
parser = super(ListCommand, self).get_parser(prog_name)
|
parser = super(ListCommand, self).get_parser(prog_name)
|
||||||
return parser
|
return parser
|
||||||
@ -224,8 +235,9 @@ class ListCommand(ClimateCommand, lister.Lister):
|
|||||||
def retrieve_list(self, parsed_args):
|
def retrieve_list(self, parsed_args):
|
||||||
"""Retrieve a list of resources from Climate server"""
|
"""Retrieve a list of resources from Climate server"""
|
||||||
climate_client = self.get_client()
|
climate_client = self.get_client()
|
||||||
|
body = self.args2body(parsed_args)
|
||||||
resource_manager = getattr(climate_client, self.resource)
|
resource_manager = getattr(climate_client, self.resource)
|
||||||
data = resource_manager.list()
|
data = resource_manager.list(**body)
|
||||||
return data
|
return data
|
||||||
|
|
||||||
def setup_columns(self, info, parsed_args):
|
def setup_columns(self, info, parsed_args):
|
||||||
|
@ -42,6 +42,9 @@ class ComputeHostClientManager(base.BaseClientManager):
|
|||||||
"""Deletes host with specified ID."""
|
"""Deletes host with specified ID."""
|
||||||
self._delete('/os-hosts/%s' % host_id)
|
self._delete('/os-hosts/%s' % host_id)
|
||||||
|
|
||||||
def list(self):
|
def list(self, sort_by=None):
|
||||||
"""List all hosts."""
|
"""List all hosts."""
|
||||||
return self._get('/os-hosts', 'hosts')
|
hosts = self._get('/os-hosts', 'hosts')
|
||||||
|
if sort_by:
|
||||||
|
hosts = sorted(hosts, key=lambda l: l[sort_by])
|
||||||
|
return hosts
|
||||||
|
@ -72,6 +72,9 @@ class LeaseClientManager(base.BaseClientManager):
|
|||||||
"""Deletes lease with specified ID."""
|
"""Deletes lease with specified ID."""
|
||||||
self._delete('/leases/%s' % lease_id)
|
self._delete('/leases/%s' % lease_id)
|
||||||
|
|
||||||
def list(self):
|
def list(self, sort_by=None):
|
||||||
"""List all leases."""
|
"""List all leases."""
|
||||||
return self._get('/leases', 'leases')
|
leases = self._get('/leases', 'leases')
|
||||||
|
if sort_by:
|
||||||
|
leases = sorted(leases, key=lambda l: l[sort_by])
|
||||||
|
return leases
|
||||||
|
@ -24,6 +24,15 @@ class ListHosts(command.ListCommand):
|
|||||||
list_columns = ['id', 'hypervisor_hostname', 'vcpus', 'memory_mb',
|
list_columns = ['id', 'hypervisor_hostname', 'vcpus', 'memory_mb',
|
||||||
'local_gb']
|
'local_gb']
|
||||||
|
|
||||||
|
def get_parser(self, prog_name):
|
||||||
|
parser = super(ListHosts, self).get_parser(prog_name)
|
||||||
|
parser.add_argument(
|
||||||
|
'--sort-by', metavar="<host_column>",
|
||||||
|
help='column name used to sort result',
|
||||||
|
default='hypervisor_hostname'
|
||||||
|
)
|
||||||
|
return parser
|
||||||
|
|
||||||
|
|
||||||
class ShowHost(command.ShowCommand):
|
class ShowHost(command.ShowCommand):
|
||||||
resource = 'host'
|
resource = 'host'
|
||||||
|
@ -27,6 +27,15 @@ class ListLeases(command.ListCommand):
|
|||||||
log = logging.getLogger(__name__ + '.ListLeases')
|
log = logging.getLogger(__name__ + '.ListLeases')
|
||||||
list_columns = ['id', 'name', 'start_date', 'end_date']
|
list_columns = ['id', 'name', 'start_date', 'end_date']
|
||||||
|
|
||||||
|
def get_parser(self, prog_name):
|
||||||
|
parser = super(ListLeases, self).get_parser(prog_name)
|
||||||
|
parser.add_argument(
|
||||||
|
'--sort-by', metavar="<lease_column>",
|
||||||
|
help='column name used to sort result',
|
||||||
|
default='name'
|
||||||
|
)
|
||||||
|
return parser
|
||||||
|
|
||||||
|
|
||||||
class ShowLease(command.ShowCommand):
|
class ShowLease(command.ShowCommand):
|
||||||
resource = 'lease'
|
resource = 'lease'
|
||||||
|
Loading…
x
Reference in New Issue
Block a user