Skip to content
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.

Commit 2ae3b45

Browse files
committedOct 23, 2017
Handle displaying parameters when secrets are not available.
Bump catalog version to 0.0.58
1 parent 6c32d53 commit 2ae3b45

File tree

9 files changed

+300
-220
lines changed

9 files changed

+300
-220
lines changed
 

Diff for: ‎app/scripts/controllers/serviceInstance.js

+28-6
Original file line numberDiff line numberDiff line change
@@ -73,18 +73,40 @@ angular.module('openshiftConsole')
7373
DataService.unwatchAll(secretWatchers);
7474
secretWatchers = [];
7575

76+
$scope.allowParametersReveal = AuthorizationService.canI('secrets', 'get', $scope.projectName);
7677
$scope.parameterData = {};
77-
_.each(_.keys(_.get($scope.parameterSchema, 'properties')), function(key) {
78-
$scope.parameterData[key] = $scope.parameterSchema.properties[key].default;
78+
$scope.opaqueParameterKeys = [];
79+
80+
if (!$scope.allowParametersReveal) {
81+
_.each(_.keys(_.get($scope.parameterSchema, 'properties')), function (key) {
82+
$scope.parameterData[key] = '*****';
83+
});
84+
}
85+
86+
var statusParameters = _.get($scope.serviceInstance, 'status.externalProperties.parameters', {});
87+
_.each(_.keys(statusParameters), function(key) {
88+
if (statusParameters[key] === '<redacted>') {
89+
$scope.parameterData[key] = '*****';
90+
} else {
91+
$scope.parameterData[key] = statusParameters[key];
92+
$scope.opaqueParameterKeys.push(key);
93+
}
7994
});
8095

81-
$scope.parameterData = angular.extend($scope.parameterData, _.get($scope.serviceInstance, 'spec.parameters', {}));
96+
// Fill in the secret values if they are available to the user
97+
if ($scope.allowParametersReveal) {
98+
// Set default values for those items that are not specifically set, secrets will override
99+
_.each(_.keys(_.get($scope.parameterSchema, 'properties')), function (key) {
100+
$scope.parameterData[key] = $scope.parameterSchema.properties[key].default;
101+
});
82102

83-
if (AuthorizationService.canI('secrets', 'get', $scope.projectName)) {
103+
// Get the data from each secret
84104
_.each(_.get($scope.serviceInstance, 'spec.parametersFrom'), function (parametersSource) {
85105
secretWatchers.push(DataService.watchObject("secrets", _.get(parametersSource, 'secretKeyRef.name'), $scope.projectContext, function (secret) {
86106
try {
87-
_.extend($scope.parameterData, JSON.parse(SecretsService.decodeSecretData(secret.data)[parametersSource.secretKeyRef.key]));
107+
var secretData = JSON.parse(SecretsService.decodeSecretData(secret.data)[parametersSource.secretKeyRef.key]);
108+
// TODO: ONly include fields from the secret that are part of the schema
109+
_.extend($scope.parameterData, secretData);
88110
} catch (e) {
89111
Logger.warn('Unable to load parameters from secret ' + _.get(parametersSource, 'secretKeyRef.name'), e);
90112
}
@@ -107,6 +129,7 @@ angular.module('openshiftConsole')
107129
var updateParameterSchema = function() {
108130
$scope.parameterFormDefinition = angular.copy(_.get($scope.plan, 'spec.externalMetadata.schemas.service_instance.update.openshift_form_definition'));
109131
$scope.parameterSchema = _.get($scope.plan, 'spec.instanceCreateParameterSchema');
132+
updateParameterData();
110133
};
111134

112135
var updateServiceClass = function() {
@@ -132,7 +155,6 @@ angular.module('openshiftConsole')
132155
$scope.plan = plans[servicePlanName];
133156

134157
updateParameterSchema();
135-
updateParameterData();
136158
updateEditable();
137159
});
138160
});

Diff for: ‎app/scripts/directives/serviceBinding.js

+30-4
Original file line numberDiff line numberDiff line change
@@ -38,12 +38,38 @@
3838
};
3939

4040
var updateParameterData = function() {
41-
ctrl.parameterData = angular.copy(_.get(ctrl.binding, 'spec.parameters', {}));
42-
if (AuthorizationService.canI('secrets', 'get', ctrl.namespace)) {
41+
42+
ctrl.allowParametersReveal = AuthorizationService.canI('secrets', 'get', ctrl.namespace);
43+
ctrl.parameterData = {};
44+
ctrl.opaqueParameterKeys = [];
45+
46+
if (!ctrl.allowParametersReveal) {
47+
_.each(_.keys(_.get(ctrl.bindParameterSchema, 'properties')), function (key) {
48+
ctrl.parameterData[key] = '*****';
49+
});
50+
}
51+
var statusParameters = _.get(ctrl.binding, 'status.externalProperties.parameters', {});
52+
_.each(_.keys(statusParameters), function(key) {
53+
if (statusParameters[key] === '<redacted>') {
54+
ctrl.parameterData[key] = '*****';
55+
} else {
56+
ctrl.parameterData[key] = statusParameters[key];
57+
ctrl.opaqueParameterKeys.push(key);
58+
}
59+
});
60+
61+
if (ctrl.allowParametersReveal) {
62+
// Set default values for those items that are not specifically set, secrets will override
63+
_.each(_.keys(_.get(ctrl.bindParameterSchema, 'properties')), function (key) {
64+
ctrl.parameterData[key] = ctrl.bindParameterSchema.properties[key].default;
65+
});
66+
4367
_.each(_.get(ctrl.binding, 'spec.parametersFrom'), function (parametersSource) {
4468
DataService.get('secrets', _.get(parametersSource, 'secretKeyRef.name'), context).then(function (secret) {
4569
try {
46-
_.extend(ctrl.parameterData, JSON.parse(SecretsService.decodeSecretData(secret.data)[parametersSource.secretKeyRef.key]));
70+
var secretData = JSON.parse(SecretsService.decodeSecretData(secret.data)[parametersSource.secretKeyRef.key]);
71+
// TODO: Only include fields from the secret that are part of the schema
72+
_.extend(ctrl.parameterData, secretData);
4773
} catch (e) {
4874
Logger.warn('Unable to load parameters from secret ' + _.get(parametersSource, 'secretKeyRef.name'), e);
4975
}
@@ -57,6 +83,7 @@
5783
DataService.get(resource, _.get(ctrl.serviceInstance, 'spec.clusterServicePlanRef.name'), context).then(function(servicePlan) {
5884
ctrl.bindParameterFormDefinition = angular.copy(_.get(servicePlan, 'spec.externalMetadata.schemas.service_binding.create.openshift_form_definition'));
5985
ctrl.bindParameterSchema = _.get(servicePlan, 'spec.serviceBindingCreateParameterSchema');
86+
updateParameterData();
6087
});
6188
};
6289

@@ -76,7 +103,6 @@
76103
if (changes.binding || changes.serviceInstances || changes.serviceClasses) {
77104
updateServiceClass();
78105
updateParameterSchema();
79-
updateParameterData();
80106
}
81107
};
82108

Diff for: ‎app/views/browse/service-instance.html

+2-1
Original file line numberDiff line numberDiff line change
@@ -104,13 +104,14 @@ <h3>Plan</h3>
104104
<div ng-if="parameterSchema.properties" class="config-parameters-form">
105105
<h3>
106106
<span>Configuration</span>
107-
<a href="" class="hide-show-link" ng-click="toggleShowParameterValues()" role="button">
107+
<a ng-if="allowParametersReveal" href="" class="hide-show-link" ng-click="toggleShowParameterValues()" role="button">
108108
{{showParameterValues ? 'Hide Values' : 'Reveal Values'}}
109109
</a>
110110
</h3>
111111
<form name="forms.orderConfigureForm" >
112112
<catalog-parameters
113113
hide-values="!showParameterValues"
114+
opaque-keys="opaqueParameterKeys"
114115
model="parameterData"
115116
parameter-schema="parameterSchema"
116117
parameter-form-definition="parameterFormDefinition"

Diff for: ‎app/views/directives/_service-binding.html

+2-1
Original file line numberDiff line numberDiff line change
@@ -50,12 +50,13 @@ <h3>
5050
</div>
5151
<div class="service-binding-parameters" ng-if="!$ctrl.isOverview && $ctrl.bindParameterSchema.properties">
5252
<span class="component-label">Parameters</span>
53-
<a href="" class="hide-show-link" ng-click="$ctrl.toggleShowParameterValues()" role="button">
53+
<a ng-if="$ctrl.allowParametersReveal" href="" class="hide-show-link" ng-click="$ctrl.toggleShowParameterValues()" role="button">
5454
{{$ctrl.showParameterValues ? 'Hide Values' : 'Reveal Values'}}
5555
</a>
5656
<form name="ctrl.parametersForm">
5757
<catalog-parameters
5858
hide-values="!$ctrl.showParameterValues"
59+
opaque-keys="$ctrl.opaqueParameterKeys"
5960
model="$ctrl.parameterData"
6061
parameter-form-definition="$ctrl.bindParameterFormDefinition"
6162
parameter-schema="$ctrl.bindParameterSchema"

Diff for: ‎bower.json

+1-1
Original file line numberDiff line numberDiff line change
@@ -47,7 +47,7 @@
4747
"angular-utf8-base64": "0.0.5",
4848
"file-saver": "1.3.3",
4949
"origin-web-common": "0.0.68",
50-
"origin-web-catalog": "0.0.57"
50+
"origin-web-catalog": "0.0.58"
5151
},
5252
"devDependencies": {
5353
"angular-mocks": "1.5.11",

0 commit comments

Comments
 (0)