From 4d22a0448409e54c569c0651a661aea006a3fe12 Mon Sep 17 00:00:00 2001 From: Kevan Ahlquist Date: Tue, 20 Jan 2015 01:42:08 -0600 Subject: [PATCH] Added ENV variables to container start. --- .../startContainerController.js | 16 +++++++- .../startContainerController.spec.js | 40 ++++++++++++++++--- .../startContainer/startcontainer.html | 17 ++++++++ test/unit/karma.conf.js | 1 + 4 files changed, 68 insertions(+), 6 deletions(-) diff --git a/app/components/startContainer/startContainerController.js b/app/components/startContainer/startContainerController.js index 674032d4e..de22b2ebe 100644 --- a/app/components/startContainer/startContainerController.js +++ b/app/components/startContainer/startContainerController.js @@ -7,7 +7,7 @@ function($scope, $routeParams, $location, Container, Messages) { memory: 0, memorySwap: 0, cpuShares: 1024, - env: '', + env: [], commands: '', volumesFrom: '', portBindings: [] @@ -28,6 +28,10 @@ function($scope, $routeParams, $location, Container, Messages) { var loc = $location; var s = $scope; + var env = $scope.config.env.map(function(envar) { + return envar.name + '=' + envar.value; + }); + var exposedPorts = {}; var portBindings = {}; // TODO: consider using compatibility library @@ -57,6 +61,7 @@ function($scope, $routeParams, $location, Container, Messages) { CpuShares: $scope.config.cpuShares, Cmd: cmds, VolumesFrom: $scope.config.volumesFrom, + Env: env, ExposedPorts: exposedPorts, HostConfig: { PortBindings: portBindings @@ -90,4 +95,13 @@ function($scope, $routeParams, $location, Container, Messages) { var idx = $scope.config.portBindings.indexOf(portBinding); $scope.config.portBindings.splice(idx, 1); }; + + $scope.addEnv = function() { + $scope.config.env.push({name: '', value: ''}); + }; + + $scope.removeEnv = function(envar) { + var idx = $scope.config.env.indexOf(envar); + $scope.config.env.splice(idx, 1); + }; }]); diff --git a/app/components/startContainer/startContainerController.spec.js b/app/components/startContainer/startContainerController.spec.js index 97d75133e..6d7626a19 100644 --- a/app/components/startContainer/startContainerController.spec.js +++ b/app/components/startContainer/startContainerController.spec.js @@ -19,7 +19,7 @@ describe('startContainerController', function () { }); })); - describe('Starting a container with options', function () { + describe('Create and start a container with port bindings', function () { it('should issue a correct create request to the Docker remote API', function() { var controller = createController(); var id = '6abd8bfba81cf8a05a76a4bdefcb36c4b66cd02265f4bfcd0e236468696ebc6c'; @@ -30,6 +30,7 @@ describe('startContainerController', function () { "CpuShares": 1024, "Cmd": null, "VolumesFrom": "", + "Env": [], "ExposedPorts":{ "9000/tcp": {}, }, @@ -53,11 +54,40 @@ describe('startContainerController', function () { scope.config.name = 'container-name'; scope.config.portBindings = [{ip: '10.20.10.15', extPort: '9999', intPort: '9000'}] - //var response = mockContainer.create({}); scope.create(); - $httpBackend.flush(); - //console.log(response); }); }); -}); \ No newline at end of file + + describe('Create and start a container with environment variables', function () { + it('should issue a correct create request to the Docker remote API', function() { + var controller = createController(); + var id = '6abd8bfba81cf8a05a76a4bdefcb36c4b66cd02265f4bfcd0e236468696ebc6c'; + var expectedBody = { + "name": "container-name", + "Memory": 0, + "MemorySwap": 0, + "CpuShares": 1024, + "Cmd": null, + "VolumesFrom": "", + "Env":["SHELL=/bin/bash", "TERM=xterm-256color"], + "ExposedPorts":{}, + "HostConfig": {"PortBindings":{}} + }; + $httpBackend.expectPOST('/dockerapi/containers/create?name=container-name', expectedBody).respond({ + "Id": id, + "Warnings": null + }); + $httpBackend.expectPOST('/dockerapi/containers/' + id + '/start?').respond({ + "Id": id, + "Warnings": null + }); + + scope.config.name = 'container-name'; + scope.config.env = [{name: 'SHELL', value: '/bin/bash'}, {name: 'TERM', value: 'xterm-256color'}]; + + scope.create(); + $httpBackend.flush(); + }); + }); +}); diff --git a/app/components/startContainer/startcontainer.html b/app/components/startContainer/startcontainer.html index 91f7ab268..ae33055b2 100644 --- a/app/components/startContainer/startcontainer.html +++ b/app/components/startContainer/startcontainer.html @@ -33,6 +33,23 @@ +
+ +
+
+ + +
+
+ + +
+
+ +
+
+ +
diff --git a/test/unit/karma.conf.js b/test/unit/karma.conf.js index 00f7b04d2..4b5d2412e 100644 --- a/test/unit/karma.conf.js +++ b/test/unit/karma.conf.js @@ -6,6 +6,7 @@ files = [ JASMINE, JASMINE_ADAPTER, 'assets/js/jquery-1.11.1.min.js', + 'assets/js/bootstrap.min.js', 'assets/js/angularjs/1.2.6/angular.min.js', 'assets/js/angularjs/1.2.6/angular-route.min.js', 'assets/js/angularjs/1.2.6/angular-resource.min.js',