Skip to content

Commit

Permalink
Merge pull request #2141 from jeff-phillips-18/bind
Browse files Browse the repository at this point in the history
Merged by openshift-bot
  • Loading branch information
OpenShift Bot committed Sep 22, 2017
2 parents d6ad8d5 + e4431ae commit 6bac146
Show file tree
Hide file tree
Showing 17 changed files with 184 additions and 220 deletions.
1 change: 1 addition & 0 deletions app/scripts/directives/overview/serviceBindings.js
Expand Up @@ -3,6 +3,7 @@
angular.module('openshiftConsole').component('overviewServiceBindings', {
controllerAs: '$ctrl',
bindings: {
sectionTitle: '@',
namespace: '<',
bindings: '<',
bindableServiceInstances: '<',
Expand Down
16 changes: 6 additions & 10 deletions app/scripts/directives/overview/serviceInstanceRow.js
Expand Up @@ -25,6 +25,9 @@
ListRowUtils,
ServiceInstancesService) {
var row = this;
var isBindingFailed = $filter('isBindingFailed');
var isBindingReady = $filter('isBindingReady');

_.extend(row, ListRowUtils.ui);

var serviceInstanceDisplayName = $filter('serviceInstanceDisplayName');
Expand All @@ -35,20 +38,14 @@
};

var updateInstanceStatus = function() {
var conditions = _.get(row.apiObject, 'status.conditions');
var readyCondition = _.find(conditions, {type: 'Ready'});

row.instanceError = _.find(conditions, {type: 'Failed', status: 'True'});

if (_.get(row.apiObject, 'metadata.deletionTimestamp')) {
row.instanceStatus = 'deleted';
} else if (row.instanceError) {
} else if (isBindingFailed(row.apiObject)) {
row.instanceStatus = 'failed';
} else if (readyCondition && readyCondition.status === 'True') {
} else if (isBindingReady(row.apiObject)) {
row.instanceStatus = 'ready';
} else {
row.instanceStatus = 'pending';
row.pendingMessage = _.get(readyCondition, 'message') || 'The instance is being provisioned asynchronously.';
}
};

Expand All @@ -57,8 +54,7 @@

row.notifications = ListRowUtils.getNotifications(row.apiObject, row.state);
row.displayName = serviceInstanceDisplayName(row.apiObject, row.state.serviceClasses);
row.isBindable = !row.instanceError &&
BindingService.isServiceBindable(row.apiObject, row.state.serviceClasses);
row.isBindable = BindingService.isServiceBindable(row.apiObject, row.state.serviceClasses);
row.description = getDescription();
};

Expand Down
3 changes: 2 additions & 1 deletion app/scripts/directives/serviceBinding.js
Expand Up @@ -11,7 +11,8 @@
binding: '<',
refApiObject: '<?',
serviceClasses: '<',
serviceInstances: '<'
serviceInstances: '<',
isOverview: '<?'
},
templateUrl: 'views/directives/_service-binding.html'
});
Expand Down
14 changes: 14 additions & 0 deletions app/styles/_components.less
Expand Up @@ -173,6 +173,20 @@ code.command {
}
}
}

.component-label {
font-size: @component-label;
font-weight: 500;
padding: 0 0 4px 0;
.text-muted();
text-transform: uppercase;
.sublabel {
font-size: (@component-label - 1);
margin-left: 2px;
text-transform: none;
}
}

.resource-details & {
h3 {
border-bottom: 0;
Expand Down
3 changes: 1 addition & 2 deletions app/styles/_overview.less
Expand Up @@ -190,8 +190,7 @@
@media (min-width: @screen-lg-min) {
// aligns 2nd columns with metrics
&.overview-builds-msg,
&.overview-routes,
&.overview-bindings {
&.overview-routes {
padding-left: 0;
}
}
Expand Down
15 changes: 9 additions & 6 deletions app/views/browse/service-instance.html
Expand Up @@ -29,7 +29,10 @@ <h1 class="contains-actions">
</ul>
</div>
{{serviceInstance | serviceInstanceDisplayName:serviceClasses}}
<small class="meta">created <span am-time-ago="serviceInstance.metadata.creationTimestamp"></span></small>
<small class="list-row-longname">{{serviceInstance.metadata.name}}</small>
<div>
<small class="meta">created <span am-time-ago="serviceInstance.metadata.creationTimestamp"></span></small>
</div>
</h1>
<labels labels="serviceInstance.metadata.labels" clickable="true" kind="service-instances" project-name="{{serviceInstance.metadata.namespace}}" limit="3"></labels>
</div>
Expand All @@ -53,11 +56,6 @@ <h1 class="contains-actions">
<div class="col-lg-6">
<p ng-bind-html="plan.description | linkify : '_blank'"></p>
<dl class="dl-horizontal left">
<dt ng-if-start="serviceClass.description || serviceClass.externalMetadata.longDescription">Description:</dt>
<dd ng-if-end>
<p class="pre-wrap" ng-bind-html="serviceClass.description | linkify : '_blank'"></p>
<p class="pre-wrap" ng-bind-html="serviceClass.externalMetadata.longDescription | linkify : '_blank'"></p>
</dd>
<dt>Status:</dt>
<dd>
<status-icon status="serviceInstance | serviceInstanceStatus" disable-animation></status-icon>
Expand All @@ -67,6 +65,11 @@ <h1 class="contains-actions">
<dd ng-if-end>
{{serviceInstance | serviceInstanceConditionMessage}}
</dd>
<dt ng-if-start="serviceClass.description || serviceClass.externalMetadata.longDescription">Description:</dt>
<dd ng-if-end>
<p class="pre-wrap" ng-bind-html="serviceClass.description | linkify : '_blank'"></p>
<p class="pre-wrap" ng-bind-html="serviceClass.externalMetadata.longDescription | linkify : '_blank'"></p>
</dd>
</dl>
</div>
<div class="col-lg-6">
Expand Down
34 changes: 25 additions & 9 deletions app/views/directives/_service-binding.html
@@ -1,12 +1,16 @@
<div class="service-binding">
<div class="row">
<div class="col-sm-5 col-md-6">
<h3 ng-if="$ctrl.serviceClass">
<div ng-class="{'col-sm-5 col-md-6': $ctrl.isOverview,
'col-sm-8 col-md-6 col-lg-8': !$ctrl.isOverview}">
<h3>
<div class="component-label">
Secret
</div>
<span ng-if="$ctrl.serviceClass">
<span ng-if="$ctrl.refApiObject.kind !== 'Instance'">
<span ng-if="$ctrl.refApiObject.kind !== 'ServiceInstance'">
{{$ctrl.serviceClass.externalMetadata.displayName || $ctrl.serviceClass.metadata.name}}
</span>
<span ng-if="$ctrl.refApiObject.kind === 'Instance'">
<span ng-if="$ctrl.refApiObject.kind === 'ServiceInstance'">
{{$ctrl.binding.spec.secretName}}
</span>
</span>
Expand All @@ -17,25 +21,37 @@ <h3 ng-if="$ctrl.serviceClass">
<small>created <span am-time-ago="$ctrl.binding.metadata.creationTimestamp"></span></small>
</h3>
</div>
<div class="col-sm-7 col-md-6" ng-if="$ctrl.binding.metadata.deletionTimestamp">
<div ng-if="$ctrl.binding.metadata.deletionTimestamp"
ng-class="{'col-sm-7 col-md-6': $ctrl.isOverview,
'col-sm-4 col-md-3': !$ctrl.isOverview}">
<span class="pficon pficon-warning-triangle-o" aria-hidden="true"></span>
Marked for Deletion
</div>
<div class="col-sm-7 col-md-6" ng-if="!$ctrl.binding.metadata.deletionTimestamp && !($ctrl.binding | isBindingReady)">
<div ng-if="!$ctrl.binding.metadata.deletionTimestamp && ($ctrl.binding | isBindingFailed)"
ng-class="{'col-sm-7 col-md-6': $ctrl.isOverview,
'col-sm-4 col-md-6 col-lg-4': !$ctrl.isOverview}">
<span dynamic-content="{{$ctrl.binding | bindingFailedMessage}}" data-toggle="tooltip" data-trigger="hover">
<span class="pficon pficon-error-circle-o" aria-hidden="true"></span>
<span>Error</span>
</span>
</div>
<div ng-if="!$ctrl.binding.metadata.deletionTimestamp && !($ctrl.binding | isBindingFailed) && !($ctrl.binding | isBindingReady)"
ng-class="{'col-sm-7 col-md-6': $ctrl.isOverview,
'col-sm-4 col-md-6 col-lg-4': !$ctrl.isOverview}">
<status-icon status="'Pending'"></status-icon>Pending
</div>
</div>
<div class="service-binding-actions" ng-if="!ctrl.binding.metadata.deletionTimestamp">
<delete-link
ng-if="({resource: 'serviceinstancecredentials', group: 'servicecatalog.k8s.io'} | canI : 'delete')"
label="Delete Binding"
kind="binding"
kind="serviceinstancecredential"
group="servicecatalog.k8s.io"
resource-name="{{$ctrl.binding.metadata.name}}"
project-name="{{$ctrl.binding.metadata.namespace}}"
stay-on-current-page="true">
</delete-link>
<a ng-if="('secrets' | canI : 'get') && ($ctrl.binding | isBindingReady)" ng-href="{{$ctrl.binding.spec.secretName | navigateResourceURL : 'Secret' : $ctrl.namespace}}">
<a ng-if="('secrets' | canI : 'get') && !($ctrl.binding | isBindingFailed) && !(binding | isBindingReady)"
ng-href="{{$ctrl.binding.spec.secretName | navigateResourceURL : 'Secret' : $ctrl.namespace}}">
View Secret
</a>
</div>
Expand Down
2 changes: 2 additions & 0 deletions app/views/overview/_list-row-expanded.html
Expand Up @@ -178,6 +178,7 @@ <h4 class="h5">Average Usage <small>Last 15 Minutes</small></h4>
<uib-tab ng-if="row.showBindings && (row.bindings | size)" active="row.selectedTab.bindings">
<uib-tab-heading>Bindings</uib-tab-heading>
<overview-service-bindings
section-title="Service Bindings"
namespace="row.apiObject.metadata.namespace"
bindings="row.bindings"
bindable-service-instances="row.state.bindableServiceInstances"
Expand Down Expand Up @@ -213,6 +214,7 @@ <h4 class="h5">Average Usage <small>Last 15 Minutes</small></h4>
</overview-builds>

<overview-service-bindings
section-title="Service Bindings"
ng-if="row.showBindings && (row.bindings | size)"
namespace="row.apiObject.metadata.namespace"
bindings="row.bindings"
Expand Down
3 changes: 2 additions & 1 deletion app/views/overview/_service-bindings.html
@@ -1,7 +1,8 @@
<div class="expanded-section">
<div class="section-title hidden-xs">Service Bindings</div>
<div class="section-title hidden-xs">{{$ctrl.sectionTitle}}</div>
<service-binding
ng-repeat="binding in $ctrl.bindings track by (binding | uid)"
is-overview="true"
namespace="$ctrl.namespace"
binding="binding"
service-classes="$ctrl.serviceClasses"
Expand Down
64 changes: 11 additions & 53 deletions app/views/overview/_service-instance-row.html
Expand Up @@ -16,7 +16,7 @@ <h3>
<div class="list-pf-details" ng-if="!row.expanded" ng-switch="row.instanceStatus">

<span ng-switch-when="failed"
dynamic-content="{{row.instanceError.message}}"
dynamic-content="{{row.apiObject | serviceInstanceFailedMessage}}"
data-toggle="tooltip"
data-trigger="hover">
<span class="pficon pficon-error-circle-o" aria-hidden="true"></span>
Expand Down Expand Up @@ -111,7 +111,7 @@ <h3>
<div class="alert word-break alert-danger">
<span class="pficon pficon-error-circle-o" aria-hidden="true"></span>
<span class="sr-only">error</span>
<span class="strong">{{row.instanceError.message}}</span>
<span class="strong">{{row.apiObject | serviceInstanceFailedMessage}}</span>
</div>
</div>
</div>
Expand All @@ -132,57 +132,15 @@ <h3>
<p class="pre-wrap" ng-bind-html="row.description | linky"></p>
</div>
</div>
<div class="section-title" ng-if="row.isBindable || row.bindings">
Bindings
</div>
<div class="row overview-bindings" ng-repeat="(name, binding) in row.bindings">
<div class="col-sm-5 col-md-6">
<div ng-if="!(row.state.applicationsByBinding[binding.metadata.name] | size)">
<h3>
<div class="component-label">
Secret
</div>
<a ng-if="('secrets' | canI : 'get') && (binding | isBindingReady)"
ng-href="{{binding.spec.secretName | navigateResourceURL : 'Secret' : row.apiObject.metadata.namespace}}">
{{binding.spec.secretName}}
</a>
<span ng-if="!('secrets' | canI : 'get') || !(binding | isBindingReady)">
{{binding.spec.secretName}}
</span>
</h3>
</div>
<div ng-repeat="target in row.state.applicationsByBinding[binding.metadata.name] track by (target | uid)">
<h3>
<div class="component-label">
{{target.kind | humanizeKind : true}}
</div>
<a ng-href="{{target | navigateResourceURL}}">{{target.metadata.name}}</a>
</h3>
</div>
</div>
<div class="col-sm-7 col-md-6 overview-bindings">
<span ng-if="binding.metadata.deletionTimestamp">
<span class="pficon pficon-warning-triangle-o" aria-hidden="true"></span>
Marked for Deletion
</span>
<span ng-if="!(binding | isBindingReady) && !binding.metadata.deletionTimestamp">
<status-icon status="'Pending'"></status-icon> Pending
</span>
</div>
</div>
<div class="row" ng-if="row.isBindable && ({resource: 'serviceinstancecredentials', group: 'servicecatalog.k8s.io'} | canI : 'create')">
<div class="col-sm-12">
<a href="" ng-click="row.showOverlayPanel('bindService', {target: row.apiObject})">
<span class="pficon pficon-add-circle-o" aria-hidden="true"></span>
Create Binding
</a>
</div>
</div>
<div class="row" ng-if="!row.bindings.length && (!row.isBindable || !({resource: 'serviceinstancecredentials', group: 'servicecatalog.k8s.io'} | canI : 'create'))">
<div class="col-sm-12">
<em>No bindings</em>
</div>
</div>
<overview-service-bindings
ng-if="row.isBindable || row.bindings"
section-title="Bindings"
namespace="row.apiObject.metadata.namespace"
bindings="row.bindings"
bindable-service-instances="row.state.bindableServiceInstances"
service-classes="row.state.serviceClasses"
create-binding="row.showOverlayPanel('bindService', {target: row.apiObject})">
</overview-service-bindings>
</div>
</div>
</div>
Expand Down
3 changes: 2 additions & 1 deletion app/views/service-instances.html
Expand Up @@ -30,6 +30,7 @@ <h1>
<thead>
<tr>
<th>Name</th>
<th>Instance Name</th>
<th>Status</th>
<th>Created</th>
<th>Bindings</th>
Expand All @@ -43,7 +44,7 @@ <h1>
<tbody ng-if="(serviceInstances | size) > 0">
<tr ng-repeat="serviceInstance in serviceInstances track by (serviceInstance | uid)">
<td data-title="Name"><a ng-href="{{serviceInstance | navigateResourceURL}}">{{serviceInstance | serviceInstanceDisplayName:serviceClasses}}</a></td>

<td data-title="Instance Name"><span>{{serviceInstance.metadata.name}}</span></td>
<td data-title="Status">
<div row class="status">
<status-icon status="serviceInstance | serviceInstanceStatus" disable-animation></status-icon>
Expand Down
2 changes: 1 addition & 1 deletion bower.json
Expand Up @@ -46,7 +46,7 @@
"angular-moment": "1.0.0",
"angular-utf8-base64": "0.0.5",
"file-saver": "1.3.3",
"origin-web-common": "0.0.58",
"origin-web-common": "0.0.59",
"origin-web-catalog": "0.0.49"
},
"devDependencies": {
Expand Down
20 changes: 8 additions & 12 deletions dist/scripts/scripts.js
Expand Up @@ -13181,7 +13181,8 @@ namespace: "<",
binding: "<",
refApiObject: "<?",
serviceClasses: "<",
serviceInstances: "<"
serviceInstances: "<",
isOverview: "<?"
},
templateUrl: "views/directives/_service-binding.html"
});
Expand Down Expand Up @@ -13528,22 +13529,16 @@ templateUrl: "views/overview/_list-row.html"
}(), function() {
angular.module("openshiftConsole").component("serviceInstanceRow", {
controller: [ "$filter", "AuthorizationService", "BindingService", "ListRowUtils", "ServiceInstancesService", function(e, t, n, a, r) {
var o = this;
var o = this, i = e("isBindingFailed"), s = e("isBindingReady");
_.extend(o, a.ui);
var i = e("serviceInstanceDisplayName"), s = function() {
var c = e("serviceInstanceDisplayName"), l = function() {
var e = o.apiObject.spec.serviceClassName;
return _.get(o, [ "state", "serviceClasses", e, "description" ]);
}, c = function() {
var e = _.get(o.apiObject, "status.conditions"), t = _.find(e, {
type: "Ready"
});
o.instanceError = _.find(e, {
type: "Failed",
status: "True"
}), _.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.");
}, u = function() {
_.get(o.apiObject, "metadata.deletionTimestamp") ? o.instanceStatus = "deleted" : i(o.apiObject) ? o.instanceStatus = "failed" : s(o.apiObject) ? o.instanceStatus = "ready" : o.instanceStatus = "pending";
};
o.$doCheck = function() {
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();
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();
}, o.$onChanges = function(e) {
e.bindings && (o.deleteableBindings = _.reject(o.bindings, "metadata.deletionTimestamp"));
}, o.getSecretForBinding = function(e) {
Expand Down Expand Up @@ -13592,6 +13587,7 @@ templateUrl: "views/overview/_pipelines.html"
}), angular.module("openshiftConsole").component("overviewServiceBindings", {
controllerAs: "$ctrl",
bindings: {
sectionTitle: "@",
namespace: "<",
bindings: "<",
bindableServiceInstances: "<",
Expand Down

0 comments on commit 6bac146

Please sign in to comment.