mirror of
https://github.com/portainer/portainer.git
synced 2025-08-05 05:45:22 +02:00
feat(registries): add registry management (#930)
This commit is contained in:
parent
9360f24d89
commit
08c5a5a4f6
75 changed files with 2317 additions and 621 deletions
|
@ -1,5 +1,5 @@
|
|||
angular.module('portainer.services')
|
||||
.factory('ImageService', ['$q', 'Image', 'ImageHelper', function ImageServiceFactory($q, Image, ImageHelper) {
|
||||
.factory('ImageService', ['$q', 'Image', 'ImageHelper', 'RegistryService', 'HttpRequestHelper', function ImageServiceFactory($q, Image, ImageHelper, RegistryService, HttpRequestHelper) {
|
||||
'use strict';
|
||||
var service = {};
|
||||
|
||||
|
@ -35,10 +35,35 @@ angular.module('portainer.services')
|
|||
return deferred.promise;
|
||||
};
|
||||
|
||||
service.pushImage = function(tag, registry) {
|
||||
var deferred = $q.defer();
|
||||
|
||||
var authenticationDetails = registry.Authentication ? RegistryService.encodedCredentials(registry) : '';
|
||||
HttpRequestHelper.setRegistryAuthenticationHeader(authenticationDetails);
|
||||
Image.push({tag: tag}).$promise
|
||||
.then(function success(data) {
|
||||
if (data[data.length - 1].error) {
|
||||
deferred.reject({ msg: data[data.length - 1].error });
|
||||
} else {
|
||||
deferred.resolve();
|
||||
}
|
||||
})
|
||||
.catch(function error(err) {
|
||||
deferred.reject({ msg: 'Unable to push image tag', err: err });
|
||||
});
|
||||
return deferred.promise;
|
||||
};
|
||||
|
||||
|
||||
service.pullImage = function(image, registry) {
|
||||
var deferred = $q.defer();
|
||||
var imageConfiguration = ImageHelper.createImageConfigForContainer(image, registry);
|
||||
Image.create(imageConfiguration).$promise
|
||||
|
||||
var imageDetails = ImageHelper.extractImageAndRegistryFromRepository(image);
|
||||
var imageConfiguration = ImageHelper.createImageConfigForContainer(imageDetails.image, registry.URL);
|
||||
var authenticationDetails = registry.Authentication ? RegistryService.encodedCredentials(registry) : '';
|
||||
HttpRequestHelper.setRegistryAuthenticationHeader(authenticationDetails);
|
||||
|
||||
Image.create({}, imageConfiguration).$promise
|
||||
.then(function success(data) {
|
||||
var err = data.length > 0 && data[data.length - 1].hasOwnProperty('message');
|
||||
if (err) {
|
||||
|
@ -51,12 +76,8 @@ angular.module('portainer.services')
|
|||
.catch(function error(err) {
|
||||
deferred.reject({ msg: 'Unable to pull image', err: err });
|
||||
});
|
||||
return deferred.promise;
|
||||
};
|
||||
|
||||
service.pullTag = function(tag) {
|
||||
var imageAndRegistry = ImageHelper.extractImageAndRegistryFromTag(tag);
|
||||
return service.pullImage(imageAndRegistry.image, imageAndRegistry.registry);
|
||||
return deferred.promise;
|
||||
};
|
||||
|
||||
service.tagImage = function(id, image, registry) {
|
||||
|
@ -80,21 +101,5 @@ angular.module('portainer.services')
|
|||
return deferred.promise;
|
||||
};
|
||||
|
||||
service.pushImage = function(tag) {
|
||||
var deferred = $q.defer();
|
||||
Image.push({tag: tag}).$promise
|
||||
.then(function success(data) {
|
||||
if (data[data.length - 1].error) {
|
||||
deferred.reject({ msg: data[data.length - 1].error });
|
||||
} else {
|
||||
deferred.resolve();
|
||||
}
|
||||
})
|
||||
.catch(function error(err) {
|
||||
deferred.reject({ msg: 'Unable to push image tag', err: err });
|
||||
});
|
||||
return deferred.promise;
|
||||
};
|
||||
|
||||
return service;
|
||||
}]);
|
||||
|
|
|
@ -1,20 +0,0 @@
|
|||
angular.module('portainer.services')
|
||||
.factory('InfoService', ['$q', 'Info', function InfoServiceFactory($q, Info) {
|
||||
'use strict';
|
||||
var service = {};
|
||||
|
||||
service.getVolumePlugins = function() {
|
||||
var deferred = $q.defer();
|
||||
Info.get({}).$promise
|
||||
.then(function success(data) {
|
||||
var plugins = data.Plugins.Volume;
|
||||
deferred.resolve(plugins);
|
||||
})
|
||||
.catch(function error(err) {
|
||||
deferred.reject({msg: 'Unable to retrieve volume plugin information', err: err});
|
||||
});
|
||||
return deferred.promise;
|
||||
};
|
||||
|
||||
return service;
|
||||
}]);
|
45
app/services/docker/systemService.js
Normal file
45
app/services/docker/systemService.js
Normal file
|
@ -0,0 +1,45 @@
|
|||
angular.module('portainer.services')
|
||||
.factory('SystemService', ['$q', 'System', function SystemServiceFactory($q, System) {
|
||||
'use strict';
|
||||
var service = {};
|
||||
|
||||
service.getVolumePlugins = function() {
|
||||
var deferred = $q.defer();
|
||||
System.info({}).$promise
|
||||
.then(function success(data) {
|
||||
var plugins = data.Plugins.Volume;
|
||||
deferred.resolve(plugins);
|
||||
})
|
||||
.catch(function error(err) {
|
||||
deferred.reject({msg: 'Unable to retrieve volume plugin information', err: err});
|
||||
});
|
||||
return deferred.promise;
|
||||
};
|
||||
|
||||
service.info = function() {
|
||||
return System.info({}).$promise;
|
||||
};
|
||||
|
||||
service.version = function() {
|
||||
return System.version({}).$promise;
|
||||
};
|
||||
|
||||
service.events = function(from, to) {
|
||||
var deferred = $q.defer();
|
||||
|
||||
System.events({since: from, until: to}).$promise
|
||||
.then(function success(data) {
|
||||
var events = data.map(function (item) {
|
||||
return new EventViewModel(item);
|
||||
});
|
||||
deferred.resolve(events);
|
||||
})
|
||||
.catch(function error(err) {
|
||||
deferred.reject({ msg: 'Unable to retrieve engine events', err: err });
|
||||
});
|
||||
|
||||
return deferred.promise;
|
||||
};
|
||||
|
||||
return service;
|
||||
}]);
|
Loading…
Add table
Add a link
Reference in a new issue