mirror of
				https://github.com/optim-enterprises-bv/kubernetes.git
				synced 2025-11-04 04:08:16 +00:00 
			
		
		
		
	Merge pull request #70973 from ping035627/k8s-181113
Refactor New function
This commit is contained in:
		@@ -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) {
 | 
				
			||||||
 
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user