Skip to content

Commit

Permalink
Fix connection direction (radius-project#7076)
Browse files Browse the repository at this point in the history
# Description

This is to fix appgraph connection direction. 

## Type of change

- This pull request fixes a bug in Radius and has an approved issue
(issue link required).

Fixes: radius-project#7038

---------

Signed-off-by: Young Bu Park <[email protected]>
  • Loading branch information
youngbupark authored and willdavsmith committed Mar 4, 2024
1 parent adb8db1 commit f9d9f42
Show file tree
Hide file tree
Showing 8 changed files with 248 additions and 176 deletions.
11 changes: 5 additions & 6 deletions pkg/corerp/frontend/controller/applications/graph_util.go
Original file line number Diff line number Diff line change
Expand Up @@ -295,7 +295,7 @@ func computeGraph(applicationName string, applicationResources []generated.Gener
entry := applicationGraphResourcesByID[id]

for _, connection := range entry.Connections {
otherID := *connection.ID
otherID := to.String(connection.ID)
direction := connection.Direction

// For each connection let's make sure the destination is also part of the application graph. This handles
Expand Down Expand Up @@ -328,11 +328,10 @@ func computeGraph(applicationName string, applicationResources []generated.Gener
//id is the source from which the connections in connectionsBySource go out
if *direction == corerpv20231001preview.DirectionOutbound { // we are dealing with a relation formed by "connection"
connectionsBySource[id] = append(connectionsBySource[id], *connection)
dir := corerpv20231001preview.DirectionInbound
//otherID is the destination to the connections in connectionsByDestination
connectionInbound := corerpv20231001preview.ApplicationGraphConnection{
ID: &id,
Direction: &dir, //Direction is set with respect to Resource defining this connection
ID: to.Ptr(id),
Direction: to.Ptr(corerpv20231001preview.DirectionInbound), //Direction is set with respect to Resource defining this connection
}
connectionsByDestination[otherID] = append(connectionsByDestination[otherID], connectionInbound)
} else {
Expand Down Expand Up @@ -493,7 +492,7 @@ func connectionsFromAPIData(resource generated.GenericResource, allResources []g
// If we encounter an error processing this data, just skip "invalid" connection entry.
entries := []*corerpv20231001preview.ApplicationGraphConnection{}
for _, connection := range connections {
dir := corerpv20231001preview.DirectionInbound
dir := corerpv20231001preview.DirectionOutbound
data := corerpv20231001preview.ConnectionProperties{}
err := toStronglyTypedData(connection, &data)
if err == nil {
Expand Down Expand Up @@ -582,7 +581,7 @@ func providesFromAPIData(resource generated.GenericResource) []*corerpv20231001p
// If we encounter an error processing this data, just skip "invalid" connection entry.
entries := []*corerpv20231001preview.ApplicationGraphConnection{}
for _, connection := range connections {
dir := corerpv20231001preview.DirectionOutbound
dir := corerpv20231001preview.DirectionInbound
data := corerpv20231001preview.ContainerPortProperties{}
err := toStronglyTypedData(connection, &data)
if err == nil {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -140,6 +140,13 @@ func Test_computeGraph(t *testing.T) {
envResourceDataFile: "",
expectedDataFile: "graph-app-httproute-out.json",
},
{
name: "using httproute 2",
applicationName: "myapp",
appResourceDataFile: "graph-app-httproute2-in.json",
envResourceDataFile: "",
expectedDataFile: "graph-app-httproute2-out.json",
},
{
name: "direct route",
applicationName: "myapp",
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@
{
"connections": [
{
"direction": "Inbound",
"direction": "Outbound",
"id": "/planes/radius/local/resourcegroups/default/providers/Applications.Core/containers/backendapp"
}
],
Expand All @@ -13,7 +13,12 @@
"type": "Applications.Core/containers"
},
{
"connections": [],
"connections": [
{
"direction": "Inbound",
"id": "/planes/radius/local/resourcegroups/default/providers/Applications.Core/containers/frontend"
}
],
"id": "/planes/radius/local/resourcegroups/default/providers/Applications.Core/containers/backendapp",
"name": "backendapp",
"outputResources": [],
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@
{
"connections": [
{
"direction": "Outbound",
"direction": "Inbound",
"id": "/planes/radius/local/resourcegroups/default/providers/Applications.Core/httpRoutes/sql-rte"
}
],
Expand All @@ -13,18 +13,19 @@
"type": "Applications.Core/containers"
},
{
"connections": [
{
"direction": "Inbound",
"id": "/planes/radius/local/resourcegroups/default/providers/Applications.Core/containers/sql-app-ctnr"
}
],
"id": "/planes/radius/local/resourcegroups/default/providers/Applications.Datastores/sqlDatabases/sql-db",
"name": "sql-db",
"provisioningState": "Succeeded",
"type": "Applications.Datastores/sqlDatabases"
},
{
"connections": [
{
"direction": "Inbound",
"id": "/planes/radius/local/resourcegroups/default/providers/Applications.Core/containers/sql-ctnr"
}
],
"connections": [],
"id": "/planes/radius/local/resourcegroups/default/providers/Applications.Core/httpRoutes/sql-rte",
"name": "sql-rte",
"outputResources": [],
Expand All @@ -34,7 +35,7 @@
{
"connections": [
{
"direction": "Inbound",
"direction": "Outbound",
"id": "/planes/radius/local/resourcegroups/default/providers/Applications.Datastores/sqlDatabases/sql-db"
}
],
Expand All @@ -44,4 +45,4 @@
"provisioningState": "Succeeded",
"type": "Applications.Core/containers"
}
]
]
Original file line number Diff line number Diff line change
@@ -0,0 +1,72 @@
[
{
"id": "/planes/radius/local/resourcegroups/default/providers/Applications.Core/httpRoutes/http-back-rte-simple1",
"name": "http-back-rte-simple1",
"properties": {
"application": "/planes/radius/local/resourcegroups/default/providers/Applications.Core/Applications/myapp",
"provisioningState": "Succeeded"
},
"type": "Applications.Core/httpRoutes"
},
{
"id": "/planes/radius/local/resourcegroups/default/providers/Applications.Core/containers/http-front-ctnr-simple1",
"name": "http-front-ctnr-simple1",
"properties": {
"application": "/planes/radius/local/resourcegroups/default/providers/Applications.Core/Applications/myapp",
"containers": {
"image": "magpie:latest",
"ports": {
"web": {
"port": 8080
}
},
"readinessProbe": {
"kind": "httpGet",
"path": "/healthz",
"containerPort": 8080
}
},
"connections": {
"backend": {
"source": "/planes/radius/local/resourcegroups/default/providers/Applications.Core/httpRoutes/http-back-rte-simple1"
}
},
"provisioningState": "Succeeded",
"status": {
"outputResources": {
"id": "/some/thing/else",
"localId": "something"
}
}
},
"type": "Applications.Core/containers"
},
{
"id": "/planes/radius/local/resourcegroups/default/providers/Applications.Core/containers/http-back-ctnr-simple1",
"name": "http-back-ctnr-simple1",
"properties": {
"application": "/planes/radius/local/resourcegroups/default/providers/Applications.Core/Applications/myapp",
"container": {
"ports": {
"web": {
"port": 8080,
"provides": "/planes/radius/local/resourcegroups/default/providers/Applications.Core/httpRoutes/http-back-rte-simple1"
}
},
"readinessProbe": {
"kind": "httpGet",
"path": "/healthz",
"containerPort": 8080
}
},
"provisioningState": "Succeeded",
"status": {
"outputResources": {
"id": "/some/thing/else",
"localId": "something"
}
}
},
"type": "Applications.Core/containers"
}
]
Original file line number Diff line number Diff line change
@@ -0,0 +1,41 @@
[
{
"connections": [
{
"direction": "Inbound",
"id": "/planes/radius/local/resourcegroups/default/providers/Applications.Core/containers/http-front-ctnr-simple1"
}
],
"id": "/planes/radius/local/resourcegroups/default/providers/Applications.Core/httpRoutes/http-back-rte-simple1",
"name": "http-back-rte-simple1",
"outputResources": [],
"provisioningState": "Succeeded",
"type": "Applications.Core/httpRoutes"
},
{
"connections": [
{
"direction": "Outbound",
"id": "/planes/radius/local/resourcegroups/default/providers/Applications.Core/httpRoutes/http-back-rte-simple1"
}
],
"id": "/planes/radius/local/resourcegroups/default/providers/Applications.Core/containers/http-front-ctnr-simple1",
"name": "http-front-ctnr-simple1",
"outputResources": [],
"provisioningState": "Succeeded",
"type": "Applications.Core/containers"
},
{
"connections": [
{
"direction": "Inbound",
"id": "/planes/radius/local/resourcegroups/default/providers/Applications.Core/httpRoutes/http-back-rte-simple1"
}
],
"id": "/planes/radius/local/resourcegroups/default/providers/Applications.Core/containers/http-back-ctnr-simple1",
"name": "http-back-ctnr-simple1",
"outputResources": [],
"provisioningState": "Succeeded",
"type": "Applications.Core/containers"
}
]
Loading

0 comments on commit f9d9f42

Please sign in to comment.