Skip to content

Commit

Permalink
refactor(orc8r): move GetControlProxy to tenants
Browse files Browse the repository at this point in the history
Create a function `GetControlProxyFromNetworkID` in tenants to take over
the functionality of `GetControlProxy` in registration. Create the
corresponding tests in tenants and adjust the tests in registration to
use the proper service calls.

Signed-off-by: Sebastian Wolf <sebastian.wolf@tngtech.com>
  • Loading branch information
wolfseb committed May 29, 2022
1 parent 3c29ea4 commit 5e29472
Show file tree
Hide file tree
Showing 7 changed files with 252 additions and 100 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -6,8 +6,6 @@ import (
"fmt"

"github.com/go-openapi/strfmt"
"google.golang.org/grpc/codes"
"google.golang.org/grpc/status"

"magma/orc8r/cloud/go/orc8r"
"magma/orc8r/cloud/go/serdes"
Expand Down Expand Up @@ -77,34 +75,13 @@ func RegisterDevice(deviceInfo *protos.GatewayDeviceInfo, hwid *protos.AccessGat
}

func GetControlProxy(networkID string) (string, error) {
// TODO(#10536) Move functionality to get control_proxy from networkID into tenants service
tenantList, err := tenants.GetAllTenants(context.Background())
controlProxy, err := tenants.GetControlProxyFromNetworkID(context.Background(), networkID)
if err != nil {
return "", err
clientErr := fmt.Errorf("could not get control-proxy from tenant with network ID %s: %w", networkID, err)
return "", clientErr
}

var tenantID int64
isTenantFound := false
for _, t := range tenantList.GetTenants() {
for _, n := range t.Tenant.Networks {
if n == networkID {
tenantID = t.Id
isTenantFound = true
break
}
}
}

if !isTenantFound {
return "", status.Errorf(codes.NotFound, "tenantID for current NetworkID %v not found", networkID)
}

cp, err := tenants.GetControlProxy(context.Background(), tenantID)
if err != nil {
return "", err
}

return cp.ControlProxy, nil
return controlProxy.GetControlProxy(), nil
}

// makeErr makes a protos.RegisterResponse_Error for protos.RegisterResponse
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -31,7 +31,7 @@ import (
stateTestInit "magma/orc8r/cloud/go/services/state/test_init"
"magma/orc8r/cloud/go/services/tenants"
tenant_protos "magma/orc8r/cloud/go/services/tenants/protos"
tenantsTestInit "magma/orc8r/cloud/go/services/tenants/test_init"
tenant_TestInit "magma/orc8r/cloud/go/services/tenants/test_init"
"magma/orc8r/lib/go/protos"
)

Expand Down Expand Up @@ -106,7 +106,7 @@ func TestGetControlProxy_NoNetworkID(t *testing.T) {
setupAddNetworksToTenantsService(t)

res, err := registration.GetControlProxy(networkID)
assert.Equal(t, status.Errorf(codes.NotFound, "tenantID for current NetworkID %v not found", networkID), err)
assert.Equal(t, fmt.Errorf("could not get control-proxy from tenant with network ID %s: Not found", networkID).Error(), err.Error())
assert.Equal(t, "", res)
}

Expand All @@ -120,7 +120,7 @@ func TestGetControlProxy_NoControlProxy(t *testing.T) {
addTenant(t, networkIDTenant)

res, err := registration.GetControlProxy(networkID)
assert.Equal(t, "Not found", err.Error())
assert.Equal(t, fmt.Errorf("could not get control-proxy from tenant with network ID %s: Not found", networkID).Error(), err.Error())
assert.Equal(t, "", res)
}

Expand Down Expand Up @@ -201,7 +201,7 @@ func setupAddNetworksToTenantsService(t *testing.T) {
Networks: []string{"network3", "network4"},
}
)
tenantsTestInit.StartTestService(t)
tenant_TestInit.StartTestService(t)

addTenant(t, tenant1)
addTenant(t, tenant2)
Expand Down
14 changes: 14 additions & 0 deletions orc8r/cloud/go/services/tenants/client_api.go
Original file line number Diff line number Diff line change
Expand Up @@ -135,6 +135,20 @@ func GetControlProxy(ctx context.Context, tenantID int64) (*tenant_protos.GetCon
return controlProxy, nil
}

func GetControlProxyFromNetworkID(ctx context.Context, networkID string) (*tenant_protos.GetControlProxyResponse, error) {
oc, err := getTenantsClient()
if err != nil {
return nil, err
}

controlProxy, err := oc.GetControlProxyFromNetworkID(ctx, &tenant_protos.GetControlProxyFromNetworkIDRequest{NetworkID: networkID})
if err != nil {
return nil, mapErr(err)
}

return controlProxy, nil
}

func CreateOrUpdateControlProxy(ctx context.Context, controlProxy *tenant_protos.CreateOrUpdateControlProxyRequest) error {
oc, err := getTenantsClient()
if err != nil {
Expand Down

0 comments on commit 5e29472

Please sign in to comment.