Skip to content
This repository was archived by the owner on Mar 30, 2023. It is now read-only.

Commit 346bf8b

Browse files
authored
Merge pull request #101 from RSE-Cambridge/persistent-mount
Ensure filesystem mount gets correct persistent mount path
2 parents 710960f + 40a618a commit 346bf8b

3 files changed

Lines changed: 14 additions & 8 deletions

File tree

internal/pkg/dacctl/workflow_impl/session.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -111,7 +111,7 @@ func (s sessionFacade) CreateSession(session datamodel.Session) error {
111111
if err != nil {
112112
return session, err
113113
}
114-
if session.ActualSizeBytes == 0 {
114+
if session.ActualSizeBytes == 0 && len(session.MultiJobAttachments) == 0 {
115115
// Skip creating an empty filesystem
116116
return datamodel.Session{}, nil
117117
}

internal/pkg/filesystem_impl/mount.go

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -224,7 +224,7 @@ func mountRemoteFilesystem(fsType FSType, hostname string, lnetSuffix string, mg
224224
func mountLustre(hostname string, lnetSuffix string, mgtHost string, fsname string, directory string) error {
225225
// We assume modprobe -v lustre is already done
226226
// First check if we are mounted already
227-
if err := runner.Execute(hostname, fmt.Sprintf("grep %s /etc/mtab", directory)); err != nil {
227+
if err := runner.Execute(hostname, fmt.Sprintf("grep %s /etc/mtab", directory)); err != nil || conf.SkipAnsible {
228228
if err := runner.Execute(hostname, fmt.Sprintf(
229229
"mount -t lustre -o flock,nodev,nosuid %s%s:/%s %s",
230230
mgtHost, lnetSuffix, fsname, directory)); err != nil {
@@ -282,7 +282,8 @@ func (*run) Execute(hostname string, cmdStr string) error {
282282
log.Println(string(output))
283283
return nil
284284
} else {
285-
log.Println("Error in remove ssh run:", string(output))
285+
log.Printf("Error in remote ssh run: '%s' error: %s\n", cmdStr, err.Error())
286+
log.Println(string(output))
286287
return err
287288
}
288289
}

internal/pkg/filesystem_impl/mount_test.go

Lines changed: 10 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,9 @@ func (f *fakeRunner) Execute(hostname string, cmdStr string) error {
2121
if cmdStr == "grep /mnt/dac/job1_job /etc/mtab" {
2222
return errors.New("trigger mount")
2323
}
24+
if cmdStr == "grep /mnt/dac/job1_persistent_asdf /etc/mtab" {
25+
return errors.New("trigger mount")
26+
}
2427
return f.err
2528
}
2629

@@ -183,7 +186,7 @@ func Test_Umount_multi(t *testing.T) {
183186
fake := &fakeRunner{}
184187
runner = fake
185188

186-
sessionName := datamodel.SessionName("asdf")
189+
sessionName := datamodel.SessionName("asdf2")
187190
internalName := "uuidasdf"
188191
primaryBrickHost := datamodel.BrickHostName("host1")
189192
attachment := datamodel.AttachmentSession{
@@ -200,9 +203,9 @@ func Test_Umount_multi(t *testing.T) {
200203
assert.Equal(t, 3, fake.calls)
201204

202205
assert.Equal(t, "client1", fake.hostnames[0])
203-
assert.Equal(t, "grep /mnt/dac/job1_persistent_asdf /etc/mtab", fake.cmdStrs[0])
204-
assert.Equal(t, "umount /mnt/dac/job1_persistent_asdf", fake.cmdStrs[1])
205-
assert.Equal(t, "rm -df /mnt/dac/job1_persistent_asdf", fake.cmdStrs[2])
206+
assert.Equal(t, "grep /mnt/dac/job1_persistent_asdf2 /etc/mtab", fake.cmdStrs[0])
207+
assert.Equal(t, "umount /mnt/dac/job1_persistent_asdf2", fake.cmdStrs[1])
208+
assert.Equal(t, "rm -df /mnt/dac/job1_persistent_asdf2", fake.cmdStrs[2])
206209
}
207210

208211
func Test_Mount_multi(t *testing.T) {
@@ -227,10 +230,12 @@ func Test_Mount_multi(t *testing.T) {
227230
owner, group, false)
228231

229232
assert.Nil(t, err)
230-
assert.Equal(t, 2, fake.calls)
233+
assert.Equal(t, 3, fake.calls)
231234

232235
assert.Equal(t, "client1", fake.hostnames[0])
233236
assert.Equal(t, "mkdir -p /mnt/dac/job1_persistent_asdf", fake.cmdStrs[0])
234237
assert.Equal(t, "client1", fake.hostnames[1])
235238
assert.Equal(t, "grep /mnt/dac/job1_persistent_asdf /etc/mtab", fake.cmdStrs[1])
239+
assert.Equal(t, "client1", fake.hostnames[2])
240+
assert.Equal(t, "mount -t lustre -o flock,nodev,nosuid host1:/uuidasdf /mnt/dac/job1_persistent_asdf", fake.cmdStrs[2])
236241
}

0 commit comments

Comments
 (0)