@@ -5,13 +5,18 @@ angular.module('openshiftConsole')
5
5
$filter ,
6
6
$routeParams ,
7
7
APIService ,
8
+ AuthorizationService ,
9
+ Catalog ,
8
10
DataService ,
9
11
ProjectsService ,
12
+ SecretsService ,
10
13
ServiceInstancesService ) {
11
14
$scope . alerts = { } ;
12
15
$scope . projectName = $routeParams . project ;
13
16
$scope . serviceInstance = null ;
14
17
$scope . serviceClass = null ;
18
+ $scope . serviceClasses = null ;
19
+ $scope . editDialogShown = false ;
15
20
16
21
$scope . breadcrumbs = [
17
22
{
@@ -24,9 +29,26 @@ angular.module('openshiftConsole')
24
29
ServiceInstancesService . deprovision ( $scope . serviceInstance ) ;
25
30
} ;
26
31
32
+ $scope . showEditDialog = function ( ) {
33
+ $scope . editDialogShown = true ;
34
+ } ;
35
+
36
+ $scope . showParameterValues = false ;
37
+
38
+ $scope . toggleShowParameterValues = function ( ) {
39
+ $scope . showParameterValues = ! $scope . showParameterValues ;
40
+ } ;
41
+
42
+ $scope . closeEditDialog = function ( ) {
43
+ $scope . editDialogShown = false ;
44
+ } ;
45
+
27
46
var watches = [ ] ;
47
+ var secretWatchers = [ ] ;
48
+ var serviceClassPromise ;
28
49
29
50
var serviceInstanceDisplayName = $filter ( 'serviceInstanceDisplayName' ) ;
51
+ var serviceInstanceReady = $filter ( 'isServiceInstanceReady' ) ;
30
52
31
53
// API Versions
32
54
$scope . serviceInstancesVersion = APIService . getPreferredVersion ( 'serviceinstances' ) ;
@@ -37,28 +59,71 @@ angular.module('openshiftConsole')
37
59
} ) ;
38
60
} ;
39
61
40
- var serviceClassPromise ;
62
+ var updateParameterData = function ( ) {
63
+ DataService . unwatchAll ( secretWatchers ) ;
64
+ secretWatchers = [ ] ;
65
+
66
+ $scope . parameterData = { } ;
67
+ _ . each ( _ . keys ( _ . get ( $scope . parameterSchema , 'properties' ) ) , function ( key ) {
68
+ $scope . parameterData [ key ] = $scope . parameterSchema . properties [ key ] . default ;
69
+ } ) ;
70
+
71
+ $scope . parameterData = angular . extend ( $scope . parameterData , _ . get ( $scope . serviceInstance , 'spec.parameters' , { } ) ) ;
72
+
73
+ if ( AuthorizationService . canI ( 'secrets' , 'get' , $scope . projectName ) ) {
74
+ _ . each ( _ . get ( $scope . serviceInstance , 'spec.parametersFrom' ) , function ( parametersSource ) {
75
+ secretWatchers . push ( DataService . watchObject ( "secrets" , _ . get ( parametersSource , 'secretKeyRef.name' ) , $scope . projectContext , function ( secret ) {
76
+ try {
77
+ _ . extend ( $scope . parameterData , JSON . parse ( SecretsService . decodeSecretData ( secret . data ) [ parametersSource . key ] ) ) ;
78
+ } catch ( e ) {
79
+ }
80
+ } ) ) ;
81
+ } ) ;
82
+ }
83
+ } ;
84
+
85
+ var updateParameterSchema = function ( ) {
86
+ $scope . parameterFormDefinition = angular . copy ( _ . get ( $scope . plan , 'spec.externalMetadata.schemas.service_instance.update.openshift_form_definition' ) ) ;
87
+
88
+ $scope . parameterSchema = angular . copy ( _ . get ( $scope . plan , 'spec.instanceUpdateParameterSchema' ) ) ;
89
+ _ . set ( $scope . parameterSchema , 'readonly' , true ) ;
90
+ _ . set ( $scope . parameterSchema , 'required' , [ ] ) ;
91
+
92
+ _ . each ( _ . get ( $scope . parameterSchema , 'properties' ) , function ( property ) {
93
+ property . description = undefined ;
94
+ property . title = property . title + ":" ;
95
+ } ) ;
96
+
97
+ var planUpdatable = _ . get ( $scope . plan , 'spec.instanceUpdateParameterSchema' ) || ( _ . get ( $scope . serviceClass , 'spec.planUpdatable' ) && ( _ . size ( $scope . servicePlans ) > 1 ) ) ;
98
+
99
+ $scope . editAvailable = planUpdatable && serviceInstanceReady ( $scope . serviceInstance ) && ! _ . get ( $scope . serviceInstance , 'metadata.deletionTimestamp' ) ;
100
+ } ;
101
+
41
102
var updateServiceClass = function ( ) {
42
103
// If we've previously loaded the service class or a request is in flight, don't do anything.
43
- if ( $scope . serviceClass || serviceClassPromise ) {
104
+ if ( ! $scope . serviceInstance || $scope . serviceClass || serviceClassPromise ) {
44
105
return ;
45
106
}
46
107
47
- serviceClassPromise = ServiceInstancesService . fetchServiceClassForInstance ( $scope . serviceInstance ) . then ( function ( serviceClass ) {
108
+ serviceClassPromise = ServiceInstancesService . fetchServiceClassForInstance ( $scope . serviceInstance ) . then ( function ( serviceClass ) {
48
109
$scope . serviceClass = serviceClass ;
49
- $scope . displayName = serviceInstanceDisplayName ( $scope . serviceInstance , serviceClass ) ;
110
+ $scope . displayName = serviceInstanceDisplayName ( $scope . serviceInstance , $scope . serviceClass ) ;
111
+
50
112
updateBreadcrumbs ( ) ;
51
113
serviceClassPromise = null ;
52
- } ) ;
53
- } ;
54
114
55
- var updatePlan = function ( ) {
56
- if ( ServiceInstancesService . isCurrentPlan ( $scope . serviceInstance , $scope . plan ) ) {
57
- return ;
58
- }
115
+ Catalog . getServicePlans ( ) . then ( function ( plans ) {
116
+ plans = plans . by ( 'metadata.name' ) ;
117
+
118
+ var plansByServiceClassName = Catalog . groupPlansByServiceClassName ( plans ) ;
119
+ $scope . servicePlans = plansByServiceClassName [ $scope . serviceClass . metadata . name ] ;
59
120
60
- ServiceInstancesService . fetchServicePlanForInstance ( $scope . serviceInstance ) . then ( function ( plan ) {
61
- $scope . plan = plan ;
121
+ var servicePlanName = _ . get ( $scope . serviceInstance , 'spec.clusterServicePlanRef.name' ) ;
122
+ $scope . plan = plans [ servicePlanName ] ;
123
+
124
+ updateParameterSchema ( ) ;
125
+ updateParameterData ( ) ;
126
+ } ) ;
62
127
} ) ;
63
128
} ;
64
129
@@ -74,7 +139,6 @@ angular.module('openshiftConsole')
74
139
}
75
140
76
141
updateServiceClass ( ) ;
77
- updatePlan ( ) ;
78
142
} ;
79
143
80
144
ProjectsService
@@ -96,9 +160,17 @@ angular.module('openshiftConsole')
96
160
details : $filter ( 'getErrorDetails' ) ( error )
97
161
} ;
98
162
} ) ;
163
+ } , function ( error ) {
164
+ $scope . loaded = true ;
165
+ $scope . alerts [ "load" ] = {
166
+ type : "error" ,
167
+ message : "The service details could not be loaded." ,
168
+ details : $filter ( 'getErrorDetails' ) ( error )
169
+ } ;
170
+ } ) ) ;
99
171
100
- $scope . $on ( '$destroy' , function ( ) {
101
- DataService . unwatchAll ( watches ) ;
102
- } ) ;
103
- } ) ) ;
172
+ $scope . $on ( '$destroy' , function ( ) {
173
+ DataService . unwatchAll ( watches ) ;
174
+ DataService . unwatchAll ( secretWatchers ) ;
175
+ } ) ;
104
176
} ) ;
0 commit comments