mirror of https://github.com/portainer/portainer
feat(app): push pull template edit
parent
213592e97c
commit
5a104c43b8
|
@ -81,25 +81,31 @@ function RegistryServiceFactory($q, $async, Registries, DockerHubService, ImageH
|
||||||
return $q.all(promises);
|
return $q.all(promises);
|
||||||
};
|
};
|
||||||
|
|
||||||
|
service.retrievePorRegistryModelFromRepositoryWithRegistries = retrievePorRegistryModelFromRepositoryWithRegistries;
|
||||||
|
|
||||||
|
function retrievePorRegistryModelFromRepositoryWithRegistries(repository, registries) {
|
||||||
|
const model = new PorImageRegistryModel();
|
||||||
|
const registry = _.find(registries, (reg) => _.includes(repository, reg.URL));
|
||||||
|
if (registry) {
|
||||||
|
const lastIndex = repository.lastIndexOf(registry.URL) + registry.URL.length;
|
||||||
|
const image = repository.substring(lastIndex + 1);
|
||||||
|
model.Registry = registry;
|
||||||
|
model.Image = image;
|
||||||
|
} else {
|
||||||
|
model.UseRegistry = false;
|
||||||
|
model.Image = repository;
|
||||||
|
}
|
||||||
|
return model;
|
||||||
|
}
|
||||||
|
|
||||||
async function retrievePorRegistryModelFromRepositoryAsync(repository) {
|
async function retrievePorRegistryModelFromRepositoryAsync(repository) {
|
||||||
try {
|
try {
|
||||||
const model = new PorImageRegistryModel();
|
|
||||||
const [registries, dockerhub] = await Promise.all([
|
const [registries, dockerhub] = await Promise.all([
|
||||||
service.registries(),
|
service.registries(),
|
||||||
DockerHubService.dockerhub()
|
DockerHubService.dockerhub()
|
||||||
]);
|
]);
|
||||||
registries.concat([dockerhub]);
|
registries.concat([dockerhub]);
|
||||||
const registry = _.find(registries, (reg) => _.includes(repository, reg.URL));
|
return retrievePorRegistryModelFromRepositoryWithRegistries(repository, registries);
|
||||||
if (registry) {
|
|
||||||
const lastIndex = repository.lastIndexOf(registry.URL) + registry.URL.length;
|
|
||||||
const image = repository.substring(lastIndex + 1);
|
|
||||||
model.Registry = registry;
|
|
||||||
model.Image = image;
|
|
||||||
} else {
|
|
||||||
model.UseRegistry = false;
|
|
||||||
model.Image = repository;
|
|
||||||
}
|
|
||||||
return model;
|
|
||||||
} catch (err) {
|
} catch (err) {
|
||||||
throw { msg: 'Unable to retrieve the registry associated to the repository', err: err }
|
throw { msg: 'Unable to retrieve the registry associated to the repository', err: err }
|
||||||
}
|
}
|
||||||
|
|
|
@ -5,18 +5,27 @@ import {
|
||||||
} from '../../models/template';
|
} from '../../models/template';
|
||||||
|
|
||||||
angular.module('portainer.app')
|
angular.module('portainer.app')
|
||||||
.factory('TemplateService', ['$q', 'Templates', 'TemplateHelper', 'ImageHelper', 'ContainerHelper',
|
.factory('TemplateService', ['$q', 'Templates', 'TemplateHelper', 'RegistryService', 'DockerHubService', 'ImageHelper', 'ContainerHelper',
|
||||||
function TemplateServiceFactory($q, Templates, TemplateHelper, ImageHelper, ContainerHelper) {
|
function TemplateServiceFactory($q, Templates, TemplateHelper, RegistryService, DockerHubService, ImageHelper, ContainerHelper) {
|
||||||
'use strict';
|
'use strict';
|
||||||
var service = {};
|
var service = {};
|
||||||
|
|
||||||
service.templates = function() {
|
service.templates = function() {
|
||||||
var deferred = $q.defer();
|
var deferred = $q.defer();
|
||||||
|
|
||||||
Templates.query().$promise
|
$q.all({
|
||||||
|
templates: Templates.query().$promise,
|
||||||
|
registries: RegistryService.registries(),
|
||||||
|
dockerhub: DockerHubService.dockerhub()
|
||||||
|
})
|
||||||
.then(function success(data) {
|
.then(function success(data) {
|
||||||
var templates = data.map(function (item) {
|
data.registries.concat([data.dockerhub]);
|
||||||
return new TemplateViewModel(item);
|
const templates = data.templates.map(function (item) {
|
||||||
|
const res = new TemplateViewModel(item);
|
||||||
|
const registry = RegistryService.retrievePorRegistryModelFromRepositoryWithRegistries(res.RegistryModel.Registry, data.registries);
|
||||||
|
registry.Image = res.RegistryModel.Image;
|
||||||
|
res.RegistryModel = registry;
|
||||||
|
return res;
|
||||||
});
|
});
|
||||||
deferred.resolve(templates);
|
deferred.resolve(templates);
|
||||||
})
|
})
|
||||||
|
@ -29,10 +38,15 @@ function TemplateServiceFactory($q, Templates, TemplateHelper, ImageHelper, Cont
|
||||||
|
|
||||||
service.template = function(id) {
|
service.template = function(id) {
|
||||||
var deferred = $q.defer();
|
var deferred = $q.defer();
|
||||||
|
let template;
|
||||||
Templates.get({ id: id }).$promise
|
Templates.get({ id: id }).$promise
|
||||||
.then(function success(data) {
|
.then(function success(data) {
|
||||||
var template = new TemplateViewModel(data);
|
template = new TemplateViewModel(data);
|
||||||
|
return RegistryService.retrievePorRegistryModelFromRepository(template.RegistryModel.Registry);
|
||||||
|
})
|
||||||
|
.then((registry) => {
|
||||||
|
registry.Image = template.RegistryModel.Image;
|
||||||
|
template.RegistryModel = registry;
|
||||||
deferred.resolve(template);
|
deferred.resolve(template);
|
||||||
})
|
})
|
||||||
.catch(function error(err) {
|
.catch(function error(err) {
|
||||||
|
@ -52,7 +66,6 @@ function TemplateServiceFactory($q, Templates, TemplateHelper, ImageHelper, Cont
|
||||||
return Templates.create(payload).$promise;
|
return Templates.create(payload).$promise;
|
||||||
};
|
};
|
||||||
|
|
||||||
// TODO CHANGE
|
|
||||||
service.update = function(model) {
|
service.update = function(model) {
|
||||||
var payload = new TemplateUpdateRequest(model);
|
var payload = new TemplateUpdateRequest(model);
|
||||||
return Templates.update(payload).$promise;
|
return Templates.update(payload).$promise;
|
||||||
|
|
|
@ -8,7 +8,6 @@ function ($q, $scope, $state, $transition$, TemplateService, TemplateHelper, Net
|
||||||
actionInProgress: false
|
actionInProgress: false
|
||||||
};
|
};
|
||||||
|
|
||||||
// TODO CHANGE
|
|
||||||
$scope.update = function() {
|
$scope.update = function() {
|
||||||
var model = $scope.template;
|
var model = $scope.template;
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue