You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
portainer/app/integrations/storidge/services/driveService.js

82 lines
2.2 KiB

feat(integrations): storidge evolution (#2711) * feat(storidge): update storidge routes * feat(storidge): add new fields on profile create/edit * feat(storidge): add drives list and details view * feat(storidge): add node details / cordon / uncordon / remove * feat(storidge): add volume and snapshot details * feat(storidge): add snapshot creation on volume details * feat(storidge): add rescan drives button * refactor(storidge): move add / remove / put in / put ouf maintenance buttons for cluster nodes * style(storidge): change cluster / node icon color based on status * feat(storidge): profiles can enable snapshots without interval + interval in minutes * refactor(storidge): split cluster and node status badge filter * fix(storidge): error on volume IOPS update * fix(storidge): snapshot can now be created without comments * feat(storidge): remove snapshots panels when volume snapshots are disabled * fix(app): paginatedItemLimit now retrieved for datables extending GenericDatatableController * fix(storidge): addDrive is called with the good parameters * fix(storidge): update model and views for Storidge v2695 * refactor(storidge): webpack migration * fix(storidge): display modifications + fix js errors * feat(storidge): snapshots, profile and nodes evolution * fix(storidge): values for InterfaceDriver on profile create/edit * feat(storidge): v5 update without style (profile / statuses / volume) * fix(storidge): description tables on the same view have now the same fixed offset * fix(app): override rdash-ui select style * Revert "fix(app): override rdash-ui select style" This reverts commit e7248332611345dc803be83560282517c44c0646. * feat(storidge): wip on update 6 * feat(storidge): update 6 * feat(storidge): update 6 * feat(storidge): update 6 * feat(storidge): update 7 - node details + cluster views * fix(storidge): update 7 - profiles creation + volume details * fix(storidge): update 7 - profile create/edit interface type * feat(storidge): update 8 - add drive * feat(storidge): update 8 - UI refactors + cluster availability * fix(storidge): update 8 - revert cluster availability * feat(storidge): update 8 - node availability on swarm overview * feat(storidge): cluster condition badge * fix(storidge): update 9 - move add storage button + api profile filesystem kv to obj * feat(storidge): update 9 - disable add drive button when action is in progress * fix(storidge): update 9 - add drive button will now change only for the concerned drive * fix(storidge): update 10 - disable remove drive button when removal in progress * fix(api): update Storidge proxy creation process * refactor(api): update version number * feat(extensions): fix an issue with Storidge API URL * feat(storidge): force the use of a manager node
6 years ago
import { StoridgeDriveModel } from '../models/drive';
angular.module('portainer.integrations.storidge').factory('StoridgeDriveService', [
'$q',
'Storidge',
function StoridgeDriveServiceFactory($q, Storidge) {
'use strict';
var service = {};
service.drives = function () {
var deferred = $q.defer();
Storidge.queryDrives()
.$promise.then(function success(data) {
var driveData = data.drives;
var drives = driveData.map(function (drive) {
return new StoridgeDriveModel(drive);
});
deferred.resolve(drives);
})
.catch(function error(err) {
deferred.reject({ msg: 'Unable to retrieve Storidge drives', err: err });
});
return deferred.promise;
};
service.drive = function (id) {
var deferred = $q.defer();
Storidge.getDrive({ id: id })
.$promise.then(function success(data) {
var drive = new StoridgeDriveModel(data);
Storidge.getNode({ id: data.nodeid }).$promise.then(function (data) {
drive.Node = data.name;
deferred.resolve(drive);
});
})
.catch(function error(err) {
deferred.reject({ msg: 'Unable to retrieve Storidge drive', err: err });
});
return deferred.promise;
};
service.add = function (device, node) {
var deferred = $q.defer();
Storidge.addDrive({ device: device, node: node })
.$promise.then(function success() {
deferred.resolve();
})
.catch(function error(err) {
deferred.reject({ msg: 'Unable to add Storidge drive', err: err });
});
return deferred.promise;
};
service.remove = function (id) {
var deferred = $q.defer();
Storidge.removeDrive({ id: id })
.$promise.then(function success() {
deferred.resolve();
})
.catch(function error(err) {
deferred.reject({ msg: 'Unable to remove Storidge drive', err: err });
});
return deferred.promise;
};
service.rescan = function () {
return Storidge.rescanDrives().$promise;
};
return service;
},
]);