Skip to content
Snippets Groups Projects
Commit 7c908a97 authored by Lluis Gifre Renom's avatar Lluis Gifre Renom
Browse files

Scenario OFC23 definition

- initial partial definition
parent a6ff6475
No related branches found
No related tags found
2 merge requests!142Release TeraFlowSDN 2.1,!71OFC'23 + IETF L2VPN Device Driver + Device Controllers + Multiple small improvements
Showing
with 1045 additions and 0 deletions
- confirm with Hakim everything is in branch hakim-develop-patch-44885
- merge branch hakim-develop-patch-44885 into feat/device-ietf-l2vpn
- delete branch hakim-develop-patch-44885
- update OFC'23 to deploy 2 instances without blockchain
dom1 => parent
dom2 => child
dom3/4 => remove
replace nfvsdn22 => ofc23
# Add here your files containing confidential testbed details such as IP addresses, ports, usernames, passwords, etc.
descriptors_real.json
# Ref: https://kubernetes.github.io/ingress-nginx/user-guide/multiple-ingress/
# Ref: https://fabianlee.org/2021/07/29/kubernetes-microk8s-with-multiple-metallb-endpoints-and-nginx-ingress-controllers/
# Check node limits
kubectl describe nodes
# Create secondary ingress controllers
kubectl apply -f ofc23/nginx-ingress-controller-parent.yaml
kubectl apply -f ofc23/nginx-ingress-controller-child.yaml
# Delete secondary ingress controllers
kubectl delete -f ofc23/nginx-ingress-controller-parent.yaml
kubectl delete -f ofc23/nginx-ingress-controller-child.yaml
source ofc23/deploy_specs_parent.sh
./deploy/all.sh
source ofc23/deploy_specs_child.sh
./deploy/all.sh
# Manually deploy ingresses for instances
kubectl --namespace tfs-parent apply -f ofc23/tfs-ingress-parent.yaml
kubectl --namespace tfs-child apply -f ofc23/tfs-ingress-child.yaml
# Copyright 2022-2023 ETSI TeraFlowSDN - TFS OSG (https://tfs.etsi.org/)
#
# Licensed 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
#
# http://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.
#!/bin/bash
# Copyright 2022-2023 ETSI TeraFlowSDN - TFS OSG (https://tfs.etsi.org/)
#
# Licensed 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
#
# http://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.
# Delete old namespaces
kubectl delete namespace tfs-dom1 tfs-dom2 tfs-dom3 tfs-dom4 tfs-bchain
# Delete secondary ingress controllers
kubectl delete -f nfvsdn22/nginx-ingress-controller-dom1.yaml
kubectl delete -f nfvsdn22/nginx-ingress-controller-dom2.yaml
kubectl delete -f nfvsdn22/nginx-ingress-controller-dom3.yaml
kubectl delete -f nfvsdn22/nginx-ingress-controller-dom4.yaml
#!/bin/bash
# Copyright 2022-2023 ETSI TeraFlowSDN - TFS OSG (https://tfs.etsi.org/)
#
# Licensed 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
#
# http://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.
# Delete old namespaces
kubectl delete namespace tfs-dom1 tfs-dom2 tfs-dom3 tfs-dom4
# Delete secondary ingress controllers
kubectl delete -f nfvsdn22/nginx-ingress-controller-dom1.yaml
kubectl delete -f nfvsdn22/nginx-ingress-controller-dom2.yaml
kubectl delete -f nfvsdn22/nginx-ingress-controller-dom3.yaml
kubectl delete -f nfvsdn22/nginx-ingress-controller-dom4.yaml
# Delete MockBlockchain
#kubectl delete namespace tfs-bchain
# Create secondary ingress controllers
kubectl apply -f nfvsdn22/nginx-ingress-controller-dom1.yaml
kubectl apply -f nfvsdn22/nginx-ingress-controller-dom2.yaml
kubectl apply -f nfvsdn22/nginx-ingress-controller-dom3.yaml
kubectl apply -f nfvsdn22/nginx-ingress-controller-dom4.yaml
# Create MockBlockchain
#./deploy_mock_blockchain.sh
# Deploy TFS for Domain 1
source nfvsdn22/deploy_specs_dom1.sh
./deploy.sh
mv tfs_runtime_env_vars.sh tfs_runtime_env_vars_dom1.sh
# Deploy TFS for Domain 2
source nfvsdn22/deploy_specs_dom2.sh
./deploy.sh
mv tfs_runtime_env_vars.sh tfs_runtime_env_vars_dom2.sh
# Deploy TFS for Domain 3
source nfvsdn22/deploy_specs_dom3.sh
./deploy.sh
mv tfs_runtime_env_vars.sh tfs_runtime_env_vars_dom3.sh
# Deploy TFS for Domain 4
source nfvsdn22/deploy_specs_dom4.sh
./deploy.sh
mv tfs_runtime_env_vars.sh tfs_runtime_env_vars_dom4.sh
# Copyright 2022-2023 ETSI TeraFlowSDN - TFS OSG (https://tfs.etsi.org/)
#
# Licensed 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
#
# http://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.
# Set the URL of your local Docker registry where the images will be uploaded to.
export TFS_REGISTRY_IMAGE="http://localhost:32000/tfs/"
# Set the list of components, separated by spaces, you want to build images for, and deploy.
export TFS_COMPONENTS="context device pathcomp service slice webui"
# Set the tag you want to use for your images.
export TFS_IMAGE_TAG="dev"
# Set the name of the Kubernetes namespace to deploy to.
export TFS_K8S_NAMESPACE="tfs-child"
# Set additional manifest files to be applied after the deployment
export TFS_EXTRA_MANIFESTS="nfvsdn22/tfs-ingress-child.yaml"
# Set the neew Grafana admin password
export TFS_GRAFANA_PASSWORD="admin123+"
# If not already set, disable skip-build flag.
# If TFS_SKIP_BUILD is "YES", the containers are not rebuilt-retagged-repushed and existing ones are used.
export TFS_SKIP_BUILD="YES"
# Copyright 2022-2023 ETSI TeraFlowSDN - TFS OSG (https://tfs.etsi.org/)
#
# Licensed 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
#
# http://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.
# Set the URL of your local Docker registry where the images will be uploaded to.
export TFS_REGISTRY_IMAGE="http://localhost:32000/tfs/"
# Set the list of components, separated by spaces, you want to build images for, and deploy.
export TFS_COMPONENTS="context device pathcomp service slice webui"
# Set the tag you want to use for your images.
export TFS_IMAGE_TAG="dev"
# Set the name of the Kubernetes namespace to deploy to.
export TFS_K8S_NAMESPACE="tfs-parent"
# Set additional manifest files to be applied after the deployment
export TFS_EXTRA_MANIFESTS="nfvsdn22/tfs-ingress-parent.yaml"
# Set the neew Grafana admin password
export TFS_GRAFANA_PASSWORD="admin123+"
# If not already set, disable skip-build flag.
# If TFS_SKIP_BUILD is "YES", the containers are not rebuilt-retagged-repushed and existing ones are used.
export TFS_SKIP_BUILD="NO"
{
"contexts": [
{
"context_id": {"context_uuid": {"uuid": "admin"}},
"topology_ids": [
{"context_id": {"context_uuid": {"uuid": "admin"}}, "topology_uuid": {"uuid": "D1"}}
], "service_ids": []
}
],
"topologies": [
{
"topology_id": {"context_id": {"context_uuid": {"uuid": "admin"}}, "topology_uuid": {"uuid": "D1"}},
"device_ids": [
{"device_uuid": {"uuid": "DC1"}},
{"device_uuid": {"uuid": "R1@D1"}},
{"device_uuid": {"uuid": "R2@D1"}},
{"device_uuid": {"uuid": "R3@D1"}},
{"device_uuid": {"uuid": "R4@D1"}},
{"device_uuid": {"uuid": "R5@D1"}}
], "link_ids": [
{"link_uuid": {"uuid": "DC1/D1==R1@D1/DC1"}},
{"link_uuid": {"uuid": "R1@D1/2==R2@D1/1"}},
{"link_uuid": {"uuid": "R2@D1/3==R3@D1/2"}},
{"link_uuid": {"uuid": "R2@D1/5==R5@D1/2"}},
{"link_uuid": {"uuid": "R3@D1/4==R4@D1/3"}},
{"link_uuid": {"uuid": "R4@D1/5==R5@D1/4"}},
{"link_uuid": {"uuid": "R5@D1/1==R1@D1/5"}}
]
}
],
"devices": [
{
"device_id": {"device_uuid": {"uuid": "DC1"}}, "device_type": "emu-datacenter", "device_drivers": [0],
"device_endpoints": [], "device_operational_status": 2, "device_config": {"config_rules": [
{"action": 1, "custom": {"resource_key": "_connect/address", "resource_value": "127.0.0.1"}},
{"action": 1, "custom": {"resource_key": "_connect/port", "resource_value": "0"}},
{"action": 1, "custom": {"resource_key": "_connect/settings", "resource_value": {"endpoints": [
{"sample_types": [], "type": "copper/border", "uuid": "D1"},
{"sample_types": [], "type": "copper/internal", "uuid": "int"}
]}}}
]}
},
{
"device_id": {"device_uuid": {"uuid": "R1@D1"}}, "device_type": "emu-packet-router", "device_drivers": [0],
"device_endpoints": [], "device_operational_status": 2, "device_config": {"config_rules": [
{"action": 1, "custom": {"resource_key": "_connect/address", "resource_value": "127.0.0.1"}},
{"action": 1, "custom": {"resource_key": "_connect/port", "resource_value": "0"}},
{"action": 1, "custom": {"resource_key": "_connect/settings", "resource_value": {"endpoints": [
{"sample_types": [], "type": "copper/internal", "uuid": "2"},
{"sample_types": [], "type": "copper/internal", "uuid": "5"},
{"sample_types": [], "type": "copper/border", "uuid": "DC1"}
]}}}
]}
},
{
"device_id": {"device_uuid": {"uuid": "R2@D1"}}, "device_type": "emu-packet-router", "device_drivers": [0],
"device_endpoints": [], "device_operational_status": 2, "device_config": {"config_rules": [
{"action": 1, "custom": {"resource_key": "_connect/address", "resource_value": "127.0.0.1"}},
{"action": 1, "custom": {"resource_key": "_connect/port", "resource_value": "0"}},
{"action": 1, "custom": {"resource_key": "_connect/settings", "resource_value": {"endpoints": [
{"sample_types": [], "type": "copper/internal", "uuid": "1"},
{"sample_types": [], "type": "copper/internal", "uuid": "3"},
{"sample_types": [], "type": "copper/internal", "uuid": "5"}
]}}}
]}
},
{
"device_id": {"device_uuid": {"uuid": "R3@D1"}}, "device_type": "emu-packet-router", "device_drivers": [0],
"device_endpoints": [], "device_operational_status": 2, "device_config": {"config_rules": [
{"action": 1, "custom": {"resource_key": "_connect/address", "resource_value": "127.0.0.1"}},
{"action": 1, "custom": {"resource_key": "_connect/port", "resource_value": "0"}},
{"action": 1, "custom": {"resource_key": "_connect/settings", "resource_value": {"endpoints": [
{"sample_types": [], "type": "copper/internal", "uuid": "2"},
{"sample_types": [], "type": "copper/internal", "uuid": "4"}
]}}}
]}
},
{
"device_id": {"device_uuid": {"uuid": "R4@D1"}}, "device_type": "emu-packet-router", "device_drivers": [0],
"device_endpoints": [], "device_operational_status": 2, "device_config": {"config_rules": [
{"action": 1, "custom": {"resource_key": "_connect/address", "resource_value": "127.0.0.1"}},
{"action": 1, "custom": {"resource_key": "_connect/port", "resource_value": "0"}},
{"action": 1, "custom": {"resource_key": "_connect/settings", "resource_value": {"endpoints": [
{"sample_types": [], "type": "copper/internal", "uuid": "3"},
{"sample_types": [], "type": "copper/internal", "uuid": "5"},
{"sample_types": [], "type": "copper/border", "uuid": "D2"}
]}}}
]}
},
{
"device_id": {"device_uuid": {"uuid": "R5@D1"}}, "device_type": "emu-packet-router", "device_drivers": [0],
"device_endpoints": [], "device_operational_status": 2, "device_config": {"config_rules": [
{"action": 1, "custom": {"resource_key": "_connect/address", "resource_value": "127.0.0.1"}},
{"action": 1, "custom": {"resource_key": "_connect/port", "resource_value": "0"}},
{"action": 1, "custom": {"resource_key": "_connect/settings", "resource_value": {"endpoints": [
{"sample_types": [], "type": "copper/internal", "uuid": "1"},
{"sample_types": [], "type": "copper/internal", "uuid": "2"},
{"sample_types": [], "type": "copper/internal", "uuid": "4"},
{"sample_types": [], "type": "copper/border", "uuid": "D3"}
]}}}
]}
}
],
"links": [
{
"link_id": {"link_uuid": {"uuid": "DC1/D1==R1@D1/DC1"}}, "link_endpoint_ids": [
{"device_id": {"device_uuid": {"uuid": "DC1"}}, "endpoint_uuid": {"uuid": "D1"}},
{"device_id": {"device_uuid": {"uuid": "R1@D1"}}, "endpoint_uuid": {"uuid": "DC1"}}
]
},
{
"link_id": {"link_uuid": {"uuid": "R1@D1/2==R2@D1/1"}}, "link_endpoint_ids": [
{"device_id": {"device_uuid": {"uuid": "R1@D1"}}, "endpoint_uuid": {"uuid": "2"}},
{"device_id": {"device_uuid": {"uuid": "R2@D1"}}, "endpoint_uuid": {"uuid": "1"}}
]
},
{
"link_id": {"link_uuid": {"uuid": "R2@D1/3==R3@D1/2"}}, "link_endpoint_ids": [
{"device_id": {"device_uuid": {"uuid": "R2@D1"}}, "endpoint_uuid": {"uuid": "3"}},
{"device_id": {"device_uuid": {"uuid": "R3@D1"}}, "endpoint_uuid": {"uuid": "2"}}
]
},
{
"link_id": {"link_uuid": {"uuid": "R2@D1/5==R5@D1/2"}}, "link_endpoint_ids": [
{"device_id": {"device_uuid": {"uuid": "R2@D1"}}, "endpoint_uuid": {"uuid": "5"}},
{"device_id": {"device_uuid": {"uuid": "R5@D1"}}, "endpoint_uuid": {"uuid": "2"}}
]
},
{
"link_id": {"link_uuid": {"uuid": "R3@D1/4==R4@D1/3"}}, "link_endpoint_ids": [
{"device_id": {"device_uuid": {"uuid": "R3@D1"}}, "endpoint_uuid": {"uuid": "4"}},
{"device_id": {"device_uuid": {"uuid": "R4@D1"}}, "endpoint_uuid": {"uuid": "3"}}
]
},
{
"link_id": {"link_uuid": {"uuid": "R4@D1/5==R5@D1/4"}}, "link_endpoint_ids": [
{"device_id": {"device_uuid": {"uuid": "R4@D1"}}, "endpoint_uuid": {"uuid": "5"}},
{"device_id": {"device_uuid": {"uuid": "R5@D1"}}, "endpoint_uuid": {"uuid": "4"}}
]
},
{
"link_id": {"link_uuid": {"uuid": "R5@D1/1==R1@D1/5"}}, "link_endpoint_ids": [
{"device_id": {"device_uuid": {"uuid": "R5@D1"}}, "endpoint_uuid": {"uuid": "1"}},
{"device_id": {"device_uuid": {"uuid": "R1@D1"}}, "endpoint_uuid": {"uuid": "5"}}
]
}
]
}
{
"contexts": [
{
"context_id": {"context_uuid": {"uuid": "admin"}},
"topology_ids": [
{"context_id": {"context_uuid": {"uuid": "admin"}}, "topology_uuid": {"uuid": "D2"}}
], "service_ids": []
}
],
"topologies": [
{
"topology_id": {"context_id": {"context_uuid": {"uuid": "admin"}}, "topology_uuid": {"uuid": "D2"}},
"device_ids": [
{"device_uuid": {"uuid": "R1@D2"}},
{"device_uuid": {"uuid": "R2@D2"}},
{"device_uuid": {"uuid": "R3@D2"}},
{"device_uuid": {"uuid": "R4@D2"}},
{"device_uuid": {"uuid": "R5@D2"}},
{"device_uuid": {"uuid": "R6@D2"}}
], "link_ids": [
{"link_uuid": {"uuid": "R1@D2/2==R2@D2/1"}},
{"link_uuid": {"uuid": "R1@D2/6==R6@D2/1"}},
{"link_uuid": {"uuid": "R1@D2/5==R5@D2/1"}},
{"link_uuid": {"uuid": "R2@D2/3==R3@D2/2"}},
{"link_uuid": {"uuid": "R2@D2/4==R4@D2/2"}},
{"link_uuid": {"uuid": "R2@D2/5==R5@D2/2"}},
{"link_uuid": {"uuid": "R2@D2/6==R6@D2/2"}},
{"link_uuid": {"uuid": "R3@D2/6==R6@D2/3"}},
{"link_uuid": {"uuid": "R4@D2/5==R5@D2/4"}}
]
}
],
"devices": [
{
"device_id": {"device_uuid": {"uuid": "R1@D2"}}, "device_type": "emu-packet-router", "device_drivers": [0],
"device_endpoints": [], "device_operational_status": 2, "device_config": {"config_rules": [
{"action": 1, "custom": {"resource_key": "_connect/address", "resource_value": "127.0.0.1"}},
{"action": 1, "custom": {"resource_key": "_connect/port", "resource_value": "0"}},
{"action": 1, "custom": {"resource_key": "_connect/settings", "resource_value": {"endpoints": [
{"sample_types": [], "type": "copper/internal", "uuid": "2"},
{"sample_types": [], "type": "copper/internal", "uuid": "5"},
{"sample_types": [], "type": "copper/internal", "uuid": "6"},
{"sample_types": [], "type": "copper/border", "uuid": "D1"}
]}}}
]}
},
{
"device_id": {"device_uuid": {"uuid": "R2@D2"}}, "device_type": "emu-packet-router", "device_drivers": [0],
"device_endpoints": [], "device_operational_status": 2, "device_config": {"config_rules": [
{"action": 1, "custom": {"resource_key": "_connect/address", "resource_value": "127.0.0.1"}},
{"action": 1, "custom": {"resource_key": "_connect/port", "resource_value": "0"}},
{"action": 1, "custom": {"resource_key": "_connect/settings", "resource_value": {"endpoints": [
{"sample_types": [], "type": "copper/internal", "uuid": "1"},
{"sample_types": [], "type": "copper/internal", "uuid": "3"},
{"sample_types": [], "type": "copper/internal", "uuid": "4"},
{"sample_types": [], "type": "copper/internal", "uuid": "5"},
{"sample_types": [], "type": "copper/internal", "uuid": "6"}
]}}}
]}
},
{
"device_id": {"device_uuid": {"uuid": "R3@D2"}}, "device_type": "emu-packet-router", "device_drivers": [0],
"device_endpoints": [], "device_operational_status": 2, "device_config": {"config_rules": [
{"action": 1, "custom": {"resource_key": "_connect/address", "resource_value": "127.0.0.1"}},
{"action": 1, "custom": {"resource_key": "_connect/port", "resource_value": "0"}},
{"action": 1, "custom": {"resource_key": "_connect/settings", "resource_value": {"endpoints": [
{"sample_types": [], "type": "copper/internal", "uuid": "2"},
{"sample_types": [], "type": "copper/internal", "uuid": "6"}
]}}}
]}
},
{
"device_id": {"device_uuid": {"uuid": "R4@D2"}}, "device_type": "emu-packet-router", "device_drivers": [0],
"device_endpoints": [], "device_operational_status": 2, "device_config": {"config_rules": [
{"action": 1, "custom": {"resource_key": "_connect/address", "resource_value": "127.0.0.1"}},
{"action": 1, "custom": {"resource_key": "_connect/port", "resource_value": "0"}},
{"action": 1, "custom": {"resource_key": "_connect/settings", "resource_value": {"endpoints": [
{"sample_types": [], "type": "copper/internal", "uuid": "2"},
{"sample_types": [], "type": "copper/internal", "uuid": "5"},
{"sample_types": [], "type": "copper/border", "uuid": "D4"}
]}}}
]}
},
{
"device_id": {"device_uuid": {"uuid": "R5@D2"}}, "device_type": "emu-packet-router", "device_drivers": [0],
"device_endpoints": [], "device_operational_status": 2, "device_config": {"config_rules": [
{"action": 1, "custom": {"resource_key": "_connect/address", "resource_value": "127.0.0.1"}},
{"action": 1, "custom": {"resource_key": "_connect/port", "resource_value": "0"}},
{"action": 1, "custom": {"resource_key": "_connect/settings", "resource_value": {"endpoints": [
{"sample_types": [], "type": "copper/internal", "uuid": "1"},
{"sample_types": [], "type": "copper/internal", "uuid": "2"},
{"sample_types": [], "type": "copper/internal", "uuid": "4"},
{"sample_types": [], "type": "copper/border", "uuid": "D3"}
]}}}
]}
},
{
"device_id": {"device_uuid": {"uuid": "R6@D2"}}, "device_type": "emu-packet-router", "device_drivers": [0],
"device_endpoints": [], "device_operational_status": 2, "device_config": {"config_rules": [
{"action": 1, "custom": {"resource_key": "_connect/address", "resource_value": "127.0.0.1"}},
{"action": 1, "custom": {"resource_key": "_connect/port", "resource_value": "0"}},
{"action": 1, "custom": {"resource_key": "_connect/settings", "resource_value": {"endpoints": [
{"sample_types": [], "type": "copper/internal", "uuid": "1"},
{"sample_types": [], "type": "copper/internal", "uuid": "2"},
{"sample_types": [], "type": "copper/internal", "uuid": "3"}
]}}}
]}
}
],
"links": [
{
"link_id": {"link_uuid": {"uuid": "R1@D2/2==R2@D2/1"}}, "link_endpoint_ids": [
{"device_id": {"device_uuid": {"uuid": "R1@D2"}}, "endpoint_uuid": {"uuid": "2"}},
{"device_id": {"device_uuid": {"uuid": "R2@D2"}}, "endpoint_uuid": {"uuid": "1"}}
]
},
{
"link_id": {"link_uuid": {"uuid": "R1@D2/6==R6@D2/1"}}, "link_endpoint_ids": [
{"device_id": {"device_uuid": {"uuid": "R1@D2"}}, "endpoint_uuid": {"uuid": "6"}},
{"device_id": {"device_uuid": {"uuid": "R6@D2"}}, "endpoint_uuid": {"uuid": "1"}}
]
},
{
"link_id": {"link_uuid": {"uuid": "R1@D2/5==R5@D2/1"}}, "link_endpoint_ids": [
{"device_id": {"device_uuid": {"uuid": "R1@D2"}}, "endpoint_uuid": {"uuid": "5"}},
{"device_id": {"device_uuid": {"uuid": "R5@D2"}}, "endpoint_uuid": {"uuid": "1"}}
]
},
{
"link_id": {"link_uuid": {"uuid": "R2@D2/3==R3@D2/2"}}, "link_endpoint_ids": [
{"device_id": {"device_uuid": {"uuid": "R2@D2"}}, "endpoint_uuid": {"uuid": "3"}},
{"device_id": {"device_uuid": {"uuid": "R3@D2"}}, "endpoint_uuid": {"uuid": "2"}}
]
},
{
"link_id": {"link_uuid": {"uuid": "R2@D2/4==R4@D2/2"}}, "link_endpoint_ids": [
{"device_id": {"device_uuid": {"uuid": "R2@D2"}}, "endpoint_uuid": {"uuid": "4"}},
{"device_id": {"device_uuid": {"uuid": "R4@D2"}}, "endpoint_uuid": {"uuid": "2"}}
]
},
{
"link_id": {"link_uuid": {"uuid": "R2@D2/5==R5@D2/2"}}, "link_endpoint_ids": [
{"device_id": {"device_uuid": {"uuid": "R2@D2"}}, "endpoint_uuid": {"uuid": "5"}},
{"device_id": {"device_uuid": {"uuid": "R5@D2"}}, "endpoint_uuid": {"uuid": "2"}}
]
},
{
"link_id": {"link_uuid": {"uuid": "R2@D2/6==R6@D2/2"}}, "link_endpoint_ids": [
{"device_id": {"device_uuid": {"uuid": "R2@D2"}}, "endpoint_uuid": {"uuid": "6"}},
{"device_id": {"device_uuid": {"uuid": "R6@D2"}}, "endpoint_uuid": {"uuid": "2"}}
]
},
{
"link_id": {"link_uuid": {"uuid": "R3@D2/6==R6@D2/3"}}, "link_endpoint_ids": [
{"device_id": {"device_uuid": {"uuid": "R3@D2"}}, "endpoint_uuid": {"uuid": "6"}},
{"device_id": {"device_uuid": {"uuid": "R6@D2"}}, "endpoint_uuid": {"uuid": "3"}}
]
},
{
"link_id": {"link_uuid": {"uuid": "R4@D2/5==R5@D2/4"}}, "link_endpoint_ids": [
{"device_id": {"device_uuid": {"uuid": "R4@D2"}}, "endpoint_uuid": {"uuid": "5"}},
{"device_id": {"device_uuid": {"uuid": "R5@D2"}}, "endpoint_uuid": {"uuid": "4"}}
]
}
]
}
{
"slices":[
{
"slice_id":{"context_id":{"context_uuid":{"uuid":"admin"}},"slice_uuid":{"uuid":"idc-slice"}},
"slice_endpoint_ids":[
{"device_id":{"device_uuid":{"uuid":"DC1"}},"endpoint_uuid":{"uuid":"int"}},
{"device_id":{"device_uuid":{"uuid":"DC2"}},"endpoint_uuid":{"uuid":"int"}}
],
"slice_status":{"slice_status":1},
"slice_service_ids":[],
"slice_subslice_ids":[],
"slice_constraints":[],
"slice_config":{"config_rules":[
{"action":1,"custom":{"resource_key":"/settings","resource_value":"{}"}},
{"action":1,"custom":{"resource_key":"/device[DC1]/endpoint[int]/settings","resource_value":"{}"}},
{"action":1,"custom":{"resource_key":"/device[DC2]/endpoint[int]/settings","resource_value":"{}"}}
]}
}
]
}
#!/bin/bash
# Copyright 2022-2023 ETSI TeraFlowSDN - TFS OSG (https://tfs.etsi.org/)
#
# Licensed 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
#
# http://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.
rm -rf tmp/exec
echo "Collecting logs for Parent..."
mkdir -p tmp/exec/parent
kubectl --namespace tfs-parent logs deployments/contextservice server > tmp/exec/parent/context.log
kubectl --namespace tfs-parent logs deployments/deviceservice server > tmp/exec/parent/device.log
kubectl --namespace tfs-parent logs deployments/serviceservice server > tmp/exec/parent/service.log
kubectl --namespace tfs-parent logs deployments/pathcompservice frontend > tmp/exec/parent/pathcomp-frontend.log
kubectl --namespace tfs-parent logs deployments/pathcompservice backend > tmp/exec/parent/pathcomp-backend.log
kubectl --namespace tfs-parent logs deployments/sliceservice server > tmp/exec/parent/slice.log
printf "\n"
echo "Collecting logs for Child..."
mkdir -p tmp/exec/child
kubectl --namespace tfs-child logs deployments/contextservice server > tmp/exec/child/context.log
kubectl --namespace tfs-child logs deployments/deviceservice server > tmp/exec/child/device.log
kubectl --namespace tfs-child logs deployments/serviceservice server > tmp/exec/child/service.log
kubectl --namespace tfs-child logs deployments/pathcompservice frontend > tmp/exec/child/pathcomp-frontend.log
kubectl --namespace tfs-child logs deployments/pathcompservice backend > tmp/exec/child/pathcomp-backend.log
kubectl --namespace tfs-child logs deployments/sliceservice server > tmp/exec/child/slice.log
kubectl --namespace tfs-child logs deployments/interdomainservice server > tmp/exec/child/interdomain.log
kubectl --namespace tfs-child logs deployments/dltservice connector > tmp/exec/child/dlt-connector.log
kubectl --namespace tfs-child logs deployments/dltservice gateway > tmp/exec/child/dlt-gateway.log
printf "\n"
echo "Done!"
#!/bin/bash
# Copyright 2022-2023 ETSI TeraFlowSDN - TFS OSG (https://tfs.etsi.org/)
#
# Licensed 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
#
# http://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.
kubectl delete namespace tfs-parent tfs-child
echo "Deploying tfs-parent ..."
kubectl delete -f nfvsdn22/nginx-ingress-controller-parent.yaml > ./tmp/logs/deploy-tfs-parent.log
kubectl create namespace tfs-parent > ./tmp/logs/deploy-tfs-parent.log
kubectl apply -f nfvsdn22/nginx-ingress-controller-parent.yaml > ./tmp/logs/deploy-tfs-parent.log
kubectl --namespace tfs-parent apply -f ./tmp/manifests/contextservice.yaml > ./tmp/logs/deploy-tfs-parent.log
kubectl --namespace tfs-parent apply -f ./tmp/manifests/deviceservice.yaml > ./tmp/logs/deploy-tfs-parent.log
kubectl --namespace tfs-parent apply -f ./tmp/manifests/pathcompservice.yaml > ./tmp/logs/deploy-tfs-parent.log
kubectl --namespace tfs-parent apply -f ./tmp/manifests/serviceservice.yaml > ./tmp/logs/deploy-tfs-parent.log
kubectl --namespace tfs-parent apply -f ./tmp/manifests/sliceservice.yaml > ./tmp/logs/deploy-tfs-parent.log
kubectl --namespace tfs-parent apply -f ./tmp/manifests/webuiservice.yaml > ./tmp/logs/deploy-tfs-parent.log
kubectl --namespace tfs-parent apply -f nfvsdn22/tfs-ingress-parent.yaml > ./tmp/logs/deploy-tfs-parent.log
printf "\n"
echo "Deploying tfs-child ..."
kubectl delete -f nfvsdn22/nginx-ingress-controller-child.yaml > ./tmp/logs/deploy-tfs-child.log
kubectl create namespace tfs-child > ./tmp/logs/deploy-tfs-child.log
kubectl apply -f nfvsdn22/nginx-ingress-controller-child.yaml > ./tmp/logs/deploy-tfs-child.log
kubectl --namespace tfs-child apply -f ./tmp/manifests/contextservice.yaml > ./tmp/logs/deploy-tfs-child.log
kubectl --namespace tfs-child apply -f ./tmp/manifests/deviceservice.yaml > ./tmp/logs/deploy-tfs-child.log
kubectl --namespace tfs-child apply -f ./tmp/manifests/pathcompservice.yaml > ./tmp/logs/deploy-tfs-child.log
kubectl --namespace tfs-child apply -f ./tmp/manifests/serviceservice.yaml > ./tmp/logs/deploy-tfs-child.log
kubectl --namespace tfs-child apply -f ./tmp/manifests/sliceservice.yaml > ./tmp/logs/deploy-tfs-child.log
kubectl --namespace tfs-child apply -f ./tmp/manifests/webuiservice.yaml > ./tmp/logs/deploy-tfs-child.log
kubectl --namespace tfs-child apply -f nfvsdn22/tfs-ingress-child.yaml > ./tmp/logs/deploy-tfs-child.log
printf "\n"
echo "Waiting tfs-parent ..."
kubectl wait --namespace tfs-parent --for='condition=available' --timeout=300s deployment/contextservice
kubectl wait --namespace tfs-parent --for='condition=available' --timeout=300s deployment/deviceservice
kubectl wait --namespace tfs-parent --for='condition=available' --timeout=300s deployment/pathcompservice
kubectl wait --namespace tfs-parent --for='condition=available' --timeout=300s deployment/serviceservice
kubectl wait --namespace tfs-parent --for='condition=available' --timeout=300s deployment/sliceservice
kubectl wait --namespace tfs-parent --for='condition=available' --timeout=300s deployment/webuiservice
printf "\n"
echo "Waiting tfs-child ..."
kubectl wait --namespace tfs-child --for='condition=available' --timeout=300s deployment/contextservice
kubectl wait --namespace tfs-child --for='condition=available' --timeout=300s deployment/deviceservice
kubectl wait --namespace tfs-child --for='condition=available' --timeout=300s deployment/pathcompservice
kubectl wait --namespace tfs-child --for='condition=available' --timeout=300s deployment/serviceservice
kubectl wait --namespace tfs-child --for='condition=available' --timeout=300s deployment/sliceservice
kubectl wait --namespace tfs-child --for='condition=available' --timeout=300s deployment/webuiservice
printf "\n"
echo "Done!"
# Copyright 2022-2023 ETSI TeraFlowSDN - TFS OSG (https://tfs.etsi.org/)
#
# Licensed 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
#
# http://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.
apiVersion: v1
kind: ConfigMap
metadata:
name: nginx-load-balancer-microk8s-conf-child
namespace: ingress
---
apiVersion: v1
kind: ConfigMap
metadata:
name: nginx-ingress-udp-microk8s-conf-child
namespace: ingress
---
apiVersion: v1
kind: ConfigMap
metadata:
name: nginx-ingress-tcp-microk8s-conf-child
namespace: ingress
---
apiVersion: networking.k8s.io/v1
kind: IngressClass
metadata:
name: tfs-ingress-class-child
annotations:
ingressclass.kubernetes.io/is-default-class: "false"
spec:
controller: tfs.etsi.org/controller-class-child
---
apiVersion: apps/v1
kind: DaemonSet
metadata:
name: nginx-ingress-microk8s-controller-child
namespace: ingress
labels:
microk8s-application: nginx-ingress-microk8s-child
spec:
selector:
matchLabels:
name: nginx-ingress-microk8s-child
updateStrategy:
rollingUpdate:
maxSurge: 0
maxUnavailable: 1
type: RollingUpdate
template:
metadata:
labels:
name: nginx-ingress-microk8s-child
spec:
terminationGracePeriodSeconds: 60
restartPolicy: Always
serviceAccountName: nginx-ingress-microk8s-serviceaccount
containers:
- image: k8s.gcr.io/ingress-nginx/controller:v1.2.0
imagePullPolicy: IfNotPresent
name: nginx-ingress-microk8s
livenessProbe:
httpGet:
path: /healthz
port: 10254
scheme: HTTP
initialDelaySeconds: 10
periodSeconds: 10
successThreshold: 1
failureThreshold: 3
timeoutSeconds: 5
readinessProbe:
httpGet:
path: /healthz
port: 10254
scheme: HTTP
periodSeconds: 10
successThreshold: 1
failureThreshold: 3
timeoutSeconds: 5
lifecycle:
preStop:
exec:
command:
- /wait-shutdown
securityContext:
capabilities:
add:
- NET_BIND_SERVICE
drop:
- ALL
runAsUser: 101 # www-data
env:
- name: POD_NAME
valueFrom:
fieldRef:
apiVersion: v1
fieldPath: metadata.name
- name: POD_NAMESPACE
valueFrom:
fieldRef:
apiVersion: v1
fieldPath: metadata.namespace
ports:
- name: http
containerPort: 80
hostPort: 8002
protocol: TCP
- name: https
containerPort: 443
hostPort: 4432
protocol: TCP
- name: health
containerPort: 10254
hostPort: 12542
protocol: TCP
args:
- /nginx-ingress-controller
- --configmap=$(POD_NAMESPACE)/nginx-load-balancer-microk8s-conf-child
- --tcp-services-configmap=$(POD_NAMESPACE)/nginx-ingress-tcp-microk8s-conf-child
- --udp-services-configmap=$(POD_NAMESPACE)/nginx-ingress-udp-microk8s-conf-child
- --election-id=ingress-controller-leader-child
- --controller-class=tfs.etsi.org/controller-class-child
- --ingress-class=tfs-ingress-class-child
- ' '
- --publish-status-address=127.0.0.1
# Copyright 2022-2023 ETSI TeraFlowSDN - TFS OSG (https://tfs.etsi.org/)
#
# Licensed 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
#
# http://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.
apiVersion: v1
kind: ConfigMap
metadata:
name: nginx-load-balancer-microk8s-conf-parent
namespace: ingress
---
apiVersion: v1
kind: ConfigMap
metadata:
name: nginx-ingress-udp-microk8s-conf-parent
namespace: ingress
---
apiVersion: v1
kind: ConfigMap
metadata:
name: nginx-ingress-tcp-microk8s-conf-parent
namespace: ingress
---
apiVersion: networking.k8s.io/v1
kind: IngressClass
metadata:
name: tfs-ingress-class-parent
annotations:
ingressclass.kubernetes.io/is-default-class: "false"
spec:
controller: tfs.etsi.org/controller-class-parent
---
apiVersion: apps/v1
kind: DaemonSet
metadata:
name: nginx-ingress-microk8s-controller-parent
namespace: ingress
labels:
microk8s-application: nginx-ingress-microk8s-parent
spec:
selector:
matchLabels:
name: nginx-ingress-microk8s-parent
updateStrategy:
rollingUpdate:
maxSurge: 0
maxUnavailable: 1
type: RollingUpdate
template:
metadata:
labels:
name: nginx-ingress-microk8s-parent
spec:
terminationGracePeriodSeconds: 60
restartPolicy: Always
serviceAccountName: nginx-ingress-microk8s-serviceaccount
containers:
- image: k8s.gcr.io/ingress-nginx/controller:v1.2.0
imagePullPolicy: IfNotPresent
name: nginx-ingress-microk8s
livenessProbe:
httpGet:
path: /healthz
port: 10254
scheme: HTTP
initialDelaySeconds: 10
periodSeconds: 10
successThreshold: 1
failureThreshold: 3
timeoutSeconds: 5
readinessProbe:
httpGet:
path: /healthz
port: 10254
scheme: HTTP
periodSeconds: 10
successThreshold: 1
failureThreshold: 3
timeoutSeconds: 5
lifecycle:
preStop:
exec:
command:
- /wait-shutdown
securityContext:
capabilities:
add:
- NET_BIND_SERVICE
drop:
- ALL
runAsUser: 101 # www-data
env:
- name: POD_NAME
valueFrom:
fieldRef:
apiVersion: v1
fieldPath: metadata.name
- name: POD_NAMESPACE
valueFrom:
fieldRef:
apiVersion: v1
fieldPath: metadata.namespace
ports:
- name: http
containerPort: 80
hostPort: 8001
protocol: TCP
- name: https
containerPort: 443
hostPort: 4431
protocol: TCP
- name: health
containerPort: 10254
hostPort: 12541
protocol: TCP
args:
- /nginx-ingress-controller
- --configmap=$(POD_NAMESPACE)/nginx-load-balancer-microk8s-conf-parent
- --tcp-services-configmap=$(POD_NAMESPACE)/nginx-ingress-tcp-microk8s-conf-parent
- --udp-services-configmap=$(POD_NAMESPACE)/nginx-ingress-udp-microk8s-conf-parent
- --election-id=ingress-controller-leader-parent
- --controller-class=tfs.etsi.org/controller-class-parent
- --ingress-class=tfs-ingress-class-parent
- ' '
- --publish-status-address=127.0.0.1
#!/bin/bash
# Copyright 2022-2023 ETSI TeraFlowSDN - TFS OSG (https://tfs.etsi.org/)
#
# Licensed 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
#
# http://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.
########################################################################################################################
# Automated steps start here
########################################################################################################################
echo "Deployment Resources:"
kubectl --namespace tfs-parent get all
printf "\n"
echo "Deployment Ingress:"
kubectl --namespace tfs-parent get ingress
printf "\n"
echo "Deployment Resources:"
kubectl --namespace tfs-child get all
printf "\n"
echo "Deployment Ingress:"
kubectl --namespace tfs-child get ingress
printf "\n"
# Copyright 2022-2023 ETSI TeraFlowSDN - TFS OSG (https://tfs.etsi.org/)
#
# Licensed 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
#
# http://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.
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: tfs-ingress-child
annotations:
nginx.ingress.kubernetes.io/rewrite-target: /$2
spec:
ingressClassName: tfs-ingress-class-child
rules:
- http:
paths:
- path: /webui(/|$)(.*)
pathType: Prefix
backend:
service:
name: webuiservice
port:
number: 8004
- path: /grafana(/|$)(.*)
pathType: Prefix
backend:
service:
name: webuiservice
port:
number: 3000
- path: /context(/|$)(.*)
pathType: Prefix
backend:
service:
name: contextservice
port:
number: 8080
- path: /()(restconf/.*)
pathType: Prefix
backend:
service:
name: computeservice
port:
number: 8080
# Copyright 2022-2023 ETSI TeraFlowSDN - TFS OSG (https://tfs.etsi.org/)
#
# Licensed 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
#
# http://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.
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: tfs-ingress-parent
annotations:
nginx.ingress.kubernetes.io/rewrite-target: /$2
spec:
ingressClassName: tfs-ingress-class-parent
rules:
- http:
paths:
- path: /webui(/|$)(.*)
pathType: Prefix
backend:
service:
name: webuiservice
port:
number: 8004
- path: /grafana(/|$)(.*)
pathType: Prefix
backend:
service:
name: webuiservice
port:
number: 3000
- path: /context(/|$)(.*)
pathType: Prefix
backend:
service:
name: contextservice
port:
number: 8080
- path: /()(restconf/.*)
pathType: Prefix
backend:
service:
name: computeservice
port:
number: 8080
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment