mirror of https://github.com/k3s-io/k3s
Refactor New function
Signed-off-by: PingWang <wang.ping5@zte.com.cn> add comments for InitPolicyFromFile Signed-off-by: PingWang <wang.ping5@zte.com.cn> make the methods package private Signed-off-by: PingWang <wang.ping5@zte.com.cn>pull/58/head
parent
8307fb2fb3
commit
9e760732c3
|
@ -184,34 +184,12 @@ func New(client clientset.Interface,
|
||||||
policy := &schedulerapi.Policy{}
|
policy := &schedulerapi.Policy{}
|
||||||
switch {
|
switch {
|
||||||
case source.Policy.File != nil:
|
case source.Policy.File != nil:
|
||||||
// Use a policy serialized in a file.
|
if err := initPolicyFromFile(source.Policy.File.Path, policy); err != nil {
|
||||||
policyFile := source.Policy.File.Path
|
return nil, err
|
||||||
_, err := os.Stat(policyFile)
|
|
||||||
if err != nil {
|
|
||||||
return nil, fmt.Errorf("missing policy config file %s", policyFile)
|
|
||||||
}
|
|
||||||
data, err := ioutil.ReadFile(policyFile)
|
|
||||||
if err != nil {
|
|
||||||
return nil, fmt.Errorf("couldn't read policy config: %v", err)
|
|
||||||
}
|
|
||||||
err = runtime.DecodeInto(latestschedulerapi.Codec, []byte(data), policy)
|
|
||||||
if err != nil {
|
|
||||||
return nil, fmt.Errorf("invalid policy: %v", err)
|
|
||||||
}
|
}
|
||||||
case source.Policy.ConfigMap != nil:
|
case source.Policy.ConfigMap != nil:
|
||||||
// Use a policy serialized in a config map value.
|
if err := initPolicyFromConfigMap(client, source.Policy.ConfigMap, policy); err != nil {
|
||||||
policyRef := source.Policy.ConfigMap
|
return nil, err
|
||||||
policyConfigMap, err := client.CoreV1().ConfigMaps(policyRef.Namespace).Get(policyRef.Name, metav1.GetOptions{})
|
|
||||||
if err != nil {
|
|
||||||
return nil, fmt.Errorf("couldn't get policy config map %s/%s: %v", policyRef.Namespace, policyRef.Name, err)
|
|
||||||
}
|
|
||||||
data, found := policyConfigMap.Data[kubeschedulerconfig.SchedulerPolicyConfigMapKey]
|
|
||||||
if !found {
|
|
||||||
return nil, fmt.Errorf("missing policy config map value at key %q", kubeschedulerconfig.SchedulerPolicyConfigMapKey)
|
|
||||||
}
|
|
||||||
err = runtime.DecodeInto(latestschedulerapi.Codec, []byte(data), policy)
|
|
||||||
if err != nil {
|
|
||||||
return nil, fmt.Errorf("invalid policy: %v", err)
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
sc, err := configurator.CreateFromConfig(*policy)
|
sc, err := configurator.CreateFromConfig(*policy)
|
||||||
|
@ -231,6 +209,42 @@ func New(client clientset.Interface,
|
||||||
return sched, nil
|
return sched, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// initPolicyFromFile initialize policy from file
|
||||||
|
func initPolicyFromFile(policyFile string, policy *schedulerapi.Policy) error {
|
||||||
|
// Use a policy serialized in a file.
|
||||||
|
_, err := os.Stat(policyFile)
|
||||||
|
if err != nil {
|
||||||
|
return fmt.Errorf("missing policy config file %s", policyFile)
|
||||||
|
}
|
||||||
|
data, err := ioutil.ReadFile(policyFile)
|
||||||
|
if err != nil {
|
||||||
|
return fmt.Errorf("couldn't read policy config: %v", err)
|
||||||
|
}
|
||||||
|
err = runtime.DecodeInto(latestschedulerapi.Codec, []byte(data), policy)
|
||||||
|
if err != nil {
|
||||||
|
return fmt.Errorf("invalid policy: %v", err)
|
||||||
|
}
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
|
// initPolicyFromConfigMap initialize policy from configMap
|
||||||
|
func initPolicyFromConfigMap(client clientset.Interface, policyRef *kubeschedulerconfig.SchedulerPolicyConfigMapSource, policy *schedulerapi.Policy) error {
|
||||||
|
// Use a policy serialized in a config map value.
|
||||||
|
policyConfigMap, err := client.CoreV1().ConfigMaps(policyRef.Namespace).Get(policyRef.Name, metav1.GetOptions{})
|
||||||
|
if err != nil {
|
||||||
|
return fmt.Errorf("couldn't get policy config map %s/%s: %v", policyRef.Namespace, policyRef.Name, err)
|
||||||
|
}
|
||||||
|
data, found := policyConfigMap.Data[kubeschedulerconfig.SchedulerPolicyConfigMapKey]
|
||||||
|
if !found {
|
||||||
|
return fmt.Errorf("missing policy config map value at key %q", kubeschedulerconfig.SchedulerPolicyConfigMapKey)
|
||||||
|
}
|
||||||
|
err = runtime.DecodeInto(latestschedulerapi.Codec, []byte(data), policy)
|
||||||
|
if err != nil {
|
||||||
|
return fmt.Errorf("invalid policy: %v", err)
|
||||||
|
}
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
// NewFromConfigurator returns a new scheduler that is created entirely by the Configurator. Assumes Create() is implemented.
|
// NewFromConfigurator returns a new scheduler that is created entirely by the Configurator. Assumes Create() is implemented.
|
||||||
// Supports intermediate Config mutation for now if you provide modifier functions which will run after Config is created.
|
// Supports intermediate Config mutation for now if you provide modifier functions which will run after Config is created.
|
||||||
func NewFromConfigurator(c factory.Configurator, modifiers ...func(c *factory.Config)) (*Scheduler, error) {
|
func NewFromConfigurator(c factory.Configurator, modifiers ...func(c *factory.Config)) (*Scheduler, error) {
|
||||||
|
|
Loading…
Reference in New Issue