From 5222413532bad44475eec9b1bc515d03253d6749 Mon Sep 17 00:00:00 2001 From: baron_l Date: Thu, 9 Aug 2018 10:33:16 +0200 Subject: [PATCH] feat(volume-creation) : NFS volume creation (#2083) (#2108) * feat(volume-creation): NFS support for volume creation - layout * feat(volume-creation): NFS support for volume creation * fix(volume-creation): NFS style, display and check on submit * refactor(volume-creation): remove useless controller + refactor var naming * refactor(volume-creation): NFS wording, help and style --- .../volumesNFSForm/volumes-nfs-form.js | 6 ++ .../volumesNFSForm/volumesNFSFormModel.js | 8 ++ .../volumesNFSForm/volumesnfsForm.html | 90 +++++++++++++++++++ .../volumes/create/createVolumeController.js | 20 ++++- .../views/volumes/create/createvolume.html | 15 ++-- 5 files changed, 131 insertions(+), 8 deletions(-) create mode 100644 app/docker/components/volumesNFSForm/volumes-nfs-form.js create mode 100644 app/docker/components/volumesNFSForm/volumesNFSFormModel.js create mode 100644 app/docker/components/volumesNFSForm/volumesnfsForm.html diff --git a/app/docker/components/volumesNFSForm/volumes-nfs-form.js b/app/docker/components/volumesNFSForm/volumes-nfs-form.js new file mode 100644 index 000000000..423c3bed0 --- /dev/null +++ b/app/docker/components/volumesNFSForm/volumes-nfs-form.js @@ -0,0 +1,6 @@ +angular.module('portainer.docker').component('volumesNfsForm', { + templateUrl: 'app/docker/components/volumesNFSForm/volumesnfsForm.html', + bindings: { + data: '=' + } +}); diff --git a/app/docker/components/volumesNFSForm/volumesNFSFormModel.js b/app/docker/components/volumesNFSForm/volumesNFSFormModel.js new file mode 100644 index 000000000..a1204dccb --- /dev/null +++ b/app/docker/components/volumesNFSForm/volumesNFSFormModel.js @@ -0,0 +1,8 @@ +function VolumesNFSFormData() { + this.useNFS = false; + this.serverAddress = ''; + this.mountPoint = ''; + this.version = 'NFS4'; + this.options = 'rw,noatime,rsize=8192,wsize=8192,tcp,timeo=14'; + this.versions = ['NFS4', 'NFS']; +} \ No newline at end of file diff --git a/app/docker/components/volumesNFSForm/volumesnfsForm.html b/app/docker/components/volumesNFSForm/volumesnfsForm.html new file mode 100644 index 000000000..bd0d1014c --- /dev/null +++ b/app/docker/components/volumesNFSForm/volumesnfsForm.html @@ -0,0 +1,90 @@ +
+
+ + +
+ +
+ +
+ NFS Settings +
+ +
+ +
+ +
+
+
+
+
+

+ This field is required.

+
+
+
+ + +
+ +
+ +
+
+
+
+
+

+ This field is required.

+
+
+
+ + +
+ +
+ +
+
+
+
+
+

+ This field is required.

+
+
+
+ + +
+ +
+ +
+
+
+
+
+

+ This field is required.

+
+
+
+ +
+
+ +
\ No newline at end of file diff --git a/app/docker/views/volumes/create/createVolumeController.js b/app/docker/views/volumes/create/createVolumeController.js index 5180f3976..a9ccec09b 100644 --- a/app/docker/views/volumes/create/createVolumeController.js +++ b/app/docker/views/volumes/create/createVolumeController.js @@ -6,7 +6,8 @@ function ($q, $scope, $state, VolumeService, PluginService, ResourceControlServi Driver: 'local', DriverOptions: [], AccessControlData: new AccessControlFormData(), - NodeName: null + NodeName: null, + NFSData: new VolumesNFSFormData() }; $scope.state = { @@ -36,8 +37,19 @@ function ($q, $scope, $state, VolumeService, PluginService, ResourceControlServi return true; } - $scope.create = function () { + function prepareNFSConfiguration(driverOptions) { + var data = $scope.formValues.NFSData; + driverOptions.push({ name: 'type', value: data.version.toLowerCase() }); + + var options = 'addr=' + data.serverAddress + ',' + data.options; + driverOptions.push({ name: 'o', value: options }); + + var mountPoint = data.mountPoint[0] === ':' ? data.mountPoint : ':' + data.mountPoint; + driverOptions.push({ name: 'device', value: mountPoint }); + } + + $scope.create = function () { var name = $scope.formValues.Name; var driver = $scope.formValues.Driver; var driverOptions = $scope.formValues.DriverOptions; @@ -47,6 +59,10 @@ function ($q, $scope, $state, VolumeService, PluginService, ResourceControlServi driverOptions.push({ name: 'profile', value: storidgeProfile.Name }); } + if ($scope.formValues.NFSData.useNFS) { + prepareNFSConfiguration(driverOptions); + } + var volumeConfiguration = VolumeService.createVolumeConfiguration(name, driver, driverOptions); var accessControlData = $scope.formValues.AccessControlData; var userDetails = Authentication.getUserDetails(); diff --git a/app/docker/views/volumes/create/createvolume.html b/app/docker/views/volumes/create/createvolume.html index 0547eef8a..a591661d8 100644 --- a/app/docker/views/volumes/create/createvolume.html +++ b/app/docker/views/volumes/create/createvolume.html @@ -9,11 +9,11 @@
-
+
- -
+ +
@@ -23,8 +23,8 @@
- -
+ +
@@ -62,6 +62,9 @@
+ + +
@@ -89,7 +92,7 @@
-