Skip to content

Commit 6f1d671

Browse files
authored
Merge pull request #261 from fabric-testbed/260.extend_model_update
260.extend model update
2 parents 8c5baeb + 50a7c46 commit 6f1d671

File tree

3 files changed

+23
-21
lines changed

3 files changed

+23
-21
lines changed

Dockerfile-auth

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
FROM python:3.9.0
22
MAINTAINER Komal Thareja<[email protected]>
33

4-
ARG HANDLERS_VER=1.4.1
4+
ARG HANDLERS_VER=1.4.2
55

66
RUN mkdir -p /usr/src/app
77
WORKDIR /usr/src/app

fabric_cf/actor/core/core/actor.py

Lines changed: 21 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -429,7 +429,7 @@ def recover_broker_slice(self, *, slice_obj: ABCSlice):
429429
return False
430430

431431
self.logger.info(f"Closing old delegations and adding new delegations to the slice: {slice_obj}!")
432-
delegation_names = []
432+
delegation_guids = {}
433433

434434
try:
435435
delegations = self.plugin.get_database().get_delegations(slice_id=str(slice_obj.get_slice_id()))
@@ -438,25 +438,27 @@ def recover_broker_slice(self, *, slice_obj: ABCSlice):
438438
raise ActorException(f"Could not fetch delegations records for slice {slice_obj} from database")
439439

440440
for d in delegations:
441-
self.logger.info(f"Closing delegation: {d}!")
442-
d.set_graph(graph=None)
443-
d.transition(prefix="closed as part of recovers", state=DelegationState.Closed)
444-
delegation_names.append(d.get_delegation_name())
445-
self.plugin.get_database().update_delegation(delegation=d)
441+
# Skip closed delegation
442+
if d.is_closed():
443+
self.logger.info(f"Skipping closed delegation: {d}!")
444+
continue
445+
# Grab Delegation Name and Delegation Id
446+
delegation_guids[d.get_delegation_name()] = d.get_delegation_id()
446447

447-
adms = self.policy.aggregate_resource_model.generate_adms()
448-
449-
# Create new delegations and add to the broker slice;
450-
# they will be re-registered with the policy in the recovery
451-
for name in delegation_names:
452-
new_delegation_graph = adms.get(name)
453-
dlg_obj = DelegationFactory.create(did=new_delegation_graph.get_graph_id(),
454-
slice_id=slice_obj.get_slice_id(),
455-
delegation_name=name)
456-
dlg_obj.set_slice_object(slice_object=slice_obj)
457-
dlg_obj.set_graph(graph=new_delegation_graph)
458-
dlg_obj.transition(prefix="Reload Model", state=DelegationState.Delegated)
459-
self.plugin.get_database().add_delegation(delegation=dlg_obj)
448+
# Generate ADMs and use existing delegation Id
449+
adms = self.policy.aggregate_resource_model.generate_adms(delegation_guids=delegation_guids)
450+
451+
# Update the delegations with the new graph
452+
for d in delegations:
453+
# Skip closed delegation
454+
if d.is_closed():
455+
continue
456+
457+
new_delegation_graph = adms.get(d.get_delegation_name())
458+
if new_delegation_graph.get_graph_id() == d.get_delegation_id():
459+
self.logger.info(f"Updating graph for delegation: {d}")
460+
d.set_graph(graph=new_delegation_graph)
461+
self.plugin.get_database().update_delegation(delegation=d)
460462

461463
def recover_inventory_slice(self, *, slice_obj: ABCSlice) -> bool:
462464
"""

requirements.txt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,4 +9,4 @@ swagger-ui-bundle
99
fabric_fss_utils==1.4.0
1010
PyYAML
1111
fabric-message-bus==1.4.0
12-
fabric-fim==1.4.4
12+
fabric-fim==1.4.5

0 commit comments

Comments
 (0)