Skip to content

Commit

Permalink
feat(apisix): sync resources id
Browse files Browse the repository at this point in the history
  • Loading branch information
bzp2010 committed Nov 10, 2024
1 parent 90421b2 commit 1b50eb2
Show file tree
Hide file tree
Showing 2 changed files with 43 additions and 25 deletions.
6 changes: 6 additions & 0 deletions libs/backend-apisix/src/operator.ts
Original file line number Diff line number Diff line change
Expand Up @@ -108,10 +108,12 @@ export class Operator {
case ADCSDK.ResourceType.CONSUMER:
return fromADC.transformConsumer(event.newValue as ADCSDK.Consumer);
case ADCSDK.ResourceType.CONSUMER_GROUP:
(event.newValue as ADCSDK.ConsumerGroup).id = event.resourceId;
return fromADC.transformConsumerGroup(
event.newValue as ADCSDK.ConsumerGroup,
)[0];
case ADCSDK.ResourceType.CONSUMER_CREDENTIAL:
(event.newValue as ADCSDK.ConsumerCredential).id = event.resourceId;
return fromADC.transformConsumerCredential(
event.newValue as ADCSDK.ConsumerCredential,
);
Expand All @@ -124,15 +126,19 @@ export class Operator {
case ADCSDK.ResourceType.PLUGIN_METADATA:
return event.newValue;
case ADCSDK.ResourceType.ROUTE: {
(event.newValue as ADCSDK.Route).id = event.resourceId;
const route = fromADC.transformRoute(event.newValue as ADCSDK.Route);
if (event.parentId) route.service_id = event.parentId;
return route;
}
case ADCSDK.ResourceType.SERVICE:
(event.newValue as ADCSDK.Service).id = event.resourceId;
return fromADC.transformService(event.newValue as ADCSDK.Service)[0];
case ADCSDK.ResourceType.SSL:
(event.newValue as ADCSDK.SSL).id = event.resourceId;
return fromADC.transformSSL(event.newValue as ADCSDK.SSL);
case ADCSDK.ResourceType.STREAM_ROUTE: {
(event.newValue as ADCSDK.StreamRoute).id = event.resourceId;
const route = fromADC.transformStreamRoute(
event.newValue as ADCSDK.StreamRoute,
);
Expand Down
62 changes: 37 additions & 25 deletions libs/backend-apisix/src/transformer.ts
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,7 @@ export class ToADC {

public transformRoute(route: typing.Route): ADCSDK.Route {
return ADCSDK.utils.recursiveOmitUndefined({
id: route.id,
name: route.name ?? route.id,
description: route.desc,
labels: route.labels,
Expand All @@ -34,21 +35,18 @@ export class ToADC {
plugins: route.plugins,
plugin_config_id: route.plugin_config_id,
filter_func: route.filter_func,

metadata: { id: route.id },
} as ADCSDK.Route);
}

public transformService(service: typing.Service): ADCSDK.Service {
return ADCSDK.utils.recursiveOmitUndefined({
id: service.id,
name: service.name ?? service.id,
description: service.desc,
labels: service.labels,

upstream: service.upstream,
plugins: service.plugins,

metadata: { id: service.id },
} as ADCSDK.Service);
}

Expand Down Expand Up @@ -82,12 +80,12 @@ export class ToADC {
)
return;
return ADCSDK.utils.recursiveOmitUndefined<ADCSDK.ConsumerCredential>({
id: credential.id,
name: credential.name,
description: credential.desc,
labels: credential.labels,
type: pluginName as ADCSDK.ConsumerCredential['type'],
config,
metadata: { id: credential.id },
});
}

Expand All @@ -104,6 +102,7 @@ export class ToADC {
];

return ADCSDK.utils.recursiveOmitUndefined({
id: ssl.id,
labels: ssl.labels,

type: ssl.type,
Expand All @@ -124,8 +123,9 @@ export class ToADC {
consumerGroup: typing.ConsumerGroup,
consumers?: Array<typing.Consumer>,
): ADCSDK.ConsumerGroup {
const adcConsumerGroup: ADCSDK.ConsumerGroup =
ADCSDK.utils.recursiveOmitUndefined({
const adcConsumerGroup =
ADCSDK.utils.recursiveOmitUndefined<ADCSDK.ConsumerGroup>({
id: consumerGroup.id,
name: (consumerGroup.labels?.ADC_NAME as string) ?? consumerGroup.id,
description: consumerGroup.desc,
labels: consumerGroup.labels,
Expand Down Expand Up @@ -156,6 +156,7 @@ export class ToADC {
streamRoute: typing.StreamRoute,
): ADCSDK.StreamRoute {
return ADCSDK.utils.recursiveOmitUndefined({
id: streamRoute.id,
name: streamRoute.labels?.__ADC_NAME ?? streamRoute.id,
description: streamRoute.desc,
labels: ToADC.transformLabels(streamRoute.labels),
Expand Down Expand Up @@ -242,14 +243,24 @@ export class FromADC {
}

public transformRoute(route: ADCSDK.Route): typing.Route {
return ADCSDK.utils.recursiveOmitUndefined({
...route,
id: undefined,
return ADCSDK.utils.recursiveOmitUndefined<typing.Route>({
id: route.id,
name: route.name,
desc: route.description,
labels: FromADC.transformLabels(route.labels),
status: 1,
uris: route.uris,
hosts: route.hosts,
methods: route.methods,
remote_addrs: route.remote_addrs,
vars: route.vars,
filter_func: route.filter_func,

desc: route.description,
description: undefined,
//service_id: '',
enable_websocket: route.enable_websocket,
plugins: route.plugins,
priority: route.priority,
timeout: route.timeout,
status: 1,
});
}

Expand All @@ -266,15 +277,15 @@ export class FromADC {
?.map(this.transformStreamRoute)
.map((route) => ({ ...route, service_id: serviceId })) ?? [];
return [
ADCSDK.utils.recursiveOmitUndefined({
ADCSDK.utils.recursiveOmitUndefined<typing.Service>({
...service,
id: undefined,
labels: FromADC.transformLabels(service.labels),
routes: undefined,
stream_routes: undefined,

id: service.id,
name: service.name,
desc: service.description,
description: undefined,
labels: FromADC.transformLabels(service.labels),
upstream: service.upstream,
plugins: service.plugins,
hosts: service.hosts,
}),
routes,
streamRoutes,
Expand All @@ -286,7 +297,6 @@ export class FromADC {
username: consumer.username,
desc: consumer.description,
labels: FromADC.transformLabels(consumer.labels),

plugins: consumer.plugins,
} as typing.Consumer);
}
Expand All @@ -295,6 +305,7 @@ export class FromADC {
credential: ADCSDK.ConsumerCredential,
): typing.ConsumerCredential {
return ADCSDK.utils.recursiveOmitUndefined<typing.ConsumerCredential>({
id: credential.id,
name: credential.name,
desc: credential.description,
labels: FromADC.transformLabels(credential.labels),
Expand All @@ -305,13 +316,13 @@ export class FromADC {
}

public transformSSL(ssl: ADCSDK.SSL): typing.SSL {
return ADCSDK.utils.recursiveOmitUndefined({
...ssl,
id: undefined,
return ADCSDK.utils.recursiveOmitUndefined<typing.SSL>({
id: ssl.id,
labels: FromADC.transformLabels(ssl.labels),
status: 1,
certificates: undefined,
type: ssl.type,

snis: ssl.snis,
cert: ssl.certificates[0].certificate,
key: ssl.certificates[0].key,
...(ssl.certificates.length > 1
Expand All @@ -324,6 +335,7 @@ export class FromADC {
.map((certificate) => certificate.key),
}
: {}),
client: ssl.client,
});
}

Expand Down

0 comments on commit 1b50eb2

Please sign in to comment.