diff --git a/app/docker/components/imageRegistry/por-image-registry.js b/app/docker/components/imageRegistry/por-image-registry.js index 568b12ce5..13a75671e 100644 --- a/app/docker/components/imageRegistry/por-image-registry.js +++ b/app/docker/components/imageRegistry/por-image-registry.js @@ -2,8 +2,7 @@ angular.module('portainer.docker').component('porImageRegistry', { templateUrl: './porImageRegistry.html', controller: 'porImageRegistryController', bindings: { - 'image': '=', - 'registry': '=', + 'model': '=', // must be of type PorImageRegistryModel 'autoComplete': '<', 'labelClass': '@', 'inputClass': '@' diff --git a/app/docker/components/imageRegistry/porImageRegistry.html b/app/docker/components/imageRegistry/porImageRegistry.html index 2824a40cc..fe909247f 100644 --- a/app/docker/components/imageRegistry/porImageRegistry.html +++ b/app/docker/components/imageRegistry/porImageRegistry.html @@ -4,37 +4,39 @@ Use registry -
+
- {{$ctrl.registry.URL}} + {{$ctrl.model.Registry.URL}} + ng-model="$ctrl.model.Image" name="image_name" placeholder="e.g. myImage:myTag" required>
-
-
+
- +
- +
diff --git a/app/docker/components/imageRegistry/porImageRegistryController.js b/app/docker/components/imageRegistry/porImageRegistryController.js index c49e1b9ad..721d61afe 100644 --- a/app/docker/components/imageRegistry/porImageRegistryController.js +++ b/app/docker/components/imageRegistry/porImageRegistryController.js @@ -20,10 +20,12 @@ class porImageRegistryController { this.autoComplete ? this.ImageService.images() : []]); this.availableImages = this.ImageService.getUniqueTagListFromImages(availableImages); this.availableRegistries = [dockerhub].concat(registries); - if (!this.registry.Id) { - this.registry = dockerhub; + + const id = this.model.Registry.Id; + if (!id) { + this.model.Registry = dockerhub; } else { - this.registry = _.find(this.availableRegistries, { 'Id': this.registry.Id }); + this.model.Registry = _.find(this.availableRegistries, { 'Id': id }); } } catch (err) { this.Notifications.error('Failure', err, 'Unable to retrieve registries'); @@ -31,7 +33,6 @@ class porImageRegistryController { } $onInit() { - this.useRegistry = true; return this.$async(this.onInit); } } diff --git a/app/docker/helpers/imageHelper.js b/app/docker/helpers/imageHelper.js index 3df788eaf..069b0bc42 100644 --- a/app/docker/helpers/imageHelper.js +++ b/app/docker/helpers/imageHelper.js @@ -1,4 +1,4 @@ -// import _ from 'lodash-es'; +import _ from 'lodash-es'; angular.module('portainer.docker') .factory('ImageHelper', [function ImageHelperFactory() { @@ -7,6 +7,7 @@ angular.module('portainer.docker') var helper = {}; helper.isValidTag = isValidTag; + helper.createImageConfigForContainer = createImageConfigForContainer; function isValidTag(tag) { return tag.match(/^(?![\.\-])([a-zA-Z0-9\_\.\-])+$/g); @@ -42,13 +43,30 @@ angular.module('portainer.docker') }; }; - helper.createImageConfigForContainer = function (imageName, registry) { - void registry; - console.log(imageName); - return { - fromImage: imageName + /** + * + * @param {PorImageRegistryModel} registry + */ + function createImageConfigForContainer(registry) { + console.log('registry', registry); + const data = { + fromImage: '' + }; + let fullImageName = ''; + + if (registry.UseRegistry) { + fullImageName = registry.Registry.URL + '/' + registry.Image; + if (!_.includes(registry.Image, ':')) { + fullImageName += ':latest'; + } + } else { + fullImageName = registry.Image; } - }; + + data.fromImage = fullImageName; + console.log('FULL IMAGE NAME', fullImageName); + return data; + } helper.removeDigestFromRepository = function(repository) { return repository.split('@sha')[0]; diff --git a/app/docker/models/porImageRegistry.js b/app/docker/models/porImageRegistry.js new file mode 100644 index 000000000..38ea4ad94 --- /dev/null +++ b/app/docker/models/porImageRegistry.js @@ -0,0 +1,16 @@ +/** + * This model should be used with por-image-registry component + * And bound to the 'model' attribute + * + * // viewController.js + * + * this.imageModel = new PorImageRegistryModel(); + * + * // view.html + * + */ +export function PorImageRegistryModel() { + this.UseRegistry = true; + this.Registry = {}; + this.Image = ''; +} \ No newline at end of file diff --git a/app/docker/rest/image.js b/app/docker/rest/image.js index 64c21e287..25d78d2c2 100644 --- a/app/docker/rest/image.js +++ b/app/docker/rest/image.js @@ -25,7 +25,8 @@ function ImageFactory($resource, API_ENDPOINT_ENDPOINTS, EndpointProvider, HttpR ignoreLoadingBar: true }, create: { - method: 'POST', params: {action: 'create', fromImage: '@fromImage', tag: '@tag'}, + // method: 'POST', params: {action: 'create', fromImage: '@fromImage', tag: '@tag'}, + method: 'POST', params: {action: 'create', fromImage: '@fromImage'}, isArray: true, transformResponse: jsonObjectsToArrayHandler, headers: { 'X-Registry-Auth': HttpRequestHelper.registryAuthenticationHeader }, ignoreLoadingBar: true diff --git a/app/docker/services/containerService.js b/app/docker/services/containerService.js index 650a3158e..300a09f91 100644 --- a/app/docker/services/containerService.js +++ b/app/docker/services/containerService.js @@ -108,7 +108,6 @@ function ContainerServiceFactory($q, Container, ResourceControlService, LogHelpe service.createAndStartContainer = function(configuration) { var deferred = $q.defer(); var container; - console.log(configuration); service.createContainer(configuration) .then(function success(data) { container = data; diff --git a/app/docker/services/imageService.js b/app/docker/services/imageService.js index d83cb70c0..fbab095f2 100644 --- a/app/docker/services/imageService.js +++ b/app/docker/services/imageService.js @@ -127,19 +127,26 @@ angular.module('portainer.docker') return deferred.promise; } - service.pullImage = function(image, registry, ignoreErrors) { + service.pullImage = pullImage; + + /** + * + * @param {PorImageRegistryModel} registry + * @param {bool} ignoreErrors + */ + function pullImage(registry, ignoreErrors) { // var imageDetails = ImageHelper.extractImageAndRegistryFromRepository(image); // var imageConfiguration = ImageHelper.createImageConfigForContainer(imageDetails.image, registry.URL); - var authenticationDetails = registry.Authentication ? RegistryService.encodedCredentials(registry) : ''; + var authenticationDetails = registry.Registry.Authentication ? RegistryService.encodedCredentials(registry.Registry) : ''; HttpRequestHelper.setRegistryAuthenticationHeader(authenticationDetails); - var imageConfiguration = ImageHelper.createImageConfigForContainer(image, registry.URL); + var imageConfiguration = ImageHelper.createImageConfigForContainer(registry); if (ignoreErrors) { return pullImageAndIgnoreErrors(imageConfiguration); } return pullImageAndAcknowledgeErrors(imageConfiguration); - }; + } service.tagImage = function(id, image, registry) { void registry; diff --git a/app/docker/views/containers/create/createContainerController.js b/app/docker/views/containers/create/createContainerController.js index 09e811af3..5f52657eb 100644 --- a/app/docker/views/containers/create/createContainerController.js +++ b/app/docker/views/containers/create/createContainerController.js @@ -2,6 +2,7 @@ import _ from 'lodash-es'; import { ContainerCapabilities, ContainerCapability } from '../../../models/containerCapabilities'; import { AccessControlFormData } from '../../../../portainer/components/accessControlForm/porAccessControlFormModel'; import { ContainerDetailsViewModel } from '../../../models/container'; +import { PorImageRegistryModel } from 'Docker/models/porImageRegistry'; angular.module('portainer.docker') @@ -27,7 +28,8 @@ function ($q, $scope, $async, $state, $timeout, $transition$, $filter, Container NodeName: null, capabilities: [], LogDriverName: '', - LogDriverOpts: [] + LogDriverOpts: [], + RegistryModel: new PorImageRegistryModel() }; $scope.extraNetworks = {}; @@ -129,11 +131,10 @@ function ($q, $scope, $async, $state, $timeout, $transition$, $filter, Container $scope.fromContainerMultipleNetworks = false; + // TODO function prepareImageConfig(config) { - var image = config.Image; - var registry = $scope.formValues.Registry; - var imageConfig = ImageHelper.createImageConfigForContainer(image, registry.URL); - config.Image = imageConfig.fromImage ;//+ ':' + imageConfig.tag; + const imageConfig = ImageHelper.createImageConfigForContainer($scope.formValues.RegistryModel); + config.Image = imageConfig.fromImage; } function preparePortBindings(config) { @@ -295,7 +296,6 @@ function ($q, $scope, $async, $state, $timeout, $transition$, $filter, Container config.Cmd = ContainerHelper.commandStringToArray(config.Cmd); prepareNetworkConfig(config); prepareImageConfig(config); - console.log(config); preparePortBindings(config); prepareConsole(config); prepareEnvironmentVariables(config); @@ -436,13 +436,14 @@ function ($q, $scope, $async, $state, $timeout, $transition$, $filter, Container $scope.config.HostConfig.Devices = path; } + // TODO function loadFromContainerImageConfig() { var imageInfo = ImageHelper.extractImageAndRegistryFromRepository($scope.config.Image); RegistryService.retrieveRegistryFromRepository($scope.config.Image) .then(function success(data) { if (data) { $scope.config.Image = imageInfo.image; - $scope.formValues.Registry = data; + $scope.formValues.RegistryModel = data; } }) .catch(function error(err) { @@ -568,7 +569,6 @@ function ($q, $scope, $async, $state, $timeout, $transition$, $filter, Container loadFromContainerSpec(); } else { $scope.fromContainer = {}; - $scope.formValues.Registry = {}; $scope.formValues.capabilities = new ContainerCapabilities(); } }, function(e) { @@ -753,7 +753,7 @@ function ($q, $scope, $async, $state, $timeout, $transition$, $filter, Container function pullImageIfNeeded() { return $q.when($scope.formValues.alwaysPull && - ImageService.pullImage($scope.config.Image, $scope.formValues.Registry, true)); + ImageService.pullImage($scope.formValues.RegistryModel, true)); } function createNewContainer() { diff --git a/app/docker/views/containers/create/createcontainer.html b/app/docker/views/containers/create/createcontainer.html index 881053077..cec1a551e 100644 --- a/app/docker/views/containers/create/createcontainer.html +++ b/app/docker/views/containers/create/createcontainer.html @@ -21,16 +21,15 @@
Image configuration
-
+
The Docker registry for the {{ config.Image }} image is not registered inside Portainer, you will not be able to create a container. Please register that registry first.
-
+
@@ -142,7 +141,9 @@
- diff --git a/app/docker/views/containers/edit/container.html b/app/docker/views/containers/edit/container.html index 5997f2351..92f4ded45 100644 --- a/app/docker/views/containers/edit/container.html +++ b/app/docker/views/containers/edit/container.html @@ -155,8 +155,7 @@ diff --git a/app/docker/views/containers/edit/containerController.js b/app/docker/views/containers/edit/containerController.js index ace9356d7..97a10b874 100644 --- a/app/docker/views/containers/edit/containerController.js +++ b/app/docker/views/containers/edit/containerController.js @@ -1,4 +1,5 @@ import moment from 'moment'; +import { PorImageRegistryModel } from 'Docker/models/porImageRegistry'; angular.module('portainer.docker') .controller('ContainerController', ['$q', '$scope', '$state','$transition$', '$filter', 'Commit', 'ContainerHelper', 'ContainerService', 'ImageHelper', 'NetworkService', 'Notifications', 'ModalService', 'ResourceControlService', 'RegistryService', 'ImageService', 'HttpRequestHelper', 'Authentication', @@ -7,8 +8,7 @@ function ($q, $scope, $state, $transition$, $filter, Commit, ContainerHelper, Co $scope.portBindings = []; $scope.config = { - Image: '', - Registry: '' + RegistryModel: new PorImageRegistryModel() }; $scope.state = { @@ -149,6 +149,7 @@ function ($q, $scope, $state, $transition$, $filter, Commit, ContainerHelper, Co }); }; + // TODO CHANGE $scope.commit = function () { const image = $scope.config.Image; $scope.config.Image = ''; @@ -223,15 +224,12 @@ function ($q, $scope, $state, $transition$, $filter, Commit, ContainerHelper, Co if (!pullImage) { return $q.when(); } - return getRegistry().then(function pullImage(containerRegistery) { - return ImageService.pullImage(container.Config.Image, containerRegistery, true); + return RegistryService.retrieveRegistryFromRepository(container.Config.Image) + .then(function pullImage(containerRegistry) { + return ImageService.pullImage(containerRegistry, true); }); } - function getRegistry() { - return RegistryService.retrieveRegistryFromRepository(container.Config.Image); - } - function setMainNetworkAndCreateContainer() { var networks = config.NetworkingConfig.EndpointsConfig; var networksNames = Object.keys(networks); diff --git a/app/docker/views/images/edit/image.html b/app/docker/views/images/edit/image.html index 8b6641548..15493d812 100644 --- a/app/docker/views/images/edit/image.html +++ b/app/docker/views/images/edit/image.html @@ -64,8 +64,7 @@
diff --git a/app/docker/views/images/edit/imageController.js b/app/docker/views/images/edit/imageController.js index f090b6fdc..21ddedd16 100644 --- a/app/docker/views/images/edit/imageController.js +++ b/app/docker/views/images/edit/imageController.js @@ -1,11 +1,11 @@ import _ from 'lodash-es'; +import { PorImageRegistryModel } from 'Docker/models/porImageRegistry'; angular.module('portainer.docker') .controller('ImageController', ['$q', '$scope', '$transition$', '$state', '$timeout', 'ImageService', 'RegistryService', 'Notifications', 'HttpRequestHelper', 'ModalService', 'FileSaver', 'Blob', function ($q, $scope, $transition$, $state, $timeout, ImageService, RegistryService, Notifications, HttpRequestHelper, ModalService, FileSaver, Blob) { $scope.formValues = { - Image: '', - Registry: '' + RegistryModel: new PorImageRegistryModel() }; $scope.state = { @@ -26,6 +26,7 @@ function ($q, $scope, $transition$, $state, $timeout, ImageService, RegistryServ $('#layer-command-'+layerId+'-full').toggle(); }; + // TODO CHANGE $scope.tagImage = function() { var image = $scope.formValues.Image; var registry = $scope.formValues.Registry; @@ -40,6 +41,7 @@ function ($q, $scope, $transition$, $state, $timeout, ImageService, RegistryServ }); }; + // TODO CHANGE $scope.pushTag = function(repository) { $('#uploadResourceHint').show(); RegistryService.retrieveRegistryFromRepository(repository) @@ -58,12 +60,13 @@ function ($q, $scope, $transition$, $state, $timeout, ImageService, RegistryServ }); }; + // TODO CHANGE $scope.pullTag = function(repository) { $('#downloadResourceHint').show(); RegistryService.retrieveRegistryFromRepository(repository) .then(function success(data) { var registry = data; - return ImageService.pullImage(repository, registry, false); + return ImageService.pullImage(registry, false); }) .then(function success() { Notifications.success('Image successfully pulled', repository); diff --git a/app/docker/views/images/images.html b/app/docker/views/images/images.html index d1cfba39a..eae073142 100644 --- a/app/docker/views/images/images.html +++ b/app/docker/views/images/images.html @@ -16,8 +16,7 @@ diff --git a/app/docker/views/images/imagesController.js b/app/docker/views/images/imagesController.js index 8369d0e67..c3bc3c54c 100644 --- a/app/docker/views/images/imagesController.js +++ b/app/docker/views/images/imagesController.js @@ -1,4 +1,5 @@ import _ from 'lodash-es'; +import { PorImageRegistryModel } from 'Docker/models/porImageRegistry'; angular.module('portainer.docker') .controller('ImagesController', ['$scope', '$state', 'ImageService', 'Notifications', 'ModalService', 'HttpRequestHelper', 'FileSaver', 'Blob', 'EndpointProvider', @@ -9,22 +10,21 @@ function ($scope, $state, ImageService, Notifications, ModalService, HttpRequest }; $scope.formValues = { - Image: '', - Registry: '', + RegistryModel: new PorImageRegistryModel(), NodeName: null }; + // TODO CHANGE $scope.pullImage = function() { - var image = $scope.formValues.Image; - var registry = $scope.formValues.Registry; + const registryModel = $scope.formValues.RegistryModel; var nodeName = $scope.formValues.NodeName; HttpRequestHelper.setPortainerAgentTargetHeader(nodeName); $scope.state.actionInProgress = true; - ImageService.pullImage(image, registry, false) + ImageService.pullImage(registryModel, false) .then(function success() { - Notifications.success('Image successfully pulled', image); + Notifications.success('Image successfully pulled', registryModel.Image); $state.reload(); }) .catch(function error(err) { diff --git a/app/docker/views/services/create/createServiceController.js b/app/docker/views/services/create/createServiceController.js index 17ed83506..810a0cd7b 100644 --- a/app/docker/views/services/create/createServiceController.js +++ b/app/docker/views/services/create/createServiceController.js @@ -1,5 +1,6 @@ import _ from 'lodash-es'; import { AccessControlFormData } from '../../../../portainer/components/accessControlForm/porAccessControlFormModel'; +import { PorImageRegistryModel } from 'Docker/models/porImageRegistry'; require('./includes/update-restart.html') require('./includes/secret.html') @@ -12,8 +13,7 @@ function ($q, $scope, $state, $timeout, Service, ServiceHelper, ConfigService, C $scope.formValues = { Name: '', - Image: '', - Registry: {}, + RegistryModel: new PorImageRegistryModel(), Mode: 'replicated', Replicas: 1, Command: '', @@ -159,9 +159,10 @@ function ($q, $scope, $state, $timeout, Service, ServiceHelper, ConfigService, C $scope.formValues.LogDriverOpts.splice(index, 1); }; + // TODO CHANGE function prepareImageConfig(config, input) { - var imageConfig = ImageHelper.createImageConfigForContainer(input.Image, input.Registry.URL); - config.TaskTemplate.ContainerSpec.Image = imageConfig.fromImage + ':' + imageConfig.tag; + var imageConfig = ImageHelper.createImageConfigForContainer(input.RegistryModel); + config.TaskTemplate.ContainerSpec.Image = imageConfig.fromImage; } function preparePortsConfig(config, input) { @@ -426,6 +427,7 @@ function ($q, $scope, $state, $timeout, Service, ServiceHelper, ConfigService, C return config; } + // TODO CHANGE function createNewService(config, accessControlData) { var registry = $scope.formValues.Registry; diff --git a/app/docker/views/services/create/createservice.html b/app/docker/views/services/create/createservice.html index 9c0e98e13..58fefef8a 100644 --- a/app/docker/views/services/create/createservice.html +++ b/app/docker/views/services/create/createservice.html @@ -23,8 +23,7 @@
diff --git a/app/portainer/components/forms/template-form/template-form.js b/app/portainer/components/forms/template-form/template-form.js index 9acb67f7d..25260d2b4 100644 --- a/app/portainer/components/forms/template-form/template-form.js +++ b/app/portainer/components/forms/template-form/template-form.js @@ -1,58 +1,6 @@ angular.module('portainer.app').component('templateForm', { templateUrl: './templateForm.html', - controller: function() { - this.state = { - collapseTemplate: false, - collapseContainer: false, - collapseStack: false, - collapseEnv: false - }; - - this.addPortBinding = function() { - this.model.Ports.push({ containerPort: '', protocol: 'tcp' }); - }; - - this.removePortBinding = function(index) { - this.model.Ports.splice(index, 1); - }; - - this.addVolume = function () { - this.model.Volumes.push({ container: '', bind: '', readonly: false, type: 'auto' }); - }; - - this.removeVolume = function(index) { - this.model.Volumes.splice(index, 1); - }; - - this.addLabel = function () { - this.model.Labels.push({ name: '', value: ''}); - }; - - this.removeLabel = function(index) { - this.model.Labels.splice(index, 1); - }; - - this.addEnvVar = function() { - this.model.Env.push({ type: 1, name: '', label: '', description: '', default: '', preset: true, select: [] }); - }; - - this.removeEnvVar = function(index) { - this.model.Env.splice(index, 1); - }; - - this.addEnvVarValue = function(env) { - env.select = env.select || []; - env.select.push({ name: '', value: '' }); - }; - - this.removeEnvVarValue = function(env, index) { - env.select.splice(index, 1); - }; - - this.changeEnvVarType = function(env) { - env.preset = env.type === 1; - }; - }, + controller: 'TemplateFormController', bindings: { model: '=', categories: '<', diff --git a/app/portainer/components/forms/template-form/templateForm.html b/app/portainer/components/forms/template-form/templateForm.html index 67832e2ed..114c3ebf7 100644 --- a/app/portainer/components/forms/template-form/templateForm.html +++ b/app/portainer/components/forms/template-form/templateForm.html @@ -203,10 +203,9 @@
diff --git a/app/portainer/components/forms/template-form/templateFormController.js b/app/portainer/components/forms/template-form/templateFormController.js new file mode 100644 index 000000000..840bc664a --- /dev/null +++ b/app/portainer/components/forms/template-form/templateFormController.js @@ -0,0 +1,54 @@ +angular.module('portainer.app') +.controller('TemplateFormController', [function() { + this.state = { + collapseTemplate: false, + collapseContainer: false, + collapseStack: false, + collapseEnv: false + }; + + this.addPortBinding = function() { + this.model.Ports.push({ containerPort: '', protocol: 'tcp' }); + }; + + this.removePortBinding = function(index) { + this.model.Ports.splice(index, 1); + }; + + this.addVolume = function () { + this.model.Volumes.push({ container: '', bind: '', readonly: false, type: 'auto' }); + }; + + this.removeVolume = function(index) { + this.model.Volumes.splice(index, 1); + }; + + this.addLabel = function () { + this.model.Labels.push({ name: '', value: ''}); + }; + + this.removeLabel = function(index) { + this.model.Labels.splice(index, 1); + }; + + this.addEnvVar = function() { + this.model.Env.push({ type: 1, name: '', label: '', description: '', default: '', preset: true, select: [] }); + }; + + this.removeEnvVar = function(index) { + this.model.Env.splice(index, 1); + }; + + this.addEnvVarValue = function(env) { + env.select = env.select || []; + env.select.push({ name: '', value: '' }); + }; + + this.removeEnvVarValue = function(env, index) { + env.select.splice(index, 1); + }; + + this.changeEnvVarType = function(env) { + env.preset = env.type === 1; + }; +}]); \ No newline at end of file diff --git a/app/portainer/models/template.js b/app/portainer/models/template.js index e88f8fcef..ffdb5a406 100644 --- a/app/portainer/models/template.js +++ b/app/portainer/models/template.js @@ -1,19 +1,20 @@ import _ from 'lodash-es'; +import { PorImageRegistryModel } from 'Docker/models/porImageRegistry'; export function TemplateDefaultModel() { this.Type = 1; this.AdministratorOnly = false; this.Title = ''; - this.Image = ''; this.Description = ''; this.Volumes = []; this.Ports = []; this.Env = []; this.Labels = []; this.RestartPolicy = 'always'; - this.Registry = {}; + this.RegistryModel = new PorImageRegistryModel(); } +// TODO CHANGE export function TemplateCreateRequest(model) { this.Type = model.Type; this.Name = model.Name; @@ -24,8 +25,8 @@ export function TemplateCreateRequest(model) { this.Categories = model.Categories; this.Platform = model.Platform; this.Logo = model.Logo; - this.Image = model.Image; - this.Registry = model.Registry.URL; + this.Image = model.RegistryModel.Image; + this.Registry = model.RegistryModel.Registry.URL; this.Command = model.Command; this.Network = model.Network && model.Network.Name; this.Privileged = model.Privileged; @@ -53,6 +54,7 @@ export function TemplateUpdateRequest(model) { this.id = model.Id; } +// TODO CHANGE export function TemplateViewModel(data) { this.Id = data.Id; this.Title = data.title; @@ -66,9 +68,9 @@ export function TemplateViewModel(data) { this.Logo = data.logo; this.Repository = data.repository; this.Hostname = data.hostname; - this.Registry = data.registry ? { URL: data.registry } : {}; - this.Image = data.image; - this.Registry = data.registry ? data.registry : ''; + this.Registry = data.registry ? { URL: data.registry } : {}; // CHANGE + this.Image = data.image; // CHANGE + this.Registry = data.registry ? data.registry : ''; // CHANGE this.Command = data.command ? data.command : ''; this.Network = data.network ? data.network : ''; this.Privileged = data.privileged ? data.privileged : false; diff --git a/app/portainer/services/api/registryService.js b/app/portainer/services/api/registryService.js index 1e9c8a8ec..fa97e9279 100644 --- a/app/portainer/services/api/registryService.js +++ b/app/portainer/services/api/registryService.js @@ -81,6 +81,7 @@ angular.module('portainer.app') service.retrieveRegistryFromRepository = function(repository) { var deferred = $q.defer(); + console.log('registry', repository); var imageDetails = ImageHelper.extractImageAndRegistryFromRepository(repository); $q.when(imageDetails.registry ? service.registries() : DockerHubService.dockerhub()) diff --git a/app/portainer/services/api/templateService.js b/app/portainer/services/api/templateService.js index 70c0c7d4c..d42733596 100644 --- a/app/portainer/services/api/templateService.js +++ b/app/portainer/services/api/templateService.js @@ -10,6 +10,7 @@ function TemplateServiceFactory($q, Templates, TemplateHelper, ImageHelper, Cont 'use strict'; var service = {}; + // TODO CHANGE service.templates = function() { var deferred = $q.defer(); @@ -27,6 +28,7 @@ function TemplateServiceFactory($q, Templates, TemplateHelper, ImageHelper, Cont return deferred.promise; }; + // TODO CHANGE service.template = function(id) { var deferred = $q.defer(); @@ -47,18 +49,20 @@ function TemplateServiceFactory($q, Templates, TemplateHelper, ImageHelper, Cont return Templates.remove({ id: id }).$promise; }; + // TODO CHANGE service.create = function(model) { var payload = new TemplateCreateRequest(model); return Templates.create(payload).$promise; }; + // TODO CHANGE service.update = function(model) { var payload = new TemplateUpdateRequest(model); return Templates.update(payload).$promise; }; service.createTemplateConfiguration = function(template, containerName, network) { - var imageConfiguration = ImageHelper.createImageConfigForContainer(template.Image, template.Registry); + var imageConfiguration = ImageHelper.createImageConfigForContainer(template.RegistryModel); var containerConfiguration = service.createContainerConfiguration(template, containerName, network); containerConfiguration.Image = imageConfiguration.fromImage + ':' + imageConfiguration.tag; return containerConfiguration; diff --git a/app/portainer/views/templates/edit/templateController.js b/app/portainer/views/templates/edit/templateController.js index 227507a3b..a887ef0b9 100644 --- a/app/portainer/views/templates/edit/templateController.js +++ b/app/portainer/views/templates/edit/templateController.js @@ -8,6 +8,7 @@ function ($q, $scope, $state, $transition$, TemplateService, TemplateHelper, Net actionInProgress: false }; + // TODO CHANGE $scope.update = function() { var model = $scope.template;