mirror of
https://github.com/SigNoz/signoz.git
synced 2026-05-28 21:00:32 +01:00
Some checks failed
build-staging / prepare (push) Has been cancelled
Release Drafter / update_release_draft (push) Has been cancelled
build-staging / go-build (push) Has been cancelled
build-staging / staging (push) Has been cancelled
build-staging / js-build (push) Has been cancelled
* chore: added migration setup * feat(sqlmigration): add integration_dashboards table (migration 079) Adds the `integration_dashboards` relations table that stores the integration-specific identity for dashboards provisioned from cloud or builtin integrations. Columns: id, org_id, dashboard_id, provider, slug, created_at, updated_at. Includes a unique index on dashboard_id. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com> * feat(sqlmigration): backfill cloud integration dashboards to DB (migration 080) One-time idempotent migration that provisions dashboard rows for all orgs with existing cloud integration services where metrics are enabled. Each dashboard is inserted into the `dashboard` table with source="integration" and locked=true, and a companion row is added to `integration_dashboards` with provider="cloud_integrations" and slug="{provider}-{service}-{dashboard}" (e.g. aws-alb-overview). Idempotency is enforced by checking (org_id, provider, slug) on integration_dashboards before each insert. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com> * chore(sqlmigration): clean up stale 079 artifacts, add 079 schema migration Remove the pre-rename 079_migrate_cloud_integration_dashboards.go and 079_cloud_integration_dashboards/ directory that were left behind when the backfill migration was renumbered to 080. Add the missing 079_add_integration_dashboards.go (schema-only migration creating the integration_dashboards table) which provider.go already references. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com> * chore: adding comment for fk * refactor: renaming table name * refactor: rename and restructure cloud integration dashboard migration types * chore: file rename * refactor: dashboard creation and listing flow change * refactor: removing loose strings * refactor: adding DeleteBySource on dashboard module * refactor: review changes and update service flow change * refactor: simplify comments * ci: lint staticcheck fix * refactor: renaming migration and adding integration tests * ci: py fmt lint fixes * feat: adding ListSharedServices store method * ci: golangci-lint fix * refactor: code cleanup * chore: revert changed due to js lint * refactor: test assertion changes * refactor: using bindparam for sql generation * chore: migrate integration dashboards json to v5 (#11419) --------- Co-authored-by: Claude Sonnet 4.6 <noreply@anthropic.com> Co-authored-by: Srikanth Chekuri <srikanth.chekuri92@gmail.com>
102 lines
3.2 KiB
Go
102 lines
3.2 KiB
Go
package implcloudprovider
|
|
|
|
import (
|
|
"context"
|
|
"sort"
|
|
|
|
"github.com/SigNoz/signoz/pkg/modules/cloudintegration"
|
|
"github.com/SigNoz/signoz/pkg/types/cloudintegrationtypes"
|
|
)
|
|
|
|
type azurecloudprovider struct {
|
|
serviceDefinitions cloudintegrationtypes.ServiceDefinitionStore
|
|
}
|
|
|
|
func NewAzureCloudProvider(defStore cloudintegrationtypes.ServiceDefinitionStore) cloudintegration.CloudProviderModule {
|
|
return &azurecloudprovider{
|
|
serviceDefinitions: defStore,
|
|
}
|
|
}
|
|
|
|
func (provider *azurecloudprovider) GetConnectionArtifact(ctx context.Context, account *cloudintegrationtypes.Account, req *cloudintegrationtypes.GetConnectionArtifactRequest) (*cloudintegrationtypes.ConnectionArtifact, error) {
|
|
connectionArtifact, err := cloudintegrationtypes.NewAzureConnectionArtifact(account.ID, req.Config.AgentVersion, req.Credentials, req.Config.Azure)
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
return &cloudintegrationtypes.ConnectionArtifact{
|
|
Azure: connectionArtifact,
|
|
}, nil
|
|
}
|
|
|
|
func (provider *azurecloudprovider) ListServiceDefinitions(ctx context.Context) ([]*cloudintegrationtypes.ServiceDefinition, error) {
|
|
return provider.serviceDefinitions.List(ctx, cloudintegrationtypes.CloudProviderTypeAzure)
|
|
}
|
|
|
|
func (provider *azurecloudprovider) GetServiceDefinition(ctx context.Context, serviceID cloudintegrationtypes.ServiceID) (*cloudintegrationtypes.ServiceDefinition, error) {
|
|
serviceDef, err := provider.serviceDefinitions.Get(ctx, cloudintegrationtypes.CloudProviderTypeAzure, serviceID)
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
|
|
return serviceDef, nil
|
|
}
|
|
|
|
func (provider *azurecloudprovider) BuildIntegrationConfig(
|
|
ctx context.Context,
|
|
account *cloudintegrationtypes.Account,
|
|
services []*cloudintegrationtypes.StorableCloudIntegrationService,
|
|
) (*cloudintegrationtypes.ProviderIntegrationConfig, error) {
|
|
sort.Slice(services, func(i, j int) bool {
|
|
return services[i].Type.StringValue() < services[j].Type.StringValue()
|
|
})
|
|
|
|
var strategies []*cloudintegrationtypes.AzureTelemetryCollectionStrategy
|
|
|
|
for _, storedSvc := range services {
|
|
svcCfg, err := cloudintegrationtypes.NewServiceConfigFromJSON(cloudintegrationtypes.CloudProviderTypeAzure, storedSvc.Config)
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
|
|
svcDef, err := provider.GetServiceDefinition(ctx, storedSvc.Type)
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
|
|
strategy := svcDef.TelemetryCollectionStrategy.Azure
|
|
if strategy == nil {
|
|
continue
|
|
}
|
|
|
|
logsEnabled := svcCfg.IsLogsEnabled(cloudintegrationtypes.CloudProviderTypeAzure)
|
|
metricsEnabled := svcCfg.IsMetricsEnabled(cloudintegrationtypes.CloudProviderTypeAzure)
|
|
|
|
if !logsEnabled && !metricsEnabled {
|
|
continue
|
|
}
|
|
|
|
entry := &cloudintegrationtypes.AzureTelemetryCollectionStrategy{
|
|
ResourceProvider: strategy.ResourceProvider,
|
|
ResourceType: strategy.ResourceType,
|
|
}
|
|
|
|
if metricsEnabled && strategy.Metrics != nil {
|
|
entry.Metrics = strategy.Metrics
|
|
}
|
|
|
|
if logsEnabled && strategy.Logs != nil {
|
|
entry.Logs = strategy.Logs
|
|
}
|
|
|
|
strategies = append(strategies, entry)
|
|
}
|
|
|
|
return &cloudintegrationtypes.ProviderIntegrationConfig{
|
|
Azure: cloudintegrationtypes.NewAzureIntegrationConfig(
|
|
account.Config.Azure.DeploymentRegion,
|
|
account.Config.Azure.ResourceGroups,
|
|
strategies,
|
|
),
|
|
}, nil
|
|
}
|