Skip to content

Commit f708b87

Browse files
committed
ft: ZENKO-713: save and patch role
Make the management process saves the overlay into metadata backend before to send it to its client.
1 parent 4f30e62 commit f708b87

File tree

1 file changed

+35
-21
lines changed

1 file changed

+35
-21
lines changed

managementAgent.js

+35-21
Original file line numberDiff line numberDiff line change
@@ -6,9 +6,11 @@ const { initManagement } = require('./lib/management');
66
const _config = require('./lib/Config').config;
77
const { managementAgentMessageType } = require('./lib/management/agentClient');
88
const { addOverlayMessageListener } = require('./lib/management/push');
9+
const { saveConfigurationVersion } = require('./lib/management/configuration');
910

1011

1112
// TODO: auth?
13+
// TODO: werelogs with a specific name.
1214

1315
const CHECK_BROKEN_CONNECTIONS_FREQUENCY_MS = 15000;
1416

@@ -120,30 +122,42 @@ class ManagementAgentServer {
120122
logger.error('websocket server error', { error });
121123
}
122124

123-
onNewOverlay(remoteOverlay) {
124-
this.loadedOverlay = JSON.parse(remoteOverlay);
125-
this.wss.clients.forEach(client => {
126-
if (client.readyState !== client.OPEN) {
127-
logger.error('client socket not in ready state', {
128-
state: client.readyState,
129-
client: client._socket._peername,
130-
});
131-
return;
125+
_sendNewOverlayToClient(client) {
126+
if (client.readyState !== client.OPEN) {
127+
logger.error('client socket not in ready state', {
128+
state: client.readyState,
129+
client: client._socket._peername,
130+
});
131+
return;
132+
}
133+
134+
const msg = {
135+
messageType: managementAgentMessageType.NEW_OVERLAY,
136+
payload: this.loadedOverlay,
137+
};
138+
client.send(JSON.stringify(msg), error => {
139+
if (error) {
140+
logger.error(
141+
'failed to send remoteOverlay to management agent client', {
142+
error, client: client._socket._peername,
143+
});
132144
}
133-
const msg = {
134-
messageType: managementAgentMessageType.NEW_OVERLAY,
135-
payload: this.loadedOverlay,
136-
};
137-
client.send(JSON.stringify(msg), error => {
138-
if (error) {
139-
logger.error('failed to send remoteOverlay to management' +
140-
' agent client', {
141-
error,
142-
client: client._socket._peername,
143-
});
145+
});
146+
}
147+
148+
onNewOverlay(remoteOverlay) {
149+
const remoteOverlayObj = JSON.parse(remoteOverlay);
150+
saveConfigurationVersion(
151+
this.loadedOverlay, remoteOverlayObj, logger, err => {
152+
if (err) {
153+
logger.error('failed to save remote overlay', { err });
154+
return;
144155
}
156+
this.loadedOverlay = remoteOverlayObj;
157+
this.wss.clients.forEach(
158+
this._sendNewOverlayToClient.bind(this)
159+
);
145160
});
146-
});
147161
}
148162

149163
checkBrokenConnections() {

0 commit comments

Comments
 (0)