This repository has been archived by the owner on Mar 11, 2021. It is now read-only.
/
convert.go
54 lines (48 loc) · 1.8 KB
/
convert.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
package controller
import (
"context"
"github.com/fabric8-services/fabric8-common/convert/ptr"
"github.com/fabric8-services/fabric8-tenant/app"
"github.com/fabric8-services/fabric8-tenant/cluster"
"github.com/fabric8-services/fabric8-tenant/sentry"
"github.com/fabric8-services/fabric8-tenant/tenant"
)
type NamespaceFilter func(namespace tenant.Namespace) bool
type ClusterResolver func(ctx context.Context, target string) (cluster.Cluster, error)
func convertTenant(ctx context.Context, tenant *tenant.Tenant, namespaces []*tenant.Namespace, resolveCluster ClusterResolver) *app.Tenant {
nsAttributes := make([]*app.NamespaceAttributes, 0)
for _, ns := range namespaces {
nsCluster, err := resolveCluster(ctx, ns.MasterURL)
if err != nil {
sentry.LogError(ctx, map[string]interface{}{
"err": err,
"cluster_url": ns.MasterURL,
}, err, "unable to resolve nsCluster")
nsCluster = cluster.Cluster{}
}
nsAttributes = append(nsAttributes, &app.NamespaceAttributes{
CreatedAt: &ns.CreatedAt,
UpdatedAt: &ns.UpdatedAt,
ClusterURL: &ns.MasterURL,
ClusterAppDomain: &nsCluster.AppDNS,
ClusterConsoleURL: &nsCluster.ConsoleURL,
ClusterMetricsURL: &nsCluster.MetricsURL,
ClusterLoggingURL: &nsCluster.LoggingURL,
Name: &ns.Name,
Type: ptr.String(ns.Type.String()),
Version: &ns.Version,
State: ptr.String(ns.State.String()),
ClusterCapacityExhausted: &nsCluster.CapacityExhausted,
})
}
return &app.Tenant{
ID: &tenant.ID,
Type: "tenants",
Attributes: &app.TenantAttributes{
CreatedAt: &tenant.CreatedAt,
Email: &tenant.Email,
Profile: &tenant.Profile,
Namespaces: nsAttributes,
},
}
}