1
0
Fork 0
mirror of https://github.com/portainer/portainer.git synced 2025-07-24 15:59:41 +02:00
portainer/app/portainer/views/registries/edit/registryController.js
2022-08-10 17:07:35 +12:00

119 lines
3.3 KiB
JavaScript

import _ from 'lodash';
import { RegistryTypes } from '@/portainer/models/registryTypes';
export default class RegistryController {
/* @ngInject */
constructor($scope, $async, $state, RegistryService, Notifications) {
this.$scope = $scope;
Object.assign(this, { $async, $state, RegistryService, Notifications });
this.RegistryTypes = RegistryTypes;
this.state = {
actionInProgress: false,
loading: false,
};
this.Password = '';
this.toggleAuthentication = this.toggleAuthentication.bind(this);
this.toggleQuayUseOrganisation = this.toggleQuayUseOrganisation.bind(this);
}
toggleAuthentication(newValue) {
this.$scope.$evalAsync(() => {
this.registry.Authentication = newValue;
});
}
toggleQuayUseOrganisation(newValue) {
this.$scope.$evalAsync(() => {
this.registry.Quay.UseOrganisation = newValue;
});
}
passwordLabel() {
const type = this.registry.Type;
switch (type) {
case RegistryTypes.ECR:
return 'AWS Secret Access Key';
case RegistryTypes.DOCKERHUB:
return 'Access token';
case RegistryTypes.GITLAB:
return 'Personal Access Token';
default:
return 'Password';
}
}
updateRegistry() {
return this.$async(async () => {
try {
this.state.actionInProgress = true;
const registry = this.registry;
registry.Password = this.Password;
await this.RegistryService.updateRegistry(registry);
this.Notifications.success('Success', 'Registry successfully updated');
this.$state.go('portainer.registries');
} catch (err) {
this.Notifications.error('Failure', err, 'Unable to update registry');
} finally {
this.state.actionInProgress = false;
}
});
}
onChangeName() {
this.state.nameAlreadyExists = _.includes(this.registriesNames, this.registry.Name);
}
isUpdateButtonDisabled() {
return (
this.state.actionInProgress ||
this.state.nameAlreadyExists ||
!this.registry.Name ||
!this.registry.URL ||
(this.registry.Type == this.RegistryTypes.QUAY && this.registry.Quay.UseOrganisation && !this.registry.Quay.OrganisationName)
);
}
getRegistryProvider(registryType) {
switch (registryType) {
case RegistryTypes.QUAY:
return 'Quay.io';
case RegistryTypes.AZURE:
return 'Azure';
case RegistryTypes.CUSTOM:
return 'Custom';
case RegistryTypes.GITLAB:
return 'Gitlab';
case RegistryTypes.PROGET:
return 'ProGet';
case RegistryTypes.DOCKERHUB:
return 'Docker Hub';
case RegistryTypes.ECR:
return 'AWS ECR';
default:
return '';
}
}
async $onInit() {
try {
this.state.loading = true;
const registryId = this.$state.params.id;
const registry = await this.RegistryService.registry(registryId);
this.registry = registry;
this.provider = this.getRegistryProvider(registry.Type);
const registries = await this.RegistryService.registries();
_.pullAllBy(registries, [registry], 'Id');
this.registriesNames = _.map(registries, 'Name');
} catch (err) {
this.Notifications.error('Failure', err, 'Unable to retrieve registry details');
} finally {
this.state.loading = false;
}
}
}