Skip to content
GitLab
Menu
Projects
Groups
Snippets
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
Menu
Open sidebar
AIG-public
Cobalt
Commits
57711a07
Commit
57711a07
authored
Sep 13, 2016
by
Paul Rich
Browse files
can return all jobs within a drain window that are idle. Not just no draining
parent
160dd1f5
Changes
2
Hide whitespace changes
Inline
Side-by-side
src/lib/Components/system/CraySystem.py
View file @
57711a07
...
@@ -679,7 +679,7 @@ class CraySystem(BaseSystem):
...
@@ -679,7 +679,7 @@ class CraySystem(BaseSystem):
retlist
.
extend
(
expand_num_list
(
locs
))
retlist
.
extend
(
expand_num_list
(
locs
))
return
retlist
return
retlist
def
_assemble_queue_data
(
self
,
job
,
idle_only
=
True
,
no_
drain
ing
=
Fals
e
):
def
_assemble_queue_data
(
self
,
job
,
idle_only
=
True
,
drain
_time
=
Non
e
):
'''put together data for a queue, or queue-like reservation structure.
'''put together data for a queue, or queue-like reservation structure.
Input:
Input:
...
@@ -746,9 +746,10 @@ class CraySystem(BaseSystem):
...
@@ -746,9 +746,10 @@ class CraySystem(BaseSystem):
unavailable_nodes
=
[
node_id
for
node_id
in
node_id_list
unavailable_nodes
=
[
node_id
for
node_id
in
node_id_list
if
self
.
nodes
[
str
(
node_id
)].
status
in
if
self
.
nodes
[
str
(
node_id
)].
status
in
self
.
nodes
[
str
(
node_id
)].
DOWN_STATUSES
]
self
.
nodes
[
str
(
node_id
)].
DOWN_STATUSES
]
if
no_
drain
ing
:
if
drain
_time
is
not
None
:
unavailable_nodes
.
extend
([
node_id
for
node_id
in
node_id_list
unavailable_nodes
.
extend
([
node_id
for
node_id
in
node_id_list
if
self
.
nodes
[
str
(
node_id
)].
draining
])
if
(
self
.
nodes
[
str
(
node_id
)].
draining
and
self
.
nodes
[
str
(
node_id
)].
drain_until
<
int
(
drain_time
))])
for
node_id
in
set
(
unavailable_nodes
):
for
node_id
in
set
(
unavailable_nodes
):
node_id_list
.
remove
(
node_id
)
node_id_list
.
remove
(
node_id
)
return
node_id_list
return
node_id_list
...
...
testsuite/TestCobalt/TestComponents/test_cray.py
View file @
57711a07
...
@@ -295,9 +295,30 @@ class TestCraySystem(object):
...
@@ -295,9 +295,30 @@ class TestCraySystem(object):
self
.
system
.
nodes
[
'3'
].
status
=
'allocated'
self
.
system
.
nodes
[
'3'
].
status
=
'allocated'
self
.
system
.
nodes
[
'4'
].
set_drain
(
100
,
1
)
self
.
system
.
nodes
[
'4'
].
set_drain
(
100
,
1
)
nodelist
=
self
.
system
.
_assemble_queue_data
(
self
.
base_job
,
nodelist
=
self
.
system
.
_assemble_queue_data
(
self
.
base_job
,
no_
drain
ing
=
True
)
drain
_time
=
150
)
assert_match
(
sorted
(
nodelist
),
[
'5'
],
"Bad Nodelist"
)
assert_match
(
sorted
(
nodelist
),
[
'5'
],
"Bad Nodelist"
)
def
test_assemble_queue_data_attrs_within_draining
(
self
):
'''CraySystem._assemble_queue_data: return idle and draining if within
time'''
self
.
system
.
nodes
[
'1'
].
status
=
'busy'
self
.
system
.
nodes
[
'2'
].
status
=
'down'
self
.
system
.
nodes
[
'3'
].
set_drain
(
50.0
,
2
)
self
.
system
.
nodes
[
'4'
].
set_drain
(
100.0
,
1
)
nodelist
=
self
.
system
.
_assemble_queue_data
(
self
.
base_job
,
drain_time
=
90.0
)
assert_match
(
sorted
(
nodelist
),
[
'4'
,
'5'
],
"Bad Nodelist"
)
def
test_assemble_queue_data_attrs_match_draining
(
self
):
'''CraySystem._assemble_queue_data: return idle and matched drain node'''
self
.
system
.
nodes
[
'1'
].
status
=
'busy'
self
.
system
.
nodes
[
'2'
].
status
=
'down'
self
.
system
.
nodes
[
'3'
].
status
=
'allocated'
self
.
system
.
nodes
[
'4'
].
set_drain
(
100.0
,
1
)
nodelist
=
self
.
system
.
_assemble_queue_data
(
self
.
base_job
,
drain_time
=
100.0
)
assert_match
(
sorted
(
nodelist
),
[
'4'
,
'5'
],
"Bad Nodelist"
)
def
test_find_queue_equivalence_classes_single
(
self
):
def
test_find_queue_equivalence_classes_single
(
self
):
'''CraySystem.find_queue_equivalence_classes: single queue'''
'''CraySystem.find_queue_equivalence_classes: single queue'''
self
.
system
.
find_queue_equivalence_classes
([],
[
'default'
],
[])
self
.
system
.
find_queue_equivalence_classes
([],
[
'default'
],
[])
...
...
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