Skip to content

Commit 361d2a8

Browse files
authored
INTLY-6574 AMQ Online 1.4 compatibility (#571)
1 parent 3abdfcd commit 361d2a8

File tree

1 file changed

+29
-10
lines changed

1 file changed

+29
-10
lines changed

src/services/amqOnlineServices.js

Lines changed: 29 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -23,10 +23,10 @@ const watchAMQOnline = (dispatch, username, namespace) =>
2323
poll(addressSpaceDef(namespace), 5000, 2000).then(pollListener => {
2424
pollListener.onEvent(event => {
2525
if (!event || !event.metadata || !event.metadata.name === cleanUsername(username)) {
26-
dispatch(getPayloadFromAddressSpace(event));
26+
dispatch(getPayloadFromAddressSpace(event, username, namespace));
2727
return;
2828
}
29-
const payload = getPayloadFromAddressSpace(event);
29+
const payload = getPayloadFromAddressSpace(event, username, namespace);
3030
payload.additionalAttributes = Object.assign({}, payload.additionalAttributes, {
3131
'enmasse-credentials-username': cleanUsername(username),
3232
'enmasse-credentials-password': window.atob(genEvalPassword(username))
@@ -81,7 +81,7 @@ const provisionAMQOnlineV4 = (dispatch, username, namespace, opts = getDefaultPr
8181
.then(() =>
8282
poll(addressSpaceDef(namespace)).then(pollListener => {
8383
pollListener.onEvent(
84-
handleAddressSpaceUpdateEvent.bind(null, username, dispatch, amqInfo => {
84+
handleAddressSpaceUpdateEvent.bind(null, username, namespace, dispatch, amqInfo => {
8585
pollListener.clear();
8686
dispatch({
8787
type: FULFILLED_ACTION(middlewareTypes.PROVISION_SERVICE),
@@ -139,24 +139,32 @@ const provisionAddressSpace = (username, namespace) => {
139139
return findOrCreateOpenshiftResource(addressSpaceDef(namespace), asRes);
140140
};
141141

142-
const handleAddressSpaceUpdateEvent = (username, dispatch, resolve, event) => {
142+
const handleAddressSpaceUpdateEvent = (username, namespace, dispatch, resolve, event) => {
143143
if (!event || !event.status || !event.status.isReady) {
144-
dispatch(getPayloadFromAddressSpace(event));
144+
dispatch(getPayloadFromAddressSpace(event, username, namespace));
145145
return;
146146
}
147147
const messagingEndpointDef = event.status.endpointStatuses.find(e => e.name === 'messaging');
148148
if (!messagingEndpointDef) {
149149
return;
150150
}
151-
const payload = getPayloadFromAddressSpace(event);
151+
const payload = getPayloadFromAddressSpace(event, username, namespace);
152152
payload.additionalAttributes = Object.assign({}, payload.additionalAttributes, {
153153
'enmasse-credentials-username': cleanUsername(username),
154154
'enmasse-credentials-password': window.atob(genEvalPassword(username))
155155
});
156156
resolve(payload);
157157
};
158158

159-
const getPayloadFromAddressSpace = as => {
159+
const buildAMQOnlineConcoleUrl = (username, namespace, type) => {
160+
if (!window.OPENSHIFT_CONFIG.provisionedServices.amqonline) {
161+
return null;
162+
}
163+
const baseUrl = `${window.OPENSHIFT_CONFIG.provisionedServices.amqonline.Host}`;
164+
return `${baseUrl}/#/address-spaces/${namespace}/${username}/${type}/addresses`;
165+
};
166+
167+
const getPayloadFromAddressSpace = (as, username, namespace) => {
160168
const payload = {
161169
type: SERVICE_TYPES.PROVISIONED_SERVICE,
162170
name: DEFAULT_SERVICES.ENMASSE
@@ -171,13 +179,24 @@ const getPayloadFromAddressSpace = as => {
171179
if (!messagingEndpointDef) {
172180
return null;
173181
}
174-
const consoleEndpointDef = as.status.endpointStatuses.find(e => e.name === 'console');
182+
let consoleEndpointDef = as.status.endpointStatuses.find(e => e.name === 'console');
175183
if (!consoleEndpointDef) {
176-
return null;
184+
// If the host endpoint is not in the status, we can generate the URL from the
185+
// username and namespace
186+
const type = as.spec.type || 'standard';
187+
consoleEndpointDef = {
188+
externalHost: buildAMQOnlineConcoleUrl(username, namespace, type)
189+
};
177190
}
191+
192+
const addressSpaceUrl =
193+
consoleEndpointDef.externalHost.indexOf('https://') === 0
194+
? `${consoleEndpointDef.externalHost}`
195+
: `https://${consoleEndpointDef.externalHost}`;
196+
178197
return Object.assign({}, payload, {
179198
status: SERVICE_STATUSES.PROVISIONED,
180-
url: `https://${consoleEndpointDef.externalHost}`,
199+
url: addressSpaceUrl,
181200
additionalAttributes: {
182201
'enmasse-broker-url': messagingEndpointDef.serviceHost
183202
}

0 commit comments

Comments
 (0)