diff --git a/app/helpers/manageiq/providers/nuage/toolbar_overrides/network_router_center.rb b/app/helpers/manageiq/providers/nuage/toolbar_overrides/network_router_center.rb new file mode 100644 index 0000000000..0b896ac151 --- /dev/null +++ b/app/helpers/manageiq/providers/nuage/toolbar_overrides/network_router_center.rb @@ -0,0 +1,35 @@ +module ManageIQ + module Providers + module Nuage + module ToolbarOverrides + class NetworkRouterCenter < ::ApplicationHelper::Toolbar::Override + button_group( + 'nuage_network_router', + [ + select( + :nuage_network_router, + 'fa fa-cog fa-lg', + t = N_('Edit'), + t, + :items => [ + button( + :nuage_create_cloud_subnet, + 'pficon pficon-add-circle-o fa-lg', + t = N_('Create L3 Cloud Subnet'), + t, + :data => {'function' => 'sendDataWithRx', + 'function-data' => {:controller => 'provider_dialogs', + :button => :nuage_create_cloud_subnet, + :modal_title => N_('Create L3 Cloud Subnet'), + :component_name => 'CreateNuageCloudSubnetForm'}.to_json}, + :klass => ApplicationHelper::Button::ButtonWithoutRbacCheck + ), + ] + ) + ] + ) + end + end + end + end +end diff --git a/app/javascript/components/create-nuage-cloud-subnet-form.jsx b/app/javascript/components/create-nuage-cloud-subnet-form.jsx new file mode 100644 index 0000000000..fe5e2241eb --- /dev/null +++ b/app/javascript/components/create-nuage-cloud-subnet-form.jsx @@ -0,0 +1,53 @@ +import React from 'react'; +import PropTypes from 'prop-types'; +import { connect } from 'react-redux'; +import NuageCloudSubnetForm from './forms/nuage-cloud-subnet-form' +import { handleApiError, createSubnet, fetchRouter } from '../utils/api.js' + +class CreateNuageCloudSubnetForm extends React.Component { + constructor(props) { + super(props); + this.handleFormStateUpdate = this.handleFormStateUpdate.bind(this); + this.state = { + loading: true + } + } + + componentDidMount() { + this.props.dispatch({ + type: 'FormButtons.init', + payload: { + newRecord: true, + pristine: true, + addClicked: () => createSubnet(this.state.values, this.state.emsId, this.state.routerRef) + } + }); + fetchRouter(ManageIQ.record.recordId).then(router => { + this.setState({emsId: router.ems_id, routerRef: router.ems_ref, loading: false}); + }, handleApiError(this)); + } + + handleFormStateUpdate(formState) { + this.props.dispatch({ type: 'FormButtons.saveable', payload: formState.valid }); + this.props.dispatch({ type: 'FormButtons.pristine', payload: formState.pristine }); + this.setState({ values: formState.values }); + } + + render() { + if(this.state.error) { + return
{this.state.error}
+ } + return ( +