@oneuptime/common 10.7.1 → 10.8.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/Models/DatabaseModels/CloudResource.ts +846 -0
- package/Models/DatabaseModels/CloudResourceInstance.ts +276 -0
- package/Models/DatabaseModels/CloudResourceLabelRule.ts +510 -0
- package/Models/DatabaseModels/CloudResourceOwnerRule.ts +592 -0
- package/Models/DatabaseModels/CloudResourceOwnerTeam.ts +487 -0
- package/Models/DatabaseModels/CloudResourceOwnerUser.ts +486 -0
- package/Models/DatabaseModels/Host.ts +209 -0
- package/Models/DatabaseModels/Index.ts +36 -0
- package/Models/DatabaseModels/RumApplication.ts +731 -0
- package/Models/DatabaseModels/RumApplicationClient.ts +229 -0
- package/Models/DatabaseModels/RumApplicationLabelRule.ts +510 -0
- package/Models/DatabaseModels/RumApplicationOwnerRule.ts +592 -0
- package/Models/DatabaseModels/RumApplicationOwnerTeam.ts +486 -0
- package/Models/DatabaseModels/RumApplicationOwnerUser.ts +485 -0
- package/Models/DatabaseModels/ServerlessFunction.ts +881 -0
- package/Models/DatabaseModels/ServerlessFunctionInstance.ts +212 -0
- package/Models/DatabaseModels/ServerlessFunctionLabelRule.ts +510 -0
- package/Models/DatabaseModels/ServerlessFunctionOwnerRule.ts +592 -0
- package/Models/DatabaseModels/ServerlessFunctionOwnerTeam.ts +487 -0
- package/Models/DatabaseModels/ServerlessFunctionOwnerUser.ts +486 -0
- package/Models/DatabaseModels/Service.ts +268 -0
- package/Models/DatabaseModels/TelemetryException.ts +15 -1
- package/Models/DatabaseModels/WorkflowLog.ts +52 -0
- package/Server/Infrastructure/Postgres/SchemaMigrations/1780931746908-AddResumeStateToWorkflowLog.ts +21 -0
- package/Server/Infrastructure/Postgres/SchemaMigrations/1780931863719-AddTelemetryResourceMetadataColumns.ts +108 -0
- package/Server/Infrastructure/Postgres/SchemaMigrations/1780933132562-AddServerlessFunctionTables.ts +205 -0
- package/Server/Infrastructure/Postgres/SchemaMigrations/1780935387827-AddCloudResourceTables.ts +195 -0
- package/Server/Infrastructure/Postgres/SchemaMigrations/1780936579718-AddRumApplicationTables.ts +202 -0
- package/Server/Infrastructure/Postgres/SchemaMigrations/1780938407319-AddServerlessFunctionRuleTables.ts +156 -0
- package/Server/Infrastructure/Postgres/SchemaMigrations/1780940721814-AddCloudResourceRuleTables.ts +149 -0
- package/Server/Infrastructure/Postgres/SchemaMigrations/1780940998002-AddRumApplicationRuleTables.ts +149 -0
- package/Server/Infrastructure/Postgres/SchemaMigrations/1780941762204-AddTelemetryResourceInventoryTables.ts +95 -0
- package/Server/Infrastructure/Postgres/SchemaMigrations/1780985763463-AddRumApplicationSdkLanguage.ts +25 -0
- package/Server/Infrastructure/Postgres/SchemaMigrations/1780987192743-RecastCloudResourcesByEnvironment.ts +30 -0
- package/Server/Infrastructure/Postgres/SchemaMigrations/Index.ts +22 -0
- package/Server/Infrastructure/Queue.ts +11 -0
- package/Server/Services/CloudResourceInstanceService.ts +76 -0
- package/Server/Services/CloudResourceLabelRuleEngineService.ts +175 -0
- package/Server/Services/CloudResourceLabelRuleService.ts +14 -0
- package/Server/Services/CloudResourceOwnerRuleEngineService.ts +192 -0
- package/Server/Services/CloudResourceOwnerRuleService.ts +14 -0
- package/Server/Services/CloudResourceOwnerTeamService.ts +10 -0
- package/Server/Services/CloudResourceOwnerUserService.ts +10 -0
- package/Server/Services/CloudResourceService.ts +342 -0
- package/Server/Services/ExceptionAggregationService.ts +3 -0
- package/Server/Services/HostService.ts +42 -0
- package/Server/Services/LogAggregationService.ts +3 -0
- package/Server/Services/MetricAggregationService.ts +3 -0
- package/Server/Services/OpenTelemetryIngestService.ts +148 -1
- package/Server/Services/RumApplicationClientService.ts +69 -0
- package/Server/Services/RumApplicationLabelRuleEngineService.ts +175 -0
- package/Server/Services/RumApplicationLabelRuleService.ts +14 -0
- package/Server/Services/RumApplicationOwnerRuleEngineService.ts +192 -0
- package/Server/Services/RumApplicationOwnerRuleService.ts +14 -0
- package/Server/Services/RumApplicationOwnerTeamService.ts +10 -0
- package/Server/Services/RumApplicationOwnerUserService.ts +10 -0
- package/Server/Services/RumApplicationService.ts +301 -0
- package/Server/Services/ServerlessFunctionInstanceService.ts +61 -0
- package/Server/Services/ServerlessFunctionLabelRuleEngineService.ts +182 -0
- package/Server/Services/ServerlessFunctionLabelRuleService.ts +14 -0
- package/Server/Services/ServerlessFunctionOwnerRuleEngineService.ts +199 -0
- package/Server/Services/ServerlessFunctionOwnerRuleService.ts +14 -0
- package/Server/Services/ServerlessFunctionOwnerTeamService.ts +10 -0
- package/Server/Services/ServerlessFunctionOwnerUserService.ts +10 -0
- package/Server/Services/ServerlessFunctionService.ts +351 -0
- package/Server/Services/ServiceService.ts +95 -8
- package/Server/Services/TraceAggregationService.ts +3 -0
- package/Server/Types/Database/Permissions/OwnerTableRegistry.ts +39 -0
- package/Server/Types/Workflow/ComponentCode.ts +9 -0
- package/Server/Types/Workflow/Components/Index.ts +2 -0
- package/Server/Types/Workflow/Components/Sleep.ts +105 -0
- package/Server/Types/Workflow/Workflow.ts +6 -0
- package/Server/Utils/Telemetry/ResourceFacetResolver.ts +150 -0
- package/Tests/Types/Monitor/KubernetesAlertTemplates.test.ts +193 -0
- package/Tests/UI/Components/DuplicateModel.test.tsx +2 -2
- package/Types/Monitor/KubernetesAlertTemplates.ts +239 -14
- package/Types/Permission.ts +692 -1
- package/Types/Telemetry/ServiceType.ts +3 -0
- package/Types/Workflow/ComponentID.ts +1 -0
- package/Types/Workflow/Components/Sleep.ts +71 -0
- package/Types/Workflow/Components.ts +2 -0
- package/Types/Workflow/WorkflowStatus.ts +1 -0
- package/UI/Components/BulkUpdate/BulkLabelActions.tsx +159 -32
- package/UI/Components/Navbar/NavBar.tsx +72 -123
- package/UI/Components/Navbar/NavBarMenuModal.tsx +642 -0
- package/UI/Components/Workflow/WorkflowStatus.tsx +3 -0
- package/build/dist/Models/DatabaseModels/CloudResource.js +871 -0
- package/build/dist/Models/DatabaseModels/CloudResource.js.map +1 -0
- package/build/dist/Models/DatabaseModels/CloudResourceInstance.js +300 -0
- package/build/dist/Models/DatabaseModels/CloudResourceInstance.js.map +1 -0
- package/build/dist/Models/DatabaseModels/CloudResourceLabelRule.js +520 -0
- package/build/dist/Models/DatabaseModels/CloudResourceLabelRule.js.map +1 -0
- package/build/dist/Models/DatabaseModels/CloudResourceOwnerRule.js +601 -0
- package/build/dist/Models/DatabaseModels/CloudResourceOwnerRule.js.map +1 -0
- package/build/dist/Models/DatabaseModels/CloudResourceOwnerTeam.js +503 -0
- package/build/dist/Models/DatabaseModels/CloudResourceOwnerTeam.js.map +1 -0
- package/build/dist/Models/DatabaseModels/CloudResourceOwnerUser.js +502 -0
- package/build/dist/Models/DatabaseModels/CloudResourceOwnerUser.js.map +1 -0
- package/build/dist/Models/DatabaseModels/Host.js +215 -0
- package/build/dist/Models/DatabaseModels/Host.js.map +1 -1
- package/build/dist/Models/DatabaseModels/Index.js +36 -0
- package/build/dist/Models/DatabaseModels/Index.js.map +1 -1
- package/build/dist/Models/DatabaseModels/RumApplication.js +751 -0
- package/build/dist/Models/DatabaseModels/RumApplication.js.map +1 -0
- package/build/dist/Models/DatabaseModels/RumApplicationClient.js +252 -0
- package/build/dist/Models/DatabaseModels/RumApplicationClient.js.map +1 -0
- package/build/dist/Models/DatabaseModels/RumApplicationLabelRule.js +520 -0
- package/build/dist/Models/DatabaseModels/RumApplicationLabelRule.js.map +1 -0
- package/build/dist/Models/DatabaseModels/RumApplicationOwnerRule.js +601 -0
- package/build/dist/Models/DatabaseModels/RumApplicationOwnerRule.js.map +1 -0
- package/build/dist/Models/DatabaseModels/RumApplicationOwnerTeam.js +503 -0
- package/build/dist/Models/DatabaseModels/RumApplicationOwnerTeam.js.map +1 -0
- package/build/dist/Models/DatabaseModels/RumApplicationOwnerUser.js +502 -0
- package/build/dist/Models/DatabaseModels/RumApplicationOwnerUser.js.map +1 -0
- package/build/dist/Models/DatabaseModels/ServerlessFunction.js +908 -0
- package/build/dist/Models/DatabaseModels/ServerlessFunction.js.map +1 -0
- package/build/dist/Models/DatabaseModels/ServerlessFunctionInstance.js +234 -0
- package/build/dist/Models/DatabaseModels/ServerlessFunctionInstance.js.map +1 -0
- package/build/dist/Models/DatabaseModels/ServerlessFunctionLabelRule.js +520 -0
- package/build/dist/Models/DatabaseModels/ServerlessFunctionLabelRule.js.map +1 -0
- package/build/dist/Models/DatabaseModels/ServerlessFunctionOwnerRule.js +601 -0
- package/build/dist/Models/DatabaseModels/ServerlessFunctionOwnerRule.js.map +1 -0
- package/build/dist/Models/DatabaseModels/ServerlessFunctionOwnerTeam.js +503 -0
- package/build/dist/Models/DatabaseModels/ServerlessFunctionOwnerTeam.js.map +1 -0
- package/build/dist/Models/DatabaseModels/ServerlessFunctionOwnerUser.js +502 -0
- package/build/dist/Models/DatabaseModels/ServerlessFunctionOwnerUser.js.map +1 -0
- package/build/dist/Models/DatabaseModels/Service.js +276 -0
- package/build/dist/Models/DatabaseModels/Service.js.map +1 -1
- package/build/dist/Models/DatabaseModels/TelemetryException.js +12 -1
- package/build/dist/Models/DatabaseModels/TelemetryException.js.map +1 -1
- package/build/dist/Models/DatabaseModels/WorkflowLog.js +53 -0
- package/build/dist/Models/DatabaseModels/WorkflowLog.js.map +1 -1
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1780931746908-AddResumeStateToWorkflowLog.js +14 -0
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1780931746908-AddResumeStateToWorkflowLog.js.map +1 -0
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1780931863719-AddTelemetryResourceMetadataColumns.js +53 -0
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1780931863719-AddTelemetryResourceMetadataColumns.js.map +1 -0
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1780933132562-AddServerlessFunctionTables.js +82 -0
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1780933132562-AddServerlessFunctionTables.js.map +1 -0
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1780935387827-AddCloudResourceTables.js +82 -0
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1780935387827-AddCloudResourceTables.js.map +1 -0
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1780936579718-AddRumApplicationTables.js +83 -0
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1780936579718-AddRumApplicationTables.js.map +1 -0
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1780938407319-AddServerlessFunctionRuleTables.js +67 -0
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1780938407319-AddServerlessFunctionRuleTables.js.map +1 -0
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1780940721814-AddCloudResourceRuleTables.js +60 -0
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1780940721814-AddCloudResourceRuleTables.js.map +1 -0
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1780940998002-AddRumApplicationRuleTables.js +60 -0
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1780940998002-AddRumApplicationRuleTables.js.map +1 -0
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1780941762204-AddTelemetryResourceInventoryTables.js +45 -0
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1780941762204-AddTelemetryResourceInventoryTables.js.map +1 -0
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1780985763463-AddRumApplicationSdkLanguage.js +18 -0
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1780985763463-AddRumApplicationSdkLanguage.js.map +1 -0
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1780987192743-RecastCloudResourcesByEnvironment.js +27 -0
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1780987192743-RecastCloudResourcesByEnvironment.js.map +1 -0
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/Index.js +22 -0
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/Index.js.map +1 -1
- package/build/dist/Server/Infrastructure/Queue.js +3 -0
- package/build/dist/Server/Infrastructure/Queue.js.map +1 -1
- package/build/dist/Server/Services/CloudResourceInstanceService.js +76 -0
- package/build/dist/Server/Services/CloudResourceInstanceService.js.map +1 -0
- package/build/dist/Server/Services/CloudResourceLabelRuleEngineService.js +160 -0
- package/build/dist/Server/Services/CloudResourceLabelRuleEngineService.js.map +1 -0
- package/build/dist/Server/Services/CloudResourceLabelRuleService.js +13 -0
- package/build/dist/Server/Services/CloudResourceLabelRuleService.js.map +1 -0
- package/build/dist/Server/Services/CloudResourceOwnerRuleEngineService.js +179 -0
- package/build/dist/Server/Services/CloudResourceOwnerRuleEngineService.js.map +1 -0
- package/build/dist/Server/Services/CloudResourceOwnerRuleService.js +13 -0
- package/build/dist/Server/Services/CloudResourceOwnerRuleService.js.map +1 -0
- package/build/dist/Server/Services/CloudResourceOwnerTeamService.js +9 -0
- package/build/dist/Server/Services/CloudResourceOwnerTeamService.js.map +1 -0
- package/build/dist/Server/Services/CloudResourceOwnerUserService.js +9 -0
- package/build/dist/Server/Services/CloudResourceOwnerUserService.js.map +1 -0
- package/build/dist/Server/Services/CloudResourceService.js +287 -0
- package/build/dist/Server/Services/CloudResourceService.js.map +1 -0
- package/build/dist/Server/Services/ExceptionAggregationService.js +3 -0
- package/build/dist/Server/Services/ExceptionAggregationService.js.map +1 -1
- package/build/dist/Server/Services/HostService.js +29 -1
- package/build/dist/Server/Services/HostService.js.map +1 -1
- package/build/dist/Server/Services/LogAggregationService.js +3 -0
- package/build/dist/Server/Services/LogAggregationService.js.map +1 -1
- package/build/dist/Server/Services/MetricAggregationService.js +3 -0
- package/build/dist/Server/Services/MetricAggregationService.js.map +1 -1
- package/build/dist/Server/Services/OpenTelemetryIngestService.js +98 -2
- package/build/dist/Server/Services/OpenTelemetryIngestService.js.map +1 -1
- package/build/dist/Server/Services/RumApplicationClientService.js +70 -0
- package/build/dist/Server/Services/RumApplicationClientService.js.map +1 -0
- package/build/dist/Server/Services/RumApplicationLabelRuleEngineService.js +160 -0
- package/build/dist/Server/Services/RumApplicationLabelRuleEngineService.js.map +1 -0
- package/build/dist/Server/Services/RumApplicationLabelRuleService.js +13 -0
- package/build/dist/Server/Services/RumApplicationLabelRuleService.js.map +1 -0
- package/build/dist/Server/Services/RumApplicationOwnerRuleEngineService.js +179 -0
- package/build/dist/Server/Services/RumApplicationOwnerRuleEngineService.js.map +1 -0
- package/build/dist/Server/Services/RumApplicationOwnerRuleService.js +13 -0
- package/build/dist/Server/Services/RumApplicationOwnerRuleService.js.map +1 -0
- package/build/dist/Server/Services/RumApplicationOwnerTeamService.js +9 -0
- package/build/dist/Server/Services/RumApplicationOwnerTeamService.js.map +1 -0
- package/build/dist/Server/Services/RumApplicationOwnerUserService.js +9 -0
- package/build/dist/Server/Services/RumApplicationOwnerUserService.js.map +1 -0
- package/build/dist/Server/Services/RumApplicationService.js +259 -0
- package/build/dist/Server/Services/RumApplicationService.js.map +1 -0
- package/build/dist/Server/Services/ServerlessFunctionInstanceService.js +64 -0
- package/build/dist/Server/Services/ServerlessFunctionInstanceService.js.map +1 -0
- package/build/dist/Server/Services/ServerlessFunctionLabelRuleEngineService.js +160 -0
- package/build/dist/Server/Services/ServerlessFunctionLabelRuleEngineService.js.map +1 -0
- package/build/dist/Server/Services/ServerlessFunctionLabelRuleService.js +13 -0
- package/build/dist/Server/Services/ServerlessFunctionLabelRuleService.js.map +1 -0
- package/build/dist/Server/Services/ServerlessFunctionOwnerRuleEngineService.js +179 -0
- package/build/dist/Server/Services/ServerlessFunctionOwnerRuleEngineService.js.map +1 -0
- package/build/dist/Server/Services/ServerlessFunctionOwnerRuleService.js +13 -0
- package/build/dist/Server/Services/ServerlessFunctionOwnerRuleService.js.map +1 -0
- package/build/dist/Server/Services/ServerlessFunctionOwnerTeamService.js +9 -0
- package/build/dist/Server/Services/ServerlessFunctionOwnerTeamService.js.map +1 -0
- package/build/dist/Server/Services/ServerlessFunctionOwnerUserService.js +9 -0
- package/build/dist/Server/Services/ServerlessFunctionOwnerUserService.js.map +1 -0
- package/build/dist/Server/Services/ServerlessFunctionService.js +299 -0
- package/build/dist/Server/Services/ServerlessFunctionService.js.map +1 -0
- package/build/dist/Server/Services/ServiceService.js +63 -7
- package/build/dist/Server/Services/ServiceService.js.map +1 -1
- package/build/dist/Server/Services/TraceAggregationService.js +3 -0
- package/build/dist/Server/Services/TraceAggregationService.js.map +1 -1
- package/build/dist/Server/Types/Database/Permissions/OwnerTableRegistry.js +39 -0
- package/build/dist/Server/Types/Database/Permissions/OwnerTableRegistry.js.map +1 -1
- package/build/dist/Server/Types/Workflow/ComponentCode.js.map +1 -1
- package/build/dist/Server/Types/Workflow/Components/Index.js +2 -0
- package/build/dist/Server/Types/Workflow/Components/Index.js.map +1 -1
- package/build/dist/Server/Types/Workflow/Components/Sleep.js +85 -0
- package/build/dist/Server/Types/Workflow/Components/Sleep.js.map +1 -0
- package/build/dist/Server/Utils/Telemetry/ResourceFacetResolver.js +90 -0
- package/build/dist/Server/Utils/Telemetry/ResourceFacetResolver.js.map +1 -1
- package/build/dist/Tests/Types/Monitor/KubernetesAlertTemplates.test.js +121 -0
- package/build/dist/Tests/Types/Monitor/KubernetesAlertTemplates.test.js.map +1 -0
- package/build/dist/Tests/UI/Components/DuplicateModel.test.js +2 -2
- package/build/dist/Tests/UI/Components/DuplicateModel.test.js.map +1 -1
- package/build/dist/Types/Monitor/KubernetesAlertTemplates.js +210 -14
- package/build/dist/Types/Monitor/KubernetesAlertTemplates.js.map +1 -1
- package/build/dist/Types/Permission.js +609 -1
- package/build/dist/Types/Permission.js.map +1 -1
- package/build/dist/Types/Telemetry/ServiceType.js +3 -0
- package/build/dist/Types/Telemetry/ServiceType.js.map +1 -1
- package/build/dist/Types/Workflow/ComponentID.js +1 -0
- package/build/dist/Types/Workflow/ComponentID.js.map +1 -1
- package/build/dist/Types/Workflow/Components/Sleep.js +64 -0
- package/build/dist/Types/Workflow/Components/Sleep.js.map +1 -0
- package/build/dist/Types/Workflow/Components.js +2 -0
- package/build/dist/Types/Workflow/Components.js.map +1 -1
- package/build/dist/Types/Workflow/WorkflowStatus.js +1 -0
- package/build/dist/Types/Workflow/WorkflowStatus.js.map +1 -1
- package/build/dist/UI/Components/BulkUpdate/BulkLabelActions.js +113 -19
- package/build/dist/UI/Components/BulkUpdate/BulkLabelActions.js.map +1 -1
- package/build/dist/UI/Components/Navbar/NavBar.js +34 -66
- package/build/dist/UI/Components/Navbar/NavBar.js.map +1 -1
- package/build/dist/UI/Components/Navbar/NavBarMenuModal.js +412 -0
- package/build/dist/UI/Components/Navbar/NavBarMenuModal.js.map +1 -0
- package/build/dist/UI/Components/Workflow/WorkflowStatus.js +3 -0
- package/build/dist/UI/Components/Workflow/WorkflowStatus.js.map +1 -1
- package/package.json +1 -1
- package/UI/Components/Navbar/NavBarMenu.tsx +0 -183
- package/UI/Components/Navbar/NavBarMenuItem.tsx +0 -146
- package/build/dist/UI/Components/Navbar/NavBarMenu.js +0 -82
- package/build/dist/UI/Components/Navbar/NavBarMenu.js.map +0 -1
- package/build/dist/UI/Components/Navbar/NavBarMenuItem.js +0 -109
- package/build/dist/UI/Components/Navbar/NavBarMenuItem.js.map +0 -1
|
@@ -119,32 +119,119 @@ export class Service extends DatabaseService<Model> {
|
|
|
119
119
|
* per batch instead of a DB write.
|
|
120
120
|
*/
|
|
121
121
|
@CaptureSpan()
|
|
122
|
-
public async updateLastSeen(
|
|
122
|
+
public async updateLastSeen(
|
|
123
|
+
serviceId: ObjectID,
|
|
124
|
+
extra?: {
|
|
125
|
+
serviceVersion?: string | undefined;
|
|
126
|
+
deploymentEnvironment?: string | undefined;
|
|
127
|
+
serviceNamespace?: string | undefined;
|
|
128
|
+
runtimeName?: string | undefined;
|
|
129
|
+
runtimeVersion?: string | undefined;
|
|
130
|
+
cloudProvider?: string | undefined;
|
|
131
|
+
cloudPlatform?: string | undefined;
|
|
132
|
+
cloudRegion?: string | undefined;
|
|
133
|
+
cloudAccountId?: string | undefined;
|
|
134
|
+
},
|
|
135
|
+
): Promise<void> {
|
|
136
|
+
/*
|
|
137
|
+
* Throttle keyed on a fingerprint of the metadata so the steady-state
|
|
138
|
+
* firehose (the same serviceId re-resolved every batch) costs one
|
|
139
|
+
* in-memory cache lookup, but a changed attribute (e.g. a new
|
|
140
|
+
* service.version after a deploy) busts the cache and writes
|
|
141
|
+
* immediately. With no extras the fingerprint is constant, preserving
|
|
142
|
+
* the original "refresh lastSeenAt at most once per window" behaviour.
|
|
143
|
+
*/
|
|
123
144
|
const cacheKey: string = serviceId.toString();
|
|
145
|
+
const fingerprint: string = this.fingerprintLastSeenExtras(extra);
|
|
124
146
|
const cached: string | null = await GlobalCache.getString(
|
|
125
147
|
LAST_SEEN_CACHE_NAMESPACE,
|
|
126
148
|
cacheKey,
|
|
127
149
|
);
|
|
128
150
|
|
|
129
|
-
if (cached) {
|
|
151
|
+
if (cached === fingerprint) {
|
|
130
152
|
return;
|
|
131
153
|
}
|
|
132
154
|
|
|
133
|
-
await GlobalCache.setString(
|
|
134
|
-
|
|
135
|
-
|
|
155
|
+
await GlobalCache.setString(
|
|
156
|
+
LAST_SEEN_CACHE_NAMESPACE,
|
|
157
|
+
cacheKey,
|
|
158
|
+
fingerprint,
|
|
159
|
+
{
|
|
160
|
+
expiresInSeconds: LAST_SEEN_THROTTLE_SECONDS,
|
|
161
|
+
},
|
|
162
|
+
);
|
|
163
|
+
|
|
164
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
165
|
+
const data: any = {
|
|
166
|
+
lastSeenAt: OneUptimeDate.getCurrentDate(),
|
|
167
|
+
};
|
|
168
|
+
|
|
169
|
+
if (extra?.serviceVersion) {
|
|
170
|
+
data.serviceVersion = extra.serviceVersion;
|
|
171
|
+
}
|
|
172
|
+
if (extra?.deploymentEnvironment) {
|
|
173
|
+
data.deploymentEnvironment = extra.deploymentEnvironment;
|
|
174
|
+
}
|
|
175
|
+
if (extra?.serviceNamespace) {
|
|
176
|
+
data.serviceNamespace = extra.serviceNamespace;
|
|
177
|
+
}
|
|
178
|
+
if (extra?.runtimeName) {
|
|
179
|
+
data.runtimeName = extra.runtimeName;
|
|
180
|
+
}
|
|
181
|
+
if (extra?.runtimeVersion) {
|
|
182
|
+
data.runtimeVersion = extra.runtimeVersion;
|
|
183
|
+
}
|
|
184
|
+
if (extra?.cloudProvider) {
|
|
185
|
+
data.cloudProvider = extra.cloudProvider;
|
|
186
|
+
}
|
|
187
|
+
if (extra?.cloudPlatform) {
|
|
188
|
+
data.cloudPlatform = extra.cloudPlatform;
|
|
189
|
+
}
|
|
190
|
+
if (extra?.cloudRegion) {
|
|
191
|
+
data.cloudRegion = extra.cloudRegion;
|
|
192
|
+
}
|
|
193
|
+
if (extra?.cloudAccountId) {
|
|
194
|
+
data.cloudAccountId = extra.cloudAccountId;
|
|
195
|
+
}
|
|
136
196
|
|
|
137
197
|
await this.updateOneById({
|
|
138
198
|
id: serviceId,
|
|
139
|
-
data:
|
|
140
|
-
lastSeenAt: OneUptimeDate.getCurrentDate(),
|
|
141
|
-
},
|
|
199
|
+
data: data,
|
|
142
200
|
props: {
|
|
143
201
|
isRoot: true,
|
|
144
202
|
},
|
|
145
203
|
});
|
|
146
204
|
}
|
|
147
205
|
|
|
206
|
+
private fingerprintLastSeenExtras(extra?: {
|
|
207
|
+
serviceVersion?: string | undefined;
|
|
208
|
+
deploymentEnvironment?: string | undefined;
|
|
209
|
+
serviceNamespace?: string | undefined;
|
|
210
|
+
runtimeName?: string | undefined;
|
|
211
|
+
runtimeVersion?: string | undefined;
|
|
212
|
+
cloudProvider?: string | undefined;
|
|
213
|
+
cloudPlatform?: string | undefined;
|
|
214
|
+
cloudRegion?: string | undefined;
|
|
215
|
+
cloudAccountId?: string | undefined;
|
|
216
|
+
}): string {
|
|
217
|
+
const normalized: Record<string, string | null> = {
|
|
218
|
+
serviceVersion: extra?.serviceVersion ?? null,
|
|
219
|
+
deploymentEnvironment: extra?.deploymentEnvironment ?? null,
|
|
220
|
+
serviceNamespace: extra?.serviceNamespace ?? null,
|
|
221
|
+
runtimeName: extra?.runtimeName ?? null,
|
|
222
|
+
runtimeVersion: extra?.runtimeVersion ?? null,
|
|
223
|
+
cloudProvider: extra?.cloudProvider ?? null,
|
|
224
|
+
cloudPlatform: extra?.cloudPlatform ?? null,
|
|
225
|
+
cloudRegion: extra?.cloudRegion ?? null,
|
|
226
|
+
cloudAccountId: extra?.cloudAccountId ?? null,
|
|
227
|
+
};
|
|
228
|
+
|
|
229
|
+
return crypto
|
|
230
|
+
.createHash("sha1")
|
|
231
|
+
.update(JSON.stringify(normalized))
|
|
232
|
+
.digest("hex");
|
|
233
|
+
}
|
|
234
|
+
|
|
148
235
|
/**
|
|
149
236
|
* Additively attach labels to a telemetry service. Existing labels
|
|
150
237
|
* are never removed — manual labels set via the UI survive ingest.
|
|
@@ -81,6 +81,9 @@ export class TraceAggregationService {
|
|
|
81
81
|
["hostId", ServiceType.Host],
|
|
82
82
|
["dockerHostId", ServiceType.DockerHost],
|
|
83
83
|
["kubernetesClusterId", ServiceType.KubernetesCluster],
|
|
84
|
+
["serverlessFunctionId", ServiceType.ServerlessFunction],
|
|
85
|
+
["cloudResourceId", ServiceType.CloudResource],
|
|
86
|
+
["rumApplicationId", ServiceType.RealUserMonitor],
|
|
84
87
|
]);
|
|
85
88
|
private static readonly ATTRIBUTE_KEY_PATTERN: RegExp = /^[a-zA-Z0-9._:/-]+$/;
|
|
86
89
|
private static readonly MAX_FACET_KEY_LENGTH: number = 256;
|
|
@@ -20,6 +20,12 @@ import DockerHostOwnerTeamService from "../../../Services/DockerHostOwnerTeamSer
|
|
|
20
20
|
import DockerHostOwnerUserService from "../../../Services/DockerHostOwnerUserService";
|
|
21
21
|
import KubernetesClusterOwnerTeamService from "../../../Services/KubernetesClusterOwnerTeamService";
|
|
22
22
|
import KubernetesClusterOwnerUserService from "../../../Services/KubernetesClusterOwnerUserService";
|
|
23
|
+
import ServerlessFunctionOwnerTeamService from "../../../Services/ServerlessFunctionOwnerTeamService";
|
|
24
|
+
import ServerlessFunctionOwnerUserService from "../../../Services/ServerlessFunctionOwnerUserService";
|
|
25
|
+
import CloudResourceOwnerTeamService from "../../../Services/CloudResourceOwnerTeamService";
|
|
26
|
+
import CloudResourceOwnerUserService from "../../../Services/CloudResourceOwnerUserService";
|
|
27
|
+
import RumApplicationOwnerTeamService from "../../../Services/RumApplicationOwnerTeamService";
|
|
28
|
+
import RumApplicationOwnerUserService from "../../../Services/RumApplicationOwnerUserService";
|
|
23
29
|
import StatusPageOwnerTeamService from "../../../Services/StatusPageOwnerTeamService";
|
|
24
30
|
import StatusPageOwnerUserService from "../../../Services/StatusPageOwnerUserService";
|
|
25
31
|
import WorkflowOwnerTeamService from "../../../Services/WorkflowOwnerTeamService";
|
|
@@ -35,6 +41,9 @@ import MonitorService from "../../../Services/MonitorService";
|
|
|
35
41
|
import HostService from "../../../Services/HostService";
|
|
36
42
|
import DockerHostService from "../../../Services/DockerHostService";
|
|
37
43
|
import KubernetesClusterService from "../../../Services/KubernetesClusterService";
|
|
44
|
+
import ServerlessFunctionService from "../../../Services/ServerlessFunctionService";
|
|
45
|
+
import CloudResourceService from "../../../Services/CloudResourceService";
|
|
46
|
+
import RumApplicationService from "../../../Services/RumApplicationService";
|
|
38
47
|
|
|
39
48
|
/*
|
|
40
49
|
* Maps an operational model name (e.g. "Monitor") to the two services that
|
|
@@ -180,6 +189,36 @@ const ownerTableRegistry: Map<string, OwnerTablePair> = new Map<
|
|
|
180
189
|
modelService: KubernetesClusterService,
|
|
181
190
|
},
|
|
182
191
|
],
|
|
192
|
+
[
|
|
193
|
+
"ServerlessFunction",
|
|
194
|
+
{
|
|
195
|
+
ownerUserService: ServerlessFunctionOwnerUserService,
|
|
196
|
+
ownerTeamService: ServerlessFunctionOwnerTeamService,
|
|
197
|
+
fkColumn: "serverlessFunctionId",
|
|
198
|
+
canOwnTelemetry: true,
|
|
199
|
+
modelService: ServerlessFunctionService,
|
|
200
|
+
},
|
|
201
|
+
],
|
|
202
|
+
[
|
|
203
|
+
"CloudResource",
|
|
204
|
+
{
|
|
205
|
+
ownerUserService: CloudResourceOwnerUserService,
|
|
206
|
+
ownerTeamService: CloudResourceOwnerTeamService,
|
|
207
|
+
fkColumn: "cloudResourceId",
|
|
208
|
+
canOwnTelemetry: true,
|
|
209
|
+
modelService: CloudResourceService,
|
|
210
|
+
},
|
|
211
|
+
],
|
|
212
|
+
[
|
|
213
|
+
"RumApplication",
|
|
214
|
+
{
|
|
215
|
+
ownerUserService: RumApplicationOwnerUserService,
|
|
216
|
+
ownerTeamService: RumApplicationOwnerTeamService,
|
|
217
|
+
fkColumn: "rumApplicationId",
|
|
218
|
+
canOwnTelemetry: true,
|
|
219
|
+
modelService: RumApplicationService,
|
|
220
|
+
},
|
|
221
|
+
],
|
|
183
222
|
[
|
|
184
223
|
"Workflow",
|
|
185
224
|
{
|
|
@@ -38,6 +38,15 @@ export interface RunOptions {
|
|
|
38
38
|
export interface RunReturnType {
|
|
39
39
|
returnValues: JSONObject;
|
|
40
40
|
executePort?: Port | undefined;
|
|
41
|
+
/**
|
|
42
|
+
* When set to a positive number of milliseconds, the workflow runner will
|
|
43
|
+
* suspend execution AFTER this component (the components connected to
|
|
44
|
+
* `executePort` are scheduled but not run inline). The run is persisted and
|
|
45
|
+
* a delayed job re-enqueues it once the duration elapses, at which point it
|
|
46
|
+
* resumes from where it left off. Used by the Sleep component to implement a
|
|
47
|
+
* durable delay that does not block a worker.
|
|
48
|
+
*/
|
|
49
|
+
suspendForMs?: number | undefined;
|
|
41
50
|
}
|
|
42
51
|
|
|
43
52
|
export default class ComponentCode {
|
|
@@ -28,6 +28,7 @@ import ManualTrigger from "./Manual";
|
|
|
28
28
|
import MicrosoftTeamsSendMessageToChannel from "./MicrosoftTeams/SendMessageToChannel";
|
|
29
29
|
import Schedule from "./Schedule";
|
|
30
30
|
import SlackSendMessageToChannel from "./Slack/SendMessageToChannel";
|
|
31
|
+
import Sleep from "./Sleep";
|
|
31
32
|
import TelegramSendMessageToChat from "./Telegram/SendMessageToChat";
|
|
32
33
|
import WebhookTrigger from "./Webhook";
|
|
33
34
|
import ExecuteWorkflow from "./Workflow";
|
|
@@ -59,6 +60,7 @@ const Components: Dictionary<ComponentCode> = {
|
|
|
59
60
|
[ComponentID.SendEmail]: new Email(),
|
|
60
61
|
[ComponentID.IfElse]: new IfElse(),
|
|
61
62
|
[ComponentID.WorkflowRun]: new ExecuteWorkflow(),
|
|
63
|
+
[ComponentID.Sleep]: new Sleep(),
|
|
62
64
|
};
|
|
63
65
|
|
|
64
66
|
for (const baseModelService of Services) {
|
|
@@ -0,0 +1,105 @@
|
|
|
1
|
+
import ComponentCode, { RunOptions, RunReturnType } from "../ComponentCode";
|
|
2
|
+
import BadDataException from "../../../../Types/Exception/BadDataException";
|
|
3
|
+
import { JSONObject } from "../../../../Types/JSON";
|
|
4
|
+
import ComponentMetadata, { Port } from "../../../../Types/Workflow/Component";
|
|
5
|
+
import ComponentID from "../../../../Types/Workflow/ComponentID";
|
|
6
|
+
import SleepComponents from "../../../../Types/Workflow/Components/Sleep";
|
|
7
|
+
import CaptureSpan from "../../../Utils/Telemetry/CaptureSpan";
|
|
8
|
+
|
|
9
|
+
/**
|
|
10
|
+
* Maximum duration a single Sleep component may suspend for. Bounds how far in
|
|
11
|
+
* the future a delayed resume job can be parked.
|
|
12
|
+
*/
|
|
13
|
+
export const MAX_SLEEP_IN_MS: number = 30 * 24 * 60 * 60 * 1000; // 30 days
|
|
14
|
+
|
|
15
|
+
export default class Sleep extends ComponentCode {
|
|
16
|
+
public constructor() {
|
|
17
|
+
super();
|
|
18
|
+
|
|
19
|
+
const SleepComponent: ComponentMetadata | undefined = SleepComponents.find(
|
|
20
|
+
(i: ComponentMetadata) => {
|
|
21
|
+
return i.id === ComponentID.Sleep;
|
|
22
|
+
},
|
|
23
|
+
);
|
|
24
|
+
|
|
25
|
+
if (!SleepComponent) {
|
|
26
|
+
throw new BadDataException("Component not found.");
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
this.setMetadata(SleepComponent);
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
/**
|
|
33
|
+
* Coerce a workflow argument (which may arrive as a string from the form, a
|
|
34
|
+
* number, or null) into a non-negative integer. Invalid / negative values
|
|
35
|
+
* are treated as 0.
|
|
36
|
+
*/
|
|
37
|
+
private toNonNegativeNumber(value: unknown): number {
|
|
38
|
+
const parsed: number =
|
|
39
|
+
typeof value === "number" ? value : parseFloat(value as string);
|
|
40
|
+
|
|
41
|
+
if (isNaN(parsed) || !isFinite(parsed) || parsed < 0) {
|
|
42
|
+
return 0;
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
return parsed;
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
@CaptureSpan()
|
|
49
|
+
public override async run(
|
|
50
|
+
args: JSONObject,
|
|
51
|
+
options: RunOptions,
|
|
52
|
+
): Promise<RunReturnType> {
|
|
53
|
+
const outPort: Port | undefined = this.getMetadata().outPorts.find(
|
|
54
|
+
(p: Port) => {
|
|
55
|
+
return p.id === "out";
|
|
56
|
+
},
|
|
57
|
+
);
|
|
58
|
+
|
|
59
|
+
if (!outPort) {
|
|
60
|
+
throw options.onError(new BadDataException("Out port not found"));
|
|
61
|
+
}
|
|
62
|
+
|
|
63
|
+
const days: number = this.toNonNegativeNumber(args["days"]);
|
|
64
|
+
const hours: number = this.toNonNegativeNumber(args["hours"]);
|
|
65
|
+
const minutes: number = this.toNonNegativeNumber(args["minutes"]);
|
|
66
|
+
const seconds: number = this.toNonNegativeNumber(args["seconds"]);
|
|
67
|
+
|
|
68
|
+
let sleepForMs: number =
|
|
69
|
+
days * 24 * 60 * 60 * 1000 +
|
|
70
|
+
hours * 60 * 60 * 1000 +
|
|
71
|
+
minutes * 60 * 1000 +
|
|
72
|
+
seconds * 1000;
|
|
73
|
+
|
|
74
|
+
sleepForMs = Math.round(sleepForMs);
|
|
75
|
+
|
|
76
|
+
if (sleepForMs > MAX_SLEEP_IN_MS) {
|
|
77
|
+
options.log(
|
|
78
|
+
`Requested sleep of ${sleepForMs}ms exceeds the maximum of ${MAX_SLEEP_IN_MS}ms. Clamping to the maximum.`,
|
|
79
|
+
);
|
|
80
|
+
sleepForMs = MAX_SLEEP_IN_MS;
|
|
81
|
+
}
|
|
82
|
+
|
|
83
|
+
if (sleepForMs <= 0) {
|
|
84
|
+
// Nothing to sleep for — behave as a pass-through.
|
|
85
|
+
options.log(
|
|
86
|
+
"Sleep duration is zero. Continuing to the next step immediately.",
|
|
87
|
+
);
|
|
88
|
+
|
|
89
|
+
return Promise.resolve({
|
|
90
|
+
returnValues: {},
|
|
91
|
+
executePort: outPort,
|
|
92
|
+
});
|
|
93
|
+
}
|
|
94
|
+
|
|
95
|
+
options.log(
|
|
96
|
+
`Workflow will sleep for ${sleepForMs}ms and then continue to the next step.`,
|
|
97
|
+
);
|
|
98
|
+
|
|
99
|
+
return Promise.resolve({
|
|
100
|
+
returnValues: {},
|
|
101
|
+
executePort: outPort,
|
|
102
|
+
suspendForMs: sleepForMs,
|
|
103
|
+
});
|
|
104
|
+
}
|
|
105
|
+
}
|
|
@@ -6,6 +6,12 @@ export interface RunProps {
|
|
|
6
6
|
workflowId: ObjectID;
|
|
7
7
|
workflowLogId: ObjectID | null;
|
|
8
8
|
timeout: number;
|
|
9
|
+
/**
|
|
10
|
+
* True when this run is resuming a previously-suspended workflow (e.g. after
|
|
11
|
+
* a Sleep step). The runner rehydrates execution state from the WorkflowLog's
|
|
12
|
+
* `resumeData` instead of starting from the trigger.
|
|
13
|
+
*/
|
|
14
|
+
isResume?: boolean;
|
|
9
15
|
/**
|
|
10
16
|
* Chain of ancestor workflow IDs that led to this run, oldest first.
|
|
11
17
|
* Empty / undefined for top-level runs. Used by the Execute Workflow
|
|
@@ -6,10 +6,16 @@ import ServiceModel from "../../../Models/DatabaseModels/Service";
|
|
|
6
6
|
import HostModel from "../../../Models/DatabaseModels/Host";
|
|
7
7
|
import DockerHostModel from "../../../Models/DatabaseModels/DockerHost";
|
|
8
8
|
import KubernetesClusterModel from "../../../Models/DatabaseModels/KubernetesCluster";
|
|
9
|
+
import ServerlessFunctionModel from "../../../Models/DatabaseModels/ServerlessFunction";
|
|
10
|
+
import CloudResourceModel from "../../../Models/DatabaseModels/CloudResource";
|
|
11
|
+
import RumApplicationModel from "../../../Models/DatabaseModels/RumApplication";
|
|
9
12
|
import ServiceService from "../../Services/ServiceService";
|
|
10
13
|
import HostService from "../../Services/HostService";
|
|
11
14
|
import DockerHostService from "../../Services/DockerHostService";
|
|
12
15
|
import KubernetesClusterService from "../../Services/KubernetesClusterService";
|
|
16
|
+
import ServerlessFunctionService from "../../Services/ServerlessFunctionService";
|
|
17
|
+
import CloudResourceService from "../../Services/CloudResourceService";
|
|
18
|
+
import RumApplicationService from "../../Services/RumApplicationService";
|
|
13
19
|
import CaptureSpan from "./CaptureSpan";
|
|
14
20
|
|
|
15
21
|
/*
|
|
@@ -25,6 +31,9 @@ export const RESOURCE_FACET_KEYS: ReadonlySet<string> = new Set([
|
|
|
25
31
|
"hostId",
|
|
26
32
|
"dockerHostId",
|
|
27
33
|
"kubernetesClusterId",
|
|
34
|
+
"serverlessFunctionId",
|
|
35
|
+
"cloudResourceId",
|
|
36
|
+
"rumApplicationId",
|
|
28
37
|
]);
|
|
29
38
|
|
|
30
39
|
export interface ResourceFacetSpec {
|
|
@@ -111,6 +120,27 @@ export default class ResourceFacetResolver {
|
|
|
111
120
|
searchText,
|
|
112
121
|
limit,
|
|
113
122
|
);
|
|
123
|
+
case "serverlessFunctionId":
|
|
124
|
+
return ResourceFacetResolver.queryServerlessFunctions(
|
|
125
|
+
projectId,
|
|
126
|
+
spec.counts,
|
|
127
|
+
searchText,
|
|
128
|
+
limit,
|
|
129
|
+
);
|
|
130
|
+
case "cloudResourceId":
|
|
131
|
+
return ResourceFacetResolver.queryCloudResources(
|
|
132
|
+
projectId,
|
|
133
|
+
spec.counts,
|
|
134
|
+
searchText,
|
|
135
|
+
limit,
|
|
136
|
+
);
|
|
137
|
+
case "rumApplicationId":
|
|
138
|
+
return ResourceFacetResolver.queryRumApplications(
|
|
139
|
+
projectId,
|
|
140
|
+
spec.counts,
|
|
141
|
+
searchText,
|
|
142
|
+
limit,
|
|
143
|
+
);
|
|
114
144
|
default:
|
|
115
145
|
return [];
|
|
116
146
|
}
|
|
@@ -265,6 +295,126 @@ export default class ResourceFacetResolver {
|
|
|
265
295
|
);
|
|
266
296
|
}
|
|
267
297
|
|
|
298
|
+
private static async queryServerlessFunctions(
|
|
299
|
+
projectId: ObjectID,
|
|
300
|
+
counts: Map<string, number>,
|
|
301
|
+
searchText: string | undefined,
|
|
302
|
+
limit: number,
|
|
303
|
+
): Promise<Array<ResolvedFacetValue>> {
|
|
304
|
+
const query: Record<string, unknown> = { projectId };
|
|
305
|
+
if (searchText) {
|
|
306
|
+
query["name"] = new MultiSearch({
|
|
307
|
+
fields: ["name", "functionIdentifier"],
|
|
308
|
+
value: searchText,
|
|
309
|
+
});
|
|
310
|
+
}
|
|
311
|
+
|
|
312
|
+
const functions: Array<ServerlessFunctionModel> =
|
|
313
|
+
await ServerlessFunctionService.findBy({
|
|
314
|
+
query: query as any,
|
|
315
|
+
select: {
|
|
316
|
+
_id: true,
|
|
317
|
+
name: true,
|
|
318
|
+
functionIdentifier: true,
|
|
319
|
+
},
|
|
320
|
+
limit: new PositiveNumber(limit),
|
|
321
|
+
skip: new PositiveNumber(0),
|
|
322
|
+
props: { isRoot: true },
|
|
323
|
+
});
|
|
324
|
+
|
|
325
|
+
return ResourceFacetResolver.mergeCounts(
|
|
326
|
+
functions.map(
|
|
327
|
+
(f: ServerlessFunctionModel): { id: string; displayName: string } => {
|
|
328
|
+
return {
|
|
329
|
+
id: f._id ? f._id.toString() : "",
|
|
330
|
+
displayName: f.name || f.functionIdentifier || "Unknown",
|
|
331
|
+
};
|
|
332
|
+
},
|
|
333
|
+
),
|
|
334
|
+
counts,
|
|
335
|
+
);
|
|
336
|
+
}
|
|
337
|
+
|
|
338
|
+
private static async queryCloudResources(
|
|
339
|
+
projectId: ObjectID,
|
|
340
|
+
counts: Map<string, number>,
|
|
341
|
+
searchText: string | undefined,
|
|
342
|
+
limit: number,
|
|
343
|
+
): Promise<Array<ResolvedFacetValue>> {
|
|
344
|
+
const query: Record<string, unknown> = { projectId };
|
|
345
|
+
if (searchText) {
|
|
346
|
+
query["name"] = new MultiSearch({
|
|
347
|
+
fields: ["name", "resourceIdentifier"],
|
|
348
|
+
value: searchText,
|
|
349
|
+
});
|
|
350
|
+
}
|
|
351
|
+
|
|
352
|
+
const resources: Array<CloudResourceModel> =
|
|
353
|
+
await CloudResourceService.findBy({
|
|
354
|
+
query: query as any,
|
|
355
|
+
select: {
|
|
356
|
+
_id: true,
|
|
357
|
+
name: true,
|
|
358
|
+
resourceIdentifier: true,
|
|
359
|
+
},
|
|
360
|
+
limit: new PositiveNumber(limit),
|
|
361
|
+
skip: new PositiveNumber(0),
|
|
362
|
+
props: { isRoot: true },
|
|
363
|
+
});
|
|
364
|
+
|
|
365
|
+
return ResourceFacetResolver.mergeCounts(
|
|
366
|
+
resources.map(
|
|
367
|
+
(r: CloudResourceModel): { id: string; displayName: string } => {
|
|
368
|
+
return {
|
|
369
|
+
id: r._id ? r._id.toString() : "",
|
|
370
|
+
displayName: r.name || r.resourceIdentifier || "Unknown",
|
|
371
|
+
};
|
|
372
|
+
},
|
|
373
|
+
),
|
|
374
|
+
counts,
|
|
375
|
+
);
|
|
376
|
+
}
|
|
377
|
+
|
|
378
|
+
private static async queryRumApplications(
|
|
379
|
+
projectId: ObjectID,
|
|
380
|
+
counts: Map<string, number>,
|
|
381
|
+
searchText: string | undefined,
|
|
382
|
+
limit: number,
|
|
383
|
+
): Promise<Array<ResolvedFacetValue>> {
|
|
384
|
+
const query: Record<string, unknown> = { projectId };
|
|
385
|
+
if (searchText) {
|
|
386
|
+
query["name"] = new MultiSearch({
|
|
387
|
+
fields: ["name", "appIdentifier"],
|
|
388
|
+
value: searchText,
|
|
389
|
+
});
|
|
390
|
+
}
|
|
391
|
+
|
|
392
|
+
const apps: Array<RumApplicationModel> =
|
|
393
|
+
await RumApplicationService.findBy({
|
|
394
|
+
query: query as any,
|
|
395
|
+
select: {
|
|
396
|
+
_id: true,
|
|
397
|
+
name: true,
|
|
398
|
+
appIdentifier: true,
|
|
399
|
+
},
|
|
400
|
+
limit: new PositiveNumber(limit),
|
|
401
|
+
skip: new PositiveNumber(0),
|
|
402
|
+
props: { isRoot: true },
|
|
403
|
+
});
|
|
404
|
+
|
|
405
|
+
return ResourceFacetResolver.mergeCounts(
|
|
406
|
+
apps.map(
|
|
407
|
+
(a: RumApplicationModel): { id: string; displayName: string } => {
|
|
408
|
+
return {
|
|
409
|
+
id: a._id ? a._id.toString() : "",
|
|
410
|
+
displayName: a.name || a.appIdentifier || "Unknown",
|
|
411
|
+
};
|
|
412
|
+
},
|
|
413
|
+
),
|
|
414
|
+
counts,
|
|
415
|
+
);
|
|
416
|
+
}
|
|
417
|
+
|
|
268
418
|
/*
|
|
269
419
|
* Combine Postgres-sourced entities with counts from the ClickHouse sample.
|
|
270
420
|
* Entities without a count default to 0 (they exist in the project but
|