/*
- *
+ *
* Copyright 2016 RIFT.IO Inc
*
* Licensed under the Apache License, Version 2.0 (the "License");
import CatalogDescriptorRaw from './catalogDescriptorRaw.jsx'
import SkyquakeComponent from 'widgets/skyquake_container/skyquakeComponent.jsx';
import {Panel, PanelWrapper} from 'widgets/panel/panel';
-import Button from 'widgets/button/rw.button.js'
+import Button from 'widgets/button/rw.button.js';
+import {SkyquakeRBAC, isRBACValid} from 'widgets/skyquake_rbac/skyquakeRBAC.jsx';
+import ROLES from 'utils/roleConstants.js';
import 'style/layout.scss';
import './instantiateDashboard.scss';
+const PROJECT_ROLES = ROLES.PROJECT;
+const PLATFORM = ROLES.PLATFORM;
+
class InstantiateDashboard extends React.Component {
constructor(props) {
super(props);
asyncOperations.push(this.Store.getCatalog());
asyncOperations.push(this.Store.getCloudAccount(function() {
asyncOperations.push(self.Store.getDataCenters());
+ asyncOperations.push(self.Store.getResourceOrchestrator());
asyncOperations.push(self.Store.getSshKey());
asyncOperations.push(self.Store.getConfigAgent());
+ asyncOperations.push(self.Store.getResourceOrchestrator());
}));
Promise.all(asyncOperations).then(function(resolve, reject) {
if(self.props.params.nsd) {
self.props.actions.showNotification('Spaces and special characters except underscores are not supported in the network service name at this time');
return;
}
- if (this.isOpenMano() && (this.state.dataCenterID == "" || !this.state.dataCenterID)) {
+ if (this.state.isOpenMano && (this.state.dataCenterID == "" || !this.state.dataCenterID)) {
self.props.actions.showNotification("Please enter the Data Center ID");
return;
}
return !this.props.location.pathname.split('/')[2];
}
isOpenMano = () => {
- return this.state.selectedCloudAccount['account-type'] == 'openmano';
+ return this.state.ro['account-type'] == 'openmano';
}
openDescriptor = (descriptor) => {
let NSD = descriptor;
let html;
let selectedNSDid = self.state.selectedNSDid;
let isPreviewing = self.state.isPreviewing;
+ const hasAccess = isRBACValid(this.context.userProfile, [PROJECT_ROLES.LCM_ADMIN]);
let descriptorPreview = (
<Panel title={(self.state.selectedNSD['short-name'] || self.state.selectedNSD.name ) + ' Descriptor Preview'} className="CatalogDescriptorPreview">
<span className="oi CatalogDescriptorPreview-button" data-glyph={"circle-x"} onClick={self.Store.deselectDescriptor}></span>
<Button label="Cancel" onClick={this.handleCancel}/>
{this.isSelectPage() ?
- <Button label="Next" isLoading={this.state.isSaving} onClick={this.state.selectedNSD && self.openDescriptor} className="dark" type="submit"/>
+ <Button label="Next" isLoading={this.state.isSaving} onClick={this.state.selectedNSD && self.openDescriptor} className="dark" type="submit"/>
: <div>
<Button label="Back" onClick={this.handleBack}/>
- <Button label="Launch" isLoading={this.state.isSaving} onClick={self.handleSave.bind(self, true)} className="dark" type="submit"/>
+ { hasAccess ? <Button label="Launch" isLoading={this.state.isSaving} onClick={self.handleSave.bind(self, true)} className="dark" type="submit"
+ /> : null}
</div>
}
</div>
}
}
InstantiateDashboard.contextTypes = {
- router: React.PropTypes.object
+ router: React.PropTypes.object,
+ userProfile: React.PropTypes.object
};
export default SkyquakeComponent(InstantiateDashboard);