Skip to content

Commit 697cbee

Browse files
authored
Merge pull request #642 from spadgett/check-tsb-enabled
Check service classes to determine if template service broker is enabled
2 parents e0f6869 + 2ea8457 commit 697cbee

File tree

2 files changed

+52
-34
lines changed

2 files changed

+52
-34
lines changed

dist/origin-web-catalogs.js

Lines changed: 27 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -695,8 +695,24 @@ webpackJsonp([ 0, 1 ], [ function(e, t) {
695695
this.logger = a;
696696
}
697697
return e.prototype.getCatalogItems = function(e) {
698-
var t = this, r = this.$q.defer(), n = {}, a = 0, s = 0, o = [], c = this.apiService.getPreferredVersion("clusterserviceclasses");
699-
this.apiService.apiInfo(c) && (++a, this.dataService.list(c, {}).then(function(e) {
698+
var t = this, r = this.$q.defer(), n = {}, a = 0, s = 0, o = [], c = function() {
699+
if (e) {
700+
++a;
701+
var i = t.apiService.getPreferredVersion("templates");
702+
t.dataService.list(i, {
703+
namespace: "openshift"
704+
}, null, {
705+
partialObjectMetadataList: !0
706+
}).then(function(e) {
707+
n.templates = e.by("metadata.name");
708+
}, function() {
709+
o.push("templates");
710+
}).finally(function() {
711+
t.returnCatalogItems(r, n, ++s, a, o);
712+
});
713+
}
714+
}, l = this.apiService.getPreferredVersion("clusterserviceclasses");
715+
this.apiService.apiInfo(l) ? (++a, this.dataService.list(l, {}).then(function(e) {
700716
n.serviceClasses = i.reject(e.by("metadata.name"), {
701717
status: {
702718
removedFromBrokerCatalog: !0
@@ -705,33 +721,22 @@ webpackJsonp([ 0, 1 ], [ function(e, t) {
705721
}, function() {
706722
o.push("service classes");
707723
}).finally(function() {
708-
t.returnCatalogItems(r, n, ++s, a, o);
709-
})), ++a;
710-
var l = this.apiService.getPreferredVersion("imagestreams");
711-
if (this.dataService.list(l, {
724+
i.some(n.serviceClasses, {
725+
spec: {
726+
clusterServiceBrokerName: "template-service-broker"
727+
}
728+
}) || c(), t.returnCatalogItems(r, n, ++s, a, o);
729+
})) : c(), ++a;
730+
var d = this.apiService.getPreferredVersion("imagestreams");
731+
return this.dataService.list(d, {
712732
namespace: "openshift"
713733
}).then(function(e) {
714734
n.imageStreams = e.by("metadata.name");
715735
}, function() {
716736
o.push("builder images");
717737
}).finally(function() {
718738
t.returnCatalogItems(r, n, ++s, a, o);
719-
}), e) {
720-
++a;
721-
var d = this.apiService.getPreferredVersion("templates");
722-
this.dataService.list(d, {
723-
namespace: "openshift"
724-
}, null, {
725-
partialObjectMetadataList: !0
726-
}).then(function(e) {
727-
n.templates = e.by("metadata.name");
728-
}, function() {
729-
o.push("templates");
730-
}).finally(function() {
731-
t.returnCatalogItems(r, n, ++s, a, o);
732-
});
733-
}
734-
return r.promise;
739+
}), r.promise;
735740
}, e.prototype.getServicePlansForServiceClass = function(e) {
736741
var t = this.apiService.getPreferredVersion("clusterserviceplans"), r = i.isString(e) ? e : i.get(e, "metadata.name");
737742
if (r && this.apiService.apiInfo(t)) {

src/services/catalog.service.ts

Lines changed: 25 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,22 @@ export class CatalogService {
2727
let numPromisesExecuted: number = 0;
2828
let errorMsg: any = [];
2929

30+
let requestTemplates = () => {
31+
if (!includeTemplates) {
32+
return;
33+
}
34+
35+
++totalNumPromises;
36+
let templateVersion = this.apiService.getPreferredVersion('templates');
37+
this.dataService.list(templateVersion, {namespace: "openshift"}, null, {partialObjectMetadataList: true}).then((resources: any) => {
38+
catalogItems.templates = resources.by("metadata.name");
39+
}, () => {
40+
errorMsg.push('templates');
41+
}).finally(() => {
42+
this.returnCatalogItems(deferred, catalogItems, ++numPromisesExecuted, totalNumPromises, errorMsg);
43+
});
44+
};
45+
3046
// Only request service classes if the kind is available.
3147
let serviceClassesVersion = this.apiService.getPreferredVersion('clusterserviceclasses');
3248
if (this.apiService.apiInfo(serviceClassesVersion)) {
@@ -40,8 +56,17 @@ export class CatalogService {
4056
}, () => {
4157
errorMsg.push('service classes');
4258
}).finally(() => {
59+
// Request templates only if the template service broker is not enabled to avoid showing duplicates in the catalog.
60+
// Still support the `includeTemplates` parameter, however, for anyone including the catalog outside of the console.
61+
var tsbEnabled = _.some(catalogItems.serviceClasses, { spec: { clusterServiceBrokerName: 'template-service-broker' } });
62+
if (!tsbEnabled) {
63+
requestTemplates();
64+
}
4365
this.returnCatalogItems(deferred, catalogItems, ++numPromisesExecuted, totalNumPromises, errorMsg);
4466
});
67+
} else {
68+
// Request templates if service catalog is not enabled.
69+
requestTemplates();
4570
}
4671

4772
++totalNumPromises;
@@ -54,18 +79,6 @@ export class CatalogService {
5479
this.returnCatalogItems(deferred, catalogItems, ++numPromisesExecuted, totalNumPromises, errorMsg);
5580
});
5681

57-
if (includeTemplates) {
58-
++totalNumPromises;
59-
let templateVersion = this.apiService.getPreferredVersion('templates');
60-
this.dataService.list(templateVersion, {namespace: "openshift"}, null, {partialObjectMetadataList: true}).then((resources: any) => {
61-
catalogItems.templates = resources.by("metadata.name");
62-
}, () => {
63-
errorMsg.push('templates');
64-
}).finally(() => {
65-
this.returnCatalogItems(deferred, catalogItems, ++numPromisesExecuted, totalNumPromises, errorMsg);
66-
});
67-
}
68-
6982
return deferred.promise;
7083
}
7184

0 commit comments

Comments
 (0)