@@ -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,25 @@ 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 = [ ] ;
28
48
29
49
var serviceInstanceDisplayName = $filter ( 'serviceInstanceDisplayName' ) ;
50
+ var serviceInstanceReady = $filter ( 'isServiceInstanceReady' ) ;
30
51
31
52
// API Versions
32
53
$scope . serviceInstancesVersion = APIService . getPreferredVersion ( 'serviceinstances' ) ;
@@ -37,25 +58,69 @@ angular.module('openshiftConsole')
37
58
} ) ;
38
59
} ;
39
60
61
+ var updateParameterData = function ( ) {
62
+ DataService . unwatchAll ( secretWatchers ) ;
63
+ secretWatchers = [ ] ;
64
+
65
+ $scope . parameterData = { } ;
66
+ _ . each ( _ . keys ( _ . get ( $scope . parameterSchema , 'properties' ) ) , function ( key ) {
67
+ $scope . parameterData [ key ] = $scope . parameterSchema . properties [ key ] . default ;
68
+ } ) ;
69
+
70
+ $scope . parameterData = angular . extend ( $scope . parameterData , _ . get ( $scope . serviceInstance , 'spec.parameters' , { } ) ) ;
71
+
72
+ if ( AuthorizationService . canI ( 'secrets' , 'get' , $scope . projectName ) ) {
73
+ _ . each ( _ . get ( $scope . serviceInstance , 'spec.parametersFrom' ) , function ( parametersSource ) {
74
+ secretWatchers . push ( DataService . watchObject ( "secrets" , _ . get ( parametersSource , 'secretKeyRef.name' ) , $scope . projectContext , function ( secret ) {
75
+ try {
76
+ _ . extend ( $scope . parameterData , JSON . parse ( SecretsService . decodeSecretData ( secret . data ) [ parametersSource . key ] ) ) ;
77
+ } catch ( e ) {
78
+ }
79
+ } ) ) ;
80
+ } ) ;
81
+ }
82
+ } ;
83
+
84
+ var updateParameterSchema = function ( ) {
85
+ $scope . parameterFormDefinition = angular . copy ( _ . get ( $scope . plan , 'spec.externalMetadata.schemas.service_instance.update.openshift_form_definition' ) ) ;
86
+
87
+ $scope . parameterSchema = angular . copy ( _ . get ( $scope . plan , 'spec.instanceUpdateParameterSchema' ) ) ;
88
+ $scope . parameterSchema . readonly = true ;
89
+ $scope . parameterSchema . required = [ ] ;
90
+
91
+ _ . each ( _ . get ( $scope . parameterSchema , 'properties' ) , function ( property ) {
92
+ property . description = undefined ;
93
+ property . title = property . title + ":" ;
94
+ } ) ;
95
+
96
+ var planUpdatable = _ . get ( $scope . plan , 'spec.instanceUpdateParameterSchema' ) || ( _ . get ( $scope . serviceClass , 'spec.planUpdatable' ) && ( _ . size ( $scope . servicePlans ) > 1 ) ) ;
97
+
98
+ $scope . editAvailable = planUpdatable && serviceInstanceReady ( $scope . serviceInstance ) && ! _ . get ( $scope . serviceInstance , 'metadata.deletionTimestamp' ) ;
99
+ } ;
100
+
40
101
var updateServiceClass = function ( ) {
41
- if ( $scope . serviceClass ) {
102
+ if ( ! $scope . serviceInstance ) {
42
103
return ;
43
104
}
44
105
45
106
ServiceInstancesService . fetchServiceClassForInstance ( $scope . serviceInstance ) . then ( function ( serviceClass ) {
46
107
$scope . serviceClass = serviceClass ;
47
- $scope . displayName = serviceInstanceDisplayName ( $scope . serviceInstance , serviceClass ) ;
108
+ $scope . displayName = serviceInstanceDisplayName ( $scope . serviceInstance , $scope . serviceClass ) ;
109
+
48
110
updateBreadcrumbs ( ) ;
49
- } ) ;
50
- } ;
51
111
52
- var updatePlan = function ( ) {
53
- if ( ServiceInstancesService . isCurrentPlan ( $scope . serviceInstance , $scope . plan ) ) {
54
- return ;
55
- }
112
+ Catalog . getServicePlans ( ) . then ( function ( plans ) {
113
+ plans = plans . by ( 'metadata.name' ) ;
114
+
115
+ var plansByServiceClassName = Catalog . groupPlansByServiceClassName ( plans ) ;
116
+ $scope . servicePlans = plansByServiceClassName [ $scope . serviceClass . metadata . name ] ;
56
117
57
- ServiceInstancesService . fetchServicePlanForInstance ( $scope . serviceInstance ) . then ( function ( plan ) {
58
- $scope . plan = plan ;
118
+ var servicePlanName = _ . get ( $scope . serviceInstance , 'spec.clusterServicePlanRef.name' ) ;
119
+ $scope . plan = plans [ servicePlanName ] ;
120
+
121
+ updateParameterSchema ( ) ;
122
+ updateParameterData ( ) ;
123
+ } ) ;
59
124
} ) ;
60
125
} ;
61
126
@@ -71,7 +136,6 @@ angular.module('openshiftConsole')
71
136
}
72
137
73
138
updateServiceClass ( ) ;
74
- updatePlan ( ) ;
75
139
} ;
76
140
77
141
ProjectsService
@@ -93,9 +157,17 @@ angular.module('openshiftConsole')
93
157
details : $filter ( 'getErrorDetails' ) ( error )
94
158
} ;
95
159
} ) ;
160
+ } , function ( error ) {
161
+ $scope . loaded = true ;
162
+ $scope . alerts [ "load" ] = {
163
+ type : "error" ,
164
+ message : "The service details could not be loaded." ,
165
+ details : $filter ( 'getErrorDetails' ) ( error )
166
+ } ;
167
+ } ) ) ;
96
168
97
- $scope . $on ( '$destroy' , function ( ) {
98
- DataService . unwatchAll ( watches ) ;
99
- } ) ;
100
- } ) ) ;
169
+ $scope . $on ( '$destroy' , function ( ) {
170
+ DataService . unwatchAll ( watches ) ;
171
+ DataService . unwatchAll ( secretWatchers ) ;
172
+ } ) ;
101
173
} ) ;
0 commit comments