MCPcopy
hub / github.com/runfinch/finch / resizeDiskIfNeeded

Method resizeDiskIfNeeded

pkg/disk/disk_darwin.go:220–260  ·  view source on GitHub ↗
()

Source from the content-addressed store, hash-verified

218}
219
220func (m *userDataDiskManager) resizeDiskIfNeeded() error {
221 if m.config.DataDisk == nil {
222 return nil
223 }
224
225 configuredDataDiskBytes, err := units.RAMInBytes(*m.config.DataDisk)
226 if err != nil {
227 return fmt.Errorf("failed to parse configured disk size: %w", err)
228 }
229
230 diskPath := m.finch.UserDataDiskPath(m.rootDir)
231 info, err := m.getDiskInfo(diskPath)
232 if err != nil {
233 return err
234 }
235
236 actualDataDiskBytes := int64(info.VirtualSize)
237 if configuredDataDiskBytes == actualDataDiskBytes {
238 return nil
239 }
240
241 if configuredDataDiskBytes < actualDataDiskBytes {
242 m.logger.Warnf("Shrinking the data disk is not supported (configured: %s, current: %s), skipping resize",
243 units.BytesSize(float64(configuredDataDiskBytes)), units.BytesSize(float64(actualDataDiskBytes)))
244 return nil
245 }
246
247 size, err := sizeString(*m.config.DataDisk)
248 if err != nil {
249 return fmt.Errorf("failed to get disk size: %w", err)
250 }
251
252 m.logger.Infof("Resizing data disk from %s to %s", units.BytesSize(float64(actualDataDiskBytes)), size)
253 m.logger.Warnf("Increasing disk size is irreversible without losing data.")
254 cmd := m.ncc.CreateWithoutStdio("disk", "resize", diskName, "--size", size)
255 if logs, err := cmd.CombinedOutput(); err != nil {
256 return fmt.Errorf("failed to resize disk to %s, debug logs:\n%s", size, logs)
257 }
258
259 return nil
260}
261
262func sizeString(size string) (string, error) {
263 sizeB, err := units.RAMInBytes(size)

Callers 1

EnsureUserDataDiskMethod · 0.95

Calls 8

getDiskInfoMethod · 0.95
sizeStringFunction · 0.85
UserDataDiskPathMethod · 0.80
ErrorfMethod · 0.65
WarnfMethod · 0.65
InfofMethod · 0.65
CreateWithoutStdioMethod · 0.65
CombinedOutputMethod · 0.65

Tested by

no test coverage detected