Skip to content

Commit 2a27452

Browse files
committed
added tests for get_slice_by_state
1 parent 0943604 commit 2a27452

File tree

5 files changed

+66
-11
lines changed

5 files changed

+66
-11
lines changed

fabric_cf/actor/core/manage/actor_management_object.py

Lines changed: 13 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -143,6 +143,9 @@ def get_slices(self, *, slice_id: ID, caller: AuthToken, id_token: str = None,
143143
resource_type=ResourceType.slice,
144144
resource_id=str(slice_id))
145145

146+
if user_email is None:
147+
user_email = email
148+
146149
try:
147150
slice_list = None
148151
if slice_id is not None:
@@ -157,8 +160,10 @@ def get_slices(self, *, slice_id: ID, caller: AuthToken, id_token: str = None,
157160
slice_list = self.db.get_slice_by_oidc_claim_sub(oidc_claim_sub=user_dn)
158161
elif user_email is not None:
159162
if state is None:
163+
print("I am here - no state")
160164
slice_list = self.db.get_slice_by_email(email=user_email)
161165
else:
166+
print("I am here - yes state")
162167
slice_list = self.db.get_slice_by_email_state(email=user_email, state=state)
163168
else:
164169
slice_list = self.db.get_slices()
@@ -314,8 +319,7 @@ def get_slice_by_guid(self, *, guid: str, id_token: str = None) -> ABCSlice:
314319

315320
def get_reservations(self, *, caller: AuthToken, id_token: str = None, state: List[int] = None,
316321
slice_id: ID = None, rid: ID = None, oidc_claim_sub: str = None,
317-
email: str = None, rid_list: List[str] = None,
318-
notices_as_dict: bool = False) -> ResultReservationAvro:
322+
email: str = None, rid_list: List[str] = None) -> ResultReservationAvro:
319323
result = ResultReservationAvro()
320324
result.status = ResultAvro()
321325

@@ -329,6 +333,12 @@ def get_reservations(self, *, caller: AuthToken, id_token: str = None, state: Li
329333
resource_type=ResourceType.sliver,
330334
resource_id=str(rid))
331335

336+
if user_email is None:
337+
user_email = email
338+
339+
if user_dn is None:
340+
user_dn = oidc_claim_sub
341+
332342
res_list = None
333343
try:
334344
if rid is not None:
@@ -367,7 +377,7 @@ def get_reservations(self, *, caller: AuthToken, id_token: str = None, state: Li
367377
slice_id = r.get_slice_id()
368378
slice_obj = self.get_slice_by_guid(guid=slice_id)
369379
r.restore(actor=self.actor, slice_obj=slice_obj)
370-
rr = Converter.fill_reservation(reservation=r, full=True, notices_as_dict=notices_as_dict)
380+
rr = Converter.fill_reservation(reservation=r, full=True)
371381
result.reservations.append(rr)
372382
except ReservationNotFoundException as e:
373383
self.logger.error("getReservations: {}".format(e))

fabric_cf/actor/core/manage/converter.py

Lines changed: 2 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -73,8 +73,7 @@ def fill_reservation_predecessor(*, pred: PredecessorState) -> ReservationPredec
7373
return pred_avro
7474

7575
@staticmethod
76-
def fill_reservation(*, reservation: ABCReservationMixin, full: bool,
77-
notices_as_dict:bool = False) -> ReservationMng:
76+
def fill_reservation(*, reservation: ABCReservationMixin, full: bool) -> ReservationMng:
7877
rsv_mng = None
7978
if isinstance(reservation, ABCControllerReservation):
8079
rsv_mng = LeaseReservationAvro()
@@ -113,8 +112,6 @@ def fill_reservation(*, reservation: ABCReservationMixin, full: bool,
113112
rsv_mng.set_broker(str(broker.get_guid()))
114113
rsv_mng.set_renewable(reservation.is_renewable())
115114
rsv_mng.set_renew_time(reservation.get_renew_time())
116-
if notices_as_dict:
117-
rsv_mng.set_notices(reservation.get_notices_dict())
118115

119116
if reservation.get_term() is not None:
120117
rsv_mng.set_start(ActorClock.to_milliseconds(when=reservation.get_term().get_start_time()))
@@ -127,8 +124,7 @@ def fill_reservation(*, reservation: ABCReservationMixin, full: bool,
127124
if reservation.get_requested_term() is not None:
128125
rsv_mng.set_requested_end(ActorClock.to_milliseconds(when=reservation.get_requested_term().get_end_time()))
129126

130-
if rsv_mng.get_notices() is None:
131-
rsv_mng.set_notices(reservation.get_notices())
127+
rsv_mng.set_notices(reservation.get_notices())
132128

133129
if full:
134130
rsv_mng = Converter.attach_res_properties(mng=rsv_mng, reservation=reservation)

fabric_cf/actor/core/manage/local/local_actor.py

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -55,6 +55,7 @@ def get_slices(self, *, id_token: str = None, slice_id: ID = None, slice_name: s
5555
email: str = None, state: List[int] = None) -> List[SliceAvro]:
5656
self.clear_last()
5757
try:
58+
print("I am here")
5859
result = self.manager.get_slices(slice_id=slice_id, caller=self.auth, id_token=id_token,
5960
slice_name=slice_name, email=email, state=state)
6061
self.last_status = result.status
@@ -85,7 +86,7 @@ def get_reservations(self, *, id_token: str = None, state: List[int] = None, sli
8586
try:
8687
result = self.manager.get_reservations(caller=self.auth, state=state, slice_id=slice_id, rid=rid,
8788
id_token=id_token, oidc_claim_sub=oidc_claim_sub, email=email,
88-
rid_list=rid_list, notices_as_dict=True)
89+
rid_list=rid_list)
8990
self.last_status = result.status
9091

9192
if result.status.get_code() == 0:

fabric_cf/actor/db/psql_database.py

Lines changed: 48 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -470,7 +470,7 @@ def generate_slice_dict_from_row(row) -> dict:
470470

471471
slice_obj = {'slc_id': row.slc_id, 'slc_guid': row.slc_guid, 'slc_name': row.slc_name,
472472
'slc_type': row.slc_type, 'slc_resource_type': row.slc_resource_type,
473-
'properties': row.properties}
473+
'properties': row.properties, 'slc_state': row.slc_state}
474474
if row.slc_graph_id is not None:
475475
slice_obj['slc_graph_id'] = row.slc_graph_id
476476

@@ -1798,7 +1798,54 @@ def test2():
17981798
print(r['rsv_state'])
17991799
print("Get all actors after reset {}".format(db.get_actors()))
18001800

1801+
def test3():
1802+
logger = logging.getLogger('PsqlDatabase')
1803+
db = PsqlDatabase(user='fabric', password='fabric', database='am', db_host='127.0.0.1:5432', logger=logger)
1804+
db.create_db()
1805+
db.reset_db()
1806+
1807+
# Actor Operations
1808+
prop = {'abc': 'def'}
1809+
1810+
# Slice operations
1811+
from fabric_cf.actor.core.kernel.slice_state_machine import SliceState
1812+
db.add_slice(slc_guid="1234", slc_name="test-slice", slc_type=1, slc_resource_type="def",
1813+
properties=pickle.dumps(prop), lease_start=datetime.utcnow(), lease_end=datetime.utcnow(),
1814+
slc_state=SliceState.Closing.value, email="[email protected]")
1815+
1816+
db.add_slice(slc_guid="1234", slc_name="test-slice2", slc_type=1, slc_resource_type="def",
1817+
properties=pickle.dumps(prop), lease_start=datetime.utcnow(), lease_end=datetime.utcnow(),
1818+
slc_state=SliceState.Dead.value, email="[email protected]")
1819+
1820+
db.add_slice(slc_guid="1234", slc_name="test-slice3", slc_type=1, slc_resource_type="def",
1821+
properties=pickle.dumps(prop), lease_start=datetime.utcnow(), lease_end=datetime.utcnow(),
1822+
slc_state=SliceState.StableOK.value, email="[email protected]")
1823+
1824+
db.add_slice(slc_guid="1234", slc_name="test-slice4", slc_type=1, slc_resource_type="def",
1825+
properties=pickle.dumps(prop), lease_start=datetime.utcnow(), lease_end=datetime.utcnow(),
1826+
slc_state=SliceState.StableError.value, email="[email protected]")
1827+
1828+
db.add_slice(slc_guid="1234", slc_name="test-slice3", slc_type=1, slc_resource_type="def",
1829+
properties=pickle.dumps(prop), lease_start=datetime.utcnow(), lease_end=datetime.utcnow(),
1830+
slc_state=SliceState.Configuring.value, email="[email protected]")
1831+
1832+
ss = db.get_slice_by_email_state(slc_state=[SliceState.Dead.value, SliceState.Closing.value],
1833+
1834+
1835+
assert len(ss) == 2
1836+
1837+
ss = db.get_slice_by_email_state(slc_state=[SliceState.StableOK.value, SliceState.StableError.value],
1838+
1839+
1840+
assert len(ss) == 2
1841+
1842+
ss = db.get_slice_by_email_state(slc_state=[SliceState.Configuring.value],
1843+
1844+
1845+
assert len(ss) == 1
1846+
18011847

18021848
if __name__ == '__main__':
18031849
test2()
18041850
test()
1851+
test3()

fabric_cf/orchestrator/core/orchestrator_handler.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -343,6 +343,7 @@ def get_slices(self, *, token: str, slice_id: str = None, states: List[str] = No
343343
slice_guid = ID(uid=slice_id)
344344

345345
slice_states = SliceState.str_list_to_state_list(states=states)
346+
print(slice_states)
346347

347348
slice_list = controller.get_slices(id_token=token, slice_id=slice_guid, state=slice_states)
348349
return ResponseBuilder.get_slice_summary(slice_list=slice_list)

0 commit comments

Comments
 (0)