Skip to content

Commit 007c722

Browse files
kryonsxclaude
andcommitted
Merge official v11 (d2479c1) into the Office 365 draft
Brings the draft onto the newest v11, including the alerts module on go-sdk v1.1.36, before revalidating on the newest engine. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2 parents c207320 + d2479c1 commit 007c722

71 files changed

Lines changed: 845 additions & 738 deletions

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

‎.github/workflows/v11-deployment-pipeline.yml‎

Lines changed: 30 additions & 44 deletions
Original file line numberDiff line numberDiff line change
@@ -526,7 +526,8 @@ jobs:
526526
ENVIRONMENT: ${{ needs.setup_deployment.outputs.environment }}
527527
TAG: ${{ needs.setup_deployment.outputs.tag }}
528528
CM_URL: ${{ needs.setup_deployment.outputs.cm_url }}
529-
SCHEDULE_INSTANCES: ${{ vars.SCHEDULE_INSTANCES }}
529+
SCHEDULE_INSTANCES_DEV: ${{ vars.SCHEDULE_INSTANCES_DEV }}
530+
SCHEDULE_INSTANCES_PROD: ${{ vars.SCHEDULE_INSTANCES_PROD }}
530531
run: |
531532
# Use AI changelog for production releases, generic for dev.
532533
if [ "$ENVIRONMENT" != "dev" ] && [ -n "$CHANGELOG_CONTENT" ]; then
@@ -547,10 +548,16 @@ jobs:
547548
id=$(echo "$cmAuth" | jq -r '.id')
548549
key=$(echo "$cmAuth" | jq -r '.key')
549550
550-
# CM-dev already has the products schema (same as v12). CM-prod
551-
# doesn't yet, so production keeps registering one version with no
552-
# product_id, exactly as before -- only dev goes through the
553-
# per-product loop.
551+
# Both CM-dev and CM-prod use the products schema. The register loop
552+
# (dev) needs the per-product instance var to know which product
553+
# UUIDs to register against; prod registers once without product_id
554+
# and CM auto-assigns the owning product.
555+
if [ "$ENVIRONMENT" = "dev" ]; then
556+
SCHEDULE_INSTANCES="$SCHEDULE_INSTANCES_DEV"
557+
else
558+
SCHEDULE_INSTANCES="$SCHEDULE_INSTANCES_PROD"
559+
fi
560+
554561
if [ "$ENVIRONMENT" = "dev" ]; then
555562
if ! echo "$SCHEDULE_INSTANCES" | jq empty > /dev/null 2>&1; then
556563
echo "❌ SCHEDULE_INSTANCES is not valid JSON: $SCHEDULE_INSTANCES"
@@ -601,7 +608,8 @@ jobs:
601608
ENVIRONMENT: ${{ needs.setup_deployment.outputs.environment }}
602609
TAG: ${{ needs.setup_deployment.outputs.tag }}
603610
CM_URL: ${{ needs.setup_deployment.outputs.cm_url }}
604-
SCHEDULE_INSTANCES: ${{ vars.SCHEDULE_INSTANCES }}
611+
SCHEDULE_INSTANCES_DEV: ${{ vars.SCHEDULE_INSTANCES_DEV }}
612+
SCHEDULE_INSTANCES_PROD: ${{ vars.SCHEDULE_INSTANCES_PROD }}
605613
CM_AUTH_DEV: ${{ secrets.CM_SERVICE_ACCOUNT_DEV }}
606614
CM_AUTH_PROD: ${{ secrets.CM_SERVICE_ACCOUNT_PROD }}
607615
steps:
@@ -621,52 +629,30 @@ jobs:
621629
622630
scheduled=0
623631
624-
# CM-dev has the products schema (same as v12). CM-prod doesn't
625-
# yet, so production keeps scheduling against the flat instance
626-
# list with no product_id, exactly as before -- only dev goes
627-
# through the per-product loop.
632+
# Both CM-dev and CM-prod use the products schema, so both
633+
# environments schedule per product. SCHEDULE_INSTANCES is a JSON
634+
# object mapping product UUID -> list of instance UUIDs; select the
635+
# env-specific variable.
628636
if [ "$ENVIRONMENT" = "dev" ]; then
629-
if ! echo "$SCHEDULE_INSTANCES" | jq empty > /dev/null 2>&1; then
630-
echo "❌ SCHEDULE_INSTANCES is not valid JSON: $SCHEDULE_INSTANCES"
631-
exit 1
632-
fi
633-
634-
for product_id in $(echo "$SCHEDULE_INSTANCES" | jq -r 'keys[]'); do
635-
for instance_id in $(echo "$SCHEDULE_INSTANCES" | jq -r --arg p "$product_id" '.[$p][]'); do
636-
echo "📅 Scheduling release for instance: $instance_id (product: $product_id)"
637-
638-
response=$(curl -s -w "\n%{http_code}" -X POST "${CM_URL}/api/v1/updates" \
639-
-H "Content-Type: application/json" \
640-
-H "id: $auth_id" \
641-
-H "key: $auth_key" \
642-
-d "{\"instances_ids\": [\"$instance_id\"], \"version\": \"$TAG\", \"product_id\": \"$product_id\"}")
643-
644-
http_code=$(echo "$response" | tail -n1)
645-
body=$(echo "$response" | sed '$d')
646-
647-
if [ "$http_code" -ge 200 ] && [ "$http_code" -lt 300 ]; then
648-
echo "✅ Successfully scheduled for instance: $instance_id"
649-
scheduled=$((scheduled + 1))
650-
else
651-
echo "❌ Failed to schedule for instance: $instance_id (HTTP $http_code)"
652-
echo "Response: $body"
653-
exit 1
654-
fi
655-
done
656-
done
637+
SCHEDULE_INSTANCES="$SCHEDULE_INSTANCES_DEV"
657638
else
658-
IFS=',' read -ra ID_ARRAY <<< "$SCHEDULE_INSTANCES"
639+
SCHEDULE_INSTANCES="$SCHEDULE_INSTANCES_PROD"
640+
fi
659641
660-
for instance_id in "${ID_ARRAY[@]}"; do
661-
instance_id=$(echo "$instance_id" | xargs)
642+
if ! echo "$SCHEDULE_INSTANCES" | jq empty > /dev/null 2>&1; then
643+
echo "❌ SCHEDULE_INSTANCES is not valid JSON: $SCHEDULE_INSTANCES"
644+
exit 1
645+
fi
662646
663-
echo "📅 Scheduling release for instance: $instance_id"
647+
for product_id in $(echo "$SCHEDULE_INSTANCES" | jq -r 'keys[]'); do
648+
for instance_id in $(echo "$SCHEDULE_INSTANCES" | jq -r --arg p "$product_id" '.[$p][]'); do
649+
echo "📅 Scheduling release for instance: $instance_id (product: $product_id)"
664650
665651
response=$(curl -s -w "\n%{http_code}" -X POST "${CM_URL}/api/v1/updates" \
666652
-H "Content-Type: application/json" \
667653
-H "id: $auth_id" \
668654
-H "key: $auth_key" \
669-
-d "{\"instances_ids\": [\"$instance_id\"], \"version\": \"$TAG\"}")
655+
-d "{\"instances_ids\": [\"$instance_id\"], \"version\": \"$TAG\", \"product_id\": \"$product_id\"}")
670656
671657
http_code=$(echo "$response" | tail -n1)
672658
body=$(echo "$response" | sed '$d')
@@ -680,7 +666,7 @@ jobs:
680666
exit 1
681667
fi
682668
done
683-
fi
669+
done
684670
685671
if [ "$scheduled" -eq 0 ]; then
686672
echo "❌ No instances were scheduled — check SCHEDULE_INSTANCES for this environment"

‎agent-manager/go.mod‎

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ require (
77
github.com/gin-gonic/gin v1.12.0
88
github.com/google/uuid v1.6.0
99
github.com/utmstack/config-client-go v1.2.7
10-
google.golang.org/grpc v1.83.2
10+
google.golang.org/grpc v1.84.0
1111
google.golang.org/protobuf v1.36.12
1212
gorm.io/driver/postgres v1.6.3
1313
gorm.io/gorm v1.31.2
@@ -42,7 +42,7 @@ require (
4242
github.com/pelletier/go-toml/v2 v2.3.1 // indirect
4343
github.com/quic-go/qpack v0.6.0 // indirect
4444
github.com/quic-go/quic-go v0.59.1 // indirect
45-
github.com/threatwinds/go-sdk v1.1.33
45+
github.com/threatwinds/go-sdk v1.1.34
4646
github.com/twitchyliquid64/golang-asm v0.15.1 // indirect
4747
github.com/ugorji/go/codec v1.3.1 // indirect
4848
golang.org/x/arch v0.27.0 // indirect
@@ -51,5 +51,5 @@ require (
5151
golang.org/x/sync v0.22.0 // indirect
5252
golang.org/x/sys v0.47.0 // indirect
5353
golang.org/x/text v0.41.0 // indirect
54-
google.golang.org/genproto/googleapis/rpc v0.0.0-20260526163538-3dc84a4a5aaa // indirect
54+
google.golang.org/genproto/googleapis/rpc v0.0.0-20260706201446-f0a921348800 // indirect
5555
)

‎agent-manager/go.sum‎

Lines changed: 6 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -6,8 +6,6 @@ github.com/bytedance/sonic v1.15.2 h1:90H+rcF/FwLXwfB1cudOLq/je83n683Utf4Cbp0xHC
66
github.com/bytedance/sonic v1.15.2/go.mod h1:mT2NbXunuaEbnZ+mRIX/vYqKISmgEuHFDI4UzmKx2SA=
77
github.com/bytedance/sonic/loader v0.5.1 h1:Ygpfa9zwRCCKSlrp5bBP/b/Xzc3VxsAW+5NIYXrOOpI=
88
github.com/bytedance/sonic/loader v0.5.1/go.mod h1:AR4NYCk5DdzZizZ5djGqQ92eEhCCcdf5x77udYiSJRo=
9-
github.com/cespare/xxhash/v2 v2.3.0 h1:UL815xU9SqsFlibzuggzjXhog7bL6oX9BbNZnL2UFvs=
10-
github.com/cespare/xxhash/v2 v2.3.0/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs=
119
github.com/cloudwego/base64x v0.1.7 h1:NppS+Fgzg5ovhn4NkUXaDT3x9jldgH5ToMCqzBSi2zI=
1210
github.com/cloudwego/base64x v0.1.7/go.mod h1:Cu1PV9zfrSf7ET2tIbWbbEy7jO7HHJ13q4X2SQ8aWYg=
1311
github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
@@ -20,10 +18,6 @@ github.com/gin-contrib/sse v1.1.1 h1:uGYpNwTacv5R68bSGMapo62iLTRa9l5zxGCps4hK6ko
2018
github.com/gin-contrib/sse v1.1.1/go.mod h1:QXzuVkA0YO7o/gun03UI1Q+FTI8ZV/n5t03kIQAI89s=
2119
github.com/gin-gonic/gin v1.12.0 h1:b3YAbrZtnf8N//yjKeU2+MQsh2mY5htkZidOM7O0wG8=
2220
github.com/gin-gonic/gin v1.12.0/go.mod h1:VxccKfsSllpKshkBWgVgRniFFAzFb9csfngsqANjnLc=
23-
github.com/go-logr/logr v1.4.3 h1:CjnDlHq8ikf6E492q6eKboGOC0T8CDaOvkHCIg8idEI=
24-
github.com/go-logr/logr v1.4.3/go.mod h1:9T104GzyrTigFIr8wt5mBrctHMim0Nb2HLGrmQ40KvY=
25-
github.com/go-logr/stdr v1.2.2 h1:hSWxHoqTgW2S2qGc0LTAI563KZ5YKYRhT3MFKZMbjag=
26-
github.com/go-logr/stdr v1.2.2/go.mod h1:mMo/vtBO5dYbehREoey6XUKy/eSumjCCveDpRre4VKE=
2721
github.com/go-playground/assert/v2 v2.2.0 h1:JvknZsQTYeFEAhQwI4qEt9cyV5ONwRHC+lYKSsYSR8s=
2822
github.com/go-playground/assert/v2 v2.2.0/go.mod h1:VDjEfimB/XKnb+ZQfWdccd7VUvScMdVu0Titje2rxJ4=
2923
github.com/go-playground/locales v0.14.1 h1:EWaQ/wswjilfKLTECiXz7Rh+3BjFhfDFKv/oXslEjJA=
@@ -91,8 +85,8 @@ github.com/stretchr/testify v1.8.4/go.mod h1:sz/lmYIOXD/1dqDmKjjqLyZ2RngseejIcXl
9185
github.com/stretchr/testify v1.10.0/go.mod h1:r2ic/lqez/lEtzL7wO/rwa5dbSLXVDPFyf8C91i36aY=
9286
github.com/stretchr/testify v1.11.1 h1:7s2iGBzp5EwR7/aIZr8ao5+dra3wiQyKjjFuvgVKu7U=
9387
github.com/stretchr/testify v1.11.1/go.mod h1:wZwfW3scLgRK+23gO65QZefKpKQRnfz6sD981Nm4B6U=
94-
github.com/threatwinds/go-sdk v1.1.33 h1:jpj5fCGd/++e7n4Ip06dpNfoZw4j92HiDtwC4yp3TyE=
95-
github.com/threatwinds/go-sdk v1.1.33/go.mod h1:aN6Oe3zJop9ngS83oZcKFXDLKWzrny2XhkYm7uoyDbQ=
88+
github.com/threatwinds/go-sdk v1.1.34 h1:W0LjBErb5pefIlWl4VPGM7G1B29Rzojz/uYan7jJICs=
89+
github.com/threatwinds/go-sdk v1.1.34/go.mod h1:aN6Oe3zJop9ngS83oZcKFXDLKWzrny2XhkYm7uoyDbQ=
9690
github.com/twitchyliquid64/golang-asm v0.15.1 h1:SU5vSMR7hnwNxj24w34ZyCi/FmDZTkS4MhqMhdFk5YI=
9791
github.com/twitchyliquid64/golang-asm v0.15.1/go.mod h1:a1lVb/DtPvCB8fslRZhAngC2+aY1QWCk3Cedj/Gdt08=
9892
github.com/ugorji/go/codec v1.3.1 h1:waO7eEiFDwidsBN6agj1vJQ4AG7lh2yqXyOXqhgQuyY=
@@ -101,18 +95,6 @@ github.com/utmstack/config-client-go v1.2.7 h1:JeRdI5JjH1liNzMW3LmyevjuPd67J/yt9
10195
github.com/utmstack/config-client-go v1.2.7/go.mod h1:kM0KoUizM9ZlcQp0qKviGTWn/+anT5Rfjx3zfZk79nM=
10296
go.mongodb.org/mongo-driver/v2 v2.6.0 h1:b9sJOYrkmt4l8bY43ZenFBcPlhYIjaOfYHLtbB/5qi8=
10397
go.mongodb.org/mongo-driver/v2 v2.6.0/go.mod h1:yOI9kBsufol30iFsl1slpdq1I0eHPzybRWdyYUs8K/0=
104-
go.opentelemetry.io/auto/sdk v1.2.1 h1:jXsnJ4Lmnqd11kwkBV2LgLoFMZKizbCi5fNZ/ipaZ64=
105-
go.opentelemetry.io/auto/sdk v1.2.1/go.mod h1:KRTj+aOaElaLi+wW1kO/DZRXwkF4C5xPbEe3ZiIhN7Y=
106-
go.opentelemetry.io/otel v1.44.0 h1:JjwHmHpA4iZ3wBxluu2fbbE7j4kqlE8jXyAyPXH7HqU=
107-
go.opentelemetry.io/otel v1.44.0/go.mod h1:BMgjTHL9WPRlRjL2oZCBTL4whCGtXch2H4BhOPIAyYc=
108-
go.opentelemetry.io/otel/metric v1.44.0 h1:1w0gILTcHdr3YI+ixLyjemwrVnsMURbTZFrSYCdDdmc=
109-
go.opentelemetry.io/otel/metric v1.44.0/go.mod h1:8O7hanEPBNgEMmybD3s2VBKcgWOCsA6tzHBPODAiquo=
110-
go.opentelemetry.io/otel/sdk v1.44.0 h1:nHYwb9lK+fJPU/dnT6s7W7Z8itMWyqrnVfbheVYrZ58=
111-
go.opentelemetry.io/otel/sdk v1.44.0/go.mod h1:Osuydd3Se74nqjAKxid74N5eC+jfEqfTegHRnq58oK0=
112-
go.opentelemetry.io/otel/sdk/metric v1.44.0 h1:3LlKgI+VjbVsjNRFZJZAJ30WjXC5VkNRks6si09iEfI=
113-
go.opentelemetry.io/otel/sdk/metric v1.44.0/go.mod h1:5B5pMARnXxKhltooO4xUuCBorl65a4EpnTalObqOigA=
114-
go.opentelemetry.io/otel/trace v1.44.0 h1:jxF5CsGYCe74MCRx2X4g7WsY/VBKRqqpNvXlX/6gtIk=
115-
go.opentelemetry.io/otel/trace v1.44.0/go.mod h1:oLl1jrMQAVo6v3GAggN+1VH9VIz9iUSvW53sW1Q8PIE=
11698
go.uber.org/mock v0.6.0 h1:hyF9dfmbgIX5EfOdasqLsWD6xqpNZlXblLB/Dbnwv3Y=
11799
go.uber.org/mock v0.6.0/go.mod h1:KiVJ4BqZJaMj4svdfmHM0AUx4NJYO8ZNpPnZn1Z+BBU=
118100
golang.org/x/arch v0.27.0 h1:0WNVcR8u9yFz8j5FvdHpgwNp3FS5U4guYdzHwEiGjoU=
@@ -129,10 +111,10 @@ golang.org/x/text v0.41.0 h1:vz/seA0lnX87Othu2f/0L24RcgrXD9/YFTSuGjj3rH8=
129111
golang.org/x/text v0.41.0/go.mod h1:jvf1O8ajNzZqhSrQBPbutR/EB83Cc0CFrezNQIwbb5M=
130112
gonum.org/v1/gonum v0.17.0 h1:VbpOemQlsSMrYmn7T2OUvQ4dqxQXU+ouZFQsZOx50z4=
131113
gonum.org/v1/gonum v0.17.0/go.mod h1:El3tOrEuMpv2UdMrbNlKEh9vd86bmQ6vqIcDwxEOc1E=
132-
google.golang.org/genproto/googleapis/rpc v0.0.0-20260526163538-3dc84a4a5aaa h1:mZHHdPZl0dbGHCflZgAq/Q468DWVFcU2whhB2KAo8fk=
133-
google.golang.org/genproto/googleapis/rpc v0.0.0-20260526163538-3dc84a4a5aaa/go.mod h1:4Hqkh8ycfw05ld/3BWL7rJOSfebL2Q+DVDeRgYgxUU8=
134-
google.golang.org/grpc v1.83.2 h1:EManeRomTObA0BU7I8vXgg/78uE5MJ9M8B39EX2WscU=
135-
google.golang.org/grpc v1.83.2/go.mod h1:YPI1hK3kDked6iHvgX3tR0y+nX/qpMFKhPgFsokw1S8=
114+
google.golang.org/genproto/googleapis/rpc v0.0.0-20260706201446-f0a921348800 h1:qEHAMpSaUhtD0p3NbEEI83HwNGFxEwaSJ1G9PLnCBZE=
115+
google.golang.org/genproto/googleapis/rpc v0.0.0-20260706201446-f0a921348800/go.mod h1:4Hqkh8ycfw05ld/3BWL7rJOSfebL2Q+DVDeRgYgxUU8=
116+
google.golang.org/grpc v1.84.0 h1:soMyaPJ8pAak5PIQ0DGBUir0XRo2fRoMqhNWMLlLxO0=
117+
google.golang.org/grpc v1.84.0/go.mod h1:ljCht0DrxQrXBDRTZp52Qxh3Ffk8CdYm2sj4O2QN2C0=
136118
google.golang.org/protobuf v1.36.12 h1:pJOKDDOyeXErUroCihFAd5LQuwXBSpVnKGrj5o/fwxc=
137119
google.golang.org/protobuf v1.36.12/go.mod h1:HTf+CrKn2C3g5S8VImy6tdcUvCska2kB7j23XfzDpco=
138120
gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=

‎agent/go.mod‎

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -13,11 +13,11 @@ require (
1313
github.com/netsampler/goflow2 v1.3.7
1414
github.com/spf13/cobra v1.10.2
1515
github.com/tehmaze/netflow v0.0.0-20240303214733-8c13bb004068
16-
github.com/threatwinds/go-sdk v1.1.33
16+
github.com/threatwinds/go-sdk v1.1.34
1717
github.com/threatwinds/logger v1.2.3
1818
github.com/utmstack/UTMStack/shared v0.0.0
1919
golang.org/x/sys v0.48.0
20-
google.golang.org/grpc v1.83.2
20+
google.golang.org/grpc v1.84.0
2121
google.golang.org/protobuf v1.36.12
2222
gorm.io/gorm v1.31.2
2323
)
@@ -75,8 +75,8 @@ require (
7575
golang.org/x/exp v0.0.0-20260603202125-055de637280b // indirect
7676
golang.org/x/net v0.58.0 // indirect
7777
golang.org/x/text v0.41.0 // indirect
78-
google.golang.org/genproto/googleapis/api v0.0.0-20260526163538-3dc84a4a5aaa // indirect
79-
google.golang.org/genproto/googleapis/rpc v0.0.0-20260526163538-3dc84a4a5aaa // indirect
78+
google.golang.org/genproto/googleapis/api v0.0.0-20260706201446-f0a921348800 // indirect
79+
google.golang.org/genproto/googleapis/rpc v0.0.0-20260706201446-f0a921348800 // indirect
8080
gopkg.in/natefinch/lumberjack.v2 v2.2.1 // indirect
8181
gopkg.in/yaml.v3 v3.0.1 // indirect
8282
howett.net/plist v1.0.1 // indirect

0 commit comments

Comments
 (0)