in frontend/pkg/frontend/helpers.go [244:292]
func (f *Frontend) MarshalResource(ctx context.Context, resourceID *azcorearm.ResourceID, versionedInterface api.Version) ([]byte, *arm.CloudError) {
var responseBody []byte
logger := LoggerFromContext(ctx)
doc, err := f.dbClient.GetResourceDoc(ctx, resourceID)
if err != nil {
logger.Error(err.Error())
if errors.Is(err, database.ErrNotFound) {
return nil, arm.NewResourceNotFoundError(resourceID)
} else {
return nil, arm.NewInternalServerError()
}
}
switch doc.InternalID.Kind() {
case arohcpv1alpha1.ClusterKind:
csCluster, err := f.clusterServiceClient.GetCluster(ctx, doc.InternalID)
if err != nil {
logger.Error(err.Error())
return nil, CSErrorToCloudError(err, resourceID)
}
tracing.SetClusterAttributes(trace.SpanFromContext(ctx), csCluster)
responseBody, err = marshalCSCluster(csCluster, doc, versionedInterface)
if err != nil {
logger.Error(err.Error())
return nil, arm.NewInternalServerError()
}
case arohcpv1alpha1.NodePoolKind:
csNodePool, err := f.clusterServiceClient.GetNodePool(ctx, doc.InternalID)
if err != nil {
logger.Error(err.Error())
return nil, CSErrorToCloudError(err, resourceID)
}
responseBody, err = marshalCSNodePool(csNodePool, doc, versionedInterface)
if err != nil {
logger.Error(err.Error())
return nil, arm.NewInternalServerError()
}
default:
logger.Error(fmt.Sprintf("unsupported Cluster Service path: %s", doc.InternalID))
return nil, arm.NewInternalServerError()
}
return responseBody, nil
}