liusheng 9c3ae09c32 Don't show empty columns if no column data for non-admin users
For listing flavor and showing flavor commands by non-admin users, it will
show empty columns of "resources" and "resource_aggregates" fields,
because they are invisible for common users. It's better to avoid show the
empty columns.

Change-Id: If85a9f5711859030234f4159c9011459bbe4287b
Closes-Bug: #1722438
2017-10-10 11:17:50 +08:00

76 lines
2.3 KiB
Python

# Copyright 2016 Huawei, Inc. All rights reserved.
#
# Licensed under the Apache License, Version 2.0 (the "License"); you may
# not use this file except in compliance with the License. You may obtain
# a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
# License for the specific language governing permissions and limitations
# under the License.
#
import logging
LOG = logging.getLogger(__name__)
def get_response_body(resp):
body = resp.content
content_type = resp.headers.get('Content-Type', '')
if 'application/json' in content_type:
try:
body = resp.json()
except ValueError:
LOG.error('Could not decode response body as JSON')
elif 'application/octet-stream' in content_type:
try:
body = resp.body()
except ValueError:
LOG.error('Could not decode response body as raw')
else:
body = None
return body
def addresses_formatter(network_client, networks):
output = []
for (network, addresses) in networks.items():
if not addresses:
continue
addrs = [addr['addr'] for addr in addresses]
network_data = network_client.find_network(
network, ignore_missing=False)
net_ident = network_data.name or network_data.id
addresses_csv = ', '.join(addrs)
group = "%s=%s" % (net_ident, addresses_csv)
output.append(group)
return '; '.join(output)
def image_formatter(image_client, image_id):
if image_id:
image = image_client.images.get(image_id)
return '%s (%s)' % (image.name, image_id)
return ''
def flavor_formatter(bc_client, flavor_id):
if flavor_id:
flavor = bc_client.flavor.get(flavor_id)
return '%s (%s)' % (flavor.name, flavor_id)
return ''
def clean_listing_columns(headers, columns, data_sample):
col_headers = []
cols = []
for header, col in zip(headers, columns):
if hasattr(data_sample, col):
col_headers.append(header)
cols.append(col)
return tuple(col_headers), tuple(cols)