diff --git a/deployments/custom-installation/deployOperator.yaml b/deployments/custom-installation/deployOperator.yaml index 3c1d99f4aadf955697697e53b5ca9b3ad91f6c60..2e7aba8fcbf5b018dce8bf16129d9a95cab5d620 100644 --- a/deployments/custom-installation/deployOperator.yaml +++ b/deployments/custom-installation/deployOperator.yaml @@ -28,33 +28,35 @@ spec: done; sleep 5; containers: - - image: alexdecb/l2sm-operator:2.2 + - image: alexdecb/l2sm-operator:2.3 name: l2sm-opt-pod env: - name: CONTROLLER_IP value: l2sm-controller-service #imagePullPolicy: Always - - image: mysql/mysql-server:5.7 - name: mysql - env: - - name: MYSQL_ROOT_PASSWORD - value: password - - name: MYSQL_DATABASE - value: L2SM - - name: MYSQL_USER - value: l2sm - - name: MYSQL_PASSWORD - value: l2sm; + - name: mysql + image: mysql:5.7 + envFrom: + - secretRef: + name: mysql-secret ports: - containerPort: 3306 name: mysql volumeMounts: - name: mysql-persistent-storage mountPath: /var/lib/mysql + - name: initdb-volume + mountPath: /docker-entrypoint-initdb.d volumes: - name: mysql-persistent-storage persistentVolumeClaim: claimName: mysql-pv-claim + - name: initdb-volume + configMap: + name: mysql-schema + items: + - key: init.sql + path: init.sql nodeSelector: dedicated: master tolerations: @@ -75,5 +77,68 @@ spec: targetPort: 8080 selector: l2sm-component: l2sm-opt +--- +apiVersion: v1 +kind: ConfigMap +metadata: + name: mysql-schema +data: + init.sql: | + + CREATE DATABASE IF NOT EXISTS l2sm; + USE l2sm; + + CREATE TABLE networks ( + id INT PRIMARY KEY AUTO_INCREMENT, + name VARCHAR(255) NOT NULL, + type ENUM('vlink', 'vnet', 'ext-vnet') NOT NULL, + UNIQUE KEY unique_network_name (name, type) + ); + + CREATE TABLE switches ( + id INT PRIMARY KEY AUTO_INCREMENT, + node_name VARCHAR(255) NOT NULL, + openflowId TEXT, + ip VARCHAR(15) + ); + + CREATE TABLE neds ( + id INT PRIMARY KEY AUTO_INCREMENT, + node_name VARCHAR(255) NOT NULL, + provider VARCHAR(255) NOT NULL, + openflowId TEXT, + ip VARCHAR(15) + ); + + CREATE TABLE interfaces ( + id INT PRIMARY KEY AUTO_INCREMENT, + name VARCHAR(255), + pod VARCHAR(255), + switch_id INT, + ned_id INT, + network_id INT, + FOREIGN KEY (switch_id) REFERENCES switches(id), + FOREIGN KEY (ned_id) REFERENCES neds(id), + FOREIGN KEY (network_id) REFERENCES networks(id) + ); + + -- Define the one-to-many relationship between switches and interfaces + ALTER TABLE interfaces + ADD CONSTRAINT fk_switch_interface + FOREIGN KEY (switch_id) + REFERENCES switches(id); + + -- Define the one-to-many relationship between neds and interfaces + ALTER TABLE interfaces + ADD CONSTRAINT fk_ned_interface + FOREIGN KEY (ned_id) + REFERENCES neds(id); + + -- Define the many-to-one relationship between networks and interfaces + ALTER TABLE interfaces + ADD CONSTRAINT fk_network_interface + FOREIGN KEY (network_id) + REFERENCES networks(id); + diff --git a/deployments/l2sm-deployment.yaml b/deployments/l2sm-deployment.yaml index 4955681aa488cee0a929cc24731dbad221c8a2f4..8511d72427bb7e8b30b127d590aaccbea85bd76c 100644 --- a/deployments/l2sm-deployment.yaml +++ b/deployments/l2sm-deployment.yaml @@ -250,33 +250,35 @@ spec: done; sleep 5; containers: - - image: alexdecb/l2sm-operator:2.2 + - image: alexdecb/l2sm-operator:2.3 name: l2sm-opt-pod env: - name: CONTROLLER_IP value: l2sm-controller-service #imagePullPolicy: Always - - image: mysql/mysql-server:5.7 - name: mysql - env: - - name: MYSQL_ROOT_PASSWORD - value: password - - name: MYSQL_DATABASE - value: L2SM - - name: MYSQL_USER - value: l2sm - - name: MYSQL_PASSWORD - value: l2sm; + - name: mysql + image: mysql:5.7 + envFrom: + - secretRef: + name: mysql-secret ports: - containerPort: 3306 name: mysql volumeMounts: - name: mysql-persistent-storage mountPath: /var/lib/mysql + - name: initdb-volume + mountPath: /docker-entrypoint-initdb.d volumes: - name: mysql-persistent-storage persistentVolumeClaim: claimName: mysql-pv-claim + - name: initdb-volume + configMap: + name: mysql-schema + items: + - key: init.sql + path: init.sql nodeSelector: dedicated: master tolerations: @@ -284,6 +286,7 @@ spec: operator: Equal value: master effect: NoSchedule + --- apiVersion: v1 kind: Service @@ -297,6 +300,68 @@ spec: selector: l2sm-component: l2sm-opt --- +apiVersion: v1 +kind: ConfigMap +metadata: + name: mysql-schema +data: + init.sql: | + + CREATE DATABASE IF NOT EXISTS l2sm; + USE l2sm; + + CREATE TABLE networks ( + id INT PRIMARY KEY AUTO_INCREMENT, + name VARCHAR(255) NOT NULL, + type ENUM('vlink', 'vnet', 'ext-vnet') NOT NULL, + UNIQUE KEY unique_network_name (name, type) + ); + + CREATE TABLE switches ( + id INT PRIMARY KEY AUTO_INCREMENT, + node_name VARCHAR(255) NOT NULL, + openflowId TEXT, + ip VARCHAR(15) + ); + + CREATE TABLE neds ( + id INT PRIMARY KEY AUTO_INCREMENT, + node_name VARCHAR(255) NOT NULL, + provider VARCHAR(255) NOT NULL, + openflowId TEXT, + ip VARCHAR(15) + ); + + CREATE TABLE interfaces ( + id INT PRIMARY KEY AUTO_INCREMENT, + name VARCHAR(255), + pod VARCHAR(255), + switch_id INT, + ned_id INT, + network_id INT, + FOREIGN KEY (switch_id) REFERENCES switches(id), + FOREIGN KEY (ned_id) REFERENCES neds(id), + FOREIGN KEY (network_id) REFERENCES networks(id) + ); + + -- Define the one-to-many relationship between switches and interfaces + ALTER TABLE interfaces + ADD CONSTRAINT fk_switch_interface + FOREIGN KEY (switch_id) + REFERENCES switches(id); + + -- Define the one-to-many relationship between neds and interfaces + ALTER TABLE interfaces + ADD CONSTRAINT fk_ned_interface + FOREIGN KEY (ned_id) + REFERENCES neds(id); + + -- Define the many-to-one relationship between networks and interfaces + ALTER TABLE interfaces + ADD CONSTRAINT fk_network_interface + FOREIGN KEY (network_id) + REFERENCES networks(id); +--- apiVersion: apps/v1 kind: DaemonSet metadata: