portainer--portainer
30 行
985 B
JavaScript
30 行
985 B
JavaScript
import _ from 'lodash-es';
|
|
import { ExternalStackViewModel } from '@/react/docker/stacks/view-models/external-stack';
|
|
import { validateYAML } from '@/react/docker/stacks/common/stackYamlValidation';
|
|
|
|
angular.module('portainer.app').factory('StackHelper', [
|
|
function StackHelperFactory() {
|
|
'use strict';
|
|
var helper = {};
|
|
|
|
helper.getExternalStacksFromContainers = function (containers) {
|
|
return getExternalStacksFromLabel(containers, 'com.docker.compose.project', 2);
|
|
};
|
|
|
|
helper.getExternalStacksFromServices = function (services) {
|
|
return getExternalStacksFromLabel(services, 'com.docker.stack.namespace', 1);
|
|
};
|
|
|
|
function getExternalStacksFromLabel(items, label, type) {
|
|
return _.uniqBy(
|
|
items.filter((item) => item.Labels && item.Labels[label]).map((item) => new ExternalStackViewModel(item.Labels[label], type, item.Created)),
|
|
'Name'
|
|
);
|
|
}
|
|
|
|
helper.validateYAML = validateYAML;
|
|
|
|
return helper;
|
|
},
|
|
]);
|