@@ -5,13 +5,17 @@ angular.module('openshiftConsole')
5
5
$filter ,
6
6
$routeParams ,
7
7
APIService ,
8
+ Catalog ,
8
9
DataService ,
9
10
ProjectsService ,
11
+ SecretsService ,
10
12
ServiceInstancesService ) {
11
13
$scope . alerts = { } ;
12
14
$scope . projectName = $routeParams . project ;
13
15
$scope . serviceInstance = null ;
14
16
$scope . serviceClass = null ;
17
+ $scope . serviceClasses = null ;
18
+ $scope . editDialogShown = false ;
15
19
16
20
$scope . breadcrumbs = [
17
21
{
@@ -24,11 +28,28 @@ angular.module('openshiftConsole')
24
28
ServiceInstancesService . deprovision ( $scope . serviceInstance ) ;
25
29
} ;
26
30
31
+ $scope . showEditDialog = function ( ) {
32
+ $scope . editDialogShown = true ;
33
+ } ;
34
+
35
+ $scope . showConfigValues = false ;
36
+
37
+ $scope . toggleConfigValues = function ( ) {
38
+ $scope . showConfigValues = ! $scope . showConfigValues ;
39
+ } ;
40
+
41
+ $scope . closeEditDialog = function ( ) {
42
+ $scope . editDialogShown = false ;
43
+ } ;
44
+
27
45
var watches = [ ] ;
46
+ var secretWatcher ;
28
47
29
48
var serviceInstanceDisplayName = $filter ( 'serviceInstanceDisplayName' ) ;
49
+ var serviceInstanceReady = $filter ( 'isServiceInstanceReady' ) ;
30
50
31
51
// API Versions
52
+ var serviceClassesVersion = APIService . getPreferredVersion ( 'clusterserviceclasses' ) ;
32
53
var serviceInstancesVersion = APIService . getPreferredVersion ( 'serviceinstances' ) ;
33
54
34
55
var updateBreadcrumbs = function ( ) {
@@ -37,25 +58,68 @@ angular.module('openshiftConsole')
37
58
} ) ;
38
59
} ;
39
60
40
- var updateServiceClass = function ( ) {
41
- if ( $scope . serviceClass ) {
42
- return ;
61
+ var updateParameterData = function ( ) {
62
+ if ( secretWatcher ) {
63
+ DataService . unwatch ( secretWatcher ) ;
64
+ secretWatcher = undefined ;
43
65
}
44
66
45
- ServiceInstancesService . fetchServiceClassForInstance ( $scope . serviceInstance ) . then ( function ( serviceClass ) {
46
- $scope . serviceClass = serviceClass ;
47
- $scope . displayName = serviceInstanceDisplayName ( $scope . serviceInstance , serviceClass ) ;
48
- updateBreadcrumbs ( ) ;
67
+ $scope . parameterData = { } ;
68
+ _ . each ( _ . keys ( _ . get ( $scope . parameterSchema , 'properties' ) ) , function ( key ) {
69
+ $scope . parameterData [ key ] = $scope . parameterSchema . properties [ key ] . default ;
70
+ } ) ;
71
+
72
+ $scope . parameterData = angular . extend ( $scope . parameterData , _ . get ( $scope . serviceInstance , 'spec.parameters' , { } ) ) ;
73
+
74
+ _ . each ( _ . get ( $scope . serviceInstance , 'spec.parametersFrom' ) , function ( parametersSource ) {
75
+ secretWatcher = DataService . watchObject ( "secrets" , _ . get ( parametersSource , 'secretKeyRef.name' ) , $scope . projectContext , function ( secret ) {
76
+ try {
77
+ _ . extend ( $scope . parameterData , JSON . parse ( SecretsService . decodeSecretData ( secret . data ) . parameters ) ) ;
78
+ } catch ( e ) {
79
+ }
80
+ } ) ;
49
81
} ) ;
50
82
} ;
51
83
52
- var updatePlan = function ( ) {
53
- if ( ServiceInstancesService . isCurrentPlan ( $scope . serviceInstance , $scope . plan ) ) {
84
+ var updateParameterSchema = function ( ) {
85
+ $scope . parameterFormDefinition = angular . copy ( _ . get ( $scope . plan , 'spec.externalMetadata.schemas.service_instance.create.openshift_form_definition' ) ) ;
86
+
87
+ $scope . parameterSchema = angular . copy ( _ . get ( $scope . plan , 'spec.instanceCreateParameterSchema' ) ) ;
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
+ // TODO: Find some plans and schemas that are updateable
97
+ // var planUpdatable = _.get($scope.plan, 'spec.instanceUpdateParameterSchema') || (_.get($scope.serviceClass, 'spec.planUpdatable') && (_.size($scope.servicePlans) > 1));
98
+ var planUpdatable = _ . get ( $scope . plan , 'spec.instanceCreateParameterSchema' ) || ( _ . get ( $scope . serviceClass , 'spec.planUpdatable' ) && ( _ . size ( $scope . servicePlans ) > 1 ) ) ;
99
+
100
+ $scope . editAvailable = planUpdatable && serviceInstanceReady ( $scope . serviceInstance ) && ! _ . get ( $scope . serviceInstance , 'metadata.deletionTimestamp' ) ;
101
+ } ;
102
+
103
+ var updateServiceClass = function ( ) {
104
+ if ( ! $scope . serviceInstance || ! $scope . serviceClasses ) {
54
105
return ;
55
106
}
56
107
57
- ServiceInstancesService . fetchServicePlanForInstance ( $scope . serviceInstance ) . then ( function ( plan ) {
58
- $scope . plan = plan ;
108
+ var serviceClassName = _ . get ( $scope . serviceInstance . spec , 'serviceClassRef.name' ) ;
109
+ $scope . serviceClass = _ . get ( $scope . serviceClasses , [ serviceClassName ] ) ;
110
+ $scope . displayName = serviceInstanceDisplayName ( $scope . serviceInstance , $scope . serviceClass ) ;
111
+ updateBreadcrumbs ( ) ;
112
+
113
+ Catalog . getServicePlans ( ) . then ( function ( plans ) {
114
+ plans = plans . by ( 'metadata.name' ) ;
115
+ var plansByServiceClassName = Catalog . groupPlansByServiceClassName ( plans ) ;
116
+ $scope . servicePlans = plansByServiceClassName [ $scope . serviceClass . metadata . name ] ;
117
+
118
+ var servicePlanName = _ . get ( $scope . serviceInstance , 'spec.servicePlanRef.name' ) ;
119
+ $scope . plan = plans [ servicePlanName ] ;
120
+
121
+ updateParameterSchema ( ) ;
122
+ updateParameterData ( ) ;
59
123
} ) ;
60
124
} ;
61
125
@@ -71,7 +135,6 @@ angular.module('openshiftConsole')
71
135
}
72
136
73
137
updateServiceClass ( ) ;
74
- updatePlan ( ) ;
75
138
} ;
76
139
77
140
ProjectsService
@@ -80,6 +143,8 @@ angular.module('openshiftConsole')
80
143
$scope . project = project ;
81
144
$scope . projectContext = context ;
82
145
146
+
147
+
83
148
DataService
84
149
. get ( serviceInstancesVersion , $routeParams . instance , context , { errorNotification : false } )
85
150
. then ( function ( serviceInstance ) {
@@ -94,8 +159,24 @@ angular.module('openshiftConsole')
94
159
} ;
95
160
} ) ;
96
161
97
- $scope . $on ( '$destroy' , function ( ) {
98
- DataService . unwatchAll ( watches ) ;
162
+ DataService . list ( serviceClassesVersion , { } , function ( serviceClasses ) {
163
+ $scope . serviceClasses = serviceClasses . by ( 'metadata.name' ) ;
164
+ updateServiceClass ( ) ;
165
+ updateBreadcrumbs ( ) ;
99
166
} ) ;
100
- } ) ) ;
167
+ } , function ( error ) {
168
+ $scope . loaded = true ;
169
+ $scope . alerts [ "load" ] = {
170
+ type : "error" ,
171
+ message : "The service details could not be loaded." ,
172
+ details : $filter ( 'getErrorDetails' ) ( error )
173
+ } ;
174
+ } ) ) ;
175
+
176
+ $scope . $on ( '$destroy' , function ( ) {
177
+ DataService . unwatchAll ( watches ) ;
178
+ if ( secretWatcher ) {
179
+ DataService . unwatch ( secretWatcher ) ;
180
+ }
181
+ } ) ;
101
182
} ) ;
0 commit comments