Skip to content

Commit 99df15a

Browse files
Merge pull request #103 from SDNNetSim/release/5.5.1
Release/5.5.1
2 parents d2afff2 + 9af6e76 commit 99df15a

16 files changed

Lines changed: 326 additions & 385 deletions

.github/workflows/cross_platform.yml

Lines changed: 33 additions & 56 deletions
Original file line numberDiff line numberDiff line change
@@ -9,68 +9,45 @@ on:
99
- main
1010

1111
jobs:
12-
test-windows:
13-
name: Test on Windows 11
14-
runs-on: windows-latest
15-
steps:
16-
- name: Checkout code
17-
uses: actions/checkout@v2
18-
19-
- name: Set up Python
20-
uses: actions/setup-python@v2
21-
with:
22-
python-version: 3.11
23-
24-
- name: Install dependencies
25-
run: |
26-
python -m pip install --upgrade pip
27-
if (Test-Path requirements.txt) {
28-
Get-Content requirements.txt | Where-Object {$_ -notmatch 'rl_zoo3|stable-baselines3|pip|triton'} | Set-Content filtered_requirements.txt
29-
pip install -r filtered_requirements.txt
30-
}
31-
32-
- name: Run Python script on Windows
33-
run: |
34-
python ./run_sim.py --config_path=ini/example_ini/cross_platform.ini
12+
test:
13+
strategy:
14+
matrix:
15+
os: [windows-latest, ubuntu-latest, macos-latest]
16+
runs-on: ${{ matrix.os }}
17+
name: Test on ${{ matrix.os }}
3518

36-
test-ubuntu:
37-
name: Test on Ubuntu
38-
runs-on: ubuntu-latest
3919
steps:
4020
- name: Checkout code
41-
uses: actions/checkout@v2
21+
uses: actions/checkout@v4
4222

4323
- name: Set up Python
44-
uses: actions/setup-python@v2
24+
uses: actions/setup-python@v5
4525
with:
46-
python-version: 3.11
26+
python-version: '3.11'
4727

4828
- name: Install dependencies
29+
shell: bash
4930
run: |
50-
python -m pip install --upgrade pip
51-
if [ -f requirements.txt ]; then sed -e '/rl_zoo3/d' -e '/stable-baselines3/d' -e '/triton/d' requirements.txt > filtered_requirements.txt; pip install -r filtered_requirements.txt; fi
52-
53-
- name: Run Python script on Ubuntu
54-
run: |
55-
python ./run_sim.py --config_path=ini/example_ini/cross_platform.ini
56-
57-
test-macos:
58-
name: Test on MacOS
59-
runs-on: macos-latest
60-
steps:
61-
- name: Checkout code
62-
uses: actions/checkout@v2
63-
64-
- name: Set up Python
65-
uses: actions/setup-python@v2
66-
with:
67-
python-version: 3.11
68-
69-
- name: Install dependencies
70-
run: |
71-
python -m pip install --upgrade pip
72-
if [ -f requirements.txt ]; then sed -e '/rl_zoo3/d' -e '/stable-baselines3/d' -e '/triton/d' requirements.txt > filtered_requirements.txt; pip install -r filtered_requirements.txt; fi
73-
74-
- name: Run Python script on MacOS
75-
run: |
76-
python ./run_sim.py --config_path=ini/example_ini/cross_platform.ini
31+
# Step 1: Upgrade pip and install core build tools
32+
python -m pip install --upgrade pip setuptools wheel
33+
34+
# Step 2: Install torch first
35+
pip install torch==2.2.2
36+
37+
# Step 3: Install PyG packages with platform-specific logic
38+
if [[ "${{ runner.os }}" == "macOS" ]]; then
39+
# For macOS, compile from source with specific flags
40+
echo "Applying macOS build flags..."
41+
MACOSX_DEPLOYMENT_TARGET=10.15 pip install --no-build-isolation torch-scatter torch-sparse torch-cluster torch-spline-conv -f https://data.pyg.org/whl/torch-2.2.2+cpu.html
42+
else
43+
# For Linux/Windows, install from pre-built wheels
44+
pip install torch-scatter torch-sparse torch-cluster torch-spline-conv -f https://data.pyg.org/whl/torch-2.2.2+cpu.html
45+
fi
46+
47+
# Step 4: Install the rest of the requirements
48+
# Filter out all packages installed in previous steps, INCLUDING pip
49+
grep -vE "torch-scatter|torch-sparse|torch-cluster|torch-spline-conv|torch|triton|pip" requirements.txt > other_requirements.txt
50+
pip install -r other_requirements.txt
51+
52+
- name: Run Python script
53+
run: python ./run_sim.py --config_path=ini/example_ini/cross_platform.ini

.github/workflows/unittests.yml

Lines changed: 16 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -26,20 +26,31 @@ jobs:
2626
python-version: [ "3.11" ]
2727

2828
steps:
29-
- uses: actions/checkout@v3
29+
- uses: actions/checkout@v4
3030
- name: Set up Python ${{ matrix.python-version }}
31-
uses: actions/setup-python@v4
31+
uses: actions/setup-python@v5
3232
with:
3333
python-version: ${{ matrix.python-version }}
34+
3435
- name: Install dependencies
3536
run: |
36-
python -m pip install --upgrade pip
37+
# Step 1: Upgrade pip and install core build and testing tools
38+
python -m pip install --upgrade pip setuptools wheel
3739
pip install flake8 pytest
38-
if [ -f requirements.txt ]; then sed -e '/rl_zoo3/d' -e '/stable-baselines3/d' requirements.txt > filtered_requirements.txt; pip install -r filtered_requirements.txt; fi
40+
41+
# Step 2: Install torch first
42+
pip install torch==2.2.2
43+
44+
# Step 3: Install PyG packages for Linux
45+
pip install torch-scatter torch-sparse torch-cluster torch-spline-conv -f https://data.pyg.org/whl/torch-2.2.2+cpu.html
46+
47+
# Step 4: Install the rest of the requirements from the original file
48+
# This ensures stable-baselines3 and all other packages are installed
49+
pip install -r requirements.txt
3950
4051
- name: Print Current Working Directory
4152
run: pwd
4253

4354
- name: Test with pytest
4455
run: |
45-
pytest
56+
pytest

README.md

Lines changed: 118 additions & 45 deletions
Original file line numberDiff line numberDiff line change
@@ -1,57 +1,126 @@
1-
21
# Flexible Unified System for Intelligent Optical Networking (FUSION)
32

43
## About This Project
54

6-
Welcome to the FUSION, an open-source venture into the future of networking! Our core focus is on simulating Software Defined Elastic Optical Networks (SD-EONs), a cutting-edge approach that promises to revolutionize how data is transmitted over optical fibers. But that's just the beginning. We envision the SDN Simulator as a versatile simulation framework that can evolve to simulate a wide array of networking paradigms, now including the integration of artificial intelligence to enhance network optimization, performance, and decision-making processes.
5+
Welcome to **FUSION**, an open-source venture into the future of networking! Our core focus is on simulating **Software Defined Elastic Optical Networks (SD-EONs)**, a cutting-edge approach that promises to revolutionize how data is transmitted over optical fibers. But that's just the beginning. We envision FUSION as a versatile simulation framework that can evolve to simulate a wide array of networking paradigms, now including the integration of **artificial intelligence** to enhance network optimization, performance, and decision-making processes.
76

87
We need your insight and creativity! The true strength of open-source lies in community collaboration. Join us in pioneering the networks of tomorrow by contributing your unique simulations and features. Your expertise in AI and networking can help shape the future of this field.
98

109
## Getting Started
1110

1211
### Supported Operating Systems
1312

14-
- Ubuntu version 20.04+
13+
- macOS (requires manual compilation steps)
14+
- Ubuntu 20.04+
1515
- Fedora 37+
1616
- Windows 11
1717

1818
### Supported Programming Languages
1919

20-
- Python version 3.11+
21-
22-
### Installation
23-
24-
To get started with the FUSION, follow these steps to set up your environment:
25-
26-
1. Navigate to the desired directory you'd like to clone the repo to:
27-
```
28-
cd /your/desired/path
29-
```
30-
2. Clone the repository:
31-
```
32-
git clone git@github.com:SDNNetSim/FUSION.git
33-
```
34-
3. Change into the project directory:
35-
```
36-
cd FUSION
37-
```
38-
4. Install the required dependencies:
39-
```
40-
pip install -r requirements.txt
41-
```
42-
5. Navigate to the docs directory and generate the Sphinx documentation:
43-
44-
On Unix:
45-
```
46-
cd docs
47-
make html
48-
```
49-
On Windows:
50-
```
51-
cd docs
52-
.\make html
53-
```
54-
6. Finally, navigate to `_build/html/` and open `index.html` in a browser of your choice to view the documentation.
20+
- Python 3.11.X
21+
22+
---
23+
24+
## Installation Instructions
25+
26+
To get started with FUSION, first clone the repository and create a Python 3.11 virtual environment:
27+
28+
```bash
29+
# Navigate to your desired directory
30+
cd /your/desired/path
31+
32+
# Clone the repository
33+
git clone git@github.com:SDNNetSim/FUSION.git
34+
cd FUSION
35+
36+
# Create and activate a Python 3.11 virtual environment
37+
python3.11 -m venv venv
38+
source venv/bin/activate
39+
```
40+
41+
Next, follow the specific instructions for your operating system.
42+
43+
---
44+
45+
### macOS Installation
46+
47+
Installation on macOS is a multi-step process that requires compiling packages from source. Please follow these steps carefully.
48+
49+
**Step 1: Install Prerequisites**
50+
51+
Ensure you have Apple’s Command Line Tools installed:
52+
53+
```bash
54+
xcode-select --install
55+
```
56+
57+
**Step 2: Install PyTorch**
58+
59+
```bash
60+
pip install torch==2.2.2
61+
```
62+
63+
**Step 3: Install PyTorch Geometric (PyG) Packages**
64+
65+
These packages require special flags to compile correctly on macOS:
66+
67+
```bash
68+
MACOSX_DEPLOYMENT_TARGET=10.15 pip install --no-build-isolation torch-scatter torch-sparse torch-cluster torch-spline-conv -f https://data.pyg.org/whl/torch-2.2.2+cpu.html
69+
```
70+
71+
**Step 4: Install Remaining Dependencies**
72+
73+
```bash
74+
pip install -r requirements.txt
75+
```
76+
77+
---
78+
79+
### Linux & Windows Installation
80+
81+
Installation on Linux and Windows is more straightforward.
82+
83+
**Step 1: Install PyTorch**
84+
85+
```bash
86+
pip install torch==2.2.2
87+
```
88+
89+
**Step 2: Install All Other Dependencies**
90+
91+
```bash
92+
pip install -r requirements.txt
93+
```
94+
95+
---
96+
97+
## Generating the Documentation
98+
99+
After installing the dependencies, you can generate the Sphinx documentation.
100+
101+
Navigate to the docs directory:
102+
103+
```bash
104+
cd docs
105+
```
106+
107+
Build the HTML documentation:
108+
109+
On macOS/Linux:
110+
111+
```bash
112+
make html
113+
```
114+
115+
On Windows:
116+
117+
```powershell
118+
.\make.bat html
119+
```
120+
121+
Finally, navigate to `_build/html/` and open `index.html` in a browser of your choice to view the documentation.
122+
123+
---
55124

56125
## Standards and Guidelines
57126

@@ -63,19 +132,22 @@ To maintain the quality and consistency of the codebase, we adhere to the follow
63132
4. **Coding Guidelines**: Adhere to the team's [coding guidelines document](https://github.com/SDNNetSim/sdn_simulator/blob/main/CONTRIBUTING.md).
64133
5. **Unit Testing**: Each unit test should follow the [community unit testing guidelines](https://pylonsproject.org/community-unit-testing-guidelines.html).
65134

135+
---
136+
66137
## Contributors
67138

68-
This project is brought to you by the efforts of Arash Rezaee, Ryan McCann, Kojo Bempah, and
69-
Kimberly Tice. We welcome contributions from the community to help make this project even better!
139+
This project is brought to you by the efforts of **Arash Rezaee**, **Ryan McCann**, and **Vinod M. Vokkarane**. We welcome contributions from the community to help make this project even better!
140+
141+
---
70142

71143
## 📖 How to Cite This Work
72144

73-
If you use **FUSION** in your research, please cite the following paper:
145+
If you use FUSION in your research, please cite the following paper:
74146

75-
> **R. McCann, A. Rezaee, and V. M. Vokkarane**,
76-
> *"FUSION: A Flexible Unified Simulator for Intelligent Optical Networking,"*
77-
> 2024 IEEE International Conference on Advanced Networks and Telecommunications Systems (ANTS), Guwahati, India, 2024, pp. 1-6.
78-
> DOI: [10.1109/ANTS63515.2024.10898199](https://doi.org/10.1109/ANTS63515.2024.10898199)
147+
R. McCann, A. Rezaee, and V. M. Vokkarane,
148+
"FUSION: A Flexible Unified Simulator for Intelligent Optical Networking,"
149+
*2024 IEEE International Conference on Advanced Networks and Telecommunications Systems (ANTS)*, Guwahati, India, 2024, pp. 1-6.
150+
DOI: [10.1109/ANTS63515.2024.10898199](https://doi.org/10.1109/ANTS63515.2024.10898199)
79151

80152
### 📄 BibTeX
81153

@@ -88,3 +160,4 @@ If you use **FUSION** in your research, please cite the following paper:
88160
pages={1-6},
89161
doi={10.1109/ANTS63515.2024.10898199}
90162
}
163+
```

arg_scripts/sdn_args.py

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -65,7 +65,6 @@ def reset_params(self):
6565
self.band_list = list()
6666
self.start_slot_list = list()
6767
self.end_slot_list = list()
68-
self.was_routed = None
6968

7069
def get_data(self, key: str):
7170
"""

0 commit comments

Comments
 (0)