Skip to content

Commit d64f460

Browse files
authored
Merge pull request #1322 from O-sura/master
Update APIM-APK-Agent with snapshot version change, response interceptor fix, and cert update
2 parents d10d062 + 650ec30 commit d64f460

File tree

4 files changed

+36
-12
lines changed

4 files changed

+36
-12
lines changed

apim-apk-agent/gradle.properties

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
11
group=org.wso2.apk
2-
version=1.3.0-SNAPSHOT
2+
version=1.3.1-SNAPSHOT
33
file=main.go
44
docker_image_name=apim-apk-agent

apim-apk-agent/pkg/managementserver/rest_server.go

Lines changed: 33 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -156,6 +156,7 @@ func StartInternalServer(port uint) {
156156
}
157157

158158
func createAPIYaml(apiCPEvent *APICPEvent) (string, string, string) {
159+
159160
config, err := config.ReadConfigs()
160161
provider := "admin"
161162
if err == nil {
@@ -171,6 +172,7 @@ func createAPIYaml(apiCPEvent *APICPEvent) (string, string, string) {
171172
primarySandboxEndpointID := ""
172173
primaryProdcutionURL := ""
173174
primarySandboxURL := ""
175+
logger.LoggerMgtServer.Debugf("Production Multi-endpoint configs: %d", len(multiEndpoints.ProdEndpoints))
174176
for _, endpoint := range multiEndpoints.ProdEndpoints {
175177
prodCount++
176178
var endpointName string
@@ -214,6 +216,7 @@ func createAPIYaml(apiCPEvent *APICPEvent) (string, string, string) {
214216
},
215217
})
216218
}
219+
logger.LoggerMgtServer.Debugf("Sandbox Multi-endpoint configs: %d", len(multiEndpoints.SandEndpoints))
217220
for _, endpoint := range multiEndpoints.SandEndpoints {
218221
sandCount++
219222
var endpointName string
@@ -264,11 +267,12 @@ func createAPIYaml(apiCPEvent *APICPEvent) (string, string, string) {
264267
logger.LoggerMgtServer.Errorf("Error occured while extracting operations from open API: %s, \nError: %+v", apiCPEvent.API.Definition, operationsErr)
265268
operations = []APIOperation{}
266269
}
267-
sandEndpoint := ""
270+
sandEndpoint := apiCPEvent.API.SandEndpoint
268271
if apiCPEvent.API.SandEndpoint != "" {
269272
sandEndpoint = fmt.Sprintf("%s://%s", apiCPEvent.API.EndpointProtocol, apiCPEvent.API.SandEndpoint)
270273
}
271-
prodEndpoint := ""
274+
prodEndpoint := apiCPEvent.API.ProdEndpoint
275+
logger.LoggerMgtServer.Infof("Sandbox Endpoint: %s, Production Endpoint: %s", sandEndpoint, prodEndpoint)
272276
if apiCPEvent.API.ProdEndpoint != "" {
273277
prodEndpoint = fmt.Sprintf("%s://%s", apiCPEvent.API.EndpointProtocol, apiCPEvent.API.ProdEndpoint)
274278
}
@@ -289,7 +293,14 @@ func createAPIYaml(apiCPEvent *APICPEvent) (string, string, string) {
289293
apiCPEvent.API.AIConfiguration.LLMProviderID + "\"}"
290294
}
291295
logger.LoggerMgtServer.Debugf("Subtype Configuration: %+v", subTypeConfiguration)
292-
296+
sandboxSecType := apiCPEvent.API.SandEndpointSecurity.SecurityType
297+
if sandboxSecType == "" {
298+
sandboxSecType = "NONE"
299+
}
300+
prodSecType := apiCPEvent.API.ProdEndpointSecurity.SecurityType
301+
if prodSecType == "" {
302+
prodSecType = "NONE"
303+
}
293304
data := map[string]interface{}{
294305
"type": "api",
295306
"version": "v4.6.0",
@@ -322,7 +333,7 @@ func createAPIYaml(apiCPEvent *APICPEvent) (string, string, string) {
322333
"apiKeyValue": apiCPEvent.API.SandEndpointSecurity.APIKeyValue,
323334
"apiKeyIdentifier": apiCPEvent.API.SandEndpointSecurity.APIKeyName,
324335
"apiKeyIdentifierType": "HEADER",
325-
"type": apiCPEvent.API.SandEndpointSecurity.SecurityType,
336+
"type": sandboxSecType,
326337
"username": apiCPEvent.API.SandEndpointSecurity.BasicUsername,
327338
"password": apiCPEvent.API.SandEndpointSecurity.BasicPassword,
328339
"enabled": apiCPEvent.API.SandEndpointSecurity.Enabled,
@@ -336,7 +347,7 @@ func createAPIYaml(apiCPEvent *APICPEvent) (string, string, string) {
336347
"apiKeyValue": apiCPEvent.API.ProdEndpointSecurity.APIKeyValue,
337348
"apiKeyIdentifier": apiCPEvent.API.ProdEndpointSecurity.APIKeyName,
338349
"apiKeyIdentifierType": "HEADER",
339-
"type": apiCPEvent.API.ProdEndpointSecurity.SecurityType,
350+
"type": prodSecType,
340351
"username": apiCPEvent.API.ProdEndpointSecurity.BasicUsername,
341352
"password": apiCPEvent.API.ProdEndpointSecurity.BasicPassword,
342353
"enabled": apiCPEvent.API.ProdEndpointSecurity.Enabled,
@@ -364,10 +375,12 @@ func createAPIYaml(apiCPEvent *APICPEvent) (string, string, string) {
364375
//data["data"].(map[string]interface{})["egress"] = true
365376
}
366377
// TODO when we start to process sandbox we need to have this if condition. For now we remove sandbox endpoint always.
367-
// if apiCPEvent.API.SandEndpoint == "" {
368-
delete(data["data"].(map[string]interface{})["endpointConfig"].(map[string]interface{}), "sandbox_endpoints")
369-
// }
378+
if apiCPEvent.API.SandEndpoint == "" {
379+
logger.LoggerMgtServer.Debug("Sandbox endpoint is empty. Removing sandbox endpoints from the endpoint config")
380+
delete(data["data"].(map[string]interface{})["endpointConfig"].(map[string]interface{}), "sandbox_endpoints")
381+
}
370382
if apiCPEvent.API.ProdEndpoint == "" {
383+
logger.LoggerMgtServer.Debug("Production endpoint is empty. Removing production endpoints from the endpoint config")
371384
delete(data["data"].(map[string]interface{})["endpointConfig"].(map[string]interface{}), "production_endpoints")
372385
}
373386
if apiCPEvent.API.CORSPolicy != nil {
@@ -385,6 +398,7 @@ func createAPIYaml(apiCPEvent *APICPEvent) (string, string, string) {
385398

386399
// Handle Production fields
387400
if apiCPEvent.API.ProdAIRL != nil {
401+
logger.LoggerMgtServer.Infof("Production AIRL is not nil")
388402
maxTps["production"] = apiCPEvent.API.ProdAIRL.RequestCount
389403
maxTps["productionTimeUnit"] = strings.ToUpper(apiCPEvent.API.ProdAIRL.TimeUnit)
390404

@@ -406,6 +420,7 @@ func createAPIYaml(apiCPEvent *APICPEvent) (string, string, string) {
406420

407421
// Handle Sandbox fields
408422
if apiCPEvent.API.SandAIRL != nil {
423+
logger.LoggerMgtServer.Infof("Sandbox AIRL is not nil")
409424
maxTps["sandbox"] = apiCPEvent.API.SandAIRL.RequestCount
410425
maxTps["sandboxTimeUnit"] = strings.ToUpper(apiCPEvent.API.SandAIRL.TimeUnit)
411426

@@ -577,6 +592,7 @@ func createAPIYaml(apiCPEvent *APICPEvent) (string, string, string) {
577592

578593
// Attach endpoint_security to configMap
579594
configMap["endpoint_security"] = endpointSecurityMap
595+
logger.LoggerMgtServer.Debugf("Endpoint Security Map: %+v", endpointSecurityMap)
580596

581597
// Put endpointConfig in the main endpointMap
582598
endpointMap["endpointConfig"] = configMap
@@ -586,15 +602,23 @@ func createAPIYaml(apiCPEvent *APICPEvent) (string, string, string) {
586602
}
587603

588604
var endpointsData map[string]interface{}
605+
logger.LoggerMgtServer.Debugf("Prod Count: %d || Sand Count: %d", prodCount, sandCount)
589606
if prodCount > 1 || sandCount > 1 {
590607
endpointsData = map[string]interface{}{
591608
"type": "endpoints",
592609
"version": "v4.6.0",
593610
"data": dataArr,
594611
}
595612
}
613+
logger.LoggerMgtServer.Debugf("\n\nSandbox Endpoint Sec Config: %+v\n\n", apiCPEvent.API.SandEndpointSecurity)
614+
logger.LoggerMgtServer.Debugf("\n\nProd Endpoint Sec Config: %+v\n\n", apiCPEvent.API.ProdEndpointSecurity)
596615

597616
if primaryProductionEndpointID != "" || primarySandboxEndpointID != "" {
617+
logger.LoggerMgtServer.Debugf("Multi-endpoint config enabled")
618+
logger.LoggerMgtServer.Debugf("\n\nPrimary Production Endpoint ID: %s || Primary Sandbox Endpoint ID: %s\n\n", primaryProductionEndpointID, primarySandboxEndpointID)
619+
logger.LoggerMgtServer.Debugf("Primary Production URL: %s", primaryProdcutionURL)
620+
logger.LoggerMgtServer.Debugf("Primary Sandbox URL: %s", primarySandboxURL)
621+
598622
data["data"].(map[string]interface{})["primaryProductionEndpointId"] = primaryProductionEndpointID
599623
data["data"].(map[string]interface{})["primarySandboxEndpointId"] = primarySandboxEndpointID
600624
data["data"].(map[string]interface{})["endpointImplementationType"] = "ENDPOINT"
@@ -640,7 +664,7 @@ func createAPIYaml(apiCPEvent *APICPEvent) (string, string, string) {
640664
}
641665

642666
var requestOperationPolicies []OperationPolicy
643-
if apiCPEvent.API.AIModelBasedRoundRobin != nil {
667+
if apiCPEvent.API.AIModelBasedRoundRobin != nil && apiCPEvent.API.APIType != "GraphQL" {
644668
aiModelBasedRoundRobin := apiCPEvent.API.AIModelBasedRoundRobin
645669
logger.LoggerMgtServer.Debugf("AIModelBasedRoundRobin : %+v", aiModelBasedRoundRobin)
646670
wrr := ModelBasedRoundRobinConfig{

apim-apk-agent/pkg/transformer/transformer.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -613,7 +613,7 @@ func getReqAndResInterceptors(reqPolicyCount, resPolicyCount int, reqPolicies []
613613

614614
if resPolicyCount > 0 {
615615
for _, resPolicy := range resPolicies {
616-
if resPolicy.PolicyName == constants.InterceptorService {
616+
if strings.HasSuffix(resPolicy.PolicyName, constants.InterceptorService) {
617617
interceptorServiceURL := resPolicy.Parameters[interceptorServiceURL].(string)
618618
includes := resPolicy.Parameters[includes].(string)
619619
substrings := strings.Split(includes, ",")

helm-charts/templates/cert-manager/certificates/apim-apk-issuer-cert.yaml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,4 +5,4 @@ metadata:
55
type: Opaque
66
data:
77
wso2.crt: |
8-
LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUR1VENDQXFHZ0F3SUJBZ0lVWjNyWUtWTlpUL2FUTWpPQ21qc0JsUDlsT3ZRd0RRWUpLb1pJaHZjTkFRRUwKQlFBd1pERUxNQWtHQTFVRUJoTUNWVk14Q3pBSkJnTlZCQWdNQWtOQk1SWXdGQVlEVlFRSERBMU5iM1Z1ZEdGcApiaUJXYVdWM01RMHdDd1lEVlFRS0RBUlhVMDh5TVEwd0N3WURWUVFMREFSWFUwOHlNUkl3RUFZRFZRUUREQWxzCmIyTmhiR2h2YzNRd0hoY05NalV3TWpFek1UTXdNREV4V2hjTk1qY3dOVEU1TVRNd01ERXhXakJrTVFzd0NRWUQKVlFRR0V3SlZVekVMTUFrR0ExVUVDQXdDUTBFeEZqQVVCZ05WQkFjTURVMXZkVzUwWVdsdUlGWnBaWGN4RFRBTApCZ05WQkFvTUJGZFRUekl4RFRBTEJnTlZCQXNNQkZkVFR6SXhFakFRQmdOVkJBTU1DV3h2WTJGc2FHOXpkRENDCkFTSXdEUVlKS29aSWh2Y05BUUVCQlFBRGdnRVBBRENDQVFvQ2dnRUJBSy9UejlGdnUxTXplUko5WWxFUGdCT3MKcitvQU5QeUJHZkhlSlV5M0pKdlZPWGhMdTZMWEZVcGxDZlBXcWVoZUxwTUlVeE5xTFZkaTN1ZU5mYnFYOVppbgorQU5weDVtK0Z0d2tqNXdjVFBDbmpEcnJobk81TFRReHJvdDlldHB5NTFIZ1ZXdTJpVTVsTWVSb0k0d0FkaWRnCndkS2NaS1JDRWV1UnlkU1hlekwwQ0dXRXAzdGRBNS8vc0o1bGl5WjF4ckIyODZrRUpyS2VHRE9KNWlUNWh3TFkKZEpUYzBQbGRJRjhIU2UvYnNXQWxEL05ZUUEyb0N4SUYxdmUvTVBlT2FMOGtmQml0eXQxNlJ0cDdQa25pUXZtNwp5VldjT01ja01uc0FhOTh0UHFtSFVwNHc5dnVEdHlDaG94dVkyWXg0VjBlaXFpUlFKQmRKcitpOUtCWlV2S01DCkF3RUFBYU5qTUdFd0ZBWURWUjBSQkEwd0M0SUpiRzlqWVd4b2IzTjBNQjBHQTFVZERnUVdCQlRCL2J3SzNZL0EKdUlYb05vOGxOdVdMNFZKSEJUQUxCZ05WSFE4RUJBTUNCUEF3SFFZRFZSMGxCQll3RkFZSUt3WUJCUVVIQXdFRwpDQ3NHQVFVRkJ3TUNNQTBHQ1NxR1NJYjNEUUVCQ3dVQUE0SUJBUUNsN2xXZm0xU05YeHh6MFBjY1R2WGIzVXV0CmowWUVlRms3NGJSMEFGa1ozV1RFT2NoVFpPYTNlakpwcHBMU2l3QWVSYldENm82LzBSMDRsTGdmQWU3WTVha2gKOFg5N0ozR0dob2pjbjlKclMrRkNDanhmSVQ2MXF3QXdzYUdKbWdvSUFwTEdhOUhLOTFWL0NnemkvbHdPalhpNgpSYWZpMEROSTkxWHJJQ3lNR292K1Z3bzV5YmJWeVk3bGFOMk5WTnVRa0dKbXZNNDZ3YjkrMmpuNFN6T3pZdU93Ck1ISmlYRFNoOVpidWFLaU5pQXRiaVZnWXNLbWZyaWFzVmVhd1oxbFFEcFhKQUJ0K0EyTm5BNFlySTNJSjZvazYKaFpqcmdKcWQyYzVhZGpEdzgrTERNR1lZNTIwamNhdjVuRXVMYWliMmJkRkRYSzZOaGtCMElBV2cwbFNHCi0tLS0tRU5EIENFUlRJRklDQVRFLS0tLS0K
8+
LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUR1VENDQXFHZ0F3SUJBZ0lVWUg5M2xBVG9wdGR3NXF6NXU5TUJtS0xvSjljd0RRWUpLb1pJaHZjTkFRRUwKQlFBd1pERUxNQWtHQTFVRUJoTUNWVk14Q3pBSkJnTlZCQWdNQWtOQk1SWXdGQVlEVlFRSERBMU5iM1Z1ZEdGcApiaUJXYVdWM01RMHdDd1lEVlFRS0RBUlhVMDh5TVEwd0N3WURWUVFMREFSWFUwOHlNUkl3RUFZRFZRUUREQWxzCmIyTmhiR2h2YzNRd0hoY05NalV3T0RFek1UQXhOVEF3V2hjTk1qY3hNakkyTVRBeE5UQXdXakJrTVFzd0NRWUQKVlFRR0V3SlZVekVMTUFrR0ExVUVDQXdDUTBFeEZqQVVCZ05WQkFjTURVMXZkVzUwWVdsdUlGWnBaWGN4RFRBTApCZ05WQkFvTUJGZFRUekl4RFRBTEJnTlZCQXNNQkZkVFR6SXhFakFRQmdOVkJBTU1DV3h2WTJGc2FHOXpkRENDCkFTSXdEUVlKS29aSWh2Y05BUUVCQlFBRGdnRVBBRENDQVFvQ2dnRUJBTFV6VXBlczJtZDZJTUhlekFsKzBHQ1IKLzhxSlpsRzFDcFZ3OVBGemtrTUovYlgrK2hMNG8xNGMwNHdiRk93WFpFQXcrSHBIdmpBbDYyOFhhbHRHYXZrOAoyZ3hpaG9McjdoZkp2R2xOOTZ4aFNTMW5Ialh4OHVaUmtXQkRPWTFodXZ2QTF4a3lUcDR3cW44OGRJeWlHckwrCkRKdlNlZlhzbTlwMWN4dFM3dnJtZXZiRTR2aTVqT1pNeHp2QjVFVHRkMk90d1g4M0NHckJkSXV2YzhlMkNvQzQKOFpaMXlkMnhZMWpiTmUvb0V1QTB0ZTE4Q2tCTWlPczhUeVNCZjhRTGp5a1A3ZW9OaEk1Sm5uMXZUYjE3SnQ4WAo3ekxRb2pGSVBpS211ZGR2d2krMklDdUNLNGNiOWpQbFhmSHNGSUptWk1RZ2wvcDJXR3VkdWljRWt3WS9jY2NDCkF3RUFBYU5qTUdFd0ZBWURWUjBSQkEwd0M0SUpiRzlqWVd4b2IzTjBNQjBHQTFVZERnUVdCQlJOR1B2SzhyNTgKeGJvL29PS3Y1QzJNMlZLbGFqQUxCZ05WSFE4RUJBTUNCUEF3SFFZRFZSMGxCQll3RkFZSUt3WUJCUVVIQXdFRwpDQ3NHQVFVRkJ3TUNNQTBHQ1NxR1NJYjNEUUVCQ3dVQUE0SUJBUUJMS1hwSHR4MnBzQWJaSzd3MVAveG4xRC9OCmxTK3l6dDlXSVJrOXZpMUFOUElwaG82R3RRVkNKaVdaMiszWTVpTGk4Z2szYkxlLytydVRKWjdEMkJIbXMzaGUKblZqay9mT3I5SkFtSUIwcXB4Y1ZqT004ODNOTDRReUFFU0pYSDB5cEFEVkhGbXBWUTlCZWdiTnUyQUtZd3NiNQo2Qmoxd0RGZDQ2WENjcmE1cmVoWXZPK2VGTU5QelI1V1pDRmdsb296bVFCWERxMThUL1BwODRqOGdLT2FIUWpGClFJQVovS1RQUW1FT1E3K2lhY0JoZENmc3oweE5aMTRaaEpkV012QmRWUC90RitwVU8zZyswRnVqSWF6OTJ3YkYKUnp6QmovUmNYdTI4NytuRXVURkZ4SmR3eXU4OENIRUc4Vk1aOEZHWGU0dWUxekJtN2FUNU5MaVgycmpOCi0tLS0tRU5EIENFUlRJRklDQVRFLS0tLS0K

0 commit comments

Comments
 (0)