Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
K
k3s
Project
Project
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Registry
Registry
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
Jacklull
k3s
Commits
a1d1385f
Unverified
Commit
a1d1385f
authored
Oct 13, 2018
by
k8s-ci-robot
Committed by
GitHub
Oct 13, 2018
Browse files
Options
Browse Files
Download
Plain Diff
Merge pull request #66854 from k82cn/k8s_66853
Set PriorityClassName when there's a default PirorityClass.
parents
d84c4312
083b92ac
Hide whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
74 additions
and
55 deletions
+74
-55
admission.go
plugin/pkg/admission/priority/admission.go
+8
-5
admission_test.go
plugin/pkg/admission/priority/admission_test.go
+66
-50
No files found.
plugin/pkg/admission/priority/admission.go
View file @
a1d1385f
...
@@ -188,10 +188,12 @@ func (p *priorityPlugin) admitPod(a admission.Attributes) error {
...
@@ -188,10 +188,12 @@ func (p *priorityPlugin) admitPod(a admission.Attributes) error {
}
}
if
len
(
pod
.
Spec
.
PriorityClassName
)
==
0
{
if
len
(
pod
.
Spec
.
PriorityClassName
)
==
0
{
var
err
error
var
err
error
priority
,
err
=
p
.
getDefaultPriority
()
var
pcName
string
pcName
,
priority
,
err
=
p
.
getDefaultPriority
()
if
err
!=
nil
{
if
err
!=
nil
{
return
fmt
.
Errorf
(
"failed to get default priority class: %v"
,
err
)
return
fmt
.
Errorf
(
"failed to get default priority class: %v"
,
err
)
}
}
pod
.
Spec
.
PriorityClassName
=
pcName
}
else
{
}
else
{
pcName
:=
pod
.
Spec
.
PriorityClassName
pcName
:=
pod
.
Spec
.
PriorityClassName
if
!
priorityClassPermittedInNamespace
(
pcName
,
a
.
GetNamespace
())
{
if
!
priorityClassPermittedInNamespace
(
pcName
,
a
.
GetNamespace
())
{
...
@@ -260,13 +262,14 @@ func (p *priorityPlugin) getDefaultPriorityClass() (*schedulingv1beta1.PriorityC
...
@@ -260,13 +262,14 @@ func (p *priorityPlugin) getDefaultPriorityClass() (*schedulingv1beta1.PriorityC
return
defaultPC
,
nil
return
defaultPC
,
nil
}
}
func
(
p
*
priorityPlugin
)
getDefaultPriority
()
(
int32
,
error
)
{
func
(
p
*
priorityPlugin
)
getDefaultPriority
()
(
string
,
int32
,
error
)
{
dpc
,
err
:=
p
.
getDefaultPriorityClass
()
dpc
,
err
:=
p
.
getDefaultPriorityClass
()
if
err
!=
nil
{
if
err
!=
nil
{
return
0
,
err
return
""
,
0
,
err
}
}
if
dpc
!=
nil
{
if
dpc
!=
nil
{
return
dpc
.
Value
,
nil
return
dpc
.
Name
,
dpc
.
Value
,
nil
}
}
return
int32
(
scheduling
.
DefaultPriorityWhenNoDefaultClassExists
),
nil
return
""
,
int32
(
scheduling
.
DefaultPriorityWhenNoDefaultClassExists
),
nil
}
}
plugin/pkg/admission/priority/admission_test.go
View file @
a1d1385f
...
@@ -177,52 +177,64 @@ func TestDefaultPriority(t *testing.T) {
...
@@ -177,52 +177,64 @@ func TestDefaultPriority(t *testing.T) {
updatedDefaultClass1
.
GlobalDefault
=
false
updatedDefaultClass1
.
GlobalDefault
=
false
tests
:=
[]
struct
{
tests
:=
[]
struct
{
name
string
name
string
classesBefore
[]
*
scheduling
.
PriorityClass
classesBefore
[]
*
scheduling
.
PriorityClass
classesAfter
[]
*
scheduling
.
PriorityClass
classesAfter
[]
*
scheduling
.
PriorityClass
attributes
admission
.
Attributes
attributes
admission
.
Attributes
expectedDefaultBefore
int32
expectedDefaultBefore
int32
expectedDefaultAfter
int32
expectedDefaultNameBefore
string
expectedDefaultAfter
int32
expectedDefaultNameAfter
string
}{
}{
{
{
name
:
"simple resolution with a default class"
,
name
:
"simple resolution with a default class"
,
classesBefore
:
[]
*
scheduling
.
PriorityClass
{
defaultClass1
},
classesBefore
:
[]
*
scheduling
.
PriorityClass
{
defaultClass1
},
classesAfter
:
[]
*
scheduling
.
PriorityClass
{
defaultClass1
},
classesAfter
:
[]
*
scheduling
.
PriorityClass
{
defaultClass1
},
attributes
:
nil
,
attributes
:
nil
,
expectedDefaultBefore
:
defaultClass1
.
Value
,
expectedDefaultBefore
:
defaultClass1
.
Value
,
expectedDefaultAfter
:
defaultClass1
.
Value
,
expectedDefaultNameBefore
:
defaultClass1
.
Name
,
},
expectedDefaultAfter
:
defaultClass1
.
Value
,
{
expectedDefaultNameAfter
:
defaultClass1
.
Name
,
name
:
"add a default class"
,
},
classesBefore
:
[]
*
scheduling
.
PriorityClass
{
nondefaultClass1
},
{
classesAfter
:
[]
*
scheduling
.
PriorityClass
{
nondefaultClass1
,
defaultClass1
},
name
:
"add a default class"
,
attributes
:
admission
.
NewAttributesRecord
(
defaultClass1
,
nil
,
pcKind
,
""
,
defaultClass1
.
Name
,
pcResource
,
""
,
admission
.
Create
,
false
,
nil
),
classesBefore
:
[]
*
scheduling
.
PriorityClass
{
nondefaultClass1
},
expectedDefaultBefore
:
scheduling
.
DefaultPriorityWhenNoDefaultClassExists
,
classesAfter
:
[]
*
scheduling
.
PriorityClass
{
nondefaultClass1
,
defaultClass1
},
expectedDefaultAfter
:
defaultClass1
.
Value
,
attributes
:
admission
.
NewAttributesRecord
(
defaultClass1
,
nil
,
pcKind
,
""
,
defaultClass1
.
Name
,
pcResource
,
""
,
admission
.
Create
,
false
,
nil
),
},
expectedDefaultBefore
:
scheduling
.
DefaultPriorityWhenNoDefaultClassExists
,
{
expectedDefaultNameBefore
:
""
,
name
:
"multiple default classes resolves to the minimum value among them"
,
expectedDefaultAfter
:
defaultClass1
.
Value
,
classesBefore
:
[]
*
scheduling
.
PriorityClass
{
defaultClass1
,
defaultClass2
},
expectedDefaultNameAfter
:
defaultClass1
.
Name
,
classesAfter
:
[]
*
scheduling
.
PriorityClass
{
defaultClass2
},
},
attributes
:
admission
.
NewAttributesRecord
(
nil
,
nil
,
pcKind
,
""
,
defaultClass1
.
Name
,
pcResource
,
""
,
admission
.
Delete
,
false
,
nil
),
{
expectedDefaultBefore
:
defaultClass1
.
Value
,
name
:
"multiple default classes resolves to the minimum value among them"
,
expectedDefaultAfter
:
defaultClass2
.
Value
,
classesBefore
:
[]
*
scheduling
.
PriorityClass
{
defaultClass1
,
defaultClass2
},
},
classesAfter
:
[]
*
scheduling
.
PriorityClass
{
defaultClass2
},
{
attributes
:
admission
.
NewAttributesRecord
(
nil
,
nil
,
pcKind
,
""
,
defaultClass1
.
Name
,
pcResource
,
""
,
admission
.
Delete
,
false
,
nil
),
name
:
"delete default priority class"
,
expectedDefaultBefore
:
defaultClass1
.
Value
,
classesBefore
:
[]
*
scheduling
.
PriorityClass
{
defaultClass1
},
expectedDefaultNameBefore
:
defaultClass1
.
Name
,
classesAfter
:
[]
*
scheduling
.
PriorityClass
{},
expectedDefaultAfter
:
defaultClass2
.
Value
,
attributes
:
admission
.
NewAttributesRecord
(
nil
,
nil
,
pcKind
,
""
,
defaultClass1
.
Name
,
pcResource
,
""
,
admission
.
Delete
,
false
,
nil
),
expectedDefaultNameAfter
:
defaultClass2
.
Name
,
expectedDefaultBefore
:
defaultClass1
.
Value
,
},
expectedDefaultAfter
:
scheduling
.
DefaultPriorityWhenNoDefaultClassExists
,
{
},
name
:
"delete default priority class"
,
{
classesBefore
:
[]
*
scheduling
.
PriorityClass
{
defaultClass1
},
name
:
"update default class and remove its global default"
,
classesAfter
:
[]
*
scheduling
.
PriorityClass
{},
classesBefore
:
[]
*
scheduling
.
PriorityClass
{
defaultClass1
},
attributes
:
admission
.
NewAttributesRecord
(
nil
,
nil
,
pcKind
,
""
,
defaultClass1
.
Name
,
pcResource
,
""
,
admission
.
Delete
,
false
,
nil
),
classesAfter
:
[]
*
scheduling
.
PriorityClass
{
&
updatedDefaultClass1
},
expectedDefaultBefore
:
defaultClass1
.
Value
,
attributes
:
admission
.
NewAttributesRecord
(
&
updatedDefaultClass1
,
defaultClass1
,
pcKind
,
""
,
defaultClass1
.
Name
,
pcResource
,
""
,
admission
.
Update
,
false
,
nil
),
expectedDefaultNameBefore
:
defaultClass1
.
Name
,
expectedDefaultBefore
:
defaultClass1
.
Value
,
expectedDefaultAfter
:
scheduling
.
DefaultPriorityWhenNoDefaultClassExists
,
expectedDefaultAfter
:
scheduling
.
DefaultPriorityWhenNoDefaultClassExists
,
expectedDefaultNameAfter
:
""
,
},
{
name
:
"update default class and remove its global default"
,
classesBefore
:
[]
*
scheduling
.
PriorityClass
{
defaultClass1
},
classesAfter
:
[]
*
scheduling
.
PriorityClass
{
&
updatedDefaultClass1
},
attributes
:
admission
.
NewAttributesRecord
(
&
updatedDefaultClass1
,
defaultClass1
,
pcKind
,
""
,
defaultClass1
.
Name
,
pcResource
,
""
,
admission
.
Update
,
false
,
nil
),
expectedDefaultBefore
:
defaultClass1
.
Value
,
expectedDefaultNameBefore
:
defaultClass1
.
Name
,
expectedDefaultAfter
:
scheduling
.
DefaultPriorityWhenNoDefaultClassExists
,
expectedDefaultNameAfter
:
""
,
},
},
}
}
...
@@ -232,12 +244,14 @@ func TestDefaultPriority(t *testing.T) {
...
@@ -232,12 +244,14 @@ func TestDefaultPriority(t *testing.T) {
if
err
:=
addPriorityClasses
(
ctrl
,
test
.
classesBefore
);
err
!=
nil
{
if
err
:=
addPriorityClasses
(
ctrl
,
test
.
classesBefore
);
err
!=
nil
{
t
.
Errorf
(
"Test %q: unable to add object to informer: %v"
,
test
.
name
,
err
)
t
.
Errorf
(
"Test %q: unable to add object to informer: %v"
,
test
.
name
,
err
)
}
}
defaultPriority
,
err
:=
ctrl
.
getDefaultPriority
()
pcName
,
defaultPriority
,
err
:=
ctrl
.
getDefaultPriority
()
if
err
!=
nil
{
if
err
!=
nil
{
t
.
Errorf
(
"Test %q: unexpected error while getting default priority: %v"
,
test
.
name
,
err
)
t
.
Errorf
(
"Test %q: unexpected error while getting default priority: %v"
,
test
.
name
,
err
)
}
}
if
err
==
nil
&&
defaultPriority
!=
test
.
expectedDefaultBefore
{
if
err
==
nil
&&
t
.
Errorf
(
"Test %q: expected default priority %d, but got %d"
,
test
.
name
,
test
.
expectedDefaultBefore
,
defaultPriority
)
(
defaultPriority
!=
test
.
expectedDefaultBefore
||
pcName
!=
test
.
expectedDefaultNameBefore
)
{
t
.
Errorf
(
"Test %q: expected default priority %s(%d), but got %s(%d)"
,
test
.
name
,
test
.
expectedDefaultNameBefore
,
test
.
expectedDefaultBefore
,
pcName
,
defaultPriority
)
}
}
if
test
.
attributes
!=
nil
{
if
test
.
attributes
!=
nil
{
err
:=
ctrl
.
Validate
(
test
.
attributes
)
err
:=
ctrl
.
Validate
(
test
.
attributes
)
...
@@ -248,12 +262,14 @@ func TestDefaultPriority(t *testing.T) {
...
@@ -248,12 +262,14 @@ func TestDefaultPriority(t *testing.T) {
if
err
:=
addPriorityClasses
(
ctrl
,
test
.
classesAfter
);
err
!=
nil
{
if
err
:=
addPriorityClasses
(
ctrl
,
test
.
classesAfter
);
err
!=
nil
{
t
.
Errorf
(
"Test %q: unable to add object to informer: %v"
,
test
.
name
,
err
)
t
.
Errorf
(
"Test %q: unable to add object to informer: %v"
,
test
.
name
,
err
)
}
}
defaultPriority
,
err
=
ctrl
.
getDefaultPriority
()
pcName
,
defaultPriority
,
err
=
ctrl
.
getDefaultPriority
()
if
err
!=
nil
{
if
err
!=
nil
{
t
.
Errorf
(
"Test %q: unexpected error while getting default priority: %v"
,
test
.
name
,
err
)
t
.
Errorf
(
"Test %q: unexpected error while getting default priority: %v"
,
test
.
name
,
err
)
}
}
if
err
==
nil
&&
defaultPriority
!=
test
.
expectedDefaultAfter
{
if
err
==
nil
&&
t
.
Errorf
(
"Test %q: expected default priority %d, but got %d"
,
test
.
name
,
test
.
expectedDefaultAfter
,
defaultPriority
)
(
defaultPriority
!=
test
.
expectedDefaultAfter
||
pcName
!=
test
.
expectedDefaultNameAfter
)
{
t
.
Errorf
(
"Test %q: expected default priority %s(%d), but got %s(%d)"
,
test
.
name
,
test
.
expectedDefaultNameAfter
,
test
.
expectedDefaultAfter
,
pcName
,
defaultPriority
)
}
}
}
}
}
}
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment