From d3c95170bc116bc163dfd3ebbf0d118c418c3de8 Mon Sep 17 00:00:00 2001 From: gravi21 Date: Mon, 6 Jul 2026 20:13:00 +0530 Subject: [PATCH] Multi-tenant Changes for Precooking/Recooking --- .../recooking_lockdown_settings_handler.go | 4 ++-- common/const_var.go | 1 + http/xcrp_connector.go | 6 ++++-- http/xcrp_connector_test.go | 20 +++++++++---------- 4 files changed, 17 insertions(+), 14 deletions(-) diff --git a/adminapi/xcrp/recooking_lockdown_settings_handler.go b/adminapi/xcrp/recooking_lockdown_settings_handler.go index f72c99c..3a9fa7a 100644 --- a/adminapi/xcrp/recooking_lockdown_settings_handler.go +++ b/adminapi/xcrp/recooking_lockdown_settings_handler.go @@ -103,7 +103,7 @@ func PostRecookingLockdownSettingsHandler(w http.ResponseWriter, r *http.Request log.Infof("Precook lockdown settings in EDT, lockdownStartTime: %v, lockdownEndTime: %v, lockdownModules: %v, lockdownEnabled: %v", lockdownStartTime, lockdownEndTime, lockdownModules, lockdownEnabled) go CheckRecookingStatus(tenantId, time.Second*time.Duration(common.LockDuration), "rfc", fields) - err = GetXcrpConnector().PostRecook(models, partners, nil, fields) + err = GetXcrpConnector().PostRecook(tenantId, models, partners, nil, fields) if err != nil { xhttp.WriteAdminErrorResponse(w, http.StatusInternalServerError, err.Error()) return @@ -164,7 +164,7 @@ func CheckRecookingStatus(tenantId string, lockDuration time.Duration, module st var state bool var updatedTime time.Time var err error - state, err = GetXcrpConnector().GetRecookingStatusFromCanaryMgr(module, fields) + state, err = GetXcrpConnector().GetRecookingStatusFromCanaryMgr(tenantId, module, fields) if err != nil { log.Errorf("Error checking recooking status from CanaryMgr: %v", err) return diff --git a/common/const_var.go b/common/const_var.go index 30378ce..a68e260 100644 --- a/common/const_var.go +++ b/common/const_var.go @@ -212,6 +212,7 @@ const ( HeaderAccountID = "X-System-AccountID" HeaderXconfDataService = "XconfDataService" HeaderXconfAdminService = "XconfAdminService" + HeaderTenantID = "TenantId" ) // const ( diff --git a/http/xcrp_connector.go b/http/xcrp_connector.go index 72e5460..89bd23c 100644 --- a/http/xcrp_connector.go +++ b/http/xcrp_connector.go @@ -81,7 +81,7 @@ func (c *XcrpConnector) SetXcrpHosts(hosts []string) { c.hosts = hosts } -func (c *XcrpConnector) PostRecook(m, p []string, bbytes []byte, fields log.Fields) error { +func (c *XcrpConnector) PostRecook(tenantId string, m, p []string, bbytes []byte, fields log.Fields) error { models := strings.Join(m, ",") partners := strings.Join(p, ",") var url string @@ -97,6 +97,7 @@ func (c *XcrpConnector) PostRecook(m, p []string, bbytes []byte, fields log.Fiel } headers := map[string]string{ common.HeaderUserAgent: common.HeaderXconfAdminService, + common.HeaderTenantID: tenantId, } _, err := c.DoWithRetries("POST", url, headers, bbytes, fields, xcrpServiceName) @@ -110,12 +111,13 @@ func (c *XcrpConnector) PostRecook(m, p []string, bbytes []byte, fields log.Fiel return nil } -func (c *XcrpConnector) GetRecookingStatusFromCanaryMgr(module string, fields log.Fields) (bool, error) { +func (c *XcrpConnector) GetRecookingStatusFromCanaryMgr(tenantId string, module string, fields log.Fields) (bool, error) { var url string for _, host := range c.XcrpHosts() { url = fmt.Sprintf(c.precookStatusPathTemplate, host, module) headers := map[string]string{ common.HeaderUserAgent: common.HeaderXconfAdminService, + common.HeaderTenantID: tenantId, } response, err := c.DoWithRetries("GET", url, headers, nil, nil, xcrpServiceName) if err != nil { diff --git a/http/xcrp_connector_test.go b/http/xcrp_connector_test.go index aab9743..5d69e54 100644 --- a/http/xcrp_connector_test.go +++ b/http/xcrp_connector_test.go @@ -113,7 +113,7 @@ func TestXcrpConnector_PostRecook_WithModelsAndPartners(t *testing.T) { partners := []string{"comcast", "cox"} requestBody := []byte(`{"test":"data"}`) - err := connector.PostRecook(models, partners, requestBody, log.Fields{}) + err := connector.PostRecook("testtenant", models, partners, requestBody, log.Fields{}) if err != nil { t.Fatalf("unexpected error: %v", err) @@ -151,7 +151,7 @@ func TestXcrpConnector_PostRecook_WithModelsOnly(t *testing.T) { partners := []string{} requestBody := []byte(`{"test":"data"}`) - err := connector.PostRecook(models, partners, requestBody, log.Fields{}) + err := connector.PostRecook("testtenant", models, partners, requestBody, log.Fields{}) if err != nil { t.Fatalf("unexpected error: %v", err) @@ -189,7 +189,7 @@ func TestXcrpConnector_PostRecook_WithPartnersOnly(t *testing.T) { partners := []string{"comcast"} requestBody := []byte(`{"test":"data"}`) - err := connector.PostRecook(models, partners, requestBody, log.Fields{}) + err := connector.PostRecook("testtenant", models, partners, requestBody, log.Fields{}) if err != nil { t.Fatalf("unexpected error: %v", err) @@ -220,7 +220,7 @@ func TestXcrpConnector_PostRecook_NoParams(t *testing.T) { partners := []string{} requestBody := []byte(`{"test":"data"}`) - err := connector.PostRecook(models, partners, requestBody, log.Fields{}) + err := connector.PostRecook("testtenant", models, partners, requestBody, log.Fields{}) if err != nil { t.Fatalf("unexpected error: %v", err) @@ -246,7 +246,7 @@ func TestXcrpConnector_PostRecook_Error(t *testing.T) { partners := []string{"comcast"} requestBody := []byte(`{"test":"data"}`) - err := connector.PostRecook(models, partners, requestBody, log.Fields{}) + err := connector.PostRecook("testtenant", models, partners, requestBody, log.Fields{}) if err == nil { t.Fatal("expected error but got none") @@ -282,7 +282,7 @@ func TestXcrpConnector_PostRecook_MultipleHosts(t *testing.T) { partners := []string{"comcast"} requestBody := []byte(`{"test":"data"}`) - err := connector.PostRecook(models, partners, requestBody, log.Fields{}) + err := connector.PostRecook("testtenant", models, partners, requestBody, log.Fields{}) if err != nil { t.Fatalf("unexpected error: %v", err) @@ -330,7 +330,7 @@ func TestXcrpConnector_GetRecookingStatusFromCanaryMgr_Completed(t *testing.T) { precookStatusPathTemplate: "%s/path/%s", } - completed, err := connector.GetRecookingStatusFromCanaryMgr("rfc", log.Fields{}) + completed, err := connector.GetRecookingStatusFromCanaryMgr("testtenant", "rfc", log.Fields{}) if err != nil { t.Fatalf("unexpected error: %v", err) @@ -368,7 +368,7 @@ func TestXcrpConnector_GetRecookingStatusFromCanaryMgr_Pending(t *testing.T) { precookStatusPathTemplate: "%s/dummy/%s", } - completed, err := connector.GetRecookingStatusFromCanaryMgr("rfc", log.Fields{}) + completed, err := connector.GetRecookingStatusFromCanaryMgr("testtenant", "rfc", log.Fields{}) if err != nil { t.Fatalf("unexpected error: %v", err) @@ -394,7 +394,7 @@ func TestXcrpConnector_GetRecookingStatusFromCanaryMgr_Error(t *testing.T) { hosts: []string{server.URL}, } - _, err := connector.GetRecookingStatusFromCanaryMgr("rfc", log.Fields{}) + _, err := connector.GetRecookingStatusFromCanaryMgr("testtenant", "rfc", log.Fields{}) if err == nil { t.Fatal("expected error but got none") @@ -417,7 +417,7 @@ func TestXcrpConnector_GetRecookingStatusFromCanaryMgr_InvalidJSON(t *testing.T) hosts: []string{server.URL}, } - _, err := connector.GetRecookingStatusFromCanaryMgr("rfc", log.Fields{}) + _, err := connector.GetRecookingStatusFromCanaryMgr("testtenant", "rfc", log.Fields{}) if err == nil { t.Fatal("expected error for invalid JSON but got none")