Skip to content

Commit 6bac146

Browse files
author
OpenShift Bot
authored
Merge pull request #2141 from jeff-phillips-18/bind
Merged by openshift-bot
2 parents d6ad8d5 + e4431ae commit 6bac146

17 files changed

+184
-220
lines changed

app/scripts/directives/overview/serviceBindings.js

+1
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
angular.module('openshiftConsole').component('overviewServiceBindings', {
44
controllerAs: '$ctrl',
55
bindings: {
6+
sectionTitle: '@',
67
namespace: '<',
78
bindings: '<',
89
bindableServiceInstances: '<',

app/scripts/directives/overview/serviceInstanceRow.js

+6-10
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,9 @@
2525
ListRowUtils,
2626
ServiceInstancesService) {
2727
var row = this;
28+
var isBindingFailed = $filter('isBindingFailed');
29+
var isBindingReady = $filter('isBindingReady');
30+
2831
_.extend(row, ListRowUtils.ui);
2932

3033
var serviceInstanceDisplayName = $filter('serviceInstanceDisplayName');
@@ -35,20 +38,14 @@
3538
};
3639

3740
var updateInstanceStatus = function() {
38-
var conditions = _.get(row.apiObject, 'status.conditions');
39-
var readyCondition = _.find(conditions, {type: 'Ready'});
40-
41-
row.instanceError = _.find(conditions, {type: 'Failed', status: 'True'});
42-
4341
if (_.get(row.apiObject, 'metadata.deletionTimestamp')) {
4442
row.instanceStatus = 'deleted';
45-
} else if (row.instanceError) {
43+
} else if (isBindingFailed(row.apiObject)) {
4644
row.instanceStatus = 'failed';
47-
} else if (readyCondition && readyCondition.status === 'True') {
45+
} else if (isBindingReady(row.apiObject)) {
4846
row.instanceStatus = 'ready';
4947
} else {
5048
row.instanceStatus = 'pending';
51-
row.pendingMessage = _.get(readyCondition, 'message') || 'The instance is being provisioned asynchronously.';
5249
}
5350
};
5451

@@ -57,8 +54,7 @@
5754

5855
row.notifications = ListRowUtils.getNotifications(row.apiObject, row.state);
5956
row.displayName = serviceInstanceDisplayName(row.apiObject, row.state.serviceClasses);
60-
row.isBindable = !row.instanceError &&
61-
BindingService.isServiceBindable(row.apiObject, row.state.serviceClasses);
57+
row.isBindable = BindingService.isServiceBindable(row.apiObject, row.state.serviceClasses);
6258
row.description = getDescription();
6359
};
6460

app/scripts/directives/serviceBinding.js

+2-1
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,8 @@
1111
binding: '<',
1212
refApiObject: '<?',
1313
serviceClasses: '<',
14-
serviceInstances: '<'
14+
serviceInstances: '<',
15+
isOverview: '<?'
1516
},
1617
templateUrl: 'views/directives/_service-binding.html'
1718
});

app/styles/_components.less

+14
Original file line numberDiff line numberDiff line change
@@ -173,6 +173,20 @@ code.command {
173173
}
174174
}
175175
}
176+
177+
.component-label {
178+
font-size: @component-label;
179+
font-weight: 500;
180+
padding: 0 0 4px 0;
181+
.text-muted();
182+
text-transform: uppercase;
183+
.sublabel {
184+
font-size: (@component-label - 1);
185+
margin-left: 2px;
186+
text-transform: none;
187+
}
188+
}
189+
176190
.resource-details & {
177191
h3 {
178192
border-bottom: 0;

app/styles/_overview.less

+1-2
Original file line numberDiff line numberDiff line change
@@ -190,8 +190,7 @@
190190
@media (min-width: @screen-lg-min) {
191191
// aligns 2nd columns with metrics
192192
&.overview-builds-msg,
193-
&.overview-routes,
194-
&.overview-bindings {
193+
&.overview-routes {
195194
padding-left: 0;
196195
}
197196
}

app/views/browse/service-instance.html

+9-6
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,10 @@ <h1 class="contains-actions">
2929
</ul>
3030
</div>
3131
{{serviceInstance | serviceInstanceDisplayName:serviceClasses}}
32-
<small class="meta">created <span am-time-ago="serviceInstance.metadata.creationTimestamp"></span></small>
32+
<small class="list-row-longname">{{serviceInstance.metadata.name}}</small>
33+
<div>
34+
<small class="meta">created <span am-time-ago="serviceInstance.metadata.creationTimestamp"></span></small>
35+
</div>
3336
</h1>
3437
<labels labels="serviceInstance.metadata.labels" clickable="true" kind="service-instances" project-name="{{serviceInstance.metadata.namespace}}" limit="3"></labels>
3538
</div>
@@ -53,11 +56,6 @@ <h1 class="contains-actions">
5356
<div class="col-lg-6">
5457
<p ng-bind-html="plan.description | linkify : '_blank'"></p>
5558
<dl class="dl-horizontal left">
56-
<dt ng-if-start="serviceClass.description || serviceClass.externalMetadata.longDescription">Description:</dt>
57-
<dd ng-if-end>
58-
<p class="pre-wrap" ng-bind-html="serviceClass.description | linkify : '_blank'"></p>
59-
<p class="pre-wrap" ng-bind-html="serviceClass.externalMetadata.longDescription | linkify : '_blank'"></p>
60-
</dd>
6159
<dt>Status:</dt>
6260
<dd>
6361
<status-icon status="serviceInstance | serviceInstanceStatus" disable-animation></status-icon>
@@ -67,6 +65,11 @@ <h1 class="contains-actions">
6765
<dd ng-if-end>
6866
{{serviceInstance | serviceInstanceConditionMessage}}
6967
</dd>
68+
<dt ng-if-start="serviceClass.description || serviceClass.externalMetadata.longDescription">Description:</dt>
69+
<dd ng-if-end>
70+
<p class="pre-wrap" ng-bind-html="serviceClass.description | linkify : '_blank'"></p>
71+
<p class="pre-wrap" ng-bind-html="serviceClass.externalMetadata.longDescription | linkify : '_blank'"></p>
72+
</dd>
7073
</dl>
7174
</div>
7275
<div class="col-lg-6">

app/views/directives/_service-binding.html

+25-9
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,16 @@
11
<div class="service-binding">
22
<div class="row">
3-
<div class="col-sm-5 col-md-6">
4-
<h3 ng-if="$ctrl.serviceClass">
3+
<div ng-class="{'col-sm-5 col-md-6': $ctrl.isOverview,
4+
'col-sm-8 col-md-6 col-lg-8': !$ctrl.isOverview}">
5+
<h3>
6+
<div class="component-label">
7+
Secret
8+
</div>
59
<span ng-if="$ctrl.serviceClass">
6-
<span ng-if="$ctrl.refApiObject.kind !== 'Instance'">
10+
<span ng-if="$ctrl.refApiObject.kind !== 'ServiceInstance'">
711
{{$ctrl.serviceClass.externalMetadata.displayName || $ctrl.serviceClass.metadata.name}}
812
</span>
9-
<span ng-if="$ctrl.refApiObject.kind === 'Instance'">
13+
<span ng-if="$ctrl.refApiObject.kind === 'ServiceInstance'">
1014
{{$ctrl.binding.spec.secretName}}
1115
</span>
1216
</span>
@@ -17,25 +21,37 @@ <h3 ng-if="$ctrl.serviceClass">
1721
<small>created <span am-time-ago="$ctrl.binding.metadata.creationTimestamp"></span></small>
1822
</h3>
1923
</div>
20-
<div class="col-sm-7 col-md-6" ng-if="$ctrl.binding.metadata.deletionTimestamp">
24+
<div ng-if="$ctrl.binding.metadata.deletionTimestamp"
25+
ng-class="{'col-sm-7 col-md-6': $ctrl.isOverview,
26+
'col-sm-4 col-md-3': !$ctrl.isOverview}">
2127
<span class="pficon pficon-warning-triangle-o" aria-hidden="true"></span>
2228
Marked for Deletion
2329
</div>
24-
<div class="col-sm-7 col-md-6" ng-if="!$ctrl.binding.metadata.deletionTimestamp && !($ctrl.binding | isBindingReady)">
30+
<div ng-if="!$ctrl.binding.metadata.deletionTimestamp && ($ctrl.binding | isBindingFailed)"
31+
ng-class="{'col-sm-7 col-md-6': $ctrl.isOverview,
32+
'col-sm-4 col-md-6 col-lg-4': !$ctrl.isOverview}">
33+
<span dynamic-content="{{$ctrl.binding | bindingFailedMessage}}" data-toggle="tooltip" data-trigger="hover">
34+
<span class="pficon pficon-error-circle-o" aria-hidden="true"></span>
35+
<span>Error</span>
36+
</span>
37+
</div>
38+
<div ng-if="!$ctrl.binding.metadata.deletionTimestamp && !($ctrl.binding | isBindingFailed) && !($ctrl.binding | isBindingReady)"
39+
ng-class="{'col-sm-7 col-md-6': $ctrl.isOverview,
40+
'col-sm-4 col-md-6 col-lg-4': !$ctrl.isOverview}">
2541
<status-icon status="'Pending'"></status-icon>Pending
2642
</div>
2743
</div>
2844
<div class="service-binding-actions" ng-if="!ctrl.binding.metadata.deletionTimestamp">
2945
<delete-link
3046
ng-if="({resource: 'serviceinstancecredentials', group: 'servicecatalog.k8s.io'} | canI : 'delete')"
31-
label="Delete Binding"
32-
kind="binding"
47+
kind="serviceinstancecredential"
3348
group="servicecatalog.k8s.io"
3449
resource-name="{{$ctrl.binding.metadata.name}}"
3550
project-name="{{$ctrl.binding.metadata.namespace}}"
3651
stay-on-current-page="true">
3752
</delete-link>
38-
<a ng-if="('secrets' | canI : 'get') && ($ctrl.binding | isBindingReady)" ng-href="{{$ctrl.binding.spec.secretName | navigateResourceURL : 'Secret' : $ctrl.namespace}}">
53+
<a ng-if="('secrets' | canI : 'get') && !($ctrl.binding | isBindingFailed) && !(binding | isBindingReady)"
54+
ng-href="{{$ctrl.binding.spec.secretName | navigateResourceURL : 'Secret' : $ctrl.namespace}}">
3955
View Secret
4056
</a>
4157
</div>

app/views/overview/_list-row-expanded.html

+2
Original file line numberDiff line numberDiff line change
@@ -178,6 +178,7 @@ <h4 class="h5">Average Usage <small>Last 15 Minutes</small></h4>
178178
<uib-tab ng-if="row.showBindings && (row.bindings | size)" active="row.selectedTab.bindings">
179179
<uib-tab-heading>Bindings</uib-tab-heading>
180180
<overview-service-bindings
181+
section-title="Service Bindings"
181182
namespace="row.apiObject.metadata.namespace"
182183
bindings="row.bindings"
183184
bindable-service-instances="row.state.bindableServiceInstances"
@@ -213,6 +214,7 @@ <h4 class="h5">Average Usage <small>Last 15 Minutes</small></h4>
213214
</overview-builds>
214215

215216
<overview-service-bindings
217+
section-title="Service Bindings"
216218
ng-if="row.showBindings && (row.bindings | size)"
217219
namespace="row.apiObject.metadata.namespace"
218220
bindings="row.bindings"

app/views/overview/_service-bindings.html

+2-1
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,8 @@
11
<div class="expanded-section">
2-
<div class="section-title hidden-xs">Service Bindings</div>
2+
<div class="section-title hidden-xs">{{$ctrl.sectionTitle}}</div>
33
<service-binding
44
ng-repeat="binding in $ctrl.bindings track by (binding | uid)"
5+
is-overview="true"
56
namespace="$ctrl.namespace"
67
binding="binding"
78
service-classes="$ctrl.serviceClasses"

app/views/overview/_service-instance-row.html

+11-53
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@ <h3>
1616
<div class="list-pf-details" ng-if="!row.expanded" ng-switch="row.instanceStatus">
1717

1818
<span ng-switch-when="failed"
19-
dynamic-content="{{row.instanceError.message}}"
19+
dynamic-content="{{row.apiObject | serviceInstanceFailedMessage}}"
2020
data-toggle="tooltip"
2121
data-trigger="hover">
2222
<span class="pficon pficon-error-circle-o" aria-hidden="true"></span>
@@ -111,7 +111,7 @@ <h3>
111111
<div class="alert word-break alert-danger">
112112
<span class="pficon pficon-error-circle-o" aria-hidden="true"></span>
113113
<span class="sr-only">error</span>
114-
<span class="strong">{{row.instanceError.message}}</span>
114+
<span class="strong">{{row.apiObject | serviceInstanceFailedMessage}}</span>
115115
</div>
116116
</div>
117117
</div>
@@ -132,57 +132,15 @@ <h3>
132132
<p class="pre-wrap" ng-bind-html="row.description | linky"></p>
133133
</div>
134134
</div>
135-
<div class="section-title" ng-if="row.isBindable || row.bindings">
136-
Bindings
137-
</div>
138-
<div class="row overview-bindings" ng-repeat="(name, binding) in row.bindings">
139-
<div class="col-sm-5 col-md-6">
140-
<div ng-if="!(row.state.applicationsByBinding[binding.metadata.name] | size)">
141-
<h3>
142-
<div class="component-label">
143-
Secret
144-
</div>
145-
<a ng-if="('secrets' | canI : 'get') && (binding | isBindingReady)"
146-
ng-href="{{binding.spec.secretName | navigateResourceURL : 'Secret' : row.apiObject.metadata.namespace}}">
147-
{{binding.spec.secretName}}
148-
</a>
149-
<span ng-if="!('secrets' | canI : 'get') || !(binding | isBindingReady)">
150-
{{binding.spec.secretName}}
151-
</span>
152-
</h3>
153-
</div>
154-
<div ng-repeat="target in row.state.applicationsByBinding[binding.metadata.name] track by (target | uid)">
155-
<h3>
156-
<div class="component-label">
157-
{{target.kind | humanizeKind : true}}
158-
</div>
159-
<a ng-href="{{target | navigateResourceURL}}">{{target.metadata.name}}</a>
160-
</h3>
161-
</div>
162-
</div>
163-
<div class="col-sm-7 col-md-6 overview-bindings">
164-
<span ng-if="binding.metadata.deletionTimestamp">
165-
<span class="pficon pficon-warning-triangle-o" aria-hidden="true"></span>
166-
Marked for Deletion
167-
</span>
168-
<span ng-if="!(binding | isBindingReady) && !binding.metadata.deletionTimestamp">
169-
<status-icon status="'Pending'"></status-icon> Pending
170-
</span>
171-
</div>
172-
</div>
173-
<div class="row" ng-if="row.isBindable && ({resource: 'serviceinstancecredentials', group: 'servicecatalog.k8s.io'} | canI : 'create')">
174-
<div class="col-sm-12">
175-
<a href="" ng-click="row.showOverlayPanel('bindService', {target: row.apiObject})">
176-
<span class="pficon pficon-add-circle-o" aria-hidden="true"></span>
177-
Create Binding
178-
</a>
179-
</div>
180-
</div>
181-
<div class="row" ng-if="!row.bindings.length && (!row.isBindable || !({resource: 'serviceinstancecredentials', group: 'servicecatalog.k8s.io'} | canI : 'create'))">
182-
<div class="col-sm-12">
183-
<em>No bindings</em>
184-
</div>
185-
</div>
135+
<overview-service-bindings
136+
ng-if="row.isBindable || row.bindings"
137+
section-title="Bindings"
138+
namespace="row.apiObject.metadata.namespace"
139+
bindings="row.bindings"
140+
bindable-service-instances="row.state.bindableServiceInstances"
141+
service-classes="row.state.serviceClasses"
142+
create-binding="row.showOverlayPanel('bindService', {target: row.apiObject})">
143+
</overview-service-bindings>
186144
</div>
187145
</div>
188146
</div>

app/views/service-instances.html

+2-1
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,7 @@ <h1>
3030
<thead>
3131
<tr>
3232
<th>Name</th>
33+
<th>Instance Name</th>
3334
<th>Status</th>
3435
<th>Created</th>
3536
<th>Bindings</th>
@@ -43,7 +44,7 @@ <h1>
4344
<tbody ng-if="(serviceInstances | size) > 0">
4445
<tr ng-repeat="serviceInstance in serviceInstances track by (serviceInstance | uid)">
4546
<td data-title="Name"><a ng-href="{{serviceInstance | navigateResourceURL}}">{{serviceInstance | serviceInstanceDisplayName:serviceClasses}}</a></td>
46-
47+
<td data-title="Instance Name"><span>{{serviceInstance.metadata.name}}</span></td>
4748
<td data-title="Status">
4849
<div row class="status">
4950
<status-icon status="serviceInstance | serviceInstanceStatus" disable-animation></status-icon>

bower.json

+1-1
Original file line numberDiff line numberDiff line change
@@ -46,7 +46,7 @@
4646
"angular-moment": "1.0.0",
4747
"angular-utf8-base64": "0.0.5",
4848
"file-saver": "1.3.3",
49-
"origin-web-common": "0.0.58",
49+
"origin-web-common": "0.0.59",
5050
"origin-web-catalog": "0.0.49"
5151
},
5252
"devDependencies": {

dist/scripts/scripts.js

+8-12
Original file line numberDiff line numberDiff line change
@@ -13181,7 +13181,8 @@ namespace: "<",
1318113181
binding: "<",
1318213182
refApiObject: "<?",
1318313183
serviceClasses: "<",
13184-
serviceInstances: "<"
13184+
serviceInstances: "<",
13185+
isOverview: "<?"
1318513186
},
1318613187
templateUrl: "views/directives/_service-binding.html"
1318713188
});
@@ -13528,22 +13529,16 @@ templateUrl: "views/overview/_list-row.html"
1352813529
}(), function() {
1352913530
angular.module("openshiftConsole").component("serviceInstanceRow", {
1353013531
controller: [ "$filter", "AuthorizationService", "BindingService", "ListRowUtils", "ServiceInstancesService", function(e, t, n, a, r) {
13531-
var o = this;
13532+
var o = this, i = e("isBindingFailed"), s = e("isBindingReady");
1353213533
_.extend(o, a.ui);
13533-
var i = e("serviceInstanceDisplayName"), s = function() {
13534+
var c = e("serviceInstanceDisplayName"), l = function() {
1353413535
var e = o.apiObject.spec.serviceClassName;
1353513536
return _.get(o, [ "state", "serviceClasses", e, "description" ]);
13536-
}, c = function() {
13537-
var e = _.get(o.apiObject, "status.conditions"), t = _.find(e, {
13538-
type: "Ready"
13539-
});
13540-
o.instanceError = _.find(e, {
13541-
type: "Failed",
13542-
status: "True"
13543-
}), _.get(o.apiObject, "metadata.deletionTimestamp") ? o.instanceStatus = "deleted" : o.instanceError ? o.instanceStatus = "failed" : t && "True" === t.status ? o.instanceStatus = "ready" : (o.instanceStatus = "pending", o.pendingMessage = _.get(t, "message") || "The instance is being provisioned asynchronously.");
13537+
}, u = function() {
13538+
_.get(o.apiObject, "metadata.deletionTimestamp") ? o.instanceStatus = "deleted" : i(o.apiObject) ? o.instanceStatus = "failed" : s(o.apiObject) ? o.instanceStatus = "ready" : o.instanceStatus = "pending";
1354413539
};
1354513540
o.$doCheck = function() {
13546-
c(), o.notifications = a.getNotifications(o.apiObject, o.state), o.displayName = i(o.apiObject, o.state.serviceClasses), o.isBindable = !o.instanceError && n.isServiceBindable(o.apiObject, o.state.serviceClasses), o.description = s();
13541+
u(), o.notifications = a.getNotifications(o.apiObject, o.state), o.displayName = c(o.apiObject, o.state.serviceClasses), o.isBindable = n.isServiceBindable(o.apiObject, o.state.serviceClasses), o.description = l();
1354713542
}, o.$onChanges = function(e) {
1354813543
e.bindings && (o.deleteableBindings = _.reject(o.bindings, "metadata.deletionTimestamp"));
1354913544
}, o.getSecretForBinding = function(e) {
@@ -13592,6 +13587,7 @@ templateUrl: "views/overview/_pipelines.html"
1359213587
}), angular.module("openshiftConsole").component("overviewServiceBindings", {
1359313588
controllerAs: "$ctrl",
1359413589
bindings: {
13590+
sectionTitle: "@",
1359513591
namespace: "<",
1359613592
bindings: "<",
1359713593
bindableServiceInstances: "<",

0 commit comments

Comments
 (0)