Compare commits

...
Author SHA1 Message Date
marcos.rodrigues 8a92da470c Merge pull request #506 from dadosfera/bugfix/catalog-module-main
FIX: skip nimbus update when customer haven't catalog module
2026-08-07 16:27:19 -03:00
marcos.rodrigues b89909ad66 FIX: skip nimbus update when customer haven't catalog module 2026-08-07 14:48:46 -03:00
5 changed files with 38 additions and 84 deletions
-44
View File
@@ -4570,50 +4570,6 @@
] ]
} }
}, },
"/platform/pipelines/{pipelineId}/pipeline_run/{runId}/jobs": {
"get": {
"operationId": "PlatformApiController_getPipelineRunJobs",
"summary": "Get pipeline run jobs",
"parameters": [
{
"name": "pipelineId",
"required": true,
"in": "path",
"schema": {
"type": "string"
}
},
{
"name": "runId",
"required": true,
"in": "path",
"schema": {
"type": "string"
}
}
],
"responses": {
"200": {
"description": "",
"content": {
"application/json": {
"schema": {
"type": "object"
}
}
}
}
},
"tags": [
"Platform API"
],
"security": [
{
"access-token": []
}
]
}
},
"/platform/jobs/{jobId}/input": { "/platform/jobs/{jobId}/input": {
"put": { "put": {
"operationId": "PlatformApiController_updateJobInput", "operationId": "PlatformApiController_updateJobInput",
+5 -4
View File
@@ -23,6 +23,7 @@ import {
} from '@dadosfera/protospack-v2/dist/lib/Input/interfaces/messages'; } from '@dadosfera/protospack-v2/dist/lib/Input/interfaces/messages';
import { Info } from '@dadosfera/protospack-v2/dist/lib/Input/interfaces/entities'; import { Info } from '@dadosfera/protospack-v2/dist/lib/Input/interfaces/entities';
import { CreateInputReq } from './dtos/input.model'; import { CreateInputReq } from './dtos/input.model';
import { Metadata } from '@grpc/grpc-js';
@Injectable() @Injectable()
@@ -73,10 +74,10 @@ export class InputsService {
objectCamelToSnake(createInputResponse); objectCamelToSnake(createInputResponse);
return createInputResponse; return createInputResponse;
}, },
update: async (updateInputDTO: UpdateInputRequest): Promise<InputUpdateResponse> => { update: async (updateInputDTO: UpdateInputRequest, metadata: Metadata): Promise<InputUpdateResponse> => {
this.logger.info('InputClientService - Update' + JSON.stringify(updateInputDTO)); this.logger.info('InputClientService - Update' + JSON.stringify(updateInputDTO));
const updateInputResponse = await lastValueFrom( const updateInputResponse = await lastValueFrom(
this.inputWriteService.InputUpdate(updateInputDTO), this.inputWriteService.InputUpdate(updateInputDTO, metadata),
); );
return updateInputResponse; return updateInputResponse;
@@ -206,7 +207,7 @@ export class InputsService {
return findOneInputResponse; return findOneInputResponse;
} }
async update(id: string, data, info: Info) { async update(id: string, data, info: Info, metadata?: Metadata) {
// this.validateCron({ ...data, info }); // this.validateCron({ ...data, info });
try { try {
const { const {
@@ -217,7 +218,7 @@ export class InputsService {
id, id,
...data, ...data,
info, info,
}); }, metadata);
const updateInputResponse = this.adjustInputPayload( const updateInputResponse = this.adjustInputPayload(
input, input,
@@ -317,7 +317,6 @@ export class PipelinesController {
) { ) {
this.logger.info('PipelinesController - update', { user }); this.logger.info('PipelinesController - update', { user });
const { customer_id, customer_name, user_id, username } = user;
const info: Info = { const info: Info = {
user_id: user.user_id, user_id: user.user_id,
customer: user.customer_name, customer: user.customer_name,
@@ -325,13 +324,7 @@ export class PipelinesController {
pipeline_id: pipelineId pipeline_id: pipelineId
}; };
const metadata = PackTheMetadata({ const metadata = PackTheMetadata(user);
customer_id,
customer_name,
user_id,
username,
language,
});
const response = await this.pipelinesClientService.updatePipelineInput( const response = await this.pipelinesClientService.updatePipelineInput(
pipelineId, pipelineId,
+30 -27
View File
@@ -383,7 +383,8 @@ export class PipelinesService implements OnModuleInit {
const updateInputResponse = await this.inputsService.update( const updateInputResponse = await this.inputsService.update(
inputId, inputId,
updateInputDTO, updateInputDTO,
info info,
metadata
); );
const inputRollback = () => { const inputRollback = () => {
@@ -404,34 +405,36 @@ export class PipelinesService implements OnModuleInit {
const nimbusUpdates = updateInputResponse?.tablesUpdate || []; const nimbusUpdates = updateInputResponse?.tablesUpdate || [];
nimbusUpdates.forEach(update => { if (user.customer_modules.includes('catalog')) {
const nimbusRollback = () => { nimbusUpdates.forEach(update => {
return this.nimbusService.renameTable( const nimbusRollback = () => {
info.customer, return this.nimbusService.renameTable(
update.database, info.customer,
{ update.database,
table_name: update.table_name, {
table_schema: update.table_schema table_name: update.table_name,
}, table_schema: update.table_schema
{ },
table_name: update.old_table_name, {
table_schema: update.old_table_schema table_name: update.old_table_name,
} table_schema: update.old_table_schema
); }
} );
rollback.push(nimbusRollback); }
}); rollback.push(nimbusRollback);
});
try { try {
await this.updateNimbus(info.customer, nimbusUpdates); await this.updateNimbus(info.customer, nimbusUpdates);
} catch (error) { } catch (error) {
this.logger.error(error); this.logger.error(error);
if (error instanceof AxiosError) { if (error instanceof AxiosError) {
this.logger.error(JSON.stringify(error.response.data)); this.logger.error(JSON.stringify(error.response.data));
} }
await this.executeRenameRollback(rollback); await this.executeRenameRollback(rollback);
throw new Error("Error Nimbus updating tables"); throw new Error("Error Nimbus updating tables");
}
} }
try { try {
+1
View File
@@ -9,6 +9,7 @@ interface IMetadata {
details?: string; details?: string;
sensitive?: string; sensitive?: string;
roles?: string[]; roles?: string[];
customer_modules?: string[];
is_data_manager?: boolean; is_data_manager?: boolean;
access_token?: string; access_token?: string;
host?: string; host?: string;