From a470aa2db41d93705fad72a3d36b53a334f7446d Mon Sep 17 00:00:00 2001 From: Stefan Agner Date: Wed, 15 Mar 2023 14:13:12 +0100 Subject: [PATCH] Add API to trigger data disk move only (#129) * Add API to trigger data disk move only Add a new D-Bus API which allows to trigger the data disk move only. This allows to handle the selection and partitioning from Supervisor directly (via UDisks2 D-Bus API). Handling partitioning directly in Supervisor should improve device detection/selection and allows for better error handling. * Drop return value from MarkDataMove * Fix linter error --- datadisk/datadisk.go | 27 ++++++++++++++++++--------- 1 file changed, 18 insertions(+), 9 deletions(-) diff --git a/datadisk/datadisk.go b/datadisk/datadisk.go index 58b8e5a..622d3ca 100644 --- a/datadisk/datadisk.go +++ b/datadisk/datadisk.go @@ -40,6 +40,21 @@ type datadisk struct { props *prop.Properties } +func (d datadisk) MarkDataMove() *dbus.Error { + /* Move request marker for hassos-data.service */ + fileName := "/mnt/overlay/move-data" + _, err := os.Stat(fileName) + if os.IsNotExist(err) { + file, err := os.Create(fileName) + if err != nil { + return dbus.MakeFailedError(err) + } + defer file.Close() + } + + return nil +} + func (d datadisk) ChangeDevice(newDevice string) (bool, *dbus.Error) { logging.Info.Printf("Request to change data disk to %s.", newDevice) @@ -59,15 +74,9 @@ func (d datadisk) ChangeDevice(newDevice string) (bool, *dbus.Error) { return false, dbus.MakeFailedError(err) } - /* Move request marker for hassos-data.service */ - fileName := "/mnt/overlay/move-data" - _, err = os.Stat(fileName) - if os.IsNotExist(err) { - file, err := os.Create(fileName) - if err != nil { - return false, dbus.MakeFailedError(err) - } - defer file.Close() + dbuserr := d.MarkDataMove() + if dbuserr != nil { + return false, dbuserr } return true, nil