Integrated with ONOS BE
Change-Id: Ide481090c843215f1084a59044c64111dba8c73a
diff --git a/mCordPortal/env/local.js b/mCordPortal/env/local.js
index c256c05..33fefbd 100644
--- a/mCordPortal/env/local.js
+++ b/mCordPortal/env/local.js
@@ -7,5 +7,6 @@
// (works only for local environment as both application are served on the same domain)
module.exports = {
- host: 'http://xos.dev:9999/'
+ host: 'http://xos.dev:9999/',
+ onos_host: 'http://10.50.1.15:8181'
};
diff --git a/mCordPortal/src/app/components/add-enodeb/add-enodeb.js b/mCordPortal/src/app/components/add-enodeb/add-enodeb.js
index 0b92cc0..0ce89f5 100644
--- a/mCordPortal/src/app/components/add-enodeb/add-enodeb.js
+++ b/mCordPortal/src/app/components/add-enodeb/add-enodeb.js
@@ -37,23 +37,18 @@
minlength: 10
}
},
- GpsCoordinate: {
- type: 'object',
- properties: {
- Latitude: {
- type: 'string',
- validators: {
- required: true
- }
- },
- Longitude: {
- type: 'string',
- validators: {
- required: true
- }
- }
+ eNBId: {
+ type: 'number',
+ validators: {
+ required: true
}
},
+ IpAddr: {
+ type: 'string',
+ validators: {
+ required: true
+ }
+ }
},
actions: [
{
@@ -63,6 +58,7 @@
// TODO validate form (wait for arpit to commit)
Enodeb.save(enode).$promise
.then(() => {
+ // TODO add to list
this.modal.close();
})
.catch(e => {
diff --git a/mCordPortal/src/app/components/add-imsi/add-imsi.js b/mCordPortal/src/app/components/add-imsi/add-imsi.js
index 5308a5c..34d7733 100644
--- a/mCordPortal/src/app/components/add-imsi/add-imsi.js
+++ b/mCordPortal/src/app/components/add-imsi/add-imsi.js
@@ -30,33 +30,7 @@
this.config = {
formName: 'createImsi',
fields: {
- Enodeb: {
- type: 'select',
- validators: {
- required: true
- },
- options: [
- {
- id: 591,
- label: '591'
- },
- {
- id: 592,
- label: '592'
- },
- {
- id: 593,
- label: '593'
- }
- ]
- },
- DlMeasBitRate: {
- type: 'number',
- validators: {
- required: true
- }
- },
- UlMeasBitRate: {
+ IMSI: {
type: 'number',
validators: {
required: true
@@ -71,6 +45,7 @@
// TODO validate form (wait for arpit to commit)
Imsi.save(imsi).$promise
.then(() => {
+ // TODO add to list
this.modal.close();
})
.catch(e => {
@@ -89,17 +64,6 @@
}
]
};
-
- // TODO use this once merged Arpit PR
- Enodeb.query().$promise
- .then(enodes => {
- this.config.fields.Enodeb.options = _.reduce(enodes, (list, enode) => {
- return list.concat([{
- id: enode.eNBId,
- label: enode.eNBId.toString()
- }]);
- }, []);
- })
}
};
});
diff --git a/mCordPortal/src/app/components/add-profile-to-item/add-profile-to-item.js b/mCordPortal/src/app/components/add-profile-to-item/add-profile-to-item.js
index 15569d0..a4c291e 100644
--- a/mCordPortal/src/app/components/add-profile-to-item/add-profile-to-item.js
+++ b/mCordPortal/src/app/components/add-profile-to-item/add-profile-to-item.js
@@ -30,10 +30,16 @@
Profile.query().$promise
.then((profiles) => {
+ profiles = _.filter(profiles, p => {
+ console.log(p.Name, p.Name.indexOf('Default'), p.Name.indexOf('Default') === -1);
+ return p.Name.indexOf('Default') === -1
+ });
+ console.log(profiles);
this.profiles = profiles;
return this.item.getProfiles();
})
.then((itemProfiles) => {
+ console.log(this.profiles, itemProfiles);
this.profiles = _.differenceBy(this.profiles, itemProfiles, 'Name');
});
diff --git a/mCordPortal/src/app/services/rest/enodeb.js b/mCordPortal/src/app/services/rest/enodeb.js
index aa28702..d7d0f7c 100644
--- a/mCordPortal/src/app/services/rest/enodeb.js
+++ b/mCordPortal/src/app/services/rest/enodeb.js
@@ -2,7 +2,7 @@
angular.module('mCord')
.service('Enodeb', function($injector, $resource, $q, $http, baseUrl){
const r = $resource(`${baseUrl}onos/progran/enodeb/:id`, {id: '@eNBId'}, {
- save: {method: 'PUT'},
+ //save: {method: 'PUT'},
query: {
array: false,
interceptor: {
@@ -23,6 +23,20 @@
}
});
+ // Override the default save method,
+ // Name is the key, so the $resource will try to update
+ r.save = function(data){
+ const d = $q.defer();
+ $http.post(`${baseUrl}onos/progran/enodeb/`, data)
+ .then(res => {
+ d.resolve(res.data);
+ })
+ .catch(err => {
+ d.reject(err)
+ });
+ return {$promise: d.promise};
+ };
+
r.prototype.getProfiles = function(){
const d = $q.defer();
@@ -37,6 +51,20 @@
return d.promise;
};
+ r.prototype.addProfile = function(data){
+ const d = $q.defer();
+ data = {'ProfileArray': [data.Name]};
+ $http.post(`${baseUrl}onos/progran/enodeb/${this.eNBId}/profile`, data)
+ .then(res => {
+ d.resolve(res.data);
+ })
+ .catch(err => {
+ d.reject(err)
+ });
+
+ return d.promise;
+ };
+
r.prototype.getStats = function(){
const d = $q.defer();
$http.get(`${baseUrl}onos/progran/stats/enodeb/${this.eNBId}/10`)
diff --git a/mCordPortal/src/app/services/rest/imsi.js b/mCordPortal/src/app/services/rest/imsi.js
index 2359fe1..93bc88d 100644
--- a/mCordPortal/src/app/services/rest/imsi.js
+++ b/mCordPortal/src/app/services/rest/imsi.js
@@ -23,11 +23,40 @@
}
});
+ // Override the default save method,
+ // Name is the key, so the $resource will try to update
+ r.save = function(data){
+ const d = $q.defer();
+ $http.post(`${baseUrl}onos/progran/imsi/`, data)
+ .then(res => {
+ d.resolve(res.data);
+ })
+ .catch(err => {
+ d.reject(err)
+ });
+ return {$promise: d.promise};
+ };
+
r.prototype.getProfiles = function(){
const d = $q.defer();
$http.get(`${baseUrl}onos/progran/imsi/${this.IMSI}/profile`)
.then(res => {
+ d.resolve(res.data.ProfileArray);
+ })
+ .catch(err => {
+ d.reject(err)
+ });
+
+ return d.promise;
+ };
+
+ // this is under profile
+ r.prototype.addProfile = function(data){
+ const d = $q.defer();
+ let body = {'IMSIRuleArray': [this.IMSI]};
+ $http.post(`${baseUrl}onos/progran/profile/${data.Name}/imsi`, body)
+ .then(res => {
d.resolve(res.data);
})
.catch(err => {
diff --git a/mCordPortal/src/app/services/rest/profiles.js b/mCordPortal/src/app/services/rest/profiles.js
index 6582784..5a7d435 100644
--- a/mCordPortal/src/app/services/rest/profiles.js
+++ b/mCordPortal/src/app/services/rest/profiles.js
@@ -2,7 +2,12 @@
angular.module('mCord')
.service('Profile', function($injector, $resource, $q, $http, baseUrl){
const r = $resource(`${baseUrl}onos/progran/profile/:id`, {id: '@Name'}, {
- save: {method: 'PUT'},
+ save: {
+ method: 'PUT'
+ },
+ $save: {
+ method: 'PUT'
+ },
query: {
array: false,
interceptor: {
@@ -23,6 +28,20 @@
}
});
+ // Override the default save method,
+ // Name is the key, so the $resource will try to update
+ r.save = function(data){
+ const d = $q.defer();
+ $http.post(`${baseUrl}onos/progran/profile/`, data)
+ .then(res => {
+ d.resolve(res.data);
+ })
+ .catch(err => {
+ d.reject(err)
+ });
+ return {$promise: d.promise};
+ };
+
r.prototype.getImsis = function(){
const d = $q.defer();
@@ -37,6 +56,21 @@
return d.promise;
};
+ // this is under profile
+ r.prototype.addImsi = function(data){
+ const d = $q.defer();
+ let body = {'IMSIRuleArray': [data.IMSI]};
+ $http.post(`${baseUrl}onos/progran/profile/${this.Name}/imsi`, body)
+ .then(res => {
+ d.resolve(res.data);
+ })
+ .catch(err => {
+ d.reject(err)
+ });
+
+ return d.promise;
+ };
+
r.prototype.deleteImsis = function(){
const d = $q.defer();
@@ -96,7 +130,7 @@
r.prototype.deleteEnode = function(id){
const d = $q.defer();
- $http.delete(`${baseUrl}onos/progran/profile/${this.Name}/enodeb/${id}`)
+ $http.delete(`${baseUrl}onos/progran/enodeb/${id}/profile/${this.Name}`)
.then(res => {
d.resolve(res.data);
})
diff --git a/mCordPortal/src/app/view/enode-details/e-node-details.tpl.html b/mCordPortal/src/app/view/enode-details/e-node-details.tpl.html
index 55abba9..768d2e4 100644
--- a/mCordPortal/src/app/view/enode-details/e-node-details.tpl.html
+++ b/mCordPortal/src/app/view/enode-details/e-node-details.tpl.html
@@ -19,7 +19,7 @@
</div>
<div class="col-xs-9">
<related-profiles model="vm.enode" config="{showHeader: false, colors: vm.colors}"></related-profiles>
- <div class="row">
+ <div class="row" ng-show="vm.enode">
<div class="col-xs-12 text-right">
<a ng-click="vm.addProfile()" class="btn btn-primary-border">Add Profile</a>
<a href="" class="btn btn-primary-border">Create Profile</a>
diff --git a/mCordPortal/src/app/view/enode-details/enode-details.js b/mCordPortal/src/app/view/enode-details/enode-details.js
index a187893..717a8eb 100644
--- a/mCordPortal/src/app/view/enode-details/enode-details.js
+++ b/mCordPortal/src/app/view/enode-details/enode-details.js
@@ -69,9 +69,12 @@
controller: function ($uibModalInstance) {
this.modal = $uibModalInstance;
this.callback = (profile) => {
- $scope.$broadcast('profile.add', {targetId: _this.enode.eNBId, profile: profile});
- _this.profiles.push(profile);
- createChartData(_this.profiles);
+ this.eNodeB.addProfile(profile)
+ .then(p => {
+ $scope.$broadcast('profile.add', {targetId: _this.enode.eNBId, profile: profile});
+ _this.profiles.push(profile);
+ createChartData(_this.profiles);
+ });
};
this.eNodeB = _this.enode;
}
diff --git a/mCordPortal/src/app/view/imsi-details/imsi-details.js b/mCordPortal/src/app/view/imsi-details/imsi-details.js
index 99204c4..683574f 100644
--- a/mCordPortal/src/app/view/imsi-details/imsi-details.js
+++ b/mCordPortal/src/app/view/imsi-details/imsi-details.js
@@ -43,8 +43,11 @@
controller: function ($uibModalInstance) {
this.modal = $uibModalInstance;
this.callback = (profile) => {
- console.log(_this.imsi);
- $scope.$broadcast('profile.add', {targetId: _this.imsi.IMSI, profile: profile});
+ this.imsi.addProfile(profile)
+ .then(p => {
+ _this.profiles.push(profile);
+ $scope.$broadcast('profile.add', {targetId: _this.imsi.IMSI, profile: profile});
+ });
};
this.imsi = _this.imsi;
}
diff --git a/mCordPortal/src/app/view/imsi-details/imsi-details.tpl.html b/mCordPortal/src/app/view/imsi-details/imsi-details.tpl.html
index f6b0947..5633bcd 100644
--- a/mCordPortal/src/app/view/imsi-details/imsi-details.tpl.html
+++ b/mCordPortal/src/app/view/imsi-details/imsi-details.tpl.html
@@ -14,11 +14,11 @@
<div class="col-xs-12">
<related-profiles model="vm.imsi" config="{showHeader: false, delete: true}"></related-profiles>
</div>
- <div class="col-xs-12 text-right">
+ <div class="col-xs-12 text-right" ng-show="vm.imsi">
<a ng-click="vm.addProfile()" href="" class="btn btn-primary-border">
Add Profile
</a>
- <a href="" class="btn btn-primary-border">
+ <a href="#/profile/" class="btn btn-primary-border">
Create Profile
</a>
</div>
diff --git a/mCordPortal/src/app/view/profiles-details/profiles-details.js b/mCordPortal/src/app/view/profiles-details/profiles-details.js
index 4f03dcd..b6d73a7 100644
--- a/mCordPortal/src/app/view/profiles-details/profiles-details.js
+++ b/mCordPortal/src/app/view/profiles-details/profiles-details.js
@@ -121,13 +121,19 @@
required: true
}
},
- HysteresisA3: {
+ A3Hysteresis: {
type: 'number',
validator: {
required: true
}
},
- A5TriggerType: {
+ A3TriggerQuantity: {
+ type: 'number',
+ validator: {
+ required: true
+ }
+ },
+ A5TriggerQuantity: {
type: 'number',
validator: {
required: true
@@ -157,7 +163,7 @@
required: true
}
},
- HysteresisA5: {
+ A5Hysteresis: {
type: 'number',
validator: {
required: true
@@ -175,6 +181,7 @@
Profile.save(profile).$promise
.then((profile) => {
// TODO save imsi and enodes
+ // and redirect to profile list
});
}
else{
@@ -257,7 +264,7 @@
icon: 'remove',
color: 'red',
cb: (enode) => {
- this.profile.deleteImsi(enode.eNBId)
+ this.profile.deleteEnode(enode.eNBId)
.then(() => {
_.remove(this.enodes, i =>i.eNBId === enode.eNBId);
});
@@ -282,8 +289,10 @@
controller: function ($uibModalInstance) {
this.modal = $uibModalInstance;
this.callback = (imsi) => {
- // TODO call BE (if !this.isNew)
- _this.imsis.push(imsi);
+ this.profile.addImsi(imsi)
+ .then(i => {
+ _this.imsis.push(imsi);
+ })
};
this.profile = _this.profile;
}