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

fix(container-creation): add default/override options (#4119)

* fix(container-creation): add default/override options

* fix(container-creation): allow override with empty string on creation

* fix(container-creation): add tooltip & update placeholder

* fix(container-creation): add warning on duplicate
This commit is contained in:
itsconquest 2020-08-07 14:10:40 +12:00 committed by GitHub
parent 1b88ca2285
commit b9c2bf487b
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
4 changed files with 85 additions and 7 deletions

View file

@ -77,6 +77,8 @@ angular.module('portainer.docker').controller('CreateContainerController', [
CpuLimit: 0,
MemoryLimit: 0,
MemoryReservation: 0,
CmdMode: 'default',
EntrypointMode: 'default',
NodeName: null,
capabilities: [],
LogDriverName: '',
@ -89,6 +91,7 @@ angular.module('portainer.docker').controller('CreateContainerController', [
$scope.state = {
formValidationError: '',
actionInProgress: false,
mode: '',
};
$scope.refreshSlider = function () {
@ -97,12 +100,18 @@ angular.module('portainer.docker').controller('CreateContainerController', [
});
};
$scope.onImageNameChange = function () {
$scope.formValues.CmdMode = 'default';
$scope.formValues.EntrypointMode = 'default';
};
$scope.config = {
Image: '',
Env: [],
Cmd: '',
MacAddress: '',
ExposedPorts: {},
Entrypoint: '',
HostConfig: {
RestartPolicy: {
Name: 'no',
@ -212,6 +221,20 @@ angular.module('portainer.docker').controller('CreateContainerController', [
config.Tty = tty;
}
function prepareCmd(config) {
if (_.isEmpty(config.Cmd) || $scope.formValues.CmdMode == 'default') {
delete config.Cmd;
} else {
config.Cmd = ContainerHelper.commandStringToArray(config.Cmd);
}
}
function prepareEntrypoint(config) {
if ($scope.formValues.EntrypointMode == 'default' || (_.isEmpty(config.Cmd) && _.isEmpty(config.Entrypoint))) {
config.Entrypoint = null;
}
}
function prepareEnvironmentVariables(config) {
var env = [];
config.Env.forEach(function (v) {
@ -368,7 +391,8 @@ angular.module('portainer.docker').controller('CreateContainerController', [
function prepareConfiguration() {
var config = angular.copy($scope.config);
config.Cmd = ContainerHelper.commandStringToArray(config.Cmd);
prepareCmd(config);
prepareEntrypoint(config);
prepareNetworkConfig(config);
prepareImageConfig(config);
preparePortBindings(config);
@ -386,8 +410,16 @@ angular.module('portainer.docker').controller('CreateContainerController', [
function loadFromContainerCmd() {
if ($scope.config.Cmd) {
$scope.config.Cmd = ContainerHelper.commandArrayToString($scope.config.Cmd);
} else {
$scope.config.Cmd = '';
$scope.formValues.CmdMode = 'override';
}
}
function loadFromContainerEntrypoint() {
if (_.has($scope.config, 'Entrypoint')) {
if ($scope.config.Entrypoint == null) {
$scope.config.Entrypoint = '';
}
$scope.formValues.EntrypointMode = 'override';
}
}
@ -577,8 +609,10 @@ angular.module('portainer.docker').controller('CreateContainerController', [
$scope.formValues.AccessControlData.AccessControlEnabled = false;
}
$scope.fromContainer = fromContainer;
$scope.state.mode = 'duplicate';
$scope.config = ContainerHelper.configFromContainer(fromContainer.Model);
loadFromContainerCmd(d);
loadFromContainerEntrypoint(d);
loadFromContainerLogging(d);
loadFromContainerPortBindings(d);
loadFromContainerVolumes(d);
@ -706,7 +740,6 @@ angular.module('portainer.docker').controller('CreateContainerController', [
function create() {
var oldContainer = null;
HttpRequestHelper.setPortainerAgentTargetHeader($scope.formValues.NodeName);
return findCurrentContainer().then(setOldContainer).then(confirmCreateContainer).then(startCreationProcess).catch(notifyOnError).finally(final);