mirror of
https://git.mirrors.martin98.com/https://github.com/SigNoz/signoz
synced 2025-08-12 09:49:02 +08:00
fix: only latest agent config versions can have a pending deployment (#3836)
This commit is contained in:
parent
4ef973ceb6
commit
658a9cc11b
@ -12,6 +12,7 @@ import (
|
|||||||
"go.signoz.io/signoz/pkg/query-service/agentConf/sqlite"
|
"go.signoz.io/signoz/pkg/query-service/agentConf/sqlite"
|
||||||
"go.signoz.io/signoz/pkg/query-service/model"
|
"go.signoz.io/signoz/pkg/query-service/model"
|
||||||
"go.uber.org/zap"
|
"go.uber.org/zap"
|
||||||
|
"golang.org/x/exp/slices"
|
||||||
)
|
)
|
||||||
|
|
||||||
func init() {
|
func init() {
|
||||||
@ -61,6 +62,13 @@ func (r *Repo) GetConfigHistory(
|
|||||||
return nil, model.InternalError(err)
|
return nil, model.InternalError(err)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
incompleteStatuses := []DeployStatus{DeployInitiated, Deploying}
|
||||||
|
for idx := 1; idx < len(c); idx++ {
|
||||||
|
if slices.Contains(incompleteStatuses, c[idx].DeployStatus) {
|
||||||
|
c[idx].DeployStatus = DeployStatusUnknown
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
return c, nil
|
return c, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -18,11 +18,12 @@ const (
|
|||||||
type DeployStatus string
|
type DeployStatus string
|
||||||
|
|
||||||
const (
|
const (
|
||||||
PendingDeploy DeployStatus = "DIRTY"
|
PendingDeploy DeployStatus = "DIRTY"
|
||||||
Deploying DeployStatus = "DEPLOYING"
|
Deploying DeployStatus = "DEPLOYING"
|
||||||
Deployed DeployStatus = "DEPLOYED"
|
Deployed DeployStatus = "DEPLOYED"
|
||||||
DeployInitiated DeployStatus = "IN_PROGRESS"
|
DeployInitiated DeployStatus = "IN_PROGRESS"
|
||||||
DeployFailed DeployStatus = "FAILED"
|
DeployFailed DeployStatus = "FAILED"
|
||||||
|
DeployStatusUnknown DeployStatus = "UNKNOWN"
|
||||||
)
|
)
|
||||||
|
|
||||||
type ConfigVersion struct {
|
type ConfigVersion struct {
|
||||||
|
@ -172,6 +172,77 @@ func TestLogPipelinesLifecycle(t *testing.T) {
|
|||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func TestLogPipelinesHistory(t *testing.T) {
|
||||||
|
require := require.New(t)
|
||||||
|
testbed := NewLogPipelinesTestBed(t)
|
||||||
|
|
||||||
|
// Only the latest config version can be "IN_PROGRESS",
|
||||||
|
// other incomplete deployments should have status "UNKNOWN"
|
||||||
|
getPipelinesResp := testbed.GetPipelinesFromQS()
|
||||||
|
require.Equal(0, len(getPipelinesResp.History))
|
||||||
|
|
||||||
|
postablePipelines := logparsingpipeline.PostablePipelines{
|
||||||
|
Pipelines: []logparsingpipeline.PostablePipeline{
|
||||||
|
{
|
||||||
|
OrderId: 1,
|
||||||
|
Name: "pipeline1",
|
||||||
|
Alias: "pipeline1",
|
||||||
|
Enabled: true,
|
||||||
|
Filter: &v3.FilterSet{
|
||||||
|
Operator: "AND",
|
||||||
|
Items: []v3.FilterItem{
|
||||||
|
{
|
||||||
|
Key: v3.AttributeKey{
|
||||||
|
Key: "method",
|
||||||
|
DataType: v3.AttributeKeyDataTypeString,
|
||||||
|
Type: v3.AttributeKeyTypeTag,
|
||||||
|
},
|
||||||
|
Operator: "=",
|
||||||
|
Value: "GET",
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
Config: []logparsingpipeline.PipelineOperator{
|
||||||
|
{
|
||||||
|
OrderId: 1,
|
||||||
|
ID: "add",
|
||||||
|
Type: "add",
|
||||||
|
Field: "attributes.test",
|
||||||
|
Value: "val",
|
||||||
|
Enabled: true,
|
||||||
|
Name: "test add",
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
}
|
||||||
|
|
||||||
|
testbed.PostPipelinesToQS(postablePipelines)
|
||||||
|
getPipelinesResp = testbed.GetPipelinesFromQS()
|
||||||
|
require.Equal(1, len(getPipelinesResp.History))
|
||||||
|
require.Equal(agentConf.DeployInitiated, getPipelinesResp.History[0].DeployStatus)
|
||||||
|
|
||||||
|
postablePipelines.Pipelines[0].Config = append(
|
||||||
|
postablePipelines.Pipelines[0].Config,
|
||||||
|
logparsingpipeline.PipelineOperator{
|
||||||
|
OrderId: 2,
|
||||||
|
ID: "remove",
|
||||||
|
Type: "remove",
|
||||||
|
Field: "attributes.test",
|
||||||
|
Enabled: true,
|
||||||
|
Name: "test remove",
|
||||||
|
},
|
||||||
|
)
|
||||||
|
postablePipelines.Pipelines[0].Config[0].Output = "remove"
|
||||||
|
|
||||||
|
testbed.PostPipelinesToQS(postablePipelines)
|
||||||
|
getPipelinesResp = testbed.GetPipelinesFromQS()
|
||||||
|
|
||||||
|
require.Equal(2, len(getPipelinesResp.History))
|
||||||
|
require.Equal(agentConf.DeployInitiated, getPipelinesResp.History[0].DeployStatus)
|
||||||
|
require.Equal(agentConf.DeployStatusUnknown, getPipelinesResp.History[1].DeployStatus)
|
||||||
|
}
|
||||||
|
|
||||||
func TestLogPipelinesValidation(t *testing.T) {
|
func TestLogPipelinesValidation(t *testing.T) {
|
||||||
validPipelineFilterSet := &v3.FilterSet{
|
validPipelineFilterSet := &v3.FilterSet{
|
||||||
Operator: "AND",
|
Operator: "AND",
|
||||||
|
Loading…
x
Reference in New Issue
Block a user