-
Notifications
You must be signed in to change notification settings - Fork 156
/
seedsettings.go
89 lines (74 loc) · 2.61 KB
/
seedsettings.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
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
/*
Copyright 2021 The Kubermatic Kubernetes Platform contributors.
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
*/
package seedsettings
import (
"context"
"fmt"
"net/http"
"github.com/go-kit/kit/endpoint"
"github.com/gorilla/mux"
apiv2 "k8c.io/kubermatic/v2/pkg/api/v2"
kubermaticv1 "k8c.io/kubermatic/v2/pkg/apis/kubermatic/v1"
"k8c.io/kubermatic/v2/pkg/handler/v1/common"
"k8c.io/kubermatic/v2/pkg/provider"
utilerrors "k8c.io/kubermatic/v2/pkg/util/errors"
)
// getSeedSettingsReq defines HTTP request for getSeedSettings
// swagger:parameters getSeedSettings
type getSeedSettingsReq struct {
// in: path
// required: true
Name string `json:"seed_name"`
}
func DecodeGetSeedSettingsReq(c context.Context, r *http.Request) (interface{}, error) {
var req getSeedSettingsReq
name := mux.Vars(r)["seed_name"]
if name == "" {
return nil, fmt.Errorf("'seed_name' parameter is required but was not provided")
}
req.Name = name
return req, nil
}
// GetSeedSettingsEndpoint returns SeedSettings for a Seed cluster.
func GetSeedSettingsEndpoint(seedsGetter provider.SeedsGetter) endpoint.Endpoint {
return func(ctx context.Context, request interface{}) (interface{}, error) {
req, ok := request.(getSeedSettingsReq)
if !ok {
return nil, utilerrors.NewBadRequest("invalid request")
}
seedMap, err := seedsGetter()
if err != nil {
return nil, common.KubernetesErrorToHTTPError(err)
}
seed, ok := seedMap[req.Name]
if !ok {
return nil, utilerrors.NewNotFound("Seed", req.Name)
}
return convertSeedToSeedSettings(seed), nil
}
}
func convertSeedToSeedSettings(seed *kubermaticv1.Seed) *apiv2.SeedSettings {
seedSettings := &apiv2.SeedSettings{}
if seed.Spec.MLA != nil && seed.Spec.MLA.UserClusterMLAEnabled {
seedSettings.MLA.UserClusterMLAEnabled = true
}
if seed.Spec.Metering != nil {
seedSettings.Metering.Enabled = seed.Spec.Metering.Enabled
seedSettings.Metering.StorageClassName = seed.Spec.Metering.StorageClassName
seedSettings.Metering.StorageSize = seed.Spec.Metering.StorageSize
}
if len(seed.Spec.SeedDNSOverwrite) > 0 {
seedSettings.SeedDNSOverwrite = seed.Spec.SeedDNSOverwrite
}
return seedSettings
}