Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
22 changes: 11 additions & 11 deletions api/genericresource/helpers.go
Original file line number Diff line number Diff line change
Expand Up @@ -18,8 +18,8 @@ func NewSet(key string, vals ...string) []*api.GenericResource {
// NewString creates a String resource
func NewString(key, val string) *api.GenericResource {
return &api.GenericResource{
Resource: &api.GenericResource_Str{
Str: &api.GenericString{
Resource: &api.GenericResource_NamedResourceSpec{
NamedResourceSpec: &api.NamedGenericResource{
Kind: key,
Value: val,
},
Expand All @@ -30,8 +30,8 @@ func NewString(key, val string) *api.GenericResource {
// NewDiscrete creates a Discrete resource
func NewDiscrete(key string, val int64) *api.GenericResource {
return &api.GenericResource{
Resource: &api.GenericResource_Discrete{
Discrete: &api.GenericDiscrete{
Resource: &api.GenericResource_DiscreteResourceSpec{
DiscreteResourceSpec: &api.DiscreteGenericResource{
Kind: key,
Value: val,
},
Expand Down Expand Up @@ -86,21 +86,21 @@ loop:
// Returns true if the element is to be removed from the list
func remove(na, r *api.GenericResource) bool {
switch tr := r.Resource.(type) {
case *api.GenericResource_Discrete:
if na.GetDiscrete() == nil {
case *api.GenericResource_DiscreteResourceSpec:
if na.GetDiscreteResourceSpec() == nil {
return false // Type change, ignore
}

na.GetDiscrete().Value -= tr.Discrete.Value
if na.GetDiscrete().Value <= 0 {
na.GetDiscreteResourceSpec().Value -= tr.DiscreteResourceSpec.Value
if na.GetDiscreteResourceSpec().Value <= 0 {
return true
}
case *api.GenericResource_Str:
if na.GetStr() == nil {
case *api.GenericResource_NamedResourceSpec:
if na.GetNamedResourceSpec() == nil {
return false // Type change, ignore
}

if tr.Str.Value != na.GetStr().Value {
if tr.NamedResourceSpec.Value != na.GetNamedResourceSpec().Value {
return false // not the right item, ignore
}

Expand Down
6 changes: 3 additions & 3 deletions api/genericresource/helpers_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,7 @@ func TestConsumeResourcesSingle(t *testing.T) {

ConsumeNodeResources(&nodeAvailableResources, res)
assert.Len(t, nodeAvailableResources, 3)
assert.Equal(t, int64(3), nodeAvailableResources[2].GetDiscrete().Value)
assert.Equal(t, int64(3), nodeAvailableResources[2].GetDiscreteResourceSpec().Value)
}

func TestConsumeResourcesMultiple(t *testing.T) {
Expand Down Expand Up @@ -61,6 +61,6 @@ func TestConsumeResourcesMultiple(t *testing.T) {
assert.True(t, HasResource(NewString("grape", k), grapes))
}

assert.Equal(t, int64(5), oranges[0].GetDiscrete().Value)
assert.Equal(t, int64(1), bananas[0].GetDiscrete().Value)
assert.Equal(t, int64(5), oranges[0].GetDiscreteResourceSpec().Value)
assert.Equal(t, int64(1), bananas[0].GetDiscreteResourceSpec().Value)
}
4 changes: 2 additions & 2 deletions api/genericresource/parse_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@ func TestParseDiscrete(t *testing.T) {

apples := GetResource("apple", res)
assert.Equal(t, len(apples), 1)
assert.Equal(t, apples[0].GetDiscrete().Value, int64(3))
assert.Equal(t, apples[0].GetDiscreteResourceSpec().Value, int64(3))
}

func TestParseStr(t *testing.T) {
Expand Down Expand Up @@ -41,5 +41,5 @@ func TestParseDiscreteAndStr(t *testing.T) {

apples := GetResource("apple", res)
assert.Equal(t, len(apples), 1)
assert.Equal(t, apples[0].GetDiscrete().Value, int64(3))
assert.Equal(t, apples[0].GetDiscreteResourceSpec().Value, int64(3))
}
36 changes: 18 additions & 18 deletions api/genericresource/resource_management.go
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@ func Claim(nodeAvailableResources, taskAssigned *[]*api.GenericResource,
var resSelected []*api.GenericResource

for _, res := range taskReservations {
tr := res.GetDiscrete()
tr := res.GetDiscreteResourceSpec()
if tr == nil {
return fmt.Errorf("task should only hold Discrete type")
}
Expand All @@ -39,7 +39,7 @@ func ClaimResources(nodeAvailableResources, taskAssigned *[]*api.GenericResource
}

func selectNodeResources(nodeRes []*api.GenericResource,
tr *api.GenericDiscrete) ([]*api.GenericResource, error) {
tr *api.DiscreteGenericResource) ([]*api.GenericResource, error) {
var nrs []*api.GenericResource

for _, res := range nodeRes {
Expand All @@ -48,13 +48,13 @@ func selectNodeResources(nodeRes []*api.GenericResource,
}

switch nr := res.Resource.(type) {
case *api.GenericResource_Discrete:
if nr.Discrete.Value >= tr.Value && tr.Value != 0 {
case *api.GenericResource_DiscreteResourceSpec:
if nr.DiscreteResourceSpec.Value >= tr.Value && tr.Value != 0 {
nrs = append(nrs, NewDiscrete(tr.Kind, tr.Value))
}

return nrs, nil
case *api.GenericResource_Str:
case *api.GenericResource_NamedResourceSpec:
nrs = append(nrs, res.Copy())

if int64(len(nrs)) == tr.Value {
Expand Down Expand Up @@ -90,8 +90,8 @@ func reclaimResources(nodeAvailableResources *[]*api.GenericResource, taskAssign

for _, res := range taskAssigned {
switch tr := res.Resource.(type) {
case *api.GenericResource_Discrete:
nrs := GetResource(tr.Discrete.Kind, *nodeAvailableResources)
case *api.GenericResource_DiscreteResourceSpec:
nrs := GetResource(tr.DiscreteResourceSpec.Kind, *nodeAvailableResources)

// If the resource went down to 0 it's no longer in the
// available list
Expand All @@ -103,13 +103,13 @@ func reclaimResources(nodeAvailableResources *[]*api.GenericResource, taskAssign
continue // Type change
}

nr := nrs[0].GetDiscrete()
nr := nrs[0].GetDiscreteResourceSpec()
if nr == nil {
continue // Type change
}

nr.Value += tr.Discrete.Value
case *api.GenericResource_Str:
nr.Value += tr.DiscreteResourceSpec.Value
case *api.GenericResource_NamedResourceSpec:
*nodeAvailableResources = append(*nodeAvailableResources, res.Copy())
}
}
Expand Down Expand Up @@ -157,26 +157,26 @@ func sanitize(nodeRes []*api.GenericResource, nodeAvailableResources *[]*api.Gen
// Returns false if the element isn't in nodeRes and "sane" and the element(s) that should be replacing it
func sanitizeResource(nodeRes []*api.GenericResource, res *api.GenericResource) (ok bool, nrs []*api.GenericResource) {
switch na := res.Resource.(type) {
case *api.GenericResource_Discrete:
nrs := GetResource(na.Discrete.Kind, nodeRes)
case *api.GenericResource_DiscreteResourceSpec:
nrs := GetResource(na.DiscreteResourceSpec.Kind, nodeRes)

// Type change or removed: reset
if len(nrs) != 1 {
return false, nrs
}

// Type change: reset
nr := nrs[0].GetDiscrete()
nr := nrs[0].GetDiscreteResourceSpec()
if nr == nil {
return false, nrs
}

// Amount change: reset
if na.Discrete.Value > nr.Value {
if na.DiscreteResourceSpec.Value > nr.Value {
return false, nrs
}
case *api.GenericResource_Str:
nrs := GetResource(na.Str.Kind, nodeRes)
case *api.GenericResource_NamedResourceSpec:
nrs := GetResource(na.NamedResourceSpec.Kind, nodeRes)

// Type change
if len(nrs) == 0 {
Expand All @@ -185,11 +185,11 @@ func sanitizeResource(nodeRes []*api.GenericResource, res *api.GenericResource)

for _, nr := range nrs {
// Type change: reset
if nr.GetDiscrete() != nil {
if nr.GetDiscreteResourceSpec() != nil {
return false, nrs
}

if na.Str.Value == nr.GetStr().Value {
if na.NamedResourceSpec.Value == nr.GetNamedResourceSpec().Value {
return true, nil
}
}
Expand Down
52 changes: 26 additions & 26 deletions api/genericresource/resource_management_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -19,8 +19,8 @@ func TestClaimSingleDiscrete(t *testing.T) {
assert.Len(t, nodeRes, 1)
assert.Len(t, taskAssigned, 1)

assert.Equal(t, int64(1), nodeRes[0].GetDiscrete().Value)
assert.Equal(t, int64(2), taskAssigned[0].GetDiscrete().Value)
assert.Equal(t, int64(1), nodeRes[0].GetDiscreteResourceSpec().Value)
assert.Equal(t, int64(2), taskAssigned[0].GetDiscreteResourceSpec().Value)
}

func TestClaimMultipleDiscrete(t *testing.T) {
Expand All @@ -46,8 +46,8 @@ func TestClaimMultipleDiscrete(t *testing.T) {
assert.Len(t, apples, 1)
assert.Len(t, oranges, 1)

assert.Equal(t, int64(2), apples[0].GetDiscrete().Value)
assert.Equal(t, int64(4), oranges[0].GetDiscrete().Value)
assert.Equal(t, int64(2), apples[0].GetDiscreteResourceSpec().Value)
assert.Equal(t, int64(4), oranges[0].GetDiscreteResourceSpec().Value)
}

func TestClaimSingleStr(t *testing.T) {
Expand Down Expand Up @@ -102,13 +102,13 @@ func TestReclaimSingleDiscrete(t *testing.T) {
assert.NoError(t, err)

assert.Len(t, nodeRes, 1)
assert.Equal(t, int64(2), nodeRes[0].GetDiscrete().Value)
assert.Equal(t, int64(2), nodeRes[0].GetDiscreteResourceSpec().Value)

err = reclaimResources(&nodeRes, taskAssigned)
assert.NoError(t, err)

assert.Len(t, nodeRes, 1)
assert.Equal(t, int64(4), nodeRes[0].GetDiscrete().Value)
assert.Equal(t, int64(4), nodeRes[0].GetDiscreteResourceSpec().Value)
}

func TestReclaimMultipleDiscrete(t *testing.T) {
Expand All @@ -133,9 +133,9 @@ func TestReclaimMultipleDiscrete(t *testing.T) {
assert.Len(t, oranges, 1)
assert.Len(t, bananas, 1)

assert.Equal(t, int64(5), apples[0].GetDiscrete().Value)
assert.Equal(t, int64(4), oranges[0].GetDiscrete().Value)
assert.Equal(t, int64(2), bananas[0].GetDiscrete().Value)
assert.Equal(t, int64(5), apples[0].GetDiscreteResourceSpec().Value)
assert.Equal(t, int64(4), oranges[0].GetDiscreteResourceSpec().Value)
assert.Equal(t, int64(2), bananas[0].GetDiscreteResourceSpec().Value)
}

func TestReclaimSingleStr(t *testing.T) {
Expand Down Expand Up @@ -212,9 +212,9 @@ func TestReclaimResources(t *testing.T) {
assert.Len(t, grapes, 2)
assert.Len(t, coffe, 1)

assert.Equal(t, int64(6), apples[0].GetDiscrete().Value)
assert.Equal(t, int64(2), cakes[0].GetDiscrete().Value)
assert.Equal(t, int64(2), coffe[0].GetDiscrete().Value)
assert.Equal(t, int64(6), apples[0].GetDiscreteResourceSpec().Value)
assert.Equal(t, int64(2), cakes[0].GetDiscreteResourceSpec().Value)
assert.Equal(t, int64(2), coffe[0].GetDiscreteResourceSpec().Value)

for _, k := range []string{"red", "orange", "green", "blue"} {
assert.True(t, HasResource(NewString("orange", k), oranges))
Expand All @@ -241,19 +241,19 @@ func TestSanitizeDiscrete(t *testing.T) {

sanitize(nodeRes, &nodeAvailableResources)
assert.Len(t, nodeAvailableResources, 1)
assert.Equal(t, int64(4), nodeAvailableResources[0].GetDiscrete().Value)
assert.Equal(t, int64(4), nodeAvailableResources[0].GetDiscreteResourceSpec().Value)

nodeRes[0].GetDiscrete().Value = 4
nodeRes[0].GetDiscreteResourceSpec().Value = 4

sanitize(nodeRes, &nodeAvailableResources)
assert.Len(t, nodeAvailableResources, 1)
assert.Equal(t, int64(4), nodeAvailableResources[0].GetDiscrete().Value)
assert.Equal(t, int64(4), nodeAvailableResources[0].GetDiscreteResourceSpec().Value)

nodeRes[0].GetDiscrete().Value = 2
nodeRes[0].GetDiscreteResourceSpec().Value = 2

sanitize(nodeRes, &nodeAvailableResources)
assert.Len(t, nodeAvailableResources, 1)
assert.Equal(t, int64(2), nodeAvailableResources[0].GetDiscrete().Value)
assert.Equal(t, int64(2), nodeAvailableResources[0].GetDiscreteResourceSpec().Value)

nodeRes = append(nodeRes, NewDiscrete("banana", 6))
nodeRes = append(nodeRes, NewDiscrete("cake", 6))
Expand All @@ -263,9 +263,9 @@ func TestSanitizeDiscrete(t *testing.T) {

sanitize(nodeRes, &nodeAvailableResources)
assert.Len(t, nodeAvailableResources, 3)
assert.Equal(t, int64(2), nodeAvailableResources[0].GetDiscrete().Value) // oranges
assert.Equal(t, int64(2), nodeAvailableResources[1].GetDiscrete().Value) // cake
assert.Equal(t, int64(6), nodeAvailableResources[2].GetDiscrete().Value) // banana
assert.Equal(t, int64(2), nodeAvailableResources[0].GetDiscreteResourceSpec().Value) // oranges
assert.Equal(t, int64(2), nodeAvailableResources[1].GetDiscreteResourceSpec().Value) // cake
assert.Equal(t, int64(6), nodeAvailableResources[2].GetDiscreteResourceSpec().Value) // banana
}

func TestSanitizeStr(t *testing.T) {
Expand Down Expand Up @@ -295,7 +295,7 @@ func TestSanitizeChangeDiscreteToSet(t *testing.T) {

sanitize(nodeRes, &nodeAvailableResources)
assert.Len(t, nodeAvailableResources, 1)
assert.Equal(t, "red", nodeAvailableResources[0].GetStr().Value)
assert.Equal(t, "red", nodeAvailableResources[0].GetNamedResourceSpec().Value)

nodeRes = NewSet("apple", "red", "orange", "green")
nodeAvailableResources = []*api.GenericResource{NewDiscrete("apple", 5)}
Expand Down Expand Up @@ -343,14 +343,14 @@ func TestSanitizeChangeSetToDiscrete(t *testing.T) {

sanitize(nodeRes, &nodeAvailableResources)
assert.Len(t, nodeAvailableResources, 1)
assert.Equal(t, int64(5), nodeAvailableResources[0].GetDiscrete().Value)
assert.Equal(t, int64(5), nodeAvailableResources[0].GetDiscreteResourceSpec().Value)

nodeRes = []*api.GenericResource{NewDiscrete("apple", 5)}
nodeAvailableResources = NewSet("apple", "red", "orange", "green")

sanitize(nodeRes, &nodeAvailableResources)
assert.Len(t, nodeAvailableResources, 1)
assert.Equal(t, int64(5), nodeAvailableResources[0].GetDiscrete().Value)
assert.Equal(t, int64(5), nodeAvailableResources[0].GetDiscreteResourceSpec().Value)

nodeRes = append(nodeRes, NewDiscrete("orange", 3))
nodeRes = append(nodeRes, NewDiscrete("cake", 1))
Expand All @@ -368,7 +368,7 @@ func TestSanitizeChangeSetToDiscrete(t *testing.T) {
assert.Len(t, oranges, 1)
assert.Len(t, cakes, 1)

assert.Equal(t, int64(5), apples[0].GetDiscrete().Value)
assert.Equal(t, int64(3), oranges[0].GetDiscrete().Value)
assert.Equal(t, int64(1), cakes[0].GetDiscrete().Value)
assert.Equal(t, int64(5), apples[0].GetDiscreteResourceSpec().Value)
assert.Equal(t, int64(3), oranges[0].GetDiscreteResourceSpec().Value)
assert.Equal(t, int64(1), cakes[0].GetDiscreteResourceSpec().Value)
}
18 changes: 9 additions & 9 deletions api/genericresource/string.go
Original file line number Diff line number Diff line change
Expand Up @@ -7,17 +7,17 @@ import (
"github.com/docker/swarmkit/api"
)

func discreteToString(d *api.GenericResource_Discrete) string {
return strconv.FormatInt(d.Discrete.Value, 10)
func discreteToString(d *api.GenericResource_DiscreteResourceSpec) string {
return strconv.FormatInt(d.DiscreteResourceSpec.Value, 10)
}

// Kind returns the kind key as a string
func Kind(res *api.GenericResource) string {
switch r := res.Resource.(type) {
case *api.GenericResource_Discrete:
return r.Discrete.Kind
case *api.GenericResource_Str:
return r.Str.Kind
case *api.GenericResource_DiscreteResourceSpec:
return r.DiscreteResourceSpec.Kind
case *api.GenericResource_NamedResourceSpec:
return r.NamedResourceSpec.Kind
}

return ""
Expand All @@ -26,10 +26,10 @@ func Kind(res *api.GenericResource) string {
// Value returns the value key as a string
func Value(res *api.GenericResource) string {
switch res := res.Resource.(type) {
case *api.GenericResource_Discrete:
case *api.GenericResource_DiscreteResourceSpec:
return discreteToString(res)
case *api.GenericResource_Str:
return res.Str.Value
case *api.GenericResource_NamedResourceSpec:
return res.NamedResourceSpec.Value
}

return ""
Expand Down
Loading