Skip to content

Commit c21f7f6

Browse files
author
OpenShift Bot
authoredNov 17, 2016
Merge pull request #856 from spadgett/config-maps
Merged by openshift-bot
2 parents faa5ed6 + 3df63c0 commit c21f7f6

28 files changed

+1484
-167
lines changed
 

‎app/index.html

+5
Original file line numberDiff line numberDiff line change
@@ -228,13 +228,17 @@ <h1>JavaScript Required</h1>
228228
<script src="scripts/controllers/secrets.js"></script>
229229
<script src="scripts/controllers/secret.js"></script>
230230
<script src="scripts/controllers/createSecret.js"></script>
231+
<script src="scripts/controllers/configMaps.js"></script>
232+
<script src="scripts/controllers/configMap.js"></script>
233+
<script src="scripts/controllers/createConfigMap.js"></script>
231234
<script src="scripts/controllers/routes.js"></script>
232235
<script src="scripts/controllers/route.js"></script>
233236
<script src="scripts/controllers/storage.js"></script>
234237
<script src="scripts/controllers/otherResources.js"></script>
235238
<script src="scripts/controllers/persistentVolumeClaim.js"></script>
236239
<script src="scripts/controllers/setLimits.js"></script>
237240
<script src="scripts/controllers/edit/buildConfig.js"></script>
241+
<script src="scripts/controllers/edit/configMap.js"></script>
238242
<script src="scripts/controllers/edit/deploymentConfig.js"></script>
239243
<script src="scripts/controllers/edit/autoscaler.js"></script>
240244
<script src="scripts/controllers/edit/healthChecks.js"></script>
@@ -271,6 +275,7 @@ <h1>JavaScript Required</h1>
271275
<script src="scripts/directives/date.js"></script>
272276
<script src="scripts/directives/deleteLink.js"></script>
273277
<script src="scripts/directives/editWebhookTriggers.js"></script>
278+
<script src="scripts/directives/editConfigMap.js"></script>
274279
<script src="scripts/directives/events.js"></script>
275280
<script src="scripts/directives/eventsSidebar.js"></script>
276281
<script src="scripts/directives/eventsBadge.js"></script>

‎app/scripts/app.js

+16
Original file line numberDiff line numberDiff line change
@@ -263,6 +263,22 @@ angular
263263
templateUrl: 'views/create-secret.html',
264264
controller: 'CreateSecretController'
265265
})
266+
.when('/project/:project/browse/config-maps', {
267+
templateUrl: 'views/browse/config-maps.html',
268+
controller: 'ConfigMapsController',
269+
})
270+
.when('/project/:project/browse/config-maps/:configMap', {
271+
templateUrl: 'views/browse/config-map.html',
272+
controller: 'ConfigMapController',
273+
})
274+
.when('/project/:project/create-config-map', {
275+
templateUrl: 'views/create-config-map.html',
276+
controller: 'CreateConfigMapController'
277+
})
278+
.when('/project/:project/edit/config-maps/:configMap', {
279+
templateUrl: 'views/edit/config-map.html',
280+
controller: 'EditConfigMapController',
281+
})
266282
.when('/project/:project/browse/other', {
267283
templateUrl: 'views/other-resources.html',
268284
controller: 'OtherResourcesController',

‎app/scripts/constants.js

+7
Original file line numberDiff line numberDiff line change
@@ -177,6 +177,13 @@ window.OPENSHIFT_CONSTANTS = {
177177
verb: 'list'
178178
}
179179
},
180+
{
181+
label: "Config Maps",
182+
href: "/browse/config-maps",
183+
prefixes: [
184+
"/browse/config-maps/"
185+
]
186+
},
180187
{
181188
label: "Secrets",
182189
href: "/browse/secrets",

‎app/scripts/controllers/configMap.js

+64
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,64 @@
1+
'use strict';
2+
3+
/**
4+
* @ngdoc function
5+
* @name openshiftConsole.controller:ConfigMapController
6+
* @description
7+
* # ConfigMapController
8+
* Controller of the openshiftConsole
9+
*/
10+
angular.module('openshiftConsole')
11+
.controller('ConfigMapController',
12+
function ($scope,
13+
$routeParams,
14+
AlertMessageService,
15+
BreadcrumbsService,
16+
DataService,
17+
ProjectsService) {
18+
$scope.projectName = $routeParams.project;
19+
$scope.alerts = $scope.alerts || {};
20+
$scope.loaded = false;
21+
$scope.labelSuggestions = {};
22+
$scope.breadcrumbs = BreadcrumbsService.getBreadcrumbs({
23+
name: $routeParams.configMap,
24+
kind: 'ConfigMap',
25+
namespace: $routeParams.project
26+
});
27+
28+
AlertMessageService.getAlerts().forEach(function(alert) {
29+
$scope.alerts[alert.name] = alert.data;
30+
});
31+
32+
AlertMessageService.clearAlerts();
33+
34+
var watches = [];
35+
36+
var configMapResolved = function(configMap, action) {
37+
$scope.loaded = true;
38+
$scope.configMap = configMap;
39+
if (action === "DELETED") {
40+
$scope.alerts["deleted"] = {
41+
type: "warning",
42+
message: "This config map has been deleted."
43+
};
44+
}
45+
};
46+
47+
ProjectsService
48+
.get($routeParams.project)
49+
.then(_.spread(function(project, context) {
50+
DataService
51+
.get("configmaps", $routeParams.configMap, context, { errorNotification: false })
52+
.then(function(configMap) {
53+
configMapResolved(configMap);
54+
watches.push(DataService.watchObject("configmaps", $routeParams.configMap, context, configMapResolved));
55+
}, function(e) {
56+
$scope.loaded = true;
57+
$scope.error = e;
58+
});
59+
60+
$scope.$on('$destroy', function(){
61+
DataService.unwatchAll(watches);
62+
});
63+
}));
64+
});

‎app/scripts/controllers/configMaps.js

+76
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,76 @@
1+
'use strict';
2+
3+
/**
4+
* @ngdoc function
5+
* @name openshiftConsole.controller:ConfigMapsController
6+
* @description
7+
* # ConfigMapsController
8+
* Controller of the openshiftConsole
9+
*/
10+
angular.module('openshiftConsole')
11+
.controller('ConfigMapsController',
12+
function ($scope,
13+
$routeParams,
14+
AlertMessageService,
15+
DataService,
16+
LabelFilter,
17+
ProjectsService) {
18+
$scope.projectName = $routeParams.project;
19+
$scope.alerts = $scope.alerts || {};
20+
$scope.loaded = false;
21+
$scope.labelSuggestions = {};
22+
23+
AlertMessageService.getAlerts().forEach(function(alert) {
24+
$scope.alerts[alert.name] = alert.data;
25+
});
26+
27+
AlertMessageService.clearAlerts();
28+
29+
var watches = [];
30+
var configMaps;
31+
32+
var updateFilterWarning = function() {
33+
if (!LabelFilter.getLabelSelector().isEmpty() &&
34+
_.isEmpty($scope.configMaps) &&
35+
!_.isEmpty(configMaps)) {
36+
$scope.alerts["config-maps"] = {
37+
type: "warning",
38+
details: "The active filters are hiding all config maps."
39+
};
40+
} else {
41+
delete $scope.alerts["config-maps"];
42+
}
43+
};
44+
45+
var updateLabelSuggestions = function() {
46+
LabelFilter.addLabelSuggestionsFromResources(configMaps, $scope.labelSuggestions);
47+
LabelFilter.setLabelSuggestions($scope.labelSuggestions);
48+
};
49+
50+
var updateConfigMaps = function() {
51+
var filteredConfigMaps = LabelFilter.getLabelSelector().select(configMaps);
52+
$scope.configMaps = _.sortBy(filteredConfigMaps, 'metadata.name');
53+
updateFilterWarning();
54+
};
55+
56+
ProjectsService
57+
.get($routeParams.project)
58+
.then(_.spread(function(project, context) {
59+
$scope.project = project;
60+
61+
watches.push(DataService.watch('configmaps', context, function(configMapData) {
62+
configMaps = configMapData.by('metadata.name');
63+
updateLabelSuggestions();
64+
updateConfigMaps();
65+
$scope.loaded = true;
66+
}));
67+
68+
LabelFilter.onActiveFiltersChanged(function() {
69+
$scope.$apply(updateConfigMaps);
70+
});
71+
72+
$scope.$on('$destroy', function(){
73+
DataService.unwatchAll(watches);
74+
});
75+
}));
76+
});
+72
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,72 @@
1+
'use strict';
2+
3+
/**
4+
* @ngdoc function
5+
* @name openshiftConsole.controller:CreateConfigMapController
6+
* @description
7+
* # CreateConfigMapController
8+
* Controller of the openshiftConsole
9+
*/
10+
angular.module('openshiftConsole')
11+
.controller('CreateConfigMapController',
12+
function ($filter,
13+
$routeParams,
14+
$scope,
15+
$window,
16+
DataService,
17+
Navigate,
18+
ProjectsService) {
19+
$scope.alerts = {};
20+
$scope.projectName = $routeParams.project;
21+
22+
// TODO: Update BreadcrumbsService to handle create pages.
23+
$scope.breadcrumbs = [
24+
{
25+
title: $scope.projectName,
26+
link: "project/" + $scope.projectName
27+
},
28+
{
29+
title: "Config Maps",
30+
link: "project/" + $scope.projectName + "/browse/config-maps"
31+
},
32+
{
33+
title: "Create Config Map"
34+
}
35+
];
36+
37+
ProjectsService
38+
.get($routeParams.project)
39+
.then(_.spread(function(project, context) {
40+
$scope.project = project;
41+
// Update project breadcrumb with display name.
42+
$scope.breadcrumbs[0].title = $filter('displayName')(project);
43+
44+
$scope.configMap = {
45+
apiVersion: 'v1',
46+
kind: 'ConfigMap',
47+
metadata: {
48+
namespace: $routeParams.project
49+
},
50+
data: {}
51+
};
52+
53+
$scope.createConfigMap = function() {
54+
if ($scope.createConfigMapForm.$valid) {
55+
$scope.disableInputs = true;
56+
57+
DataService.create('configmaps', null, $scope.configMap, context)
58+
.then(function() { // Success
59+
// Return to the previous page.
60+
$window.history.back();
61+
}, function(result) { // Failure
62+
$scope.disableInputs = false;
63+
$scope.alerts['create-config-map'] = {
64+
type: "error",
65+
message: "An error occurred creating the config map.",
66+
details: $filter('getErrorDetails')(result)
67+
};
68+
});
69+
}
70+
};
71+
}));
72+
});
+88
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,88 @@
1+
'use strict';
2+
3+
/**
4+
* @ngdoc function
5+
* @name openshiftConsole.controller:EditConfigMapController
6+
* @description
7+
* # EditConfigMapController
8+
* Controller of the openshiftConsole
9+
*/
10+
angular.module('openshiftConsole')
11+
.controller('EditConfigMapController',
12+
function ($filter,
13+
$routeParams,
14+
$scope,
15+
$window,
16+
DataService,
17+
BreadcrumbsService,
18+
Navigate,
19+
ProjectsService) {
20+
var watches = [];
21+
$scope.alerts = {};
22+
$scope.forms = {};
23+
$scope.projectName = $routeParams.project;
24+
25+
$scope.breadcrumbs = BreadcrumbsService.getBreadcrumbs({
26+
name: $routeParams.configMap,
27+
kind: 'ConfigMap',
28+
namespace: $routeParams.project,
29+
includeProject: true,
30+
subpage: 'Edit Config Map'
31+
});
32+
33+
var getVersion = function(resource) {
34+
return _.get(resource, 'metadata.resourceVersion');
35+
};
36+
37+
ProjectsService
38+
.get($routeParams.project)
39+
.then(_.spread(function(project, context) {
40+
DataService
41+
.get("configmaps", $routeParams.configMap, context)
42+
.then(function(configMap) {
43+
$scope.loaded = true;
44+
$scope.breadcrumbs = BreadcrumbsService.getBreadcrumbs({
45+
name: $routeParams.configMap,
46+
object: configMap,
47+
includeProject: true,
48+
project: project,
49+
subpage: 'Edit Config Map'
50+
});
51+
$scope.configMap = configMap;
52+
watches.push(DataService.watchObject("configmaps", $routeParams.configMap, context, function(newValue, action) {
53+
$scope.resourceChanged = getVersion(newValue) !== getVersion($scope.configMap);
54+
$scope.resourceDeleted = action === "DELETED";
55+
}));
56+
}, function(e) {
57+
$scope.loaded = true;
58+
$scope.alerts["load"] = {
59+
type: "error",
60+
message: "The config map details could not be loaded.",
61+
details: $filter('getErrorDetails')(e)
62+
};
63+
});
64+
65+
$scope.updateConfigMap = function() {
66+
if ($scope.forms.editConfigMapForm.$valid) {
67+
$scope.disableInputs = true;
68+
69+
DataService.update('configmaps', $scope.configMap.metadata.name, $scope.configMap, context)
70+
.then(function() { // Success
71+
// Return to the previous page
72+
$window.history.back();
73+
}, function(result) { // Failure
74+
$scope.disableInputs = false;
75+
$scope.alerts['create-config-map'] = {
76+
type: "error",
77+
message: "An error occurred updating the config map.",
78+
details: $filter('getErrorDetails')(result)
79+
};
80+
});
81+
}
82+
};
83+
84+
$scope.$on('$destroy', function(){
85+
DataService.unwatchAll(watches);
86+
});
87+
}));
88+
});

‎app/scripts/controllers/otherResources.js

+2
Original file line numberDiff line numberDiff line change
@@ -21,9 +21,11 @@ angular.module('openshiftConsole')
2121
case "DeploymentConfig":
2222
case "BuildConfig":
2323
case "Build":
24+
case "ConfigMap":
2425
case "Pod":
2526
case "PersistentVolumeClaim":
2627
case "Event":
28+
case "Secret":
2729
case "Service":
2830
case "Route":
2931
case "ImageStream":

0 commit comments

Comments
 (0)
Please sign in to comment.