forked from cloudfoundry/auctioneer
/
resources.go
70 lines (59 loc) · 1.85 KB
/
resources.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
package auctioneer
import (
"errors"
"github.com/cloudfoundry-incubator/bbs/models"
"github.com/cloudfoundry-incubator/rep"
)
type TaskStartRequest struct {
rep.Task
}
func NewTaskStartRequest(task rep.Task) TaskStartRequest {
return TaskStartRequest{task}
}
func NewTaskStartRequestFromModel(t *models.Task) TaskStartRequest {
return TaskStartRequest{rep.NewTask(t.TaskGuid, t.Domain, rep.NewResource(t.MemoryMb, t.DiskMb, t.RootFs))}
}
func (t *TaskStartRequest) Validate() error {
switch {
case t.TaskGuid == "":
return errors.New("task guid is empty")
case t.Resource.Empty():
return errors.New("resources cannot be empty")
default:
return nil
}
}
type LRPStartRequest struct {
ProcessGuid string `json:"process_guid"`
Domain string `json:"domain"`
Indices []int `json:"indices"`
rep.Resource
}
func NewLRPStartRequest(processGuid, domain string, indices []int, res rep.Resource) LRPStartRequest {
return LRPStartRequest{
ProcessGuid: processGuid,
Domain: domain,
Indices: indices,
Resource: res,
}
}
func NewLRPStartRequestFromModel(d *models.DesiredLRP, indices ...int) LRPStartRequest {
return NewLRPStartRequest(d.ProcessGuid, d.Domain, indices, rep.NewResource(d.MemoryMb, d.DiskMb, d.RootFs))
}
func NewLRPStartRequestFromSchedulingInfo(s *models.DesiredLRPSchedulingInfo, indices ...int) LRPStartRequest {
return NewLRPStartRequest(s.ProcessGuid, s.Domain, indices, rep.NewResource(s.MemoryMb, s.DiskMb, s.RootFs))
}
func (lrpstart *LRPStartRequest) Validate() error {
switch {
case lrpstart.ProcessGuid == "":
return errors.New("proccess guid is empty")
case lrpstart.Domain == "":
return errors.New("domain is empty")
case len(lrpstart.Indices) == 0:
return errors.New("indices must not be empty")
case lrpstart.Resource.Empty():
return errors.New("resources cannot be empty")
default:
return nil
}
}