Add filterFacets for loadBalancerResourceType

Change-Id: Ia3ebfaf021dc821f4ddc47a80f34732671e43d8e
This commit is contained in:
Qian Min Chen 2018-02-08 17:42:43 +08:00 committed by Allen
parent 633c04b2fc
commit 7f575b011e
7 changed files with 67 additions and 9 deletions

View File

@ -508,9 +508,12 @@ class LoadBalancers(generic.View):
The listing result is an object with property "items".
"""
filters = rest_utils.parse_filters_kwargs(request)
kwargs = filters[0]
del kwargs['full']
conn = _get_sdk_connection(request)
lb_list = _sdk_object_to_list(conn.load_balancer.load_balancers(
project_id=request.user.project_id))
project_id=request.user.project_id, **kwargs))
if request.GET.get('full') and neutron.floating_ip_supported(request):
add_floating_ip_info(request, lb_list)
return {'items': lb_list}

View File

@ -73,13 +73,12 @@
* @name horizon.app.core.openstack-service-api.lbaasv2.getLoadBalancers
* @description
* Get a list of load balancers.
* @param {boolean} full
* @param {Object} params
* The listing result is an object with property "items". Each item is
* a load balancer.
*/
function getLoadBalancers(full) {
var params = { full: full };
function getLoadBalancers(params) {
return apiService.get('/api/lbaas/loadbalancers/', { params: params })
.error(function () {
toastService.add('error', gettext('Unable to retrieve load balancers.'));

View File

@ -41,8 +41,8 @@
method: 'get',
path: '/api/lbaas/loadbalancers/',
error: 'Unable to retrieve load balancers.',
testInput: [ true ],
data: { params: { full: true } }
testInput: [ { full: true, name: 'test' } ],
data: { params: { full: true, name: 'test' } }
},
{
func: 'getLoadBalancer',

View File

@ -87,6 +87,48 @@
priority: 1
});
loadBalancerResourceType.filterFacets
.append({
label: gettext('Name'),
name: 'name',
isServer: true,
singleton: true,
persistent: true
})
.append({
label: gettext('IP Address'),
name: 'vip_address',
isServer: true,
singleton: true
})
.append({
label: gettext('Operating Status'),
name: 'operating_status',
isServer: true,
singleton: true,
options: [
{label: gettext('Online'), key: 'ONLINE'},
{label: gettext('Offline'), key: 'OFFLINE'},
{label: gettext('Degraded'), key: 'DEGRADED'},
{label: gettext('Error'), key: 'ERROR'},
{label: gettext('No Monitor'), key: 'NO_MONITOR'}
]
})
.append({
label: gettext('Provisioning Status'),
name: 'provisioning_status',
isServer: true,
singleton: true,
options: [
{label: gettext('Active'), key: 'ACTIVE'},
{label: gettext('Inactive'), key: 'INACTIVE'},
{label: gettext('Pending Create'), key: 'PENDING_CREATE'},
{label: gettext('Pending Update'), key: 'PENDING_UPDATE'},
{label: gettext('Pending Delete'), key: 'PENDING_DELETE'},
{label: gettext('Error'), key: 'ERROR'}
]
});
loadBalancerResourceType.itemActions
.append({
id: 'loadBalancerEdit',

View File

@ -37,6 +37,19 @@
expect(resourceType).toBeDefined();
});
it('should set facets for search', function () {
var names = registry.getResourceType(resourceType).filterFacets
.map(getName);
expect(names).toContain('name');
expect(names).toContain('vip_address');
expect(names).toContain('operating_status');
expect(names).toContain('provisioning_status');
function getName(x) {
return x.name;
}
});
it('should register item actions', function () {
var actions = registry.getResourceType(resourceType).itemActions;
expect(actionHasId(actions, 'loadBalancerEdit')).toBe(true);

View File

@ -204,8 +204,9 @@
return 'project/load_balancer/' + item.loadbalancerId + '/listeners/' + item.id;
}
function getLoadBalancersPromise() {
return api.getLoadBalancers(true).then(modifyResponse);
function getLoadBalancersPromise(params) {
params.full = true;
return api.getLoadBalancers(params).then(modifyResponse);
function modifyResponse(response) {
return {data: {items: response.data.items.map(modifyItem)}};

View File

@ -220,7 +220,7 @@
function initCreateLoadBalancer(keymanagerPromise) {
model.context.submit = createLoadBalancer;
return $q.all([
lbaasv2API.getLoadBalancers().then(onGetLoadBalancers),
lbaasv2API.getLoadBalancers({ full: false }).then(onGetLoadBalancers),
neutronAPI.getSubnets().then(onGetSubnets),
neutronAPI.getPorts().then(onGetPorts),
novaAPI.getServers().then(onGetServers),