Skip to content

Commit

Permalink
Merge pull request #30 from fabric-testbed/delegation
Browse files Browse the repository at this point in the history
Support for close/remove delegations to handle claim/reclaim failures
  • Loading branch information
kthare10 authored Oct 13, 2022
2 parents 2f44f1a + 7c94d74 commit 7b88c09
Show file tree
Hide file tree
Showing 6 changed files with 108 additions and 1 deletion.
2 changes: 1 addition & 1 deletion fabric_mb/__init__.py
Original file line number Diff line number Diff line change
@@ -1 +1 @@
__VERSION__ = "1.2.3"
__VERSION__ = "1.3.0"
2 changes: 2 additions & 0 deletions fabric_mb/message_bus/messages/abc_message_avro.py
Original file line number Diff line number Diff line change
Expand Up @@ -63,7 +63,9 @@ class AbcMessageAvro(ABC):
remove_slice = "RemoveSlice"
add_slice = "AddSlice"
update_slice = "UpdateSlice"
remove_delegation = "RemoveDelegation"
remove_reservation = "RemoveReservation"
close_delegations = "CloseDelegations"
close_reservations = "CloseReservations"
update_reservation = "UpdateReservation"
add_reservation = "AddReservation"
Expand Down
47 changes: 47 additions & 0 deletions fabric_mb/message_bus/messages/close_delegations_avro.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,47 @@
#!/usr/bin/env python3
# MIT License
#
# Copyright (c) 2020 FABRIC Testbed
#
# Permission is hereby granted, free of charge, to any person obtaining a copy
# of this software and associated documentation files (the "Software"), to deal
# in the Software without restriction, including without limitation the rights
# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
# copies of the Software, and to permit persons to whom the Software is
# furnished to do so, subject to the following conditions:
#
# The above copyright notice and this permission notice shall be included in all
# copies or substantial portions of the Software.
#
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
# SOFTWARE.
#
#
# Author: Komal Thareja ([email protected])
from fabric_mb.message_bus.messages.abc_message_avro import AbcMessageAvro
from fabric_mb.message_bus.messages.request_by_id_record import RequestByIdRecord


class CloseDelegationsAvro(RequestByIdRecord):
"""
Implements Avro representation of an close Reservations Message
"""
def __init__(self):
super(CloseDelegationsAvro, self).__init__()
self.name = AbcMessageAvro.close_delegations

def validate(self) -> bool:
"""
Check if the object is valid and contains all mandatory fields
:return True on success; False on failure
"""
ret_val = super().validate()
if self.callback_topic is None or self.auth is None or self.guid is None or \
(self.slice_id is None and self.delegation_id is None):
ret_val = False
return ret_val
6 changes: 6 additions & 0 deletions fabric_mb/message_bus/messages/delegation_avro.py
Original file line number Diff line number Diff line change
Expand Up @@ -38,6 +38,7 @@ def __init__(self):
self.graph = None
self.sequence = 0
self.state = None
self.delegation_name = None

def from_dict(self, value: dict):
"""
Expand Down Expand Up @@ -90,12 +91,17 @@ def get_sequence(self) -> int:
def get_state(self) -> int:
return self.state

def get_name(self) -> str:
return self.delegation_name

def print(self):
"""
Print on console
"""
print("")
print("Delegation ID: {} Slice ID: {}".format(self.delegation_id, self.slice.get_slice_id()))
if self.delegation_name is not None:
print("Delegation Name: {}".format(self.delegation_name))
if self.sequence is not None:
print("Sequence: {}".format(self.sequence))
if self.state is not None:
Expand Down
47 changes: 47 additions & 0 deletions fabric_mb/message_bus/messages/remove_delegation_avro.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,47 @@
#!/usr/bin/env python3
# MIT License
#
# Copyright (c) 2020 FABRIC Testbed
#
# Permission is hereby granted, free of charge, to any person obtaining a copy
# of this software and associated documentation files (the "Software"), to deal
# in the Software without restriction, including without limitation the rights
# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
# copies of the Software, and to permit persons to whom the Software is
# furnished to do so, subject to the following conditions:
#
# The above copyright notice and this permission notice shall be included in all
# copies or substantial portions of the Software.
#
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
# SOFTWARE.
#
#
# Author: Komal Thareja ([email protected])
from fabric_mb.message_bus.messages.abc_message_avro import AbcMessageAvro
from fabric_mb.message_bus.messages.request_by_id_record import RequestByIdRecord


class RemoveDelegationAvro(RequestByIdRecord):
"""
Implements Avro representation of a Remove Delegation Message
"""
def __init__(self):
super(RemoveDelegationAvro, self).__init__()
self.name = AbcMessageAvro.remove_delegation

def validate(self) -> bool:
"""
Check if the object is valid and contains all mandatory fields
:return True on success; False on failure
"""
ret_val = super().validate()
if self.callback_topic is None or self.delegation_id is None or \
self.auth is None or self.guid is None:
ret_val = False
return ret_val
5 changes: 5 additions & 0 deletions fabric_mb/message_bus/schema/message.avsc
Original file line number Diff line number Diff line change
Expand Up @@ -613,6 +613,11 @@
"name": "delegation_id",
"type": "string"
},
{
"name": "delegation_name",
"type": ["null", "string"],
"default": null
},
{
"name": "sequence",
"type": ["null", "int"],
Expand Down

0 comments on commit 7b88c09

Please sign in to comment.