Merge branch 'v1.1'

Signed-off-by: Laurence Maultsby <laurence.maultsby@riftio.com>
diff --git a/skyquake/plugins/composer/src/src/components/EditDescriptorModelProperties.js b/skyquake/plugins/composer/src/src/components/EditDescriptorModelProperties.js
index 4ee4345..a69f3bb 100644
--- a/skyquake/plugins/composer/src/src/components/EditDescriptorModelProperties.js
+++ b/skyquake/plugins/composer/src/src/components/EditDescriptorModelProperties.js
@@ -180,6 +180,7 @@
 		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);
@@ -224,6 +225,31 @@
 			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} />;
 		}
diff --git a/skyquake/plugins/composer/src/src/libraries/model/DescriptorModelMetaProperty.js b/skyquake/plugins/composer/src/src/libraries/model/DescriptorModelMetaProperty.js
index 89d1fe9..8fe51d9 100644
--- a/skyquake/plugins/composer/src/src/libraries/model/DescriptorModelMetaProperty.js
+++ b/skyquake/plugins/composer/src/src/libraries/model/DescriptorModelMetaProperty.js
@@ -32,6 +32,9 @@
 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);
 	},
diff --git a/skyquake/plugins/launchpad/src/virtual_links/nsVirtualLinkCreate.jsx b/skyquake/plugins/launchpad/src/virtual_links/nsVirtualLinkCreate.jsx
index 30f7694..d3dc011 100644
--- a/skyquake/plugins/launchpad/src/virtual_links/nsVirtualLinkCreate.jsx
+++ b/skyquake/plugins/launchpad/src/virtual_links/nsVirtualLinkCreate.jsx
@@ -39,6 +39,7 @@
 	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) {
diff --git a/skyquake/plugins/launchpad/src/virtual_links/nsVirtualLinkCreateStore.js b/skyquake/plugins/launchpad/src/virtual_links/nsVirtualLinkCreateStore.js
index 61ebe3d..dbd7f58 100644
--- a/skyquake/plugins/launchpad/src/virtual_links/nsVirtualLinkCreateStore.js
+++ b/skyquake/plugins/launchpad/src/virtual_links/nsVirtualLinkCreateStore.js
@@ -84,7 +84,8 @@
             saveVnfdIdRefs: this.saveVnfdIdRefs,
             saveIpProfileNames: this.saveIpProfileNames,
             removeVirtualLink: this.removeVirtualLink,
-            saveMode: this.saveMode
+            saveMode: this.saveMode,
+            saveOnSuccess: this.saveOnSuccess
         });
 	}
 
@@ -97,6 +98,12 @@
 		});
 	}
 
+	saveOnSuccess = (onSuccess) => {
+		this.setState({
+			onSuccess: onSuccess
+		})
+	}
+
 	saveMode = (mode) => {
 		this.setState({
 			mode: mode
@@ -240,22 +247,13 @@
 	}
 
 	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) => {
diff --git a/skyquake/plugins/launchpad/src/virtual_links/nsVirtualLinks.jsx b/skyquake/plugins/launchpad/src/virtual_links/nsVirtualLinks.jsx
index 8870dfc..fa09d9f 100644
--- a/skyquake/plugins/launchpad/src/virtual_links/nsVirtualLinks.jsx
+++ b/skyquake/plugins/launchpad/src/virtual_links/nsVirtualLinks.jsx
@@ -137,7 +137,7 @@
 		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'];
@@ -208,7 +208,7 @@
                 	<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>
             );