Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
18 commits
Select commit Hold shift + click to select a range
ace594f
Updated saas boost code with FSX ONTAP addition
netapp-dhruv-tyagi Feb 23, 2022
6d3a9d3
fixed bugs
netapp-dhruv-tyagi Feb 23, 2022
1bf2684
Merge branch 'main' of https://github.com/netapp-vedantsethia/aws-saa…
netapp-dhruv-tyagi Feb 23, 2022
ee4c5f0
Merge pull request #1 from netapp-vedantsethia/main
netapp-vedantsethia Feb 23, 2022
b3d4cc5
Added Volume capability for FSx ONTAP
netapp-vedantsethia Feb 23, 2022
1bb4251
UI Modifications for FSx ONTAP
netapp-vedantsethia Feb 25, 2022
0359681
Merge pull request #3 from netapp-vedantsethia/test-vedant
netapp-vedantsethia Feb 25, 2022
679f54f
Added extra parameters for FSx ONTAP
netapp-dhruv-tyagi Feb 28, 2022
2147f30
Merge pull request #4 from netapp-vedantsethia/main
netapp-vedantsethia Mar 2, 2022
500743c
Fixed Permissions for FSx ONTAP
netapp-vedantsethia Mar 3, 2022
1b69a05
Merge pull request #5 from netapp-vedantsethia/test-vedant
netapp-vedantsethia Mar 3, 2022
c28592a
Updated UI code to fix ontap volume size bug and updated READMEs to i…
netapp-dhruv-tyagi Mar 7, 2022
af9a400
Removed temporary testing code and reduced ontapVolume variables
netapp-dhruv-tyagi Mar 8, 2022
4aeb31c
Onboarding service update
netapp-vedantsethia Mar 8, 2022
6833f3f
Merge branch 'main' into test-vedant
netapp-vedantsethia Mar 8, 2022
7bd8c3a
Merge pull request #6 from netapp-vedantsethia/test-vedant
netapp-vedantsethia Mar 8, 2022
4ffd2dd
Onboarding service update
netapp-vedantsethia Mar 8, 2022
6fca99e
Removed testing key-pair
netapp-vedantsethia Mar 8, 2022
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
17 changes: 17 additions & 0 deletions client/web/src/settings/ApplicationComponent.js
Original file line number Diff line number Diff line change
Expand Up @@ -99,6 +99,10 @@ export function ApplicationComponent(props) {
weeklyMaintenanceTime: '07:01:00',
weeklyMaintenanceDay: '1',
windowsMountDrive: 'G:',
useOntap: 'false',
ontapVolumeSize: '1',
storageGbOntap: 1024,
throughputMbsOntap: 128,
};
}
const [day, time] = getParts(fsx.weeklyMaintenanceTime);
Expand Down Expand Up @@ -207,6 +211,19 @@ export function ApplicationComponent(props) {
dailyBackupTime: Yup.string().required('Daily backup time is required'),
weeklyMaintenanceTime: Yup.string().required('Weekly maintenance time is required'),
windowsMountDrive: Yup.string().required('Windows mount drive is required'),
useOntap: Yup.string().required('Value is required'),
ontapVolumeSize: Yup.number()
.required()
.min(1, 'Minimum Volume Size is 1 GB')
.max(100, 'Maximum Volume Size is 100 GB'),
storageGbOntap: Yup.number()
.required()
.min(1024, 'Storage minimum is 1024 GB')
.max(102400, 'Storage maximum is 102400 GB'),
throughputMbsOntap: Yup.number()
.required()
.min(128, 'Throughput minimum is 128 MB/s')
.max(2048, 'Throughput maximum is 2048 MB/s'),
}),
otherwise: Yup.object().nullable(),
}),
Expand Down
279 changes: 268 additions & 11 deletions client/web/src/settings/FileSystemSubform.js
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,6 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/

import React, { Fragment } from 'react';
import {
Row,
Expand All @@ -27,10 +26,10 @@ import {
FormGroup,
Label,
} from 'reactstrap';
import { Field } from 'formik';
import { SaasBoostSelect, SaasBoostInput, SaasBoostCheckbox } from '../components/FormComponents';
import Slider from 'rc-slider';
import 'rc-slider/assets/index.css';

export default class FileSystemSubform extends React.Component {
render() {
return (
Expand All @@ -53,13 +52,28 @@ export default class FileSystemSubform extends React.Component {
isLocked={this.props.isLocked}
values={this.props.filesystem}
></EfsFilesystemOptions>
<FsxFilysystemType
formik={this.props.formik}
provisionFs={this.props.provisionFs}
containerOs={this.props.containerOs}
isLocked={this.props.isLocked}
values={this.props.filesystem}
></FsxFilysystemType>
<FsxFilesystemOptions
formik={this.props.formik}
provisionFs={this.props.provisionFs}
containerOs={this.props.containerOs}
isLocked={this.props.isLocked}
values={this.props.filesystem}
></FsxFilesystemOptions>
<FsxFilesystemOntapOptions
formik={this.props.formik}
provisionFs={this.props.provisionFs}
containerOs={this.props.containerOs}
isLocked={this.props.isLocked}
values={this.props.filesystem}
>
</FsxFilesystemOntapOptions>
</CardBody>
</Card>
</Col>
Expand All @@ -68,7 +82,6 @@ export default class FileSystemSubform extends React.Component {
);
}
}

const EfsFilesystemOptions = (props) => {
return (
props.provisionFs &&
Expand Down Expand Up @@ -108,37 +121,66 @@ const EfsFilesystemOptions = (props) => {
)
);
};

const FsxFilysystemType = (props) => {
return (
props.provisionFs &&
props.containerOs === 'WINDOWS' && (
<FormGroup>
<div className="mb-2">File System Type</div>
<FormGroup check inline>
<Field
className="form-check-input"
type="radio"
id="inline-radio11"
name="filesystem.fsx.useOntap"
value="true"
disabled={props.isLocked}
/>
<Label className="form-check-label" check htmlFor="inline-radio11">
<i className="fa fa-cubes"></i> FSx ONTAP
</Label>
</FormGroup>
<FormGroup check inline>
<Field
className="form-check-input"
type="radio"
id="inline-radio22"
name="filesystem.fsx.useOntap"
value="false"
disabled={props.isLocked}
/>
<Label className="form-check-label" check htmlFor="inline-radio22">
<i className="fa fa-windows"></i> FSx Windows
</Label>
</FormGroup>
</FormGroup>
)
);
};
const FsxFilesystemOptions = (props) => {
const fsMarks = {
32: '32',
1024: '1024',
};

const tpMarks = {
8: '8',
2048: '2048',
};

const onStorageChange = (val) => {
props.formik.setFieldValue('filesystem.fsx.storageGb', val);
};

const onThroughputChange = (val) => {
props.formik.setFieldValue('filesystem.fsx.throughputMbs', val);
};

const onWeeklyMaintTimeChange = (val) => {
props.formik.setFieldValue('filesystem.fsx.weeklyMaintenanceTime', val.target.value);
};

const onWeeklyDayChange = (val) => {
props.formik.setFieldValue('filesystem.fsx.weeklyMaintenanceDay', val.target.value);
};

return (
props.provisionFs &&
props.containerOs === 'WINDOWS' && (
props.containerOs === 'WINDOWS' && props.formik.values.filesystem.fsx.useOntap === 'false' && (
<Row>
<Col sm={6} className="mt-2">
<SaasBoostInput
Expand Down Expand Up @@ -293,3 +335,218 @@ const FsxFilesystemOptions = (props) => {
)
);
};
const FsxFilesystemOntapOptions = (props) => {
const fsMarksOntap = {
1024: '1024',
10240: '10240',
};
const tpMarksOntap = {
128: '128',
2048: '2048',
};
const volMarks = {
1: '1',
100: '100',
};
const onStorageChangeOntap = (val) => {
props.formik.setFieldValue('filesystem.fsx.storageGbOntap', val);
};
const onThroughputChangeOntap = (val) => {
props.formik.setFieldValue('filesystem.fsx.throughputMbsOntap', val);
};
const onOntapVolumeChange = (val) => {
props.formik.setFieldValue('filesystem.fsx.ontapVolumeSize', val);
};
const onWeeklyMaintTimeChange = (val) => {
props.formik.setFieldValue('filesystem.fsx.weeklyMaintenanceTime', val.target.value);
};
const onWeeklyDayChange = (val) => {
props.formik.setFieldValue('filesystem.fsx.weeklyMaintenanceDay', val.target.value);
};
return (
props.provisionFs &&
props.containerOs === 'WINDOWS' && props.formik.values.filesystem.fsx.useOntap === 'true' && (
<Row>
<Col sm={6} className="mt-2">
<SaasBoostInput
key="filesystem.mountPoint"
label="Mount point"
name="filesystem.mountPoint"
type="text"
disabled={props.isLocked}
/>
<Row>
<Col xs={3}>
<FormGroup>
<Label htmlFor="storageVal">Storage Capacity</Label>
<Input
id="storageVal"
className="mb-4"
type="number"
value={props.values?.fsx.storageGbOntap}
readOnly
></Input>
</FormGroup>
</Col>
<Col xs={9}>
<FormGroup>
<Label htmlFor="storage">In GB</Label>
<Slider
id="storage"
defaultValue={props.values?.fsx.storageGbOntap}
onChange={onStorageChangeOntap}
className="mb-4"
marks={fsMarksOntap}
included={false}
min={1024}
max={10240}
step={256}
/>
</FormGroup>
</Col>
</Row>
<Row>
<Col xs={3}>
<FormGroup>
<Label htmlFor="throughputVal">Throughput</Label>
<Input
id="throughputVal"
className="mb-4"
type="number"
value={props.values?.fsx.throughputMbsOntap}
readOnly
></Input>
</FormGroup>
</Col>
<Col xs={9}>
<FormGroup>
<Label htmlFor="throughput">In MB/s</Label>
<Slider
id="throughput"
defaultValue={props.values?.fsx.throughputMbsOntap}
onChange={onThroughputChangeOntap}
marks={tpMarksOntap}
className="mb-4"
included={false}
min={128}
max={2048}
step={128}
/>
</FormGroup>
</Col>
</Row>
<Row>
<Col xs={3}>
<FormGroup>
<Label htmlFor="ontapVolumeSizeval">ONTAP Volume Size</Label>
<Input
id="ontapVolumeSizeval"
className="mb-4"
type="number"
value={props.values?.fsx.ontapVolumeSize}
readOnly
></Input>
</FormGroup>
</Col>
<Col xs={9}>
<FormGroup>
<Label htmlFor="ontapVolumeSize">In GB</Label>
<Slider
id="ontapVolumeSize"
defaultValue={props.values?.fsx.ontapVolumeSize}
onChange={onOntapVolumeChange}
marks={volMarks}
className="mb-4"
included={false}
min={1}
max={100}
step={1}
/>
</FormGroup>
</Col>
</Row>
</Col>
<Col sm={6} className="mt-2">
<Row>
<Col xs={6}>
<SaasBoostInput
key="filesystem.fsx.dailyBackupTime"
label="Daily Backup Time (UTC)"
name="filesystem.fsx.dailyBackupTime"
type="time"
disabled={props.isLocked}
/>
</Col>
<Col xs={6}>
<Label>Weekly Maintenance Day/Time (UTC)</Label>
<InputGroup className="mb-3">
<InputGroupAddon addonType="prepend">
<Input
type="select"
onChange={onWeeklyDayChange}
value={props.values?.fsx.weeklyMaintenanceDay}
>
<option value="1">Sun</option>
<option value="2">Mon</option>
<option value="3">Tue</option>
<option value="4">Wed</option>
<option value="5">Thu</option>
<option value="6">Fri</option>
<option value="7">Sat</option>
</Input>
</InputGroupAddon>
<Input
key="filesystem.fsx.weeklyMaintenanceTime"
onChange={onWeeklyMaintTimeChange}
value={props.values?.fsx.weeklyMaintenanceTime}
name="filesystem.fsx.weeklyMaintenanceTime"
type="time"
disabled={props.isLocked}
/>
</InputGroup>
</Col>
</Row>
<Row>
<Col xs={6}>
<SaasBoostSelect
id="filesystem.fsx.windowsMountDrive"
label="Drive Letter Assignment"
name="filesystem.fsx.windowsMountDrive"
value={props.values?.fsx.windowsMountDrive}
>
<option value="G:">G:</option>
<option value="H:">H:</option>
<option value="I:">I:</option>
<option value="J:">J:</option>
<option value="K:">K:</option>
<option value="L:">L:</option>
<option value="M:">M:</option>
<option value="N:">N:</option>
<option value="O:">O:</option>
<option value="P:">P:</option>
<option value="Q:">Q:</option>
<option value="R:">R:</option>
<option value="S:">S:</option>
<option value="T:">T:</option>
<option value="U:">U:</option>
<option value="V:">V:</option>
<option value="X:">X:</option>
<option value="Y:">Y:</option>
<option value="Z:">Z:</option>
</SaasBoostSelect>
</Col>
<Col xs={6}>
<SaasBoostInput
key="filesystem.fsx.backupRetentionDays"
label="Backup Retention (Days)"
name="filesystem.fsx.backupRetentionDays"
type="number"
disabled={props.isLocked}
/>
</Col>
</Row>
</Col>
</Row>
)
);
};
2 changes: 1 addition & 1 deletion docs/getting-started.md
Original file line number Diff line number Diff line change
Expand Up @@ -70,7 +70,7 @@ To initiate this process, perform the following steps:
6. Enter the email address of the AWS SaaS Boost administrator who will receive the initial temporary password.
7. Indicate whether you would like the metrics and analytics features of AWS SaaS Boost to be installed (Y/N). This is **optional** and will provision a [Redshift](https://aws.amazon.com/redshift) cluster.
- If you enter **Y**, you are prompted for [QuickSight](https://aws.amazon.com/quicksight/) setup. To select Y for Quicksight setup, _you must have already registered_ for at least a Standard account of Quicksight in your AWS Account by following the steps at [https://docs.aws.amazon.com/quicksight/latest/user/signing-up.html](https://docs.aws.amazon.com/quicksight/latest/user/signing-up.html).
8. If your application is Windows based and needs a shared file system, a [Managed Active Directory](https://aws.amazon.com/directoryservice/) must be deployed to support [Amazon FSx for Windows File Server](https://aws.amazon.com/fsx/windows/). Select y or n as needed.
8. If your application is Windows based and needs a shared file system, a [Managed Active Directory](https://aws.amazon.com/directoryservice/) must be deployed to support [Amazon FSx for Windows File Server](https://aws.amazon.com/fsx/windows/) or [Amazon FSx for NetApp ONTAP](https://aws.amazon.com/fsx/netapp-ontap/). Select y or n as needed.
9. Review the settings for your installation. Enter **y** to proceed or **n** to re-enter or adjust the values.

The execution of this process will take 30-45 minutes to provision and configure all the resources (this will vary based on the options you've selected). Detailed logs from the installation process are stored in **saas-boost-install.log**.
Expand Down
Binary file added docs/images/ug-filesystem-fsx-ontap.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added docs/images/ug-filesystem-fsx-windows.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
1 change: 1 addition & 0 deletions docs/services.md
Original file line number Diff line number Diff line change
Expand Up @@ -22,6 +22,7 @@ EFS\
Elastic Load Balancer\
EventBridge\
FSx for Windows Shares\
FSx for NetApp ONTAP\
Fargate\
Glue\
IAM\
Expand Down
Loading