/
base.go
141 lines (115 loc) · 4.38 KB
/
base.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
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
package clusters
import (
"context"
"k8s.io/client-go/rest"
"yunion.io/x/jsonutils"
"yunion.io/x/onecloud/pkg/cloudcommon/db/taskman"
"yunion.io/x/onecloud/pkg/httperrors"
"yunion.io/x/onecloud/pkg/mcclient"
"yunion.io/x/pkg/errors"
"yunion.io/x/kubecomps/pkg/kubeserver/api"
"yunion.io/x/kubecomps/pkg/kubeserver/models"
"yunion.io/x/kubecomps/pkg/kubeserver/models/manager"
)
type SBaseDriver struct {
modeType api.ModeType
providerType api.ProviderType
clusterResourceType api.ClusterResourceType
}
func newBaseDriver(mt api.ModeType, pt api.ProviderType, ct api.ClusterResourceType) *SBaseDriver {
return &SBaseDriver{
modeType: mt,
providerType: pt,
clusterResourceType: ct,
}
}
func (d *SBaseDriver) GetMode() api.ModeType {
return d.modeType
}
func (d *SBaseDriver) GetProvider() api.ProviderType {
return d.providerType
}
func (d *SBaseDriver) GetResourceType() api.ClusterResourceType {
return d.clusterResourceType
}
func GetMachineDriver(d models.IClusterDriver, mT api.MachineResourceType) models.IMachineDriver {
drv := models.GetMachineDriver(d.GetProvider(), mT)
return drv
}
func (d *SBaseDriver) ValidateCreateData(userCred mcclient.TokenCredential, ownerId mcclient.IIdentityProvider, query jsonutils.JSONObject, input *api.ClusterCreateInput) error {
return nil
}
func (d *SBaseDriver) PreCheck(s *mcclient.ClientSession, data jsonutils.JSONObject) (*api.ClusterPreCheckResp, error) {
return &api.ClusterPreCheckResp{
Pass: true,
}, nil
}
func (d *SBaseDriver) ValidateDeleteCondition() error {
return nil
}
func (d *SBaseDriver) NeedCreateMachines() bool {
return true
}
func (d *SBaseDriver) GetAddonsHelmCharts(cluster *models.SCluster, conf *api.ClusterAddonsManifestConfig) ([]*models.ClusterHelmChartInstallOption, error) {
return nil, nil
}
func (d *SBaseDriver) GetAddonsManifest(cluster *models.SCluster, conf *api.ClusterAddonsManifestConfig) (string, error) {
return "", nil
}
func baseValidateCreateMachines(
ctx context.Context,
userCred mcclient.TokenCredential,
cluster *models.SCluster,
data []*api.CreateMachineData,
) ([]*api.CreateMachineData, []*api.CreateMachineData, error) {
var needControlplane bool
var err error
var clusterId string
if cluster != nil {
clusterId = cluster.GetId()
needControlplane, err = cluster.NeedControlplane()
}
if err != nil {
return nil, nil, errors.Wrapf(err, "check cluster need controlplane")
}
controls, nodes := models.GroupCreateMachineDatas(clusterId, data)
if needControlplane {
if len(controls) == 0 {
return nil, nil, httperrors.NewInputParameterError("controlplane node must created")
}
}
return controls, nodes, nil
}
func (d *SBaseDriver) ValidateCreateMachines(
ctx context.Context,
userCred mcclient.TokenCredential,
cluster *models.SCluster,
_ *api.ClusterMachineCommonInfo,
data []*api.CreateMachineData,
) ([]*api.CreateMachineData, []*api.CreateMachineData, error) {
return baseValidateCreateMachines(ctx, userCred, cluster, data)
}
func (d *SBaseDriver) CreateMachines(ctx context.Context, userCred mcclient.TokenCredential, cluster *models.SCluster, data []*api.CreateMachineData) ([]manager.IMachine, error) {
return nil, nil
}
func (d *SBaseDriver) GetUsableInstances(s *mcclient.ClientSession) ([]api.UsableInstance, error) {
return nil, nil
}
func (d *SBaseDriver) RequestDeleteMachines(ctx context.Context, userCred mcclient.TokenCredential, cluster *models.SCluster, machines []manager.IMachine, task taskman.ITask) error {
return nil
}
func (d *SBaseDriver) RequestDeployMachines(ctx context.Context, userCred mcclient.TokenCredential, cluster *models.SCluster, action api.ClusterDeployAction, machines []manager.IMachine, skipDownloads bool, task taskman.ITask) error {
return nil
}
func (d *SBaseDriver) GetKubesprayConfig(ctx context.Context, cluster *models.SCluster) (*api.ClusterKubesprayConfig, error) {
return nil, httperrors.NewNotAcceptableError("Cluster can not get kubespray config")
}
func (d *SBaseDriver) ValidateDeleteMachines(ctx context.Context, userCred mcclient.TokenCredential, cluster *models.SCluster, machines []manager.IMachine) error {
return nil
}
func (d *SBaseDriver) GetClusterUsers(cluster *models.SCluster, config *rest.Config) ([]api.ClusterUser, error) {
return nil, nil
}
func (d *SBaseDriver) GetClusterUserGroups(cluster *models.SCluster, config *rest.Config) ([]api.ClusterUserGroup, error) {
return nil, nil
}