MCPcopy
hub / github.com/kubernetes/kops / Build

Method Build

pkg/model/master_volumes.go:64–137  ·  view source on GitHub ↗
(c *fi.CloudupModelBuilderContext)

Source from the content-addressed store, hash-verified

62var _ fi.CloudupModelBuilder = &MasterVolumeBuilder{}
63
64func (b *MasterVolumeBuilder) Build(c *fi.CloudupModelBuilderContext) error {
65 for _, etcd := range b.Cluster.Spec.EtcdClusters {
66 for _, m := range etcd.Members {
67 // EBS volume for each member of each etcd cluster
68 prefix := m.Name + ".etcd-" + etcd.Name
69 name := prefix + "." + b.ClusterName()
70
71 igName := fi.ValueOf(m.InstanceGroup)
72 if igName == "" {
73 return fmt.Errorf("InstanceGroup not set on etcd %s/%s", m.Name, etcd.Name)
74 }
75 ig := b.FindInstanceGroup(igName)
76 if ig == nil {
77 return fmt.Errorf("InstanceGroup not found (for etcd %s/%s): %q", m.Name, etcd.Name, igName)
78 }
79
80 zones, err := model.FindZonesForInstanceGroup(b.Cluster, ig)
81 if err != nil {
82 return err
83 }
84 if len(zones) == 0 {
85 return fmt.Errorf("must specify a zone for instancegroup %q used by etcd %s/%s", igName, m.Name, etcd.Name)
86 }
87 if len(zones) != 1 {
88 return fmt.Errorf("must specify a unique zone for instancegroup %q used by etcd %s/%s", igName, m.Name, etcd.Name)
89 }
90 zone := zones[0]
91
92 volumeSize := fi.ValueOf(m.VolumeSize)
93 if volumeSize == 0 {
94 volumeSize = DefaultEtcdVolumeSize
95 }
96
97 var allMembers []string
98 for _, m := range etcd.Members {
99 allMembers = append(allMembers, m.Name)
100 }
101 sort.Strings(allMembers)
102
103 switch b.Cluster.GetCloudProvider() {
104 case kops.CloudProviderAWS:
105 err = b.addAWSVolume(c, name, volumeSize, zone, etcd, m, allMembers)
106 if err != nil {
107 return err
108 }
109 case kops.CloudProviderDO:
110 b.addDOVolume(c, name, volumeSize, zone, etcd, m, allMembers)
111 case kops.CloudProviderGCE:
112 b.addGCEVolume(c, prefix, volumeSize, zone, etcd, m, allMembers)
113 case kops.CloudProviderHetzner:
114 b.addHetznerVolume(c, name, volumeSize, zone, etcd, m, allMembers)
115 case kops.CloudProviderOpenstack:
116 err = b.addOpenstackVolume(c, name, volumeSize, zone, etcd, m, allMembers)
117 if err != nil {
118 return err
119 }
120 case kops.CloudProviderAzure:
121 err = b.addAzureVolume(c, name, volumeSize, zone, etcd, m, allMembers)

Callers

nothing calls this directly

Calls 12

addAWSVolumeMethod · 0.95
addDOVolumeMethod · 0.95
addGCEVolumeMethod · 0.95
addHetznerVolumeMethod · 0.95
addOpenstackVolumeMethod · 0.95
addAzureVolumeMethod · 0.95
addScalewayVolumeMethod · 0.95
ValueOfFunction · 0.92
FindInstanceGroupMethod · 0.80
ClusterNameMethod · 0.65
GetCloudProviderMethod · 0.65

Tested by

no test coverage detected