Skip to content

Commit

Permalink
Merge pull request #641 from freenas/FIX-31701
Browse files Browse the repository at this point in the history
Add lagg members button/crud
  • Loading branch information
vaibhav-rbs committed Apr 18, 2018
2 parents 8d633e4 + e96b7ab commit 8ee3c97
Show file tree
Hide file tree
Showing 7 changed files with 225 additions and 2 deletions.
12 changes: 10 additions & 2 deletions src/app/pages/network/laggs/lagg-list/lagg-list.component.ts
Expand Up @@ -12,7 +12,7 @@ import { T } from '../../../../translate-marker';
})
export class LaggListComponent {

public title = "Link Aggregations";
public title = T("Link Aggregations");
protected resource_name: string = 'network/lagg/';
protected route_add: string[] = [ 'network', 'laggs', 'add' ];
protected route_add_tooltip: string = "Add Link Aggregation";
Expand Down Expand Up @@ -43,10 +43,18 @@ export class LaggListComponent {
]));
}
});
actions.push({
label : T("Edit Members"),
onClick : (row) => {
this.router.navigate(new Array('').concat([
"network", "laggs", row.id, "members"
]));
}
});
actions.push({
label : T("Delete"),
onClick : (row) => {
this.entityList.doDelete(row.id);;
this.entityList.doDelete(row.id);
},
});
return actions;
Expand Down
1 change: 1 addition & 0 deletions src/app/pages/network/laggs/members/members-form/index.ts
@@ -0,0 +1 @@
export {LaggMembersFormComponent} from './members-form.component';
@@ -0,0 +1,115 @@
import {Component} from '@angular/core';
import {Router, ActivatedRoute} from '@angular/router';
import {Validators} from '@angular/forms';
import * as _ from 'lodash';

import {
NetworkService,
RestService,
WebSocketService
} from '../../../../../services/';
import {
FieldConfig
} from '../../../../common/entity/entity-form/models/field-config.interface';
import { T } from '../../../../../translate-marker';

@Component({
selector : 'app-lagg-form',
template : `<entity-form [conf]="this"></entity-form>`
})
export class LaggMembersFormComponent {

protected resource_name: string = 'network/lagginterfacemembers/';
protected custom_get_query: string;
protected custom_edit_query:string;
protected route_success: string[] = [];
protected isEntity: boolean = true;
protected isNew: boolean;
protected pk;
protected nic;
protected id;

public fieldConfig: FieldConfig[] = [
{
type : 'input',
name : 'id',
placeholder : T("Id"),
isHidden: true
},
{
type : 'select',
name : 'lagg_interfacegroup',
placeholder : T('Lagg Interface Group'),
options : [],
required: true,
validation : [ Validators.required ]
},
{
type : 'input',
name : 'lagg_ordernum',
inputType: 'number',
placeholder : T('Lagg Priority Number'),
required: true,
validation : [ Validators.required ]
},
{
type : 'input',
name : 'lagg_physnic',
placeholder : T('Lagg Physical NIC'),
options : [],
required: true,
validation : [ Validators.required ]
},
{
type : 'input',
name : 'lagg_deviceoptions',
placeholder : T('Options'),
required: true,
validation : [ Validators.required ]
},
];

private lagg_interfacegroup: any;
private lagg_physnic: any;

constructor(protected router: Router, protected rest: RestService,
protected ws: WebSocketService, protected route: ActivatedRoute,
protected networkService: NetworkService) {}

preInit(entityForm: any) {
this.lagg_interfacegroup = _.find(this.fieldConfig, {'name' : 'lagg_interfacegroup'});
this.lagg_physnic = _.find(this.fieldConfig, {'name' : 'lagg_physnic'});
this.route.params.subscribe(params => {
this.nic = params['nic'];
this.pk = params['pk'];
this.id = params['id'];
this.route_success = [ 'network', 'laggs', this.pk, 'members'];
if (this.id) {
this.isNew = false;
this.lagg_physnic.readonly = true;
this.custom_get_query = this.resource_name + this.id + '/';
this.custom_edit_query = this.resource_name + this.id + '/';
this.lagg_interfacegroup.readonly = true;
} else {
this.isNew = true;
this.lagg_physnic.type = 'select';
}
});
this.rest.get('/network/lagg/', {}).subscribe((res) => {
for (let i = 0; i < res.data.length; i++) {
let label = res.data[i]['lagg_interface'] + ': ' + res.data[i]['lagg_protocol']
this.lagg_interfacegroup.options.push({label : label, value: res.data[i].id});
}
});
}

afterInit(entityForm: any) {
if (!this.id) {
this.networkService.getLaggNicChoices().subscribe((res) => {
res.forEach((item) => {
this.lagg_physnic.options.push({label : item[1], value : item[0]});
});
});
}
}
}
1 change: 1 addition & 0 deletions src/app/pages/network/laggs/members/members-list/index.ts
@@ -0,0 +1 @@
export {LaggMembersListComponent} from './members-list.component';
@@ -0,0 +1,80 @@
import {Component} from '@angular/core';
import {Router, ActivatedRoute} from '@angular/router';
import * as _ from 'lodash';

import {RestService} from '../../../../../services/rest.service';
import {EntityUtils} from '../../../../common/entity/utils';
import { T } from '../../../../../translate-marker';

@Component({
selector : 'app-lagg-list',
template : `<entity-table [title]="title" [conf]="this"></entity-table>`
})
export class LaggMembersListComponent {

public title = T("Link Aggregation Members");
protected resource_name: string = 'network/lagginterfacemembers/';
protected route_add: string[] = [];
protected route_add_tooltip: string = "Add Link Aggregation Member";
protected editIds: any = {};
protected pk : any;
protected entityList: any;

protected lagg_interfacegroup: any;

constructor(protected rest: RestService, protected router: Router,
protected route:ActivatedRoute) {}

public columns: Array<any> = [
{name : T('Lagg Interface Group'), prop : 'lagg_interfacegroup'},
{name : T('Lagg Priority Number'), prop : 'lagg_ordernum'},
{name : T('Physical NIC'), prop : 'lagg_physnic'},
{name : T('Options'), prop: 'lagg_deviceoptions'}
];
public config: any = {
paging : true,
sorting : {columns : this.columns},
};

getActions(row) {
let actions = [];
actions.push({
label : T("Edit"),
onClick : (row) => {
this.router.navigate(new Array('').concat([
"network", "laggs", this.pk, "members", row.id, "edit", row.lagg_physnic
]));
}
});
actions.push({
label : T("Delete"),
onClick : (row) => {
this.entityList.doDelete(row.id);
},
});
return actions;
}

preInit(entityList: any) {
this.entityList = entityList;
this.route.params.subscribe(params => {
this.pk = params['pk'];
this.route_add = ["network", "laggs", this.pk, "members", "add"];
});
this.rest.get('/network/lagg/' + this.pk, {}).subscribe((res) => {
this.lagg_interfacegroup = res.data['lagg_interface'] + ': ' + res.data['lagg_protocol'];
});
}

resourceTransformIncomingRestData(data: any) {
let members = [];
for (let i=0; i < data.length; i++) {
if (data[i]['lagg_interfacegroup'].toString() === this.pk.toString()) {
let member = data[i];
member['lagg_interfacegroup'] = this.lagg_interfacegroup;
members.push(member);
}
}
return members;
}
}
4 changes: 4 additions & 0 deletions src/app/pages/network/network.module.ts
Expand Up @@ -13,6 +13,8 @@ import {VlanFormComponent} from './vlans/vlan-form/';
import {VlanListComponent} from './vlans/vlan-list/';
import {LaggFormComponent} from './laggs/lagg-form/';
import {LaggListComponent} from './laggs/lagg-list/';
import {LaggMembersFormComponent} from './laggs/members/members-form';
import {LaggMembersListComponent} from './laggs/members/members-list';
import {StaticRouteFormComponent} from './staticroutes/staticroute-form/';
import {StaticRouteListComponent} from './staticroutes/staticroute-list/';
import {InterfacesFormComponent} from './interfaces/interfaces-form/';
Expand All @@ -31,6 +33,8 @@ import {routing} from './network.routing';
VlanListComponent,
LaggFormComponent,
LaggListComponent,
LaggMembersFormComponent,
LaggMembersListComponent,
StaticRouteFormComponent,
StaticRouteListComponent,
InterfacesListComponent,
Expand Down
14 changes: 14 additions & 0 deletions src/app/pages/network/network.routing.ts
Expand Up @@ -5,6 +5,8 @@ import {VlanFormComponent} from './vlans/vlan-form/';
import {VlanListComponent} from './vlans/vlan-list/';
import {LaggFormComponent} from './laggs/lagg-form/';
import {LaggListComponent} from './laggs/lagg-list/';
import {LaggMembersFormComponent} from './laggs/members/members-form';
import {LaggMembersListComponent} from './laggs/members/members-list';
import {InterfacesFormComponent} from './interfaces/interfaces-form/';
import {InterfacesListComponent} from './interfaces/interfaces-list/';
import {ConfigurationComponent} from './configuration/';
Expand Down Expand Up @@ -58,6 +60,18 @@ export const routes: Routes = [
data: {title:'Link Aggregations', breadcrumb:'Link Aggregations' }},
{path : 'add', component : LaggFormComponent,
data: {title: 'Add', breadcrumb:'Add' }},
{
path : ':pk/members',
data: {title:'Members', breadcrumb: 'Members'},
children: [
{path : '', component : LaggMembersListComponent,
data: {title:'Members', breadcrumb: 'Members'}},
{path : 'add', component : LaggMembersFormComponent,
data: {title: 'Add', breadcrumb:'Add' }},
{path : ':id/edit/:nic', component : LaggMembersFormComponent,
data: {title: 'Edit', breadcrumb:'Edit' }},
]
}
]
},
{
Expand Down

0 comments on commit 8ee3c97

Please sign in to comment.