mirror of
https://git.mirrors.martin98.com/https://github.com/SigNoz/signoz
synced 2025-08-13 05:49:03 +08:00
chore(ff): remove some more unused ffs (#7532)
### Summary remove unused feature flags - ENTERPRISE_PLAN = 'ENTERPRISE_PLAN', - BASIC_PLAN = 'BASIC_PLAN', - ALERT_CHANNEL_SLACK = 'ALERT_CHANNEL_SLACK', - ALERT_CHANNEL_WEBHOOK = 'ALERT_CHANNEL_WEBHOOK', - ALERT_CHANNEL_PAGERDUTY = 'ALERT_CHANNEL_PAGERDUTY', - ALERT_CHANNEL_OPSGENIE = 'ALERT_CHANNEL_OPSGENIE', - ALERT_CHANNEL_MSTEAMS = 'ALERT_CHANNEL_MSTEAMS', - CUSTOM_METRICS_FUNCTION = 'CUSTOM_METRICS_FUNCTION', - QUERY_BUILDER_PANELS = 'QUERY_BUILDER_PANELS', - QUERY_BUILDER_ALERTS = 'QUERY_BUILDER_ALERTS', - DISABLE_UPSELL = 'DISABLE_UPSELL', - OSS = 'OSS', - QUERY_BUILDER_SEARCH_V2 = 'QUERY_BUILDER_SEARCH_V2', - AWS_INTEGRATION = 'AWS_INTEGRATION', remove ProPlan concept
This commit is contained in:
parent
58e141685a
commit
3142b6cc6d
@ -157,8 +157,6 @@ func NewLicenseV3(data map[string]interface{}) (*LicenseV3, error) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
switch planName {
|
switch planName {
|
||||||
case PlanNameTeams:
|
|
||||||
features = append(features, ProPlan...)
|
|
||||||
case PlanNameEnterprise:
|
case PlanNameEnterprise:
|
||||||
features = append(features, EnterprisePlan...)
|
features = append(features, EnterprisePlan...)
|
||||||
case PlanNameBasic:
|
case PlanNameBasic:
|
||||||
|
@ -74,21 +74,21 @@ func TestNewLicenseV3(t *testing.T) {
|
|||||||
},
|
},
|
||||||
{
|
{
|
||||||
name: "Parse the entire license properly",
|
name: "Parse the entire license properly",
|
||||||
data: []byte(`{"id":"does-not-matter","key":"does-not-matter-key","category":"FREE","status":"ACTIVE","plan":{"name":"TEAMS"},"valid_from": 1730899309,"valid_until": -1}`),
|
data: []byte(`{"id":"does-not-matter","key":"does-not-matter-key","category":"FREE","status":"ACTIVE","plan":{"name":"ENTERPRISE"},"valid_from": 1730899309,"valid_until": -1}`),
|
||||||
pass: true,
|
pass: true,
|
||||||
expected: &LicenseV3{
|
expected: &LicenseV3{
|
||||||
ID: "does-not-matter",
|
ID: "does-not-matter",
|
||||||
Key: "does-not-matter-key",
|
Key: "does-not-matter-key",
|
||||||
Data: map[string]interface{}{
|
Data: map[string]interface{}{
|
||||||
"plan": map[string]interface{}{
|
"plan": map[string]interface{}{
|
||||||
"name": "TEAMS",
|
"name": "ENTERPRISE",
|
||||||
},
|
},
|
||||||
"category": "FREE",
|
"category": "FREE",
|
||||||
"status": "ACTIVE",
|
"status": "ACTIVE",
|
||||||
"valid_from": float64(1730899309),
|
"valid_from": float64(1730899309),
|
||||||
"valid_until": float64(-1),
|
"valid_until": float64(-1),
|
||||||
},
|
},
|
||||||
PlanName: PlanNameTeams,
|
PlanName: PlanNameEnterprise,
|
||||||
ValidFrom: 1730899309,
|
ValidFrom: 1730899309,
|
||||||
ValidUntil: -1,
|
ValidUntil: -1,
|
||||||
Status: "ACTIVE",
|
Status: "ACTIVE",
|
||||||
@ -98,14 +98,14 @@ func TestNewLicenseV3(t *testing.T) {
|
|||||||
},
|
},
|
||||||
{
|
{
|
||||||
name: "Fallback to basic plan if license status is invalid",
|
name: "Fallback to basic plan if license status is invalid",
|
||||||
data: []byte(`{"id":"does-not-matter","key":"does-not-matter-key","category":"FREE","status":"INVALID","plan":{"name":"TEAMS"},"valid_from": 1730899309,"valid_until": -1}`),
|
data: []byte(`{"id":"does-not-matter","key":"does-not-matter-key","category":"FREE","status":"INVALID","plan":{"name":"ENTERPRISE"},"valid_from": 1730899309,"valid_until": -1}`),
|
||||||
pass: true,
|
pass: true,
|
||||||
expected: &LicenseV3{
|
expected: &LicenseV3{
|
||||||
ID: "does-not-matter",
|
ID: "does-not-matter",
|
||||||
Key: "does-not-matter-key",
|
Key: "does-not-matter-key",
|
||||||
Data: map[string]interface{}{
|
Data: map[string]interface{}{
|
||||||
"plan": map[string]interface{}{
|
"plan": map[string]interface{}{
|
||||||
"name": "TEAMS",
|
"name": "ENTERPRISE",
|
||||||
},
|
},
|
||||||
"category": "FREE",
|
"category": "FREE",
|
||||||
"status": "INVALID",
|
"status": "INVALID",
|
||||||
@ -122,21 +122,21 @@ func TestNewLicenseV3(t *testing.T) {
|
|||||||
},
|
},
|
||||||
{
|
{
|
||||||
name: "fallback states for validFrom and validUntil",
|
name: "fallback states for validFrom and validUntil",
|
||||||
data: []byte(`{"id":"does-not-matter","key":"does-not-matter-key","category":"FREE","status":"ACTIVE","plan":{"name":"TEAMS"},"valid_from":1234.456,"valid_until":5678.567}`),
|
data: []byte(`{"id":"does-not-matter","key":"does-not-matter-key","category":"FREE","status":"ACTIVE","plan":{"name":"ENTERPRISE"},"valid_from":1234.456,"valid_until":5678.567}`),
|
||||||
pass: true,
|
pass: true,
|
||||||
expected: &LicenseV3{
|
expected: &LicenseV3{
|
||||||
ID: "does-not-matter",
|
ID: "does-not-matter",
|
||||||
Key: "does-not-matter-key",
|
Key: "does-not-matter-key",
|
||||||
Data: map[string]interface{}{
|
Data: map[string]interface{}{
|
||||||
"plan": map[string]interface{}{
|
"plan": map[string]interface{}{
|
||||||
"name": "TEAMS",
|
"name": "ENTERPRISE",
|
||||||
},
|
},
|
||||||
"valid_from": 1234.456,
|
"valid_from": 1234.456,
|
||||||
"valid_until": 5678.567,
|
"valid_until": 5678.567,
|
||||||
"category": "FREE",
|
"category": "FREE",
|
||||||
"status": "ACTIVE",
|
"status": "ACTIVE",
|
||||||
},
|
},
|
||||||
PlanName: PlanNameTeams,
|
PlanName: PlanNameEnterprise,
|
||||||
ValidFrom: 1234,
|
ValidFrom: 1234,
|
||||||
ValidUntil: 5678,
|
ValidUntil: 5678,
|
||||||
Status: "ACTIVE",
|
Status: "ACTIVE",
|
||||||
|
@ -1,30 +1,26 @@
|
|||||||
package model
|
package model
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"github.com/SigNoz/signoz/pkg/query-service/constants"
|
|
||||||
basemodel "github.com/SigNoz/signoz/pkg/query-service/model"
|
basemodel "github.com/SigNoz/signoz/pkg/query-service/model"
|
||||||
)
|
)
|
||||||
|
|
||||||
const SSO = "SSO"
|
const SSO = "SSO"
|
||||||
const Basic = "BASIC_PLAN"
|
const Basic = "BASIC_PLAN"
|
||||||
const Pro = "PRO_PLAN"
|
|
||||||
const Enterprise = "ENTERPRISE_PLAN"
|
const Enterprise = "ENTERPRISE_PLAN"
|
||||||
|
|
||||||
var (
|
var (
|
||||||
PlanNameEnterprise = "ENTERPRISE"
|
PlanNameEnterprise = "ENTERPRISE"
|
||||||
PlanNameTeams = "TEAMS"
|
|
||||||
PlanNameBasic = "BASIC"
|
PlanNameBasic = "BASIC"
|
||||||
)
|
)
|
||||||
|
|
||||||
var (
|
var (
|
||||||
MapOldPlanKeyToNewPlanName map[string]string = map[string]string{PlanNameBasic: Basic, PlanNameTeams: Pro, PlanNameEnterprise: Enterprise}
|
MapOldPlanKeyToNewPlanName map[string]string = map[string]string{PlanNameBasic: Basic, PlanNameEnterprise: Enterprise}
|
||||||
)
|
)
|
||||||
|
|
||||||
var (
|
var (
|
||||||
LicenseStatusInvalid = "INVALID"
|
LicenseStatusInvalid = "INVALID"
|
||||||
)
|
)
|
||||||
|
|
||||||
const DisableUpsell = "DISABLE_UPSELL"
|
|
||||||
const Onboarding = "ONBOARDING"
|
const Onboarding = "ONBOARDING"
|
||||||
const ChatSupport = "CHAT_SUPPORT"
|
const ChatSupport = "CHAT_SUPPORT"
|
||||||
const Gateway = "GATEWAY"
|
const Gateway = "GATEWAY"
|
||||||
@ -38,83 +34,6 @@ var BasicPlan = basemodel.FeatureSet{
|
|||||||
UsageLimit: -1,
|
UsageLimit: -1,
|
||||||
Route: "",
|
Route: "",
|
||||||
},
|
},
|
||||||
basemodel.Feature{
|
|
||||||
Name: basemodel.OSS,
|
|
||||||
Active: false,
|
|
||||||
Usage: 0,
|
|
||||||
UsageLimit: -1,
|
|
||||||
Route: "",
|
|
||||||
},
|
|
||||||
basemodel.Feature{
|
|
||||||
Name: DisableUpsell,
|
|
||||||
Active: false,
|
|
||||||
Usage: 0,
|
|
||||||
UsageLimit: -1,
|
|
||||||
Route: "",
|
|
||||||
},
|
|
||||||
basemodel.Feature{
|
|
||||||
Name: basemodel.CustomMetricsFunction,
|
|
||||||
Active: false,
|
|
||||||
Usage: 0,
|
|
||||||
UsageLimit: -1,
|
|
||||||
Route: "",
|
|
||||||
},
|
|
||||||
basemodel.Feature{
|
|
||||||
Name: basemodel.QueryBuilderPanels,
|
|
||||||
Active: true,
|
|
||||||
Usage: 0,
|
|
||||||
UsageLimit: -1,
|
|
||||||
Route: "",
|
|
||||||
},
|
|
||||||
basemodel.Feature{
|
|
||||||
Name: basemodel.QueryBuilderAlerts,
|
|
||||||
Active: true,
|
|
||||||
Usage: 0,
|
|
||||||
UsageLimit: -1,
|
|
||||||
Route: "",
|
|
||||||
},
|
|
||||||
basemodel.Feature{
|
|
||||||
Name: basemodel.AlertChannelSlack,
|
|
||||||
Active: true,
|
|
||||||
Usage: 0,
|
|
||||||
UsageLimit: -1,
|
|
||||||
Route: "",
|
|
||||||
},
|
|
||||||
basemodel.Feature{
|
|
||||||
Name: basemodel.AlertChannelWebhook,
|
|
||||||
Active: true,
|
|
||||||
Usage: 0,
|
|
||||||
UsageLimit: -1,
|
|
||||||
Route: "",
|
|
||||||
},
|
|
||||||
basemodel.Feature{
|
|
||||||
Name: basemodel.AlertChannelPagerduty,
|
|
||||||
Active: true,
|
|
||||||
Usage: 0,
|
|
||||||
UsageLimit: -1,
|
|
||||||
Route: "",
|
|
||||||
},
|
|
||||||
basemodel.Feature{
|
|
||||||
Name: basemodel.AlertChannelOpsgenie,
|
|
||||||
Active: true,
|
|
||||||
Usage: 0,
|
|
||||||
UsageLimit: -1,
|
|
||||||
Route: "",
|
|
||||||
},
|
|
||||||
basemodel.Feature{
|
|
||||||
Name: basemodel.AlertChannelEmail,
|
|
||||||
Active: true,
|
|
||||||
Usage: 0,
|
|
||||||
UsageLimit: -1,
|
|
||||||
Route: "",
|
|
||||||
},
|
|
||||||
basemodel.Feature{
|
|
||||||
Name: basemodel.AlertChannelMsTeams,
|
|
||||||
Active: false,
|
|
||||||
Usage: 0,
|
|
||||||
UsageLimit: -1,
|
|
||||||
Route: "",
|
|
||||||
},
|
|
||||||
basemodel.Feature{
|
basemodel.Feature{
|
||||||
Name: basemodel.UseSpanMetrics,
|
Name: basemodel.UseSpanMetrics,
|
||||||
Active: false,
|
Active: false,
|
||||||
@ -143,135 +62,6 @@ var BasicPlan = basemodel.FeatureSet{
|
|||||||
UsageLimit: -1,
|
UsageLimit: -1,
|
||||||
Route: "",
|
Route: "",
|
||||||
},
|
},
|
||||||
basemodel.Feature{
|
|
||||||
Name: basemodel.HostsInfraMonitoring,
|
|
||||||
Active: constants.EnableHostsInfraMonitoring(),
|
|
||||||
Usage: 0,
|
|
||||||
UsageLimit: -1,
|
|
||||||
Route: "",
|
|
||||||
},
|
|
||||||
basemodel.Feature{
|
|
||||||
Name: basemodel.TraceFunnels,
|
|
||||||
Active: false,
|
|
||||||
Usage: 0,
|
|
||||||
UsageLimit: -1,
|
|
||||||
Route: "",
|
|
||||||
},
|
|
||||||
}
|
|
||||||
|
|
||||||
var ProPlan = basemodel.FeatureSet{
|
|
||||||
basemodel.Feature{
|
|
||||||
Name: SSO,
|
|
||||||
Active: true,
|
|
||||||
Usage: 0,
|
|
||||||
UsageLimit: -1,
|
|
||||||
Route: "",
|
|
||||||
},
|
|
||||||
basemodel.Feature{
|
|
||||||
Name: basemodel.OSS,
|
|
||||||
Active: false,
|
|
||||||
Usage: 0,
|
|
||||||
UsageLimit: -1,
|
|
||||||
Route: "",
|
|
||||||
},
|
|
||||||
basemodel.Feature{
|
|
||||||
Name: basemodel.CustomMetricsFunction,
|
|
||||||
Active: true,
|
|
||||||
Usage: 0,
|
|
||||||
UsageLimit: -1,
|
|
||||||
Route: "",
|
|
||||||
},
|
|
||||||
basemodel.Feature{
|
|
||||||
Name: basemodel.QueryBuilderPanels,
|
|
||||||
Active: true,
|
|
||||||
Usage: 0,
|
|
||||||
UsageLimit: -1,
|
|
||||||
Route: "",
|
|
||||||
},
|
|
||||||
basemodel.Feature{
|
|
||||||
Name: basemodel.QueryBuilderAlerts,
|
|
||||||
Active: true,
|
|
||||||
Usage: 0,
|
|
||||||
UsageLimit: -1,
|
|
||||||
Route: "",
|
|
||||||
},
|
|
||||||
basemodel.Feature{
|
|
||||||
Name: basemodel.AlertChannelSlack,
|
|
||||||
Active: true,
|
|
||||||
Usage: 0,
|
|
||||||
UsageLimit: -1,
|
|
||||||
Route: "",
|
|
||||||
},
|
|
||||||
basemodel.Feature{
|
|
||||||
Name: basemodel.AlertChannelWebhook,
|
|
||||||
Active: true,
|
|
||||||
Usage: 0,
|
|
||||||
UsageLimit: -1,
|
|
||||||
Route: "",
|
|
||||||
},
|
|
||||||
basemodel.Feature{
|
|
||||||
Name: basemodel.AlertChannelPagerduty,
|
|
||||||
Active: true,
|
|
||||||
Usage: 0,
|
|
||||||
UsageLimit: -1,
|
|
||||||
Route: "",
|
|
||||||
},
|
|
||||||
basemodel.Feature{
|
|
||||||
Name: basemodel.AlertChannelOpsgenie,
|
|
||||||
Active: true,
|
|
||||||
Usage: 0,
|
|
||||||
UsageLimit: -1,
|
|
||||||
Route: "",
|
|
||||||
},
|
|
||||||
basemodel.Feature{
|
|
||||||
Name: basemodel.AlertChannelEmail,
|
|
||||||
Active: true,
|
|
||||||
Usage: 0,
|
|
||||||
UsageLimit: -1,
|
|
||||||
Route: "",
|
|
||||||
},
|
|
||||||
basemodel.Feature{
|
|
||||||
Name: basemodel.AlertChannelMsTeams,
|
|
||||||
Active: true,
|
|
||||||
Usage: 0,
|
|
||||||
UsageLimit: -1,
|
|
||||||
Route: "",
|
|
||||||
},
|
|
||||||
basemodel.Feature{
|
|
||||||
Name: basemodel.UseSpanMetrics,
|
|
||||||
Active: false,
|
|
||||||
Usage: 0,
|
|
||||||
UsageLimit: -1,
|
|
||||||
Route: "",
|
|
||||||
},
|
|
||||||
basemodel.Feature{
|
|
||||||
Name: Gateway,
|
|
||||||
Active: true,
|
|
||||||
Usage: 0,
|
|
||||||
UsageLimit: -1,
|
|
||||||
Route: "",
|
|
||||||
},
|
|
||||||
basemodel.Feature{
|
|
||||||
Name: PremiumSupport,
|
|
||||||
Active: true,
|
|
||||||
Usage: 0,
|
|
||||||
UsageLimit: -1,
|
|
||||||
Route: "",
|
|
||||||
},
|
|
||||||
basemodel.Feature{
|
|
||||||
Name: basemodel.AnomalyDetection,
|
|
||||||
Active: true,
|
|
||||||
Usage: 0,
|
|
||||||
UsageLimit: -1,
|
|
||||||
Route: "",
|
|
||||||
},
|
|
||||||
basemodel.Feature{
|
|
||||||
Name: basemodel.HostsInfraMonitoring,
|
|
||||||
Active: constants.EnableHostsInfraMonitoring(),
|
|
||||||
Usage: 0,
|
|
||||||
UsageLimit: -1,
|
|
||||||
Route: "",
|
|
||||||
},
|
|
||||||
basemodel.Feature{
|
basemodel.Feature{
|
||||||
Name: basemodel.TraceFunnels,
|
Name: basemodel.TraceFunnels,
|
||||||
Active: false,
|
Active: false,
|
||||||
@ -289,76 +79,6 @@ var EnterprisePlan = basemodel.FeatureSet{
|
|||||||
UsageLimit: -1,
|
UsageLimit: -1,
|
||||||
Route: "",
|
Route: "",
|
||||||
},
|
},
|
||||||
basemodel.Feature{
|
|
||||||
Name: basemodel.OSS,
|
|
||||||
Active: false,
|
|
||||||
Usage: 0,
|
|
||||||
UsageLimit: -1,
|
|
||||||
Route: "",
|
|
||||||
},
|
|
||||||
basemodel.Feature{
|
|
||||||
Name: basemodel.CustomMetricsFunction,
|
|
||||||
Active: true,
|
|
||||||
Usage: 0,
|
|
||||||
UsageLimit: -1,
|
|
||||||
Route: "",
|
|
||||||
},
|
|
||||||
basemodel.Feature{
|
|
||||||
Name: basemodel.QueryBuilderPanels,
|
|
||||||
Active: true,
|
|
||||||
Usage: 0,
|
|
||||||
UsageLimit: -1,
|
|
||||||
Route: "",
|
|
||||||
},
|
|
||||||
basemodel.Feature{
|
|
||||||
Name: basemodel.QueryBuilderAlerts,
|
|
||||||
Active: true,
|
|
||||||
Usage: 0,
|
|
||||||
UsageLimit: -1,
|
|
||||||
Route: "",
|
|
||||||
},
|
|
||||||
basemodel.Feature{
|
|
||||||
Name: basemodel.AlertChannelSlack,
|
|
||||||
Active: true,
|
|
||||||
Usage: 0,
|
|
||||||
UsageLimit: -1,
|
|
||||||
Route: "",
|
|
||||||
},
|
|
||||||
basemodel.Feature{
|
|
||||||
Name: basemodel.AlertChannelWebhook,
|
|
||||||
Active: true,
|
|
||||||
Usage: 0,
|
|
||||||
UsageLimit: -1,
|
|
||||||
Route: "",
|
|
||||||
},
|
|
||||||
basemodel.Feature{
|
|
||||||
Name: basemodel.AlertChannelPagerduty,
|
|
||||||
Active: true,
|
|
||||||
Usage: 0,
|
|
||||||
UsageLimit: -1,
|
|
||||||
Route: "",
|
|
||||||
},
|
|
||||||
basemodel.Feature{
|
|
||||||
Name: basemodel.AlertChannelOpsgenie,
|
|
||||||
Active: true,
|
|
||||||
Usage: 0,
|
|
||||||
UsageLimit: -1,
|
|
||||||
Route: "",
|
|
||||||
},
|
|
||||||
basemodel.Feature{
|
|
||||||
Name: basemodel.AlertChannelEmail,
|
|
||||||
Active: true,
|
|
||||||
Usage: 0,
|
|
||||||
UsageLimit: -1,
|
|
||||||
Route: "",
|
|
||||||
},
|
|
||||||
basemodel.Feature{
|
|
||||||
Name: basemodel.AlertChannelMsTeams,
|
|
||||||
Active: true,
|
|
||||||
Usage: 0,
|
|
||||||
UsageLimit: -1,
|
|
||||||
Route: "",
|
|
||||||
},
|
|
||||||
basemodel.Feature{
|
basemodel.Feature{
|
||||||
Name: basemodel.UseSpanMetrics,
|
Name: basemodel.UseSpanMetrics,
|
||||||
Active: false,
|
Active: false,
|
||||||
@ -401,13 +121,6 @@ var EnterprisePlan = basemodel.FeatureSet{
|
|||||||
UsageLimit: -1,
|
UsageLimit: -1,
|
||||||
Route: "",
|
Route: "",
|
||||||
},
|
},
|
||||||
basemodel.Feature{
|
|
||||||
Name: basemodel.HostsInfraMonitoring,
|
|
||||||
Active: constants.EnableHostsInfraMonitoring(),
|
|
||||||
Usage: 0,
|
|
||||||
UsageLimit: -1,
|
|
||||||
Route: "",
|
|
||||||
},
|
|
||||||
basemodel.Feature{
|
basemodel.Feature{
|
||||||
Name: basemodel.TraceFunnels,
|
Name: basemodel.TraceFunnels,
|
||||||
Active: false,
|
Active: false,
|
||||||
|
@ -1,26 +1,12 @@
|
|||||||
// keep this consistent with backend constants.go
|
// keep this consistent with backend constants.go
|
||||||
export enum FeatureKeys {
|
export enum FeatureKeys {
|
||||||
SSO = 'SSO',
|
SSO = 'SSO',
|
||||||
ENTERPRISE_PLAN = 'ENTERPRISE_PLAN',
|
|
||||||
BASIC_PLAN = 'BASIC_PLAN',
|
|
||||||
ALERT_CHANNEL_SLACK = 'ALERT_CHANNEL_SLACK',
|
|
||||||
ALERT_CHANNEL_WEBHOOK = 'ALERT_CHANNEL_WEBHOOK',
|
|
||||||
ALERT_CHANNEL_PAGERDUTY = 'ALERT_CHANNEL_PAGERDUTY',
|
|
||||||
ALERT_CHANNEL_OPSGENIE = 'ALERT_CHANNEL_OPSGENIE',
|
|
||||||
ALERT_CHANNEL_MSTEAMS = 'ALERT_CHANNEL_MSTEAMS',
|
|
||||||
CUSTOM_METRICS_FUNCTION = 'CUSTOM_METRICS_FUNCTION',
|
|
||||||
QUERY_BUILDER_PANELS = 'QUERY_BUILDER_PANELS',
|
|
||||||
QUERY_BUILDER_ALERTS = 'QUERY_BUILDER_ALERTS',
|
|
||||||
DISABLE_UPSELL = 'DISABLE_UPSELL',
|
|
||||||
USE_SPAN_METRICS = 'USE_SPAN_METRICS',
|
USE_SPAN_METRICS = 'USE_SPAN_METRICS',
|
||||||
OSS = 'OSS',
|
|
||||||
ONBOARDING = 'ONBOARDING',
|
ONBOARDING = 'ONBOARDING',
|
||||||
CHAT_SUPPORT = 'CHAT_SUPPORT',
|
CHAT_SUPPORT = 'CHAT_SUPPORT',
|
||||||
GATEWAY = 'GATEWAY',
|
GATEWAY = 'GATEWAY',
|
||||||
PREMIUM_SUPPORT = 'PREMIUM_SUPPORT',
|
PREMIUM_SUPPORT = 'PREMIUM_SUPPORT',
|
||||||
QUERY_BUILDER_SEARCH_V2 = 'QUERY_BUILDER_SEARCH_V2',
|
|
||||||
ANOMALY_DETECTION = 'ANOMALY_DETECTION',
|
ANOMALY_DETECTION = 'ANOMALY_DETECTION',
|
||||||
AWS_INTEGRATION = 'AWS_INTEGRATION',
|
|
||||||
ONBOARDING_V3 = 'ONBOARDING_V3',
|
ONBOARDING_V3 = 'ONBOARDING_V3',
|
||||||
THIRD_PARTY_API = 'THIRD_PARTY_API',
|
THIRD_PARTY_API = 'THIRD_PARTY_API',
|
||||||
TRACE_FUNNELS = 'TRACE_FUNNELS',
|
TRACE_FUNNELS = 'TRACE_FUNNELS',
|
||||||
|
@ -1,6 +1,5 @@
|
|||||||
import { Form, FormInstance, Input, Select, Switch, Typography } from 'antd';
|
import { Form, FormInstance, Input, Select, Switch, Typography } from 'antd';
|
||||||
import { Store } from 'antd/lib/form/interface';
|
import { Store } from 'antd/lib/form/interface';
|
||||||
import { FeatureKeys } from 'constants/features';
|
|
||||||
import ROUTES from 'constants/routes';
|
import ROUTES from 'constants/routes';
|
||||||
import {
|
import {
|
||||||
ChannelType,
|
ChannelType,
|
||||||
@ -11,11 +10,8 @@ import {
|
|||||||
WebhookChannel,
|
WebhookChannel,
|
||||||
} from 'container/CreateAlertChannels/config';
|
} from 'container/CreateAlertChannels/config';
|
||||||
import history from 'lib/history';
|
import history from 'lib/history';
|
||||||
import { useAppContext } from 'providers/App/App';
|
|
||||||
import { Dispatch, ReactElement, SetStateAction } from 'react';
|
import { Dispatch, ReactElement, SetStateAction } from 'react';
|
||||||
import { useTranslation } from 'react-i18next';
|
import { useTranslation } from 'react-i18next';
|
||||||
import { FeatureFlagProps } from 'types/api/features/getFeaturesFlags';
|
|
||||||
import { isFeatureKeys } from 'utils/app';
|
|
||||||
|
|
||||||
import EmailSettings from './Settings/Email';
|
import EmailSettings from './Settings/Email';
|
||||||
import MsTeamsSettings from './Settings/MsTeams';
|
import MsTeamsSettings from './Settings/MsTeams';
|
||||||
@ -39,17 +35,6 @@ function FormAlertChannels({
|
|||||||
editing = false,
|
editing = false,
|
||||||
}: FormAlertChannelsProps): JSX.Element {
|
}: FormAlertChannelsProps): JSX.Element {
|
||||||
const { t } = useTranslation('channels');
|
const { t } = useTranslation('channels');
|
||||||
const { featureFlags } = useAppContext();
|
|
||||||
|
|
||||||
const feature = `ALERT_CHANNEL_${type.toUpperCase()}`;
|
|
||||||
|
|
||||||
const featureKey = isFeatureKeys(feature)
|
|
||||||
? feature
|
|
||||||
: FeatureKeys.ALERT_CHANNEL_SLACK;
|
|
||||||
|
|
||||||
const hasFeature = featureFlags?.find(
|
|
||||||
(flag: FeatureFlagProps) => flag.name === featureKey,
|
|
||||||
);
|
|
||||||
|
|
||||||
const renderSettings = (): ReactElement | null => {
|
const renderSettings = (): ReactElement | null => {
|
||||||
switch (type) {
|
switch (type) {
|
||||||
@ -146,7 +131,7 @@ function FormAlertChannels({
|
|||||||
|
|
||||||
<Form.Item>
|
<Form.Item>
|
||||||
<Button
|
<Button
|
||||||
disabled={savingState || !hasFeature}
|
disabled={savingState}
|
||||||
loading={savingState}
|
loading={savingState}
|
||||||
type="primary"
|
type="primary"
|
||||||
onClick={(): void => onSaveHandler(type)}
|
onClick={(): void => onSaveHandler(type)}
|
||||||
@ -154,7 +139,7 @@ function FormAlertChannels({
|
|||||||
{t('button_save_channel')}
|
{t('button_save_channel')}
|
||||||
</Button>
|
</Button>
|
||||||
<Button
|
<Button
|
||||||
disabled={testingState || !hasFeature}
|
disabled={testingState}
|
||||||
loading={testingState}
|
loading={testingState}
|
||||||
onClick={(): void => onTestHandler(type)}
|
onClick={(): void => onTestHandler(type)}
|
||||||
>
|
>
|
||||||
|
@ -467,10 +467,6 @@ function FormAlertRules({
|
|||||||
panelType,
|
panelType,
|
||||||
]);
|
]);
|
||||||
|
|
||||||
const isAlertAvailable =
|
|
||||||
!featureFlags?.find((flag) => flag.name === FeatureKeys.QUERY_BUILDER_ALERTS)
|
|
||||||
?.active || false;
|
|
||||||
|
|
||||||
const saveRule = useCallback(async () => {
|
const saveRule = useCallback(async () => {
|
||||||
if (!isFormValid()) {
|
if (!isFormValid()) {
|
||||||
return;
|
return;
|
||||||
@ -689,7 +685,6 @@ function FormAlertRules({
|
|||||||
const isAlertNameMissing = !formInstance.getFieldValue('alert');
|
const isAlertNameMissing = !formInstance.getFieldValue('alert');
|
||||||
|
|
||||||
const isAlertAvailableToSave =
|
const isAlertAvailableToSave =
|
||||||
isAlertAvailable &&
|
|
||||||
currentQuery.queryType === EQueryType.QUERY_BUILDER &&
|
currentQuery.queryType === EQueryType.QUERY_BUILDER &&
|
||||||
alertType !== AlertTypes.METRICS_BASED_ALERT;
|
alertType !== AlertTypes.METRICS_BASED_ALERT;
|
||||||
|
|
||||||
|
@ -5,7 +5,6 @@ import { WarningOutlined } from '@ant-design/icons';
|
|||||||
import { Button, Flex, Modal, Space, Typography } from 'antd';
|
import { Button, Flex, Modal, Space, Typography } from 'antd';
|
||||||
import logEvent from 'api/common/logEvent';
|
import logEvent from 'api/common/logEvent';
|
||||||
import OverlayScrollbar from 'components/OverlayScrollbar/OverlayScrollbar';
|
import OverlayScrollbar from 'components/OverlayScrollbar/OverlayScrollbar';
|
||||||
import { FeatureKeys } from 'constants/features';
|
|
||||||
import { QueryParams } from 'constants/query';
|
import { QueryParams } from 'constants/query';
|
||||||
import {
|
import {
|
||||||
initialQueriesMap,
|
initialQueriesMap,
|
||||||
@ -27,7 +26,6 @@ import { GetQueryResultsProps } from 'lib/dashboard/getQueryResults';
|
|||||||
import { cloneDeep, defaultTo, isEmpty, isUndefined } from 'lodash-es';
|
import { cloneDeep, defaultTo, isEmpty, isUndefined } from 'lodash-es';
|
||||||
import { Check, X } from 'lucide-react';
|
import { Check, X } from 'lucide-react';
|
||||||
import { DashboardWidgetPageParams } from 'pages/DashboardWidget';
|
import { DashboardWidgetPageParams } from 'pages/DashboardWidget';
|
||||||
import { useAppContext } from 'providers/App/App';
|
|
||||||
import { useDashboard } from 'providers/Dashboard/Dashboard';
|
import { useDashboard } from 'providers/Dashboard/Dashboard';
|
||||||
import {
|
import {
|
||||||
getNextWidgets,
|
getNextWidgets,
|
||||||
@ -79,8 +77,6 @@ function NewWidget({ selectedGraph }: NewWidgetProps): JSX.Element {
|
|||||||
|
|
||||||
const { t } = useTranslation(['dashboard']);
|
const { t } = useTranslation(['dashboard']);
|
||||||
|
|
||||||
const { featureFlags } = useAppContext();
|
|
||||||
|
|
||||||
const { registerShortcut, deregisterShortcut } = useKeyboardHotkeys();
|
const { registerShortcut, deregisterShortcut } = useKeyboardHotkeys();
|
||||||
|
|
||||||
const {
|
const {
|
||||||
@ -565,12 +561,7 @@ function NewWidget({ selectedGraph }: NewWidgetProps): JSX.Element {
|
|||||||
// eslint-disable-next-line react-hooks/exhaustive-deps
|
// eslint-disable-next-line react-hooks/exhaustive-deps
|
||||||
}, []);
|
}, []);
|
||||||
|
|
||||||
const isQueryBuilderActive =
|
|
||||||
!featureFlags?.find((flag) => flag.name === FeatureKeys.QUERY_BUILDER_PANELS)
|
|
||||||
?.active || false;
|
|
||||||
|
|
||||||
const isNewTraceLogsAvailable =
|
const isNewTraceLogsAvailable =
|
||||||
isQueryBuilderActive &&
|
|
||||||
currentQuery.queryType === EQueryType.QUERY_BUILDER &&
|
currentQuery.queryType === EQueryType.QUERY_BUILDER &&
|
||||||
currentQuery.builder.queryData.find(
|
currentQuery.builder.queryData.find(
|
||||||
(query) => query.dataSource !== DataSource.METRICS,
|
(query) => query.dataSource !== DataSource.METRICS,
|
||||||
|
@ -13,11 +13,7 @@ function OrganizationSettings(): JSX.Element {
|
|||||||
const isNotSSO =
|
const isNotSSO =
|
||||||
!featureFlags?.find((flag) => flag.name === FeatureKeys.SSO)?.active || false;
|
!featureFlags?.find((flag) => flag.name === FeatureKeys.SSO)?.active || false;
|
||||||
|
|
||||||
const isNoUpSell =
|
const isAuthDomain = !isNotSSO;
|
||||||
!featureFlags?.find((flag) => flag.name === FeatureKeys.DISABLE_UPSELL)
|
|
||||||
?.active || false;
|
|
||||||
|
|
||||||
const isAuthDomain = !isNoUpSell || (isNoUpSell && !isNotSSO);
|
|
||||||
|
|
||||||
if (!org) {
|
if (!org) {
|
||||||
return <div />;
|
return <div />;
|
||||||
|
@ -186,76 +186,6 @@ export function getAppContextMock(
|
|||||||
usage_limit: -1,
|
usage_limit: -1,
|
||||||
route: '',
|
route: '',
|
||||||
},
|
},
|
||||||
{
|
|
||||||
name: FeatureKeys.OSS,
|
|
||||||
active: false,
|
|
||||||
usage: 0,
|
|
||||||
usage_limit: -1,
|
|
||||||
route: '',
|
|
||||||
},
|
|
||||||
{
|
|
||||||
name: FeatureKeys.DISABLE_UPSELL,
|
|
||||||
active: false,
|
|
||||||
usage: 0,
|
|
||||||
usage_limit: -1,
|
|
||||||
route: '',
|
|
||||||
},
|
|
||||||
{
|
|
||||||
name: FeatureKeys.CUSTOM_METRICS_FUNCTION,
|
|
||||||
active: true,
|
|
||||||
usage: 0,
|
|
||||||
usage_limit: -1,
|
|
||||||
route: '',
|
|
||||||
},
|
|
||||||
{
|
|
||||||
name: FeatureKeys.QUERY_BUILDER_PANELS,
|
|
||||||
active: true,
|
|
||||||
usage: 0,
|
|
||||||
usage_limit: -1,
|
|
||||||
route: '',
|
|
||||||
},
|
|
||||||
{
|
|
||||||
name: FeatureKeys.QUERY_BUILDER_ALERTS,
|
|
||||||
active: true,
|
|
||||||
usage: 0,
|
|
||||||
usage_limit: -1,
|
|
||||||
route: '',
|
|
||||||
},
|
|
||||||
{
|
|
||||||
name: FeatureKeys.ALERT_CHANNEL_SLACK,
|
|
||||||
active: true,
|
|
||||||
usage: 0,
|
|
||||||
usage_limit: -1,
|
|
||||||
route: '',
|
|
||||||
},
|
|
||||||
{
|
|
||||||
name: FeatureKeys.ALERT_CHANNEL_WEBHOOK,
|
|
||||||
active: true,
|
|
||||||
usage: 0,
|
|
||||||
usage_limit: -1,
|
|
||||||
route: '',
|
|
||||||
},
|
|
||||||
{
|
|
||||||
name: FeatureKeys.ALERT_CHANNEL_PAGERDUTY,
|
|
||||||
active: true,
|
|
||||||
usage: 0,
|
|
||||||
usage_limit: -1,
|
|
||||||
route: '',
|
|
||||||
},
|
|
||||||
{
|
|
||||||
name: FeatureKeys.ALERT_CHANNEL_OPSGENIE,
|
|
||||||
active: true,
|
|
||||||
usage: 0,
|
|
||||||
usage_limit: -1,
|
|
||||||
route: '',
|
|
||||||
},
|
|
||||||
{
|
|
||||||
name: FeatureKeys.ALERT_CHANNEL_MSTEAMS,
|
|
||||||
active: true,
|
|
||||||
usage: 0,
|
|
||||||
usage_limit: -1,
|
|
||||||
route: '',
|
|
||||||
},
|
|
||||||
{
|
{
|
||||||
name: FeatureKeys.USE_SPAN_METRICS,
|
name: FeatureKeys.USE_SPAN_METRICS,
|
||||||
active: false,
|
active: false,
|
||||||
|
@ -68,10 +68,6 @@ func UseMetricsPreAggregation() bool {
|
|||||||
return GetOrDefaultEnv("USE_METRICS_PRE_AGGREGATION", "true") == "true"
|
return GetOrDefaultEnv("USE_METRICS_PRE_AGGREGATION", "true") == "true"
|
||||||
}
|
}
|
||||||
|
|
||||||
func EnableHostsInfraMonitoring() bool {
|
|
||||||
return GetOrDefaultEnv("ENABLE_INFRA_METRICS", "true") == "true"
|
|
||||||
}
|
|
||||||
|
|
||||||
var KafkaSpanEval = GetOrDefaultEnv("KAFKA_SPAN_EVAL", "false")
|
var KafkaSpanEval = GetOrDefaultEnv("KAFKA_SPAN_EVAL", "false")
|
||||||
|
|
||||||
var DEFAULT_FEATURE_SET = model.FeatureSet{
|
var DEFAULT_FEATURE_SET = model.FeatureSet{
|
||||||
|
@ -32,13 +32,7 @@ func (fm *FeatureManager) CheckFeature(featureKey string) error {
|
|||||||
|
|
||||||
// GetFeatureFlags returns current features
|
// GetFeatureFlags returns current features
|
||||||
func (fm *FeatureManager) GetFeatureFlags() (model.FeatureSet, error) {
|
func (fm *FeatureManager) GetFeatureFlags() (model.FeatureSet, error) {
|
||||||
features := append(constants.DEFAULT_FEATURE_SET, model.Feature{
|
features := constants.DEFAULT_FEATURE_SET
|
||||||
Name: model.OSS,
|
|
||||||
Active: true,
|
|
||||||
Usage: 0,
|
|
||||||
UsageLimit: -1,
|
|
||||||
Route: "",
|
|
||||||
})
|
|
||||||
return features, nil
|
return features, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -9,58 +9,11 @@ type Feature struct {
|
|||||||
Route string `db:"route" json:"route"`
|
Route string `db:"route" json:"route"`
|
||||||
}
|
}
|
||||||
|
|
||||||
const CustomMetricsFunction = "CUSTOM_METRICS_FUNCTION"
|
|
||||||
const DisableUpsell = "DISABLE_UPSELL"
|
|
||||||
const OSS = "OSS"
|
|
||||||
const QueryBuilderPanels = "QUERY_BUILDER_PANELS"
|
|
||||||
const QueryBuilderAlerts = "QUERY_BUILDER_ALERTS"
|
|
||||||
const UseSpanMetrics = "USE_SPAN_METRICS"
|
const UseSpanMetrics = "USE_SPAN_METRICS"
|
||||||
const AlertChannelSlack = "ALERT_CHANNEL_SLACK"
|
|
||||||
const AlertChannelWebhook = "ALERT_CHANNEL_WEBHOOK"
|
|
||||||
const AlertChannelPagerduty = "ALERT_CHANNEL_PAGERDUTY"
|
|
||||||
const AlertChannelMsTeams = "ALERT_CHANNEL_MSTEAMS"
|
|
||||||
const AlertChannelOpsgenie = "ALERT_CHANNEL_OPSGENIE"
|
|
||||||
const AlertChannelEmail = "ALERT_CHANNEL_EMAIL"
|
|
||||||
const AnomalyDetection = "ANOMALY_DETECTION"
|
const AnomalyDetection = "ANOMALY_DETECTION"
|
||||||
const HostsInfraMonitoring = "HOSTS_INFRA_MONITORING"
|
|
||||||
const TraceFunnels = "TRACE_FUNNELS"
|
const TraceFunnels = "TRACE_FUNNELS"
|
||||||
|
|
||||||
var BasicPlan = FeatureSet{
|
var BasicPlan = FeatureSet{
|
||||||
Feature{
|
|
||||||
Name: OSS,
|
|
||||||
Active: true,
|
|
||||||
Usage: 0,
|
|
||||||
UsageLimit: -1,
|
|
||||||
Route: "",
|
|
||||||
},
|
|
||||||
Feature{
|
|
||||||
Name: DisableUpsell,
|
|
||||||
Active: false,
|
|
||||||
Usage: 0,
|
|
||||||
UsageLimit: -1,
|
|
||||||
Route: "",
|
|
||||||
},
|
|
||||||
Feature{
|
|
||||||
Name: CustomMetricsFunction,
|
|
||||||
Active: false,
|
|
||||||
Usage: 0,
|
|
||||||
UsageLimit: -1,
|
|
||||||
Route: "",
|
|
||||||
},
|
|
||||||
Feature{
|
|
||||||
Name: QueryBuilderPanels,
|
|
||||||
Active: true,
|
|
||||||
Usage: 0,
|
|
||||||
UsageLimit: -1,
|
|
||||||
Route: "",
|
|
||||||
},
|
|
||||||
Feature{
|
|
||||||
Name: QueryBuilderAlerts,
|
|
||||||
Active: true,
|
|
||||||
Usage: 0,
|
|
||||||
UsageLimit: -1,
|
|
||||||
Route: "",
|
|
||||||
},
|
|
||||||
Feature{
|
Feature{
|
||||||
Name: UseSpanMetrics,
|
Name: UseSpanMetrics,
|
||||||
Active: false,
|
Active: false,
|
||||||
@ -68,48 +21,6 @@ var BasicPlan = FeatureSet{
|
|||||||
UsageLimit: -1,
|
UsageLimit: -1,
|
||||||
Route: "",
|
Route: "",
|
||||||
},
|
},
|
||||||
Feature{
|
|
||||||
Name: AlertChannelSlack,
|
|
||||||
Active: true,
|
|
||||||
Usage: 0,
|
|
||||||
UsageLimit: -1,
|
|
||||||
Route: "",
|
|
||||||
},
|
|
||||||
Feature{
|
|
||||||
Name: AlertChannelWebhook,
|
|
||||||
Active: true,
|
|
||||||
Usage: 0,
|
|
||||||
UsageLimit: -1,
|
|
||||||
Route: "",
|
|
||||||
},
|
|
||||||
Feature{
|
|
||||||
Name: AlertChannelPagerduty,
|
|
||||||
Active: true,
|
|
||||||
Usage: 0,
|
|
||||||
UsageLimit: -1,
|
|
||||||
Route: "",
|
|
||||||
},
|
|
||||||
Feature{
|
|
||||||
Name: AlertChannelOpsgenie,
|
|
||||||
Active: true,
|
|
||||||
Usage: 0,
|
|
||||||
UsageLimit: -1,
|
|
||||||
Route: "",
|
|
||||||
},
|
|
||||||
Feature{
|
|
||||||
Name: AlertChannelEmail,
|
|
||||||
Active: true,
|
|
||||||
Usage: 0,
|
|
||||||
UsageLimit: -1,
|
|
||||||
Route: "",
|
|
||||||
},
|
|
||||||
Feature{
|
|
||||||
Name: AlertChannelMsTeams,
|
|
||||||
Active: false,
|
|
||||||
Usage: 0,
|
|
||||||
UsageLimit: -1,
|
|
||||||
Route: "",
|
|
||||||
},
|
|
||||||
Feature{
|
Feature{
|
||||||
Name: AnomalyDetection,
|
Name: AnomalyDetection,
|
||||||
Active: false,
|
Active: false,
|
||||||
|
Loading…
x
Reference in New Issue
Block a user