func validateMountsExist(spec *rspec.Spec) error { logrus.Debugf("validating mounts exist") mountInfos, err := mount.GetMounts() if err != nil { return err } mountsMap := make(map[string][]rspec.Mount) for _, mountInfo := range mountInfos { m := rspec.Mount{ Destination: mountInfo.Mountpoint, Type: mountInfo.Fstype, Source: mountInfo.Source, } mountsMap[mountInfo.Mountpoint] = append(mountsMap[mountInfo.Mountpoint], m) } for _, specMount := range spec.Mounts { found := false for _, sysMount := range mountsMap[specMount.Destination] { if err := mountMatch(specMount, sysMount); err == nil { found = true break } } if !found { return fmt.Errorf("Expected mount %v does not exist", specMount) } } return nil }
func validateDefaultFS(spec *rspec.Spec) error { logrus.Debugf("validating linux default filesystem") mountInfos, err := mount.GetMounts() if err != nil { return err } mountsMap := make(map[string]string) for _, mountInfo := range mountInfos { mountsMap[mountInfo.Mountpoint] = mountInfo.Fstype } for fs, fstype := range defaultFS { if !(mountsMap[fs] == fstype) { return fmt.Errorf("%v must exist and expected type is %v", fs, fstype) } } return nil }