@@ -14,7 +14,7 @@ See the License for the specific language governing permissions and
1414limitations under the License.
1515*/
1616
17- package admission
17+ package validate
1818
1919import (
2020 "fmt"
@@ -30,23 +30,33 @@ import (
3030 k8scorev1 "k8s.io/kubernetes/pkg/apis/core/v1"
3131 k8scorevalid "k8s.io/kubernetes/pkg/apis/core/validation"
3232
33+ "volcano.sh/volcano/pkg/admission/router"
34+ "volcano.sh/volcano/pkg/admission/schema"
35+ "volcano.sh/volcano/pkg/admission/util"
3336 "volcano.sh/volcano/pkg/apis/batch/v1alpha1"
34- vcclientset "volcano.sh/volcano/pkg/client/clientset/versioned"
3537 "volcano.sh/volcano/pkg/controllers/job/plugins"
3638)
3739
38- // VolcanoClientSet is volcano clientset
39- // TODO: make it as package local var.
40- var VolcanoClientSet vcclientset.Interface
40+ func init () {
41+ router .RegisterAdmission (service )
42+ }
43+
44+ var service = & router.AdmissionService {
45+ Path : "/jobs" ,
46+ Func : AdmitJobs ,
47+
48+ Config : config ,
49+ }
50+
51+ var config = & router.AdmissionServiceConfig {}
4152
4253// AdmitJobs is to admit jobs and return response
4354func AdmitJobs (ar v1beta1.AdmissionReview ) * v1beta1.AdmissionResponse {
44-
4555 klog .V (3 ).Infof ("admitting jobs -- %s" , ar .Request .Operation )
4656
47- job , err := DecodeJob (ar .Request .Object , ar .Request .Resource )
57+ job , err := schema . DecodeJob (ar .Request .Object , ar .Request .Resource )
4858 if err != nil {
49- return ToAdmissionResponse (err )
59+ return util . ToAdmissionResponse (err )
5060 }
5161 var msg string
5262 reviewResponse := v1beta1.AdmissionResponse {}
@@ -57,14 +67,14 @@ func AdmitJobs(ar v1beta1.AdmissionReview) *v1beta1.AdmissionResponse {
5767 msg = validateJob (job , & reviewResponse )
5868 break
5969 case v1beta1 .Update :
60- _ , err := DecodeJob (ar .Request .OldObject , ar .Request .Resource )
70+ _ , err := schema . DecodeJob (ar .Request .OldObject , ar .Request .Resource )
6171 if err != nil {
62- return ToAdmissionResponse (err )
72+ return util . ToAdmissionResponse (err )
6373 }
6474 break
6575 default :
6676 err := fmt .Errorf ("expect operation to be 'CREATE' or 'UPDATE'" )
67- return ToAdmissionResponse (err )
77+ return util . ToAdmissionResponse (err )
6878 }
6979
7080 if ! reviewResponse .Allowed {
@@ -73,8 +83,7 @@ func AdmitJobs(ar v1beta1.AdmissionReview) *v1beta1.AdmissionResponse {
7383 return & reviewResponse
7484}
7585
76- func validateJob (job v1alpha1.Job , reviewResponse * v1beta1.AdmissionResponse ) string {
77-
86+ func validateJob (job * v1alpha1.Job , reviewResponse * v1beta1.AdmissionResponse ) string {
7887 var msg string
7988 taskNames := map [string ]string {}
8089 var totalReplicas int32
@@ -151,9 +160,9 @@ func validateJob(job v1alpha1.Job, reviewResponse *v1beta1.AdmissionResponse) st
151160 }
152161
153162 // Check whether Queue already present or not
154- if _ , err := VolcanoClientSet .SchedulingV1alpha2 ().Queues ().Get (job .Spec .Queue , metav1.GetOptions {}); err != nil {
163+ if _ , err := config . VolcanoClient .SchedulingV1alpha2 ().Queues ().Get (job .Spec .Queue , metav1.GetOptions {}); err != nil {
155164 // TODO: deprecate v1alpha1
156- if _ , err := VolcanoClientSet .SchedulingV1alpha1 ().Queues ().Get (job .Spec .Queue , metav1.GetOptions {}); err != nil {
165+ if _ , err := config . VolcanoClient .SchedulingV1alpha1 ().Queues ().Get (job .Spec .Queue , metav1.GetOptions {}); err != nil {
157166 msg = msg + fmt .Sprintf (" unable to find job queue: %v" , err )
158167 }
159168 }
@@ -165,7 +174,7 @@ func validateJob(job v1alpha1.Job, reviewResponse *v1beta1.AdmissionResponse) st
165174 return msg
166175}
167176
168- func validateTaskTemplate (task v1alpha1.TaskSpec , job v1alpha1.Job , index int ) string {
177+ func validateTaskTemplate (task v1alpha1.TaskSpec , job * v1alpha1.Job , index int ) string {
169178 var v1PodTemplate v1.PodTemplate
170179 v1PodTemplate .Template = * task .Template .DeepCopy ()
171180 k8scorev1 .SetObjectDefaults_PodTemplate (& v1PodTemplate )
0 commit comments