From 4fe11faa320c8e9f7bbb28be0d7e0f5b4a8035af Mon Sep 17 00:00:00 2001
From: Alejandro Tjaarda <alexdecb@yahoo.es>
Date: Tue, 1 Oct 2024 22:50:17 +0000
Subject: [PATCH] src: removed unused source code

---
 src/database/.gitignore                       |  33 --
 src/database/.mvn/wrapper/maven-wrapper.jar   | Bin 62547 -> 0 bytes
 .../.mvn/wrapper/maven-wrapper.properties     |   2 -
 src/database/mvnw                             | 308 -----------
 src/database/mvnw.cmd                         | 205 --------
 src/database/pom.xml                          |  82 ---
 .../l2sm/database/DatabaseApplication.java    |  13 -
 .../com/l2sm/database/entity/Interface.java   |  91 ----
 .../java/com/l2sm/database/entity/Link.java   |  67 ---
 .../java/com/l2sm/database/entity/Ned.java    |  65 ---
 .../com/l2sm/database/entity/Network.java     |  50 --
 .../java/com/l2sm/database/entity/Path.java   |  46 --
 .../java/com/l2sm/database/entity/Switch.java |  22 -
 .../src/main/resources/application.properties |   9 -
 .../database/DatabaseApplicationTests.java    |  13 -
 .../__pycache__/l2sm-operator.cpython-310.pyc | Bin 14541 -> 0 bytes
 .../__pycache__/l2sm-operator.cpython-38.pyc  | Bin 13869 -> 0 bytes
 src/operator/l2sm-operator.py                 | 496 ------------------
 src/operator/requirements.txt                 |   4 -
 19 files changed, 1506 deletions(-)
 delete mode 100644 src/database/.gitignore
 delete mode 100644 src/database/.mvn/wrapper/maven-wrapper.jar
 delete mode 100644 src/database/.mvn/wrapper/maven-wrapper.properties
 delete mode 100755 src/database/mvnw
 delete mode 100644 src/database/mvnw.cmd
 delete mode 100644 src/database/pom.xml
 delete mode 100644 src/database/src/main/java/com/l2sm/database/DatabaseApplication.java
 delete mode 100644 src/database/src/main/java/com/l2sm/database/entity/Interface.java
 delete mode 100644 src/database/src/main/java/com/l2sm/database/entity/Link.java
 delete mode 100644 src/database/src/main/java/com/l2sm/database/entity/Ned.java
 delete mode 100644 src/database/src/main/java/com/l2sm/database/entity/Network.java
 delete mode 100644 src/database/src/main/java/com/l2sm/database/entity/Path.java
 delete mode 100644 src/database/src/main/java/com/l2sm/database/entity/Switch.java
 delete mode 100644 src/database/src/main/resources/application.properties
 delete mode 100644 src/database/src/test/java/com/l2sm/database/DatabaseApplicationTests.java
 delete mode 100644 src/operator/__pycache__/l2sm-operator.cpython-310.pyc
 delete mode 100644 src/operator/__pycache__/l2sm-operator.cpython-38.pyc
 delete mode 100644 src/operator/l2sm-operator.py
 delete mode 100644 src/operator/requirements.txt

diff --git a/src/database/.gitignore b/src/database/.gitignore
deleted file mode 100644
index 549e00a..0000000
--- a/src/database/.gitignore
+++ /dev/null
@@ -1,33 +0,0 @@
-HELP.md
-target/
-!.mvn/wrapper/maven-wrapper.jar
-!**/src/main/**/target/
-!**/src/test/**/target/
-
-### STS ###
-.apt_generated
-.classpath
-.factorypath
-.project
-.settings
-.springBeans
-.sts4-cache
-
-### IntelliJ IDEA ###
-.idea
-*.iws
-*.iml
-*.ipr
-
-### NetBeans ###
-/nbproject/private/
-/nbbuild/
-/dist/
-/nbdist/
-/.nb-gradle/
-build/
-!**/src/main/**/build/
-!**/src/test/**/build/
-
-### VS Code ###
-.vscode/
diff --git a/src/database/.mvn/wrapper/maven-wrapper.jar b/src/database/.mvn/wrapper/maven-wrapper.jar
deleted file mode 100644
index cb28b0e37c7d206feb564310fdeec0927af4123a..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 62547
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
A?*IS*

diff --git a/src/database/.mvn/wrapper/maven-wrapper.properties b/src/database/.mvn/wrapper/maven-wrapper.properties
deleted file mode 100644
index e70e7bc..0000000
--- a/src/database/.mvn/wrapper/maven-wrapper.properties
+++ /dev/null
@@ -1,2 +0,0 @@
-distributionUrl=https://repo.maven.apache.org/maven2/org/apache/maven/apache-maven/3.9.6/apache-maven-3.9.6-bin.zip
-wrapperUrl=https://repo.maven.apache.org/maven2/org/apache/maven/wrapper/maven-wrapper/3.2.0/maven-wrapper-3.2.0.jar
diff --git a/src/database/mvnw b/src/database/mvnw
deleted file mode 100755
index 66df285..0000000
--- a/src/database/mvnw
+++ /dev/null
@@ -1,308 +0,0 @@
-#!/bin/sh
-# ----------------------------------------------------------------------------
-# Licensed to the Apache Software Foundation (ASF) under one
-# or more contributor license agreements.  See the NOTICE file
-# distributed with this work for additional information
-# regarding copyright ownership.  The ASF licenses this file
-# to you under the Apache License, Version 2.0 (the
-# "License"); you may not use this file except in compliance
-# with the License.  You may obtain a copy of the License at
-#
-#    https://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing,
-# software distributed under the License is distributed on an
-# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-# KIND, either express or implied.  See the License for the
-# specific language governing permissions and limitations
-# under the License.
-# ----------------------------------------------------------------------------
-
-# ----------------------------------------------------------------------------
-# Apache Maven Wrapper startup batch script, version 3.2.0
-#
-# Required ENV vars:
-# ------------------
-#   JAVA_HOME - location of a JDK home dir
-#
-# Optional ENV vars
-# -----------------
-#   MAVEN_OPTS - parameters passed to the Java VM when running Maven
-#     e.g. to debug Maven itself, use
-#       set MAVEN_OPTS=-Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=y,address=8000
-#   MAVEN_SKIP_RC - flag to disable loading of mavenrc files
-# ----------------------------------------------------------------------------
-
-if [ -z "$MAVEN_SKIP_RC" ] ; then
-
-  if [ -f /usr/local/etc/mavenrc ] ; then
-    . /usr/local/etc/mavenrc
-  fi
-
-  if [ -f /etc/mavenrc ] ; then
-    . /etc/mavenrc
-  fi
-
-  if [ -f "$HOME/.mavenrc" ] ; then
-    . "$HOME/.mavenrc"
-  fi
-
-fi
-
-# OS specific support.  $var _must_ be set to either true or false.
-cygwin=false;
-darwin=false;
-mingw=false
-case "$(uname)" in
-  CYGWIN*) cygwin=true ;;
-  MINGW*) mingw=true;;
-  Darwin*) darwin=true
-    # Use /usr/libexec/java_home if available, otherwise fall back to /Library/Java/Home
-    # See https://developer.apple.com/library/mac/qa/qa1170/_index.html
-    if [ -z "$JAVA_HOME" ]; then
-      if [ -x "/usr/libexec/java_home" ]; then
-        JAVA_HOME="$(/usr/libexec/java_home)"; export JAVA_HOME
-      else
-        JAVA_HOME="/Library/Java/Home"; export JAVA_HOME
-      fi
-    fi
-    ;;
-esac
-
-if [ -z "$JAVA_HOME" ] ; then
-  if [ -r /etc/gentoo-release ] ; then
-    JAVA_HOME=$(java-config --jre-home)
-  fi
-fi
-
-# For Cygwin, ensure paths are in UNIX format before anything is touched
-if $cygwin ; then
-  [ -n "$JAVA_HOME" ] &&
-    JAVA_HOME=$(cygpath --unix "$JAVA_HOME")
-  [ -n "$CLASSPATH" ] &&
-    CLASSPATH=$(cygpath --path --unix "$CLASSPATH")
-fi
-
-# For Mingw, ensure paths are in UNIX format before anything is touched
-if $mingw ; then
-  [ -n "$JAVA_HOME" ] && [ -d "$JAVA_HOME" ] &&
-    JAVA_HOME="$(cd "$JAVA_HOME" || (echo "cannot cd into $JAVA_HOME."; exit 1); pwd)"
-fi
-
-if [ -z "$JAVA_HOME" ]; then
-  javaExecutable="$(which javac)"
-  if [ -n "$javaExecutable" ] && ! [ "$(expr "\"$javaExecutable\"" : '\([^ ]*\)')" = "no" ]; then
-    # readlink(1) is not available as standard on Solaris 10.
-    readLink=$(which readlink)
-    if [ ! "$(expr "$readLink" : '\([^ ]*\)')" = "no" ]; then
-      if $darwin ; then
-        javaHome="$(dirname "\"$javaExecutable\"")"
-        javaExecutable="$(cd "\"$javaHome\"" && pwd -P)/javac"
-      else
-        javaExecutable="$(readlink -f "\"$javaExecutable\"")"
-      fi
-      javaHome="$(dirname "\"$javaExecutable\"")"
-      javaHome=$(expr "$javaHome" : '\(.*\)/bin')
-      JAVA_HOME="$javaHome"
-      export JAVA_HOME
-    fi
-  fi
-fi
-
-if [ -z "$JAVACMD" ] ; then
-  if [ -n "$JAVA_HOME"  ] ; then
-    if [ -x "$JAVA_HOME/jre/sh/java" ] ; then
-      # IBM's JDK on AIX uses strange locations for the executables
-      JAVACMD="$JAVA_HOME/jre/sh/java"
-    else
-      JAVACMD="$JAVA_HOME/bin/java"
-    fi
-  else
-    JAVACMD="$(\unset -f command 2>/dev/null; \command -v java)"
-  fi
-fi
-
-if [ ! -x "$JAVACMD" ] ; then
-  echo "Error: JAVA_HOME is not defined correctly." >&2
-  echo "  We cannot execute $JAVACMD" >&2
-  exit 1
-fi
-
-if [ -z "$JAVA_HOME" ] ; then
-  echo "Warning: JAVA_HOME environment variable is not set."
-fi
-
-# traverses directory structure from process work directory to filesystem root
-# first directory with .mvn subdirectory is considered project base directory
-find_maven_basedir() {
-  if [ -z "$1" ]
-  then
-    echo "Path not specified to find_maven_basedir"
-    return 1
-  fi
-
-  basedir="$1"
-  wdir="$1"
-  while [ "$wdir" != '/' ] ; do
-    if [ -d "$wdir"/.mvn ] ; then
-      basedir=$wdir
-      break
-    fi
-    # workaround for JBEAP-8937 (on Solaris 10/Sparc)
-    if [ -d "${wdir}" ]; then
-      wdir=$(cd "$wdir/.." || exit 1; pwd)
-    fi
-    # end of workaround
-  done
-  printf '%s' "$(cd "$basedir" || exit 1; pwd)"
-}
-
-# concatenates all lines of a file
-concat_lines() {
-  if [ -f "$1" ]; then
-    # Remove \r in case we run on Windows within Git Bash
-    # and check out the repository with auto CRLF management
-    # enabled. Otherwise, we may read lines that are delimited with
-    # \r\n and produce $'-Xarg\r' rather than -Xarg due to word
-    # splitting rules.
-    tr -s '\r\n' ' ' < "$1"
-  fi
-}
-
-log() {
-  if [ "$MVNW_VERBOSE" = true ]; then
-    printf '%s\n' "$1"
-  fi
-}
-
-BASE_DIR=$(find_maven_basedir "$(dirname "$0")")
-if [ -z "$BASE_DIR" ]; then
-  exit 1;
-fi
-
-MAVEN_PROJECTBASEDIR=${MAVEN_BASEDIR:-"$BASE_DIR"}; export MAVEN_PROJECTBASEDIR
-log "$MAVEN_PROJECTBASEDIR"
-
-##########################################################################################
-# Extension to allow automatically downloading the maven-wrapper.jar from Maven-central
-# This allows using the maven wrapper in projects that prohibit checking in binary data.
-##########################################################################################
-wrapperJarPath="$MAVEN_PROJECTBASEDIR/.mvn/wrapper/maven-wrapper.jar"
-if [ -r "$wrapperJarPath" ]; then
-    log "Found $wrapperJarPath"
-else
-    log "Couldn't find $wrapperJarPath, downloading it ..."
-
-    if [ -n "$MVNW_REPOURL" ]; then
-      wrapperUrl="$MVNW_REPOURL/org/apache/maven/wrapper/maven-wrapper/3.2.0/maven-wrapper-3.2.0.jar"
-    else
-      wrapperUrl="https://repo.maven.apache.org/maven2/org/apache/maven/wrapper/maven-wrapper/3.2.0/maven-wrapper-3.2.0.jar"
-    fi
-    while IFS="=" read -r key value; do
-      # Remove '\r' from value to allow usage on windows as IFS does not consider '\r' as a separator ( considers space, tab, new line ('\n'), and custom '=' )
-      safeValue=$(echo "$value" | tr -d '\r')
-      case "$key" in (wrapperUrl) wrapperUrl="$safeValue"; break ;;
-      esac
-    done < "$MAVEN_PROJECTBASEDIR/.mvn/wrapper/maven-wrapper.properties"
-    log "Downloading from: $wrapperUrl"
-
-    if $cygwin; then
-      wrapperJarPath=$(cygpath --path --windows "$wrapperJarPath")
-    fi
-
-    if command -v wget > /dev/null; then
-        log "Found wget ... using wget"
-        [ "$MVNW_VERBOSE" = true ] && QUIET="" || QUIET="--quiet"
-        if [ -z "$MVNW_USERNAME" ] || [ -z "$MVNW_PASSWORD" ]; then
-            wget $QUIET "$wrapperUrl" -O "$wrapperJarPath" || rm -f "$wrapperJarPath"
-        else
-            wget $QUIET --http-user="$MVNW_USERNAME" --http-password="$MVNW_PASSWORD" "$wrapperUrl" -O "$wrapperJarPath" || rm -f "$wrapperJarPath"
-        fi
-    elif command -v curl > /dev/null; then
-        log "Found curl ... using curl"
-        [ "$MVNW_VERBOSE" = true ] && QUIET="" || QUIET="--silent"
-        if [ -z "$MVNW_USERNAME" ] || [ -z "$MVNW_PASSWORD" ]; then
-            curl $QUIET -o "$wrapperJarPath" "$wrapperUrl" -f -L || rm -f "$wrapperJarPath"
-        else
-            curl $QUIET --user "$MVNW_USERNAME:$MVNW_PASSWORD" -o "$wrapperJarPath" "$wrapperUrl" -f -L || rm -f "$wrapperJarPath"
-        fi
-    else
-        log "Falling back to using Java to download"
-        javaSource="$MAVEN_PROJECTBASEDIR/.mvn/wrapper/MavenWrapperDownloader.java"
-        javaClass="$MAVEN_PROJECTBASEDIR/.mvn/wrapper/MavenWrapperDownloader.class"
-        # For Cygwin, switch paths to Windows format before running javac
-        if $cygwin; then
-          javaSource=$(cygpath --path --windows "$javaSource")
-          javaClass=$(cygpath --path --windows "$javaClass")
-        fi
-        if [ -e "$javaSource" ]; then
-            if [ ! -e "$javaClass" ]; then
-                log " - Compiling MavenWrapperDownloader.java ..."
-                ("$JAVA_HOME/bin/javac" "$javaSource")
-            fi
-            if [ -e "$javaClass" ]; then
-                log " - Running MavenWrapperDownloader.java ..."
-                ("$JAVA_HOME/bin/java" -cp .mvn/wrapper MavenWrapperDownloader "$wrapperUrl" "$wrapperJarPath") || rm -f "$wrapperJarPath"
-            fi
-        fi
-    fi
-fi
-##########################################################################################
-# End of extension
-##########################################################################################
-
-# If specified, validate the SHA-256 sum of the Maven wrapper jar file
-wrapperSha256Sum=""
-while IFS="=" read -r key value; do
-  case "$key" in (wrapperSha256Sum) wrapperSha256Sum=$value; break ;;
-  esac
-done < "$MAVEN_PROJECTBASEDIR/.mvn/wrapper/maven-wrapper.properties"
-if [ -n "$wrapperSha256Sum" ]; then
-  wrapperSha256Result=false
-  if command -v sha256sum > /dev/null; then
-    if echo "$wrapperSha256Sum  $wrapperJarPath" | sha256sum -c > /dev/null 2>&1; then
-      wrapperSha256Result=true
-    fi
-  elif command -v shasum > /dev/null; then
-    if echo "$wrapperSha256Sum  $wrapperJarPath" | shasum -a 256 -c > /dev/null 2>&1; then
-      wrapperSha256Result=true
-    fi
-  else
-    echo "Checksum validation was requested but neither 'sha256sum' or 'shasum' are available."
-    echo "Please install either command, or disable validation by removing 'wrapperSha256Sum' from your maven-wrapper.properties."
-    exit 1
-  fi
-  if [ $wrapperSha256Result = false ]; then
-    echo "Error: Failed to validate Maven wrapper SHA-256, your Maven wrapper might be compromised." >&2
-    echo "Investigate or delete $wrapperJarPath to attempt a clean download." >&2
-    echo "If you updated your Maven version, you need to update the specified wrapperSha256Sum property." >&2
-    exit 1
-  fi
-fi
-
-MAVEN_OPTS="$(concat_lines "$MAVEN_PROJECTBASEDIR/.mvn/jvm.config") $MAVEN_OPTS"
-
-# For Cygwin, switch paths to Windows format before running java
-if $cygwin; then
-  [ -n "$JAVA_HOME" ] &&
-    JAVA_HOME=$(cygpath --path --windows "$JAVA_HOME")
-  [ -n "$CLASSPATH" ] &&
-    CLASSPATH=$(cygpath --path --windows "$CLASSPATH")
-  [ -n "$MAVEN_PROJECTBASEDIR" ] &&
-    MAVEN_PROJECTBASEDIR=$(cygpath --path --windows "$MAVEN_PROJECTBASEDIR")
-fi
-
-# Provide a "standardized" way to retrieve the CLI args that will
-# work with both Windows and non-Windows executions.
-MAVEN_CMD_LINE_ARGS="$MAVEN_CONFIG $*"
-export MAVEN_CMD_LINE_ARGS
-
-WRAPPER_LAUNCHER=org.apache.maven.wrapper.MavenWrapperMain
-
-# shellcheck disable=SC2086 # safe args
-exec "$JAVACMD" \
-  $MAVEN_OPTS \
-  $MAVEN_DEBUG_OPTS \
-  -classpath "$MAVEN_PROJECTBASEDIR/.mvn/wrapper/maven-wrapper.jar" \
-  "-Dmaven.multiModuleProjectDirectory=${MAVEN_PROJECTBASEDIR}" \
-  ${WRAPPER_LAUNCHER} $MAVEN_CONFIG "$@"
diff --git a/src/database/mvnw.cmd b/src/database/mvnw.cmd
deleted file mode 100644
index 95ba6f5..0000000
--- a/src/database/mvnw.cmd
+++ /dev/null
@@ -1,205 +0,0 @@
-@REM ----------------------------------------------------------------------------
-@REM Licensed to the Apache Software Foundation (ASF) under one
-@REM or more contributor license agreements.  See the NOTICE file
-@REM distributed with this work for additional information
-@REM regarding copyright ownership.  The ASF licenses this file
-@REM to you under the Apache License, Version 2.0 (the
-@REM "License"); you may not use this file except in compliance
-@REM with the License.  You may obtain a copy of the License at
-@REM
-@REM    https://www.apache.org/licenses/LICENSE-2.0
-@REM
-@REM Unless required by applicable law or agreed to in writing,
-@REM software distributed under the License is distributed on an
-@REM "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-@REM KIND, either express or implied.  See the License for the
-@REM specific language governing permissions and limitations
-@REM under the License.
-@REM ----------------------------------------------------------------------------
-
-@REM ----------------------------------------------------------------------------
-@REM Apache Maven Wrapper startup batch script, version 3.2.0
-@REM
-@REM Required ENV vars:
-@REM JAVA_HOME - location of a JDK home dir
-@REM
-@REM Optional ENV vars
-@REM MAVEN_BATCH_ECHO - set to 'on' to enable the echoing of the batch commands
-@REM MAVEN_BATCH_PAUSE - set to 'on' to wait for a keystroke before ending
-@REM MAVEN_OPTS - parameters passed to the Java VM when running Maven
-@REM     e.g. to debug Maven itself, use
-@REM set MAVEN_OPTS=-Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=y,address=8000
-@REM MAVEN_SKIP_RC - flag to disable loading of mavenrc files
-@REM ----------------------------------------------------------------------------
-
-@REM Begin all REM lines with '@' in case MAVEN_BATCH_ECHO is 'on'
-@echo off
-@REM set title of command window
-title %0
-@REM enable echoing by setting MAVEN_BATCH_ECHO to 'on'
-@if "%MAVEN_BATCH_ECHO%" == "on"  echo %MAVEN_BATCH_ECHO%
-
-@REM set %HOME% to equivalent of $HOME
-if "%HOME%" == "" (set "HOME=%HOMEDRIVE%%HOMEPATH%")
-
-@REM Execute a user defined script before this one
-if not "%MAVEN_SKIP_RC%" == "" goto skipRcPre
-@REM check for pre script, once with legacy .bat ending and once with .cmd ending
-if exist "%USERPROFILE%\mavenrc_pre.bat" call "%USERPROFILE%\mavenrc_pre.bat" %*
-if exist "%USERPROFILE%\mavenrc_pre.cmd" call "%USERPROFILE%\mavenrc_pre.cmd" %*
-:skipRcPre
-
-@setlocal
-
-set ERROR_CODE=0
-
-@REM To isolate internal variables from possible post scripts, we use another setlocal
-@setlocal
-
-@REM ==== START VALIDATION ====
-if not "%JAVA_HOME%" == "" goto OkJHome
-
-echo.
-echo Error: JAVA_HOME not found in your environment. >&2
-echo Please set the JAVA_HOME variable in your environment to match the >&2
-echo location of your Java installation. >&2
-echo.
-goto error
-
-:OkJHome
-if exist "%JAVA_HOME%\bin\java.exe" goto init
-
-echo.
-echo Error: JAVA_HOME is set to an invalid directory. >&2
-echo JAVA_HOME = "%JAVA_HOME%" >&2
-echo Please set the JAVA_HOME variable in your environment to match the >&2
-echo location of your Java installation. >&2
-echo.
-goto error
-
-@REM ==== END VALIDATION ====
-
-:init
-
-@REM Find the project base dir, i.e. the directory that contains the folder ".mvn".
-@REM Fallback to current working directory if not found.
-
-set MAVEN_PROJECTBASEDIR=%MAVEN_BASEDIR%
-IF NOT "%MAVEN_PROJECTBASEDIR%"=="" goto endDetectBaseDir
-
-set EXEC_DIR=%CD%
-set WDIR=%EXEC_DIR%
-:findBaseDir
-IF EXIST "%WDIR%"\.mvn goto baseDirFound
-cd ..
-IF "%WDIR%"=="%CD%" goto baseDirNotFound
-set WDIR=%CD%
-goto findBaseDir
-
-:baseDirFound
-set MAVEN_PROJECTBASEDIR=%WDIR%
-cd "%EXEC_DIR%"
-goto endDetectBaseDir
-
-:baseDirNotFound
-set MAVEN_PROJECTBASEDIR=%EXEC_DIR%
-cd "%EXEC_DIR%"
-
-:endDetectBaseDir
-
-IF NOT EXIST "%MAVEN_PROJECTBASEDIR%\.mvn\jvm.config" goto endReadAdditionalConfig
-
-@setlocal EnableExtensions EnableDelayedExpansion
-for /F "usebackq delims=" %%a in ("%MAVEN_PROJECTBASEDIR%\.mvn\jvm.config") do set JVM_CONFIG_MAVEN_PROPS=!JVM_CONFIG_MAVEN_PROPS! %%a
-@endlocal & set JVM_CONFIG_MAVEN_PROPS=%JVM_CONFIG_MAVEN_PROPS%
-
-:endReadAdditionalConfig
-
-SET MAVEN_JAVA_EXE="%JAVA_HOME%\bin\java.exe"
-set WRAPPER_JAR="%MAVEN_PROJECTBASEDIR%\.mvn\wrapper\maven-wrapper.jar"
-set WRAPPER_LAUNCHER=org.apache.maven.wrapper.MavenWrapperMain
-
-set WRAPPER_URL="https://repo.maven.apache.org/maven2/org/apache/maven/wrapper/maven-wrapper/3.2.0/maven-wrapper-3.2.0.jar"
-
-FOR /F "usebackq tokens=1,2 delims==" %%A IN ("%MAVEN_PROJECTBASEDIR%\.mvn\wrapper\maven-wrapper.properties") DO (
-    IF "%%A"=="wrapperUrl" SET WRAPPER_URL=%%B
-)
-
-@REM Extension to allow automatically downloading the maven-wrapper.jar from Maven-central
-@REM This allows using the maven wrapper in projects that prohibit checking in binary data.
-if exist %WRAPPER_JAR% (
-    if "%MVNW_VERBOSE%" == "true" (
-        echo Found %WRAPPER_JAR%
-    )
-) else (
-    if not "%MVNW_REPOURL%" == "" (
-        SET WRAPPER_URL="%MVNW_REPOURL%/org/apache/maven/wrapper/maven-wrapper/3.2.0/maven-wrapper-3.2.0.jar"
-    )
-    if "%MVNW_VERBOSE%" == "true" (
-        echo Couldn't find %WRAPPER_JAR%, downloading it ...
-        echo Downloading from: %WRAPPER_URL%
-    )
-
-    powershell -Command "&{"^
-		"$webclient = new-object System.Net.WebClient;"^
-		"if (-not ([string]::IsNullOrEmpty('%MVNW_USERNAME%') -and [string]::IsNullOrEmpty('%MVNW_PASSWORD%'))) {"^
-		"$webclient.Credentials = new-object System.Net.NetworkCredential('%MVNW_USERNAME%', '%MVNW_PASSWORD%');"^
-		"}"^
-		"[Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12; $webclient.DownloadFile('%WRAPPER_URL%', '%WRAPPER_JAR%')"^
-		"}"
-    if "%MVNW_VERBOSE%" == "true" (
-        echo Finished downloading %WRAPPER_JAR%
-    )
-)
-@REM End of extension
-
-@REM If specified, validate the SHA-256 sum of the Maven wrapper jar file
-SET WRAPPER_SHA_256_SUM=""
-FOR /F "usebackq tokens=1,2 delims==" %%A IN ("%MAVEN_PROJECTBASEDIR%\.mvn\wrapper\maven-wrapper.properties") DO (
-    IF "%%A"=="wrapperSha256Sum" SET WRAPPER_SHA_256_SUM=%%B
-)
-IF NOT %WRAPPER_SHA_256_SUM%=="" (
-    powershell -Command "&{"^
-       "$hash = (Get-FileHash \"%WRAPPER_JAR%\" -Algorithm SHA256).Hash.ToLower();"^
-       "If('%WRAPPER_SHA_256_SUM%' -ne $hash){"^
-       "  Write-Output 'Error: Failed to validate Maven wrapper SHA-256, your Maven wrapper might be compromised.';"^
-       "  Write-Output 'Investigate or delete %WRAPPER_JAR% to attempt a clean download.';"^
-       "  Write-Output 'If you updated your Maven version, you need to update the specified wrapperSha256Sum property.';"^
-       "  exit 1;"^
-       "}"^
-       "}"
-    if ERRORLEVEL 1 goto error
-)
-
-@REM Provide a "standardized" way to retrieve the CLI args that will
-@REM work with both Windows and non-Windows executions.
-set MAVEN_CMD_LINE_ARGS=%*
-
-%MAVEN_JAVA_EXE% ^
-  %JVM_CONFIG_MAVEN_PROPS% ^
-  %MAVEN_OPTS% ^
-  %MAVEN_DEBUG_OPTS% ^
-  -classpath %WRAPPER_JAR% ^
-  "-Dmaven.multiModuleProjectDirectory=%MAVEN_PROJECTBASEDIR%" ^
-  %WRAPPER_LAUNCHER% %MAVEN_CONFIG% %*
-if ERRORLEVEL 1 goto error
-goto end
-
-:error
-set ERROR_CODE=1
-
-:end
-@endlocal & set ERROR_CODE=%ERROR_CODE%
-
-if not "%MAVEN_SKIP_RC%"=="" goto skipRcPost
-@REM check for post script, once with legacy .bat ending and once with .cmd ending
-if exist "%USERPROFILE%\mavenrc_post.bat" call "%USERPROFILE%\mavenrc_post.bat"
-if exist "%USERPROFILE%\mavenrc_post.cmd" call "%USERPROFILE%\mavenrc_post.cmd"
-:skipRcPost
-
-@REM pause the script if MAVEN_BATCH_PAUSE is set to 'on'
-if "%MAVEN_BATCH_PAUSE%"=="on" pause
-
-if "%MAVEN_TERMINATE_CMD%"=="on" exit %ERROR_CODE%
-
-cmd /C exit /B %ERROR_CODE%
diff --git a/src/database/pom.xml b/src/database/pom.xml
deleted file mode 100644
index 8621101..0000000
--- a/src/database/pom.xml
+++ /dev/null
@@ -1,82 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-	xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
-	<modelVersion>4.0.0</modelVersion>
-	<parent>
-		<groupId>org.springframework.boot</groupId>
-		<artifactId>spring-boot-starter-parent</artifactId>
-		<version>3.2.5</version>
-		<relativePath/> <!-- lookup parent from repository -->
-	</parent>
-	<groupId>com.l2sm</groupId>
-	<artifactId>database</artifactId>
-	<version>0.0.1-SNAPSHOT</version>
-	<name>database</name>
-	<description>Database manager</description>
-	<properties>
-		<java.version>17</java.version>
-	</properties>
-	<dependencies>
-		<dependency>
-			<groupId>org.springframework.boot</groupId>
-			<artifactId>spring-boot-starter-data-jpa</artifactId>
-		</dependency>
-		<dependency>
-			<groupId>org.springframework.boot</groupId>
-			<artifactId>spring-boot-starter-data-rest</artifactId>
-		</dependency>
-		<dependency>
-			<groupId>org.springframework.boot</groupId>
-			<artifactId>spring-boot-starter-security</artifactId>
-		</dependency>
-		<dependency>
-			<groupId>org.springframework.boot</groupId>
-			<artifactId>spring-boot-starter-validation</artifactId>
-		</dependency>
-		<dependency>
-			<groupId>org.springframework.boot</groupId>
-			<artifactId>spring-boot-starter-web</artifactId>
-		</dependency>
-
-
-		<dependency>
-			<groupId>com.mysql</groupId>
-			<artifactId>mysql-connector-j</artifactId>
-			<scope>runtime</scope>
-		</dependency>
-		<dependency>
-			<groupId>org.springframework.boot</groupId>
-			<artifactId>spring-boot-starter-test</artifactId>
-			<scope>test</scope>
-		</dependency>
-		<dependency>
-			<groupId>org.springframework.security</groupId>
-			<artifactId>spring-security-test</artifactId>
-			<scope>test</scope>
-		</dependency>
-		<!-- Java Persistence API -->
-<dependency>
-    <groupId>javax.persistence</groupId>
-    <artifactId>javax.persistence-api</artifactId>
-    <version>2.2</version>
-</dependency>
-
-<!-- Hibernate Core for JPA implementation -->
-<dependency>
-    <groupId>org.hibernate</groupId>
-    <artifactId>hibernate-core</artifactId>
-    <version>5.6.9.Final</version> <!-- Ensure you use a compatible version -->
-</dependency>
-
-	</dependencies>
-
-	<build>
-		<plugins>
-			<plugin>
-				<groupId>org.springframework.boot</groupId>
-				<artifactId>spring-boot-maven-plugin</artifactId>
-			</plugin>
-		</plugins>
-	</build>
-
-</project>
diff --git a/src/database/src/main/java/com/l2sm/database/DatabaseApplication.java b/src/database/src/main/java/com/l2sm/database/DatabaseApplication.java
deleted file mode 100644
index a085297..0000000
--- a/src/database/src/main/java/com/l2sm/database/DatabaseApplication.java
+++ /dev/null
@@ -1,13 +0,0 @@
-package com.l2sm.database;
-
-import org.springframework.boot.SpringApplication;
-import org.springframework.boot.autoconfigure.SpringBootApplication;
-
-@SpringBootApplication
-public class DatabaseApplication {
-
-	public static void main(String[] args) {
-		SpringApplication.run(DatabaseApplication.class, args);
-	}
-
-}
diff --git a/src/database/src/main/java/com/l2sm/database/entity/Interface.java b/src/database/src/main/java/com/l2sm/database/entity/Interface.java
deleted file mode 100644
index b9a4e94..0000000
--- a/src/database/src/main/java/com/l2sm/database/entity/Interface.java
+++ /dev/null
@@ -1,91 +0,0 @@
-package com.l2sm.database.entity;
-
-import javax.persistence.*;
-
-
-@Entity
-@Table(name = "interfaces")
-public class Interface {
-    @Id
-    @GeneratedValue(strategy = GenerationType.IDENTITY)
-    private Integer id;
-
-    @Column(name = "name", length = 255)
-    private String name;
-
-    @Column(name = "pod", length = 255)
-    private String pod;
-
-    @ManyToOne
-    @JoinColumn(name = "switch_id")
-    private Switch switchEntity;
-
-    @ManyToOne
-    @JoinColumn(name = "ned_id")
-    private Ned ned;
-
-    @ManyToOne
-    @JoinColumn(name = "network_id")
-    private Network network;
-
-    @ManyToOne
-    @JoinColumn(name = "link_id")
-    private Link link;
-
-    public Integer getId() {
-        return id;
-    }
-
-    public void setId(Integer id) {
-        this.id = id;
-    }
-
-    public String getName() {
-        return name;
-    }
-
-    public void setName(String name) {
-        this.name = name;
-    }
-
-    public String getPod() {
-        return pod;
-    }
-
-    public void setPod(String pod) {
-        this.pod = pod;
-    }
-
-    public Switch getSwitchEntity() {
-        return switchEntity;
-    }
-
-    public void setSwitchEntity(Switch switchEntity) {
-        this.switchEntity = switchEntity;
-    }
-
-    public Ned getNed() {
-        return ned;
-    }
-
-    public void setNed(Ned ned) {
-        this.ned = ned;
-    }
-
-    public Network getNetwork() {
-        return network;
-    }
-
-    public void setNetwork(Network network) {
-        this.network = network;
-    }
-
-    public Link getLink() {
-        return link;
-    }
-
-    public void setLink(Link link) {
-        this.link = link;
-    }
-// Getters and setters
-}
diff --git a/src/database/src/main/java/com/l2sm/database/entity/Link.java b/src/database/src/main/java/com/l2sm/database/entity/Link.java
deleted file mode 100644
index 639b613..0000000
--- a/src/database/src/main/java/com/l2sm/database/entity/Link.java
+++ /dev/null
@@ -1,67 +0,0 @@
-package com.l2sm.database.entity;
-
-import javax.persistence.*;
-import java.util.Set;
-
-@Entity
-@Table(name = "link")
-public class Link {
-    @Id
-    @GeneratedValue(strategy = GenerationType.IDENTITY)
-    private Integer id;
-
-    @Column(name = "link_name", nullable = false, length = 255)
-    private String linkName;
-
-    @ManyToOne
-    @JoinColumn(name = "end_A")
-    private Switch endA;
-
-    @ManyToOne
-    @JoinColumn(name = "end_B")
-    private Switch endB;
-
-    @ManyToMany
-    Set<Path> linkedPaths;
-    // Getters and setters
-
-    public Integer getId() {
-        return id;
-    }
-
-    public void setId(Integer id) {
-        this.id = id;
-    }
-
-    public String getLinkName() {
-        return linkName;
-    }
-
-    public void setLinkName(String linkName) {
-        this.linkName = linkName;
-    }
-
-    public Switch getEndA() {
-        return endA;
-    }
-
-    public void setEndA(Switch endA) {
-        this.endA = endA;
-    }
-
-    public Switch getEndB() {
-        return endB;
-    }
-
-    public void setEndB(Switch endB) {
-        this.endB = endB;
-    }
-
-    public Set<Path> getLinkedPaths() {
-        return linkedPaths;
-    }
-
-    public void setLinkedPaths(Set<Path> linkedPaths) {
-        this.linkedPaths = linkedPaths;
-    }
-}
diff --git a/src/database/src/main/java/com/l2sm/database/entity/Ned.java b/src/database/src/main/java/com/l2sm/database/entity/Ned.java
deleted file mode 100644
index e913fa2..0000000
--- a/src/database/src/main/java/com/l2sm/database/entity/Ned.java
+++ /dev/null
@@ -1,65 +0,0 @@
-package com.l2sm.database.entity;
-
-import javax.persistence.*;
-
-@Entity
-@Table(name = "neds")
-public class Ned {
-    @Id
-    @GeneratedValue(strategy = GenerationType.IDENTITY)
-    private Integer id;
-
-    @Column(name = "node_name", nullable = false, length = 255)
-    private String nodeName;
-
-    @Column(name = "provider", nullable = false, length = 255)
-    private String provider;
-
-    @Column(name = "openflowId", columnDefinition = "TEXT")
-    private String openflowId;
-
-    @Column(name = "ip", length = 15)
-    private String ip;
-
-    // Getters and setters
-
-    public Integer getId() {
-        return id;
-    }
-
-    public void setId(Integer id) {
-        this.id = id;
-    }
-
-    public String getNodeName() {
-        return nodeName;
-    }
-
-    public void setNodeName(String nodeName) {
-        this.nodeName = nodeName;
-    }
-
-    public String getProvider() {
-        return provider;
-    }
-
-    public void setProvider(String provider) {
-        this.provider = provider;
-    }
-
-    public String getOpenflowId() {
-        return openflowId;
-    }
-
-    public void setOpenflowId(String openflowId) {
-        this.openflowId = openflowId;
-    }
-
-    public String getIp() {
-        return ip;
-    }
-
-    public void setIp(String ip) {
-        this.ip = ip;
-    }
-}
diff --git a/src/database/src/main/java/com/l2sm/database/entity/Network.java b/src/database/src/main/java/com/l2sm/database/entity/Network.java
deleted file mode 100644
index 5b2f9c0..0000000
--- a/src/database/src/main/java/com/l2sm/database/entity/Network.java
+++ /dev/null
@@ -1,50 +0,0 @@
-package com.l2sm.database.entity;
-
-import javax.persistence.*;
-
-
-
-@Entity
-@Table(name = "networks")
-public class Network {
-
-    public enum NetworkType {
-        VNET, VLINK
-    }
-    
-    @Id
-    @GeneratedValue(strategy = GenerationType.IDENTITY)
-    private Integer id;
-
-    @Column(name = "name", nullable = false, length = 255)
-    private String name;
-
-    @Column(name = "type", nullable = false)
-    @Enumerated(EnumType.STRING)
-    private NetworkType type;
-
-    public Integer getId() {
-        return id;
-    }
-
-    public void setId(Integer id) {
-        this.id = id;
-    }
-
-    public String getName() {
-        return name;
-    }
-
-    public void setName(String name) {
-        this.name = name;
-    }
-
-    public NetworkType getType() {
-        return type;
-    }
-
-    public void setType(NetworkType type) {
-        this.type = type;
-    }
-// Getters and setters
-}
diff --git a/src/database/src/main/java/com/l2sm/database/entity/Path.java b/src/database/src/main/java/com/l2sm/database/entity/Path.java
deleted file mode 100644
index ed4687d..0000000
--- a/src/database/src/main/java/com/l2sm/database/entity/Path.java
+++ /dev/null
@@ -1,46 +0,0 @@
-package com.l2sm.database.entity;
-
-import javax.persistence.*;
-import java.util.Set;
-
-@Entity
-@Table(name = "path")
-public class Path {
-    @Id
-    @GeneratedValue(strategy = GenerationType.IDENTITY)
-    private Integer id;
-
-    @Column(name = "name", length = 255)
-    private String name;
-
-    @ManyToMany
-    Set<Link> linkedLinks;
-
-
-
-    // Getters and setters
-
-    public Integer getId() {
-        return id;
-    }
-
-    public void setId(Integer id) {
-        this.id = id;
-    }
-
-    public String getName() {
-        return name;
-    }
-
-    public void setName(String name) {
-        this.name = name;
-    }
-
-    public Set<Link> getLinkedLinks() {
-        return linkedLinks;
-    }
-
-    public void setLinkedLinks(Set<Link> linkedLinks) {
-        this.linkedLinks = linkedLinks;
-    }
-}
diff --git a/src/database/src/main/java/com/l2sm/database/entity/Switch.java b/src/database/src/main/java/com/l2sm/database/entity/Switch.java
deleted file mode 100644
index 421398a..0000000
--- a/src/database/src/main/java/com/l2sm/database/entity/Switch.java
+++ /dev/null
@@ -1,22 +0,0 @@
-package com.l2sm.database.entity;
-
-import javax.persistence.*;
-
-@Entity
-@Table(name = "switches")
-public class Switch {
-    @Id
-    @GeneratedValue(strategy = GenerationType.IDENTITY)
-    private Integer id;
-
-    @Column(name = "node_name", nullable = false, length = 255)
-    private String nodeName;
-
-    @Column(name = "openflowId", columnDefinition = "TEXT")
-    private String openflowId;
-
-    @Column(name = "ip", length = 15)
-    private String ip;
-
-    // Getters and setters
-}
diff --git a/src/database/src/main/resources/application.properties b/src/database/src/main/resources/application.properties
deleted file mode 100644
index 04dec8b..0000000
--- a/src/database/src/main/resources/application.properties
+++ /dev/null
@@ -1,9 +0,0 @@
-spring.application.name=database
-spring.datasource.url=jdbc:mysql://10.152.183.132:3306/l2sm?useSSL=false&serverTimezone=UTC
-spring.datasource.username=l2sm
-spring.datasource.password=l2sm
-
-# JPA / Hibernate properties
-spring.jpa.hibernate.ddl-auto=create
-spring.jpa.show-sql=true
-spring.jpa.properties.hibernate.dialect=org.hibernate.dialect.MySQL5Dialect
\ No newline at end of file
diff --git a/src/database/src/test/java/com/l2sm/database/DatabaseApplicationTests.java b/src/database/src/test/java/com/l2sm/database/DatabaseApplicationTests.java
deleted file mode 100644
index bc1b857..0000000
--- a/src/database/src/test/java/com/l2sm/database/DatabaseApplicationTests.java
+++ /dev/null
@@ -1,13 +0,0 @@
-package com.l2sm.database;
-
-import org.junit.jupiter.api.Test;
-import org.springframework.boot.test.context.SpringBootTest;
-
-@SpringBootTest
-class DatabaseApplicationTests {
-
-	@Test
-	void contextLoads() {
-	}
-
-}
diff --git a/src/operator/__pycache__/l2sm-operator.cpython-310.pyc b/src/operator/__pycache__/l2sm-operator.cpython-310.pyc
deleted file mode 100644
index 425353d977bdddd56ae32e227334418d45b11174..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 14541
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
W_IA75Hu|#YvoEFgJOpdjw*LW){oBj{

diff --git a/src/operator/__pycache__/l2sm-operator.cpython-38.pyc b/src/operator/__pycache__/l2sm-operator.cpython-38.pyc
deleted file mode 100644
index c0ada9265a3f6bf8bbabba5f8522ad5407b5d496..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 13869
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

diff --git a/src/operator/l2sm-operator.py b/src/operator/l2sm-operator.py
deleted file mode 100644
index 49308a9..0000000
--- a/src/operator/l2sm-operator.py
+++ /dev/null
@@ -1,496 +0,0 @@
-import kopf
-import os
-import sys
-import json
-import subprocess
-import secrets
-import kubernetes
-from subprocess import CalledProcessError
-from random import randrange
-from kubernetes import client, config
-from kubernetes.client import CustomObjectsApi
-import pymysql
-import random
-import time
-import requests
-import re
-import sys
-from requests.auth import HTTPBasicAuth
-
-database_ip = os.environ['DATABASE_IP']
-database_username = os.environ['MYSQL_USER']
-database_password = os.environ['MYSQL_PASSWORD']
-database_name = os.environ['MYSQL_DATABASE']
-
-base_controller_url = 'http://' + os.environ['CONTROLLER_IP'] + ':8181' + '/onos'
-
-print(base_controller_url)
-print(database_ip)
-
-def begin_session_controller(base_controller_url,username,password):
-
-  # Create a session with basic authentication
-  auth = HTTPBasicAuth(username, password)
-
-  session = requests.Session()
-  session.auth = auth
-
-  #Check if connection is possible
-  response = session.get(base_controller_url + '/vnets/api/status')
-  if response.status_code == 200:
-    # Successful request
-    print("Initialized session between operator and controller.")
-    return session
-  else:
-    print("Could not initialize session with l2sm-controller")
-    sys.exit()
-  
-
-  
-session = begin_session_controller(base_controller_url,"karaf","karaf")
-
-def get_openflow_id(node_name):
-    connection = pymysql.connect(host=database_ip,
-                                user=database_username,
-                                password=database_password,
-                                database=database_name,
-                                cursorclass=pymysql.cursors.DictCursor)
-    try: 
-        with connection.cursor() as cursor:
-            switch_query = "SELECT id, openflowId, ip FROM switches WHERE node_name = %s"
-            cursor.execute(switch_query, (node_name,))
-            switch_record = cursor.fetchone()
-
-            print(switch_record)
-            if switch_record is not None:
-                switchId = switch_record['openflowId']
-
-                if switchId is not None:
-                    return switchId  # If openflowId is already set, return it
-
-            # If openflowId is not set, make a request to get the information from the API
-            response = session.get(base_controller_url + '/v1/devices')
-            devices = response.json().get('devices', [])
-
-            for device in devices:
-                if 'id' in device and 'annotations' in device and 'managementAddress' in device['annotations']:
-                    if device['annotations']['managementAddress'] == switch_record['ip']:
-                        openflowId = device['id']
-                        switchId = openflowId
-
-                        # Save the openflowId in the database
-                        updateQuery = "UPDATE switches SET openflowId = %s WHERE id = %s"
-                        cursor.execute(updateQuery, (openflowId, switch_record['id']))
-                        connection.commit()
-
-                        return switchId  # Return the openflowId
-            connection.commit()
-    finally:
-        connection.close()
-                    
-    return None  # Return None if no matching device is found
-  
-#POPULATE DATABASE ENTRIES WHEN A NEW L2SM SWITCH IS CREATED (A NEW NODE APPEARS)
-@kopf.on.create('pods.v1', labels={'l2sm-component': 'l2sm-switch'})
-def build_db(body, logger, annotations, **kwargs):
-    connection = pymysql.connect(host=database_ip,
-                             user=database_username,
-                             password=database_password,
-                             database=database_name,
-                             cursorclass=pymysql.cursors.DictCursor)
-    if 'spec' in body and 'nodeName' in body['spec']:
-      try:
-        with connection.cursor() as cursor:
-          # Step 1: Check if the switch already exists
-          select_switch_sql = "SELECT id FROM switches WHERE node_name = %s;"
-          cursor.execute(select_switch_sql, body['spec']['nodeName'])
-          result = cursor.fetchone()
-          
-          if result:
-              # Switch exists, so update it (if needed)
-              switch_id = result['id']
-              # Example update (modify as needed)
-              # update_switch_sql = "UPDATE switches SET openflowId = %s, IP = %s WHERE id = %s;"
-              # cursor.execute(update_switch_sql, (newOpenflowId, newIP, switch_id))
-          else:
-              # Step 2: Insert a switch since it doesn't exist
-              insert_switch_sql = "INSERT INTO switches (node_name, openflowId, IP) VALUES (%s, NULL, NULL);"
-              cursor.execute(insert_switch_sql, body['spec']['nodeName'])
-              switch_id = cursor.lastrowid
-              # Step 3: Insert interfaces
-              for i in range(1, 11):
-                  interface_name = f"veth{i}"
-                  # Consider adding a check here to see if the interface already exists for the switch
-                  insert_interface_sql = "INSERT INTO interfaces (name, switch_id) VALUES (%s, %s);"
-                  cursor.execute(insert_interface_sql, (interface_name, switch_id))
-              
-          # Commit the changes
-          connection.commit()
-      finally:
-        connection.close()
-      logger.info(f"Node {body['spec']['nodeName']} has been registered in the operator")
-    else:
-        raise kopf.TemporaryError("The Pod is not yet ready", delay=5)
-
-@kopf.on.field('pods.v1', labels={'l2sm-component': 'l2sm-switch'}, field='status.podIP')
-def update_db(body, logger, annotations, **kwargs):
-    if 'status' in body and 'podIP' in body['status']:
-      connection = pymysql.connect(host=database_ip,
-                             user=database_username,
-                             password=database_password,
-                             database=database_name,
-                             cursorclass=pymysql.cursors.DictCursor)
-      try:
-        with connection.cursor() as cursor:
-          updateQuery = "UPDATE switches SET ip = '%s', OpenFlowId = NULL WHERE node_name = '%s'" % (body['status']['podIP'], body['spec']['nodeName'])
-          cursor.execute(updateQuery)
-          connection.commit()
-      finally:
-        connection.close()
-      logger.info(f"Updated switch ip")
-
-
-#UPDATE DATABASE WHEN NETWORK IS CREATED, I.E: IS A MULTUS CRD WITH OUR L2SM INTERFACE PRESENT IN ITS CONFIG
-#@kopf.on.create('NetworkAttachmentDefinition', field="spec.config['device']", value='l2sm-vNet')
-@kopf.on.create('l2sm.l2sm.k8s.local', 'v1', 'l2networks')
-def create_vn(spec, name, namespace, logger, **kwargs):
-    
-    # Database connection setup
-    connection = pymysql.connect(host=database_ip,
-                                 user=database_username,
-                                 password=database_password,
-                                 database=database_name,
-                                 cursorclass=pymysql.cursors.DictCursor)
-    try:
-        # Start database transaction
-        with connection.cursor() as cursor:
-            sql = "INSERT INTO networks (name, type) VALUES (%s, %s) ON DUPLICATE KEY UPDATE name = VALUES(name), type = VALUES(type)"
-            cursor.execute(sql, (name.strip(), spec['type']))
-            connection.commit()
-                 
-    except Exception as e:
-        # Roll back the database transaction in case of any error
-        connection.rollback()
-        logger.error(f"An error occurred: {e}. Rolled back the database transaction.")
-    finally:
-        # Ensure the database connection is closed
-        connection.close()
-
-
-
-@kopf.on.create('pods.v1', annotations={'l2sm/networks': kopf.PRESENT})
-def pod_vn(body, name, namespace, logger, annotations, **kwargs):
-    """Assign Pod to a network if a specific annotation is present."""
-
-    #time.sleep(random.uniform(0,0.8)) # Avoid database overlap by introducing a random sleep time
-
-    l2networks = extract_l2networks(annotations)
-    
-
-    if not l2networks:
-        logger.info("No Multus networks specified. Exiting.")
-        return
-
-    existing_networks = get_existing_networks(namespace)
-    # Need to extract just the names from l2networks for comparison
-    target_networks_info = filter_target_networks([net['name'] for net in l2networks], existing_networks)
-    if not target_networks_info:
-        logger.info("No target networks found. Letting Multus handle the network assignment.")
-        return
-    
-    # Update `target_networks` to include IP information if available
-    target_networks = [net for net in l2networks if net['name'] in target_networks_info]
-
-
-    api = CustomObjectsApi()
-    # Assign pods to each of the target networks, this part remains unchanged
-    for network in target_networks:
-        update_network(network['name'], name, namespace, api)
-    
-    if 'spec' in body and 'nodeName' in body['spec']:
-        node_name = body['spec']['nodeName']
-        # free_interfaces = get_free_interfaces(node_name)
-        v1 = client.CoreV1Api()
-        
-        pod = v1.read_namespaced_pod(name, namespace)
-        multus_annotations = pod.metadata.annotations if pod.metadata.annotations else {}
-        free_interfaces = extract_multus_networks(multus_annotations)
-        if len(free_interfaces) != len(target_networks):
-            raise kopf.PermanentError(f"Node {node_name} has no free interfaces left")
-        
-        openflow_id = get_openflow_id(node_name)
-        # Now pass the full network info including IPs if present
-        update_network_assignments(name, namespace, node_name, free_interfaces, target_networks, logger, openflow_id)
-    else:
-        raise kopf.TemporaryError("The Pod is not yet ready", delay=1)
-    
-def update_network(l2sm_network_name,pod_name,namespace,api):
-    l2sm_network = api.get_namespaced_custom_object(
-        group="l2sm.l2sm.k8s.local",
-        version="v1",
-        namespace=namespace,
-        plural="l2networks",
-        name=l2sm_network_name,
-    )
-    connected_pods = l2sm_network.get('status', {}).get('connectedPods', [])
-    if pod_name not in connected_pods:
-        connected_pods.append(pod_name)
-        patch = {'status': {'connectedPods': connected_pods}}
-        # Apply the patch to the L2SMNetwork
-        
-        api.patch_namespaced_custom_object(
-            group="l2sm.l2sm.k8s.local",
-            version="v1",
-            namespace=namespace,
-            plural="l2networks",
-            name=l2sm_network_name,
-            body=patch
-        )
-        print(f"Updated L2SMNetwork {l2sm_network_name} with connected Pod {pod_name}")
-
-def remove_from_network(l2sm_network_name,pod_name,namespace,api):
-    l2sm_network = api.get_namespaced_custom_object(
-        group="l2sm.l2sm.k8s.local",
-        version="v1",
-        namespace=namespace,
-        plural="l2networks",
-        name=l2sm_network_name,
-    )
-    connected_pods = l2sm_network.get('status', {}).get('connectedPods', [])
-    if pod_name in connected_pods:
-        connected_pods.remove(pod_name)
-        patch = {'status': {'connectedPods': connected_pods}}
-        # Apply the patch to the L2SMNetwork
-        
-        api.patch_namespaced_custom_object(
-            group="l2sm.l2sm.k8s.local",
-            version="v1",
-            namespace=namespace,
-            plural="l2networks",
-            name=l2sm_network_name,
-            body=patch
-        )
-        print(f"Updated L2SMNetwork {l2sm_network_name} with disconnected Pod {pod_name}")
-        
-
-
-
-def extract_l2networks(annotations):
-    """Extract and return l2sm networks from annotations."""
-    annotation = annotations.get('l2sm/networks')
-    if annotation.startswith('['):  # New JSON format
-        try:
-            networks = json.loads(annotation)
-            return [{ 'name': net['name'], 'ips': net.get('ips', []) } for net in networks]
-        except json.JSONDecodeError:
-            raise ValueError("Failed to decode JSON from annotations")
-    else:  # Original string format
-        return [{'name': network.strip(), 'ips': []} for network in annotation.split(",")]
-
-def extract_multus_networks(annotations):
-    """Extract and return Multus networks from annotations."""
-    annotation = annotations.get('k8s.v1.cni.cncf.io/networks')
-    if annotation.startswith('['):  # New JSON format
-        try:
-            networks = json.loads(annotation)
-            return [{ 'name': net['name'], 'ips': net.get('ips', []) } for net in networks]
-        except json.JSONDecodeError:
-            raise ValueError("Failed to decode JSON from annotations")
-    else:  # Original string format
-        return [{'name': network.strip(), 'ips': []} for network in annotation.split(",")]
-
-
-def get_existing_networks(namespace):
-    """Return existing networks in the namespace."""
-    api = client.CustomObjectsApi()
-    networks = api.list_namespaced_custom_object('l2sm.l2sm.k8s.local', 'v1', namespace, 'l2networks').get('items')
-    return [network['metadata']['name'] for network in networks if "vnet" in network['spec']['type']]
-
-def filter_target_networks(l2networks, existing_networks):
-    """Filter and return networks that are both requested and exist."""
-    return [network for network in l2networks if network in existing_networks]
-
-def get_free_interfaces(node_name):
-    """Query the database for free interfaces on a node."""
-    connection = pymysql.connect(host=database_ip,
-                                user=database_username,
-                                password=database_password,
-                                database=database_name,
-                                cursorclass=pymysql.cursors.DictCursor)
-    try:
-        with connection.cursor() as cursor:
-            sql = """
-                    SELECT i.id, i.name
-                    FROM interfaces i
-                    JOIN switches s ON i.switch_id = s.id
-                    WHERE i.network_id IS NULL AND s.node_name = %s;
-                    """            
-            cursor.execute(sql, (node_name.strip(),))
-            free_interfaces = cursor.fetchall()
-            print(free_interfaces)
-    finally:
-        connection.close()
-    return free_interfaces
-
-def update_pod_annotation(pod_name, namespace, networks_info):
-    """Update the Pod's annotation with assigned networks and optional IPs."""
-    v1 = client.CoreV1Api()
-    pod = v1.read_namespaced_pod(pod_name, namespace)
-    pod_annotations = pod.metadata.annotations or {}
-    # Format the annotations based on whether IPs are provided
-    formatted_networks = []
-    for network_info in networks_info:
-        if not network_info.get('ips'):  
-            network_info['ips'] = [generate_random_ipv6_fe80()]  # Ensure this is a list
-        formatted_networks.append(json.dumps(network_info))  # Convert dict to a JSON string
-
-    pod_annotations['k8s.v1.cni.cncf.io/networks'] = '[' + ', '.join(formatted_networks) + ']'
-    print(pod_annotations)
-    v1.patch_namespaced_pod(pod_name, namespace, {'metadata': {'annotations': pod_annotations}})
-    v1.delete_namespaced_pod(pod_name, namespace)
-
-
-
-def update_network_assignments(pod_name, namespace, node_name, free_interfaces, target_networks, logger, openflow_id):
-    """Update the network assignments in the database and controller."""
-    connection = pymysql.connect(host=database_ip,
-                                user=database_username,
-                                password=database_password,
-                                database=database_name,
-                                cursorclass=pymysql.cursors.DictCursor)
-    try:
-        assigned_interfaces = []
-        with connection.cursor() as cursor:
-            for i, interface in enumerate(free_interfaces[:len(target_networks)]):
-                if openflow_id:
-                    port_number = extract_port_number(interface['name'])
-
-                    post_network_assignment(openflow_id, port_number, target_networks[i]['name'])
-        connection.commit()
-    finally:
-        connection.close()
-    logger.info(f"Pod {pod_name} attached to networks {', '.join(network['name'] for network in target_networks)}")
-
-# Assuming these functions are implemented as per original logic
-def update_interface_assignment(cursor, interface_id, network_name, pod_name, node_name):
-    """Update a single interface's network assignment in the database."""
-    # First, find the network_id from the network name
-    cursor.execute("SELECT id FROM networks WHERE name = %s", (network_name,))
-    network = cursor.fetchone()
-    if network is None:
-        raise ValueError(f"Network {network_name} does not exist")
-    network_id = network['id']
-
-    # Update the interface with the network_id and pod name
-    sql = """
-    UPDATE interfaces
-    SET pod = %s, network_id = %s
-    WHERE id = %s;
-    """
-    cursor.execute(sql, (pod_name, network_id, interface_id))
-
-def extract_port_number(interface_name):
-    """Extract and return the port number from an interface name."""
-    return int(re.search(r'\d+$', interface_name).group())
-
-def post_network_assignment(openflow_id, port_number, network_name):
-    """Post network assignment to the controller."""
-    payload = {
-        "networkId": network_name,
-        "networkEndpoints": [f"{openflow_id}/{port_number}"]
-    }
-    response = session.post(f"{base_controller_url}/vnets/api/port", json=payload)
-    if response.status_code != 204:
-        raise Exception(f"Network assignment failed with status code: {response.status_code}")
-     
-
-
-#UPDATE DATABASE WHEN POD IS DELETED
-@kopf.on.delete('pods.v1', annotations={'l2sm/networks': kopf.PRESENT})
-def dpod_vn(body, name, namespace, logger, annotations, **kwargs):
-    connection = pymysql.connect(host=database_ip,
-                                user=database_username,
-                                password=database_password,
-                                database=database_name,
-                                cursorclass=pymysql.cursors.DictCursor)
-    try:
-        with connection.cursor() as cursor:
-            sql = "UPDATE interfaces SET network_id = NULL, pod = NULL WHERE pod = '%s'" % (name)
-            cursor.execute(sql)
-            
-            connection.commit()
-            l2networks = extract_l2networks(annotations)
-            if not l2networks:
-                logger.info("No Multus networks specified. Exiting.")
-                return
-
-            existing_networks = get_existing_networks(namespace)
-            # Need to extract just the names from l2networks for comparison
-            target_networks_info = filter_target_networks([net['name'] for net in l2networks], existing_networks)
-            if not target_networks_info:
-                logger.info("No target networks found. Letting Multus handle the network assignment.")
-                return
-            
-            # Update `target_networks` to include IP information if available
-            target_networks = [net for net in l2networks if net['name'] in target_networks_info]
-
-            api = CustomObjectsApi()
-            # Assign pods to each of the target networks
-            for network in target_networks:
-                update_network(network['name'], name, namespace, api)
-    finally:
-        connection.close()
-        logger.info(f"Pod {name} removed")
-
-#UPDATE DATABASE WHEN NETWORK IS DELETED
-@kopf.on.delete('l2sm.l2sm.k8s.local', 'v1', 'l2networks')
-def delete_vn(spec, name, logger, **kwargs):
-    connection = pymysql.connect(host=database_ip,
-                                user=database_username,
-                                password=database_password,
-                                database=database_name,
-                                cursorclass=pymysql.cursors.DictCursor)
-    try:
-        with connection.cursor() as cursor:
-             # First, set network_id to NULL in interfaces for the network being deleted
-            update_interfaces_sql = """
-            UPDATE interfaces
-            SET network_id = NULL
-            WHERE network_id = (SELECT id FROM networks WHERE name = %s AND type = %s);
-            """
-            cursor.execute(update_interfaces_sql, (name,spec['type']))
-
-            # Then, delete the network from networks table
-            delete_network_sql = "DELETE FROM networks WHERE name = %s AND type = %s;"
-            cursor.execute(delete_network_sql, (name,spec['type']))
-            
-            
-    
-          
-            connection.commit()
-    finally:
-        connection.close()
-        logger.info(f"Network {name} removed")
-
-#DELETE DATABASE ENTRIES WHEN A NEW L2SM SWITCH IS DELETED (A NEW NODE GETS OUT OF THE CLUSTER)
-@kopf.on.delete('pods.v1', labels={'l2sm-component': 'l2sm-switch'})
-def remove_node(body, logger, annotations, **kwargs):
-    connection = pymysql.connect(host=database_ip,
-                                user=database_username,
-                                password=database_password,
-                                database=database_name,
-                                cursorclass=pymysql.cursors.DictCursor)
-    try:
-        with connection.cursor() as cursor:
-            sql = """
-            DELETE FROM interfaces
-            WHERE switch_id = (SELECT id FROM switches WHERE node_name = %s);
-            """
-            switchSql = "DELETE FROM switches WHERE node_name = %s;"
-            cursor.execute(sql,body['spec']['nodeName'])
-            cursor.execute(switchSql,body['spec']['nodeName'])
-            connection.commit()
-    finally:
-        connection.close()
-    logger.info(f"Node {body['spec']['nodeName']} has been deleted from the cluster")
-
diff --git a/src/operator/requirements.txt b/src/operator/requirements.txt
deleted file mode 100644
index 5749c3b..0000000
--- a/src/operator/requirements.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-kopf==1.37.0
-kubernetes==28.1.0
-PyMySQL==1.1.0
-requests==2.25.1
-- 
GitLab