Skip to content

Commit 5ad91db

Browse files
authored
Merge pull request #414 from fabric-testbed/modify-interface-bw
Modify interface bw
2 parents e3c4785 + 4f839e9 commit 5ad91db

File tree

11 files changed

+74
-25
lines changed

11 files changed

+74
-25
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.11.0
22
MAINTAINER Komal Thareja<[email protected]>
33

4-
ARG HANDLERS_VER=1.8.2
4+
ARG HANDLERS_VER=1.8.4
55

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

fabric_cf/__init__.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,2 +1,2 @@
1-
__version__ = "1.8.4"
1+
__version__ = "1.8.6"
22
__VERSION__ = __version__

fabric_cf/actor/core/policy/network_node_inventory.py

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -146,10 +146,16 @@ def __update_shared_nic_labels_and_capacities(*, available: ComponentSliver,
146146
assigned_bdf = delegated_label.bdf[0]
147147
assigned_numa = delegated_label.numa[0]
148148

149+
# Updated the Requested component with VLAN, BDF, MAC
150+
req_ns_name = next(iter(requested.network_service_info.network_services))
151+
req_ns = requested.network_service_info.network_services[req_ns_name]
152+
req_ifs_name = next(iter(req_ns.interface_info.interfaces))
153+
req_ifs = req_ns.interface_info.interfaces[req_ifs_name]
154+
149155
# Check if the requested component's VLAN exists in the delegated labels
150-
if requested.labels and requested.labels.vlan and \
151-
requested.labels.vlan in ifs_delegated_labels.vlan:
152-
vlan_index = ifs_delegated_labels.vlan.index(requested.labels.vlan)
156+
if req_ifs.labels and req_ifs.labels.vlan and \
157+
req_ifs.labels.vlan in ifs_delegated_labels.vlan:
158+
vlan_index = ifs_delegated_labels.vlan.index(req_ifs.labels.vlan)
153159
bdf_for_requested_vlan = ifs_delegated_labels.bdf[vlan_index]
154160

155161
if bdf_for_requested_vlan in delegated_label.bdf:
@@ -163,12 +169,6 @@ def __update_shared_nic_labels_and_capacities(*, available: ComponentSliver,
163169
# Find index of assigned BDF in the interface delegated labels
164170
assigned_index = ifs_delegated_labels.bdf.index(assigned_bdf)
165171

166-
# Updated the Requested component with VLAN, BDF, MAC
167-
req_ns_name = next(iter(requested.network_service_info.network_services))
168-
req_ns = requested.network_service_info.network_services[req_ns_name]
169-
req_ifs_name = next(iter(req_ns.interface_info.interfaces))
170-
req_ifs = req_ns.interface_info.interfaces[req_ifs_name]
171-
172172
# Do not copy VLAN for OpenStack-vNIC
173173
if requested.get_model() == Constants.OPENSTACK_VNIC_MODEL:
174174
lab = Labels(bdf=ifs_delegated_labels.bdf[assigned_index], mac=ifs_delegated_labels.mac[assigned_index],

fabric_cf/actor/handlers/no_op_handler.py

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -174,6 +174,9 @@ def modify(self, unit: ConfigToken) -> Tuple[dict, ConfigToken]:
174174
self.__process_node_sliver_modify(existing=unit.get_sliver(), new=sliver)
175175

176176
elif isinstance(sliver, NetworkServiceSliver):
177+
existing = unit.get_sliver()
178+
diff = existing.diff(sliver)
179+
print(diff)
177180
self.__process_ns_sliver(sliver=sliver)
178181

179182
result = {Constants.PROPERTY_TARGET_NAME: Constants.TARGET_MODIFY,

fabric_cf/actor/security/pdp_auth.py

Lines changed: 25 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -167,12 +167,28 @@ def check_access(self, *, email: str, project: str, tags: List[str], action_id:
167167
self.logger.debug("PDP Auth Request: {}".format(pdp_request))
168168

169169
# send request to PDP
170-
response = requests.post(url=self.config['url'], headers=self._headers(), json=pdp_request)
171-
response_json = response.json()
172-
173-
if response.status_code == 200 and response_json["Response"][0]["Decision"] == "Permit":
174-
self.logger.debug("PDP response: {}".format(response_json))
175-
else:
176-
self.logger.error("PDP response: {}".format(response_json))
177-
msg = response_json["Response"][0]["AssociatedAdvice"][0]["AttributeAssignment"][0]["Value"]
178-
raise PdpAuthException(f"PDP Authorization check failed - {msg}")
170+
try:
171+
response = requests.post(url=self.config['url'], headers=self._headers(), json=pdp_request)
172+
173+
try:
174+
response_json = response.json()
175+
except ValueError:
176+
# Handle non-JSON response
177+
self.logger.error(f"Non-JSON response from PDP: {response.text}")
178+
raise PdpAuthException("PDP returned a non-JSON response")
179+
180+
if response.status_code == 200 and response_json.get("Response", [{}])[0].get("Decision") == "Permit":
181+
self.logger.debug("PDP response: {}".format(response_json))
182+
else:
183+
self.logger.error("PDP response: {}".format(response_json))
184+
msg = (
185+
response_json.get("Response", [{}])[0]
186+
.get("AssociatedAdvice", [{}])[0]
187+
.get("AttributeAssignment", [{}])[0]
188+
.get("Value", "Unknown reason")
189+
)
190+
raise PdpAuthException(f"PDP Authorization check failed - {msg}")
191+
192+
except Exception as e:
193+
self.logger.error(f"Request to PDP failed: {e}")
194+
raise PdpAuthException(f"PDP Failure: {e}") from e

fabric_cf/authority/docker-compose.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -52,7 +52,7 @@ services:
5252
network: host
5353
context: ../../../
5454
dockerfile: Dockerfile-auth
55-
image: authority:1.8.4
55+
image: authority:1.8.6
5656
container_name: site1-am
5757
restart: always
5858
depends_on:

fabric_cf/authority/vm_handler_config.yml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -66,6 +66,7 @@ playbooks:
6666
SmartNIC: worker_pci_provisioning.yml
6767
SharedNIC: worker_pci_provisioning.yml
6868
FPGA: fpga_provisioning.yml
69+
FPGA_Xilinx-SN1022: sn1022_fpga_provisioning.yml
6970
NVME: worker_pci_provisioning.yml
7071
Storage: head_volume_provisioning.yml
7172
SharedNIC-OpenStack-vNIC: head_port_provisioning.yml

fabric_cf/broker/docker-compose.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -53,7 +53,7 @@ services:
5353
build:
5454
context: ../../../
5555
dockerfile: Dockerfile-broker
56-
image: broker:1.8.4
56+
image: broker:1.8.6
5757
container_name: broker
5858
restart: always
5959
networks:

fabric_cf/orchestrator/core/orchestrator_slice_wrapper.py

Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -588,6 +588,35 @@ def modify(self, *, new_slice_graph: ABCASMPropertyGraph) -> Tuple[TopologyDiff,
588588
reservation_info = x.get_property('reservation_info')
589589
self.computed_remove_reservations.append(reservation_info.reservation_id)
590590

591+
# Modified Interfaces
592+
for x, flag in topology_diff.modified.interfaces:
593+
if not (flag & WhatsModifiedFlag.CAPACITIES):
594+
continue
595+
sliver, parent_node_id = FimHelper.get_parent_node(graph_model=existing_topology.graph_model, node=x)
596+
if not sliver.reservation_info or not sliver.reservation_info.reservation_id:
597+
self.logger.warning(f"Skipping modified interface -- possibly the interface on component; "
598+
f"update on corresponding network service interface would be picked -- {x}")
599+
continue
600+
rid = sliver.reservation_info.reservation_id
601+
# If corresponding sliver also has add operations; it's already in the map
602+
# No need to rebuild it
603+
if rid not in self.computed_modify_reservations:
604+
if x.type == InterfaceType.SubInterface:
605+
new_sliver = new_slice_graph.build_deep_node_sliver(node_id=parent_node_id)
606+
self.computed_modify_reservations[rid] = ModifiedReservation(sliver=new_sliver)
607+
else:
608+
new_reservation, dep_update_needed = self.__build_ns_sliver_reservation(
609+
slice_graph=new_slice_graph,
610+
node_id=parent_node_id,
611+
node_res_mapping=node_res_mapping)
612+
self.computed_modify_reservations[rid] = ModifiedReservation(
613+
sliver=new_reservation.get_sliver(),
614+
dependencies=new_reservation.redeem_processors)
615+
616+
if dep_update_needed:
617+
ns_peered_reservations.append(new_reservation)
618+
ns_mapping[new_reservation.sliver.node_id] = rid
619+
591620
# Update Dependencies for Peered NS
592621
self.__update_peered_ns_dependencies(ns_peered_reservations=ns_peered_reservations, ns_mapping=ns_mapping)
593622

fabric_cf/orchestrator/docker-compose.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -68,7 +68,7 @@ services:
6868
build:
6969
context: ../../../
7070
dockerfile: Dockerfile-orchestrator
71-
image: orchestrator:1.8.4
71+
image: orchestrator:1.8.6
7272
container_name: orchestrator
7373
restart: always
7474
depends_on:

0 commit comments

Comments
 (0)