From df4d95651234b26f3754e31855759fb8b6adefa5 Mon Sep 17 00:00:00 2001 From: Richard Cox Date: Thu, 23 Jul 2020 20:33:19 +0100 Subject: [PATCH] Add service broker space scope information to service wall list (#4463) * Add service broker space scope information to service wall list * Split out `Space Scope` into it's own `Scope` row/column * Add service broker scope to service instance list (card and table) & app binding list (card) * Fix e2e test * Fix services table, cater for brokers that return 403 * Changes following review - Show space scope link in app service list (quick access) - Harmonize names (Service, broker, scope, etc) - Fix space scope link in services wall --- .../src/shared/cf-shared.module.ts | 4 + .../app-service-binding-card.component.html | 22 +++++- .../app-service-binding-card.component.ts | 58 ++++++--------- .../cf-service-card.component.html | 12 ++- .../cf-service-card.component.ts | 21 +++--- .../cf-service-instances-list-config.base.ts | 4 +- .../cf-services-list-config.service.ts | 19 ++++- .../table-cell-service-broker.component.html | 16 ++++ .../table-cell-service-broker.component.scss | 0 ...able-cell-service-broker.component.spec.ts | 25 +++++++ .../table-cell-service-broker.component.ts | 73 +++++++++++++++++++ .../table-cell-service.component.html | 9 ++- .../table-cell-service.component.scss | 7 ++ .../table-cell-service.component.ts | 33 +++++---- .../service-instance-card.component.html | 12 ++- .../service-instance-card.component.ts | 27 +++---- ...ate-service-instances-bind-app-e2e.spec.ts | 2 +- 17 files changed, 256 insertions(+), 88 deletions(-) create mode 100644 src/frontend/packages/cloud-foundry/src/shared/components/list/list-types/cf-services/table-cell-service-broker/table-cell-service-broker.component.html create mode 100644 src/frontend/packages/cloud-foundry/src/shared/components/list/list-types/cf-services/table-cell-service-broker/table-cell-service-broker.component.scss create mode 100644 src/frontend/packages/cloud-foundry/src/shared/components/list/list-types/cf-services/table-cell-service-broker/table-cell-service-broker.component.spec.ts create mode 100644 src/frontend/packages/cloud-foundry/src/shared/components/list/list-types/cf-services/table-cell-service-broker/table-cell-service-broker.component.ts diff --git a/src/frontend/packages/cloud-foundry/src/shared/cf-shared.module.ts b/src/frontend/packages/cloud-foundry/src/shared/cf-shared.module.ts index faca9700ab..206abb267a 100644 --- a/src/frontend/packages/cloud-foundry/src/shared/cf-shared.module.ts +++ b/src/frontend/packages/cloud-foundry/src/shared/cf-shared.module.ts @@ -136,6 +136,9 @@ import { import { TableCellServiceBindableComponent, } from './components/list/list-types/cf-services/table-cell-service-bindable/table-cell-service-bindable.component'; +import { + TableCellServiceBrokerComponent, +} from './components/list/list-types/cf-services/table-cell-service-broker/table-cell-service-broker.component'; import { TableCellServiceCfBreadcrumbsComponent, } from './components/list/list-types/cf-services/table-cell-service-cf-breadcrumbs/table-cell-service-cf-breadcrumbs.component'; @@ -248,6 +251,7 @@ const cfListTableCells: Type>[] = [ TableCellServiceReferencesComponent, TableCellServiceInstanceTagsComponent, TableCellCommitAuthorComponent, + TableCellServiceBrokerComponent ]; const cfListCards: Type>[] = [ diff --git a/src/frontend/packages/cloud-foundry/src/shared/components/list/list-types/app-sevice-bindings/app-service-binding-card/app-service-binding-card.component.html b/src/frontend/packages/cloud-foundry/src/shared/components/list/list-types/app-sevice-bindings/app-service-binding-card/app-service-binding-card.component.html index 6bfbddb4da..854f94676f 100644 --- a/src/frontend/packages/cloud-foundry/src/shared/components/list/list-types/app-sevice-bindings/app-service-binding-card/app-service-binding-card.component.html +++ b/src/frontend/packages/cloud-foundry/src/shared/components/list/list-types/app-sevice-bindings/app-service-binding-card/app-service-binding-card.component.html @@ -1,7 +1,7 @@
- {{ (serviceInstance$ | async)?.entity.entity.name}} + {{ (serviceInstance$ | async)?.entity.name}}
@@ -18,7 +18,25 @@ {{ data.label }} {{ data.data$ | async }} - + + Service Broker + + + + + + + Service Scope + + + + + + + Date Created On + {{ row.metadata.created_at | date:'medium'}} + + Environment Variables diff --git a/src/frontend/packages/cloud-foundry/src/shared/components/list/list-types/app-sevice-bindings/app-service-binding-card/app-service-binding-card.component.ts b/src/frontend/packages/cloud-foundry/src/shared/components/list/list-types/app-sevice-bindings/app-service-binding-card/app-service-binding-card.component.ts index 23b66083dc..b3e39e94f2 100644 --- a/src/frontend/packages/cloud-foundry/src/shared/components/list/list-types/app-sevice-bindings/app-service-binding-card/app-service-binding-card.component.ts +++ b/src/frontend/packages/cloud-foundry/src/shared/components/list/list-types/app-sevice-bindings/app-service-binding-card/app-service-binding-card.component.ts @@ -1,7 +1,6 @@ -import { DatePipe } from '@angular/common'; import { Component, OnInit } from '@angular/core'; import { MatDialog } from '@angular/material/dialog'; -import { combineLatest as observableCombineLatest, Observable, of as observableOf, of } from 'rxjs'; +import { combineLatest as observableCombineLatest, Observable, of } from 'rxjs'; import { filter, first, map, switchMap } from 'rxjs/operators'; import { @@ -24,7 +23,6 @@ import { serviceBindingEntityType } from '../../../../../../cf-entity-types'; import { ApplicationService } from '../../../../../../features/applications/application.service'; import { isUserProvidedServiceInstance } from '../../../../../../features/cf/cf.helpers'; import { - getServiceBrokerName, getServiceName, getServicePlanName, getServiceSummaryUrl, @@ -34,6 +32,10 @@ import { CfCurrentUserPermissions } from '../../../../../../user-permissions/cf- import { ServiceActionHelperService } from '../../../../../data-services/service-action-helper.service'; import { CSI_CANCEL_URL } from '../../../../add-service-instance/csi-mode.service'; import { EnvVarViewComponent } from '../../../../env-var-view/env-var-view.component'; +import { + TableCellServiceBrokerComponentConfig, + TableCellServiceBrokerComponentMode, +} from '../../cf-services/table-cell-service-broker/table-cell-service-broker.component'; interface EnvVarData { @@ -54,19 +56,25 @@ export class AppServiceBindingCardComponent extends CardCell> | null>; + service$: Observable | null>; serviceInstance$: Observable>>; tags$: Observable[]>; entityConfig: ComponentEntityMonitorConfig; private envVarServicesSection$: Observable; - private isUserProvidedServiceInstance: boolean; + isUserProvidedServiceInstance: boolean; serviceDescription$: Observable; serviceUrl$: Observable; serviceName$: Observable; + brokerNameConfig: TableCellServiceBrokerComponentConfig = { + mode: TableCellServiceBrokerComponentMode.NAME + } + brokerScopeConfig: TableCellServiceBrokerComponentConfig = { + mode: TableCellServiceBrokerComponentMode.SCOPE, + } + constructor( private dialog: MatDialog, - private datePipe: DatePipe, private appService: ApplicationService, private serviceActionHelperService: ServiceActionHelperService, private currentUserPermissionsService: CurrentUserPermissionsService, @@ -105,11 +113,6 @@ export class AppServiceBindingCardComponent extends CardCell !!o.entity.entity.tags), map(o => o.entity.entity.tags.map(t => ({ value: t }))) @@ -126,7 +129,8 @@ export class AppServiceBindingCardComponent extends CardCell cfEntityCatalog.service.store.getEntityService(o.entity.entity.service_guid, this.appService.cfGuid, {}) .waitForEntity$), - filter(service => !!service) + filter(service => !!service), + map(e => e.entity) ); this.listData = [{ label: 'Service Plan', @@ -139,39 +143,19 @@ export class AppServiceBindingCardComponent extends CardCell { - if (this.isUserProvidedServiceInstance) { - return null; - } - const serviceInstance: IServiceInstance = si.entity.entity as IServiceInstance; - return this.service$.pipe( - switchMap(service => { - return getServiceBrokerName( - service.entity.entity.service_broker_guid, - serviceInstance.cfGuid, - ); - }) - ); - }) - ) - }, - ]; - this.envVarServicesSection$ = this.service$.pipe(map(s => s.entity.entity.label)); + }]; + this.envVarServicesSection$ = this.service$.pipe(map(s => s.entity.label)); this.serviceDescription$ = this.service$.pipe( - map(service => service.entity.entity.description) + map(service => service.entity.description) ); this.serviceUrl$ = this.service$.pipe( - map(service => getServiceSummaryUrl(service.entity.entity.cfGuid, service.entity.metadata.guid)) + map(service => getServiceSummaryUrl(service.entity.cfGuid, service.metadata.guid)) ); this.serviceName$ = this.service$.pipe( - map(service => getServiceName(service.entity)) + map(service => getServiceName(service)) ); } diff --git a/src/frontend/packages/cloud-foundry/src/shared/components/list/list-types/cf-services/cf-service-card/cf-service-card.component.html b/src/frontend/packages/cloud-foundry/src/shared/components/list/list-types/cf-services/cf-service-card/cf-service-card.component.html index 0268284b7c..838f06bdb0 100644 --- a/src/frontend/packages/cloud-foundry/src/shared/components/list/list-types/cf-services/cf-service-card/cf-service-card.component.html +++ b/src/frontend/packages/cloud-foundry/src/shared/components/list/list-types/cf-services/cf-service-card/cf-service-card.component.html @@ -13,13 +13,19 @@ - Service Broker + Broker - {{ serviceBrokerName$ | async }} + - Service Plans + Scope + + + + + + Plans {{ serviceEntity.entity.service_plans.length }} diff --git a/src/frontend/packages/cloud-foundry/src/shared/components/list/list-types/cf-services/cf-service-card/cf-service-card.component.ts b/src/frontend/packages/cloud-foundry/src/shared/components/list/list-types/cf-services/cf-service-card/cf-service-card.component.ts index f3696b8c7a..cf73ba00b7 100644 --- a/src/frontend/packages/cloud-foundry/src/shared/components/list/list-types/cf-services/cf-service-card/cf-service-card.component.ts +++ b/src/frontend/packages/cloud-foundry/src/shared/components/list/list-types/cf-services/cf-service-card/cf-service-card.component.ts @@ -1,6 +1,5 @@ import { Component, Input } from '@angular/core'; import { Store } from '@ngrx/store'; -import { Observable } from 'rxjs'; import { CFAppState } from '../../../../../../../../cloud-foundry/src/cf-app-state'; import { AppChip } from '../../../../../../../../core/src/shared/components/chips/chips.component'; @@ -9,8 +8,12 @@ import { RouterNav } from '../../../../../../../../store/src/actions/router.acti import { EntityServiceFactory } from '../../../../../../../../store/src/entity-service-factory.service'; import { APIResource } from '../../../../../../../../store/src/types/api.types'; import { IService, IServiceExtra } from '../../../../../../cf-api-svc.types'; -import { getServiceBrokerName, getServiceName } from '../../../../../../features/service-catalog/services-helper'; +import { getServiceName } from '../../../../../../features/service-catalog/services-helper'; import { CfOrgSpaceLabelService } from '../../../../../services/cf-org-space-label.service'; +import { + TableCellServiceBrokerComponentConfig, + TableCellServiceBrokerComponentMode, +} from '../table-cell-service-broker/table-cell-service-broker.component'; export interface ServiceTag { value: string; @@ -27,7 +30,12 @@ export class CfServiceCardComponent extends CardCell> { cfOrgSpace: CfOrgSpaceLabelService; extraInfo: IServiceExtra; tags: AppChip[] = []; - serviceBrokerName$: Observable; + brokerNameConfig: TableCellServiceBrokerComponentConfig = { + mode: TableCellServiceBrokerComponentMode.NAME + } + brokerScopeConfig: TableCellServiceBrokerComponentConfig = { + mode: TableCellServiceBrokerComponentMode.SCOPE + } @Input() disableCardClick = false; @@ -45,13 +53,6 @@ export class CfServiceCardComponent extends CardCell> { if (!this.cfOrgSpace) { this.cfOrgSpace = new CfOrgSpaceLabelService(this.store, this.serviceEntity.entity.cfGuid); } - - if (!this.serviceBrokerName$) { - this.serviceBrokerName$ = getServiceBrokerName( - this.serviceEntity.entity.service_broker_guid, - this.serviceEntity.entity.cfGuid, - ); - } } } diff --git a/src/frontend/packages/cloud-foundry/src/shared/components/list/list-types/cf-services/cf-service-instances-list-config.base.ts b/src/frontend/packages/cloud-foundry/src/shared/components/list/list-types/cf-services/cf-service-instances-list-config.base.ts index 2ed4424106..4dcfd049b1 100644 --- a/src/frontend/packages/cloud-foundry/src/shared/components/list/list-types/cf-services/cf-service-instances-list-config.base.ts +++ b/src/frontend/packages/cloud-foundry/src/shared/components/list/list-types/cf-services/cf-service-instances-list-config.base.ts @@ -78,7 +78,7 @@ export class CfServiceInstancesListConfigBase implements IListConfig 'Service', cellComponent: TableCellServiceComponent, - cellFlex: '2' + cellFlex: '3' }, { columnId: 'lastOp', @@ -119,7 +119,7 @@ export class CfServiceInstancesListConfigBase implements IListConfig { }, { columnId: 'broker', headerCell: () => 'Broker', - cellDefinition: { - valuePath: 'entity.label', + cellComponent: TableCellServiceBrokerComponent, + cellConfig: { + mode: TableCellServiceBrokerComponentMode.NAME }, - cellFlex: '1' + cellFlex: '2' + }, { + columnId: 'brokerScope', + headerCell: () => 'Scope', + cellComponent: TableCellServiceBrokerComponent, + cellConfig: { + mode: TableCellServiceBrokerComponentMode.SCOPE + }, + cellFlex: '2' }, { columnId: 'plans', headerCell: () => 'Plans', diff --git a/src/frontend/packages/cloud-foundry/src/shared/components/list/list-types/cf-services/table-cell-service-broker/table-cell-service-broker.component.html b/src/frontend/packages/cloud-foundry/src/shared/components/list/list-types/cf-services/table-cell-service-broker/table-cell-service-broker.component.html new file mode 100644 index 0000000000..1465604a38 --- /dev/null +++ b/src/frontend/packages/cloud-foundry/src/shared/components/list/list-types/cf-services/table-cell-service-broker/table-cell-service-broker.component.html @@ -0,0 +1,16 @@ +
+ + {{(broker$ | async).entity.name}} + +
+ + Space + {{ spaceLink.name }} + + + All Spaces + +
+
+ +- \ No newline at end of file diff --git a/src/frontend/packages/cloud-foundry/src/shared/components/list/list-types/cf-services/table-cell-service-broker/table-cell-service-broker.component.scss b/src/frontend/packages/cloud-foundry/src/shared/components/list/list-types/cf-services/table-cell-service-broker/table-cell-service-broker.component.scss new file mode 100644 index 0000000000..e69de29bb2 diff --git a/src/frontend/packages/cloud-foundry/src/shared/components/list/list-types/cf-services/table-cell-service-broker/table-cell-service-broker.component.spec.ts b/src/frontend/packages/cloud-foundry/src/shared/components/list/list-types/cf-services/table-cell-service-broker/table-cell-service-broker.component.spec.ts new file mode 100644 index 0000000000..d7569ed286 --- /dev/null +++ b/src/frontend/packages/cloud-foundry/src/shared/components/list/list-types/cf-services/table-cell-service-broker/table-cell-service-broker.component.spec.ts @@ -0,0 +1,25 @@ +import { async, ComponentFixture, TestBed } from '@angular/core/testing'; + +import { TableCellServiceBrokerComponent } from './table-cell-service-broker.component'; + +describe('TableCellServiceBrokerComponent', () => { + let component: TableCellServiceBrokerComponent; + let fixture: ComponentFixture; + + beforeEach(async(() => { + TestBed.configureTestingModule({ + declarations: [TableCellServiceBrokerComponent] + }) + .compileComponents(); + })); + + beforeEach(() => { + fixture = TestBed.createComponent(TableCellServiceBrokerComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/src/frontend/packages/cloud-foundry/src/shared/components/list/list-types/cf-services/table-cell-service-broker/table-cell-service-broker.component.ts b/src/frontend/packages/cloud-foundry/src/shared/components/list/list-types/cf-services/table-cell-service-broker/table-cell-service-broker.component.ts new file mode 100644 index 0000000000..eea29808c6 --- /dev/null +++ b/src/frontend/packages/cloud-foundry/src/shared/components/list/list-types/cf-services/table-cell-service-broker/table-cell-service-broker.component.ts @@ -0,0 +1,73 @@ +import { Component, Input } from '@angular/core'; +import { Observable } from 'rxjs'; +import { filter, map, switchMap } from 'rxjs/operators'; + +import { TableCellCustom } from '../../../../../../../../core/src/shared/components/list/list.types'; +import { APIResource } from '../../../../../../../../store/src/types/api.types'; +import { IServiceBroker } from '../../../../../../cf-api-svc.types'; +import { cfEntityCatalog } from '../../../../../../cf-entity-catalog'; +import { IService } from '../../../../../../public_api'; + +export enum TableCellServiceBrokerComponentMode { + NAME = 'NAME', + SCOPE = 'SCOPE' +} + +export interface TableCellServiceBrokerComponentConfig { + mode: TableCellServiceBrokerComponentMode; + altScope?: boolean; +} + +@Component({ + selector: 'app-table-cell-service-broker', + templateUrl: './table-cell-service-broker.component.html', + styleUrls: ['./table-cell-service-broker.component.scss'] +}) +export class TableCellServiceBrokerComponent extends TableCellCustom> { + + @Input() + config: TableCellServiceBrokerComponentConfig; + + pRow: APIResource; + @Input() + set row(row: APIResource) { + this.pRow = row; + if (row && !this.spaceLink$) { + this.broker$ = cfEntityCatalog.serviceBroker.store.getEntityService(this.row.entity.service_broker_guid, this.row.entity.cfGuid, {}).waitForEntity$ + .pipe( + map(e => e.entity) + ) + this.spaceLink$ = this.broker$.pipe( + filter(broker => !!broker.entity.space_guid), + switchMap(broker => cfEntityCatalog.space.store.getWithOrganization.getEntityService(broker.entity.space_guid, broker.entity.cfGuid).waitForEntity$), + map(e => e.entity), + map(space => ({ + name: space.entity.name, + link: ['/cloud-foundry', + space.entity.cfGuid, + 'organizations', + space.entity.organization_guid, + 'spaces', + space.metadata.guid, + 'summary' + ] + }) + ) + ) + } + } + get row(): APIResource { + return this.pRow; + } + + public spaceLink$: Observable<{ + name: string, + link: string[] + }>; + public broker$: Observable> + + constructor() { + super() + } + +} diff --git a/src/frontend/packages/cloud-foundry/src/shared/components/list/list-types/cf-spaces-service-instances/table-cell-service/table-cell-service.component.html b/src/frontend/packages/cloud-foundry/src/shared/components/list/list-types/cf-spaces-service-instances/table-cell-service/table-cell-service.component.html index 292f48f586..fd2aa9ce5b 100644 --- a/src/frontend/packages/cloud-foundry/src/shared/components/list/list-types/cf-spaces-service-instances/table-cell-service/table-cell-service.component.html +++ b/src/frontend/packages/cloud-foundry/src/shared/components/list/list-types/cf-spaces-service-instances/table-cell-service/table-cell-service.component.html @@ -4,5 +4,12 @@
Plan: {{ row.entity.service_plan?.entity.name }}
-
Broker: {{ serviceBrokerName$ | async }}
+
+ Broker: + +
+
+ Scope: + +
\ No newline at end of file diff --git a/src/frontend/packages/cloud-foundry/src/shared/components/list/list-types/cf-spaces-service-instances/table-cell-service/table-cell-service.component.scss b/src/frontend/packages/cloud-foundry/src/shared/components/list/list-types/cf-spaces-service-instances/table-cell-service/table-cell-service.component.scss index e3f51aafb5..d28afe7bc1 100644 --- a/src/frontend/packages/cloud-foundry/src/shared/components/list/list-types/cf-spaces-service-instances/table-cell-service/table-cell-service.component.scss +++ b/src/frontend/packages/cloud-foundry/src/shared/components/list/list-types/cf-spaces-service-instances/table-cell-service/table-cell-service.component.scss @@ -1,3 +1,10 @@ div > div { padding-bottom: 5px; } + +.broker { + display: flex; + app-table-cell-service-broker { + padding-left: 5px; + } +} diff --git a/src/frontend/packages/cloud-foundry/src/shared/components/list/list-types/cf-spaces-service-instances/table-cell-service/table-cell-service.component.ts b/src/frontend/packages/cloud-foundry/src/shared/components/list/list-types/cf-spaces-service-instances/table-cell-service/table-cell-service.component.ts index 80434fe3b8..b9cbab0fec 100644 --- a/src/frontend/packages/cloud-foundry/src/shared/components/list/list-types/cf-spaces-service-instances/table-cell-service/table-cell-service.component.ts +++ b/src/frontend/packages/cloud-foundry/src/shared/components/list/list-types/cf-spaces-service-instances/table-cell-service/table-cell-service.component.ts @@ -1,6 +1,6 @@ import { Component, Input, OnInit } from '@angular/core'; import { Observable, of } from 'rxjs'; -import { filter, first, map, switchMap } from 'rxjs/operators'; +import { filter, map } from 'rxjs/operators'; import { cfEntityCatalog } from '../../../../../../../../cloud-foundry/src/cf-entity-catalog'; import { userProvidedServiceInstanceEntityType } from '../../../../../../../../cloud-foundry/src/cf-entity-types'; @@ -9,7 +9,11 @@ import { getServiceName } from '../../../../../../../../cloud-foundry/src/featur import { TableCellCustom } from '../../../../../../../../core/src/shared/components/list/list.types'; import { entityCatalog } from '../../../../../../../../store/src/entity-catalog/entity-catalog'; import { APIResource } from '../../../../../../../../store/src/types/api.types'; -import { IServiceInstance } from '../../../../../../cf-api-svc.types'; +import { IService, IServiceInstance } from '../../../../../../cf-api-svc.types'; +import { + TableCellServiceBrokerComponentConfig, + TableCellServiceBrokerComponentMode, +} from '../../cf-services/table-cell-service-broker/table-cell-service-broker.component'; @Component({ selector: 'app-table-cell-service', @@ -20,13 +24,21 @@ export class TableCellServiceComponent extends TableCellCustom; serviceUrl$: Observable; - serviceBrokerName$: Observable; + service$: Observable>; // tslint:disable-next-line:ban-types isUserProvidedServiceInstance: Boolean; @Input() row: APIResource; @Input() entityKey: string; + brokerNameConfig: TableCellServiceBrokerComponentConfig = { + mode: TableCellServiceBrokerComponentMode.NAME + } + brokerScopeConfig: TableCellServiceBrokerComponentConfig = { + mode: TableCellServiceBrokerComponentMode.SCOPE, + altScope: true + } + ngOnInit() { this.isUserProvidedServiceInstance = @@ -46,18 +58,9 @@ export class TableCellServiceComponent extends TableCellCustom `/marketplace/${service.entity.entity.cfGuid}/${service.entity.metadata.guid}/summary`) ); - this.serviceBrokerName$ = service$.pipe( - first(), - switchMap(service => { - const brokerGuid = service.entity.entity.service_broker_guid; - return cfEntityCatalog.serviceBroker.store.getEntityService(brokerGuid, service.entity.entity.cfGuid, {}) - .waitForEntity$.pipe( - map(a => a.entity), - filter(res => !!res), - map(a => a.entity.name), - first() - ); - }) + this.service$ = service$.pipe( + filter(res => !!res), + map(a => a.entity), ); } } diff --git a/src/frontend/packages/cloud-foundry/src/shared/components/list/list-types/services-wall/service-instance-card/service-instance-card.component.html b/src/frontend/packages/cloud-foundry/src/shared/components/list/list-types/services-wall/service-instance-card/service-instance-card.component.html index c9fa1a25fe..65a4475306 100644 --- a/src/frontend/packages/cloud-foundry/src/shared/components/list/list-types/services-wall/service-instance-card/service-instance-card.component.html +++ b/src/frontend/packages/cloud-foundry/src/shared/components/list/list-types/services-wall/service-instance-card/service-instance-card.component.html @@ -22,7 +22,17 @@
Service Broker - {{ serviceBrokerName$ | async }} + + + + + + + Service Scope + + + + Applications Attached diff --git a/src/frontend/packages/cloud-foundry/src/shared/components/list/list-types/services-wall/service-instance-card/service-instance-card.component.ts b/src/frontend/packages/cloud-foundry/src/shared/components/list/list-types/services-wall/service-instance-card/service-instance-card.component.ts index ffb0dd8ae5..8f8f8a5592 100644 --- a/src/frontend/packages/cloud-foundry/src/shared/components/list/list-types/services-wall/service-instance-card/service-instance-card.component.ts +++ b/src/frontend/packages/cloud-foundry/src/shared/components/list/list-types/services-wall/service-instance-card/service-instance-card.component.ts @@ -1,7 +1,7 @@ import { Component, Input } from '@angular/core'; import { Store } from '@ngrx/store'; import { BehaviorSubject, Observable, of as observableOf } from 'rxjs'; -import { filter, map, switchMap } from 'rxjs/operators'; +import { filter, map } from 'rxjs/operators'; import { CFAppState } from '../../../../../../../../cloud-foundry/src/cf-app-state'; import { serviceInstancesEntityType } from '../../../../../../../../cloud-foundry/src/cf-entity-types'; @@ -17,7 +17,6 @@ import { IService, IServiceInstance } from '../../../../../../cf-api-svc.types'; import { cfEntityCatalog } from '../../../../../../cf-entity-catalog'; import { cfEntityFactory } from '../../../../../../cf-entity-factory'; import { - getServiceBrokerName, getServiceName, getServicePlanName, getServiceSummaryUrl, @@ -26,6 +25,10 @@ import { CfCurrentUserPermissions } from '../../../../../../user-permissions/cf- import { ServiceActionHelperService } from '../../../../../data-services/service-action-helper.service'; import { CfOrgSpaceLabelService } from '../../../../../services/cf-org-space-label.service'; import { CSI_CANCEL_URL } from '../../../../add-service-instance/csi-mode.service'; +import { + TableCellServiceBrokerComponentConfig, + TableCellServiceBrokerComponentMode, +} from '../../cf-services/table-cell-service-broker/table-cell-service-broker.component'; @Component({ selector: 'app-service-instance-card', @@ -97,15 +100,6 @@ export class ServiceInstanceCardComponent extends CardCell getServiceBrokerName(service.entity.service_broker_guid, service.entity.cfGuid)) - ) - } - if (!this.serviceName$) { // See note for this.serviceBrokerName$ this.serviceName$ = this.service$.pipe( @@ -142,12 +136,19 @@ export class ServiceInstanceCardComponent extends CardCell; serviceName$: Observable; servicePlanName: string; serviceUrl: string; - private service$: Observable>; + service$: Observable>; + + brokerNameConfig: TableCellServiceBrokerComponentConfig = { + mode: TableCellServiceBrokerComponentMode.NAME + } + brokerScopeConfig: TableCellServiceBrokerComponentConfig = { + mode: TableCellServiceBrokerComponentMode.SCOPE, + altScope: true + } private detach = () => { this.serviceActionHelperService.detachServiceBinding( diff --git a/src/test-e2e/marketplace/create-service-instances-bind-app-e2e.spec.ts b/src/test-e2e/marketplace/create-service-instances-bind-app-e2e.spec.ts index 91eb24e945..0fe47fada5 100644 --- a/src/test-e2e/marketplace/create-service-instances-bind-app-e2e.spec.ts +++ b/src/test-e2e/marketplace/create-service-instances-bind-app-e2e.spec.ts @@ -50,7 +50,7 @@ describe('Create Service Instance with binding', () => { .then(metaCardRows => { expect(metaCardRows[1].value).toBe(servicesSecrets.publicService.name); expect(metaCardRows[2].value).toBe('shared'); - expect(metaCardRows[4].value).toBe('1'); + expect(metaCardRows[5].value).toBe('1'); }); });