This repository has been archived by the owner on Jan 9, 2023. It is now read-only.
-
Notifications
You must be signed in to change notification settings - Fork 49
/
init.go
65 lines (55 loc) · 1.61 KB
/
init.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
// Copyright Jetstack Ltd. See LICENSE for details.
package provider
import (
clusterv1alpha1 "github.com/jetstack/tarmak/pkg/apis/cluster/v1alpha1"
tarmakv1alpha1 "github.com/jetstack/tarmak/pkg/apis/tarmak/v1alpha1"
"github.com/jetstack/tarmak/pkg/tarmak/interfaces"
"github.com/jetstack/tarmak/pkg/tarmak/provider/amazon"
"github.com/jetstack/tarmak/pkg/tarmak/utils/input"
)
func Init(init interfaces.Initialize) (provider *tarmakv1alpha1.Provider, err error) {
provider = &tarmakv1alpha1.Provider{}
for {
providerName, err := init.Input().AskOpen(&input.AskOpen{
Query: "Enter a unique name for this provider [a-z0-9-]+",
})
if err != nil {
return nil, err
}
nameValid := input.RegexpProviderName.MatchString(providerName)
nameUnique := init.Config().UniqueProviderName(providerName) == nil
if !nameValid {
init.Input().Warnf("provider name is not valid: %s", providerName)
}
if !nameUnique {
init.Input().Warnf("provider name is not unique: %s", providerName)
}
if nameValid && nameUnique {
provider.Name = providerName
break
}
}
providerloop:
for {
clouds := []string{clusterv1alpha1.CloudAmazon, clusterv1alpha1.CloudAzure}
cloud, err := init.Input().AskSelection(&input.AskSelection{
Query: "Select a cloud",
Choices: clouds,
Default: 0,
})
if err != nil {
return nil, err
}
switch clouds[cloud] {
case clusterv1alpha1.CloudAmazon:
err := amazon.Init(init.Input(), provider)
if err != nil {
return nil, err
}
break providerloop
default:
init.Input().Warn("unsupported cloud provider: ", clouds[cloud])
}
}
return provider, nil
}