1
0
Fork 0
mirror of https://github.com/portainer/portainer.git synced 2025-07-23 15:29:42 +02:00

refactor(ui/image-config): create react component [EE-5342] (#8856)

This commit is contained in:
Chaim Lev-Ari 2023-07-10 18:56:12 +03:00 committed by GitHub
parent bf51f1b6c9
commit 10014ae171
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
34 changed files with 1464 additions and 84 deletions

View file

@ -1,5 +1,4 @@
import _ from 'lodash-es';
import { RegistryTypes } from 'Portainer/models/registryTypes';
import { buildImageFullURI, imageContainsURL } from '@/react/docker/images/utils';
angular.module('portainer.docker').factory('ImageHelper', ImageHelperFactory);
function ImageHelperFactory() {
@ -29,67 +28,13 @@ function ImageHelperFactory() {
* @param {PorImageRegistryModel} registry
*/
function createImageConfigForContainer(imageModel) {
const registry = imageModel.UseRegistry ? imageModel.Registry : undefined;
return {
fromImage: buildImageFullURI(imageModel),
fromImage: buildImageFullURI(imageModel.Image, registry),
};
}
function imageContainsURL(image) {
const split = _.split(image, '/');
const url = split[0];
if (split.length > 1) {
return _.includes(url, '.') || _.includes(url, ':');
}
return false;
}
function removeDigestFromRepository(repository) {
return repository.split('@sha')[0];
}
}
/**
* builds the complete uri for an image based on its registry
* @param {PorImageRegistryModel} imageModel
*/
export function buildImageFullURI(imageModel) {
if (!imageModel.UseRegistry) {
return ensureTag(imageModel.Image);
}
const imageName = buildImageFullURIWithRegistry(imageModel);
return ensureTag(imageName);
function ensureTag(image, defaultTag = 'latest') {
return image.includes(':') ? image : `${image}:${defaultTag}`;
}
}
function buildImageFullURIWithRegistry(imageModel) {
switch (imageModel.Registry.Type) {
case RegistryTypes.GITLAB:
return buildImageURIForGitLab(imageModel);
case RegistryTypes.QUAY:
return buildImageURIForQuay(imageModel);
case RegistryTypes.ANONYMOUS:
return imageModel.Image;
default:
return buildImageURIForOtherRegistry(imageModel);
}
function buildImageURIForGitLab(imageModel) {
const slash = imageModel.Image.startsWith(':') ? '' : '/';
return `${imageModel.Registry.URL}/${imageModel.Registry.Gitlab.ProjectPath}${slash}${imageModel.Image}`;
}
function buildImageURIForQuay(imageModel) {
const name = imageModel.Registry.Quay.UseOrganisation ? imageModel.Registry.Quay.OrganisationName : imageModel.Registry.Username;
const url = imageModel.Registry.URL ? imageModel.Registry.URL + '/' : '';
return `${url}${name}/${imageModel.Image}`;
}
function buildImageURIForOtherRegistry(imageModel) {
const url = imageModel.Registry.URL ? imageModel.Registry.URL + '/' : '';
return url + imageModel.Image;
}
}