MCPcopy Index your code
hub / github.com/linuxkit/linuxkit / CreateInstance

Method CreateInstance

src/cmd/linuxkit/scaleway.go:119–173  ·  view source on GitHub ↗

CreateInstance create an instance with one additional volume

(volumeSize int)

Source from the content-addressed store, hash-verified

117
118// CreateInstance create an instance with one additional volume
119func (s *ScalewayClient) CreateInstance(volumeSize int) (string, error) {
120 // get the Ubuntu Bionic image id
121 imageID, err := s.getImageID(defaultScalewayImageName, defaultScalewayCommercialType, defaultScalewayImageArch)
122 if err != nil {
123 return "", err
124 }
125
126 scwVolumeSize := scw.Size(volumeSize)
127 builderVolumeSize := scwVolumeSize * scw.GB
128
129 createVolumeRequest := &instance.CreateVolumeRequest{
130 Name: "linuxkit-builder-volume",
131 VolumeType: "l_ssd",
132 Size: &builderVolumeSize,
133 }
134
135 log.Debugf("Creating volume on Scaleway")
136 volumeResp, err := s.instanceAPI.CreateVolume(createVolumeRequest)
137 if err != nil {
138 return "", err
139 }
140
141 volumeMap := map[string]*instance.VolumeTemplate{
142 "0": {Size: (scalewayInstanceVolumeSize - scwVolumeSize) * scw.GB},
143 }
144
145 createServerRequest := &instance.CreateServerRequest{
146 Name: "linuxkit-builder",
147 CommercialType: defaultScalewayCommercialType,
148 DynamicIPRequired: &scalewayDynamicIPRequired,
149 Image: imageID,
150 EnableIPv6: false,
151 BootType: &scalewayBootType,
152 Volumes: volumeMap,
153 }
154
155 log.Debug("Creating server on Scaleway")
156 serverResp, err := s.instanceAPI.CreateServer(createServerRequest)
157 if err != nil {
158 return "", err
159 }
160
161 attachVolumeRequest := &instance.AttachVolumeRequest{
162 ServerID: serverResp.Server.ID,
163 VolumeID: volumeResp.Volume.ID,
164 }
165
166 _, err = s.instanceAPI.AttachVolume(attachVolumeRequest)
167 if err != nil {
168 return "", nil
169 }
170
171 log.Debugf("Created server %s on Scaleway", serverResp.Server.ID)
172 return serverResp.Server.ID, nil
173}
174
175// GetSecondVolumeID returns the ID of the second volume of the server
176func (s *ScalewayClient) GetSecondVolumeID(instanceID string) (string, error) {

Callers 1

pushScalewayCmdFunction · 0.95

Calls 1

getImageIDMethod · 0.95

Tested by

no test coverage detected