/*
- *
+ *
* Copyright 2016 RIFT.IO Inc
*
* Licensed under the Apache License, Version 2.0 (the "License");
return constituentVNFD;
});
-
+ for (var key in confd) {
+ checkForChoiceAndRemove(key, confd, nsdModel);
+ }
// serialize the VLD instances
confd.vld = confd.vld.map(d => {
return DescriptorModelSerializer.serialize(d);
});
- return confd;
+ return cleanEmptyTopKeys(confd);
}
},
// once that is fixed, remove this piece of code.
// fix-start
for (var key in confd) {
- if (confd.hasOwnProperty(key) && confd[key] === '') {
- delete confd[key];
- }
+ if (confd.hasOwnProperty(key) && confd[key] === '') {
+ delete confd[key];
+ } else {
+ //removes choice properties from top level object and copies immediate children onto it.
+ checkForChoiceAndRemove(key, confd, vldModel);
+ }
}
+
const deepProperty = 'provider-network';
for (var key in confd[deepProperty]) {
if (confd[deepProperty].hasOwnProperty(key) && confd[deepProperty][key] === '') {
}
}
// fix-end
-
-
confd[property] = confd[property].map(d => DescriptorModelSerializer[property].serialize(d));
- return confd;
+ return cleanEmptyTopKeys(confd);
}
},
'vnfd-connection-point-ref': {
if(!vnfdFields) vnfdFields = DescriptorModelMetaFactory.getModelFieldNamesForType('vnfd').concat('uiState');
const confd = _.pick(vnfdModel, vnfdFields);
confd.vdu = confd.vdu.map(d => DescriptorModelSerializer.serialize(d));
- return confd;
+ return cleanEmptyTopKeys(confd);
}
},
vdu: {
serialize(vduModel) {
- const confd = _.omit(vduModel, ['uiState']);
- return confd;
+ const copy = _.cloneDeep(vduModel);
+ for (let k in copy) {
+ checkForChoiceAndRemove(k, copy, vduModel)
+ }
+ const confd = _.omit(copy, ['uiState']);
+ return cleanEmptyTopKeys(confd);
}
}
};
+
+function checkForChoiceAndRemove(k, confd, model) {
+ let state = model.uiState;
+ if (state.choice) {
+ let choice = state.choice[k]
+ if(choice) {
+ if (choice.constructor.name == "Array") {
+ for(let i = 0; i < choice.length; i++) {
+ for (let key in confd[k][i]) {
+ if(choice[i] && (choice[i].selected.indexOf(key) > -1)) {
+ confd[k][i][key] = confd[k][i][key]
+ }
+ confd[key];
+ };
+ }
+ } else {
+ for (let key in confd[k]) {
+ if(choice && (choice.selected.indexOf(key) > -1)) {
+ confd[key] = confd[k][key]
+ }
+ };
+ delete confd[k];
+ }
+
+ }
+ }
+ return confd;
+}
+
+function cleanEmptyTopKeys(m){
+ Object.keys(m).forEach(k => {
+ const isEmptyObject = typeof m[k] === 'object' && _.isEmpty(m[k]);
+ if (typeof m[k] === 'undefined' || isEmptyObject || m[k] === '') {
+ delete m[k];
+ }
+ });
+ return m;
+}
+
export default DescriptorModelSerializer;