feat: push config updates to coreflow
This commit is contained in:
@@ -190,6 +190,62 @@ tap.test('should expose generated service registry targets', async () => {
|
||||
expect(refreshedService.data.registryTarget?.imageUrl).toEqual(registryTarget.imageUrl);
|
||||
});
|
||||
|
||||
tap.test('should push service config updates to connected coreflows', async (toolsArg) => {
|
||||
const cluster = await testClient.cluster.createCluster('Registry Config Push Test Cluster');
|
||||
const persistedCluster = await testCloudly.clusterManager.getConfigBy_ConfigID(cluster.id);
|
||||
const clusterUser = await testCloudly.authManager.CUser.getInstance({
|
||||
id: persistedCluster.data.userId,
|
||||
});
|
||||
const clusterToken = clusterUser.data.tokens?.[0]?.token;
|
||||
expect(clusterToken).toBeTruthy();
|
||||
const coreflowClient = new cloudlyApiClient.CloudlyApiClient({
|
||||
registerAs: 'coreflow',
|
||||
cloudlyUrl: `http://${helpers.testCloudlyConfig.publicUrl}:${helpers.testCloudlyConfig.publicPort}`,
|
||||
});
|
||||
const configUpdates: any[] = [];
|
||||
let subscription: { unsubscribe: () => void } | undefined;
|
||||
|
||||
try {
|
||||
await coreflowClient.start();
|
||||
await coreflowClient.getIdentityByToken(clusterToken!, {
|
||||
statefullIdentity: true,
|
||||
tagConnection: true,
|
||||
});
|
||||
subscription = coreflowClient.configUpdateSubject.subscribe((updateArg) => {
|
||||
configUpdates.push(updateArg);
|
||||
});
|
||||
|
||||
const image = await testClient.image.createImage({
|
||||
name: 'Registry Config Push Test Image',
|
||||
description: 'Image used by the config push test',
|
||||
});
|
||||
const service = await testClient.services.createService({
|
||||
name: 'Registry Config Push Test Service',
|
||||
description: 'Service used by the config push test',
|
||||
imageId: image.id,
|
||||
imageVersion: 'latest',
|
||||
environment: {},
|
||||
secretBundleId: '',
|
||||
serviceCategory: 'workload',
|
||||
deploymentStrategy: 'custom',
|
||||
scaleFactor: 1,
|
||||
balancingStrategy: 'round-robin',
|
||||
ports: {
|
||||
web: 3000,
|
||||
},
|
||||
domains: [],
|
||||
deploymentIds: [],
|
||||
});
|
||||
|
||||
await toolsArg.delayFor(100);
|
||||
expect(configUpdates[0]?.configData.id).toEqual(cluster.id);
|
||||
expect(configUpdates[0]?.services.find((serviceArg: any) => serviceArg.id === service.id)).toBeTruthy();
|
||||
} finally {
|
||||
subscription?.unsubscribe();
|
||||
await coreflowClient.stop();
|
||||
}
|
||||
});
|
||||
|
||||
tap.test('should expose platform desired state', async () => {
|
||||
const capabilitiesResponse = await testClient.platform.getPlatformCapabilities();
|
||||
expect(capabilitiesResponse.capabilities.find((capability) => capability.id === 'database')).toBeTruthy();
|
||||
|
||||
Reference in New Issue
Block a user