RIFT_ARTIFACTS = $(TOP_ROOT_PATH)/artifacts
RIFT_INSTALL = $(TOP_ROOT_PATH)
RIFT_SHELL_EXE = $(TOP_ROOT_PATH)/rift-shell -b $(RIFT_BUILD) -i $(RIFT_INSTALL) -a $(RIFT_ARTIFACTS) --
+RELEASE_NUMBER = $(shell git describe | cut -d. -f1 | sed -e 's/^v//')
+BUILD_NUMBER = $(shell git describe | cut -d. -f2-)
+
CONFD = XML_ONLY
mkdir -p $(RIFT_BUILD)
mkdir -p $(RIFT_ARTIFACTS)
mkdir -p $(RIFT_INSTALL)
- cd $(RIFT_BUILD) && $(RIFT_SHELL_EXE) cmake $(TOP_SRC_PATH) -DCMAKE_INSTALL_PREFIX=$(TOP_ROOT_PATH) -DCMAKE_BUILD_TYPE=$(BUILD_TYPE) -DNOT_DEVELOPER_BUILD=$(NOT_DEVELOPER_TYPE) -DCOVERAGE_BUILD=$(COVERAGE_TYPE) -DRIFT_AGENT_BUILD=$(RIFT_AGENT_BUILD) -DPROJECT_TOP_DIR=$(PROJECT_TOP_DIR) -DCMAKE_MODULE_PATH=${CMAKE_MODULE_PATH} -DRIFT_SUBMODULE_NAME=$(PROJECT_TOP_DIR)
+ cd $(RIFT_BUILD) && $(RIFT_SHELL_EXE) cmake $(TOP_SRC_PATH) -DCMAKE_INSTALL_PREFIX=$(TOP_ROOT_PATH) -DCMAKE_BUILD_TYPE=$(BUILD_TYPE) -DNOT_DEVELOPER_BUILD=$(NOT_DEVELOPER_TYPE) -DCOVERAGE_BUILD=$(COVERAGE_TYPE) -DRIFT_AGENT_BUILD=$(RIFT_AGENT_BUILD) -DPROJECT_TOP_DIR=$(PROJECT_TOP_DIR) -DCMAKE_MODULE_PATH=${CMAKE_MODULE_PATH} -DRIFT_SUBMODULE_NAME=$(PROJECT_TOP_DIR) -DRIFT_PACKAGE_GENERATOR=DEB -DRELEASE_NUMBER=$(RELEASE_NUMBER) -DBUILD_NUMBER=$(BUILD_NUMBER)
rw: cmake
$(RIFT_SHELL_EXE) $(MAKE) -C $(RIFT_BUILD)
+package: rw
+ $(RIFT_SHELL_EXE) $(MAKE) -C $(RIFT_BUILD) rw.package
+
install:
$(RIFT_SHELL_EXE) $(MAKE) -C $(RIFT_BUILD) install
window.sessionStorage.setItem("auth", AuthBase64);
self.detectInactivity();
$.ajax({
- url: '//' + window.location.hostname + ':' + NODE_PORT + '/check-auth?api_server=' + API_SERVER,
+ url: '//' + window.location.hostname + ':' + window.location.port + '/check-auth?api_server=' + API_SERVER,
type: 'GET',
beforeSend: Utils.addAuthorizationStub,
success: function(data) {
.JSONViewer {
+ max-width: 640px;
/*
copied from node_modules/prismjs/themes/prismjs.css
*/
remote: function(state, recordID) {
return new Promise(function(resolve, reject) {
$.ajax({
- url: '//' + window.location.hostname + ':' + NODE_PORT + '/api/operational/restconf-state/streams?api_server=' + API_SERVER,
+ url: '//' + window.location.hostname + ':' + window.location.port + '/api/operational/restconf-state/streams?api_server=' + API_SERVER,
type: 'GET',
beforeSend: Utils.addAuthorizationStub,
success: function(data) {
remote: function(state, location, streamSource) {
return new Promise((resolve, reject) => {
$.ajax({
- url: '//' + window.location.hostname + ':' + NODE_PORT + '/socket-polling?api_server=' + API_SERVER,
+ url: '//' + window.location.hostname + ':' + window.location.port + '/socket-polling',
type: 'POST',
beforeSend: Utils.addAuthorizationStub,
data: {
return resolve(false);
}
$.ajax({
- url: '/socket-polling?api_server=' + API_SERVER ,
+ url: '/socket-polling',
type: 'POST',
beforeSend: Utils.addAuthorizationStub,
data: {
}, {
label: "Authentication URL",
ref: 'auth_url'
- },{
- label: "User Domain",
- ref: 'user-domain',
- optional: true
- },{
- label: "Project Domain",
- ref: 'project-domain',
- optional: true
}, {
label: "Tenant",
ref: 'tenant'
label: 'Floating IP Pool',
ref: 'floating-ip-pool',
optional: true
+ }, {
+ label: "User Domain",
+ ref: 'user-domain',
+ optional: true
+ }, {
+ label: "Project Domain",
+ ref: 'project-domain',
+ optional: true
+ }, {
+ label: "Region",
+ ref: 'region',
+ optional: true
}],
"openvim": [{
label: "Host",
}
getResourceOrchestratorSuccess = (data) => {
this.alt.actions.global.hideScreenLoader.defer();
- if(data['account-type'] == 'openmano') {
+ if(data['rw-launchpad:resource-orchestrator'] && (data['rw-launchpad:resource-orchestrator']['account-type'] == 'openmano')) {
this.setState({
showVIM: false
})
var download_host = req.query['dev_download_server'];
if (!download_host) {
- download_host = api_server + ':' + utils.getPortForProtocol(req.protocol);
+ download_host = req.protocol + '://' + req.get('host');//api_server + ':' + utils.getPortForProtocol(req.protocol);
}
var input = {
'external-url': download_host + '/composer/update/' + req.file.filename,
var download_host = req.query['dev_download_server'];
if (!download_host) {
- download_host = api_server + ':' + utils.getPortForProtocol(req.protocol);
+ download_host = req.protocol + '://' + req.get('host');//req.api_server + ':' + utils.getPortForProtocol(req.protocol);
}
return new Promise(function(resolve, reject) {
var package_type = req.query['package_type'].toUpperCase();
var package_path = req.query['package_path'];
if (!download_host) {
- download_host = api_server + ':' + utils.getPortForProtocol(req.protocol);
+ download_host = req.protocol + '://' + req.get('host');//api_server + ':' + utils.getPortForProtocol(req.protocol);
+ }
+ var input = {
+ 'external-url': download_host + '/composer/upload/' + req.query['package_id'] + '/' + req.file.filename,
+ 'package-type': package_type,
+ 'package-id': package_id,
+ 'package-path': package_path + '/' + req.file.filename
}
-
return new Promise(function(resolve, reject) {
Promise.all([
rp({
resolveWithFullResponse: true,
json: true,
body: {
- input: {
- 'external-url': download_host + '/composer/upload/' + req.query['package_id'] + '/' + req.file.filename,
- 'package-type': package_type,
- 'package-id': package_id,
- 'package-path': package_path + '/' + req.file.filename
- }
+ input: input
}
})
]).then(function(result) {
</div>
{viewButtonTabs}
<div className="CanvasPanelBody panel-body" style={{marginRight: this.props.layout.right, bottom: this.props.layout.bottom}} >
- {hasNoCatalogs ? null : viewFiles ? <FileManager files={this.props.files} type={this.props.type} item={this.props.item} filesState={this.props.filesState} /> : bodyComponent}
+ {hasNoCatalogs ? null : viewFiles ? <FileManager files={this.props.files} type={this.props.type} item={this.props.item} filesState={this.props.filesState} newPathName={this.props.newPathName} /> : bodyComponent}
</div>
{
isDescriptorView ?
panelTabShown={self.state.panelTabShown}
files={self.state.files}
filesState={self.state.filesState}
+ newPathName={self.state.newPathName}
item={self.state.item}
type={self.state.filterCatalogByTypeValue}
/>
const name = path.join('.');
const isEditable = true;
const isGuid = Property.isGuid(property);
+ const isBoolean = Property.isBoolean(property);
const onChange = onFormFieldValueChanged.bind(container);
const isEnumeration = Property.isEnumeration(property);
const isLeafRef = Property.isLeafRef(property);
return <select key={fieldKey.toString()} id={fieldKey.toString()} className={ClassNames({'-value-not-set': !isValueSet})} name={name} value={value} title={name} onChange={onChange} onFocus={onFocus} onBlur={endEditing} onMouseDown={startEditing} onMouseOver={startEditing} readOnly={!isEditable}>{options}</select>;
}
+ if (isBoolean) {
+ let fullFieldKey = _.isArray(fieldKey) ? fieldKey.join(':') : fieldKey;
+ let containerRef = container;
+ while (containerRef.parent) {
+ fullFieldKey = containerRef.parent.key + ':' + fullFieldKey;
+ containerRef = containerRef.parent;
+ }
+
+ const options = [
+ <option key={fieldKey.toString() + '-true'} value="TRUE">TRUE</option>,
+ <option key={fieldKey.toString() + '-false'} value="FALSE">FALSE</option>
+ ]
+
+ // if (!isValueSet) {
+ const noValueDisplayText = changeCase.title(property.name);
+ options.unshift(<option key={'(value-not-in-leafref)' + fieldKey.toString()} value="" placeholder={placeholder}></option>);
+ // }
+ let val = value;
+ if(typeof(val) == 'number') {
+ val = value ? "TRUE" : "FALSE"
+ }
+ const isValueSet = (val != '' && val)
+ return <select key={fieldKey.toString()} id={fieldKey.toString()} className={ClassNames({'-value-not-set': !isValueSet})} name={name} value={val && val.toUpperCase()} title={name} onChange={onChange} onFocus={onFocus} onBlur={endEditing} onMouseDown={startEditing} onMouseOver={startEditing} readOnly={!isEditable}>{options}</select>;
+ }
+
if (property['preserve-line-breaks']) {
return <textarea key={fieldKey.toString()} cols="5" id={fieldKey.toString()} name={name} value={value} placeholder={placeholder} onChange={onChange} onFocus={onFocus} onBlur={endEditing} onMouseDown={startEditing} onMouseOver={startEditing} onMouseOut={endEditing} onMouseLeave={endEditing} readOnly={!isEditable} />;
}
let html = (
<div className="FileManager">
<PanelWrapper style={{flexDirection: 'column'}}>
- {self.props.files && self.props.files.id && buildList(self, self.props.files) }
+ <Panel className="addFileSection" style={{backgroundColor: 'transparent'}} no-corners>
+ <div className="inputSection">
+ <TextInput placeholder="some/path" value={this.props.newPathName} label="create a new directory" onChange={FileManagerActions.newPathNameUpdated} />
+ <Button label="Create" onClick={FileManagerActions.createDirectory} />
+ </div>
+ </Panel>
+ {self.props.files && self.props.files.id && buildList(self, self.props.files) }
</PanelWrapper>
</div>
)
function contentFolder(context, folder, path, key, inputState, updateFn, sendDownloadFileRequst, deleteFn) {
let type = context.props.type;
let id = context.props.item.id;
- const onboardDropZone = createDropZone.bind(this, FileManagerUploadDropZone.ACTIONS.onboard, '.ComposerAppAddFile.' + path.replace('/', '-'), type, id, path);
+ const onboardDropZone = createDropZone.bind(this, FileManagerUploadDropZone.ACTIONS.onboard, '.ComposerAppAddFile.' + path.replace(/\//g, '-'), type, id, path);
return (
<Panel title={path} key={key} itemClassName="nested" no-corners>
<div className="folder">
<div className="inputSection">
<label className="sqTextInput" style={{flexDirection: 'row', alignItems:'center'}}>
<span>Upload File</span>
- <Button className={'ComposerAppAddFile ' + path.replace('/', '-')} label="BROWSE"/>
+ <Button className={'ComposerAppAddFile ' + path.replace(/\//g, '-')} label="BROWSE"/>
</label>
</div>
)
const name = stripPath(file.name, path);
const id = context.props.item.id;
const type = context.props.type;
+ const downloadHost = API_SERVER.match('localhost') || API_SERVER.match('127.0.0.1') ? `${window.location.protocol}//${window.location.hostname}` : API_SERVER;
//{`${window.location.protocol}//${API_SERVER}:4567/api/package${type}/${id}/${path}/${name}`}
return (
<div className="file" key={key}>
{file.status && (file.status == 'IN_PROGRESS' || file.status == 'DOWNLOADING' ) ? <LoadingIndicator size={2} /> : file.status }
</div>
<div className="file-name">
- <a target="_blank" href={`${API_SERVER}:4567/api/package/${type}/${id}/${path}/${name}`}>{name}</a>
+ <a target="_blank" href={`${downloadHost}:4567/api/package/${type}/${id}/${path}/${name}`}>{name}</a>
</div>
</div>
<div className="file-action" style={{display: (!file.status || (file && file.status.toLowerCase() != 'loading...')) ? 'inherit' : 'none', cursor: 'pointer'}} onClick={deleteFn(file.name)}>X</div>
constructor() {
this.generateActions('getFilelistSuccess', 'getFilelistError', 'updateFileLocationInput','sendDownloadFileRequst', 'addFileSuccess', 'addFileError','deletePackageFile','deleteFileSuccess','deleteFileError','openDownloadMonitoringSocketSuccess', 'openDownloadMonitoringSocketError',
'getFilelistSocketSuccess',
- 'openFileManagerSockets', 'closeFileManagerSockets');
+ 'openFileManagerSockets', 'closeFileManagerSockets','newPathNameUpdated', 'createDirectory');
}
}
},
addFile: function() {
return {
- remote: function(state, id, type, path, url) {
+ remote: function(state, id, type, path, url, refresh) {
return new Promise(function(resolve, reject) {
console.log('Adding file');
console.log(id, type, path, url);
let splitUrl = url.split('/');
let fileName = splitUrl[splitUrl.length -1];
+ let packagePath = refresh ? path + ((path[path.length - 1] == '/') ? '' : '/') : path + '/' + fileName;
$.ajax({
beforeSend: Utils.addAuthorizationStub,
- url: 'api/file-manager?api_server=' + utils.getSearchParams(window.location).api_server +'&package_type=' + type + '&package_id=' + id + '&package_path=' + path + '/' + fileName + '&url=' + url,
+ url: 'api/file-manager?api_server=' + utils.getSearchParams(window.location).api_server +'&package_type=' + type + '&package_id=' + id + '&package_path=' + packagePath + '&url=' + url,
success: function(data) {
resolve({
data:data,
path: path,
- fileName: fileName
+ fileName: fileName,
+ refresh: refresh
});
},
error: function(error) {
return new Promise(function(resolve, reject) {
//api/operational/download-jobs/job/
$.ajax({
- url: '/socket-polling?api_server=' + API_SERVER ,
+ url: '/socket-polling',
type: 'POST',
beforeSend: Utils.addAuthorizationStub,
data: {
return new Promise(function(resolve, reject) {
//api/operational/download-jobs/job/
$.ajax({
- url: '/socket-polling?api_server=' + API_SERVER ,
+ url: '/socket-polling',
type: 'POST',
beforeSend: Utils.addAuthorizationStub,
data: {
}
new Promise(function(resolve, reject) {
$.ajax({
- url: '/socket-polling?api_server=' + API_SERVER ,
+ url: '/socket-polling',
type: 'POST',
beforeSend: Utils.addAuthorizationStub,
data: {
import utils from '../utils'
export default {
+ isBoolean(property = {}) {
+ return (typeof(property['data-type']) == 'string') && (property['data-type'].toLowerCase() == 'boolean')
+ },
isLeaf(property = {}) {
return /leaf|choice/.test(property.type);
},
let key = fragment.split('[')[0];
let searchObject = {};
searchObject[predicateKey] = predicateValue;
- objectCopy = _.find(objectCopy[key], searchObject);
- if (!objectCopy) {
- return [];
+ let found = _.find(objectCopy[key], searchObject);
+ if (found) {
+ objectCopy = found;
+ } else {
+ // check for numerical value
+ if (predicateValue != "" &&
+ predicateValue != null &&
+ predicateValue != NaN &&
+ predicateValue != Infinity &&
+ predicateValue != -Infinity) {
+ let numericalPredicateValue = _.toNumber(predicateValue);
+ if (_.isNumber(numericalPredicateValue)) {
+ searchObject[predicateKey] = numericalPredicateValue;
+ found = _.find(objectCopy[key], searchObject);
+ }
+ }
+ if (found) {
+ objectCopy = found;
+ } else {
+ return [];
+ }
}
} else {
// contains no predicate
}
function ajaxRequest(path, catalogPackage, resolve, reject, method = 'GET') {
$.ajax({
- url: '//' + window.location.hostname + ':' + getApiServerOrigin() + path,
+ url: '//' + window.location.hostname + ':' + window.location.port + path,
type: method,
beforeSend: utils.addAuthorizationStub,
dataType: 'json',
//Hack for crouton fix. Should eventually put composer in skyquake alt context
import SkyquakeComponent from 'widgets/skyquake_container/skyquakeComponent.jsx';
let NotificationError = null;
+
+import utils from '../libraries/utils';
+
class ComponentBridge extends React.Component {
constructor(props) {
super(props);
this.filesState = {};
this.downloadJobs = {};
this.containers = [];
+ this.newPathName = '';
//End File manager values
this.bindListeners({
onResize: PanelResizeAction.RESIZE,
closeFileManagerSockets: FileManagerActions.closeFileManagerSockets,
openFileManagerSockets: FileManagerActions.openFileManagerSockets,
openDownloadMonitoringSocketSuccess: FileManagerActions.openDownloadMonitoringSocketSuccess,
- getFilelistSocketSuccess: FileManagerActions.getFilelistSocketSuccess
+ getFilelistSocketSuccess: FileManagerActions.getFilelistSocketSuccess,
+ newPathNameUpdated: FileManagerActions.newPathNameUpdated,
+ createDirectory: FileManagerActions.createDirectory
});
this.exportPublicMethods({
closeFileManagerSockets: this.closeFileManagerSockets.bind(this)
data: _.mergeWith(normalizedData.data, self.files.data, function(obj, src) {
return _.uniqBy(obj? obj.concat(src) : src, 'name');
}),
- id: self.files.id || normalizedData.id
+ id: normalizedData.id
},
filesState: filesState
}
let type = data.type || this.item.uiState.type;
let path = data.path;
let url = data.url;
- this.getInstance().addFile(id, type, path, url);
+ this.getInstance().addFile(id, type, path, url, data.refresh);
}
updateFileLocationInput = (data) => {
let name = data.name;
});
}
addFileSuccess = (data) => {
- let path = data.path;
- let fileName = data.fileName;
- let files = _.cloneDeep(this.files);
- let loadingIndex = files.data[path].push({
- status: 'DOWNLOADING',
- name: path + '/' + fileName
- }) - 1;
- this.setState({files: files});
+ if(!data.refresh) {
+ let path = data.path;
+ let fileName = data.fileName;
+ let files = _.cloneDeep(this.files);
+ let loadingIndex = files.data[path].push({
+ status: 'DOWNLOADING',
+ name: path + '/' + fileName
+ }) - 1;
+ this.setState({files: files});
+ }
}
startWatchingJob = () => {
files: files
})
}
+ newPathNameUpdated = (event) => {
+ const value = event.target.value;
+ this.setState({
+ newPathName: value
+ })
+ }
+ createDirectory = () => {
+ console.log(this.newPathName);
+ this.sendDownloadFileRequst({
+ id: this.item.id,
+ type: this.item.uiState.type,
+ path: this.item.name + '/' + this.newPathName,
+ url: utils.getSearchParams(window.location).dev_download_server || window.location.protocol + '//' + window.location.host,
+ refresh: true
+ });
+ this.setState({
+ newPathName: ''
+ })
+ }
}
export default alt.createStore(ComposerAppStore, 'ComposerAppStore');
vdur['console-url'] = 'api/vnfr/' + vnfr.id + '/vdur/' + vdur.id + '/console-url';
nsr['console-urls'].push({
id: vdur.id,
- name: vdur.name,
+ name: vnfr.name,
'console-url': vdur['console-url']
});
});
remote: function() {
return new Promise(function(resolve, reject) {
$.ajax({
- url: '//' + window.location.hostname + ':' + NODE_PORT + '/api/launchpad/network-service?api_server=' + API_SERVER,
+ url: '//' + window.location.hostname + ':' + window.location.port + '/api/launchpad/network-service?api_server=' + API_SERVER,
type: 'GET',
beforeSend: Utils.addAuthorizationStub,
success: function(data) {
return {
remote: function(state, environment) {
return $.ajax({
- url: '//' + window.location.hostname + ':' + NODE_PORT + '/api/launchpad/environment?api_server=' + API_SERVER,
+ url: '//' + window.location.hostname + ':' + window.location.port + '/api/launchpad/environment?api_server=' + API_SERVER,
type: 'POST',
beforeSend: Utils.addAuthorizationStub,
dataType: 'json',
remote: function() {
return new Promise(function(resolve, reject) {
$.ajax({
- url: '//' + window.location.hostname + ':' + NODE_PORT + '/api/launchpad/pools?api_server=' + API_SERVER,
+ url: '//' + window.location.hostname + ':' + window.location.port + '/api/launchpad/pools?api_server=' + API_SERVER,
type: 'GET',
beforeSend: Utils.addAuthorizationStub,
success: function(data) {
remote: function() {
return new Promise(function(resolve, reject) {
$.ajax({
- url: '//' + window.location.hostname + ':' + NODE_PORT + '/api/launchpad/sla-params?api_server=' + API_SERVER,
+ url: '//' + window.location.hostname + ':' + window.location.port + '/api/launchpad/sla-params?api_server=' + API_SERVER,
type: 'GET',
beforeSend: Utils.addAuthorizationStub,
success: function(data) {
return resolve(false);
}
$.ajax({
- url: '/socket-polling?api_server=' + API_SERVER ,
+ url: '/socket-polling',
type: 'POST',
beforeSend: Utils.addAuthorizationStub,
data: {
return new Promise(function(resolve, reject) {
console.log('Getting NSR Socket');
$.ajax({
- url: '/socket-polling?api_server=' + API_SERVER,
+ url: '/socket-polling',
type: 'POST',
beforeSend: Utils.addAuthorizationStub,
data: {
return new Promise(function(resolve, reject) {
console.log('Getting Job Socket');
$.ajax({
- url: '/socket-polling?api_server=' + API_SERVER,
+ url: '/socket-polling',
type: 'POST',
beforeSend: Utils.addAuthorizationStub,
data: {
return new Promise(function(resolve, reject) {
console.log('Getting VNFR Socket for: ' + state.recordID);
$.ajax({
- url: '/socket-polling?api_server=' + API_SERVER,
+ url: '/socket-polling',
type: 'POST',
beforeSend: Utils.addAuthorizationStub,
data: {
return resolve(false);
}
$.ajax({
- url: '/socket-polling?api_server=' + API_SERVER ,
+ url: '/socket-polling',
type: 'POST',
beforeSend: Utils.addAuthorizationStub,
data: {
return resolve(false);
}
$.ajax({
- url: '/socket-polling?api_server=' + API_SERVER ,
+ url: '/socket-polling',
type: 'POST',
beforeSend: Utils.addAuthorizationStub,
data: {
componentWillMount() {
(!this.state.nsrId && this.props.nsrId) && this.Store.saveNSRId(this.props.nsrId);
this.Store.saveMode(this.props.mode);
+ this.Store.saveOnSuccess(this.props.onSuccess);
switch (this.props.mode) {
case 'creating':
if (!this.state.vld) {
saveVnfdIdRefs: this.saveVnfdIdRefs,
saveIpProfileNames: this.saveIpProfileNames,
removeVirtualLink: this.removeVirtualLink,
- saveMode: this.saveMode
+ saveMode: this.saveMode,
+ saveOnSuccess: this.saveOnSuccess
});
}
});
}
+ saveOnSuccess = (onSuccess) => {
+ this.setState({
+ onSuccess: onSuccess
+ })
+ }
+
saveMode = (mode) => {
this.setState({
mode: mode
}
createVirtualLinkSuccess(data) {
- this.setState({
- // vld: this.vld,
- mode: 'editing',
- isLoading: false
- });
+ this.onSuccess();
}
editVirtualLinkSuccess(data) {
- this.setState({
- mode: 'editing',
- isLoading: false
- });
+ this.onSuccess();
}
deleteVirtualLinkSuccess(data) {
- this.setState({
- deleteState: 'success'
- });
+ this.onSuccess();
}
cleanupPayload = (mode, vld) => {
let nsd = nsr.nsd && nsr.nsd;
nsr['decorated-vlrs'] && nsr['decorated-vlrs'].map((vlr, vlrIndex) => {
- let name = vlr.name || 'New virtual link being created';
+ let name = vlr.name || 'Undergoing virtual link operation';
let operationalStatus = vlr['operational-status'];
let vlrId = vlr['id'];
let vldId = vlr['vld-ref'];
<div className="launchpadCard_title" style={{textAlign:'right'}}><span style={{float:'left'}}>VLD DETAILS</span>
</div>
{
- <NSVirtualLinkCreate vld={this.state.editingVirtualLink} mode={this.state.mode} nsd={this.state.nsd} nsrId={this.state.nsrId} onCancel={this.handleCancelCreate}/>
+ <NSVirtualLinkCreate vld={this.state.editingVirtualLink} mode={this.state.mode} nsd={this.state.nsd} nsrId={this.state.nsrId} onSuccess={this.resetState.bind(this)} onCancel={this.handleCancelCreate}/>
}
</div>
);
}
console.log(nsr_id)
$.ajax({
- url: '//' + window.location.hostname + ':' + NODE_PORT + '/socket-polling?api_server=' + API_SERVER,
+ url: '//' + window.location.hostname + ':' + window.location.port + '/socket-polling',
type: 'POST',
beforeSend: Utils.addAuthorizationStub,
data: {
var sslOptions = null;
+ var apiServer = argv['api-server'] ? argv['api-server'] : 'localhost';
+ var uploadServer = argv['upload-server'] ? argv['upload-server'] : null;
+
try {
if (argv['enable-https']) {
var keyFilePath = argv['keyfile-path'];
app.use(inactivity_routes);
// Configure global config with ssl enabled/disabled
- configurationAPI.globalConfiguration.update({
- ssl_enabled: httpsConfigured
- });
+ var globalConfig = {
+ ssl_enabled: httpsConfigured,
+ api_server: apiServer
+ };
+
+ if (uploadServer) {
+ globalConfig.upload_server = uploadServer;
+ }
+
+ configurationAPI.globalConfiguration.update(globalConfig);
// Configure configuration route(s)
app.use(configuration_routes);