(req dto.SwapHelper)
| 235 | } |
| 236 | |
| 237 | func (u *DeviceService) UpdateSwap(req dto.SwapHelper) error { |
| 238 | taskItem, err := task.NewTaskWithOps(req.Path, task.TaskSwapSet, task.TaskScopeSystem, req.TaskID, 1) |
| 239 | if err != nil { |
| 240 | global.LOG.Errorf("new task for create container failed, err: %v", err) |
| 241 | return err |
| 242 | } |
| 243 | |
| 244 | taskItem.AddSubTask(i18n.GetMsgWithMap("SetSwap", map[string]interface{}{"path": req.Path, "size": common.LoadSizeUnit2F(float64(req.Size * 1024))}), func(t *task.Task) error { |
| 245 | if cmd.CheckIllegal(req.Path) { |
| 246 | return buserr.New("ErrCmdIllegal") |
| 247 | } |
| 248 | cmdMgr := cmd.NewCommandMgr(cmd.WithTask(*taskItem)) |
| 249 | if !req.IsNew { |
| 250 | if err := cmdMgr.Run("swapoff", req.Path); err != nil { |
| 251 | return fmt.Errorf("handle swapoff %s failed, %v", req.Path, err) |
| 252 | } |
| 253 | } |
| 254 | if req.Size == 0 { |
| 255 | if req.Path == path.Join(global.Dir.BaseDir, ".1panel_swap") { |
| 256 | _ = os.Remove(path.Join(global.Dir.BaseDir, ".1panel_swap")) |
| 257 | } |
| 258 | return operateSwapWithFile(true, req) |
| 259 | } |
| 260 | taskItem.LogStart(i18n.GetMsgByKey("CreateSwap")) |
| 261 | if err := cmdMgr.Run("dd", "if=/dev/zero", fmt.Sprintf("of=%s", req.Path), "bs=1024", fmt.Sprintf("count=%d", req.Size)); err != nil { |
| 262 | return fmt.Errorf("handle dd %s failed, %v", req.Path, err) |
| 263 | } |
| 264 | |
| 265 | taskItem.Log("chmod 0600 " + req.Path) |
| 266 | if err := cmdMgr.Run("chmod", "0600", req.Path); err != nil { |
| 267 | return fmt.Errorf("handle chmod 0600 %s failed, %v", req.Path, err) |
| 268 | } |
| 269 | taskItem.LogStart(i18n.GetMsgByKey("FormatSwap")) |
| 270 | if err := cmdMgr.Run("mkswap", "-f", req.Path); err != nil { |
| 271 | return fmt.Errorf("handle mkswap -f %s failed, %v", req.Path, err) |
| 272 | } |
| 273 | |
| 274 | taskItem.LogStart(i18n.GetMsgByKey("EnableSwap")) |
| 275 | if err := cmdMgr.Run("swapon", req.Path); err != nil { |
| 276 | _ = cmdMgr.Run("swapoff", req.Path) |
| 277 | return fmt.Errorf("handle swapoff %s failed, %v", req.Path, err) |
| 278 | } |
| 279 | return operateSwapWithFile(false, req) |
| 280 | }, nil) |
| 281 | go func() { |
| 282 | _ = taskItem.Execute() |
| 283 | }() |
| 284 | return nil |
| 285 | } |
| 286 | |
| 287 | func (u *DeviceService) LoadConf(name string) (string, error) { |
| 288 | pathItem := "" |
nothing calls this directly
no test coverage detected