forked from kubernetes/kubernetes
-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Merge pull request kubernetes#4674 from abhgupta/abhgupta-dev
Configuring scheduler via json configuration file
- Loading branch information
Showing
13 changed files
with
548 additions
and
73 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
55 changes: 0 additions & 55 deletions
55
plugin/pkg/scheduler/algorithmprovider/affinity/affinity.go
This file was deleted.
Oops, something went wrong.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,38 @@ | ||
/* | ||
Copyright 2014 Google Inc. All rights reserved. | ||
Licensed under the Apache License, Version 2.0 (the "License"); | ||
you may not use this file except in compliance with the License. | ||
You may obtain a copy of the License at | ||
http://www.apache.org/licenses/LICENSE-2.0 | ||
Unless required by applicable law or agreed to in writing, software | ||
distributed under the License is distributed on an "AS IS" BASIS, | ||
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | ||
See the License for the specific language governing permissions and | ||
limitations under the License. | ||
*/ | ||
|
||
package latest | ||
|
||
import ( | ||
"github.com/GoogleCloudPlatform/kubernetes/plugin/pkg/scheduler/api/v1" | ||
) | ||
|
||
// Version is the string that represents the current external default version. | ||
const Version = "v1" | ||
|
||
// OldestVersion is the string that represents the oldest server version supported. | ||
const OldestVersion = "v1" | ||
|
||
// Versions is the list of versions that are recognized in code. The order provided | ||
// may be assumed to be least feature rich to most feature rich, and clients may | ||
// choose to prefer the latter items in the list over the former items when presented | ||
// with a set of versions to choose. | ||
var Versions = []string{"v1"} | ||
|
||
// Codec is the default codec for serializing input that should use | ||
// the latest supported version. | ||
// This codec can decode any object that Kubernetes is aware of. | ||
var Codec = v1.Codec |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,32 @@ | ||
/* | ||
Copyright 2014 Google Inc. All rights reserved. | ||
Licensed under the Apache License, Version 2.0 (the "License"); | ||
you may not use this file except in compliance with the License. | ||
You may obtain a copy of the License at | ||
http://www.apache.org/licenses/LICENSE-2.0 | ||
Unless required by applicable law or agreed to in writing, software | ||
distributed under the License is distributed on an "AS IS" BASIS, | ||
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | ||
See the License for the specific language governing permissions and | ||
limitations under the License. | ||
*/ | ||
|
||
package api | ||
|
||
import ( | ||
"github.com/GoogleCloudPlatform/kubernetes/pkg/runtime" | ||
) | ||
|
||
// Scheme is the default instance of runtime.Scheme to which types in the Kubernetes API are already registered. | ||
var Scheme = runtime.NewScheme() | ||
|
||
func init() { | ||
Scheme.AddKnownTypes("", | ||
&Policy{}, | ||
) | ||
} | ||
|
||
func (*Policy) IsAnAPIObject() {} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,103 @@ | ||
/* | ||
Copyright 2014 Google Inc. All rights reserved. | ||
Licensed under the Apache License, Version 2.0 (the "License"); | ||
you may not use this file except in compliance with the License. | ||
You may obtain a copy of the License at | ||
http://www.apache.org/licenses/LICENSE-2.0 | ||
Unless required by applicable law or agreed to in writing, software | ||
distributed under the License is distributed on an "AS IS" BASIS, | ||
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | ||
See the License for the specific language governing permissions and | ||
limitations under the License. | ||
*/ | ||
|
||
package api | ||
|
||
import ( | ||
"github.com/GoogleCloudPlatform/kubernetes/pkg/api" | ||
) | ||
|
||
type Policy struct { | ||
api.TypeMeta `json:",inline"` | ||
// Holds the information to configure the fit predicate functions | ||
Predicates []PredicatePolicy `json:"predicates"` | ||
// Holds the information to configure the priority functions | ||
Priorities []PriorityPolicy `json:"priorities"` | ||
} | ||
|
||
type PredicatePolicy struct { | ||
// Identifier of the predicate policy | ||
// For a custom predicate, the name can be user-defined | ||
// For the Kubernetes provided predicates, the name is the identifier of the pre-defined predicate | ||
Name string `json:"name"` | ||
// Holds the parameters to configure the given predicate | ||
Argument *PredicateArgument `json:"argument"` | ||
} | ||
|
||
type PriorityPolicy struct { | ||
// Identifier of the priority policy | ||
// For a custom priority, the name can be user-defined | ||
// For the Kubernetes provided priority functions, the name is the identifier of the pre-defined priority function | ||
Name string `json:"name"` | ||
// The numeric multiplier for the minion scores that the priority function generates | ||
Weight int `json:"weight"` | ||
// Holds the parameters to configure the given priority function | ||
Argument *PriorityArgument `json:"argument"` | ||
} | ||
|
||
// Represents the arguments that the different types of predicates take | ||
// Only one of its members may be specified | ||
type PredicateArgument struct { | ||
// The predicate that provides affinity for pods belonging to a service | ||
// It uses a label to identify minions that belong to the same "group" | ||
ServiceAffinity *ServiceAffinity `json:"serviceAffinity"` | ||
// The predicate that checks whether a particular minion has a certain label | ||
// defined or not, regardless of value | ||
LabelsPresence *LabelsPresence `json:"labelsPresence"` | ||
} | ||
|
||
// Represents the arguments that the different types of priorities take. | ||
// Only one of its members may be specified | ||
type PriorityArgument struct { | ||
// The priority function that ensures a good spread (anti-affinity) for pods belonging to a service | ||
// It uses a label to identify minions that belong to the same "group" | ||
ServiceAntiAffinity *ServiceAntiAffinity `json:"serviceAntiAffinity"` | ||
// The priority function that checks whether a particular minion has a certain label | ||
// defined or not, regardless of value | ||
LabelPreference *LabelPreference `json:"labelPreference"` | ||
} | ||
|
||
// Holds the parameters that are used to configure the corresponding predicate | ||
type ServiceAffinity struct { | ||
// The list of labels that identify minion "groups" | ||
// All of the labels should match for the minion to be considered a fit for hosting the pod | ||
Labels []string `json:"labels"` | ||
} | ||
|
||
// Holds the parameters that are used to configure the corresponding predicate | ||
type LabelsPresence struct { | ||
// The list of labels that identify minion "groups" | ||
// All of the labels should be either present (or absent) for the minion to be considered a fit for hosting the pod | ||
Labels []string `json:"labels"` | ||
// The boolean flag that indicates whether the labels should be present or absent from the minion | ||
Presence bool `json:"presence"` | ||
} | ||
|
||
// Holds the parameters that are used to configure the corresponding priority function | ||
type ServiceAntiAffinity struct { | ||
// Used to identify minion "groups" | ||
Label string `json:"label"` | ||
} | ||
|
||
// Holds the parameters that are used to configure the corresponding priority function | ||
type LabelPreference struct { | ||
// Used to identify minion "groups" | ||
Label string `json:"label"` | ||
// This is a boolean flag | ||
// If true, higher priority is given to minions that have the label | ||
// If false, higher priority is given to minions that do not have the label | ||
Presence bool `json:"presence"` | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,33 @@ | ||
/* | ||
Copyright 2014 Google Inc. All rights reserved. | ||
Licensed under the Apache License, Version 2.0 (the "License"); | ||
you may not use this file except in compliance with the License. | ||
You may obtain a copy of the License at | ||
http://www.apache.org/licenses/LICENSE-2.0 | ||
Unless required by applicable law or agreed to in writing, software | ||
distributed under the License is distributed on an "AS IS" BASIS, | ||
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | ||
See the License for the specific language governing permissions and | ||
limitations under the License. | ||
*/ | ||
|
||
package v1 | ||
|
||
import ( | ||
"github.com/GoogleCloudPlatform/kubernetes/pkg/runtime" | ||
"github.com/GoogleCloudPlatform/kubernetes/plugin/pkg/scheduler/api" | ||
) | ||
|
||
// Codec encodes internal objects to the v1 scheme | ||
var Codec = runtime.CodecFor(api.Scheme, "v1") | ||
|
||
func init() { | ||
api.Scheme.AddKnownTypes("v1", | ||
&Policy{}, | ||
) | ||
} | ||
|
||
func (*Policy) IsAnAPIObject() {} |
Oops, something went wrong.