[Placement group] Check if placement group bundle index is valid (#10194)

* add part code

* rebase master

* add java testcase

* fix review comments

* fix lint error

* rebase master

* fix lint error

Co-authored-by: 灵洵 <fengbin.ffb@antfin.com>
This commit is contained in:
fangfengbin
2020-08-21 11:04:56 -07:00
committed by GitHub
co-authored by 灵洵
parent 17f801dc69
commit 36c6c4b298
5 changed files with 177 additions and 60 deletions
+29 -9
View File
@@ -1,8 +1,15 @@
from typing import (List, Dict)
import ray
from ray._raylet import (
PlacementGroupID, )
class PlacementGroup:
"""A handle to a placement group.
"""
def __init__(self, id, bundle_count):
self.id = id
self.bundle_count = bundle_count
def placement_group(bundles: List[Dict[str, float]],
@@ -33,19 +40,32 @@ def placement_group(bundles: List[Dict[str, float]],
placement_group_id = worker.core_worker.create_placement_group(
name, bundles, strategy)
return placement_group_id
return PlacementGroup(placement_group_id, len(bundles))
def remove_placement_group(placement_group_id: PlacementGroupID):
assert type(placement_group_id) == PlacementGroupID
def remove_placement_group(placement_group):
assert placement_group is not None
worker = ray.worker.global_worker
worker.check_connected()
worker.core_worker.remove_placement_group(placement_group_id)
worker.core_worker.remove_placement_group(placement_group.id)
def placement_group_table(placement_group_id):
assert placement_group_id is not None
def placement_group_table(placement_group):
assert placement_group is not None
worker = ray.worker.global_worker
worker.check_connected()
return ray.state.state.placement_group_table(placement_group_id)
return ray.state.state.placement_group_table(placement_group.id)
def check_placement_group_index(placement_group, bundle_index):
assert placement_group is not None
if placement_group.id.is_nil():
if bundle_index != -1:
raise ValueError("If placement group is not set, "
"the value of bundle index must be -1.")
elif bundle_index >= placement_group.bundle_count \
or bundle_index < -1:
raise ValueError(f"placement group bundle index {bundle_index} "
f"is invalid. Valid placement group indexes: "
f"0-{placement_group.bundle_count}")